diff --git a/.github/workflows/migration-check.yml b/.github/workflows/migration-check.yml index fe158d61..e858e16d 100644 --- a/.github/workflows/migration-check.yml +++ b/.github/workflows/migration-check.yml @@ -42,6 +42,24 @@ jobs: - name: Install dependencies run: pip install -r requirements.txt + - name: Ensure single Alembic head + env: + FLASK_APP: app.py + FLASK_ENV: testing + DATABASE_URL: postgresql://test_user:test_password@localhost:5432/test_db + run: | + set -e + echo "🔍 Checking for a single Alembic migration head..." + HEADS=$(flask db heads 2>/dev/null | sed '/^$/d' | wc -l) + echo "Alembic heads found: $HEADS" + flask db heads || true + if [ "$HEADS" -ne 1 ]; then + echo "❌ Expected exactly one Alembic head, found $HEADS" + echo "Create a merge migration before merging this PR." + exit 1 + fi + echo "✅ Single Alembic head confirmed" + - name: Check for migration changes id: migration_check run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index da869eeb..2c02b31a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.17.0] - 2026-09-23 + +### Added + +- **Factur-X / ZUGFeRD compliance (Discussion #433)** — Structured company and client addresses (street, postcode, city, country), IBAN/BIC, default and per-invoice VAT category (S/Z/E/AE/K/G/O) with AT/DE Kleinunternehmer and reverse-charge presets (migration **196**). Invoice PDFs embed Liberation TrueType fonts for PDF/A font compliance. Single-pass Factur-X embed + PDF/A-3b (catalog `/AF`, pdfaExtension XMP, OutputIntent). CII XML fixes for EN 16931 (element order, currencyID only on TaxTotalAmount, correct VAT exemptions, Peppol endpoint as URIID, payment means, prepaid amounts). Pre-export validation blocks missing seller/buyer country or AE without buyer VAT ID. +- **Idle unanswered action (#722)** — Admin setting `idle_unanswered_action` (`review` default, or `auto_stop`) controls what happens when the "Still working?" grace window expires unanswered. Auto-stop credits last activity plus the idle timeout across the server sweep, web, browser extension, desktop, and mobile clients. +- **Phase 4 (gap roadmap)** — GDPR user erasure (`UserGdprService`, `POST /api/v1/users/me/erase`, admin `POST /admin/users//erase`, `POST /api/erase-account`); API v1 list/get for weekly goals, recurring tasks, and project templates; estimates vs actuals report (HTML + JSON); two-step timesheet period approval when multi-level policy is enabled; experimental XRechnung XML helper; Mollie payment provider skeleton; admin module quick presets (Solo focus); custom field definitions `entity_type` for client/project/task/time entry (migration **197**). +- **Phase 5 enterprise foundations** — Design docs under `docs/design/` (OAuth 2.0 API apps, SAML/SCIM, multi-tenant, Zapier/Make webhooks, Teams bot parity). Scaffolding: OAuth application models (migration **198**), optional SCIM `GET /scim/v2/Users` stub (`SCIM_ENABLED`), `POST /api/v1/ai/summarize-entries`, Teams bot command stub. + +### Changed + +- **Security / hygiene** — Legacy integration webhook CSRF-exempt; default `RATELIMIT_DEFAULT`; rate limits on version check/dismiss; hot-path silent `except`/`pass` replaced with logged handling; Ruff S110 enabled; admin API tokens/backups and API v1 audit-logs extracted from god files. +- **UI consistency** — Bootstrap leftover class cleanup; shared `ttConfirm`/`ttAlert` dialogs; empty states on major list pages; expanded command palette; client versions aligned to **5.17.0**. +- **Dead code** — Removed unregistered `timer_refactored.py`, `invoices_refactored.py`, `projects_refactored_example.py`, `offers.py`. + +### Documentation + +- **Factur-X / ZUGFeRD** — [PEPPOL_EINVOICING.md](docs/admin/configuration/PEPPOL_EINVOICING.md) updated for structured addresses, VAT categories, embedded fonts, single-pass PDF/A-3, and migration **196**. +- **Gap roadmap** — `docs/GAP_ROADMAP.md` tracks Phases 0–5 remediation status. +- **Version** — Bumped `setup.py` to **5.17.0** (single source of truth for the application version). + ## [5.16.0] - 2026-09-18 ### Added diff --git a/README.md b/README.md index 58c9022d..4ee9a02c 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,10 @@ TimeTracker has been continuously enhanced with powerful new features! Here's wh **Current version** is defined in `setup.py` (single source of truth). See [CHANGELOG.md](CHANGELOG.md) for versioned release history. +### ✨ Highlights of v5.17.0 + +**Minor (5.17.0):** **Factur-X / ZUGFeRD (#433)** — structured addresses, VAT categories, PDF/A-3 embed, and EN 16931 CII fixes. **Idle unanswered action (#722)** — admin choice of review vs auto-stop when Still working? expires. **Phase 4 gap roadmap** — GDPR erasure, weekly goals / recurring tasks / project templates API, estimates vs actuals report, multi-level timesheet approval, XRechnung helper, Mollie skeleton. **Phase 5 foundations** — OAuth app models, SCIM Users stub, AI summarize-entries, Teams bot stub, and design docs. **UI / hygiene** — shared confirm dialogs, empty states, command palette expansion, security rate limits, and dead-code cleanup. See [CHANGELOG.md](CHANGELOG.md#5170---2026-09-23). + ### ✨ Highlights of v5.16.0 **Minor (5.16.0):** **Client–team messaging** — bidirectional in-portal messaging between team and client contacts with thread UI on both sides. **Gmail & Outlook sync** — email threads pulled from Gmail API and Microsoft Graph and linked to CRM clients, leads, and deals. **Payroll sync (Gusto & ADP)** — time entries aggregated into payroll batches and pushed to Gusto and ADP Workforce Now. **DATEV export** — EXTF Buchungsstapel CSV generator for direct DATEV import. **Sage integration** — invoices, contacts, and payments synced with Sage Business Cloud. **Integration wizards** — guided setup wizards for ADP, DATEV, Gmail, Gusto, Outlook Email, and Sage. **Visual workflow builder** — drag-and-drop canvas for building automation workflows. **Portal custom domains** — white-label client portal host resolution. **Client Portal API** — new authenticated REST blueprint for portal sessions and data access. See [CHANGELOG.md](CHANGELOG.md#5160---2026-09-18). diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..ad95545a --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +5.17.0 diff --git a/app/__init__.py b/app/__init__.py index e141abf9..54cd3cf8 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -84,7 +84,7 @@ def log_event(name: str, **kwargs): if is_otel_tracing_active(): extra.update(get_trace_context_for_logs()) except Exception: - pass + logging.getLogger(__name__).debug("Could not attach trace context to log_event", exc_info=True) json_logger.info(name, extra=extra) except Exception as e: logging.getLogger(__name__).debug("Structured log_event failed: %s", e) @@ -113,7 +113,7 @@ def track_event(user_id, event_name, properties=None): send_analytics_event(user_id, event_name, properties) except Exception: - pass + logging.getLogger(__name__).debug("Telemetry track_event failed", exc_info=True) def track_page_view(page_name, user_id=None, properties=None): @@ -212,7 +212,7 @@ def create_app(config=None): try: os.environ.pop(var, None) except Exception: - pass + logger.debug("Could not unset env var during test setup", exc_info=True) db_uri = str(app.config.get("SQLALCHEMY_DATABASE_URI", "") or "") if ( app.config.get("TESTING") @@ -234,7 +234,7 @@ def create_app(config=None): app.config["SQLALCHEMY_SESSION_OPTIONS"] = session_opts except Exception: # Do not fail app creation for engine option tweaks - pass + logger.debug("Test SQLite engine/session option tweaks failed", exc_info=True) # All templates live in app/templates (legacy root templates/ was merged in) @@ -285,7 +285,7 @@ def create_app(config=None): # Ensure all model tables are registered in SQLAlchemy metadata from . import models as _models # noqa: F401 except Exception: - pass + logger.debug("Could not import models during migrate bootstrap", exc_info=True) return app # Initialize audit logging - register event listeners AFTER db.init_app() @@ -336,7 +336,7 @@ def _listen_once(target, identifier, fn): _listen_once(SignallingSession, "after_flush", audit.receive_after_flush) logger.info("Registered audit logging with Flask-SQLAlchemy SignallingSession") except (ImportError, AttributeError): - pass + logger.debug("SignallingSession audit registration skipped", exc_info=True) logger.info("Audit logging event listeners registered") @@ -384,7 +384,7 @@ def _listen_once(target, identifier, fn): send_base_first_seen() except Exception: - pass + logger.debug("send_base_first_seen failed", exc_info=True) # Only initialize CSRF protection if enabled if app.config.get("WTF_CSRF_ENABLED"): @@ -424,7 +424,7 @@ def _listen_once(target, identifier, fn): for d in abs_dirs: ensure_translations_compiled(d) except Exception: - pass + logger.debug("Babel translation directory setup failed", exc_info=True) # Internationalization: locale selector compatible with Flask-Babel v4+ def _select_locale(): @@ -482,7 +482,7 @@ def _normalize_locale(locale_code): app.jinja_env.globals.update(_=_gettext, ngettext=_ngettext) except Exception: - pass + logger.debug("Could not register gettext in Jinja globals", exc_info=True) # Add Python built-ins that are useful in templates app.jinja_env.globals.update(getattr=getattr) @@ -541,7 +541,7 @@ def _resolve_portal_custom_domain(): return redirect(url_for("client_portal.login")) except Exception: - pass + app.logger.debug("Portal custom domain root redirect failed", exc_info=True) # Remember the public base URL from real requests so background jobs can build # absolute links without SERVER_NAME (see app.utils.urls). @@ -552,7 +552,7 @@ def _remember_app_base_url(): remember_request_base_url() except Exception: - pass + app.logger.debug("remember_request_base_url failed", exc_info=True) # Registered as a Jinja *global*, not a context processor: macro files such as # components/multi_select.html contain inline + {# Source fallbacks when dist bundles are not rebuilt yet (confirm/unsaved live in core-a1 after build). #} + + {% if current_user.is_authenticated and support_ui_json %} {% endif %} @@ -297,6 +301,18 @@

{{ _('AI H socket.on('timer_needs_review', function(data){ try { window.__ttShowNeedsReview && window.__ttShowNeedsReview(); } catch (e) {} }); + // Server auto-stopped due to unanswered idle prompt (auto_stop mode). + socket.on('timer_stopped', function(data){ + try { + if (data && data.reason === 'idle_auto_stop') { + if (window.__ttOnIdleAutoStop) window.__ttOnIdleAutoStop(); + var msg = (data && data.message) || (window.i18n && window.i18n.messages && window.i18n.messages.timerStoppedInactivity) || 'Timer stopped due to inactivity'; + if (window.toastManager && window.toastManager.warning) { + window.toastManager.warning(msg, '', 5000); + } + } + } catch (e) {} + }); } catch (e) { console.error('Mention socket init failed', e); } @@ -998,65 +1014,7 @@

{{ _('AI H diff --git a/app/templates/partials/_sidebar.html b/app/templates/partials/_sidebar.html index 3c0795f5..68420f97 100644 --- a/app/templates/partials/_sidebar.html +++ b/app/templates/partials/_sidebar.html @@ -24,6 +24,7 @@

{{ _('Navigation') }} @@ -87,10 +87,10 @@

- -
diff --git a/app/templates/projects/view.html b/app/templates/projects/view.html index 91a3c5eb..7374fc0a 100644 --- a/app/templates/projects/view.html +++ b/app/templates/projects/view.html @@ -432,7 +432,7 @@

{% if current_user.is_admin or has_permission('edit_projects') %} - diff --git a/app/templates/quotes/_quotes_list.html b/app/templates/quotes/_quotes_list.html index 5dde70c7..50cd31ba 100644 --- a/app/templates/quotes/_quotes_list.html +++ b/app/templates/quotes/_quotes_list.html @@ -22,6 +22,7 @@

+
@@ -80,6 +81,7 @@

{% endfor %}

+
{% else %} {% from "components/ui.html" import empty_state %} {% set actions %} diff --git a/app/templates/quotes/create.html b/app/templates/quotes/create.html index fc42f82c..bed619a7 100644 --- a/app/templates/quotes/create.html +++ b/app/templates/quotes/create.html @@ -166,7 +166,7 @@

{{ _('Valid Until') }} - +

diff --git a/app/templates/quotes/edit.html b/app/templates/quotes/edit.html index a065b871..1503d412 100644 --- a/app/templates/quotes/edit.html +++ b/app/templates/quotes/edit.html @@ -19,7 +19,7 @@ ) }}
-
+ @@ -265,7 +265,7 @@

- +

diff --git a/app/templates/recurring_invoices/list.html b/app/templates/recurring_invoices/list.html index 26c56389..cdf1e979 100644 --- a/app/templates/recurring_invoices/list.html +++ b/app/templates/recurring_invoices/list.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% from "components/ui.html" import page_header, button %} +{% from "components/ui.html" import page_header, button, empty_state %} {% block content %} {% set breadcrumbs = [ @@ -16,6 +16,7 @@ ) }}
+ {% if recurring_invoices %}
@@ -66,14 +67,18 @@ - {% else %} - - - {% endfor %}
No recurring invoices found. Create one to get started.
+ {% else %} + {% set actions %} +
+ {{ _('Create Recurring Invoice') }} + + {% endset %} + {{ empty_state('fas fa-sync-alt', 'No Recurring Invoices Yet', 'Automate invoice generation for subscription or repeat billing. Create your first recurring invoice template to get started!', actions, type='no-data') }} + {% endif %}
@@ -882,7 +882,7 @@

{{ _("Today's Stats") }}

}; const data = await api('/api/focus-sessions/start', 'POST', body); applySession(data.session); - } catch (e) { alert(e.message); } + } catch (e) { ttAlert(e.message); } }); els.cycle.addEventListener('click', async () => { @@ -897,7 +897,7 @@

{{ _("Today's Stats") }}

els.cycle.disabled = true; startTick(breakLength); render(); - } catch (e) { alert(e.message); } + } catch (e) { ttAlert(e.message); } }); els.interrupt.addEventListener('click', async () => { @@ -906,7 +906,7 @@

{{ _("Today's Stats") }}

const data = await api('/api/focus-sessions/' + session.id + '/interrupt', 'POST', {}); session = data.session; render(); - } catch (e) { alert(e.message); } + } catch (e) { ttAlert(e.message); } }); els.finish.addEventListener('click', async () => { @@ -914,7 +914,7 @@

{{ _("Today's Stats") }}

try { await api('/api/focus-sessions/finish', 'POST', { session_id: session.id }); applySession(null); - } catch (e) { alert(e.message); } + } catch (e) { ttAlert(e.message); } }); api('/api/focus-sessions/active').then(data => { diff --git a/app/templates/user/settings.html b/app/templates/user/settings.html index f52ae375..9f904b16 100644 --- a/app/templates/user/settings.html +++ b/app/templates/user/settings.html @@ -18,7 +18,7 @@

+

{{ _('TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features.') }}

@@ -44,7 +44,7 @@

{{ _('Profile Information') }}

- +
@@ -97,7 +97,7 @@

{{ _('Notification Preferences') }}

- +
@@ -269,7 +269,7 @@

{{ _('Display Preferences') }}

- +
@@ -307,7 +307,7 @@

{{ _('Focus / Pomodoro Defaults') }}

- +

@@ -352,7 +352,7 @@

{{ _('Time Rounding Preferences') }}

- +

@@ -445,7 +445,7 @@

{{ _('Overtime Settings') }}

- +

@@ -579,7 +579,7 @@

{{ _('Wo

{{ _('Regional Settings') }}

- +
diff --git a/app/templates/workforce/dashboard.html b/app/templates/workforce/dashboard.html index 348490d3..f7300968 100644 --- a/app/templates/workforce/dashboard.html +++ b/app/templates/workforce/dashboard.html @@ -19,7 +19,7 @@

{{ _('Workfor
- {% for u in users %} {% endfor %} @@ -82,7 +82,7 @@

{{ _('Payroll connectors') }}

- @@ -222,7 +222,7 @@

{{ _('Leave Balances') }}

{{ _('Time-Off Requests') }}

- {% for lt in leave_types %} {% if lt.enabled %} diff --git a/app/utils/api_auth_2fa.py b/app/utils/api_auth_2fa.py new file mode 100644 index 00000000..a4313bc4 --- /dev/null +++ b/app/utils/api_auth_2fa.py @@ -0,0 +1,32 @@ +"""Short-lived tokens for API password login when TOTP 2FA is required.""" + +from __future__ import annotations + +from itsdangerous import BadSignature, SignatureExpired, URLSafeTimedSerializer + +from app.config import Config + +API_2FA_TEMP_TOKEN_MAX_AGE_SECONDS = 300 +_API_2FA_SALT = "timetracker:api-2fa:v1" + + +def _serializer() -> URLSafeTimedSerializer: + return URLSafeTimedSerializer(Config.SECRET_KEY, salt=_API_2FA_SALT) + + +def make_api_2fa_temp_token(user_id: int) -> str: + return _serializer().dumps({"uid": int(user_id), "purpose": "api_2fa"}) + + +def load_api_2fa_user_id(temp_token: str, *, max_age_seconds: int | None = None) -> int | None: + max_age = max_age_seconds if max_age_seconds is not None else API_2FA_TEMP_TOKEN_MAX_AGE_SECONDS + try: + data = _serializer().loads(temp_token, max_age=max_age) + except (SignatureExpired, BadSignature): + return None + if (data.get("purpose") or "") != "api_2fa": + return None + try: + return int(data.get("uid")) + except (TypeError, ValueError): + return None diff --git a/app/utils/cii_invoice.py b/app/utils/cii_invoice.py index 63395cff..221d3ed7 100644 --- a/app/utils/cii_invoice.py +++ b/app/utils/cii_invoice.py @@ -25,12 +25,34 @@ FACTURX_GUIDELINE_EN16931 = "urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:en16931" +# VAT categories that require exemption reason (header ApplicableTradeTax only) +_EXEMPTION_CATEGORIES = frozenset({"E", "AE", "K", "G", "O"}) +# Valid EN 16931 VAT category codes +VAT_CATEGORIES = frozenset({"S", "Z", "E", "AE", "K", "G", "O", "L", "M"}) + +# Common exemption presets (code, reason) +VAT_EXEMPTION_PRESETS = { + "at_kleinunternehmer": ( + "VATEX-EU-O", + "Kleinunternehmerregelung §6 Abs. 1 Z 27 UStG", + ), + "de_kleinunternehmer": ( + "VATEX-EU-O", + "Steuerfreie Kleinunternehmerleistung gemäß §19 UStG", + ), + "reverse_charge": ( + "VATEX-EU-AE", + "Reverse charge", + ), +} + @dataclass(frozen=True) class CIIParty: name: str tax_id: Optional[str] = None address_line: Optional[str] = None + street: Optional[str] = None city: Optional[str] = None postcode: Optional[str] = None country_code: Optional[str] = None @@ -38,6 +60,8 @@ class CIIParty: phone: Optional[str] = None endpoint_id: Optional[str] = None endpoint_scheme_id: Optional[str] = None + iban: Optional[str] = None + bic: Optional[str] = None def _money(v: Any) -> str: @@ -48,6 +72,19 @@ def _money(v: Any) -> str: return f"{d.quantize(Decimal('0.01'))}" +def _money4(v: Any) -> str: + """Unit price with up to 4 decimal places (strip trailing zeros beyond 2).""" + try: + d = v if isinstance(v, Decimal) else Decimal(str(v)) + except Exception: + d = Decimal("0") + q = d.quantize(Decimal("0.0001")) + # Prefer 2 decimals when exact, else keep up to 4 + if q == q.quantize(Decimal("0.01")): + return f"{q.quantize(Decimal('0.01'))}" + return f"{q}".rstrip("0").rstrip(".") if "." in f"{q}" else f"{q}" + + def _qty(v: Any) -> str: try: d = v if isinstance(v, Decimal) else Decimal(str(v)) @@ -78,10 +115,18 @@ def _text_el(parent: ET.Element, tag: str, text: Optional[str]) -> Optional[ET.E return el -def _money_el(parent: ET.Element, tag: str, value: Any, currency: str) -> Optional[ET.Element]: - """Monetary element with currencyID (EN 16931 / Factur-X expectation).""" - el = _text_el(parent, tag, _money(value)) - if el is not None: +def _money_el( + parent: ET.Element, + tag: str, + value: Any, + currency: Optional[str] = None, + *, + decimals: int = 2, +) -> Optional[ET.Element]: + """Monetary element; currencyID only when currency is provided (TaxTotalAmount).""" + text = _money4(value) if decimals == 4 else _money(value) + el = _text_el(parent, tag, text) + if el is not None and currency: el.set("currencyID", currency) return el @@ -94,29 +139,102 @@ def _date_el(parent: ET.Element, d: Any) -> None: dts.text = _date_102(d) -def _build_party(parent: ET.Element, tag: str, party: CIIParty) -> None: +def resolve_vat_category( + invoice: Any, + settings: Any = None, +) -> Tuple[str, Decimal, Optional[str], Optional[str]]: + """ + Resolve VAT category, rate, exemption reason and code. + + Priority: invoice override → settings default → infer from tax_rate + (S if rate > 0, else E with settings exemption or a generic reason). + """ + tax_rate = Decimal(str(getattr(invoice, "tax_rate", 0) or 0)) + + inv_cat = (getattr(invoice, "vat_category", None) or "").strip().upper() or None + inv_reason = (getattr(invoice, "vat_exemption_reason", None) or "").strip() or None + inv_code = (getattr(invoice, "vat_exemption_code", None) or "").strip() or None + + def_cat = None + def_reason = None + def_code = None + if settings is not None: + def_cat = (getattr(settings, "invoices_default_vat_category", None) or "").strip().upper() or None + def_reason = (getattr(settings, "invoices_default_vat_exemption_reason", None) or "").strip() or None + def_code = (getattr(settings, "invoices_default_vat_exemption_code", None) or "").strip() or None + + category = inv_cat or def_cat + if not category: + category = "S" if tax_rate > 0 else "E" + if category not in VAT_CATEGORIES: + category = "S" if tax_rate > 0 else "E" + + reason = inv_reason or def_reason + code = inv_code or def_code + + if category in _EXEMPTION_CATEGORIES: + if not reason: + if category == "AE": + reason = "Reverse charge" + code = code or "VATEX-EU-AE" + elif category == "K": + reason = "Intra-Community supply" + code = code or "VATEX-EU-IC" + elif category == "G": + reason = "Export outside the EU" + code = code or "VATEX-EU-G" + elif category == "O": + reason = "Not subject to VAT" + code = code or "VATEX-EU-O" + else: # E + reason = "VAT exempt" + code = code or "VATEX-EU-O" + # Zero rate for exemption categories + tax_rate = Decimal("0") + elif category == "Z": + # Zero-rated goods — no exemption reason (BR-Z-10) + reason = None + code = None + tax_rate = Decimal("0") + else: + # S, L, M — no exemption + reason = None + code = None + + return category, tax_rate, reason, code + + +def _build_party(parent: ET.Element, tag: str, party: CIIParty, *, is_seller: bool = False) -> None: ram = f"{{{NS_RAM}}}" p = _sub(parent, ram + tag) _text_el(p, ram + "Name", party.name) - if party.endpoint_id and party.endpoint_scheme_id: - org = _sub(p, ram + "SpecifiedLegalOrganization") - org_id = _text_el(org, ram + "ID", party.endpoint_id) - if org_id is not None: - org_id.set("schemeID", party.endpoint_scheme_id) - - if party.address_line or party.country_code: + # XSD order: Name, DefinedTradeContact*, PostalTradeAddress?, + # URIUniversalCommunication*, SpecifiedTaxRegistration* + if is_seller and (party.email or party.phone): + contact = _sub(p, ram + "DefinedTradeContact") + if party.phone: + phone_comm = _sub(contact, ram + "TelephoneUniversalCommunication") + _text_el(phone_comm, ram + "CompleteNumber", party.phone) + if party.email: + email_comm = _sub(contact, ram + "EmailURIUniversalCommunication") + _text_el(email_comm, ram + "URIID", party.email) + + # PostalTradeAddress order: PostcodeCode, LineOne, CityName, CountryID + line_one = party.street or party.address_line + if line_one or party.city or party.postcode or party.country_code: addr = _sub(p, ram + "PostalTradeAddress") - _text_el(addr, ram + "LineOne", party.address_line) - _text_el(addr, ram + "CityName", party.city) _text_el(addr, ram + "PostcodeCode", party.postcode) + _text_el(addr, ram + "LineOne", line_one) + _text_el(addr, ram + "CityName", party.city) _text_el(addr, ram + "CountryID", party.country_code) - if party.email: + # Electronic address / Peppol endpoint (BT-34 / BT-49) + if party.endpoint_id and party.endpoint_scheme_id: uri_comm = _sub(p, ram + "URIUniversalCommunication") - uri_id = _text_el(uri_comm, ram + "URIID", party.email) + uri_id = _text_el(uri_comm, ram + "URIID", party.endpoint_id) if uri_id is not None: - uri_id.set("schemeID", "EM") + uri_id.set("schemeID", party.endpoint_scheme_id) if party.tax_id: tax_reg = _sub(p, ram + "SpecifiedTaxRegistration") @@ -125,11 +243,30 @@ def _build_party(parent: ET.Element, tag: str, party: CIIParty) -> None: tax_reg_id.set("schemeID", "VA") +def _unit_code_for_line(item: Any, description: str) -> str: + """Return UNECE unit code; HUR for time-based lines, else C62 (one).""" + explicit = getattr(item, "unit_code", None) or getattr(item, "unit", None) + if explicit: + u = str(explicit).strip().upper() + if u in ("HUR", "H", "HR", "HOUR", "HOURS"): + return "HUR" + if len(u) == 3: + return u + desc = (description or "").lower() + if any(k in desc for k in ("hour", "stunden", "uur", "heure")): + return "HUR" + # InvoiceItem from time entries often has time_entry_id + if getattr(item, "time_entry_id", None): + return "HUR" + return "C62" + + def build_cii_invoice_xml( invoice: Any, seller: CIIParty, buyer: CIIParty, guideline_id: str = FACTURX_GUIDELINE_EN16931, + settings: Any = None, ) -> Tuple[str, str]: """ Build a CII CrossIndustryInvoice XML for Factur-X / ZUGFeRD. @@ -174,63 +311,20 @@ def build_cii_invoice_xml( txn = _sub(root, rsm + "SupplyChainTradeTransaction") currency = getattr(invoice, "currency_code", None) or "EUR" - tax_rate = Decimal(str(getattr(invoice, "tax_rate", 0) or 0)) - tax_category = "S" if tax_rate > 0 else "Z" - - # --- Header Trade Agreement --- - agreement = _sub(txn, ram + "ApplicableHeaderTradeAgreement") - - buyer_ref = ( - (getattr(invoice, "buyer_reference", None) or "").strip() - or (getattr(getattr(invoice, "project", None), "name", None) or "").strip() - or (getattr(invoice, "invoice_number", None) or "").strip() - or str(getattr(invoice, "id", "")) - ) - if buyer_ref: - _text_el(agreement, ram + "BuyerReference", buyer_ref) - - _build_party(agreement, "SellerTradeParty", seller) - _build_party(agreement, "BuyerTradeParty", buyer) - - # --- Header Trade Delivery --- - _sub(txn, ram + "ApplicableHeaderTradeDelivery") - - # --- Header Trade Settlement --- - settlement = _sub(txn, ram + "ApplicableHeaderTradeSettlement") - _text_el(settlement, ram + "InvoiceCurrencyCode", currency) - - # Tax summary - tax_el = _sub(settlement, ram + "ApplicableTradeTax") - _money_el(tax_el, ram + "CalculatedAmount", getattr(invoice, "tax_amount", 0), currency) - _text_el(tax_el, ram + "TypeCode", "VAT") - _money_el(tax_el, ram + "BasisAmount", getattr(invoice, "subtotal", 0), currency) - _text_el(tax_el, ram + "CategoryCode", tax_category) - _text_el(tax_el, ram + "RateApplicablePercent", _money(tax_rate)) - if tax_category == "Z": - _text_el(tax_el, ram + "ExemptionReason", "Not subject to VAT") - _text_el(tax_el, ram + "ExemptionReasonCode", "VATEX-EU-O") + tax_category, tax_rate, exemption_reason, exemption_code = resolve_vat_category(invoice, settings) - # Payment terms (due date) - due_date = getattr(invoice, "due_date", None) - if due_date: - terms = _sub(settlement, ram + "SpecifiedTradePaymentTerms") - due_dt = _sub(terms, ram + "DueDateDateTime") - _date_el(due_dt, due_date) + # --- Line Items (must appear BEFORE header agreement in CII XSD order) --- + # Actually in CrossIndustryInvoice the order within SupplyChainTradeTransaction is: + # IncludedSupplyChainTradeLineItem*, ApplicableHeaderTradeAgreement, + # ApplicableHeaderTradeDelivery, ApplicableHeaderTradeSettlement + # So lines come FIRST. - # Monetary summation - totals = _sub(settlement, ram + "SpecifiedTradeSettlementHeaderMonetarySummation") - _money_el(totals, ram + "LineTotalAmount", getattr(invoice, "subtotal", 0), currency) - _money_el(totals, ram + "TaxBasisTotalAmount", getattr(invoice, "subtotal", 0), currency) - _money_el(totals, ram + "TaxTotalAmount", getattr(invoice, "tax_amount", 0), currency) - _money_el(totals, ram + "GrandTotalAmount", getattr(invoice, "total_amount", 0), currency) - _money_el(totals, ram + "DuePayableAmount", getattr(invoice, "total_amount", 0), currency) - - # --- Line Items --- line_id = 1 + line_items_holder: list = [] # collect then insert — we'll build lines into a temp list of elements - def _add_line(description: str, quantity: Any, unit_price: Any, line_total: Any) -> None: + def _add_line(description: str, quantity: Any, unit_price: Any, line_total: Any, item: Any = None) -> None: nonlocal line_id - li = _sub(txn, ram + "IncludedSupplyChainTradeLineItem") + li = ET.Element(ram + "IncludedSupplyChainTradeLineItem") line_doc = _sub(li, ram + "AssociatedDocumentLineDocument") _text_el(line_doc, ram + "LineID", str(line_id)) @@ -240,25 +334,24 @@ def _add_line(description: str, quantity: Any, unit_price: Any, line_total: Any) line_agreement = _sub(li, ram + "SpecifiedLineTradeAgreement") net_price = _sub(line_agreement, ram + "NetPriceProductTradePrice") - _money_el(net_price, ram + "ChargeAmount", unit_price, currency) + _money_el(net_price, ram + "ChargeAmount", unit_price, decimals=4) line_delivery = _sub(li, ram + "SpecifiedLineTradeDelivery") qty_el = _text_el(line_delivery, ram + "BilledQuantity", _qty(quantity)) if qty_el is not None: - qty_el.set("unitCode", "C62") + qty_el.set("unitCode", _unit_code_for_line(item, description) if item is not None else "C62") line_settle = _sub(li, ram + "SpecifiedLineTradeSettlement") line_tax = _sub(line_settle, ram + "ApplicableTradeTax") _text_el(line_tax, ram + "TypeCode", "VAT") _text_el(line_tax, ram + "CategoryCode", tax_category) _text_el(line_tax, ram + "RateApplicablePercent", _money(tax_rate)) - if tax_category == "Z": - _text_el(line_tax, ram + "ExemptionReason", "Not subject to VAT") - _text_el(line_tax, ram + "ExemptionReasonCode", "VATEX-EU-O") + # Line-level tax must NOT carry exemption reasons line_totals = _sub(line_settle, ram + "SpecifiedTradeSettlementLineMonetarySummation") - _money_el(line_totals, ram + "LineTotalAmount", line_total, currency) + _money_el(line_totals, ram + "LineTotalAmount", line_total) + line_items_holder.append(li) line_id += 1 # Invoice items @@ -269,6 +362,7 @@ def _add_line(description: str, quantity: Any, unit_price: Any, line_total: Any) quantity=getattr(it, "quantity", 1), unit_price=getattr(it, "unit_price", 0), line_total=getattr(it, "total_amount", 0), + item=it, ) except Exception: pass @@ -286,6 +380,7 @@ def _add_line(description: str, quantity: Any, unit_price: Any, line_total: Any) quantity=1, unit_price=getattr(ex, "total_amount", 0), line_total=getattr(ex, "total_amount", 0), + item=ex, ) except Exception: pass @@ -300,11 +395,11 @@ def _add_line(description: str, quantity: Any, unit_price: Any, line_total: Any) quantity=getattr(g, "quantity", 1), unit_price=getattr(g, "unit_price", 0), line_total=getattr(g, "total_amount", 0), + item=g, ) except Exception: pass - # If no lines were added, add a single placeholder line (CII requires at least one) if line_id == 1: _add_line( description="Invoice", @@ -313,6 +408,81 @@ def _add_line(description: str, quantity: Any, unit_price: Any, line_total: Any) line_total=getattr(invoice, "total_amount", 0), ) + for li in line_items_holder: + txn.append(li) + + # --- Header Trade Agreement --- + agreement = _sub(txn, ram + "ApplicableHeaderTradeAgreement") + + buyer_ref = ( + (getattr(invoice, "buyer_reference", None) or "").strip() + or (getattr(getattr(invoice, "project", None), "name", None) or "").strip() + or (getattr(invoice, "invoice_number", None) or "").strip() + or str(getattr(invoice, "id", "")) + ) + if buyer_ref: + _text_el(agreement, ram + "BuyerReference", buyer_ref) + + _build_party(agreement, "SellerTradeParty", seller, is_seller=True) + _build_party(agreement, "BuyerTradeParty", buyer, is_seller=False) + + # --- Header Trade Delivery --- + _sub(txn, ram + "ApplicableHeaderTradeDelivery") + + # --- Header Trade Settlement --- + settlement = _sub(txn, ram + "ApplicableHeaderTradeSettlement") + _text_el(settlement, ram + "InvoiceCurrencyCode", currency) + + # Payment means (BG-16) when IBAN configured + iban = seller.iban + bic = seller.bic + if iban: + pm = _sub(settlement, ram + "SpecifiedTradeSettlementPaymentMeans") + _text_el(pm, ram + "TypeCode", "58") # SEPA credit transfer + _text_el(pm, ram + "Information", getattr(invoice, "invoice_number", None) or "") + account = _sub(pm, ram + "PayeePartyCreditorFinancialAccount") + _text_el(account, ram + "IBANID", iban.replace(" ", "")) + if bic: + inst = _sub(pm, ram + "PayeeSpecifiedCreditorFinancialInstitution") + _text_el(inst, ram + "BICID", bic.replace(" ", "")) + + # Tax summary — element order: + # CalculatedAmount, TypeCode, ExemptionReason, BasisAmount, CategoryCode, + # ExemptionReasonCode, RateApplicablePercent + tax_el = _sub(settlement, ram + "ApplicableTradeTax") + _money_el(tax_el, ram + "CalculatedAmount", getattr(invoice, "tax_amount", 0)) + _text_el(tax_el, ram + "TypeCode", "VAT") + if exemption_reason: + _text_el(tax_el, ram + "ExemptionReason", exemption_reason) + _money_el(tax_el, ram + "BasisAmount", getattr(invoice, "subtotal", 0)) + _text_el(tax_el, ram + "CategoryCode", tax_category) + if exemption_code: + _text_el(tax_el, ram + "ExemptionReasonCode", exemption_code) + _text_el(tax_el, ram + "RateApplicablePercent", _money(tax_rate)) + + # Payment terms (due date) + due_date = getattr(invoice, "due_date", None) + if due_date: + terms = _sub(settlement, ram + "SpecifiedTradePaymentTerms") + due_dt = _sub(terms, ram + "DueDateDateTime") + _date_el(due_dt, due_date) + + # Monetary summation — currencyID only on TaxTotalAmount + prepaid = Decimal(str(getattr(invoice, "amount_paid", 0) or 0)) + total = Decimal(str(getattr(invoice, "total_amount", 0) or 0)) + due_payable = total - prepaid + if due_payable < 0: + due_payable = Decimal("0") + + totals = _sub(settlement, ram + "SpecifiedTradeSettlementHeaderMonetarySummation") + _money_el(totals, ram + "LineTotalAmount", getattr(invoice, "subtotal", 0)) + _money_el(totals, ram + "TaxBasisTotalAmount", getattr(invoice, "subtotal", 0)) + _money_el(totals, ram + "TaxTotalAmount", getattr(invoice, "tax_amount", 0), currency) + _money_el(totals, ram + "GrandTotalAmount", getattr(invoice, "total_amount", 0)) + if prepaid > 0: + _money_el(totals, ram + "TotalPrepaidAmount", prepaid) + _money_el(totals, ram + "DuePayableAmount", due_payable) + xml_bytes = ET.tostring(root, encoding="utf-8", xml_declaration=True) sha256_hex = hashlib.sha256(xml_bytes).hexdigest() return xml_bytes.decode("utf-8"), sha256_hex diff --git a/app/utils/invoice_pdf_postprocess.py b/app/utils/invoice_pdf_postprocess.py index 64a72f7e..39a48020 100644 --- a/app/utils/invoice_pdf_postprocess.py +++ b/app/utils/invoice_pdf_postprocess.py @@ -2,6 +2,7 @@ Shared Factur-X (ZUGFeRD) embed + PDF/A-3 post-processing for invoice PDFs. Used by HTTP PDF export and email attachment generation so behavior matches. +Embed and optional PDF/A-3 normalization run in a single pikepdf session. """ from __future__ import annotations @@ -17,27 +18,28 @@ def postprocess_invoice_pdf_bytes( """ Apply Factur-X CII embedding and optional PDF/A-3 normalization per settings. - Order: embed Factur-X XML first, then PDF/A-3 (metadata, ICC, optional Ghostscript). + Order: single-pass embed (+ PDF/A-3 when enabled). Returns: (pdf_bytes, embed_error, pdfa_error) - If Factur-X is disabled: returns (pdf_bytes, None, None). - On embed failure: returns (original pdf_bytes, error_message, None). - On PDF/A failure after successful embed: returns (pdf after embed, None, error_message). + (With the combined path, PDF/A errors surface as embed errors when pdfa3=True.) """ if not getattr(settings, "invoices_zugferd_pdf", False): return pdf_bytes, None, None from app.utils.zugferd import embed_zugferd_xml_in_pdf - out_pdf, embed_err = embed_zugferd_xml_in_pdf(pdf_bytes, invoice, settings) + want_pdfa3 = bool(getattr(settings, "invoices_pdfa3_compliant", False)) + out_pdf, embed_err = embed_zugferd_xml_in_pdf( + pdf_bytes, invoice, settings, pdfa3=want_pdfa3 + ) if embed_err: + # When pdfa3 was requested, distinguish OutputIntent-style failures if message says so + if want_pdfa3 and "PDF/A" in (embed_err or ""): + return out_pdf, None, embed_err return out_pdf, embed_err, None - if not getattr(settings, "invoices_pdfa3_compliant", False): - return out_pdf, None, None - - from app.utils.pdfa3 import convert_to_pdfa3 - - out_pdf, pdfa_err = convert_to_pdfa3(out_pdf) - return out_pdf, None, pdfa_err + return out_pdf, None, None diff --git a/app/utils/invoice_validators.py b/app/utils/invoice_validators.py index d9f5e95d..cea060a9 100644 --- a/app/utils/invoice_validators.py +++ b/app/utils/invoice_validators.py @@ -13,7 +13,7 @@ import subprocess import tempfile import xml.etree.ElementTree as ET -from typing import List, Optional, Tuple +from typing import Any, List, Optional, Tuple # ---- UBL Validation ---- @@ -259,22 +259,40 @@ def _find_text(path: str) -> Optional[str]: gta = summation.find("ram:GrandTotalAmount", ns) if gta is None: issues.append("Missing GrandTotalAmount") - elif not (gta.get("currencyID") or "").strip(): - issues.append("GrandTotalAmount missing currencyID attribute") + # currencyID is required on TaxTotalAmount only (EN 16931 / Factur-X) + tta = summation.find("ram:TaxTotalAmount", ns) + if tta is not None and not (tta.get("currencyID") or "").strip(): + issues.append("TaxTotalAmount missing currencyID attribute") if summation.find("ram:DuePayableAmount", ns) is None: issues.append("Missing DuePayableAmount") - else: - dpa = summation.find("ram:DuePayableAmount", ns) - if dpa is not None and not (dpa.get("currencyID") or "").strip(): - issues.append("DuePayableAmount missing currencyID attribute") header_tax = settlement.find("ram:ApplicableTradeTax", ns) if header_tax is not None: cat = header_tax.find("ram:CategoryCode", ns) cat_txt = (cat.text or "").strip() if cat is not None else "" - if cat_txt == "Z": + # Categories E, AE, K, G, O require exemption reason; Z must NOT have one + if cat_txt in ("E", "AE", "K", "G", "O"): if header_tax.find("ram:ExemptionReason", ns) is None: - issues.append("CategoryCode Z requires ExemptionReason (BT-120)") + issues.append(f"CategoryCode {cat_txt} requires ExemptionReason (BT-120)") + if cat_txt == "Z" and header_tax.find("ram:ExemptionReason", ns) is not None: + issues.append("CategoryCode Z must not have ExemptionReason (BR-Z-10)") + + # Seller/buyer country required when address present — strengthen BR-09/BR-11 + seller = None + buyer = None + if agreement is not None: + seller = agreement.find("ram:SellerTradeParty", ns) + buyer = agreement.find("ram:BuyerTradeParty", ns) + for party, label, bt in ((seller, "Seller", "BT-40"), (buyer, "Buyer", "BT-55")): + if party is None: + continue + addr = party.find("ram:PostalTradeAddress", ns) + if addr is None: + issues.append(f"{label} missing PostalTradeAddress ({bt})") + else: + cid = addr.find("ram:CountryID", ns) + if cid is None or not (cid.text or "").strip(): + issues.append(f"{label} missing CountryID ({bt})") # Line items lines = txn.findall("ram:IncludedSupplyChainTradeLineItem", ns) @@ -293,6 +311,63 @@ def _find_text(path: str) -> Optional[str]: return len(issues) == 0, issues +def validate_facturx_prerequisites(invoice: Any, settings: Any) -> Tuple[bool, List[str]]: + """ + Pre-export checks for Factur-X / ZUGFeRD when embedding is enabled. + Returns (passed, list of human-readable issues). Does not block when + Factur-X is disabled. + """ + from app.utils.cii_invoice import resolve_vat_category + + if not getattr(settings, "invoices_zugferd_pdf", False): + return True, [] + + issues: List[str] = [] + + seller_country = ( + (getattr(settings, "company_country", None) or "").strip() + or (getattr(settings, "peppol_sender_country", None) or "").strip() + ) + if not seller_country: + issues.append( + "Seller country is missing. Set Company Country in Admin → Settings → Company Branding " + "(or Peppol Sender Country)." + ) + + client = getattr(invoice, "client", None) + buyer_country = None + buyer_vat = None + if client is not None: + buyer_country = (getattr(client, "country", None) or "").strip() or None + if not buyer_country: + buyer_country = (client.get_custom_field("peppol_country", "") or "").strip() or None + if not buyer_country: + buyer_country = ( + client.get_custom_field("country", "") or client.get_custom_field("country_code", "") or "" + ).strip() or None + buyer_vat = (getattr(client, "vat_id", None) or "").strip() or None + if not buyer_vat: + buyer_vat = ( + client.get_custom_field("vat_id", "") or client.get_custom_field("tax_id", "") or "" + ).strip() or None + + if not buyer_country: + issues.append( + "Buyer country is missing. Set the client's Country (ISO alpha-2) for Factur-X compliance." + ) + + category, _, _, _ = resolve_vat_category(invoice, settings) + if category == "AE" and not buyer_vat: + issues.append( + "VAT category AE (reverse charge) requires the buyer's VAT ID on the client." + ) + + if not (getattr(settings, "company_name", None) or "").strip(): + issues.append("Company name is missing in Admin → Settings.") + + return len(issues) == 0, issues + + # ---- PDF / veraPDF Validation ---- diff --git a/app/utils/pdf_fonts.py b/app/utils/pdf_fonts.py new file mode 100644 index 00000000..6082c488 --- /dev/null +++ b/app/utils/pdf_fonts.py @@ -0,0 +1,167 @@ +""" +Embedded Liberation fonts for PDF/A-compliant invoice PDFs. + +ReportLab's base-14 fonts (Helvetica, Times-Roman, Courier) are not embedded +in the PDF stream, which violates PDF/A. Liberation fonts are metric-compatible +replacements (SIL OFL) that are registered as TrueType and fully embedded. +""" + +from __future__ import annotations + +import logging +from pathlib import Path +from typing import Dict, Optional + +from reportlab.pdfbase import pdfmetrics +from reportlab.pdfbase.ttfonts import TTFont + +logger = logging.getLogger(__name__) + +_FONTS_DIR = Path(__file__).resolve().parent.parent / "resources" / "fonts" +_REGISTERED = False + +# Internal registered names (used in PDF content streams) +LIBERATION_SANS = "LiberationSans" +LIBERATION_SANS_BOLD = "LiberationSans-Bold" +LIBERATION_SANS_ITALIC = "LiberationSans-Italic" +LIBERATION_SANS_BOLD_ITALIC = "LiberationSans-BoldItalic" +LIBERATION_SERIF = "LiberationSerif" +LIBERATION_SERIF_BOLD = "LiberationSerif-Bold" +LIBERATION_SERIF_ITALIC = "LiberationSerif-Italic" +LIBERATION_SERIF_BOLD_ITALIC = "LiberationSerif-BoldItalic" +LIBERATION_MONO = "LiberationMono" +LIBERATION_MONO_BOLD = "LiberationMono-Bold" +LIBERATION_MONO_ITALIC = "LiberationMono-Italic" +LIBERATION_MONO_BOLD_ITALIC = "LiberationMono-BoldItalic" + +# Map ReportLab / CSS-style base-14 names to Liberation equivalents +_FONT_MAP: Dict[str, str] = { + "Helvetica": LIBERATION_SANS, + "Helvetica-Bold": LIBERATION_SANS_BOLD, + "Helvetica-Oblique": LIBERATION_SANS_ITALIC, + "Helvetica-BoldOblique": LIBERATION_SANS_BOLD_ITALIC, + "Times-Roman": LIBERATION_SERIF, + "Times-Bold": LIBERATION_SERIF_BOLD, + "Times-Italic": LIBERATION_SERIF_ITALIC, + "Times-BoldItalic": LIBERATION_SERIF_BOLD_ITALIC, + "Courier": LIBERATION_MONO, + "Courier-Bold": LIBERATION_MONO_BOLD, + "Courier-Oblique": LIBERATION_MONO_ITALIC, + "Courier-BoldOblique": LIBERATION_MONO_BOLD_ITALIC, + # Also map Liberation names to themselves for idempotency + LIBERATION_SANS: LIBERATION_SANS, + LIBERATION_SANS_BOLD: LIBERATION_SANS_BOLD, + LIBERATION_SANS_ITALIC: LIBERATION_SANS_ITALIC, + LIBERATION_SANS_BOLD_ITALIC: LIBERATION_SANS_BOLD_ITALIC, + LIBERATION_SERIF: LIBERATION_SERIF, + LIBERATION_SERIF_BOLD: LIBERATION_SERIF_BOLD, + LIBERATION_SERIF_ITALIC: LIBERATION_SERIF_ITALIC, + LIBERATION_SERIF_BOLD_ITALIC: LIBERATION_SERIF_BOLD_ITALIC, + LIBERATION_MONO: LIBERATION_MONO, + LIBERATION_MONO_BOLD: LIBERATION_MONO_BOLD, + LIBERATION_MONO_ITALIC: LIBERATION_MONO_ITALIC, + LIBERATION_MONO_BOLD_ITALIC: LIBERATION_MONO_BOLD_ITALIC, +} + +_FONT_FILES: Dict[str, str] = { + LIBERATION_SANS: "LiberationSans-Regular.ttf", + LIBERATION_SANS_BOLD: "LiberationSans-Bold.ttf", + LIBERATION_SANS_ITALIC: "LiberationSans-Italic.ttf", + LIBERATION_SANS_BOLD_ITALIC: "LiberationSans-BoldItalic.ttf", + LIBERATION_SERIF: "LiberationSerif-Regular.ttf", + LIBERATION_SERIF_BOLD: "LiberationSerif-Bold.ttf", + LIBERATION_SERIF_ITALIC: "LiberationSerif-Italic.ttf", + LIBERATION_SERIF_BOLD_ITALIC: "LiberationSerif-BoldItalic.ttf", + LIBERATION_MONO: "LiberationMono-Regular.ttf", + LIBERATION_MONO_BOLD: "LiberationMono-Bold.ttf", + LIBERATION_MONO_ITALIC: "LiberationMono-Italic.ttf", + LIBERATION_MONO_BOLD_ITALIC: "LiberationMono-BoldItalic.ttf", +} + + +def ensure_pdf_fonts_registered() -> bool: + """Register Liberation TTF fonts with ReportLab (idempotent). Returns True on success.""" + global _REGISTERED + if _REGISTERED: + return True + + try: + for name, filename in _FONT_FILES.items(): + path = _FONTS_DIR / filename + if not path.is_file(): + logger.warning("Liberation font file missing: %s", path) + return False + if name not in pdfmetrics.getRegisteredFontNames(): + pdfmetrics.registerFont(TTFont(name, str(path))) + + pdfmetrics.registerFontFamily( + LIBERATION_SANS, + normal=LIBERATION_SANS, + bold=LIBERATION_SANS_BOLD, + italic=LIBERATION_SANS_ITALIC, + boldItalic=LIBERATION_SANS_BOLD_ITALIC, + ) + pdfmetrics.registerFontFamily( + LIBERATION_SERIF, + normal=LIBERATION_SERIF, + bold=LIBERATION_SERIF_BOLD, + italic=LIBERATION_SERIF_ITALIC, + boldItalic=LIBERATION_SERIF_BOLD_ITALIC, + ) + pdfmetrics.registerFontFamily( + LIBERATION_MONO, + normal=LIBERATION_MONO, + bold=LIBERATION_MONO_BOLD, + italic=LIBERATION_MONO_ITALIC, + boldItalic=LIBERATION_MONO_BOLD_ITALIC, + ) + _REGISTERED = True + return True + except Exception as e: + logger.warning("Failed to register Liberation fonts: %s", e) + return False + + +def resolve_font(name: Optional[str]) -> str: + """ + Map a base-14 or CSS font name to an embedded Liberation font. + + Falls back to LiberationSans if the name is unknown. Ensures fonts are + registered before returning. + """ + ensure_pdf_fonts_registered() + if not name: + return LIBERATION_SANS + mapped = _FONT_MAP.get(name) or _FONT_MAP.get(name.strip()) + if mapped: + return mapped + # Case-insensitive fallback for common variants + lower = name.strip().lower() + for key, val in _FONT_MAP.items(): + if key.lower() == lower: + return val + # Heuristic: bold/italic substrings + if "courier" in lower or "mono" in lower: + if "bold" in lower and ("italic" in lower or "oblique" in lower): + return LIBERATION_MONO_BOLD_ITALIC + if "bold" in lower: + return LIBERATION_MONO_BOLD + if "italic" in lower or "oblique" in lower: + return LIBERATION_MONO_ITALIC + return LIBERATION_MONO + if "times" in lower or "serif" in lower: + if "bold" in lower and ("italic" in lower or "oblique" in lower): + return LIBERATION_SERIF_BOLD_ITALIC + if "bold" in lower: + return LIBERATION_SERIF_BOLD + if "italic" in lower or "oblique" in lower: + return LIBERATION_SERIF_ITALIC + return LIBERATION_SERIF + # Default to sans + if "bold" in lower and ("italic" in lower or "oblique" in lower): + return LIBERATION_SANS_BOLD_ITALIC + if "bold" in lower: + return LIBERATION_SANS_BOLD + if "italic" in lower or "oblique" in lower: + return LIBERATION_SANS_ITALIC + return LIBERATION_SANS diff --git a/app/utils/pdf_generator_fallback.py b/app/utils/pdf_generator_fallback.py index a3720942..685233bf 100644 --- a/app/utils/pdf_generator_fallback.py +++ b/app/utils/pdf_generator_fallback.py @@ -17,12 +17,14 @@ from reportlab.platypus import Image, Paragraph, SimpleDocTemplate, Spacer, Table, TableStyle from app.models import Settings +from app.utils.pdf_fonts import ensure_pdf_fonts_registered, resolve_font class InvoicePDFGeneratorFallback: """Generate PDF invoices with company branding using ReportLab""" def __init__(self, invoice, settings=None): + ensure_pdf_fonts_registered() self.invoice = invoice self.settings = settings or Settings.get_settings() self.styles = getSampleStyleSheet() @@ -34,6 +36,7 @@ def _setup_custom_styles(self): ParagraphStyle( name="CompanyName", parent=self.styles["Heading1"], + fontName=resolve_font("Helvetica-Bold"), fontSize=18, spaceAfter=12, textColor=colors.HexColor("#007bff"), @@ -44,6 +47,7 @@ def _setup_custom_styles(self): ParagraphStyle( name="InvoiceTitle", parent=self.styles["Heading1"], + fontName=resolve_font("Helvetica-Bold"), fontSize=24, spaceAfter=20, textColor=colors.HexColor("#007bff"), @@ -55,13 +59,22 @@ def _setup_custom_styles(self): ParagraphStyle( name="SectionHeader", parent=self.styles["Heading2"], + fontName=resolve_font("Helvetica-Bold"), fontSize=14, spaceAfter=8, textColor=colors.HexColor("#007bff"), ) ) - self.styles.add(ParagraphStyle(name="NormalText", parent=self.styles["Normal"], fontSize=10, spaceAfter=6)) + self.styles.add( + ParagraphStyle( + name="NormalText", + parent=self.styles["Normal"], + fontName=resolve_font("Helvetica"), + fontSize=10, + spaceAfter=6, + ) + ) def generate_pdf(self): """Generate PDF content and return as bytes""" @@ -325,11 +338,11 @@ def _build_items_table(self): ("TEXTCOLOR", (0, 0), (-1, 0), colors.HexColor("#475569")), ("ALIGN", (0, 0), (-1, -1), "LEFT"), ("ALIGN", (1, 1), (-1, -1), "RIGHT"), - ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"), + ("FONTNAME", (0, 0), (-1, 0), resolve_font("Helvetica-Bold")), ("FONTSIZE", (0, 0), (-1, 0), 12), ("BOTTOMPADDING", (0, 0), (-1, 0), 12), ("BACKGROUND", (0, -3), (-1, -1), colors.HexColor("#eef2ff")), - ("FONTNAME", (0, -3), (-1, -1), "Helvetica-Bold"), + ("FONTNAME", (0, -3), (-1, -1), resolve_font("Helvetica-Bold")), ("GRID", (0, 0), (-1, -1), 0.5, colors.HexColor("#e2e8f0")), ("BOX", (0, 0), (-1, -1), 0.8, colors.HexColor("#e2e8f0")), ] @@ -356,7 +369,7 @@ def _add_page_number(self, canv, doc): page_height = doc.pagesize[1] canv.saveState() - canv.setFont("Helvetica", 9) + canv.setFont(resolve_font("Helvetica"), 9) try: canv.setFillColor(colors.HexColor("#666666")) except Exception: @@ -424,6 +437,7 @@ class QuotePDFGeneratorFallback: """Generate PDF quotes with company branding using ReportLab""" def __init__(self, quote, settings=None): + ensure_pdf_fonts_registered() self.quote = quote self.settings = settings or Settings.get_settings() self.styles = getSampleStyleSheet() @@ -435,6 +449,7 @@ def _setup_custom_styles(self): ParagraphStyle( name="CompanyName", parent=self.styles["Heading1"], + fontName=resolve_font("Helvetica-Bold"), fontSize=18, spaceAfter=12, textColor=colors.HexColor("#007bff"), @@ -445,6 +460,7 @@ def _setup_custom_styles(self): ParagraphStyle( name="QuoteTitle", parent=self.styles["Heading1"], + fontName=resolve_font("Helvetica-Bold"), fontSize=24, spaceAfter=20, textColor=colors.HexColor("#007bff"), @@ -456,13 +472,22 @@ def _setup_custom_styles(self): ParagraphStyle( name="SectionHeader", parent=self.styles["Heading2"], + fontName=resolve_font("Helvetica-Bold"), fontSize=14, spaceAfter=8, textColor=colors.HexColor("#007bff"), ) ) - self.styles.add(ParagraphStyle(name="NormalText", parent=self.styles["Normal"], fontSize=10, spaceAfter=6)) + self.styles.add( + ParagraphStyle( + name="NormalText", + parent=self.styles["Normal"], + fontName=resolve_font("Helvetica"), + fontSize=10, + spaceAfter=6, + ) + ) def generate_pdf(self): """Generate PDF content and return as bytes""" @@ -592,7 +617,7 @@ def _build_items_table(self): ("TEXTCOLOR", (0, 0), (-1, 0), colors.whitesmoke), ("ALIGN", (0, 0), (-1, -1), "LEFT"), ("ALIGN", (1, 0), (-1, -1), "RIGHT"), - ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"), + ("FONTNAME", (0, 0), (-1, 0), resolve_font("Helvetica-Bold")), ("FONTSIZE", (0, 0), (-1, 0), 10), ("BOTTOMPADDING", (0, 0), (-1, 0), 12), ("BACKGROUND", (0, 1), (-1, -1), colors.beige), @@ -626,7 +651,7 @@ def _build_totals(self): TableStyle( [ ("ALIGN", (0, 0), (-1, -1), "RIGHT"), - ("FONTNAME", (-1, -1), (-1, -1), "Helvetica-Bold"), + ("FONTNAME", (-1, -1), (-1, -1), resolve_font("Helvetica-Bold")), ("FONTSIZE", (-1, -1), (-1, -1), 12), ("TOPPADDING", (0, 0), (-1, -1), 6), ("BOTTOMPADDING", (0, 0), (-1, -1), 6), @@ -669,7 +694,7 @@ def _add_page_number(self, canv, doc): page_height = doc.pagesize[1] canv.saveState() - canv.setFont("Helvetica", 9) + canv.setFont(resolve_font("Helvetica"), 9) # Ensure page number is within page boundaries x = min(page_width - 2 * cm, page_width - 10) y = max(1 * cm, 10) diff --git a/app/utils/pdf_generator_reportlab.py b/app/utils/pdf_generator_reportlab.py index 62007e9b..3cf248b3 100644 --- a/app/utils/pdf_generator_reportlab.py +++ b/app/utils/pdf_generator_reportlab.py @@ -29,6 +29,7 @@ from reportlab.platypus import Flowable, Image, Paragraph, SimpleDocTemplate, Spacer, Table, TableStyle from app.models import Settings +from app.utils.pdf_fonts import ensure_pdf_fonts_registered, resolve_font from app.utils.pdf_template_schema import ( PAGE_SIZE_DIMENSIONS_MM, ElementType, @@ -144,6 +145,9 @@ def __init__(self, template_json: Dict[str, Any], data_context: Dict[str, Any], except Exception: pass # Logging not available or not in request context + # Embed Liberation fonts so PDFs are PDF/A capable (no base-14 fonts) + ensure_pdf_fonts_registered() + # Initialize styles self.styles = getSampleStyleSheet() self._setup_custom_styles() @@ -727,7 +731,7 @@ def _build_cell_paragraph_style( color_obj = colors.HexColor("#000000") return ParagraphStyle( name=f"_TableCell_{id(self)}_{align}_{font_name}_{int(font_size)}", - fontName=font_name, + fontName=resolve_font(font_name), fontSize=font_size, leading=leading if leading is not None else font_size * 1.2, textColor=color_obj, @@ -757,8 +761,8 @@ def _build_table(self, element: Dict[str, Any], max_width: Optional[float] = Non header_text_color_hex = _normalize_color(style_config.get("headerTextColor", "#000000")) or "#000000" row_text_color_hex = _normalize_color(style_config.get("rowTextColor", "#000000")) or "#000000" - header_font = style_config.get("headerFont") or "Helvetica-Bold" - row_font = style_config.get("rowFont") or "Helvetica" + header_font = resolve_font(style_config.get("headerFont") or "Helvetica-Bold") + row_font = resolve_font(style_config.get("rowFont") or "Helvetica") try: header_font_size = float(style_config.get("headerFontSize", 12)) except (TypeError, ValueError): @@ -914,7 +918,7 @@ def _get_style(self, element: Dict[str, Any], default_style_name: str = "NormalT parent=base_style, fontSize=style_config.get("size", base_style.fontSize), textColor=colors.HexColor(style_config.get("color", "#000000")), - fontName=style_config.get("font", base_style.fontName), + fontName=resolve_font(style_config.get("font", base_style.fontName)), alignment=self._get_alignment(style_config.get("align", "left")), spaceAfter=style_config.get("spaceAfter", base_style.spaceAfter), ) @@ -1143,7 +1147,7 @@ def _on_page(self, canv: canvas.Canvas, doc: SimpleDocTemplate): page_num = canv.getPageNumber() text = f"Page {page_num}" canv.saveState() - canv.setFont("Helvetica", 9) + canv.setFont(resolve_font("Helvetica"), 9) canv.setFillColor(colors.HexColor("#666666")) # Ensure page number is within page boundaries page_num_x = min(doc.leftMargin + doc.width, page_width - 10) @@ -1159,7 +1163,7 @@ def _draw_text_on_canvas( text = self._process_template_variables(text) style = element.get("style", {}) - font = style.get("font", "Helvetica") + font = resolve_font(style.get("font", "Helvetica")) size = style.get("size", 10) color = style.get("color", "#000000") align = style.get("align", "left") diff --git a/app/utils/pdfa3.py b/app/utils/pdfa3.py index 5d532d15..57b835d1 100644 --- a/app/utils/pdfa3.py +++ b/app/utils/pdfa3.py @@ -1,15 +1,11 @@ """ -PDF/A-3 conversion and metadata normalization for Factur-X / ZUGFeRD invoices. +PDF/A-3 conversion helpers for Factur-X / ZUGFeRD invoices. -Adds PDF/A-3 identification (XMP), output intent with embedded sRGB ICC -profile, and ensures metadata is present so validators (e.g. veraPDF) can -recognize the document as PDF/A-3b compliant. - -Limitations: -- Font subsetting/embedding is the responsibility of the PDF generator - (WeasyPrint/reportlab). This module only handles metadata and color. -- For full archival compliance, run veraPDF after conversion to catch any - remaining issues from the source PDF. +Provides ICC profile loading, PDF/A-3 XMP identification (including the +pdfaExtension schema declaration for the Factur-X namespace), OutputIntent +creation, and a standalone convert_to_pdfa3() for PDFs that already have +attachments. Prefer the combined embed path in zugferd.py when adding both +Factur-X XML and PDF/A-3 in one pass. """ from __future__ import annotations @@ -18,7 +14,7 @@ import os import struct from pathlib import Path -from typing import Optional, Tuple +from typing import Any, Optional, Tuple # Bundled sRGB profile (Compact ICC, MIT license — see app/resources/icc/LICENSE if present) _BUNDLED_SRGB_ICC = Path(__file__).resolve().parent.parent / "resources" / "icc" / "sRGB-v2-nano.icc" @@ -26,7 +22,11 @@ PDFA_PART = "3" PDFA_CONFORMANCE = "B" PDFA_NS = "http://www.aiim.org/pdfa/ns/id/" -RDF_NS = "http://www.w3.org/1999/02/22-rdf-syntax-ns#" +PDFA_EXTENSION_NS = "http://www.aiim.org/pdfa/ns/extension/" +PDFA_SCHEMA_NS = "http://www.aiim.org/pdfa/ns/schema#" +PDFA_PROPERTY_NS = "http://www.aiim.org/pdfa/ns/property#" +FACTURX_XMP_NS = "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#" +FACTURX_EMBEDDED_FILENAME = "factur-x.xml" OUTPUT_INTENT_SUBTYPE = "GTS_PDFA1" OUTPUT_INTENT_REGISTRY = "http://www.color.org" @@ -57,42 +57,22 @@ def _minimal_srgb_icc_profile() -> bytes: """ Build a minimal sRGB ICC profile that satisfies the PDF/A-3 requirement for an embedded DestOutputProfile in the OutputIntent. - - This is a stripped-down profile based on the sRGB IEC61966-2.1 spec. - It contains the required header, tag table, and enough data for veraPDF - to accept it as a valid ICC color profile. """ - # ICC profile header (128 bytes) header = bytearray(128) - # Profile size (filled in later) - # Preferred CMM type header[4:8] = b"lcms" - # Profile version 2.1.0 header[8:12] = struct.pack(">I", 0x02100000) - # Device class: mntr (monitor) header[12:16] = b"mntr" - # Color space: RGB header[16:20] = b"RGB " - # PCS: XYZ header[20:24] = b"XYZ " - # Date/time: 2024-01-01 00:00:00 header[24:36] = struct.pack(">6H", 2024, 1, 1, 0, 0, 0) - # Signature: acsp header[36:40] = b"acsp" - # Primary platform: MSFT header[40:44] = b"MSFT" - # Rendering intent: perceptual header[64:68] = struct.pack(">I", 0) - # PCS illuminant D50 (X=0.9642, Y=1.0000, Z=0.8249 in s15Fixed16) header[68:72] = struct.pack(">i", int(0.9642 * 65536)) header[72:76] = struct.pack(">i", int(1.0000 * 65536)) header[76:80] = struct.pack(">i", int(0.8249 * 65536)) - # Creator signature header[80:84] = b"lcms" - # Tag table: desc, wtpt, rXYZ, gXYZ, bXYZ, rTRC, gTRC, bTRC, cprt - tags: list = [] - def _xyz_tag(x: float, y: float, z: float) -> bytes: return ( b"XYZ " @@ -109,10 +89,9 @@ def _curv_tag_gamma(gamma: float) -> bytes: def _desc_tag(text: str) -> bytes: ascii_bytes = text.encode("ascii") + b"\x00" data = b"desc" + b"\x00" * 4 + struct.pack(">I", len(ascii_bytes)) + ascii_bytes - # Unicode and ScriptCode localization (empty) - data += struct.pack(">I", 0) # Unicode language code - data += struct.pack(">I", 0) # Unicode count - data += struct.pack(">H", 0) + b"\x00" * 67 # ScriptCode + data += struct.pack(">I", 0) + data += struct.pack(">I", 0) + data += struct.pack(">H", 0) + b"\x00" * 67 while len(data) % 4 != 0: data += b"\x00" return data @@ -124,7 +103,6 @@ def _text_tag(text: str) -> bytes: data += b"\x00" return data - # sRGB approximate values desc_data = _desc_tag("sRGB IEC61966-2.1") wtpt_data = _xyz_tag(0.9505, 1.0000, 1.0890) rXYZ_data = _xyz_tag(0.4124, 0.2126, 0.0193) @@ -148,7 +126,7 @@ def _text_tag(text: str) -> bytes: ] tag_count = len(tag_datas) - tag_table_size = 4 + tag_count * 12 # count + entries + tag_table_size = 4 + tag_count * 12 data_offset = 128 + tag_table_size tag_table = struct.pack(">I", tag_count) @@ -161,38 +139,201 @@ def _text_tag(text: str) -> bytes: payload += b"\x00" profile = bytes(header) + tag_table + payload - # Write profile size into header profile = struct.pack(">I", len(profile)) + profile[4:] - return profile -def _ensure_pdfa3_xmp(xmp_str: str) -> str: - """Inject or update PDF/A-3 identification in XMP.""" - pdfa_desc = ( +def facturx_pdfa_extension_schema_xml() -> str: + """Return the pdfaExtension:schemas RDF block declaring the fx: namespace properties.""" + return f""" + + + + Factur-X PDFA Extension Schema + {FACTURX_XMP_NS} + fx + + + + DocumentFileName + Text + external + Name of the embedded XML invoice file + + + DocumentType + Text + external + Document type (INVOICE) + + + Version + Text + external + Factur-X version + + + ConformanceLevel + Text + external + Factur-X conformance level + + + + + + + """ + + +def facturx_rdf_description() -> str: + """Return the Factur-X XMP RDF description block.""" + return ( + f'' + "INVOICE" + f"{FACTURX_EMBEDDED_FILENAME}" + "1.0" + "EN 16931" + "" + ) + + +def pdfaid_rdf_description() -> str: + """Return PDF/A identification RDF description.""" + return ( f'' f"{PDFA_PART}" f"{PDFA_CONFORMANCE}" "" ) - if "pdfaid:part" in xmp_str and "pdfaid:conformance" in xmp_str: - return xmp_str - marker = "" - if marker in xmp_str: - insert_pos = xmp_str.rfind(marker) - return xmp_str[:insert_pos] + pdfa_desc + "\n " + xmp_str[insert_pos:] - return xmp_str + + +def inject_rdf_descriptions(xmp_str: str, *descriptions: str) -> str: + """Insert RDF Description blocks before if not already present.""" + result = xmp_str + for desc in descriptions: + # Skip if a distinctive fragment of this description is already present + if "fx:DocumentType" in desc and "fx:DocumentType" in result: + continue + if "pdfaid:part" in desc and "pdfaid:part" in result: + continue + if "pdfaExtension:schemas" in desc and "pdfaExtension:schemas" in result: + continue + marker = "" + if marker in result: + insert_pos = result.rfind(marker) + result = result[:insert_pos] + desc + "\n " + result[insert_pos:] + return result + + +def apply_output_intent(pdf: Any) -> None: + """Add sRGB OutputIntent with embedded ICC if the catalog has none.""" + from pikepdf import Array, Dictionary, Name, Stream + + try: + intents = pdf.Root.get("/OutputIntents") + has_intent = intents is not None and len(intents) > 0 + except Exception: + has_intent = False + + if has_intent: + return + + icc_data = _srgb_icc_profile_bytes() + icc_stream = Stream(pdf, icc_data) + icc_stream[Name.N] = 3 + + intent = Dictionary( + Type=Name.OutputIntent, + S=Name("/GTS_PDFA1"), + OutputConditionIdentifier=OUTPUT_INTENT_INFO, + Info=OUTPUT_INTENT_INFO, + OutputCondition="sRGB IEC61966-2.1", + RegistryName=OUTPUT_INTENT_REGISTRY, + DestOutputProfile=icc_stream, + ) + pdf.Root.OutputIntents = Array([intent]) + + +def apply_pdfa3_metadata( + pdf: Any, + *, + include_facturx: bool = False, + pdfa3: bool = True, +) -> None: + """ + Ensure PDF has XMP metadata synced with docinfo when possible. + + - pdfa3=True: add PDF/A-3b identification (pdfaid:part/conformance) + - include_facturx=True: add Factur-X fx: properties and pdfaExtension schema + """ + # Prefer pikepdf's metadata API so XMP stays in sync with /Info + try: + with pdf.open_metadata(set_pikepdf_as_editor=False, update_docinfo=True) as meta: + if not meta.get("pdf:Producer"): + meta["pdf:Producer"] = "TimeTracker" + if not meta.get("xmp:CreatorTool"): + meta["xmp:CreatorTool"] = "TimeTracker" + except Exception: + pass + + if not hasattr(pdf.Root, "Metadata") or pdf.Root.Metadata is None: + minimal = ( + '' + '' + '' + "" + '' + ) + pdf.Root.Metadata = pdf.make_stream(minimal.encode("utf-8")) + + xmp_bytes = pdf.Root.Metadata.read_bytes() + xmp_str = xmp_bytes.decode("utf-8", errors="replace") + + descriptions = [] + if pdfa3: + descriptions.append(pdfaid_rdf_description()) + if include_facturx: + descriptions.append(facturx_rdf_description()) + descriptions.append(facturx_pdfa_extension_schema_xml()) + + if not descriptions: + return + + new_xmp = inject_rdf_descriptions(xmp_str, *descriptions) + pdf.Root.Metadata = pdf.make_stream(new_xmp.encode("utf-8")) + + +def _save_pdfa(pdf: Any) -> bytes: + out = io.BytesIO() + pdf_version = ("1", 7) + try: + pdf.save( + out, + min_version=pdf_version, + force_version=pdf_version, + fix_metadata_version=False, + ) + except Exception as ex: + if "tuple" in str(ex).lower(): + pdf.save(out, min_version=pdf_version, fix_metadata_version=False) + else: + raise + return out.getvalue() def convert_to_pdfa3(pdf_bytes: bytes) -> Tuple[bytes, Optional[str]]: """ - Normalize PDF to PDF/A-3b by adding identification XMP, an output intent - with an embedded sRGB ICC profile, and marking info as XMP-only. + Normalize PDF to PDF/A-3b by adding identification XMP and an output intent + with an embedded sRGB ICC profile. Returns (new_pdf_bytes, None) on success, or (original_pdf_bytes, error_message) on failure. """ try: - import pikepdf + import pikepdf # noqa: F401 except ImportError as e: return pdf_bytes, f"pikepdf not available: {e}" @@ -202,36 +343,28 @@ def convert_to_pdfa3(pdf_bytes: bytes) -> Tuple[bytes, Optional[str]]: return pdf_bytes, f"Invalid PDF: {e}" try: - # Ensure metadata stream exists - if not hasattr(pdf.Root, "Metadata") or pdf.Root.Metadata is None: - minimal = ( - '' - '' - '' - "" - '' - ) - pdf.Root.Metadata = pdf.make_stream(minimal.encode("utf-8")) - - xmp_bytes = pdf.Root.Metadata.read_bytes() - xmp_str = xmp_bytes.decode("utf-8", errors="replace") - new_xmp = _ensure_pdfa3_xmp(xmp_str) - pdf.Root.Metadata = pdf.make_stream(new_xmp.encode("utf-8")) - - # Add OutputIntent with embedded ICC profile for PDF/A-3 + # Detect whether Factur-X metadata / attachment already present + include_fx = False try: - intents = pdf.Root.get("/OutputIntents") - has_intent = intents is not None and len(intents) > 0 + if hasattr(pdf, "attachments") and FACTURX_EMBEDDED_FILENAME in pdf.attachments: + include_fx = True except Exception: - has_intent = False + pass + try: + if hasattr(pdf.Root, "Metadata") and pdf.Root.Metadata is not None: + existing = pdf.Root.Metadata.read_bytes().decode("utf-8", errors="replace") + if "fx:DocumentType" in existing or "factur-x" in existing.lower(): + include_fx = True + except Exception: + pass - if not has_intent: + apply_pdfa3_metadata(pdf, include_facturx=include_fx) + try: + apply_output_intent(pdf) + except Exception: + # Fallback without embedded profile try: - from pikepdf import Array, Dictionary, Name, Stream - - icc_data = _srgb_icc_profile_bytes() - icc_stream = Stream(pdf, icc_data) - icc_stream[Name.N] = 3 # RGB = 3 components + from pikepdf import Array, Dictionary, Name intent = Dictionary( Type=Name.OutputIntent, @@ -240,47 +373,14 @@ def convert_to_pdfa3(pdf_bytes: bytes) -> Tuple[bytes, Optional[str]]: Info=OUTPUT_INTENT_INFO, OutputCondition="sRGB IEC61966-2.1", RegistryName=OUTPUT_INTENT_REGISTRY, - DestOutputProfile=icc_stream, ) pdf.Root.OutputIntents = Array([intent]) except Exception: - # Fallback: intent without embedded profile (less compliant but still useful) - try: - from pikepdf import Array, Dictionary, Name - - intent = Dictionary( - Type=Name.OutputIntent, - S=Name("/GTS_PDFA1"), - OutputConditionIdentifier=OUTPUT_INTENT_INFO, - Info=OUTPUT_INTENT_INFO, - OutputCondition="sRGB IEC61966-2.1", - RegistryName=OUTPUT_INTENT_REGISTRY, - ) - pdf.Root.OutputIntents = Array([intent]) - except Exception: - pass - - out = io.BytesIO() - pdf_version = ("1", 7) - try: - pdf.save( - out, - min_version=pdf_version, - force_version=pdf_version, - fix_metadata_version=False, - ) - except Exception as ex: - if "tuple" in str(ex).lower(): - # Some pikepdf versions reject tuple force_version; retry without it. - pdf.save( - out, - min_version=pdf_version, - fix_metadata_version=False, - ) - else: - raise + pass + + result = _save_pdfa(pdf) pdf.close() - return out.getvalue(), None + return result, None except Exception as e: try: pdf.close() diff --git a/app/utils/scheduled_tasks.py b/app/utils/scheduled_tasks.py index 5bbb1d18..6f5ac487 100644 --- a/app/utils/scheduled_tasks.py +++ b/app/utils/scheduled_tasks.py @@ -847,7 +847,7 @@ def send_base_telemetry_heartbeat_with_app(): send_base_heartbeat() except Exception: - pass + logger.debug("Base telemetry heartbeat failed", exc_info=True) scheduler.add_job( func=send_base_telemetry_heartbeat_with_app, @@ -972,7 +972,7 @@ def _otel_apscheduler_listener(event): elif event.code == EVENT_JOB_EXECUTED: record_background_job_outcome(event.job_id, True) except Exception: - pass + logger.debug("OpenTelemetry APScheduler listener callback failed", exc_info=True) scheduler.add_listener(_otel_apscheduler_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR) logger.info("Registered OpenTelemetry APScheduler listener") @@ -990,13 +990,15 @@ def check_idle_timers(): is older than ``settings.idle_timeout_minutes``: 1. First pass: set ``idle_notified_at`` and send a browser push "Still working?". - 2. Second pass (after 5-minute grace): flag the timer ``needs_review`` - (``idle_flagged_at``) and KEEP IT RUNNING — a missed notification must never - silently truncate recorded time. Users resolve the flag via - ``POST /api/v1/timer/review`` (trim / keep / continue). - 3. Optional safety cap: if ``settings.idle_auto_stop_hours`` > 0 and the timer - stays flagged (and running) beyond that many hours, stop it credited to - ``last_active + idle_timeout`` and keep the review flag set. + 2. Second pass (after 5-minute grace), depending on + ``settings.idle_unanswered_action``: + - ``review`` (default): flag the timer ``needs_review`` (``idle_flagged_at``) + and KEEP IT RUNNING. Users resolve via ``POST /api/v1/timer/review``. + - ``auto_stop``: stop credited to ``last_active + idle_timeout`` and clear + idle flags (Issue #722). + 3. Optional safety cap (review mode only): if ``settings.idle_auto_stop_hours`` + > 0 and the timer stays flagged beyond that many hours, stop it credited + to ``last_active + idle_timeout`` and keep the review flag set. Clients that keep sending heartbeats keep ``last_heartbeat_at`` fresh and clear ``idle_notified_at`` / ``idle_flagged_at``, so active users are never flagged. @@ -1008,7 +1010,13 @@ def check_idle_timers(): settings = Settings.get_settings() idle_minutes = int(getattr(settings, "idle_timeout_minutes", None) or 30) idle_minutes = max(1, min(480, idle_minutes)) + unanswered_action = (getattr(settings, "idle_unanswered_action", None) or "review").strip().lower() + if unanswered_action not in ("review", "auto_stop"): + unanswered_action = "review" auto_stop_hours = int(getattr(settings, "idle_auto_stop_hours", 0) or 0) + # Safety cap only applies in review mode + if unanswered_action != "review": + auto_stop_hours = 0 threshold = timedelta(minutes=idle_minutes) grace = timedelta(minutes=5) cap = timedelta(hours=auto_stop_hours) if auto_stop_hours > 0 else None @@ -1038,13 +1046,14 @@ def check_idle_timers(): notified = 0 flagged = 0 + auto_stops = 0 capped_stops = 0 for entry in stale: try: if entry.idle_notified_at is None: entry.idle_notified_at = now entry.updated_at = now - _send_idle_push(entry) + _send_idle_push(entry, unanswered_action=unanswered_action) notified += 1 logger.info( "Idle notify for timer %s user=%s (stale since heartbeat/start)", @@ -1055,65 +1064,89 @@ def check_idle_timers(): notified_at = entry.idle_notified_at if getattr(notified_at, "tzinfo", None) is not None: notified_at = notified_at.replace(tzinfo=None) - if (now - notified_at) >= grace: - if entry.idle_flagged_at is None: + if (now - notified_at) < grace: + continue + + if unanswered_action == "auto_stop": + stop_at = entry.idle_credited_stop_time(idle_minutes, now=now) + entry_id = entry.id + user_id = entry.user_id + entry.stop_timer(end_time=stop_at) + # stop_timer clears idle flags and commits + auto_stops += 1 + logger.info( + "Idle auto-stop for timer %s user=%s at %s", + entry_id, + user_id, + stop_at, + ) + _emit_timer_event( + "timer_stopped", + { + "user_id": user_id, + "timer_id": entry_id, + "duration": entry.duration_formatted, + "reason": "idle_auto_stop", + }, + user_id=user_id, + ) + _send_idle_stopped_push(entry, user_id=user_id) + continue + + # review mode + if entry.idle_flagged_at is None: + entry.idle_flagged_at = now + entry.updated_at = now + flagged += 1 + logger.info( + "Idle needs-review flag set for timer %s user=%s (timer keeps running)", + entry.id, + entry.user_id, + ) + _emit_timer_event( + "timer_needs_review", + { + "user_id": entry.user_id, + "timer_id": entry.id, + "reason": "idle_needs_review", + "message": ( + "Your timer kept running while you were idle and now needs review. " + "Trim it to your last activity or keep the time." + ), + }, + user_id=entry.user_id, + ) + elif cap is not None: + flagged_at = entry.idle_flagged_at + if getattr(flagged_at, "tzinfo", None) is not None: + flagged_at = flagged_at.replace(tzinfo=None) + if (now - flagged_at) >= cap: + # Safety cap: credit the configured idle window and stop, + # but keep the review flag so the user can adjust afterwards. + stop_at = entry.idle_credited_stop_time(idle_minutes, now=now) + entry_id = entry.id + user_id = entry.user_id + entry.stop_timer(end_time=stop_at) entry.idle_flagged_at = now entry.updated_at = now - flagged += 1 + db.session.commit() + capped_stops += 1 logger.info( - "Idle needs-review flag set for timer %s user=%s (timer keeps running)", - entry.id, - entry.user_id, + "Idle safety-cap stop for timer %s user=%s at %s (still needs review)", + entry_id, + user_id, + stop_at, ) _emit_timer_event( - "timer_needs_review", + "timer_stopped", { - "user_id": entry.user_id, - "timer_id": entry.id, - "reason": "idle_needs_review", - "message": ( - "Your timer kept running while you were idle and now needs review. " - "Trim it to your last activity or keep the time." - ), + "user_id": user_id, + "timer_id": entry_id, + "duration": entry.duration_formatted, + "reason": "idle_auto_stop_cap", }, - user_id=entry.user_id, + user_id=user_id, ) - elif cap is not None: - flagged_at = entry.idle_flagged_at - if getattr(flagged_at, "tzinfo", None) is not None: - flagged_at = flagged_at.replace(tzinfo=None) - if (now - flagged_at) >= cap: - # Safety cap: credit the configured idle window and stop, - # but keep the review flag so the user can adjust afterwards. - last_active = entry.last_heartbeat_at or entry.start_time - if getattr(last_active, "tzinfo", None) is not None: - last_active = last_active.replace(tzinfo=None) - stop_at = last_active + threshold if last_active else now - if stop_at > now: - stop_at = now - entry_id = entry.id - user_id = entry.user_id - entry.stop_timer(end_time=stop_at) - entry.idle_flagged_at = now - entry.updated_at = now - db.session.commit() - capped_stops += 1 - logger.info( - "Idle safety-cap stop for timer %s user=%s at %s (still needs review)", - entry_id, - user_id, - stop_at, - ) - _emit_timer_event( - "timer_stopped", - { - "user_id": user_id, - "timer_id": entry_id, - "duration": entry.duration_formatted, - "reason": "idle_auto_stop_cap", - }, - user_id=user_id, - ) except Exception as e: logger.warning( "Idle check failed for entry %s: %s", @@ -1128,17 +1161,21 @@ def check_idle_timers(): logger.warning("Idle check commit failed: %s", e) db.session.rollback() - if notified or flagged or capped_stops: + if notified or flagged or auto_stops or capped_stops: logger.info( - "Idle check: notified=%d flagged=%d cap_stopped=%d", notified, flagged, capped_stops + "Idle check: notified=%d flagged=%d auto_stopped=%d cap_stopped=%d", + notified, + flagged, + auto_stops, + capped_stops, ) - return notified + flagged + capped_stops + return notified + flagged + auto_stops + capped_stops except Exception as e: logger.error("Error in check_idle_timers: %s", e) try: db.session.rollback() except Exception: - pass + logger.debug("db.session.rollback failed after check_idle_timers error", exc_info=True) return 0 @@ -1156,7 +1193,7 @@ def _emit_timer_event(event, payload, user_id=None): logger.debug("socketio emit %s failed: %s", event, e) -def _send_idle_push(entry): +def _send_idle_push(entry, unanswered_action="review"): """Notify the user that their timer is idle ("Still working?"). Channels (Issue #722): @@ -1175,14 +1212,25 @@ def _send_idle_push(entry): if not user: return + if unanswered_action == "auto_stop": + message = ( + "Your timer has been idle. Confirm you are still working or the timer " + "will be stopped and the idle time kept." + ) + else: + message = ( + "Your timer has been idle. Confirm you are still working or it will be flagged for review." + ) + note = { "kind": "idle_timeout", "title": "Still working?", - "message": "Your timer has been idle. Confirm you are still working or it will be flagged for review.", + "message": message, "type": "warning", "action": {"url": "/", "label": "Open TimeTracker"}, "timer_id": entry.id, "idle_notified_at": entry.idle_notified_at.isoformat() if entry.idle_notified_at else None, + "idle_unanswered_action": unanswered_action, } # Real-time notify any connected web/desktop Socket.IO clients @@ -1212,6 +1260,37 @@ def _send_idle_push(entry): logger.debug("Idle push failed for user %s: %s", getattr(user, "username", user.id), e) +def _send_idle_stopped_push(entry, user_id=None): + """Notify the user via Web Push that their timer was auto-stopped (socket already emitted).""" + uid = user_id or getattr(entry, "user_id", None) + if not uid: + return + try: + user = getattr(entry, "user", None) or User.query.get(uid) + except Exception: + return + if not user: + return + + note = { + "kind": "idle_auto_stop", + "title": "Timer stopped", + "message": "Your timer was stopped due to inactivity. The idle window was kept on the entry.", + "type": "warning", + "action": {"url": "/time-entries", "label": "View entries"}, + "timer_id": getattr(entry, "id", None), + } + + try: + from app.models import PushSubscription + + subscriptions = PushSubscription.get_user_subscriptions(user.id) + if subscriptions: + _deliver_push_to_subscriptions(user, subscriptions, note) + except Exception as e: + logger.debug("Idle stop push failed for user %s: %s", getattr(user, "username", user.id), e) + + def send_smart_reminder_push_notifications(): """Send browser push notifications for actionable smart reminders. @@ -1326,7 +1405,7 @@ def _deliver_push_to_subscriptions(user, subscriptions, note) -> int: try: sub.update_last_used() except Exception: - pass + logger.debug("Web push subscription update_last_used failed", exc_info=True) delivered += 1 except WebPushException as e: status = getattr(getattr(e, "response", None), "status_code", None) @@ -1698,7 +1777,9 @@ def sync_integrations(): logger.debug(f"Skipping integration {integration.id}: sync interval not elapsed") continue except (ValueError, TypeError): - pass + logger.debug( + "Invalid last_scheduled_sync_at for integration %s", integration.id, exc_info=True + ) elif sync_interval == "daily" and datetime.utcnow().hour != 2: logger.debug(f"Skipping integration {integration.id}: daily sync not due") continue diff --git a/app/utils/xrechnung.py b/app/utils/xrechnung.py new file mode 100644 index 00000000..c675029e --- /dev/null +++ b/app/utils/xrechnung.py @@ -0,0 +1,79 @@ +""" +XRechnung (Germany) export helper — experimental minimal skeleton. + +Full CIUS-DE / EN 16931 compliance is TODO; this module produces a minimal UBL 2.1 +Invoice XML shell suitable for pipeline wiring and validator smoke tests. + +For production German e-invoicing, extend with complete BT/BG mappings and +embed via the Factur-X / Peppol paths where applicable. +""" + +from __future__ import annotations + +import xml.etree.ElementTree as ET +from datetime import date +from decimal import Decimal +from typing import Any, Optional +from xml.dom import minidom + +UBL_NS = "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" +CBC_NS = "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" +CAC_NS = "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" + +ET.register_namespace("", UBL_NS) +ET.register_namespace("cbc", CBC_NS) +ET.register_namespace("cac", CAC_NS) + + +def build_minimal_xrechnung_xml( + invoice: Any, + *, + seller_name: str, + buyer_name: str, + currency: str = "EUR", +) -> str: + """ + Build a minimal UBL Invoice XML document for an invoice model instance. + + TODO: Map full XRechnung / CIUS-DE mandatory fields (seller/buyer address, + VAT IDs, payment means, line-level tax categories, etc.). + """ + root = ET.Element(f"{{{UBL_NS}}}Invoice") + inv_id = str(getattr(invoice, "invoice_number", None) or getattr(invoice, "id", "")) + issue = getattr(invoice, "issue_date", None) or date.today() + if hasattr(issue, "isoformat"): + issue_str = issue.isoformat() + else: + issue_str = str(issue) + + ET.SubElement(root, f"{{{CBC_NS}}}CustomizationID").text = ( + "urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:standard:xrechnung_2.0" + ) + ET.SubElement(root, f"{{{CBC_NS}}}ProfileID").text = "urn:fdc:peppol.eu:2017:poacc:billing:01:1.0" + ET.SubElement(root, f"{{{CBC_NS}}}ID").text = inv_id + ET.SubElement(root, f"{{{CBC_NS}}}IssueDate").text = issue_str + ET.SubElement(root, f"{{{CBC_NS}}}InvoiceTypeCode").text = "380" + ET.SubElement(root, f"{{{CBC_NS}}}DocumentCurrencyCode").text = currency.upper() + + supplier = ET.SubElement(root, f"{{{CAC_NS}}}AccountingSupplierParty") + sp = ET.SubElement(supplier, f"{{{CAC_NS}}}Party") + spn = ET.SubElement(sp, f"{{{CAC_NS}}}PartyName") + ET.SubElement(spn, f"{{{CBC_NS}}}Name").text = seller_name or "Seller" + + customer = ET.SubElement(root, f"{{{CAC_NS}}}AccountingCustomerParty") + cp = ET.SubElement(customer, f"{{{CAC_NS}}}Party") + cpn = ET.SubElement(cp, f"{{{CAC_NS}}}PartyName") + ET.SubElement(cpn, f"{{{CBC_NS}}}Name").text = buyer_name or "Buyer" + + total = Decimal(str(getattr(invoice, "total_amount", None) or getattr(invoice, "total", 0) or 0)) + monetary = ET.SubElement(root, f"{{{CAC_NS}}}LegalMonetaryTotal") + ET.SubElement(monetary, f"{{{CBC_NS}}}PayableAmount", currencyID=currency.upper()).text = f"{total:.2f}" + + rough = ET.tostring(root, encoding="unicode") + parsed = minidom.parseString(rough) + return parsed.toprettyxml(indent=" ") + + +def xrechnung_export_available() -> bool: + """Feature flag helper: XRechnung export is experimental until full CIUS mapping ships.""" + return True diff --git a/app/utils/zugferd.py b/app/utils/zugferd.py index 015d48b4..b3997825 100644 --- a/app/utils/zugferd.py +++ b/app/utils/zugferd.py @@ -10,18 +10,25 @@ correct payload format for Factur-X 1.0 / ZUGFeRD 2.x. - Peppol transport uses UBL (see app/integrations/peppol.py). - The file is attached as an Associated File with relationship "Data" - (primary machine-readable invoice) and Factur-X XMP metadata is written so - validators recognize the document. + (primary machine-readable invoice), catalog /AF array, and Factur-X + XMP metadata (with pdfaExtension schema) so validators recognize the + document. Optional PDF/A-3b normalization (OutputIntent + pdfaid) can + run in the same pikepdf session. """ from __future__ import annotations import io import os -import tempfile +from datetime import datetime, timezone from typing import Any, Optional, Tuple from app.utils.cii_invoice import CIIParty, build_cii_invoice_xml +from app.utils.pdfa3 import ( + FACTURX_EMBEDDED_FILENAME as _PDFA_FX_NAME, + apply_output_intent, + apply_pdfa3_metadata, +) # Standard embedded filename per Factur-X specification FACTURX_EMBEDDED_FILENAME = "factur-x.xml" @@ -31,16 +38,29 @@ # Factur-X XMP namespace (PDF/A-3 Associated Files) FACTURX_XMP_NS = "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#" +assert FACTURX_EMBEDDED_FILENAME == _PDFA_FX_NAME + def _get_seller_party(settings: Any) -> CIIParty: - """Build seller party from Settings (best-effort; placeholders if missing).""" + """Build seller party from Settings (structured address preferred).""" + street = (getattr(settings, "company_street", None) or "").strip() or None + postcode = (getattr(settings, "company_postcode", None) or "").strip() or None + city = (getattr(settings, "company_city", None) or "").strip() or None + country = (getattr(settings, "company_country", None) or "").strip() or None + if not country: + country = ( + (getattr(settings, "peppol_sender_country", "") or os.getenv("PEPPOL_SENDER_COUNTRY") or "").strip() or None + ) + address_line = street or (getattr(settings, "company_address", None) or "").strip() or None + return CIIParty( name=(getattr(settings, "company_name", None) or "Company").strip(), tax_id=(getattr(settings, "company_tax_id", None) or "").strip() or None, - address_line=(getattr(settings, "company_address", None) or "").strip() or None, - country_code=( - (getattr(settings, "peppol_sender_country", "") or os.getenv("PEPPOL_SENDER_COUNTRY") or "").strip() or None - ), + address_line=address_line, + street=street, + city=city, + postcode=postcode, + country_code=country, email=(getattr(settings, "company_email", None) or "").strip() or None, phone=(getattr(settings, "company_phone", None) or "").strip() or None, endpoint_id=( @@ -51,15 +71,20 @@ def _get_seller_party(settings: Any) -> CIIParty: (getattr(settings, "peppol_sender_scheme_id", "") or os.getenv("PEPPOL_SENDER_SCHEME_ID") or "").strip() or None ), + iban=(getattr(settings, "company_iban", None) or "").strip() or None, + bic=(getattr(settings, "company_bic", None) or "").strip() or None, ) def _get_buyer_party(invoice: Any) -> CIIParty: - """Build buyer party from invoice and client (best-effort).""" + """Build buyer party from invoice and client (structured address preferred).""" client = getattr(invoice, "client", None) name = (getattr(invoice, "client_name", None) or "Customer").strip() tax_id = None address_line = None + street = None + city = None + postcode = None email = None phone = None country = None @@ -69,23 +94,38 @@ def _get_buyer_party(invoice: Any) -> CIIParty: if client: endpoint_id = (client.get_custom_field("peppol_endpoint_id", "") or "").strip() or None scheme_id = (client.get_custom_field("peppol_scheme_id", "") or "").strip() or None - country = (client.get_custom_field("peppol_country", "") or "").strip() or None + country = (getattr(client, "country", None) or "").strip() or None + if not country: + country = (client.get_custom_field("peppol_country", "") or "").strip() or None if not country: country = ( client.get_custom_field("country", "") or client.get_custom_field("country_code", "") or "" ).strip() or None name = (getattr(client, "name", None) or getattr(invoice, "client_name", "") or "Customer").strip() - tax_id = (client.get_custom_field("vat_id", "") or client.get_custom_field("tax_id", "") or "").strip() or None - address_line = ( + tax_id = (getattr(client, "vat_id", None) or "").strip() or None + if not tax_id: + tax_id = ( + client.get_custom_field("vat_id", "") or client.get_custom_field("tax_id", "") or "" + ).strip() or None + street = (getattr(client, "street", None) or "").strip() or None + city = (getattr(client, "city", None) or "").strip() or None + postcode = (getattr(client, "postcode", None) or "").strip() or None + address_line = street or ( getattr(client, "address", None) or getattr(invoice, "client_address", None) or "" ).strip() or None email = (getattr(client, "email", None) or getattr(invoice, "client_email", None) or "").strip() or None phone = (getattr(client, "phone", None) or "").strip() or None + else: + address_line = (getattr(invoice, "client_address", None) or "").strip() or None + email = (getattr(invoice, "client_email", None) or "").strip() or None return CIIParty( name=name, tax_id=tax_id, address_line=address_line, + street=street, + city=city, + postcode=postcode, country_code=country, email=email, phone=phone, @@ -94,132 +134,149 @@ def _get_buyer_party(invoice: Any) -> CIIParty: ) -# Minimal XMP template with rdf:RDF for Factur-X extension (PDF/A-3 style) -_FACTURX_XMP_TEMPLATE = """ - - - {rdf_description} - - -""" +def _pdf_date_now() -> str: + """Return a PDF date string (D:YYYYMMDDHHmmSS+00'00').""" + now = datetime.now(timezone.utc) + return now.strftime("D:%Y%m%d%H%M%S+00'00'") -def _ensure_metadata_stream(pdf: Any) -> None: - """Ensure PDF has a Root/Metadata stream; create minimal XMP if missing.""" - if not hasattr(pdf, "Root"): - return - if hasattr(pdf.Root, "Metadata") and pdf.Root.Metadata is not None: - return - try: - rdf_desc = _facturx_rdf_description() - minimal_xmp = _FACTURX_XMP_TEMPLATE.format(rdf_description=rdf_desc) - pdf.Root.Metadata = pdf.make_stream(minimal_xmp.encode("utf-8")) - except Exception: - pass - - -def _facturx_rdf_description() -> str: - """Return the Factur-X XMP RDF description block.""" - return ( - f'' - "INVOICE" - f"{FACTURX_EMBEDDED_FILENAME}" - "1.0" - "EN 16931" - "" +def _attach_facturx_xml(pdf: Any, cii_bytes: bytes) -> Any: + """ + Attach factur-x.xml with full PDF/A-3 Associated File structure: + - Filespec with AFRelationship=/Data, F/UF filename, EF stream + - Embedded stream with /Subtype /text/xml and /Params (ModDate, Size) + - Catalog /AF array referencing the filespec + - Names/EmbeddedFiles name tree (via pdf.attachments) + """ + from pikepdf import Array, Dictionary, Name, Stream + + mod_date = _pdf_date_now() + params = Dictionary( + ModDate=mod_date, + Size=len(cii_bytes), ) + ef_stream = Stream(pdf, cii_bytes) + ef_stream[Name.Type] = Name.EmbeddedFile + ef_stream[Name.Subtype] = Name("/text/xml") + ef_stream[Name.Params] = params + filespec = Dictionary( + Type=Name.Filespec, + F=FACTURX_EMBEDDED_FILENAME, + UF=FACTURX_EMBEDDED_FILENAME, + Desc="Factur-X Invoice", + AFRelationship=Name.Data, + EF=Dictionary(F=ef_stream, UF=ef_stream), + ) + filespec_obj = pdf.make_indirect(filespec) -def _add_facturx_xmp(pdf: Any) -> None: - """Add or ensure Factur-X XMP RDF so validators recognize the embedded CII XML.""" - facturx_rdf = _facturx_rdf_description() - _ensure_metadata_stream(pdf) - if not hasattr(pdf, "Root") or not hasattr(pdf.Root, "Metadata"): - return + # Name tree for EmbeddedFiles (also consumed by pdf.attachments) try: - xmp_bytes = pdf.Root.Metadata.read_bytes() + pdf.attachments[FACTURX_EMBEDDED_FILENAME] = filespec_obj except Exception: - return - xmp_str = xmp_bytes.decode("utf-8", errors="replace") - if "fx:DocumentType" in xmp_str or "factur-x" in xmp_str.lower(): - return - marker = "" - if marker in xmp_str: - try: - insert_pos = xmp_str.rfind(marker) - new_xmp = xmp_str[:insert_pos] + facturx_rdf + "\n " + xmp_str[insert_pos:] - pdf.Root.Metadata = pdf.make_stream(new_xmp.encode("utf-8")) - except Exception: - pass + # Manual Names tree if attachments API rejects Dictionary + if "/Names" not in pdf.Root: + pdf.Root.Names = Dictionary() + names = pdf.Root.Names + if "/EmbeddedFiles" not in names: + names.EmbeddedFiles = Dictionary(Names=Array()) + ef_names = names.EmbeddedFiles + if "/Names" not in ef_names: + ef_names.Names = Array() + name_arr = ef_names.Names + # Remove existing entry for this filename + new_arr = Array() + i = 0 + while i < len(name_arr): + if str(name_arr[i]) == FACTURX_EMBEDDED_FILENAME: + i += 2 + continue + new_arr.append(name_arr[i]) + if i + 1 < len(name_arr): + new_arr.append(name_arr[i + 1]) + i += 2 + new_arr.append(FACTURX_EMBEDDED_FILENAME) + new_arr.append(filespec_obj) + ef_names.Names = new_arr + + # Catalog /AF array (required by PDF/A-3 for associated files) + try: + existing_af = pdf.Root.get("/AF") + except Exception: + existing_af = None + if existing_af is None: + pdf.Root.AF = Array([filespec_obj]) else: - try: - minimal_xmp = _FACTURX_XMP_TEMPLATE.format(rdf_description=facturx_rdf) - pdf.Root.Metadata = pdf.make_stream(minimal_xmp.encode("utf-8")) - except Exception: - pass + # Append if not already present + af_list = list(existing_af) + af_list.append(filespec_obj) + pdf.Root.AF = Array(af_list) + + return filespec_obj -def embed_zugferd_xml_in_pdf(pdf_bytes: bytes, invoice: Any, settings: Any) -> Tuple[bytes, Optional[str]]: +def embed_zugferd_xml_in_pdf( + pdf_bytes: bytes, + invoice: Any, + settings: Any, + *, + pdfa3: bool = False, +) -> Tuple[bytes, Optional[str]]: """ Embed Factur-X CII XML into the given invoice PDF bytes. - Builds seller/buyer from settings and invoice (best-effort), generates CII - XML, attaches it as factur-x.xml with AF relationship "Data", adds - Factur-X XMP RDF, and returns the new PDF bytes. + Builds seller/buyer from settings and invoice, generates CII XML, + attaches it as factur-x.xml with full AF structure and Factur-X XMP. + When pdfa3=True, also adds PDF/A-3b identification and OutputIntent + in the same pikepdf session. Returns: (new_pdf_bytes, None) on success, or (original_pdf_bytes, error_message) on failure. """ try: import pikepdf - from pikepdf import AttachedFileSpec except ImportError as e: return pdf_bytes, f"pikepdf not available: {e}" try: seller = _get_seller_party(settings) buyer = _get_buyer_party(invoice) - cii_xml, _ = build_cii_invoice_xml(invoice=invoice, seller=seller, buyer=buyer) + cii_xml, _ = build_cii_invoice_xml( + invoice=invoice, + seller=seller, + buyer=buyer, + settings=settings, + ) except Exception as e: return pdf_bytes, f"Failed to build CII XML for Factur-X: {e}" try: pdf = pikepdf.open(io.BytesIO(pdf_bytes)) cii_bytes = cii_xml.encode("utf-8") - try: - from pikepdf import Name + _attach_facturx_xml(pdf, cii_bytes) - relationship: Any = Name("/Data") - except ImportError: - relationship = "/Data" - try: - # ``relationship`` is accepted by newer pikepdf versions; the - # TypeError fallback below covers older releases. - filespec = AttachedFileSpec( # type: ignore[call-arg] - pdf, - cii_bytes, - filename=FACTURX_EMBEDDED_FILENAME, - mime_type="text/xml", - relationship=relationship, - ) - except TypeError: - with tempfile.NamedTemporaryFile(mode="wb", suffix=".xml", delete=False, prefix="facturx_") as tmp: - tmp.write(cii_bytes) - tmp_path = tmp.name + # XMP: Factur-X properties + pdfaExtension; PDF/A-3 id when requested + apply_pdfa3_metadata(pdf, include_facturx=True, pdfa3=pdfa3) + if pdfa3: try: - filespec = AttachedFileSpec.from_filepath(pdf, tmp_path, relationship="/Data") # type: ignore[call-arg] - finally: - try: - os.unlink(tmp_path) - except OSError: - pass - pdf.attachments[FACTURX_EMBEDDED_FILENAME] = filespec - _add_facturx_xmp(pdf) + apply_output_intent(pdf) + except Exception: + pass + out = io.BytesIO() + pdf_version = ("1", 7) try: - pdf.save(out, min_version=("1", 7)) + pdf.save( + out, + min_version=pdf_version, + force_version=pdf_version, + fix_metadata_version=False, + ) except TypeError: - pdf.save(out, min_version="1.7") + try: + pdf.save(out, min_version=pdf_version, fix_metadata_version=False) + except TypeError: + pdf.save(out, min_version="1.7") pdf.close() return out.getvalue(), None except Exception as e: diff --git a/browser-extension/background.js b/browser-extension/background.js index fa630fb1..7994b655 100644 --- a/browser-extension/background.js +++ b/browser-extension/background.js @@ -68,6 +68,11 @@ function clampIdleTimeoutMinutes(value) { return Math.min(480, Math.floor(n)); } +function normalizeUnansweredAction(value) { + const v = String(value || 'review').trim().toLowerCase(); + return v === 'auto_stop' ? 'auto_stop' : 'review'; +} + async function applyIdleDetectionInterval(idleTimeoutMinutes) { const minutes = clampIdleTimeoutMinutes(idleTimeoutMinutes); const seconds = Math.max(MIN_IDLE_DETECTION_SECONDS, minutes * 60); @@ -94,7 +99,10 @@ async function clearIdleGraceState() { } async function beginIdleGrace(stopAtMs) { - const { last_timer_status } = await chrome.storage.local.get('last_timer_status'); + const { last_timer_status, idle_unanswered_action } = await chrome.storage.local.get([ + 'last_timer_status', + 'idle_unanswered_action', + ]); if (!last_timer_status?.active || !last_timer_status?.timer) { return; } @@ -111,12 +119,17 @@ async function beginIdleGrace(stopAtMs) { chrome.alarms.create(IDLE_STOP_ALARM, { delayInMinutes: GRACE_MINUTES }); + const autoStop = normalizeUnansweredAction(idle_unanswered_action) === 'auto_stop'; + const message = autoStop + ? `Answer within ${GRACE_MINUTES} minutes or the timer will be stopped and the idle time kept.` + : `Answer within ${GRACE_MINUTES} minutes or the timer will be flagged for review (it keeps running).`; + try { await chrome.notifications.create(IDLE_NOTIFICATION_ID, { type: 'basic', iconUrl: 'icons/running-128.png', title: 'Still working?', - message: `Answer within ${GRACE_MINUTES} minutes or the timer will be flagged for review (it keeps running).`, + message, priority: 2, requireInteraction: true, buttons: [ @@ -209,7 +222,9 @@ async function refreshTimerStatus({ force = false } = {}) { const status = await client.getTimerStatus(); const active = Boolean(status?.active && status?.timer); const idleTimeoutMinutes = clampIdleTimeoutMinutes(status?.idle_timeout_minutes); + const idleUnansweredAction = normalizeUnansweredAction(status?.idle_unanswered_action); await applyIdleDetectionInterval(idleTimeoutMinutes); + await chrome.storage.local.set({ idle_unanswered_action: idleUnansweredAction }); if (active) { setRunningUi(status.timer); @@ -256,6 +271,7 @@ async function refreshTimerStatus({ force = false } = {}) { active, timer: status?.timer || null, idle_timeout_minutes: idleTimeoutMinutes, + idle_unanswered_action: idleUnansweredAction, error: null, force, }); @@ -303,9 +319,17 @@ chrome.alarms.onAlarm.addListener(async (alarm) => { return; } if (alarm.name === IDLE_STOP_ALARM) { - // Grace expired unanswered: keep the timer running, flag for review. + const { idle_unanswered_action, last_timer_status } = await chrome.storage.local.get([ + 'idle_unanswered_action', + 'last_timer_status', + ]); + if (normalizeUnansweredAction(idle_unanswered_action) === 'auto_stop') { + // Grace expired unanswered: stop credited to idle_grace_stop_at. + await stopTimerForIdle(); + return; + } + // review mode: keep the timer running, flag for review. await clearIdleGraceState(); - const { last_timer_status } = await chrome.storage.local.get('last_timer_status'); if (last_timer_status?.active && last_timer_status?.timer) { await notifyNeedsReview(last_timer_status.timer); } diff --git a/browser-extension/lib/api.js b/browser-extension/lib/api.js index cbf5c3d0..21052fda 100644 --- a/browser-extension/lib/api.js +++ b/browser-extension/lib/api.js @@ -24,6 +24,16 @@ function isInfoPayload(data) { return data && typeof data === 'object' && data.api_version === 'v1' && typeof data.endpoints === 'object'; } +/** Build JSON API headers including optional Bearer token (for tests and request()). */ +export function buildAuthHeaders(token, extra = {}) { + const headers = { + Accept: 'application/json', + ...extra, + }; + if (token) headers.Authorization = `Bearer ${token}`; + return headers; +} + export function classifyError(error, response, data) { if (response) { const status = response.status; @@ -96,11 +106,7 @@ export class ApiClient { async request(method, path, body = undefined) { const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), this.timeoutMs); - const headers = { - Accept: 'application/json', - }; - if (body !== undefined) headers['Content-Type'] = 'application/json'; - if (this.token) headers.Authorization = `Bearer ${this.token}`; + const headers = buildAuthHeaders(this.token, body !== undefined ? { 'Content-Type': 'application/json' } : {}); try { const response = await fetch(`${this.baseUrl}${path}`, { @@ -180,6 +186,16 @@ export class ApiClient { } return { ok: true, token }; } catch (error) { + const data = error.data; + if (error.status === 403 && data?.requires_2fa && data?.temp_token) { + return { + ok: false, + code: 'REQUIRES_2FA', + requires_2fa: true, + temp_token: String(data.temp_token), + message: data.error || 'Two-factor authentication required.', + }; + } return { ok: false, code: error.code || 'NETWORK', @@ -189,6 +205,25 @@ export class ApiClient { } } + static async verifyLogin2fa(baseUrl, tempToken, code) { + const normalized = normalizeServerUrl(baseUrl); + const client = new ApiClient(normalized); + try { + const data = await client.request('POST', '/api/v1/auth/2fa/verify', { + temp_token: tempToken, + code, + }); + const token = data?.token; + if (typeof token !== 'string' || !token.startsWith('tt_')) { + return { ok: false, code: 'INVALID_RESPONSE', message: 'Verification did not return a valid API token.' }; + } + return { ok: true, token }; + } catch (error) { + const msg = error.data?.error || error.message || 'Verification failed.'; + return { ok: false, code: error.code || 'UNAUTHORIZED', message: msg }; + } + } + async validateSession() { try { const data = await this.request('GET', '/api/v1/users/me'); diff --git a/browser-extension/manifest.json b/browser-extension/manifest.json index 444e9ea8..01c72ebe 100644 --- a/browser-extension/manifest.json +++ b/browser-extension/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "TimeTracker Timer", - "version": "5.13.5", + "version": "5.17.0", "description": "Start and stop TimeTracker timers from your browser toolbar.", "permissions": [ "storage", diff --git a/browser-extension/package.json b/browser-extension/package.json index 7bdabf22..d05d76ba 100644 --- a/browser-extension/package.json +++ b/browser-extension/package.json @@ -1,10 +1,11 @@ { "name": "timetracker-browser-extension", "private": true, - "version": "5.13.5", + "version": "5.17.0", "description": "TimeTracker Chromium extension (Manifest V3)", "type": "module", "scripts": { + "test": "node --test test/*.test.js", "zip": "node build/zip.js" } } diff --git a/browser-extension/popup.css b/browser-extension/popup.css index 8a2e36f2..ef700477 100644 --- a/browser-extension/popup.css +++ b/browser-extension/popup.css @@ -10,6 +10,46 @@ --danger-hover: #b91c1c; --radius: 8px; --font: "Segoe UI", system-ui, -apple-system, sans-serif; + --field-bg: #fff; + --btn-secondary-bg: #fff; + --btn-secondary-hover: #f1f5f9; + --error-bg: #fef2f2; + --error-border: #fecaca; + --success-bg: #f0fdf4; + --success-border: #bbf7d0; + --success-text: #166534; + --paused-badge-bg: #fef3c7; + --paused-badge-border: #fcd34d; + --paused-badge-text: #92400e; + --picker-hover: #f0fdfa; + --picker-selected: #ccfbf1; + --shadow: rgba(15, 23, 42, 0.12); +} + +@media (prefers-color-scheme: dark) { + :root { + --bg: #0f172a; + --surface: #1e293b; + --text: #f1f5f9; + --muted: #94a3b8; + --border: #334155; + --accent: #2dd4bf; + --accent-hover: #5eead4; + --field-bg: #0f172a; + --btn-secondary-bg: #1e293b; + --btn-secondary-hover: #334155; + --error-bg: #450a0a; + --error-border: #7f1d1d; + --success-bg: #052e16; + --success-border: #166534; + --success-text: #86efac; + --paused-badge-bg: #422006; + --paused-badge-border: #854d0e; + --paused-badge-text: #fcd34d; + --picker-hover: #134e4a; + --picker-selected: #115e59; + --shadow: rgba(0, 0, 0, 0.45); + } } * { @@ -75,8 +115,8 @@ body { .error { color: var(--danger); - background: #fef2f2; - border: 1px solid #fecaca; + background: var(--error-bg); + border: 1px solid var(--error-border); border-radius: var(--radius); padding: 8px 10px; margin-bottom: 10px; @@ -84,9 +124,9 @@ body { } .success { - color: #166534; - background: #f0fdf4; - border: 1px solid #bbf7d0; + color: var(--success-text); + background: var(--success-bg); + border: 1px solid var(--success-border); border-radius: var(--radius); padding: 8px 10px; margin-bottom: 10px; @@ -119,9 +159,9 @@ body { font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; - color: #92400e; - background: #fef3c7; - border: 1px solid #fcd34d; + color: var(--paused-badge-text); + background: var(--paused-badge-bg); + border: 1px solid var(--paused-badge-border); } .running-actions { @@ -168,7 +208,7 @@ body { padding: 7px 9px; font: inherit; color: var(--text); - background: #fff; + background: var(--field-bg); } .field input:focus, @@ -225,13 +265,13 @@ body { } .btn-secondary { - background: #fff; + background: var(--btn-secondary-bg); color: var(--text); border: 1px solid var(--border); } .btn-secondary:hover:not(:disabled) { - background: #f1f5f9; + background: var(--btn-secondary-hover); } .btn-block { @@ -256,7 +296,7 @@ body { .tabs button { flex: 1; border: 1px solid var(--border); - background: #fff; + background: var(--btn-secondary-bg); border-radius: 6px; padding: 6px; font: inherit; @@ -269,7 +309,7 @@ body { border-color: var(--accent); color: var(--accent); font-weight: 600; - background: color-mix(in srgb, var(--accent) 8%, white); + background: color-mix(in srgb, var(--accent) 12%, var(--surface)); } .hidden { @@ -334,7 +374,7 @@ hr.sep { border-radius: 6px; padding: 7px 9px; font: inherit; - background: #fff; + background: var(--field-bg); color: var(--text); } @@ -353,10 +393,10 @@ hr.sep { max-height: 180px; overflow: auto; list-style: none; - background: #fff; + background: var(--surface); border: 1px solid var(--border); border-radius: 6px; - box-shadow: 0 8px 20px rgba(15, 23, 42, 0.12); + box-shadow: 0 8px 20px var(--shadow); } .tt-picker-list.hidden { @@ -373,11 +413,11 @@ hr.sep { .tt-picker-option:hover, .tt-picker-create:hover { - background: #f0fdfa; + background: var(--picker-hover); } .tt-picker-option.is-selected { - background: #ccfbf1; + background: var(--picker-selected); font-weight: 600; } diff --git a/browser-extension/test/api.test.js b/browser-extension/test/api.test.js new file mode 100644 index 00000000..9a1a90ae --- /dev/null +++ b/browser-extension/test/api.test.js @@ -0,0 +1,65 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { buildAuthHeaders, ApiClient, normalizeServerUrl } from '../lib/api.js'; + +test('buildAuthHeaders adds Bearer token and Accept', () => { + const headers = buildAuthHeaders('tt_secret', { 'Content-Type': 'application/json' }); + assert.equal(headers.Authorization, 'Bearer tt_secret'); + assert.equal(headers.Accept, 'application/json'); + assert.equal(headers['Content-Type'], 'application/json'); +}); + +test('buildAuthHeaders omits Authorization when token is empty', () => { + const headers = buildAuthHeaders(null); + assert.equal(headers.Authorization, undefined); + assert.equal(headers.Accept, 'application/json'); +}); + +test('normalizeServerUrl adds https scheme', () => { + assert.equal(normalizeServerUrl('example.com'), 'https://example.com'); +}); + +test('ApiClient.startTimer posts expected body', async () => { + const calls = []; + globalThis.fetch = async (url, init) => { + calls.push({ url, init }); + return { + ok: true, + text: async () => JSON.stringify({ timer: { id: 1, start_time: '2026-01-01T00:00:00Z' } }), + }; + }; + + const client = new ApiClient('https://tracker.test', 'tt_demo'); + await client.startTimer({ projectId: 42, taskId: 7, notes: 'focus' }); + + assert.equal(calls.length, 1); + assert.equal(calls[0].url, 'https://tracker.test/api/v1/timer/start'); + assert.equal(calls[0].init.method, 'POST'); + assert.equal(calls[0].init.headers.Authorization, 'Bearer tt_demo'); + const body = JSON.parse(calls[0].init.body); + assert.equal(body.project_id, 42); + assert.equal(body.task_id, 7); + assert.equal(body.notes, 'focus'); + + delete globalThis.fetch; +}); + +test('ApiClient.stopTimer posts stop_time when provided', async () => { + const calls = []; + globalThis.fetch = async (url, init) => { + calls.push({ url, init }); + return { + ok: true, + text: async () => JSON.stringify({ time_entry: { id: 99 } }), + }; + }; + + const client = new ApiClient('https://tracker.test/', 'tt_demo'); + await client.stopTimer({ stopTime: '2026-01-01T12:00:00Z' }); + + assert.equal(calls[0].url, 'https://tracker.test/api/v1/timer/stop'); + const body = JSON.parse(calls[0].init.body); + assert.equal(body.stop_time, '2026-01-01T12:00:00Z'); + + delete globalThis.fetch; +}); diff --git a/desktop/README.md b/desktop/README.md index c4d09706..fd2b57bc 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -69,7 +69,7 @@ For detailed instructions, see [Windows Code Signing Guide](../../docs/WINDOWS_C ### Renderer (React + Vite) -The primary UI lives in [`src/renderer-react/`](src/renderer-react/) and builds to [`dist-renderer/`](dist-renderer/) via Vite (`npm run build:renderer`). Electron loads `dist-renderer/index.html`, with the legacy [`src/renderer/`](src/renderer/) bundle kept only as a fallback. +The primary UI lives in [`src/renderer-react/`](src/renderer-react/) and builds to [`dist-renderer/`](dist-renderer/) via Vite (`npm run build:renderer`). Electron loads `dist-renderer/index.html` only (run `build:renderer` before `start`). Legacy [`src/renderer/js/`](src/renderer/) modules remain for unit tests; see [`src/renderer/README.md`](src/renderer/README.md). Splash screen: [`src/main/splash/`](src/main/splash/). ### Run in Development Mode diff --git a/desktop/package.json b/desktop/package.json index b33a7386..92410b58 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,6 +1,6 @@ { "name": "timetracker-desktop", - "version": "5.13.5", + "version": "5.17.0", "description": "TimeTracker desktop app for Windows, Linux, and macOS", "main": "src/main/main.js", "scripts": { @@ -54,6 +54,7 @@ }, "files": [ "src/**/*", + "!src/renderer/**", "assets/**/*", "dist-renderer/**/*", "package.json" diff --git a/desktop/src/main/idle.js b/desktop/src/main/idle.js index 75471b1d..02b4c0b7 100644 --- a/desktop/src/main/idle.js +++ b/desktop/src/main/idle.js @@ -4,9 +4,9 @@ * Polls powerMonitor.getSystemIdleTime() every 60s. When an active timer is * running and the OS idle time exceeds idle_timeout_minutes, shows a * "Still working?" notification and notifies the renderer. If the 5-minute - * grace window expires unanswered, the timer KEEPS RUNNING and is flagged - * for review (server sets idle_flagged_at) — recorded time is never - * silently truncated. + * grace window expires unanswered: + * - review (default): the timer KEEPS RUNNING and is flagged for review + * - auto_stop: stop credited to last_active + idle_timeout (Issue #722) */ const { powerMonitor, Notification, net } = require('electron'); @@ -21,12 +21,18 @@ function clampIdleTimeoutMinutes(value) { return Math.min(480, Math.floor(n)); } +function normalizeUnansweredAction(value) { + const v = String(value || 'review').trim().toLowerCase(); + return v === 'auto_stop' ? 'auto_stop' : 'review'; +} + function createIdleMonitor({ store, sendToMainWindow, focusMainWindow }) { let checkInterval = null; let graceTimer = null; let promptShown = false; let timerActive = false; let idleTimeoutMinutes = DEFAULT_IDLE_TIMEOUT_MINUTES; + let unansweredAction = 'review'; let stopAtMs = null; let needsReviewNotifiedFor = null; @@ -91,9 +97,13 @@ function createIdleMonitor({ store, sendToMainWindow, focusMainWindow }) { function showStillWorkingNotification() { try { if (!Notification.isSupported()) return; + const autoStop = unansweredAction === 'auto_stop'; + const body = autoStop + ? 'Answer within 5 minutes or the timer will be stopped and the idle time kept.' + : 'Answer within 5 minutes or the timer will be flagged for review (it keeps running).'; const notification = new Notification({ title: 'Still working?', - body: 'Answer within 5 minutes or the timer will be flagged for review (it keeps running).', + body, urgency: 'critical', }); notification.on('click', () => { @@ -136,16 +146,25 @@ function createIdleMonitor({ store, sendToMainWindow, focusMainWindow }) { function beginGrace() { if (promptShown || !timerActive) return; promptShown = true; - stopAtMs = Date.now() - idleTimeoutMinutes * 60 * 1000; + // OS idle already equals the threshold; credit that window (≈ now). + stopAtMs = Date.now(); showStillWorkingNotification(); sendToMainWindow('idle:prompt', { stopAtMs, graceMs: GRACE_MS, idleTimeoutMinutes, + idleUnansweredAction: unansweredAction, }); focusMainWindow(); graceTimer = setTimeout(() => { - flagNeedsReview(); + if (unansweredAction === 'auto_stop') { + const at = stopAtMs || Date.now(); + clearGrace(); + timerActive = false; + stopTimerAt(at).catch(() => {}); + } else { + flagNeedsReview(); + } }, GRACE_MS); } @@ -156,7 +175,7 @@ function createIdleMonitor({ store, sendToMainWindow, focusMainWindow }) { } async function confirmStop() { - const at = stopAtMs || Date.now() - idleTimeoutMinutes * 60 * 1000; + const at = stopAtMs || Date.now(); clearGrace(); timerActive = false; await stopTimerAt(at); @@ -168,6 +187,9 @@ function createIdleMonitor({ store, sendToMainWindow, focusMainWindow }) { if (data && data.idle_timeout_minutes != null) { idleTimeoutMinutes = clampIdleTimeoutMinutes(data.idle_timeout_minutes); } + if (data && data.idle_unanswered_action != null) { + unansweredAction = normalizeUnansweredAction(data.idle_unanswered_action); + } if (!active) { clearGrace(); needsReviewNotifiedFor = null; diff --git a/desktop/src/renderer/css/splash.css b/desktop/src/main/splash/splash.css similarity index 98% rename from desktop/src/renderer/css/splash.css rename to desktop/src/main/splash/splash.css index d4563e0b..ca1c11ab 100644 --- a/desktop/src/renderer/css/splash.css +++ b/desktop/src/main/splash/splash.css @@ -95,7 +95,6 @@ body { font-weight: 400; } -/* Fade out animation */ .splash-container.fade-out { animation: fadeOut 0.5s ease-out forwards; } diff --git a/desktop/src/renderer/splash.html b/desktop/src/main/splash/splash.html similarity index 86% rename from desktop/src/renderer/splash.html rename to desktop/src/main/splash/splash.html index 50149406..7dc3f4c3 100644 --- a/desktop/src/renderer/splash.html +++ b/desktop/src/main/splash/splash.html @@ -4,13 +4,13 @@ TimeTracker - +
- +

TimeTracker

@@ -25,7 +25,6 @@

TimeTracker

- - - diff --git a/desktop/src/renderer/js/api/client.js b/desktop/src/renderer/js/api/client.js index 87c29249..a94f0f3b 100644 --- a/desktop/src/renderer/js/api/client.js +++ b/desktop/src/renderer/js/api/client.js @@ -284,11 +284,55 @@ class ApiClient { } return { ok: true, token }; } catch (error) { + const data = error?.response?.data; + if (error?.response?.status === 403 && data?.requires_2fa && data?.temp_token) { + return { + ok: false, + code: 'REQUIRES_2FA', + requires_2fa: true, + temp_token: String(data.temp_token), + message: data.error || 'Two-factor authentication required.', + }; + } const { code, message } = classifyAxiosError(error); return { ok: false, code, message }; } } + static async verifyLogin2fa(baseUrl, tempToken, code) { + const normalized = ApiClient.normalizeBaseUrl(baseUrl); + const plain = axios.create({ + baseURL: normalized, + timeout: 15000, + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + }); + try { + const response = await plain.post('/api/v1/auth/2fa/verify', { + temp_token: tempToken, + code, + }); + const token = response.data && response.data.token; + if (response.status !== 200 || typeof token !== 'string' || !token.startsWith('tt_')) { + return { + ok: false, + code: 'INVALID_RESPONSE', + message: 'Verification did not return a valid app token.', + }; + } + return { ok: true, token }; + } catch (error) { + const data = error?.response?.data; + if (data?.error) { + return { ok: false, code: 'UNAUTHORIZED', message: String(data.error) }; + } + const { code: errCode, message } = classifyAxiosError(error); + return { ok: false, code: errCode, message }; + } + } + async setAuthToken(token) { await storeSet('api_token', token); } diff --git a/desktop/src/renderer/js/app.js b/desktop/src/renderer/js/app.js deleted file mode 100644 index 7b35e85e..00000000 --- a/desktop/src/renderer/js/app.js +++ /dev/null @@ -1,2240 +0,0 @@ -// Main application logic -// First-run depends on ../shared/config.js exposing window.config before this bundle (see index.html). -require('./utils/helpers'); -const ApiClient = require('./api/client'); -const { createConnectionManager } = require('./connection/connection_manager'); -const { CONNECTION_STATE } = require('./connection/connection_state'); -const { startTimerWithReconcile, stopTimerWithReconcile } = require('./connection/timer_operations'); -const { classifyAxiosError } = require('./api/client'); -const { showError, showSuccess } = require('./ui/notifications'); -const state = require('./state'); - -const { - formatDuration, - formatDurationLong, - formatDateTime, - isValidUrl, - normalizeServerUrlInput, -} = window.Helpers || {}; - -const { storeGet, storeSet, storeDelete, storeClear } = window.config || {}; - -/** @type {ReturnType | null} */ -let connectionManager = null; - -/** @type {'welcome'|'server'|'token'} */ -let loginWizardStep = 'welcome'; - -function truncateUrl(url, maxLen) { - const s = String(url || ''); - const m = maxLen || 42; - if (s.length <= m) return s; - return s.slice(0, m - 1) + '…'; -} - -// Initialize app -async function initApp() { - if ( - typeof storeGet !== 'function' || - typeof storeSet !== 'function' || - typeof storeDelete !== 'function' || - typeof storeClear !== 'function' - ) { - throw new Error('Desktop configuration bridge is unavailable.'); - } - - connectionManager = createConnectionManager({ - storeGet, - storeSet, - storeDelete, - storeClear, - onCacheClear: () => { - if (typeof state.clearViewCaches === 'function') state.clearViewCaches(); - }, - }); - - connectionManager.subscribe(() => { - state.apiClient = connectionManager.getClient(); - updateConnectionFromManager(); - }); - - setupEventListeners(); - setupTrayListeners(); - - const boot = await connectionManager.bootstrapFromStore(); - - if (boot.ok) { - state.authFailureStreak = 0; - showMainScreen(); - await loadInitialData(); - } else if (boot.reason === 'offline' && boot.hadCredentials) { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || '', - openTokenStep: true, - bannerMessage: 'You appear to be offline. Reconnect to the network, then use Log in.', - }); - } else if (boot.reason === 'session' && boot.session) { - showLoginScreen({ prefillServerUrl: connectionManager.getSnapshot().serverUrl || '', sessionError: boot.session }); - } else if (boot.reason === 'token_server_mismatch') { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || '', - bannerMessage: connectionManager.getSnapshot().lastError || 'Please sign in again.', - }); - } else if (boot.reason === 'no_server') { - showLoginScreen({ prefillServerUrl: '', startAtServer: true }); - } else if (boot.reason === 'no_token') { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || '', - openTokenStep: true, - }); - } else if (boot.reason === 'bootstrap_timeout') { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || '', - openTokenStep: true, - bannerMessage: boot.message || 'Server did not respond in time. Check the URL or network, then try signing in again.', - }); - } else if (boot.reason === 'session_unreachable') { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || '', - openTokenStep: true, - bannerMessage: boot.message || 'Server is not reachable. Check the URL or network, then try signing in again.', - }); - } else { - showLoginScreen({ prefillServerUrl: connectionManager.getSnapshot().serverUrl || '' }); - } - - startConnectionCheck(); - - window.addEventListener('online', async () => { - if (!connectionManager.getClient()) { - const retry = await connectionManager.bootstrapFromStore(); - if (retry.ok && document.getElementById('main-screen')?.classList.contains('active')) { - state.authFailureStreak = 0; - await loadInitialData(); - } - } - await checkConnection(); - }); -} - -async function loadInitialData() { - try { - await loadCurrentUserProfile(); - } catch (err) { - console.error('Initial profile load failed:', err); - } - try { - await loadDashboard(); - } catch (err) { - console.error('Initial dashboard load failed:', err); - } -} - -function setupTrayListeners() { - // Listen for tray timer actions - if (window.electronAPI && window.electronAPI.onTrayAction) { - window.electronAPI.onTrayAction((action) => { - if (action === 'start-timer' && !state.isTimerRunning) { - // Tray wants to start timer - show the start dialog - handleStartTimer(); - } else if (action === 'stop-timer' && state.isTimerRunning) { - // Tray wants to stop timer - handleStopTimer(); - } - }); - } -} - -function startConnectionCheck() { - // Check connection every 30 seconds - state.connectionCheckInterval = setInterval(async () => { - await checkConnection(); - }, 30000); - - // Initial check - checkConnection(); -} - -async function checkConnection() { - if (typeof navigator !== 'undefined' && navigator.onLine && !connectionManager.getClient()) { - const snap = connectionManager.getSnapshot(); - if (snap.serverUrl && (await storeGet('api_token'))) { - const boot = await connectionManager.bootstrapFromStore(); - if (boot.ok && document.getElementById('main-screen')?.classList.contains('active')) { - state.authFailureStreak = 0; - await loadCurrentUserProfile(); - } - } - } - - if (!state.apiClient) { - updateConnectionFromManager(); - return; - } - - const session = await connectionManager.validateSessionRefresh(); - if (session.ok) { - state.authFailureStreak = 0; - updateConnectionFromManager(); - return; - } - - updateConnectionFromManager(); - if (session.code === 'UNAUTHORIZED') { - state.authFailureStreak = (state.authFailureStreak || 0) + 1; - if (state.authFailureStreak >= 2 && document.getElementById('main-screen')?.classList.contains('active')) { - await forceRelogin(session.message || 'Your session is no longer valid. Please sign in again.'); - } - } else { - state.authFailureStreak = 0; - } -} - -async function loadCurrentUserProfile() { - if (!state.apiClient) return; - try { - const me = await state.apiClient.getUsersMe(); - const user = me.user || {}; - const role = String(user.role || '').toLowerCase(); - const roleCanApprove = ['admin', 'owner', 'manager', 'approver'].includes(role); - state.currentUserProfile = { - id: user.id, - is_admin: Boolean(user.is_admin), - can_approve: Boolean(user.is_admin) || roleCanApprove, - }; - } catch (err) { - console.error('loadCurrentUserProfile failed:', err); - if (err && err.stack) console.error(err.stack); - state.currentUserProfile = { id: null, is_admin: false, can_approve: false }; - const { message } = classifyAxiosError(err); - showError(message || 'Could not load your user profile. Some actions may be unavailable until the connection improves.'); - } -} - -function updateConnectionFromManager() { - if (!connectionManager) return; - const snap = connectionManager.getSnapshot(); - const statusEl = document.getElementById('connection-status'); - const urlEl = document.getElementById('connection-url-label'); - const timeEl = document.getElementById('connection-last-ok'); - if (!statusEl) return; - - let cssSuffix = 'disconnected'; - let title = ''; - let label = 'Connection status: '; - - switch (snap.state) { - case CONNECTION_STATE.CONNECTED: - cssSuffix = 'connected'; - title = snap.serverUrl || 'Connected'; - label += 'Connected'; - statusEl.textContent = '●'; - break; - case CONNECTION_STATE.OFFLINE: - cssSuffix = 'offline'; - title = snap.lastError || 'Offline'; - label += 'Offline'; - statusEl.textContent = '●'; - break; - case CONNECTION_STATE.CONNECTING: - cssSuffix = 'connecting'; - title = snap.lastError || 'Connecting…'; - label += 'Connecting'; - statusEl.textContent = '◐'; - break; - case CONNECTION_STATE.ERROR: - cssSuffix = 'error'; - title = snap.lastError || 'Connection error'; - label += 'Error'; - statusEl.textContent = '●'; - break; - default: - title = snap.serverUrl || 'Not configured'; - label += 'Not configured'; - statusEl.textContent = '○'; - } - - statusEl.className = 'connection-status connection-' + cssSuffix; - statusEl.title = title; - statusEl.setAttribute('aria-label', label); - - if (urlEl) { - urlEl.textContent = snap.serverUrl ? truncateUrl(snap.serverUrl) : '—'; - urlEl.title = snap.serverUrl || ''; - } - if (timeEl) { - timeEl.textContent = snap.lastConnectedAt ? formatDateTime(new Date(snap.lastConnectedAt)) : '—'; - } -} - -async function forceRelogin(message) { - state.authFailureStreak = 0; - const url = await storeGet('server_url'); - if (state.isTimerRunning) { - state.isTimerRunning = false; - stopTimerPolling(); - } - await connectionManager.logoutKeepServer(); - showLoginScreen({ - prefillServerUrl: url ? ApiClient.normalizeBaseUrl(String(url)) : '', - openTokenStep: true, - bannerMessage: message, - }); -} - -function showWizardWelcomeStep() { - loginWizardStep = 'welcome'; - const w = document.getElementById('wizard-step-welcome'); - const s1 = document.getElementById('wizard-step-server'); - const s2 = document.getElementById('wizard-step-token'); - if (w) w.style.display = ''; - if (s1) s1.style.display = 'none'; - if (s2) s2.style.display = 'none'; -} - -function showWizardServerStep() { - loginWizardStep = 'server'; - const w = document.getElementById('wizard-step-welcome'); - const s1 = document.getElementById('wizard-step-server'); - const s2 = document.getElementById('wizard-step-token'); - if (w) w.style.display = 'none'; - if (s1) s1.style.display = ''; - if (s2) s2.style.display = 'none'; -} - -function showWizardTokenStep() { - loginWizardStep = 'token'; - const w = document.getElementById('wizard-step-welcome'); - const s1 = document.getElementById('wizard-step-server'); - const s2 = document.getElementById('wizard-step-token'); - if (w) w.style.display = 'none'; - if (s1) s1.style.display = 'none'; - if (s2) s2.style.display = ''; -} - -function resetLoginWizard() { - showWizardWelcomeStep(); - const contServer = document.getElementById('login-wizard-continue-server'); - if (contServer) contServer.disabled = true; - const testBtn = document.getElementById('login-test-server-btn'); - if (testBtn) testBtn.disabled = false; - clearLoginError(); -} - -function clearLoginError() { - showLoginError(''); -} - -function setupEventListeners() { - // Login form - const loginForm = document.getElementById('login-form'); - if (loginForm) { - loginForm.addEventListener('submit', handleLogin); - } - const loginTestServerBtn = document.getElementById('login-test-server-btn'); - const loginWizardContinue = document.getElementById('login-wizard-continue'); - const loginWizardContinueServer = document.getElementById('login-wizard-continue-server'); - const loginWizardBack = document.getElementById('login-wizard-back'); - if (loginTestServerBtn) loginTestServerBtn.addEventListener('click', handleLoginTestServer); - if (loginWizardContinue) loginWizardContinue.addEventListener('click', handleLoginWizardContinue); - if (loginWizardContinueServer) loginWizardContinueServer.addEventListener('click', handleLoginWizardContinue); - if (loginWizardBack) loginWizardBack.addEventListener('click', handleLoginWizardBack); - - // Navigation - document.querySelectorAll('.nav-btn').forEach(btn => { - btn.addEventListener('click', (e) => { - const view = e.target.dataset.view; - switchView(view); - }); - }); - - // Window controls - const minimizeBtn = document.getElementById('minimize-btn'); - const maximizeBtn = document.getElementById('maximize-btn'); - const closeBtn = document.getElementById('close-btn'); - - if (minimizeBtn) minimizeBtn.addEventListener('click', () => window.electronAPI?.minimizeWindow()); - if (maximizeBtn) maximizeBtn.addEventListener('click', () => window.electronAPI?.maximizeWindow()); - if (closeBtn) closeBtn.addEventListener('click', () => window.electronAPI?.closeWindow()); - - // Timer controls - const startTimerBtn = document.getElementById('start-timer-btn'); - const stopTimerBtn = document.getElementById('stop-timer-btn'); - - if (startTimerBtn) startTimerBtn.addEventListener('click', handleStartTimer); - if (stopTimerBtn) stopTimerBtn.addEventListener('click', handleStopTimer); - - // Logout - const logoutBtn = document.getElementById('logout-btn'); - if (logoutBtn) logoutBtn.addEventListener('click', handleLogout); - - // Settings - const saveSettingsBtn = document.getElementById('save-settings-btn'); - const testConnectionBtn = document.getElementById('test-connection-btn'); - const autoSyncInput = document.getElementById('auto-sync'); - if (saveSettingsBtn) saveSettingsBtn.addEventListener('click', handleSaveSettings); - if (testConnectionBtn) testConnectionBtn.addEventListener('click', handleTestConnection); - const resetConfigBtn = document.getElementById('reset-configuration-btn'); - if (resetConfigBtn) resetConfigBtn.addEventListener('click', handleResetConfiguration); - if (autoSyncInput) { - autoSyncInput.addEventListener('change', () => updateSyncIntervalState()); - } - - // Time entries - const addEntryBtn = document.getElementById('add-entry-btn'); - const filterEntriesBtn = document.getElementById('filter-entries-btn'); - const applyFilterBtn = document.getElementById('apply-filter-btn'); - const clearFilterBtn = document.getElementById('clear-filter-btn'); - const addExpenseBtn = document.getElementById('add-expense-btn'); - const refreshPeriodsBtn = document.getElementById('refresh-periods-btn'); - const addInvoiceBtn = document.getElementById('add-invoice-btn'); - const addTimeoffBtn = document.getElementById('add-timeoff-btn'); - const invoiceSearchInput = document.getElementById('invoice-search'); - const expenseSearchInput = document.getElementById('expense-search'); - const timeoffSearchInput = document.getElementById('timeoff-search'); - const invoicePrevPageBtn = document.getElementById('invoice-prev-page-btn'); - const invoiceNextPageBtn = document.getElementById('invoice-next-page-btn'); - const expensePrevPageBtn = document.getElementById('expense-prev-page-btn'); - const expenseNextPageBtn = document.getElementById('expense-next-page-btn'); - - if (addEntryBtn) addEntryBtn.addEventListener('click', () => showTimeEntryForm()); - if (filterEntriesBtn) filterEntriesBtn.addEventListener('click', toggleFilters); - if (applyFilterBtn) applyFilterBtn.addEventListener('click', applyFilters); - if (clearFilterBtn) clearFilterBtn.addEventListener('click', clearFilters); - if (addExpenseBtn) addExpenseBtn.addEventListener('click', () => showCreateExpenseDialog()); - if (refreshPeriodsBtn) refreshPeriodsBtn.addEventListener('click', () => loadWorkforce()); - if (addInvoiceBtn) addInvoiceBtn.addEventListener('click', () => showCreateInvoiceDialog()); - if (addTimeoffBtn) addTimeoffBtn.addEventListener('click', () => showCreateTimeOffDialog()); - if (invoiceSearchInput) { - invoiceSearchInput.addEventListener('input', (e) => { - state.viewFilters.invoiceQuery = String(e.target.value || '').trim().toLowerCase(); - renderInvoices(); - }); - } - if (expenseSearchInput) { - expenseSearchInput.addEventListener('input', (e) => { - state.viewFilters.expenseQuery = String(e.target.value || '').trim().toLowerCase(); - renderExpenses(); - }); - } - if (timeoffSearchInput) { - timeoffSearchInput.addEventListener('input', (e) => { - state.viewFilters.timeoffQuery = String(e.target.value || '').trim().toLowerCase(); - renderTimeOffRequests(); - }); - } - if (invoicePrevPageBtn) invoicePrevPageBtn.addEventListener('click', () => changeInvoicePage(-1)); - if (invoiceNextPageBtn) invoiceNextPageBtn.addEventListener('click', () => changeInvoicePage(1)); - if (expensePrevPageBtn) expensePrevPageBtn.addEventListener('click', () => changeExpensePage(-1)); - if (expenseNextPageBtn) expenseNextPageBtn.addEventListener('click', () => changeExpensePage(1)); -} - -async function handleLoginTestServer() { - clearLoginError(); - const raw = document.getElementById('server-url')?.value.trim() || ''; - const normalizedInput = normalizeServerUrlInput(raw); - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showLoginError('Enter a valid server URL (e.g. https://your-server.com or http://192.168.1.10:5000)'); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - const testBtn = document.getElementById('login-test-server-btn'); - const contServer = document.getElementById('login-wizard-continue-server'); - if (testBtn) testBtn.disabled = true; - if (contServer) contServer.disabled = true; - const pub = await connectionManager.testServer(serverUrl); - if (testBtn) testBtn.disabled = false; - if (contServer) contServer.disabled = true; - if (!pub.ok) { - showLoginError(pub.message); - return; - } - const ver = pub.app_version ? ` (server version ${pub.app_version})` : ''; - showSuccess(`TimeTracker server detected${ver}. Continue to sign in.`); - if (contServer) contServer.disabled = false; -} - -async function handleLoginWizardContinue() { - clearLoginError(); - if (loginWizardStep === 'welcome') { - showWizardServerStep(); - return; - } - - const raw = document.getElementById('server-url')?.value.trim() || ''; - const normalizedInput = normalizeServerUrlInput(raw); - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showLoginError('Enter a valid server URL'); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - const contServer = document.getElementById('login-wizard-continue-server'); - if (contServer) contServer.disabled = true; - const pub = await connectionManager.testServer(serverUrl); - if (!pub.ok) { - if (contServer) contServer.disabled = true; - showLoginError(pub.message); - return; - } - if (contServer) contServer.disabled = false; - showWizardTokenStep(); -} - -function handleLoginWizardBack() { - clearLoginError(); - if (loginWizardStep === 'token') { - showWizardServerStep(); - return; - } - if (loginWizardStep === 'server') { - showWizardWelcomeStep(); - return; - } - showWizardWelcomeStep(); -} - -async function handleLogin(e) { - e.preventDefault(); - - const raw = document.getElementById('server-url')?.value.trim() || ''; - const normalizedInput = normalizeServerUrlInput(raw); - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showLoginError('Please enter a valid server URL'); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - - const username = document.getElementById('login-username')?.value.trim() || ''; - const password = document.getElementById('login-password')?.value || ''; - if (!username || !password) { - showLoginError('Please enter your username and password'); - return; - } - - const result = await connectionManager.login(serverUrl, username, password); - - if (result.ok) { - state.authFailureStreak = 0; - showMainScreen(); - await loadInitialData(); - } else { - const msg = result.session?.message || result.message || 'Login failed'; - showLoginError(msg); - if (result.step === 'auth' && (result.session?.code === 'UNAUTHORIZED' || result.session?.code === 'FORBIDDEN')) { - const contServer = document.getElementById('login-wizard-continue-server'); - if (contServer) contServer.disabled = false; - showWizardTokenStep(); - } else if (result.step === 'server') { - showWizardServerStep(); - } else { - showWizardServerStep(); - } - } -} - -function showLoginError(message) { - const errorDiv = document.getElementById('login-error'); - if (!errorDiv) return; - errorDiv.textContent = message || ''; - if (message) { - errorDiv.classList.add('show'); - } else { - errorDiv.classList.remove('show'); - } -} - -function showLoginScreen(options = {}) { - document.getElementById('loading-screen').classList.remove('active'); - document.getElementById('login-screen').classList.add('active'); - document.getElementById('main-screen').classList.remove('active'); - state.authFailureStreak = 0; - - const su = document.getElementById('server-url'); - if (su && options.prefillServerUrl !== undefined && options.prefillServerUrl !== null) { - su.value = String(options.prefillServerUrl || ''); - } - - if (options.openTokenStep) { - const contServer = document.getElementById('login-wizard-continue-server'); - if (contServer) contServer.disabled = false; - showWizardTokenStep(); - if (options.bannerMessage) { - showLoginError(options.bannerMessage); - } else { - clearLoginError(); - } - return; - } - - if (options.startAtServer) { - showWizardServerStep(); - if (options.bannerMessage) { - showLoginError(options.bannerMessage); - } else { - clearLoginError(); - } - return; - } - - if (options.bannerMessage && !options.sessionError) { - resetLoginWizard(); - showLoginError(options.bannerMessage); - return; - } - - if (options.sessionError) { - const se = options.sessionError; - if (se.code === 'UNAUTHORIZED' || se.code === 'FORBIDDEN') { - const contServer = document.getElementById('login-wizard-continue-server'); - if (contServer) contServer.disabled = false; - showWizardTokenStep(); - showLoginError(se.message || 'Authentication failed'); - return; - } - resetLoginWizard(); - showLoginError(se.message || 'Could not reach the server'); - return; - } - - resetLoginWizard(); -} - -function showMainScreen() { - document.getElementById('loading-screen').classList.remove('active'); - document.getElementById('login-screen').classList.remove('active'); - document.getElementById('main-screen').classList.add('active'); -} - -function switchView(view) { - // Update navigation - document.querySelectorAll('.nav-btn').forEach(btn => { - btn.classList.remove('active'); - }); - document.querySelector(`[data-view="${view}"]`).classList.add('active'); - - // Update views - document.querySelectorAll('.view').forEach(v => { - v.classList.remove('active'); - }); - document.getElementById(`${view}-view`).classList.add('active'); - - state.currentView = view; - - // Load view data - if (view === 'dashboard') { - loadDashboard(); - } else if (view === 'projects') { - loadProjects(); - } else if (view === 'entries') { - loadTimeEntries(); - loadProjectsForFilter(); - } else if (view === 'invoices') { - loadInvoices(); - } else if (view === 'expenses') { - loadExpenses(); - } else if (view === 'workforce') { - loadWorkforce(); - } else if (view === 'settings') { - loadSettings(); - } -} - -async function loadDashboard() { - if (!state.apiClient) return; - - try { - // Get timer status - const timerResponse = await state.apiClient.getTimerStatus(); - if (timerResponse.data.active) { - state.isTimerRunning = true; - updateTimerDisplay(timerResponse.data.timer); - startTimerPolling(); - } - - // Get today's summary - const today = new Date().toISOString().split('T')[0]; - const entriesResponse = await state.apiClient.getTimeEntries({ startDate: today, endDate: today }); - const totalSeconds = entriesResponse.data.time_entries?.reduce((sum, entry) => { - return sum + (entry.duration_seconds || 0); - }, 0) || 0; - - document.getElementById('today-summary').textContent = formatDuration(totalSeconds); - - // Load recent entries - loadRecentEntries(); - } catch (error) { - console.error('Error loading dashboard:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || 'Could not load the dashboard.'); - } -} - -async function loadRecentEntries() { - if (!state.apiClient) return; - - try { - const response = await state.apiClient.getTimeEntries({ perPage: 5 }); - const entries = response.data.time_entries || []; - const entriesList = document.getElementById('recent-entries'); - - if (entries.length === 0) { - entriesList.innerHTML = '

No recent entries

'; - return; - } - - entriesList.innerHTML = entries.map(entry => ` -
- -
${formatDuration(entry.duration_seconds || 0)}
-
- `).join(''); - } catch (error) { - console.error('Error loading recent entries:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || 'Could not load recent entries.'); - } -} - -async function loadProjects() { - if (!state.apiClient) return; - - try { - const response = await state.apiClient.getProjects({ status: 'active' }); - const projects = response.data.projects || []; - const projectsList = document.getElementById('projects-list'); - - if (projects.length === 0) { - projectsList.innerHTML = '

No projects found

'; - return; - } - - projectsList.innerHTML = projects.map(project => ` -
-

${project.name}

-

${project.client || 'No client'}

-
- `).join(''); - } catch (error) { - console.error('Error loading projects:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || 'Could not load projects.'); - } -} - -function selectProject(projectId) { - currentFilters = { - ...currentFilters, - projectId: projectId || null, - }; - switchView('entries'); -} - -let currentFilters = { - startDate: null, - endDate: null, - projectId: null, -}; - -async function loadTimeEntries() { - if (!state.apiClient) return; - - try { - const params = { perPage: 50 }; - if (currentFilters.startDate) params.startDate = currentFilters.startDate; - if (currentFilters.endDate) params.endDate = currentFilters.endDate; - if (currentFilters.projectId) params.projectId = currentFilters.projectId; - - const response = await state.apiClient.getTimeEntries(params); - const entries = response.data.time_entries || []; - const entriesList = document.getElementById('entries-list'); - - if (entries.length === 0) { - entriesList.innerHTML = '

No time entries

'; - return; - } - - entriesList.innerHTML = entries.map(entry => ` -
- -
-
${formatDuration(entry.duration_seconds || 0)}
- - -
-
- `).join(''); - } catch (error) { - console.error('Error loading time entries:', error); - showError('Failed to load time entries: ' + (error.response?.data?.error || error.message)); - } -} - -function editTimeEntry(entryId) { - showTimeEntryForm(entryId); -} - -async function deleteTimeEntry(entryId) { - if (!confirm('Are you sure you want to delete this time entry?')) { - return; - } - - if (!state.apiClient) return; - - try { - await state.apiClient.deleteTimeEntry(entryId); - loadTimeEntries(); - showSuccess('Time entry deleted successfully'); - } catch (error) { - showError('Failed to delete time entry: ' + (error.response?.data?.error || error.message)); - } -} - -async function handleStartTimer() { - if (!state.apiClient) return; - - // Show project selection dialog - const result = await showStartTimerDialog(); - if (!result) return; // User cancelled - - try { - const response = await startTimerWithReconcile(state.apiClient, { - projectId: result.projectId, - taskId: result.taskId, - notes: result.notes, - }); - if (response.data && response.data.timer) { - state.isTimerRunning = true; - updateTimerDisplay(response.data.timer); - startTimerPolling(); - document.getElementById('start-timer-btn').style.display = 'none'; - document.getElementById('stop-timer-btn').style.display = 'block'; - } - } catch (error) { - console.error('Failed to start timer:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || 'Failed to start timer: ' + (error.response?.data?.error || error.message)); - } -} - -async function showStartTimerDialog() { - return new Promise(async (resolve) => { - // Load projects and time entry requirements - let projects = []; - let requirements = { require_task: false, require_description: false, description_min_length: 20 }; - try { - const projectsResponse = await state.apiClient.getProjects({ status: 'active' }); - projects = projectsResponse.data.projects || []; - try { - const usersMeResponse = await state.apiClient.getUsersMe(); - if (usersMeResponse && usersMeResponse.time_entry_requirements) { - requirements = usersMeResponse.time_entry_requirements; - } - } catch (meErr) { - console.error('getUsersMe for timer dialog:', meErr); - if (meErr && meErr.stack) console.error(meErr.stack); - const { message } = classifyAxiosError(meErr); - showError(message || 'Could not load time entry rules; using defaults.'); - } - } catch (error) { - console.error('Failed to load projects for timer dialog:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || 'Failed to load projects'); - resolve(null); - return; - } - - if (projects.length === 0) { - showError('No active projects found'); - resolve(null); - return; - } - - // Create modal - const modal = document.createElement('div'); - modal.className = 'modal'; - modal.innerHTML = ` - - `; - - document.body.appendChild(modal); - - const projectSelect = modal.querySelector('#timer-project-select'); - const taskSelect = modal.querySelector('#timer-task-select'); - const notesInput = modal.querySelector('#timer-notes-input'); - const confirmBtn = modal.querySelector('#start-timer-confirm'); - - // Load tasks when project changes - projectSelect.addEventListener('change', async (e) => { - const projectId = parseInt(e.target.value); - if (!projectId) { - taskSelect.innerHTML = ''; - return; - } - - try { - const tasksResponse = await state.apiClient.getTasks({ projectId: projectId }); - const tasks = tasksResponse.data.tasks || []; - taskSelect.innerHTML = '' + - tasks.map(t => ``).join(''); - } catch (error) { - console.error('Failed to load tasks:', error); - } - }); - - // Handle confirm - confirmBtn.addEventListener('click', () => { - const projectId = parseInt(projectSelect.value); - if (!projectId) { - showError('Please select a project'); - return; - } - - const taskId = taskSelect.value ? parseInt(taskSelect.value) : null; - if (requirements.require_task && !taskId) { - showError('A task must be selected when logging time for a project'); - return; - } - - const notes = notesInput.value.trim(); - if (requirements.require_description) { - if (!notes) { - showError('A description is required when logging time'); - return; - } - const minLen = requirements.description_min_length || 20; - if (notes.length < minLen) { - showError(`Description must be at least ${minLen} characters`); - return; - } - } - - modal.remove(); - resolve({ projectId, taskId, notes: notes || null }); - }); - - // Close on backdrop click - modal.addEventListener('click', (e) => { - if (e.target === modal) { - modal.remove(); - resolve(null); - } - }); - }); -} - -async function handleStopTimer() { - if (!state.apiClient) return; - - try { - await stopTimerWithReconcile(state.apiClient); - state.isTimerRunning = false; - stopTimerPolling(); - document.getElementById('timer-display').textContent = '00:00:00'; - document.getElementById('timer-project').textContent = 'No active timer'; - document.getElementById('timer-task').style.display = 'none'; - document.getElementById('timer-notes').style.display = 'none'; - document.getElementById('start-timer-btn').style.display = 'block'; - document.getElementById('stop-timer-btn').style.display = 'none'; - // Notify tray - updateTimerDisplay(null); - // Refresh entries list - loadTimeEntries(); - loadRecentEntries(); - } catch (error) { - console.error('Error stopping timer:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || 'Failed to stop timer: ' + (error.response?.data?.error || error.message)); - } -} - -function startTimerPolling() { - if (state.timerInterval) clearInterval(state.timerInterval); - - state.timerInterval = setInterval(async () => { - if (!state.apiClient || !state.isTimerRunning) return; - - try { - const response = await state.apiClient.getTimerStatus(); - if (response.data.active) { - updateTimerDisplay(response.data.timer); - } else { - state.isTimerRunning = false; - stopTimerPolling(); - } - } catch (error) { - console.error('Error polling timer:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - connectionManager.signalError(message || 'Lost connection while syncing the active timer.'); - updateConnectionFromManager(); - const now = Date.now(); - if (!state.lastTimerPollUserMessageAt || now - state.lastTimerPollUserMessageAt > 60000) { - state.lastTimerPollUserMessageAt = now; - showError( - 'Lost connection while syncing the active timer. Check the connection indicator; polling will retry.', - ); - } - } - }, 5000); // Poll every 5 seconds -} - -function stopTimerPolling() { - if (state.timerInterval) { - clearInterval(state.timerInterval); - state.timerInterval = null; - } -} - -function updateTimerDisplay(timer) { - if (!timer) { - // Notify tray that timer is stopped - if (window.electronAPI && window.electronAPI.sendTimerStatus) { - window.electronAPI.sendTimerStatus({ active: false }); - } - return; - } - - const startTime = new Date(timer.start_time); - const now = new Date(); - const seconds = Math.floor((now - startTime) / 1000); - - document.getElementById('timer-display').textContent = formatDurationLong(seconds); - document.getElementById('timer-project').textContent = timer.project?.name || 'Unknown Project'; - - // Show task if available - const taskEl = document.getElementById('timer-task'); - if (timer.task) { - taskEl.textContent = timer.task.name; - taskEl.style.display = 'block'; - } else { - taskEl.style.display = 'none'; - } - - // Show notes if available - const notesEl = document.getElementById('timer-notes'); - if (timer.notes) { - notesEl.textContent = timer.notes; - notesEl.style.display = 'block'; - } else { - notesEl.style.display = 'none'; - } - - // Notify tray that timer is running - if (window.electronAPI && window.electronAPI.sendTimerStatus) { - window.electronAPI.sendTimerStatus({ active: true, timer: timer }); - } -} - - -async function loadInvoices() { - if (!state.apiClient) return; - - try { - const response = await state.apiClient.getInvoices({ - page: state.pagination.invoices.page, - perPage: state.pagination.invoices.perPage, - }); - state.cachedInvoices = response.data.invoices || []; - state.viewLimits.invoices = 20; - const pagination = response.data.pagination || {}; - state.pagination.invoices.totalPages = Number(pagination.pages || pagination.total_pages || 1) || 1; - state.pagination.invoices.total = Number(pagination.total || state.cachedInvoices.length) || state.cachedInvoices.length; - renderInvoices(); - renderInvoicePager(); - } catch (error) { - console.error('Error loading invoices:', error); - showError('Failed to load invoices: ' + (error.response?.data?.error || error.message)); - } -} - -function renderInvoicePager() { - const indicator = document.getElementById('invoice-page-indicator'); - const prevBtn = document.getElementById('invoice-prev-page-btn'); - const nextBtn = document.getElementById('invoice-next-page-btn'); - if (indicator) { - indicator.textContent = `Page ${state.pagination.invoices.page}/${state.pagination.invoices.totalPages}`; - } - if (prevBtn) { - prevBtn.disabled = state.pagination.invoices.page <= 1; - } - if (nextBtn) { - nextBtn.disabled = state.pagination.invoices.page >= state.pagination.invoices.totalPages; - } -} - -async function changeInvoicePage(delta) { - const nextPage = state.pagination.invoices.page + delta; - if (nextPage < 1 || nextPage > state.pagination.invoices.totalPages) { - return; - } - state.pagination.invoices.page = nextPage; - await loadInvoices(); -} - -function renderInvoices() { - const list = document.getElementById('invoices-list'); - if (!list) return; - const filtered = state.cachedInvoices.filter((invoice) => { - const q = state.viewFilters.invoiceQuery; - if (!q) return true; - const haystack = `${invoice.invoice_number || ''} ${invoice.client_name || ''} ${invoice.status || ''}`.toLowerCase(); - return haystack.includes(q); - }); - if (filtered.length === 0) { - list.innerHTML = '

No invoices

'; - return; - } - const limited = filtered.slice(0, state.viewLimits.invoices); - const rowsHtml = limited.map((invoice) => { - const number = invoice.invoice_number || invoice.id || 'N/A'; - const status = invoice.status || 'unknown'; - const total = invoice.total_amount ?? invoice.total ?? '-'; - const totalNumber = Number(invoice.total_amount ?? invoice.total ?? 0) || 0; - return ` -
- -
-
${total}
- - - -
-
- `; - }).join(''); - const hasMore = filtered.length > limited.length; - list.innerHTML = rowsHtml + ( - hasMore - ? `
` - : '' - ); -} - -function loadMoreInvoices() { - state.viewLimits.invoices += 20; - renderInvoices(); -} - -async function loadExpenses() { - if (!state.apiClient) return; - - try { - const response = await state.apiClient.getExpenses({ - page: state.pagination.expenses.page, - perPage: state.pagination.expenses.perPage, - }); - state.cachedExpenses = response.data.expenses || []; - state.viewLimits.expenses = 20; - const pagination = response.data.pagination || {}; - state.pagination.expenses.totalPages = Number(pagination.pages || pagination.total_pages || 1) || 1; - state.pagination.expenses.total = Number(pagination.total || state.cachedExpenses.length) || state.cachedExpenses.length; - renderExpenses(); - renderExpensePager(); - } catch (error) { - console.error('Error loading expenses:', error); - showError('Failed to load expenses: ' + (error.response?.data?.error || error.message)); - } -} - -function renderExpensePager() { - const indicator = document.getElementById('expense-page-indicator'); - const prevBtn = document.getElementById('expense-prev-page-btn'); - const nextBtn = document.getElementById('expense-next-page-btn'); - if (indicator) { - indicator.textContent = `Page ${state.pagination.expenses.page}/${state.pagination.expenses.totalPages}`; - } - if (prevBtn) { - prevBtn.disabled = state.pagination.expenses.page <= 1; - } - if (nextBtn) { - nextBtn.disabled = state.pagination.expenses.page >= state.pagination.expenses.totalPages; - } -} - -async function changeExpensePage(delta) { - const nextPage = state.pagination.expenses.page + delta; - if (nextPage < 1 || nextPage > state.pagination.expenses.totalPages) { - return; - } - state.pagination.expenses.page = nextPage; - await loadExpenses(); -} - -function renderExpenses() { - const list = document.getElementById('expenses-list'); - if (!list) return; - const filtered = state.cachedExpenses.filter((expense) => { - const q = state.viewFilters.expenseQuery; - if (!q) return true; - const haystack = `${expense.title || ''} ${expense.category || ''} ${expense.expense_date || ''}`.toLowerCase(); - return haystack.includes(q); - }); - if (filtered.length === 0) { - list.innerHTML = '

No expenses

'; - return; - } - const limited = filtered.slice(0, state.viewLimits.expenses); - const rowsHtml = limited.map((expense) => { - const category = expense.category || 'General'; - const amount = expense.amount ?? '-'; - const date = expense.expense_date || expense.date || ''; - return ` -
- -
${amount}
-
- `; - }).join(''); - const hasMore = filtered.length > limited.length; - list.innerHTML = rowsHtml + ( - hasMore - ? `
` - : '' - ); -} - -function loadMoreExpenses() { - state.viewLimits.expenses += 20; - renderExpenses(); -} - -async function loadWorkforce() { - if (!state.apiClient) return; - - try { - const start = new Date(); - start.setDate(start.getDate() - start.getDay() + 1); - const end = new Date(start); - end.setDate(start.getDate() + 6); - - const startDate = start.toISOString().split('T')[0]; - const endDate = end.toISOString().split('T')[0]; - - const [periodsResponse, capacityResponse, requestsResponse, balancesResponse] = await Promise.all([ - state.apiClient.getTimesheetPeriods({ startDate, endDate }), - state.apiClient.getCapacityReport({ startDate, endDate }), - state.apiClient.getTimeOffRequests({}), - state.apiClient.getTimeOffBalances({}), - ]); - - state.cachedWorkforce = { - periods: periodsResponse.data.timesheet_periods || [], - capacity: capacityResponse.data.capacity || [], - timeOffRequests: requestsResponse.data.time_off_requests || [], - balances: balancesResponse.data.balances || [], - }; - state.viewLimits.timeoff = 20; - renderWorkforce(); - } catch (error) { - console.error('Error loading workforce view:', error); - showError('Failed to load workforce data: ' + (error.response?.data?.error || error.message)); - } -} - -function renderWorkforce() { - renderPeriods(); - renderCapacity(); - renderTimeOffRequests(); - renderBalances(); -} - -function renderPeriods() { - const periods = state.cachedWorkforce.periods || []; - const periodsList = document.getElementById('periods-list'); - if (!periodsList) return; - if (periods.length === 0) { - periodsList.innerHTML = '

No periods

'; - return; - } - periodsList.innerHTML = periods.map((period) => ` -
- -
- ${String(period.status || '').toLowerCase() === 'draft' - ? `` - : ''} - ${(String(period.status || '').toLowerCase() === 'submitted' && state.currentUserProfile.can_approve) - ? `` - : ''} - ${(String(period.status || '').toLowerCase() === 'submitted' && state.currentUserProfile.can_approve) - ? `` - : ''} - ${['draft', 'rejected'].includes(String(period.status || '').toLowerCase()) - ? `` - : ''} -
-
- `).join(''); -} - -function renderCapacity() { - const capacity = state.cachedWorkforce.capacity || []; - const capacityList = document.getElementById('capacity-list'); - if (!capacityList) return; - if (capacity.length === 0) { - capacityList.innerHTML = '

No capacity rows

'; - return; - } - capacityList.innerHTML = capacity.map((row) => { - const username = row.username || row.user_id || 'User'; - const expected = row.expected_hours ?? 0; - const allocated = row.allocated_hours ?? 0; - const util = row.utilization_pct ?? 0; - return ` -
- -
${util}%
-
- `; - }).join(''); -} - -function renderTimeOffRequests() { - const requests = state.cachedWorkforce.timeOffRequests || []; - const timeoffList = document.getElementById('timeoff-list'); - if (!timeoffList) return; - const filtered = requests.filter((req) => { - const q = state.viewFilters.timeoffQuery; - if (!q) return true; - const haystack = `${req.leave_type_name || ''} ${req.status || ''} ${req.start_date || ''} ${req.end_date || ''}`.toLowerCase(); - return haystack.includes(q); - }); - if (filtered.length === 0) { - timeoffList.innerHTML = '

No time-off requests

'; - return; - } - const limited = filtered.slice(0, state.viewLimits.timeoff); - const rowsHtml = limited.map((req) => { - const leaveType = req.leave_type_name || 'Leave'; - const status = req.status || ''; - const pending = String(status).toLowerCase() === 'submitted'; - const canReview = pending && state.currentUserProfile.can_approve; - return ` -
- -
-
${status}
- ${canReview ? `` : ''} - ${canReview ? `` : ''} - ${['draft', 'submitted', 'cancelled'].includes(String(status).toLowerCase()) && (req.user_id === state.currentUserProfile.id || state.currentUserProfile.can_approve) - ? `` - : ''} -
-
- `; - }).join(''); - const hasMore = filtered.length > limited.length; - timeoffList.innerHTML = rowsHtml + ( - hasMore - ? `
` - : '' - ); -} - -function loadMoreTimeOffRequests() { - state.viewLimits.timeoff += 20; - renderTimeOffRequests(); -} - -function renderBalances() { - const balances = state.cachedWorkforce.balances || []; - const balancesList = document.getElementById('balances-list'); - if (!balancesList) return; - if (balances.length === 0) { - balancesList.innerHTML = '

No leave balances

'; - return; - } - balancesList.innerHTML = balances.map((bal) => { - const leaveType = bal.leave_type_name || 'Leave'; - const remaining = bal.remaining_hours ?? bal.balance_hours ?? 0; - return ` -
- -
${remaining}h
-
- `; - }).join(''); -} - -async function showCreateInvoiceDialog() { - if (!state.apiClient) return; - - try { - const [projectsResponse, clientsResponse] = await Promise.all([ - state.apiClient.getProjects({ status: 'active', perPage: 100 }), - state.apiClient.getClients({ status: 'active', perPage: 100 }), - ]); - const projects = projectsResponse.data.projects || []; - const clients = clientsResponse.data.clients || []; - if (projects.length === 0 || clients.length === 0) { - showError('Need at least one active project and client to create an invoice'); - return; - } - - const modal = document.createElement('div'); - modal.className = 'modal'; - modal.innerHTML = ` - - `; - document.body.appendChild(modal); - const createBtn = modal.querySelector('#invoice-create-btn'); - createBtn.addEventListener('click', async () => { - const projectId = Number(modal.querySelector('#invoice-project-select').value); - const clientId = Number(modal.querySelector('#invoice-client-select').value); - const dueDate = modal.querySelector('#invoice-due-date').value; - const client = clients.find((c) => Number(c.id) === clientId); - if (!projectId || !clientId || !client || !dueDate) { - showError('Please provide all required fields'); - return; - } - await state.apiClient.createInvoice({ - project_id: projectId, - client_id: clientId, - client_name: client.name, - due_date: dueDate, - }); - modal.remove(); - showSuccess('Invoice created successfully'); - await loadInvoices(); - }); - modal.addEventListener('click', (e) => { - if (e.target === modal) { - modal.remove(); - } - }); - } catch (error) { - showError('Failed to create invoice: ' + (error.response?.data?.error || error.message)); - } -} - -async function submitTimesheetPeriodAction(periodId) { - if (!state.apiClient) return; - - try { - await state.apiClient.submitTimesheetPeriod(periodId); - showSuccess('Timesheet period submitted'); - await loadWorkforce(); - } catch (error) { - showError('Failed to submit period: ' + (error.response?.data?.error || error.message)); - } -} - -async function reviewTimesheetPeriodAction(periodId, approve) { - if (!state.apiClient) return; - try { - if (approve) { - await state.apiClient.approveTimesheetPeriod(periodId, {}); - showSuccess('Timesheet period approved'); - } else { - await state.apiClient.rejectTimesheetPeriod(periodId, {}); - showSuccess('Timesheet period rejected'); - } - await loadWorkforce(); - } catch (error) { - showError('Failed to review period: ' + (error.response?.data?.error || error.message)); - } -} - -async function deleteTimesheetPeriodAction(periodId) { - if (!state.apiClient) return; - if (!confirm('Are you sure you want to delete this timesheet period?')) return; - try { - await state.apiClient.deleteTimesheetPeriod(periodId); - showSuccess('Timesheet period deleted'); - await loadWorkforce(); - } catch (error) { - showError('Failed to delete period: ' + (error.response?.data?.error || error.message)); - } -} - -async function showCreateTimeOffDialog() { - if (!state.apiClient) return; - - try { - const leaveTypesResponse = await state.apiClient.getLeaveTypes(); - const leaveTypes = leaveTypesResponse.data.leave_types || []; - if (leaveTypes.length === 0) { - showError('No leave types available'); - return; - } - - const modal = document.createElement('div'); - modal.className = 'modal'; - const today = new Date().toISOString().split('T')[0]; - modal.innerHTML = ` - - `; - document.body.appendChild(modal); - modal.querySelector('#timeoff-create-btn').addEventListener('click', async () => { - const leaveTypeId = Number(modal.querySelector('#timeoff-leave-type').value); - const startDate = modal.querySelector('#timeoff-start-date').value; - const endDate = modal.querySelector('#timeoff-end-date').value; - const hoursValue = modal.querySelector('#timeoff-hours').value.trim(); - const requestedHours = hoursValue ? Number(hoursValue) : null; - const comment = modal.querySelector('#timeoff-comment').value.trim(); - if (!leaveTypeId || !startDate || !endDate) { - showError('Please provide leave type and dates'); - return; - } - if (hoursValue && !Number.isFinite(requestedHours)) { - showError('requested_hours must be numeric'); - return; - } - await state.apiClient.createTimeOffRequest({ - leaveTypeId, - startDate, - endDate, - requestedHours, - comment, - submit: true, - }); - modal.remove(); - showSuccess('Time-off request created'); - await loadWorkforce(); - }); - modal.addEventListener('click', (e) => { - if (e.target === modal) { - modal.remove(); - } - }); - } catch (error) { - showError('Failed to create time-off request: ' + (error.response?.data?.error || error.message)); - } -} - -async function showCreateExpenseDialog() { - if (!state.apiClient) return; - try { - const modal = document.createElement('div'); - modal.className = 'modal'; - modal.innerHTML = ` - - `; - document.body.appendChild(modal); - modal.querySelector('#expense-create-btn').addEventListener('click', async () => { - const title = modal.querySelector('#expense-title').value.trim(); - const category = modal.querySelector('#expense-category').value.trim(); - const amount = Number(modal.querySelector('#expense-amount').value); - const expenseDate = modal.querySelector('#expense-date').value; - if (!title || !category || !expenseDate || !Number.isFinite(amount) || amount <= 0) { - showError('Please provide valid title/category/amount/date'); - return; - } - await state.apiClient.createExpense({ - title, - category, - amount, - expense_date: expenseDate, - }); - modal.remove(); - showSuccess('Expense created successfully'); - await loadExpenses(); - }); - modal.addEventListener('click', (e) => { - if (e.target === modal) { - modal.remove(); - } - }); - } catch (error) { - showError('Failed to create expense: ' + (error.response?.data?.error || error.message)); - } -} - -async function updateInvoiceStatusAction(invoiceId, status) { - if (!state.apiClient) return; - try { - await state.apiClient.updateInvoice(invoiceId, { status }); - showSuccess(`Invoice marked ${status}`); - await loadInvoices(); - } catch (error) { - showError('Failed to update invoice: ' + (error.response?.data?.error || error.message)); - } -} - -async function markInvoicePaidAction(invoiceId, totalAmount) { - if (!state.apiClient) return; - const amountPaid = Number(totalAmount || 0); - if (!Number.isFinite(amountPaid) || amountPaid <= 0) { - showError('Invoice total is invalid; cannot mark paid'); - return; - } - try { - await state.apiClient.updateInvoice(invoiceId, { amount_paid: amountPaid }); - showSuccess('Invoice marked paid'); - await loadInvoices(); - } catch (error) { - showError('Failed to mark paid: ' + (error.response?.data?.error || error.message)); - } -} - -async function reviewTimeOffRequestAction(requestId, approve) { - if (!state.apiClient) return; - try { - if (approve) { - await state.apiClient.approveTimeOffRequest(requestId, {}); - showSuccess('Time-off request approved'); - } else { - await state.apiClient.rejectTimeOffRequest(requestId, {}); - showSuccess('Time-off request rejected'); - } - await loadWorkforce(); - } catch (error) { - showError('Failed to review time-off request: ' + (error.response?.data?.error || error.message)); - } -} - -async function deleteTimeOffRequestAction(requestId) { - if (!state.apiClient) return; - if (!confirm('Are you sure you want to delete this time-off request?')) return; - try { - await state.apiClient.deleteTimeOffRequest(requestId); - showSuccess('Time-off request deleted'); - await loadWorkforce(); - } catch (error) { - showError('Failed to delete time-off request: ' + (error.response?.data?.error || error.message)); - } -} - -async function loadSettings() { - // Load current settings - const serverUrl = await storeGet('server_url') || ''; - const username = await storeGet('username') || ''; - const autoSync = await storeGet('auto_sync'); - const syncInterval = await storeGet('sync_interval'); - - const serverUrlInput = document.getElementById('settings-server-url'); - const usernameInput = document.getElementById('settings-username'); - const passwordInput = document.getElementById('settings-password'); - const autoSyncInput = document.getElementById('auto-sync'); - const syncIntervalInput = document.getElementById('sync-interval'); - - if (serverUrlInput) { - serverUrlInput.value = serverUrl ? ApiClient.normalizeBaseUrl(String(serverUrl)) : ''; - } - if (usernameInput) { - usernameInput.value = username ? String(username) : ''; - } - if (passwordInput) { - passwordInput.value = ''; - } - if (autoSyncInput) { - autoSyncInput.checked = autoSync !== null ? Boolean(autoSync) : true; - } - if (syncIntervalInput) { - syncIntervalInput.value = (syncInterval || 60).toString(); - } - updateSyncIntervalState(); -} - -function updateSyncIntervalState() { - const autoSyncInput = document.getElementById('auto-sync'); - const syncIntervalInput = document.getElementById('sync-interval'); - if (!autoSyncInput || !syncIntervalInput) return; - syncIntervalInput.disabled = !autoSyncInput.checked; -} - -async function handleSaveSettings() { - const serverUrlInput = document.getElementById('settings-server-url'); - const usernameInput = document.getElementById('settings-username'); - const passwordInput = document.getElementById('settings-password'); - const autoSyncInput = document.getElementById('auto-sync'); - const syncIntervalInput = document.getElementById('sync-interval'); - const messageDiv = document.getElementById('settings-message'); - - if (!serverUrlInput || !usernameInput || !passwordInput || !autoSyncInput || !syncIntervalInput) return; - - const rawServer = serverUrlInput.value.trim(); - const normalizedInput = normalizeServerUrlInput(rawServer); - const username = usernameInput.value.trim(); - const password = passwordInput.value; - const autoSync = autoSyncInput.checked; - const syncInterval = parseInt(syncIntervalInput.value, 10); - - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showSettingsMessage('Please enter a valid server URL', 'error'); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - - if (!username || !password) { - showSettingsMessage('Please enter your username and password to save settings', 'error'); - return; - } - - if (Number.isNaN(syncInterval) || syncInterval < 10) { - showSettingsMessage('Sync interval must be at least 10 seconds', 'error'); - return; - } - - try { - const saved = await connectionManager.saveServerAndCredentials(serverUrl, username, password, { - auto_sync: autoSync, - sync_interval: syncInterval, - }); - if (!saved.ok) { - showSettingsMessage(saved.message || saved.session?.message || 'Could not save settings.', 'error'); - updateConnectionFromManager(); - return; - } - state.authFailureStreak = 0; - await loadCurrentUserProfile(); - updateConnectionFromManager(); - showSettingsMessage('Settings saved successfully!', 'success'); - passwordInput.value = ''; - serverUrlInput.value = serverUrl; - } catch (error) { - console.error('Error saving settings:', error); - if (error && error.stack) console.error(error.stack); - showSettingsMessage('Error saving settings: ' + (error.message || String(error)), 'error'); - } -} - -async function handleTestConnection() { - const serverUrlInput = document.getElementById('settings-server-url'); - const usernameInput = document.getElementById('settings-username'); - const passwordInput = document.getElementById('settings-password'); - const messageDiv = document.getElementById('settings-message'); - - if (!serverUrlInput || !usernameInput || !passwordInput) return; - - const rawServer = serverUrlInput.value.trim(); - const normalizedInput = normalizeServerUrlInput(rawServer); - const username = usernameInput.value.trim(); - const password = passwordInput.value; - - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showSettingsMessage('Please enter a valid server URL', 'error'); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - - if (!username || !password) { - showSettingsMessage('Please enter your username and password to test connection', 'error'); - return; - } - - try { - showSettingsMessage('Testing connection...', 'info'); - const r = await connectionManager.testServerAndCredentials(serverUrl, username, password); - if (!r.ok) { - showSettingsMessage(r.message || 'Connection test failed.', 'error'); - updateConnectionFromManager(); - return; - } - const snap = connectionManager.getSnapshot(); - if (snap.serverUrl === serverUrl && connectionManager.getClient()) { - await connectionManager.validateSessionRefresh(); - } - updateConnectionFromManager(); - const ver = r.app_version ? ` (${r.app_version})` : ''; - showSettingsMessage(`Connection successful: credentials are valid${ver}.`, 'success'); - } catch (error) { - console.error('Error testing connection:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showSettingsMessage(message || 'Connection error: ' + error.message, 'error'); - } -} - -function showSettingsMessage(message, type = 'info') { - const messageDiv = document.getElementById('settings-message'); - if (!messageDiv) return; - - messageDiv.textContent = message; - messageDiv.className = `message message-${type}`; - messageDiv.style.display = 'block'; - - // Auto-hide after 5 seconds for success/info messages - if (type === 'success' || type === 'info') { - setTimeout(() => { - messageDiv.style.display = 'none'; - }, 5000); - } -} - -async function handleLogout() { - if (!confirm('Sign out of this desktop app? Your server URL will be kept.')) return; - if (state.isTimerRunning) { - state.isTimerRunning = false; - stopTimerPolling(); - } - await connectionManager.logoutKeepServer(); - showLoginScreen({ prefillServerUrl: connectionManager.getSnapshot().serverUrl || '' }); -} - -async function handleResetConfiguration() { - if ( - !confirm( - 'Reset all app configuration (server URL, token, sync settings)? This cannot be undone.', - ) - ) { - return; - } - if (state.isTimerRunning) { - state.isTimerRunning = false; - stopTimerPolling(); - } - await connectionManager.fullStoreReset(); - showLoginScreen({ prefillServerUrl: '', startAtServer: true }); -} - -// Initialize when DOM is ready -async function safeInitApp() { - try { - await initApp(); - } catch (err) { - console.error('initApp failed:', err); - try { - showLoginScreen({ - prefillServerUrl: '', - startAtServer: true, - bannerMessage: - 'Startup failed. Please re-enter your server URL and sign in again.', - }); - } catch (e) { - console.error('Failed to show login screen after init failure:', e); - } - } -} - -if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', safeInitApp); -} else { - safeInitApp(); -} - -// Filter functions -function toggleFilters() { - const filtersEl = document.getElementById('entries-filters'); - if (filtersEl) { - filtersEl.style.display = filtersEl.style.display === 'none' ? 'block' : 'none'; - } -} - -async function applyFilters() { - const startDate = document.getElementById('filter-start-date')?.value || null; - const endDate = document.getElementById('filter-end-date')?.value || null; - const projectId = document.getElementById('filter-project')?.value - ? parseInt(document.getElementById('filter-project').value) - : null; - - currentFilters = { startDate, endDate, projectId }; - await loadTimeEntries(); -} - -function clearFilters() { - currentFilters = { startDate: null, endDate: null, projectId: null }; - document.getElementById('filter-start-date').value = ''; - document.getElementById('filter-end-date').value = ''; - document.getElementById('filter-project').value = ''; - loadTimeEntries(); -} - -// Load projects for filter dropdown -async function loadProjectsForFilter() { - if (!state.apiClient) return; - - try { - const response = await state.apiClient.getProjects({ status: 'active' }); - const projects = response.data.projects || []; - const select = document.getElementById('filter-project'); - if (select) { - select.innerHTML = '' + - projects.map(p => ``).join(''); - if (currentFilters.projectId) { - select.value = String(currentFilters.projectId); - } - } - } catch (error) { - console.error('Error loading projects for filter:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || 'Could not load projects for filter.'); - } -} - -// Time entry form -async function showTimeEntryForm(entryId = null) { - if (!state.apiClient) return; - // Load projects and time entry requirements - let projects = []; - let requirements = { require_task: false, require_description: false, description_min_length: 20 }; - try { - const projectsResponse = await state.apiClient.getProjects({ status: 'active' }); - projects = projectsResponse.data.projects || []; - try { - const usersMeResponse = await state.apiClient.getUsersMe(); - if (usersMeResponse && usersMeResponse.time_entry_requirements) { - requirements = usersMeResponse.time_entry_requirements; - } - } catch (meErr) { - console.error('getUsersMe for time entry form:', meErr); - if (meErr && meErr.stack) console.error(meErr.stack); - const { message } = classifyAxiosError(meErr); - showError(message || 'Could not load time entry rules; using defaults.'); - } - } catch (error) { - console.error('Failed to load projects for time entry form:', error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || 'Failed to load projects'); - return; - } - - // Load entry if editing - let entry = null; - if (entryId) { - try { - const entryResponse = await state.apiClient.getTimeEntry(entryId); - entry = entryResponse.data.time_entry; - } catch (error) { - showError('Failed to load time entry'); - return; - } - } - - // Load tasks if project is selected - let tasks = []; - const projectId = entry ? entry.project_id : null; - if (projectId) { - try { - const tasksResponse = await state.apiClient.getTasks({ projectId: projectId }); - tasks = tasksResponse.data.tasks || []; - } catch (error) { - console.error('Failed to load tasks:', error); - } - } - - // Create modal - const modal = document.createElement('div'); - modal.className = 'modal'; - - const startDate = entry - ? new Date(entry.start_time).toISOString().split('T')[0] - : new Date().toISOString().split('T')[0]; - const startTime = entry - ? new Date(entry.start_time).toTimeString().slice(0, 5) - : new Date().toTimeString().slice(0, 5); - const endDate = entry && entry.end_time - ? new Date(entry.end_time).toISOString().split('T')[0] - : ''; - const endTime = entry && entry.end_time - ? new Date(entry.end_time).toTimeString().slice(0, 5) - : ''; - - modal.innerHTML = ` - - `; - - document.body.appendChild(modal); - - const projectSelect = modal.querySelector('#entry-project-select'); - const taskSelect = modal.querySelector('#entry-task-select'); - const saveBtn = modal.querySelector('#save-entry-btn'); - - // Load tasks when project changes - projectSelect.addEventListener('change', async (e) => { - const projectId = parseInt(e.target.value); - if (!projectId) { - taskSelect.innerHTML = ''; - return; - } - - try { - const tasksResponse = await state.apiClient.getTasks({ projectId: projectId }); - const tasks = tasksResponse.data.tasks || []; - taskSelect.innerHTML = '' + - tasks.map(t => ``).join(''); - } catch (error) { - console.error('Failed to load tasks:', error); - } - }); - - // Handle save - saveBtn.addEventListener('click', async () => { - const projectId = parseInt(projectSelect.value); - if (!projectId) { - showError('Please select a project'); - return; - } - - const taskId = taskSelect.value ? parseInt(taskSelect.value) : null; - if (requirements.require_task && !taskId) { - showError('A task must be selected when logging time for a project'); - return; - } - - const notesEl = document.getElementById('entry-notes'); - const notes = notesEl ? notesEl.value.trim() : ''; - if (requirements.require_description) { - if (!notes) { - showError('A description is required when logging time'); - return; - } - const minLen = requirements.description_min_length || 20; - if (notes.length < minLen) { - showError(`Description must be at least ${minLen} characters`); - return; - } - } - const startDate = document.getElementById('entry-start-date').value; - const startTime = document.getElementById('entry-start-time').value; - const endDate = document.getElementById('entry-end-date').value; - const endTime = document.getElementById('entry-end-time').value; - const notesForApi = notes || null; - const tags = document.getElementById('entry-tags').value.trim() || null; - const billable = document.getElementById('entry-billable').checked; - - const startDateTime = new Date(`${startDate}T${startTime}`).toISOString(); - const endDateTime = (endDate && endTime) - ? new Date(`${endDate}T${endTime}`).toISOString() - : null; - - try { - if (entryId) { - await state.apiClient.updateTimeEntry(entryId, { - project_id: projectId, - task_id: taskId, - start_time: startDateTime, - end_time: endDateTime, - notes: notesForApi, - tags: tags, - billable: billable, - }); - showSuccess('Time entry updated successfully'); - } else { - await state.apiClient.createTimeEntry({ - project_id: projectId, - task_id: taskId, - start_time: startDateTime, - end_time: endDateTime, - notes: notesForApi, - tags: tags, - billable: billable, - }); - showSuccess('Time entry created successfully'); - } - - modal.remove(); - loadTimeEntries(); - } catch (error) { - showError('Failed to save time entry: ' + (error.response?.data?.error || error.message)); - } - }); - - // Close on backdrop click - modal.addEventListener('click', (e) => { - if (e.target === modal) { - modal.remove(); - } - }); -} diff --git a/desktop/src/renderer/js/bundle.js b/desktop/src/renderer/js/bundle.js deleted file mode 100644 index 6116bf68..00000000 --- a/desktop/src/renderer/js/bundle.js +++ /dev/null @@ -1,5693 +0,0 @@ -(() => { - var __getOwnPropNames = Object.getOwnPropertyNames; - var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; - }; - - // src/renderer/js/utils/helpers.js - var require_helpers = __commonJS({ - "src/renderer/js/utils/helpers.js"(exports, module) { - function formatDuration2(seconds) { - const hours = Math.floor(seconds / 3600); - const minutes = Math.floor(seconds % 3600 / 60); - const secs = seconds % 60; - if (hours > 0) { - return `${hours}h ${minutes}m`; - } - return `${minutes}m ${secs}s`; - } - function formatDurationLong2(seconds) { - const hours = Math.floor(seconds / 3600); - const minutes = Math.floor(seconds % 3600 / 60); - const secs = seconds % 60; - return `${hours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`; - } - function formatDate(date) { - if (typeof date === "string") { - date = new Date(date); - } - return date.toLocaleDateString(); - } - function formatDateTime2(date) { - if (typeof date === "string") { - date = new Date(date); - } - return date.toLocaleString(); - } - function parseISODate(dateString) { - return new Date(dateString); - } - function isValidUrl2(string) { - try { - const url = new URL(string); - return url.protocol === "http:" || url.protocol === "https:"; - } catch (_) { - return false; - } - } - function normalizeServerUrlInput2(input) { - const trimmed = String(input || "").trim(); - if (!trimmed) return trimmed; - if (/^https?:\/\//i.test(trimmed)) return trimmed; - return "https://" + trimmed; - } - function debounce(func, wait) { - let timeout; - return function executedFunction(...args) { - const later = () => { - clearTimeout(timeout); - func(...args); - }; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - }; - } - if (typeof module !== "undefined" && module.exports) { - module.exports = { - formatDuration: formatDuration2, - formatDurationLong: formatDurationLong2, - formatDate, - formatDateTime: formatDateTime2, - parseISODate, - isValidUrl: isValidUrl2, - normalizeServerUrlInput: normalizeServerUrlInput2, - debounce - }; - } - if (typeof window !== "undefined") { - window.Helpers = { - formatDuration: formatDuration2, - formatDurationLong: formatDurationLong2, - formatDate, - formatDateTime: formatDateTime2, - parseISODate, - isValidUrl: isValidUrl2, - normalizeServerUrlInput: normalizeServerUrlInput2, - debounce - }; - } - } - }); - - // node_modules/axios/dist/browser/axios.cjs - var require_axios = __commonJS({ - "node_modules/axios/dist/browser/axios.cjs"(exports, module) { - "use strict"; - function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; - } - var { toString } = Object.prototype; - var { getPrototypeOf } = Object; - var { iterator, toStringTag } = Symbol; - var kindOf = /* @__PURE__ */ ((cache) => (thing) => { - const str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); - })(/* @__PURE__ */ Object.create(null)); - var kindOfTest = (type) => { - type = type.toLowerCase(); - return (thing) => kindOf(thing) === type; - }; - var typeOfTest = (type) => (thing) => typeof thing === type; - var { isArray } = Array; - var isUndefined = typeOfTest("undefined"); - function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val); - } - var isArrayBuffer = kindOfTest("ArrayBuffer"); - function isArrayBufferView(val) { - let result; - if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) { - result = ArrayBuffer.isView(val); - } else { - result = val && val.buffer && isArrayBuffer(val.buffer); - } - return result; - } - var isString = typeOfTest("string"); - var isFunction$1 = typeOfTest("function"); - var isNumber = typeOfTest("number"); - var isObject = (thing) => thing !== null && typeof thing === "object"; - var isBoolean = (thing) => thing === true || thing === false; - var isPlainObject = (val) => { - if (kindOf(val) !== "object") { - return false; - } - const prototype2 = getPrototypeOf(val); - return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(toStringTag in val) && !(iterator in val); - }; - var isEmptyObject = (val) => { - if (!isObject(val) || isBuffer(val)) { - return false; - } - try { - return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; - } catch (e) { - return false; - } - }; - var isDate = kindOfTest("Date"); - var isFile = kindOfTest("File"); - var isReactNativeBlob = (value) => { - return !!(value && typeof value.uri !== "undefined"); - }; - var isReactNative = (formData) => formData && typeof formData.getParts !== "undefined"; - var isBlob = kindOfTest("Blob"); - var isFileList = kindOfTest("FileList"); - var isStream = (val) => isObject(val) && isFunction$1(val.pipe); - function getGlobal() { - if (typeof globalThis !== "undefined") return globalThis; - if (typeof self !== "undefined") return self; - if (typeof window !== "undefined") return window; - if (typeof global !== "undefined") return global; - return {}; - } - var G = getGlobal(); - var FormDataCtor = typeof G.FormData !== "undefined" ? G.FormData : void 0; - var isFormData = (thing) => { - let kind; - return thing && (FormDataCtor && thing instanceof FormDataCtor || isFunction$1(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance - kind === "object" && isFunction$1(thing.toString) && thing.toString() === "[object FormData]")); - }; - var isURLSearchParams = kindOfTest("URLSearchParams"); - var [isReadableStream, isRequest, isResponse, isHeaders] = [ - "ReadableStream", - "Request", - "Response", - "Headers" - ].map(kindOfTest); - var trim = (str) => { - return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); - }; - function forEach(obj, fn, { allOwnKeys = false } = {}) { - if (obj === null || typeof obj === "undefined") { - return; - } - let i; - let l; - if (typeof obj !== "object") { - obj = [obj]; - } - if (isArray(obj)) { - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - if (isBuffer(obj)) { - return; - } - const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } - } - function findKey(obj, key) { - if (isBuffer(obj)) { - return null; - } - key = key.toLowerCase(); - const keys = Object.keys(obj); - let i = keys.length; - let _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; - } - var _global = (() => { - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global; - })(); - var isContextDefined = (context) => !isUndefined(context) && context !== _global; - function merge() { - const { caseless, skipUndefined } = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - if (key === "__proto__" || key === "constructor" || key === "prototype") { - return; - } - const targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else if (!skipUndefined || !isUndefined(val)) { - result[targetKey] = val; - } - }; - for (let i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; - } - var extend = (a, b, thisArg, { allOwnKeys } = {}) => { - forEach( - b, - (val, key) => { - if (thisArg && isFunction$1(val)) { - Object.defineProperty(a, key, { - value: bind(val, thisArg), - writable: true, - enumerable: true, - configurable: true - }); - } else { - Object.defineProperty(a, key, { - value: val, - writable: true, - enumerable: true, - configurable: true - }); - } - }, - { allOwnKeys } - ); - return a; - }; - var stripBOM = (content) => { - if (content.charCodeAt(0) === 65279) { - content = content.slice(1); - } - return content; - }; - var inherits = (constructor, superConstructor, props, descriptors) => { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - Object.defineProperty(constructor.prototype, "constructor", { - value: constructor, - writable: true, - enumerable: false, - configurable: true - }); - Object.defineProperty(constructor, "super", { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); - }; - var toFlatObject = (sourceObj, destObj, filter, propFilter) => { - let props; - let i; - let prop; - const merged = {}; - destObj = destObj || {}; - if (sourceObj == null) return destObj; - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - return destObj; - }; - var endsWith = (str, searchString, position) => { - str = String(str); - if (position === void 0 || position > str.length) { - position = str.length; - } - position -= searchString.length; - const lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - var toArray = (thing) => { - if (!thing) return null; - if (isArray(thing)) return thing; - let i = thing.length; - if (!isNumber(i)) return null; - const arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; - }; - var isTypedArray = /* @__PURE__ */ ((TypedArray) => { - return (thing) => { - return TypedArray && thing instanceof TypedArray; - }; - })(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array)); - var forEachEntry = (obj, fn) => { - const generator = obj && obj[iterator]; - const _iterator = generator.call(obj); - let result; - while ((result = _iterator.next()) && !result.done) { - const pair = result.value; - fn.call(obj, pair[0], pair[1]); - } - }; - var matchAll = (regExp, str) => { - let matches; - const arr = []; - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - return arr; - }; - var isHTMLForm = kindOfTest("HTMLFormElement"); - var toCamelCase = (str) => { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - }); - }; - var hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype); - var isRegExp = kindOfTest("RegExp"); - var reduceDescriptors = (obj, reducer) => { - const descriptors = Object.getOwnPropertyDescriptors(obj); - const reducedDescriptors = {}; - forEach(descriptors, (descriptor, name) => { - let ret; - if ((ret = reducer(descriptor, name, obj)) !== false) { - reducedDescriptors[name] = ret || descriptor; - } - }); - Object.defineProperties(obj, reducedDescriptors); - }; - var freezeMethods = (obj) => { - reduceDescriptors(obj, (descriptor, name) => { - if (isFunction$1(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) { - return false; - } - const value = obj[name]; - if (!isFunction$1(value)) return; - descriptor.enumerable = false; - if ("writable" in descriptor) { - descriptor.writable = false; - return; - } - if (!descriptor.set) { - descriptor.set = () => { - throw Error("Can not rewrite read-only method '" + name + "'"); - }; - } - }); - }; - var toObjectSet = (arrayOrString, delimiter) => { - const obj = {}; - const define = (arr) => { - arr.forEach((value) => { - obj[value] = true; - }); - }; - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - return obj; - }; - var noop = () => { - }; - var toFiniteNumber = (value, defaultValue) => { - return value != null && Number.isFinite(value = +value) ? value : defaultValue; - }; - function isSpecCompliantForm(thing) { - return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === "FormData" && thing[iterator]); - } - var toJSONObject = (obj) => { - const stack = new Array(10); - const visit = (source, i) => { - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - if (isBuffer(source)) { - return source; - } - if (!("toJSON" in source)) { - stack[i] = source; - const target = isArray(source) ? [] : {}; - forEach(source, (value, key) => { - const reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - stack[i] = void 0; - return target; - } - } - return source; - }; - return visit(obj, 0); - }; - var isAsyncFn = kindOfTest("AsyncFunction"); - var isThenable = (thing) => thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch); - var _setImmediate = ((setImmediateSupported, postMessageSupported) => { - if (setImmediateSupported) { - return setImmediate; - } - return postMessageSupported ? ((token, callbacks) => { - _global.addEventListener( - "message", - ({ source, data }) => { - if (source === _global && data === token) { - callbacks.length && callbacks.shift()(); - } - }, - false - ); - return (cb) => { - callbacks.push(cb); - _global.postMessage(token, "*"); - }; - })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb); - })(typeof setImmediate === "function", isFunction$1(_global.postMessage)); - var asap = typeof queueMicrotask !== "undefined" ? queueMicrotask.bind(_global) : typeof process !== "undefined" && process.nextTick || _setImmediate; - var isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); - var utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isEmptyObject, - isReadableStream, - isRequest, - isResponse, - isHeaders, - isUndefined, - isDate, - isFile, - isReactNativeBlob, - isReactNative, - isBlob, - isRegExp, - isFunction: isFunction$1, - isStream, - isURLSearchParams, - isTypedArray, - isFileList, - forEach, - merge, - extend, - trim, - stripBOM, - inherits, - toFlatObject, - kindOf, - kindOfTest, - endsWith, - toArray, - forEachEntry, - matchAll, - isHTMLForm, - hasOwnProperty, - hasOwnProp: hasOwnProperty, - // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors, - freezeMethods, - toObjectSet, - toCamelCase, - noop, - toFiniteNumber, - findKey, - global: _global, - isContextDefined, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable, - setImmediate: _setImmediate, - asap, - isIterable - }; - var AxiosError = class _AxiosError extends Error { - static from(error, code, config, request, response, customProps) { - const axiosError = new _AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - if (error.status != null && axiosError.status == null) { - axiosError.status = error.status; - } - customProps && Object.assign(axiosError, customProps); - return axiosError; - } - /** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ - constructor(message, code, config, request, response) { - super(message); - Object.defineProperty(this, "message", { - value: message, - enumerable: true, - writable: true, - configurable: true - }); - this.name = "AxiosError"; - this.isAxiosError = true; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - if (response) { - this.response = response; - this.status = response.status; - } - } - toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils$1.toJSONObject(this.config), - code: this.code, - status: this.status - }; - } - }; - AxiosError.ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; - AxiosError.ERR_BAD_OPTION = "ERR_BAD_OPTION"; - AxiosError.ECONNABORTED = "ECONNABORTED"; - AxiosError.ETIMEDOUT = "ETIMEDOUT"; - AxiosError.ERR_NETWORK = "ERR_NETWORK"; - AxiosError.ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; - AxiosError.ERR_DEPRECATED = "ERR_DEPRECATED"; - AxiosError.ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; - AxiosError.ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; - AxiosError.ERR_CANCELED = "ERR_CANCELED"; - AxiosError.ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; - AxiosError.ERR_INVALID_URL = "ERR_INVALID_URL"; - var httpAdapter = null; - function isVisitable(thing) { - return utils$1.isPlainObject(thing) || utils$1.isArray(thing); - } - function removeBrackets(key) { - return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key; - } - function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - token = removeBrackets(token); - return !dots && i ? "[" + token + "]" : token; - }).join(dots ? "." : ""); - } - function isFlatArray(arr) { - return utils$1.isArray(arr) && !arr.some(isVisitable); - } - var predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); - }); - function toFormData(obj, formData, options) { - if (!utils$1.isObject(obj)) { - throw new TypeError("target must be an object"); - } - formData = formData || new FormData(); - options = utils$1.toFlatObject( - options, - { - metaTokens: true, - dots: false, - indexes: false - }, - false, - function defined(option, source) { - return !utils$1.isUndefined(source[option]); - } - ); - const metaTokens = options.metaTokens; - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || typeof Blob !== "undefined" && Blob; - const useBlob = _Blob && utils$1.isSpecCompliantForm(formData); - if (!utils$1.isFunction(visitor)) { - throw new TypeError("visitor must be a function"); - } - function convertValue(value) { - if (value === null) return ""; - if (utils$1.isDate(value)) { - return value.toISOString(); - } - if (utils$1.isBoolean(value)) { - return value.toString(); - } - if (!useBlob && utils$1.isBlob(value)) { - throw new AxiosError("Blob is not supported. Use a Buffer instead."); - } - if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) { - return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value); - } - return value; - } - function defaultVisitor(value, key, path) { - let arr = value; - if (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - if (value && !path && typeof value === "object") { - if (utils$1.endsWith(key, "{}")) { - key = metaTokens ? key : key.slice(0, -2); - value = JSON.stringify(value); - } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) { - key = removeBrackets(key); - arr.forEach(function each(el, index) { - !(utils$1.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + "[]", - convertValue(el) - ); - }); - return false; - } - } - if (isVisitable(value)) { - return true; - } - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - const stack = []; - const exposedHelpers = Object.assign(predicates, { - defaultVisitor, - convertValue, - isVisitable - }); - function build(value, path) { - if (utils$1.isUndefined(value)) return; - if (stack.indexOf(value) !== -1) { - throw Error("Circular reference detected in " + path.join(".")); - } - stack.push(value); - utils$1.forEach(value, function each(el, key) { - const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers); - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - stack.pop(); - } - if (!utils$1.isObject(obj)) { - throw new TypeError("data must be an object"); - } - build(obj); - return formData; - } - function encode$1(str) { - const charMap = { - "!": "%21", - "'": "%27", - "(": "%28", - ")": "%29", - "~": "%7E", - "%20": "+", - "%00": "\0" - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); - } - function AxiosURLSearchParams(params, options) { - this._pairs = []; - params && toFormData(params, this, options); - } - var prototype = AxiosURLSearchParams.prototype; - prototype.append = function append(name, value) { - this._pairs.push([name, value]); - }; - prototype.toString = function toString2(encoder) { - const _encode = encoder ? function(value) { - return encoder.call(this, value, encode$1); - } : encode$1; - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + "=" + _encode(pair[1]); - }, "").join("&"); - }; - function encode(val) { - return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+"); - } - function buildURL(url, params, options) { - if (!params) { - return url; - } - const _encode = options && options.encode || encode; - const _options = utils$1.isFunction(options) ? { - serialize: options - } : options; - const serializeFn = _options && _options.serialize; - let serializedParams; - if (serializeFn) { - serializedParams = serializeFn(params, _options); - } else { - serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, _options).toString(_encode); - } - if (serializedParams) { - const hashmarkIndex = url.indexOf("#"); - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams; - } - return url; - } - var InterceptorManager = class { - constructor() { - this.handlers = []; - } - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * @param {Object} options The options for the interceptor, synchronous and runWhen - * - * @return {Number} An ID used to remove interceptor later - */ - use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled, - rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {void} - */ - eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - clear() { - if (this.handlers) { - this.handlers = []; - } - } - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - forEach(fn) { - utils$1.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } - }; - var transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false, - legacyInterceptorReqResOrdering: true - }; - var URLSearchParams$1 = typeof URLSearchParams !== "undefined" ? URLSearchParams : AxiosURLSearchParams; - var FormData$1 = typeof FormData !== "undefined" ? FormData : null; - var Blob$1 = typeof Blob !== "undefined" ? Blob : null; - var platform$1 = { - isBrowser: true, - classes: { - URLSearchParams: URLSearchParams$1, - FormData: FormData$1, - Blob: Blob$1 - }, - protocols: ["http", "https", "file", "blob", "url", "data"] - }; - var hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined"; - var _navigator = typeof navigator === "object" && navigator || void 0; - var hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ["ReactNative", "NativeScript", "NS"].indexOf(_navigator.product) < 0); - var hasStandardBrowserWebWorkerEnv = (() => { - return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && typeof self.importScripts === "function"; - })(); - var origin = hasBrowserEnv && window.location.href || "http://localhost"; - var utils = /* @__PURE__ */ Object.freeze({ - __proto__: null, - hasBrowserEnv, - hasStandardBrowserEnv, - hasStandardBrowserWebWorkerEnv, - navigator: _navigator, - origin - }); - var platform = { - ...utils, - ...platform$1 - }; - function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), { - visitor: function(value, key, path, helpers) { - if (platform.isNode && utils$1.isBuffer(value)) { - this.append(key, value.toString("base64")); - return false; - } - return helpers.defaultVisitor.apply(this, arguments); - }, - ...options - }); - } - function parsePropPath(name) { - return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { - return match[0] === "[]" ? "" : match[1] || match[0]; - }); - } - function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; - } - function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - if (name === "__proto__") return true; - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils$1.isArray(target) ? target.length : name; - if (isLast) { - if (utils$1.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - return !isNumericKey; - } - if (!target[name] || !utils$1.isObject(target[name])) { - target[name] = []; - } - const result = buildPath(path, value, target[name], index); - if (result && utils$1.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - return !isNumericKey; - } - if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) { - const obj = {}; - utils$1.forEachEntry(formData, (name, value) => { - buildPath(parsePropPath(name), value, obj, 0); - }); - return obj; - } - return null; - } - function stringifySafely(rawValue, parser, encoder) { - if (utils$1.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils$1.trim(rawValue); - } catch (e) { - if (e.name !== "SyntaxError") { - throw e; - } - } - } - return (encoder || JSON.stringify)(rawValue); - } - var defaults = { - transitional: transitionalDefaults, - adapter: ["xhr", "http", "fetch"], - transformRequest: [ - function transformRequest(data, headers) { - const contentType = headers.getContentType() || ""; - const hasJSONContentType = contentType.indexOf("application/json") > -1; - const isObjectPayload = utils$1.isObject(data); - if (isObjectPayload && utils$1.isHTMLForm(data)) { - data = new FormData(data); - } - const isFormData2 = utils$1.isFormData(data); - if (isFormData2) { - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) { - return data; - } - if (utils$1.isArrayBufferView(data)) { - return data.buffer; - } - if (utils$1.isURLSearchParams(data)) { - headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false); - return data.toString(); - } - let isFileList2; - if (isObjectPayload) { - if (contentType.indexOf("application/x-www-form-urlencoded") > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) { - const _FormData = this.env && this.env.FormData; - return toFormData( - isFileList2 ? { "files[]": data } : data, - _FormData && new _FormData(), - this.formSerializer - ); - } - } - if (isObjectPayload || hasJSONContentType) { - headers.setContentType("application/json", false); - return stringifySafely(data); - } - return data; - } - ], - transformResponse: [ - function transformResponse(data) { - const transitional = this.transitional || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const JSONRequested = this.responseType === "json"; - if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { - return data; - } - if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - try { - return JSON.parse(data, this.parseReviver); - } catch (e) { - if (strictJSONParsing) { - if (e.name === "SyntaxError") { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - return data; - } - ], - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - xsrfCookieName: "XSRF-TOKEN", - xsrfHeaderName: "X-XSRF-TOKEN", - maxContentLength: -1, - maxBodyLength: -1, - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - headers: { - common: { - Accept: "application/json, text/plain, */*", - "Content-Type": void 0 - } - } - }; - utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => { - defaults.headers[method] = {}; - }); - var ignoreDuplicateOf = utils$1.toObjectSet([ - "age", - "authorization", - "content-length", - "content-type", - "etag", - "expires", - "from", - "host", - "if-modified-since", - "if-unmodified-since", - "last-modified", - "location", - "max-forwards", - "proxy-authorization", - "referer", - "retry-after", - "user-agent" - ]); - var parseHeaders = (rawHeaders) => { - const parsed = {}; - let key; - let val; - let i; - rawHeaders && rawHeaders.split("\n").forEach(function parser(line) { - i = line.indexOf(":"); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - if (!key || parsed[key] && ignoreDuplicateOf[key]) { - return; - } - if (key === "set-cookie") { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ", " + val : val; - } - }); - return parsed; - }; - var $internals = /* @__PURE__ */ Symbol("internals"); - var isValidHeaderValue = (value) => !/[\r\n]/.test(value); - function assertValidHeaderValue(value, header) { - if (value === false || value == null) { - return; - } - if (utils$1.isArray(value)) { - value.forEach((v) => assertValidHeaderValue(v, header)); - return; - } - if (!isValidHeaderValue(String(value))) { - throw new Error(`Invalid character in header content ["${header}"]`); - } - } - function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); - } - function stripTrailingCRLF(str) { - let end = str.length; - while (end > 0) { - const charCode = str.charCodeAt(end - 1); - if (charCode !== 10 && charCode !== 13) { - break; - } - end -= 1; - } - return end === str.length ? str : str.slice(0, end); - } - function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - return utils$1.isArray(value) ? value.map(normalizeValue) : stripTrailingCRLF(String(value)); - } - function parseTokens(str) { - const tokens = /* @__PURE__ */ Object.create(null); - const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - let match; - while (match = tokensRE.exec(str)) { - tokens[match[1]] = match[2]; - } - return tokens; - } - var isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils$1.isFunction(filter)) { - return filter.call(this, value, header); - } - if (isHeaderNameFilter) { - value = header; - } - if (!utils$1.isString(value)) return; - if (utils$1.isString(filter)) { - return value.indexOf(filter) !== -1; - } - if (utils$1.isRegExp(filter)) { - return filter.test(value); - } - } - function formatHeader(header) { - return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { - return char.toUpperCase() + str; - }); - } - function buildAccessors(obj, header) { - const accessorName = utils$1.toCamelCase(" " + header); - ["get", "set", "has"].forEach((methodName) => { - Object.defineProperty(obj, methodName + accessorName, { - value: function(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); - } - var AxiosHeaders = class { - constructor(headers) { - headers && this.set(headers); - } - set(header, valueOrRewrite, rewrite) { - const self2 = this; - function setHeader(_value, _header, _rewrite) { - const lHeader = normalizeHeader(_header); - if (!lHeader) { - throw new Error("header name must be a non-empty string"); - } - const key = utils$1.findKey(self2, lHeader); - if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) { - assertValidHeaderValue(_value, _header); - self2[key || _header] = normalizeValue(_value); - } - } - const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); - if (utils$1.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else if (utils$1.isObject(header) && utils$1.isIterable(header)) { - let obj = {}, dest, key; - for (const entry of header) { - if (!utils$1.isArray(entry)) { - throw TypeError("Object iterator must return a key-value pair"); - } - obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]] : entry[1]; - } - setHeaders(obj, valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - return this; - } - get(header, parser) { - header = normalizeHeader(header); - if (header) { - const key = utils$1.findKey(this, header); - if (key) { - const value = this[key]; - if (!parser) { - return value; - } - if (parser === true) { - return parseTokens(value); - } - if (utils$1.isFunction(parser)) { - return parser.call(this, value, key); - } - if (utils$1.isRegExp(parser)) { - return parser.exec(value); - } - throw new TypeError("parser must be boolean|regexp|function"); - } - } - } - has(header, matcher) { - header = normalizeHeader(header); - if (header) { - const key = utils$1.findKey(this, header); - return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - return false; - } - delete(header, matcher) { - const self2 = this; - let deleted = false; - function deleteHeader(_header) { - _header = normalizeHeader(_header); - if (_header) { - const key = utils$1.findKey(self2, _header); - if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) { - delete self2[key]; - deleted = true; - } - } - } - if (utils$1.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - return deleted; - } - clear(matcher) { - const keys = Object.keys(this); - let i = keys.length; - let deleted = false; - while (i--) { - const key = keys[i]; - if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - return deleted; - } - normalize(format) { - const self2 = this; - const headers = {}; - utils$1.forEach(this, (value, header) => { - const key = utils$1.findKey(headers, header); - if (key) { - self2[key] = normalizeValue(value); - delete self2[header]; - return; - } - const normalized = format ? formatHeader(header) : String(header).trim(); - if (normalized !== header) { - delete self2[header]; - } - self2[normalized] = normalizeValue(value); - headers[normalized] = true; - }); - return this; - } - concat(...targets) { - return this.constructor.concat(this, ...targets); - } - toJSON(asStrings) { - const obj = /* @__PURE__ */ Object.create(null); - utils$1.forEach(this, (value, header) => { - value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value); - }); - return obj; - } - [Symbol.iterator]() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - toString() { - return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n"); - } - getSetCookie() { - return this.get("set-cookie") || []; - } - get [Symbol.toStringTag]() { - return "AxiosHeaders"; - } - static from(thing) { - return thing instanceof this ? thing : new this(thing); - } - static concat(first, ...targets) { - const computed = new this(first); - targets.forEach((target) => computed.set(target)); - return computed; - } - static accessor(header) { - const internals = this[$internals] = this[$internals] = { - accessors: {} - }; - const accessors = internals.accessors; - const prototype2 = this.prototype; - function defineAccessor(_header) { - const lHeader = normalizeHeader(_header); - if (!accessors[lHeader]) { - buildAccessors(prototype2, _header); - accessors[lHeader] = true; - } - } - utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - return this; - } - }; - AxiosHeaders.accessor([ - "Content-Type", - "Content-Length", - "Accept", - "Accept-Encoding", - "User-Agent", - "Authorization" - ]); - utils$1.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { - let mapped = key[0].toUpperCase() + key.slice(1); - return { - get: () => value, - set(headerValue) { - this[mapped] = headerValue; - } - }; - }); - utils$1.freezeMethods(AxiosHeaders); - function transformData(fns, response) { - const config = this || defaults; - const context = response || config; - const headers = AxiosHeaders.from(context.headers); - let data = context.data; - utils$1.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : void 0); - }); - headers.normalize(); - return data; - } - function isCancel(value) { - return !!(value && value.__CANCEL__); - } - var CanceledError = class extends AxiosError { - /** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ - constructor(message, config, request) { - super(message == null ? "canceled" : message, AxiosError.ERR_CANCELED, config, request); - this.name = "CanceledError"; - this.__CANCEL__ = true; - } - }; - function settle(resolve, reject, response) { - const validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject( - new AxiosError( - "Request failed with status code " + response.status, - [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], - response.config, - response.request, - response - ) - ); - } - } - function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ""; - } - function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - min = min !== void 0 ? min : 1e3; - return function push(chunkLength) { - const now = Date.now(); - const startedAt = timestamps[tail]; - if (!firstSampleTS) { - firstSampleTS = now; - } - bytes[head] = chunkLength; - timestamps[head] = now; - let i = tail; - let bytesCount = 0; - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - head = (head + 1) % samplesCount; - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - if (now - firstSampleTS < min) { - return; - } - const passed = startedAt && now - startedAt; - return passed ? Math.round(bytesCount * 1e3 / passed) : void 0; - }; - } - function throttle(fn, freq) { - let timestamp = 0; - let threshold = 1e3 / freq; - let lastArgs; - let timer; - const invoke = (args, now = Date.now()) => { - timestamp = now; - lastArgs = null; - if (timer) { - clearTimeout(timer); - timer = null; - } - fn(...args); - }; - const throttled = (...args) => { - const now = Date.now(); - const passed = now - timestamp; - if (passed >= threshold) { - invoke(args, now); - } else { - lastArgs = args; - if (!timer) { - timer = setTimeout(() => { - timer = null; - invoke(lastArgs); - }, threshold - passed); - } - } - }; - const flush = () => lastArgs && invoke(lastArgs); - return [throttled, flush]; - } - var progressEventReducer = (listener, isDownloadStream, freq = 3) => { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - return throttle((e) => { - const loaded = e.loaded; - const total = e.lengthComputable ? e.total : void 0; - const progressBytes = loaded - bytesNotified; - const rate = _speedometer(progressBytes); - const inRange = loaded <= total; - bytesNotified = loaded; - const data = { - loaded, - total, - progress: total ? loaded / total : void 0, - bytes: progressBytes, - rate: rate ? rate : void 0, - estimated: rate && total && inRange ? (total - loaded) / rate : void 0, - event: e, - lengthComputable: total != null, - [isDownloadStream ? "download" : "upload"]: true - }; - listener(data); - }, freq); - }; - var progressEventDecorator = (total, throttled) => { - const lengthComputable = total != null; - return [ - (loaded) => throttled[0]({ - lengthComputable, - total, - loaded - }), - throttled[1] - ]; - }; - var asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args)); - var isURLSameOrigin = platform.hasStandardBrowserEnv ? /* @__PURE__ */ ((origin2, isMSIE) => (url) => { - url = new URL(url, platform.origin); - return origin2.protocol === url.protocol && origin2.host === url.host && (isMSIE || origin2.port === url.port); - })( - new URL(platform.origin), - platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) - ) : () => true; - var cookies = platform.hasStandardBrowserEnv ? ( - // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure, sameSite) { - if (typeof document === "undefined") return; - const cookie = [`${name}=${encodeURIComponent(value)}`]; - if (utils$1.isNumber(expires)) { - cookie.push(`expires=${new Date(expires).toUTCString()}`); - } - if (utils$1.isString(path)) { - cookie.push(`path=${path}`); - } - if (utils$1.isString(domain)) { - cookie.push(`domain=${domain}`); - } - if (secure === true) { - cookie.push("secure"); - } - if (utils$1.isString(sameSite)) { - cookie.push(`SameSite=${sameSite}`); - } - document.cookie = cookie.join("; "); - }, - read(name) { - if (typeof document === "undefined") return null; - const match = document.cookie.match(new RegExp("(?:^|; )" + name + "=([^;]*)")); - return match ? decodeURIComponent(match[1]) : null; - }, - remove(name) { - this.write(name, "", Date.now() - 864e5, "/"); - } - } - ) : ( - // Non-standard browser env (web workers, react-native) lack needed support. - { - write() { - }, - read() { - return null; - }, - remove() { - } - } - ); - function isAbsoluteURL(url) { - if (typeof url !== "string") { - return false; - } - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); - } - function combineURLs(baseURL, relativeURL) { - return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL; - } - function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { - let isRelativeUrl = !isAbsoluteURL(requestedURL); - if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; - } - var headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing; - function mergeConfig(config1, config2) { - config2 = config2 || {}; - const config = {}; - function getMergedValue(target, source, prop, caseless) { - if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) { - return utils$1.merge.call({ caseless }, target, source); - } else if (utils$1.isPlainObject(source)) { - return utils$1.merge({}, source); - } else if (utils$1.isArray(source)) { - return source.slice(); - } - return source; - } - function mergeDeepProperties(a, b, prop, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, prop, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(void 0, a, prop, caseless); - } - } - function valueFromConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(void 0, b); - } - } - function defaultToConfig2(a, b) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(void 0, b); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(void 0, a); - } - } - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(void 0, a); - } - } - const mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - withXSRFToken: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true) - }; - utils$1.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { - if (prop === "__proto__" || prop === "constructor" || prop === "prototype") return; - const merge2 = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; - const configValue = merge2(config1[prop], config2[prop], prop); - utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue); - }); - return config; - } - var resolveConfig = (config) => { - const newConfig = mergeConfig({}, config); - let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; - newConfig.headers = headers = AxiosHeaders.from(headers); - newConfig.url = buildURL( - buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), - config.params, - config.paramsSerializer - ); - if (auth) { - headers.set( - "Authorization", - "Basic " + btoa( - (auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : "") - ) - ); - } - if (utils$1.isFormData(data)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - headers.setContentType(void 0); - } else if (utils$1.isFunction(data.getHeaders)) { - const formHeaders = data.getHeaders(); - const allowedHeaders = ["content-type", "content-length"]; - Object.entries(formHeaders).forEach(([key, val]) => { - if (allowedHeaders.includes(key.toLowerCase())) { - headers.set(key, val); - } - }); - } - } - if (platform.hasStandardBrowserEnv) { - withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); - if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) { - const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); - if (xsrfValue) { - headers.set(xsrfHeaderName, xsrfValue); - } - } - } - return newConfig; - }; - var isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined"; - var xhrAdapter = isXHRAdapterSupported && function(config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - const _config = resolveConfig(config); - let requestData = _config.data; - const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); - let { responseType, onUploadProgress, onDownloadProgress } = _config; - let onCanceled; - let uploadThrottled, downloadThrottled; - let flushUpload, flushDownload; - function done() { - flushUpload && flushUpload(); - flushDownload && flushDownload(); - _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - _config.signal && _config.signal.removeEventListener("abort", onCanceled); - } - let request = new XMLHttpRequest(); - request.open(_config.method.toUpperCase(), _config.url, true); - request.timeout = _config.timeout; - function onloadend() { - if (!request) { - return; - } - const responseHeaders = AxiosHeaders.from( - "getAllResponseHeaders" in request && request.getAllResponseHeaders() - ); - const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response; - const response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config, - request - }; - settle( - function _resolve(value) { - resolve(value); - done(); - }, - function _reject(err) { - reject(err); - done(); - }, - response - ); - request = null; - } - if ("onloadend" in request) { - request.onloadend = onloadend; - } else { - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) { - return; - } - setTimeout(onloadend); - }; - } - request.onabort = function handleAbort() { - if (!request) { - return; - } - reject(new AxiosError("Request aborted", AxiosError.ECONNABORTED, config, request)); - request = null; - }; - request.onerror = function handleError(event) { - const msg = event && event.message ? event.message : "Network Error"; - const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); - err.event = event || null; - reject(err); - request = null; - }; - request.ontimeout = function handleTimeout() { - let timeoutErrorMessage = _config.timeout ? "timeout of " + _config.timeout + "ms exceeded" : "timeout exceeded"; - const transitional = _config.transitional || transitionalDefaults; - if (_config.timeoutErrorMessage) { - timeoutErrorMessage = _config.timeoutErrorMessage; - } - reject( - new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - request - ) - ); - request = null; - }; - requestData === void 0 && requestHeaders.setContentType(null); - if ("setRequestHeader" in request) { - utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - if (!utils$1.isUndefined(_config.withCredentials)) { - request.withCredentials = !!_config.withCredentials; - } - if (responseType && responseType !== "json") { - request.responseType = _config.responseType; - } - if (onDownloadProgress) { - [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); - request.addEventListener("progress", downloadThrottled); - } - if (onUploadProgress && request.upload) { - [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); - request.upload.addEventListener("progress", uploadThrottled); - request.upload.addEventListener("loadend", flushUpload); - } - if (_config.cancelToken || _config.signal) { - onCanceled = (cancel) => { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - _config.cancelToken && _config.cancelToken.subscribe(onCanceled); - if (_config.signal) { - _config.signal.aborted ? onCanceled() : _config.signal.addEventListener("abort", onCanceled); - } - } - const protocol = parseProtocol(_config.url); - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject( - new AxiosError( - "Unsupported protocol " + protocol + ":", - AxiosError.ERR_BAD_REQUEST, - config - ) - ); - return; - } - request.send(requestData || null); - }); - }; - var composeSignals = (signals, timeout) => { - const { length } = signals = signals ? signals.filter(Boolean) : []; - if (timeout || length) { - let controller = new AbortController(); - let aborted; - const onabort = function(reason) { - if (!aborted) { - aborted = true; - unsubscribe(); - const err = reason instanceof Error ? reason : this.reason; - controller.abort( - err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err) - ); - } - }; - let timer = timeout && setTimeout(() => { - timer = null; - onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT)); - }, timeout); - const unsubscribe = () => { - if (signals) { - timer && clearTimeout(timer); - timer = null; - signals.forEach((signal2) => { - signal2.unsubscribe ? signal2.unsubscribe(onabort) : signal2.removeEventListener("abort", onabort); - }); - signals = null; - } - }; - signals.forEach((signal2) => signal2.addEventListener("abort", onabort)); - const { signal } = controller; - signal.unsubscribe = () => utils$1.asap(unsubscribe); - return signal; - } - }; - var streamChunk = function* (chunk, chunkSize) { - let len = chunk.byteLength; - if (len < chunkSize) { - yield chunk; - return; - } - let pos = 0; - let end; - while (pos < len) { - end = pos + chunkSize; - yield chunk.slice(pos, end); - pos = end; - } - }; - var readBytes = async function* (iterable, chunkSize) { - for await (const chunk of readStream(iterable)) { - yield* streamChunk(chunk, chunkSize); - } - }; - var readStream = async function* (stream) { - if (stream[Symbol.asyncIterator]) { - yield* stream; - return; - } - const reader = stream.getReader(); - try { - for (; ; ) { - const { done, value } = await reader.read(); - if (done) { - break; - } - yield value; - } - } finally { - await reader.cancel(); - } - }; - var trackStream = (stream, chunkSize, onProgress, onFinish) => { - const iterator2 = readBytes(stream, chunkSize); - let bytes = 0; - let done; - let _onFinish = (e) => { - if (!done) { - done = true; - onFinish && onFinish(e); - } - }; - return new ReadableStream( - { - async pull(controller) { - try { - const { done: done2, value } = await iterator2.next(); - if (done2) { - _onFinish(); - controller.close(); - return; - } - let len = value.byteLength; - if (onProgress) { - let loadedBytes = bytes += len; - onProgress(loadedBytes); - } - controller.enqueue(new Uint8Array(value)); - } catch (err) { - _onFinish(err); - throw err; - } - }, - cancel(reason) { - _onFinish(reason); - return iterator2.return(); - } - }, - { - highWaterMark: 2 - } - ); - }; - var DEFAULT_CHUNK_SIZE = 64 * 1024; - var { isFunction } = utils$1; - var globalFetchAPI = (({ Request, Response }) => ({ - Request, - Response - }))(utils$1.global); - var { ReadableStream: ReadableStream$1, TextEncoder } = utils$1.global; - var test = (fn, ...args) => { - try { - return !!fn(...args); - } catch (e) { - return false; - } - }; - var factory = (env) => { - env = utils$1.merge.call( - { - skipUndefined: true - }, - globalFetchAPI, - env - ); - const { fetch: envFetch, Request, Response } = env; - const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === "function"; - const isRequestSupported = isFunction(Request); - const isResponseSupported = isFunction(Response); - if (!isFetchSupported) { - return false; - } - const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); - const encodeText = isFetchSupported && (typeof TextEncoder === "function" ? /* @__PURE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); - const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => { - let duplexAccessed = false; - const body = new ReadableStream$1(); - const hasContentType = new Request(platform.origin, { - body, - method: "POST", - get duplex() { - duplexAccessed = true; - return "half"; - } - }).headers.has("Content-Type"); - body.cancel(); - return duplexAccessed && !hasContentType; - }); - const supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response("").body)); - const resolvers = { - stream: supportsResponseStream && ((res) => res.body) - }; - isFetchSupported && (() => { - ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => { - !resolvers[type] && (resolvers[type] = (res, config) => { - let method = res && res[type]; - if (method) { - return method.call(res); - } - throw new AxiosError( - `Response type '${type}' is not supported`, - AxiosError.ERR_NOT_SUPPORT, - config - ); - }); - }); - })(); - const getBodyLength = async (body) => { - if (body == null) { - return 0; - } - if (utils$1.isBlob(body)) { - return body.size; - } - if (utils$1.isSpecCompliantForm(body)) { - const _request = new Request(platform.origin, { - method: "POST", - body - }); - return (await _request.arrayBuffer()).byteLength; - } - if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { - return body.byteLength; - } - if (utils$1.isURLSearchParams(body)) { - body = body + ""; - } - if (utils$1.isString(body)) { - return (await encodeText(body)).byteLength; - } - }; - const resolveBodyLength = async (headers, body) => { - const length = utils$1.toFiniteNumber(headers.getContentLength()); - return length == null ? getBodyLength(body) : length; - }; - return async (config) => { - let { - url, - method, - data, - signal, - cancelToken, - timeout, - onDownloadProgress, - onUploadProgress, - responseType, - headers, - withCredentials = "same-origin", - fetchOptions - } = resolveConfig(config); - let _fetch = envFetch || fetch; - responseType = responseType ? (responseType + "").toLowerCase() : "text"; - let composedSignal = composeSignals( - [signal, cancelToken && cancelToken.toAbortSignal()], - timeout - ); - let request = null; - const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { - composedSignal.unsubscribe(); - }); - let requestContentLength; - try { - if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) { - let _request = new Request(url, { - method: "POST", - body: data, - duplex: "half" - }); - let contentTypeHeader; - if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) { - headers.setContentType(contentTypeHeader); - } - if (_request.body) { - const [onProgress, flush] = progressEventDecorator( - requestContentLength, - progressEventReducer(asyncDecorator(onUploadProgress)) - ); - data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); - } - } - if (!utils$1.isString(withCredentials)) { - withCredentials = withCredentials ? "include" : "omit"; - } - const isCredentialsSupported = isRequestSupported && "credentials" in Request.prototype; - const resolvedOptions = { - ...fetchOptions, - signal: composedSignal, - method: method.toUpperCase(), - headers: headers.normalize().toJSON(), - body: data, - duplex: "half", - credentials: isCredentialsSupported ? withCredentials : void 0 - }; - request = isRequestSupported && new Request(url, resolvedOptions); - let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions)); - const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response"); - if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { - const options = {}; - ["status", "statusText", "headers"].forEach((prop) => { - options[prop] = response[prop]; - }); - const responseContentLength = utils$1.toFiniteNumber(response.headers.get("content-length")); - const [onProgress, flush] = onDownloadProgress && progressEventDecorator( - responseContentLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true) - ) || []; - response = new Response( - trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { - flush && flush(); - unsubscribe && unsubscribe(); - }), - options - ); - } - responseType = responseType || "text"; - let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || "text"]( - response, - config - ); - !isStreamResponse && unsubscribe && unsubscribe(); - return await new Promise((resolve, reject) => { - settle(resolve, reject, { - data: responseData, - headers: AxiosHeaders.from(response.headers), - status: response.status, - statusText: response.statusText, - config, - request - }); - }); - } catch (err) { - unsubscribe && unsubscribe(); - if (err && err.name === "TypeError" && /Load failed|fetch/i.test(err.message)) { - throw Object.assign( - new AxiosError( - "Network Error", - AxiosError.ERR_NETWORK, - config, - request, - err && err.response - ), - { - cause: err.cause || err - } - ); - } - throw AxiosError.from(err, err && err.code, config, request, err && err.response); - } - }; - }; - var seedCache = /* @__PURE__ */ new Map(); - var getFetch = (config) => { - let env = config && config.env || {}; - const { fetch: fetch2, Request, Response } = env; - const seeds = [Request, Response, fetch2]; - let len = seeds.length, i = len, seed, target, map = seedCache; - while (i--) { - seed = seeds[i]; - target = map.get(seed); - target === void 0 && map.set(seed, target = i ? /* @__PURE__ */ new Map() : factory(env)); - map = target; - } - return target; - }; - getFetch(); - var knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter, - fetch: { - get: getFetch - } - }; - utils$1.forEach(knownAdapters, (fn, value) => { - if (fn) { - try { - Object.defineProperty(fn, "name", { value }); - } catch (e) { - } - Object.defineProperty(fn, "adapterName", { value }); - } - }); - var renderReason = (reason) => `- ${reason}`; - var isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false; - function getAdapter(adapters2, config) { - adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2]; - const { length } = adapters2; - let nameOrAdapter; - let adapter; - const rejectedReasons = {}; - for (let i = 0; i < length; i++) { - nameOrAdapter = adapters2[i]; - let id; - adapter = nameOrAdapter; - if (!isResolvedHandle(nameOrAdapter)) { - adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; - if (adapter === void 0) { - throw new AxiosError(`Unknown adapter '${id}'`); - } - } - if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { - break; - } - rejectedReasons[id || "#" + i] = adapter; - } - if (!adapter) { - const reasons = Object.entries(rejectedReasons).map( - ([id, state2]) => `adapter ${id} ` + (state2 === false ? "is not supported by the environment" : "is not available in the build") - ); - let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified"; - throw new AxiosError( - `There is no suitable adapter to dispatch the request ` + s, - "ERR_NOT_SUPPORT" - ); - } - return adapter; - } - var adapters = { - /** - * Resolve an adapter from a list of adapter names or functions. - * @type {Function} - */ - getAdapter, - /** - * Exposes all known adapters - * @type {Object} - */ - adapters: knownAdapters - }; - function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } - } - function dispatchRequest(config) { - throwIfCancellationRequested(config); - config.headers = AxiosHeaders.from(config.headers); - config.data = transformData.call(config, config.transformRequest); - if (["post", "put", "patch"].indexOf(config.method) !== -1) { - config.headers.setContentType("application/x-www-form-urlencoded", false); - } - const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config); - return adapter(config).then( - function onAdapterResolution(response) { - throwIfCancellationRequested(config); - response.data = transformData.call(config, config.transformResponse, response); - response.headers = AxiosHeaders.from(response.headers); - return response; - }, - function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - if (reason && reason.response) { - reason.response.data = transformData.call( - config, - config.transformResponse, - reason.response - ); - reason.response.headers = AxiosHeaders.from(reason.response.headers); - } - } - return Promise.reject(reason); - } - ); - } - var VERSION = "1.15.0"; - var validators$1 = {}; - ["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i) => { - validators$1[type] = function validator2(thing) { - return typeof thing === type || "a" + (i < 1 ? "n " : " ") + type; - }; - }); - var deprecatedWarnings = {}; - validators$1.transitional = function transitional(validator2, version, message) { - function formatMessage(opt, desc) { - return "[Axios v" + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : ""); - } - return (value, opt, opts) => { - if (validator2 === false) { - throw new AxiosError( - formatMessage(opt, " has been removed" + (version ? " in " + version : "")), - AxiosError.ERR_DEPRECATED - ); - } - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - console.warn( - formatMessage( - opt, - " has been deprecated since v" + version + " and will be removed in the near future" - ) - ); - } - return validator2 ? validator2(value, opt, opts) : true; - }; - }; - validators$1.spelling = function spelling(correctSpelling) { - return (value, opt) => { - console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); - return true; - }; - }; - function assertOptions(options, schema, allowUnknown) { - if (typeof options !== "object") { - throw new AxiosError("options must be an object", AxiosError.ERR_BAD_OPTION_VALUE); - } - const keys = Object.keys(options); - let i = keys.length; - while (i-- > 0) { - const opt = keys[i]; - const validator2 = schema[opt]; - if (validator2) { - const value = options[opt]; - const result = value === void 0 || validator2(value, opt, options); - if (result !== true) { - throw new AxiosError( - "option " + opt + " must be " + result, - AxiosError.ERR_BAD_OPTION_VALUE - ); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError("Unknown option " + opt, AxiosError.ERR_BAD_OPTION); - } - } - } - var validator = { - assertOptions, - validators: validators$1 - }; - var validators = validator.validators; - var Axios = class { - constructor(instanceConfig) { - this.defaults = instanceConfig || {}; - this.interceptors = { - request: new InterceptorManager(), - response: new InterceptorManager() - }; - } - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - async request(configOrUrl, config) { - try { - return await this._request(configOrUrl, config); - } catch (err) { - if (err instanceof Error) { - let dummy = {}; - Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error(); - const stack = (() => { - if (!dummy.stack) { - return ""; - } - const firstNewlineIndex = dummy.stack.indexOf("\n"); - return firstNewlineIndex === -1 ? "" : dummy.stack.slice(firstNewlineIndex + 1); - })(); - try { - if (!err.stack) { - err.stack = stack; - } else if (stack) { - const firstNewlineIndex = stack.indexOf("\n"); - const secondNewlineIndex = firstNewlineIndex === -1 ? -1 : stack.indexOf("\n", firstNewlineIndex + 1); - const stackWithoutTwoTopLines = secondNewlineIndex === -1 ? "" : stack.slice(secondNewlineIndex + 1); - if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) { - err.stack += "\n" + stack; - } - } - } catch (e) { - } - } - throw err; - } - } - _request(configOrUrl, config) { - if (typeof configOrUrl === "string") { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - config = mergeConfig(this.defaults, config); - const { transitional, paramsSerializer, headers } = config; - if (transitional !== void 0) { - validator.assertOptions( - transitional, - { - silentJSONParsing: validators.transitional(validators.boolean), - forcedJSONParsing: validators.transitional(validators.boolean), - clarifyTimeoutError: validators.transitional(validators.boolean), - legacyInterceptorReqResOrdering: validators.transitional(validators.boolean) - }, - false - ); - } - if (paramsSerializer != null) { - if (utils$1.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions( - paramsSerializer, - { - encode: validators.function, - serialize: validators.function - }, - true - ); - } - } - if (config.allowAbsoluteUrls !== void 0) ; - else if (this.defaults.allowAbsoluteUrls !== void 0) { - config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; - } else { - config.allowAbsoluteUrls = true; - } - validator.assertOptions( - config, - { - baseUrl: validators.spelling("baseURL"), - withXsrfToken: validators.spelling("withXSRFToken") - }, - true - ); - config.method = (config.method || this.defaults.method || "get").toLowerCase(); - let contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]); - headers && utils$1.forEach(["delete", "get", "head", "post", "put", "patch", "common"], (method) => { - delete headers[method]; - }); - config.headers = AxiosHeaders.concat(contextHeaders, headers); - const requestInterceptorChain = []; - let synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) { - return; - } - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - const transitional2 = config.transitional || transitionalDefaults; - const legacyInterceptorReqResOrdering = transitional2 && transitional2.legacyInterceptorReqResOrdering; - if (legacyInterceptorReqResOrdering) { - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - } else { - requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - } - }); - const responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - let promise; - let i = 0; - let len; - if (!synchronousRequestInterceptors) { - const chain = [dispatchRequest.bind(this), void 0]; - chain.unshift(...requestInterceptorChain); - chain.push(...responseInterceptorChain); - len = chain.length; - promise = Promise.resolve(config); - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - return promise; - } - len = requestInterceptorChain.length; - let newConfig = config; - while (i < len) { - const onFulfilled = requestInterceptorChain[i++]; - const onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - i = 0; - len = responseInterceptorChain.length; - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - return promise; - } - getUri(config) { - config = mergeConfig(this.defaults, config); - const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); - return buildURL(fullPath, config.params, config.paramsSerializer); - } - }; - utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) { - Axios.prototype[method] = function(url, config) { - return this.request( - mergeConfig(config || {}, { - method, - url, - data: (config || {}).data - }) - ); - }; - }); - utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) { - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request( - mergeConfig(config || {}, { - method, - headers: isForm ? { - "Content-Type": "multipart/form-data" - } : {}, - url, - data - }) - ); - }; - } - Axios.prototype[method] = generateHTTPMethod(); - Axios.prototype[method + "Form"] = generateHTTPMethod(true); - }); - var CancelToken = class _CancelToken { - constructor(executor) { - if (typeof executor !== "function") { - throw new TypeError("executor must be a function."); - } - let resolvePromise; - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - const token = this; - this.promise.then((cancel) => { - if (!token._listeners) return; - let i = token._listeners.length; - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - this.promise.then = (onfulfilled) => { - let _resolve; - const promise = new Promise((resolve) => { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - return promise; - }; - executor(function cancel(message, config, request) { - if (token.reason) { - return; - } - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - /** - * Subscribe to the cancel signal - */ - subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - /** - * Unsubscribe from the cancel signal - */ - unsubscribe(listener) { - if (!this._listeners) { - return; - } - const index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - toAbortSignal() { - const controller = new AbortController(); - const abort = (err) => { - controller.abort(err); - }; - this.subscribe(abort); - controller.signal.unsubscribe = () => this.unsubscribe(abort); - return controller.signal; - } - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - static source() { - let cancel; - const token = new _CancelToken(function executor(c) { - cancel = c; - }); - return { - token, - cancel - }; - } - }; - function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; - } - function isAxiosError(payload) { - return utils$1.isObject(payload) && payload.isAxiosError === true; - } - var HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, - WebServerIsDown: 521, - ConnectionTimedOut: 522, - OriginIsUnreachable: 523, - TimeoutOccurred: 524, - SslHandshakeFailed: 525, - InvalidSslCertificate: 526 - }; - Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; - }); - function createInstance(defaultConfig) { - const context = new Axios(defaultConfig); - const instance = bind(Axios.prototype.request, context); - utils$1.extend(instance, Axios.prototype, context, { allOwnKeys: true }); - utils$1.extend(instance, context, null, { allOwnKeys: true }); - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - return instance; - } - var axios = createInstance(defaults); - axios.Axios = Axios; - axios.CanceledError = CanceledError; - axios.CancelToken = CancelToken; - axios.isCancel = isCancel; - axios.VERSION = VERSION; - axios.toFormData = toFormData; - axios.AxiosError = AxiosError; - axios.Cancel = axios.CanceledError; - axios.all = function all(promises) { - return Promise.all(promises); - }; - axios.spread = spread; - axios.isAxiosError = isAxiosError; - axios.mergeConfig = mergeConfig; - axios.AxiosHeaders = AxiosHeaders; - axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - axios.getAdapter = adapters.getAdapter; - axios.HttpStatusCode = HttpStatusCode; - axios.default = axios; - module.exports = axios; - } - }); - - // src/shared/config.js - var require_config = __commonJS({ - "src/shared/config.js"(exports, module) { - function readLocalStorageJson(key) { - const value = localStorage.getItem(key); - if (!value) return null; - try { - return JSON.parse(value); - } catch (e) { - console.warn(`Ignoring corrupt local setting "${key}":`, e); - localStorage.removeItem(key); - return null; - } - } - var storeGet2 = async (key) => { - if (window.electronAPI) { - return await window.electronAPI.storeGet(key); - } - return readLocalStorageJson(key); - }; - var storeSet2 = async (key, value) => { - if (window.electronAPI) { - return await window.electronAPI.storeSet(key, value); - } - localStorage.setItem(key, JSON.stringify(value)); - }; - var storeDelete2 = async (key) => { - if (window.electronAPI) { - return await window.electronAPI.storeDelete(key); - } - localStorage.removeItem(key); - }; - var storeClear2 = async () => { - if (window.electronAPI) { - return await window.electronAPI.storeClear(); - } - localStorage.clear(); - }; - if (typeof module !== "undefined" && module.exports) { - module.exports = { storeGet: storeGet2, storeSet: storeSet2, storeDelete: storeDelete2, storeClear: storeClear2 }; - } - if (typeof window !== "undefined") { - window.config = { storeGet: storeGet2, storeSet: storeSet2, storeDelete: storeDelete2, storeClear: storeClear2 }; - } - } - }); - - // src/renderer/js/connection/request_policy.js - var require_request_policy = __commonJS({ - "src/renderer/js/connection/request_policy.js"(exports, module) { - var SAFE_METHODS = /* @__PURE__ */ new Set(["get", "head"]); - function isRetryableTransportOrServer(error) { - if (!error || !error.config) return false; - if (error.code === "ECONNABORTED") return true; - if (error.code === "ECONNRESET" || error.code === "ETIMEDOUT") return true; - if (!error.response) return true; - const s = error.response.status; - return s === 502 || s === 503 || s === 504; - } - function attachIdempotentRetryInterceptors(axiosInstance, options = {}) { - const maxRetries = options.maxRetries ?? 3; - const baseDelayMs = options.baseDelayMs ?? 400; - axiosInstance.interceptors.response.use( - (response) => response, - async (error) => { - const config = error.config; - if (!config) return Promise.reject(error); - const method = String(config.method || "get").toLowerCase(); - if (!SAFE_METHODS.has(method)) return Promise.reject(error); - const count = config.__retryCount || 0; - if (count >= maxRetries) return Promise.reject(error); - if (!isRetryableTransportOrServer(error)) return Promise.reject(error); - config.__retryCount = count + 1; - const backoff = baseDelayMs * 2 ** (config.__retryCount - 1); - const jitter = Math.random() * 250; - await new Promise((r) => setTimeout(r, backoff + jitter)); - return axiosInstance(config); - } - ); - } - module.exports = { attachIdempotentRetryInterceptors, isRetryableTransportOrServer, SAFE_METHODS }; - } - }); - - // src/renderer/js/api/client.js - var require_client = __commonJS({ - "src/renderer/js/api/client.js"(exports, module) { - var axios = require_axios(); - var cfg = typeof window !== "undefined" && window.config ? window.config : (function() { - try { - return require_config(); - } catch (_) { - return {}; - } - })(); - var storeGet2 = cfg.storeGet || (async (k) => null); - var storeSet2 = cfg.storeSet || (async (k, v) => { - }); - function isTlsRelatedError(error) { - const code = error && error.code; - const msg = error && error.message || ""; - const tlsCodes = /* @__PURE__ */ new Set([ - "DEPTH_ZERO_SELF_SIGNED_CERT", - "CERT_HAS_EXPIRED", - "CERT_NOT_YET_VALID", - "UNABLE_TO_VERIFY_LEAF_SIGNATURE", - "ERR_TLS_CERT_ALTNAME_INVALID", - "SELF_SIGNED_CERT_IN_CHAIN", - "UNABLE_TO_GET_ISSUER_CERT_LOCALLY" - ]); - if (code && tlsCodes.has(code)) return true; - if (/certificate|ssl|tls|UNABLE_TO_VERIFY/i.test(msg)) return true; - return false; - } - function classifyAxiosError2(error) { - if (isTlsRelatedError(error)) { - return { - code: "TLS", - message: "SSL/TLS certificate could not be verified. If the server uses a self-signed certificate, install a trusted CA or use http:// only on trusted networks." - }; - } - if (error.response) { - const status = error.response.status; - const data = error.response.data; - if (status === 401) { - return { - code: "UNAUTHORIZED", - message: "Authentication failed. Sign in again." - }; - } - if (status === 403) { - return { - code: "FORBIDDEN", - message: "Access denied. Your token may not have the required permissions (e.g. read:users)." - }; - } - if (status === 404) { - return { - code: "NOT_FOUND", - message: data?.error || "Resource not found. Is the base URL correct (no extra path)?" - }; - } - if (status >= 500) { - return { code: "SERVER_ERROR", message: "Server error. Please try again later." }; - } - if (data && typeof data === "object" && data.error) { - return { code: "HTTP_" + status, message: String(data.error) }; - } - return { code: "HTTP_" + status, message: `Server returned HTTP ${status}.` }; - } - if (error.code === "ECONNABORTED" || error.code === "ETIMEDOUT") { - return { - code: "TIMEOUT", - message: "Request timed out. Check the server URL, firewall, and network." - }; - } - if (error.code === "ENOTFOUND") { - return { - code: "DNS", - message: "Host not found (DNS). Check the hostname in your server URL." - }; - } - if (error.code === "ECONNREFUSED") { - return { - code: "REFUSED", - message: "Connection refused. Check the host, port, and that the TimeTracker server is running." - }; - } - if (error.code === "ENETUNREACH" || error.code === "EHOSTUNREACH") { - return { - code: "UNREACHABLE", - message: "Network unreachable. Check your connection and server address." - }; - } - const msg = error.message || "Unknown error"; - if (!error.response) { - return { - code: "UNKNOWN", - message: "Server not reachable. Check the URL, VPN, firewall, and that the TimeTracker server is running." - }; - } - return { code: "UNKNOWN", message: msg }; - } - function isTimeTrackerInfoPayload(data) { - return data !== null && typeof data === "object" && !Array.isArray(data) && data.api_version === "v1" && typeof data.endpoints === "object"; - } - var { attachIdempotentRetryInterceptors } = require_request_policy(); - var ApiClient2 = class _ApiClient { - /** - * @param {string} baseUrl - * @param {{ enableIdempotentRetry?: boolean, timeoutMs?: number }} [options] - */ - constructor(baseUrl, options = {}) { - const normalized = _ApiClient.normalizeBaseUrl(baseUrl); - this.baseUrl = normalized; - this.client = axios.create({ - baseURL: normalized, - timeout: options.timeoutMs ?? 1e4, - headers: { - "Content-Type": "application/json", - Accept: "application/json" - } - }); - this.setupInterceptors(); - if (options.enableIdempotentRetry !== false) { - attachIdempotentRetryInterceptors(this.client); - } - } - setupInterceptors() { - this.client.interceptors.request.use(async (config) => { - const token = await storeGet2("api_token"); - if (token) { - config.headers.Authorization = `Bearer ${token}`; - } - return config; - }); - this.client.interceptors.response.use( - (response) => response, - (error) => { - if (error.response) { - const status = error.response.status; - const data = error.response.data; - if (status === 401) { - error.message = "Authentication failed. Please sign in again."; - } else if (status === 403) { - error.message = "Access denied. Your token may not have the required permissions."; - } else if (status === 404) { - error.message = data?.error || "Resource not found."; - } else if (status >= 500) { - error.message = "Server error. Please try again later."; - } else if (data?.error) { - error.message = data.error; - } - } else if (error.code === "ECONNABORTED") { - error.message = "Request timeout. Please check your internet connection."; - } else if (error.code === "ENOTFOUND" || error.code === "ECONNREFUSED") { - error.message = "Unable to connect to server. Please check the server URL and your internet connection."; - } else if (isTlsRelatedError(error)) { - error.message = "SSL/TLS error: certificate could not be verified. Use a trusted certificate or verify the server URL."; - } - return Promise.reject(error); - } - ); - } - static normalizeBaseUrl(url) { - let u = String(url || "").trim(); - if (!u) return u; - u = u.replace(/\/+$/, ""); - return u; - } - /** - * Unauthenticated check: reachable TimeTracker JSON at GET /api/v1/info. - * @param {string} baseUrl - * @returns {Promise} - */ - static async testPublicServerInfo(baseUrl) { - const normalized = _ApiClient.normalizeBaseUrl(baseUrl); - if (!normalized) { - return { ok: false, code: "NO_URL", message: "Please enter a server URL." }; - } - let parsed; - try { - parsed = new URL(normalized); - } catch (_) { - return { ok: false, code: "BAD_URL", message: "Server URL is not valid." }; - } - if (parsed.protocol !== "http:" && parsed.protocol !== "https:") { - return { ok: false, code: "BAD_URL", message: "Server URL must start with http:// or https://." }; - } - const plain = axios.create({ - baseURL: normalized, - timeout: 1e4, - headers: { Accept: "application/json" } - }); - try { - const response = await plain.get("/api/v1/info"); - if (response.status !== 200) { - return { - ok: false, - code: "HTTP_" + response.status, - message: `Server returned HTTP ${response.status}. Check the URL and port.` - }; - } - const data = response.data; - if (!isTimeTrackerInfoPayload(data)) { - return { - ok: false, - code: "NOT_TIMETRACKER", - message: "This address did not return a TimeTracker API response. Check the URL (base URL only, no path) and port." - }; - } - if (data.setup_required === true) { - return { - ok: false, - code: "SETUP_REQUIRED", - message: "TimeTracker is not fully set up yet. Open this server URL in a browser, complete initial setup, then try again." - }; - } - const appVersion = typeof data.app_version === "string" ? data.app_version : null; - return { ok: true, app_version: appVersion }; - } catch (error) { - const { code, message } = classifyAxiosError2(error); - return { ok: false, code, message }; - } - } - /** - * Login with the same username/password flow used by the mobile app. - * The server returns an API token, which the desktop stores internally. - * @param {string} baseUrl - * @param {string} username - * @param {string} password - * @returns {Promise<{ ok: true, token: string } | ValidationResult>} - */ - static async loginWithPassword(baseUrl, username, password) { - const normalized = _ApiClient.normalizeBaseUrl(baseUrl); - const plain = axios.create({ - baseURL: normalized, - timeout: 15e3, - headers: { - Accept: "application/json", - "Content-Type": "application/json" - } - }); - try { - const response = await plain.post("/api/v1/auth/login", { - username, - password - }); - const token = response.data && response.data.token; - if (response.status !== 200 || typeof token !== "string" || !token.startsWith("tt_")) { - return { - ok: false, - code: "INVALID_RESPONSE", - message: "Server login response did not include a valid app token." - }; - } - return { ok: true, token }; - } catch (error) { - const { code, message } = classifyAxiosError2(error); - return { ok: false, code, message }; - } - } - async setAuthToken(token) { - await storeSet2("api_token", token); - } - /** - * Authenticated session check: prefers GET /api/v1/users/me (read:users). - * Falls back to GET /api/v1/timer/status (read:time_entries) for narrower tokens. - * @returns {Promise} - */ - async validateSession() { - try { - const response = await this.client.get("/api/v1/users/me"); - if (response.status !== 200) { - return { - ok: false, - code: "HTTP_" + response.status, - message: `Unexpected HTTP ${response.status} from the server.` - }; - } - const data = response.data; - if (!data || typeof data !== "object" || !data.user) { - return { - ok: false, - code: "INVALID_RESPONSE", - message: "Server response was not a valid TimeTracker user payload." - }; - } - return { ok: true }; - } catch (error) { - const status = error.response && error.response.status; - if (status === 401) { - const { code: code2, message: message2 } = classifyAxiosError2(error); - return { ok: false, code: code2, message: message2 }; - } - if (status === 403) { - try { - const res2 = await this.client.get("/api/v1/timer/status"); - if (res2.status === 200 && res2.data && typeof res2.data.active === "boolean") { - return { ok: true }; - } - } catch (e2) { - const { code: code2, message: message2 } = classifyAxiosError2(e2); - return { ok: false, code: code2, message: message2 }; - } - return { - ok: false, - code: "FORBIDDEN", - message: "This signed-in account cannot access your profile or timer." - }; - } - const { code, message } = classifyAxiosError2(error); - return { ok: false, code, message }; - } - } - /** @deprecated Prefer validateSession() for correct auth + error detail */ - async validateToken() { - const r = await this.validateSession(); - return r.ok; - } - async getUsersMe() { - const response = await this.client.get("/api/v1/users/me"); - return response.data; - } - async getTimerStatus() { - return await this.client.get("/api/v1/timer/status"); - } - async startTimer({ projectId, taskId, notes }) { - return await this.client.post("/api/v1/timer/start", { - project_id: projectId, - task_id: taskId, - notes - }); - } - async stopTimer() { - return await this.client.post("/api/v1/timer/stop"); - } - async getTimeEntries({ projectId, startDate, endDate, billable, page, perPage }) { - const params = {}; - if (projectId) params.project_id = projectId; - if (startDate) params.start_date = startDate; - if (endDate) params.end_date = endDate; - if (billable !== void 0) params.billable = billable; - if (page) params.page = page; - if (perPage) params.per_page = perPage; - return await this.client.get("/api/v1/time-entries", { params }); - } - async createTimeEntry(data) { - return await this.client.post("/api/v1/time-entries", data); - } - async updateTimeEntry(id, data) { - return await this.client.put(`/api/v1/time-entries/${id}`, data); - } - async deleteTimeEntry(id) { - return await this.client.delete(`/api/v1/time-entries/${id}`); - } - async getProjects({ status, clientId, page, perPage }) { - const params = {}; - if (status) params.status = status; - if (clientId) params.client_id = clientId; - if (page) params.page = page; - if (perPage) params.per_page = perPage; - return await this.client.get("/api/v1/projects", { params }); - } - async getProject(id) { - return await this.client.get(`/api/v1/projects/${id}`); - } - async getClients({ status, page, perPage }) { - const params = {}; - if (status) params.status = status; - if (page) params.page = page; - if (perPage) params.per_page = perPage; - return await this.client.get("/api/v1/clients", { params }); - } - async getTasks({ projectId, status, page, perPage }) { - const params = {}; - if (projectId) params.project_id = projectId; - if (status) params.status = status; - if (page) params.page = page; - if (perPage) params.per_page = perPage; - return await this.client.get("/api/v1/tasks", { params }); - } - async getTask(id) { - return await this.client.get(`/api/v1/tasks/${id}`); - } - async getTimeEntry(id) { - return await this.client.get(`/api/v1/time-entries/${id}`); - } - async getInvoices({ status, clientId, projectId, page, perPage }) { - const params = {}; - if (status) params.status = status; - if (clientId) params.client_id = clientId; - if (projectId) params.project_id = projectId; - if (page) params.page = page; - if (perPage) params.per_page = perPage; - return await this.client.get("/api/v1/invoices", { params }); - } - async getInvoice(id) { - return await this.client.get(`/api/v1/invoices/${id}`); - } - async createInvoice(data) { - return await this.client.post("/api/v1/invoices", data); - } - async updateInvoice(id, data) { - return await this.client.put(`/api/v1/invoices/${id}`, data); - } - async getExpenses({ projectId, category, startDate, endDate, page, perPage }) { - const params = {}; - if (projectId) params.project_id = projectId; - if (category) params.category = category; - if (startDate) params.start_date = startDate; - if (endDate) params.end_date = endDate; - if (page) params.page = page; - if (perPage) params.per_page = perPage; - return await this.client.get("/api/v1/expenses", { params }); - } - async createExpense(data) { - return await this.client.post("/api/v1/expenses", data); - } - async getCapacityReport({ startDate, endDate }) { - return await this.client.get("/api/v1/reports/capacity", { - params: { start_date: startDate, end_date: endDate } - }); - } - async getTimesheetPeriods({ status, startDate, endDate }) { - const params = {}; - if (status) params.status = status; - if (startDate) params.start_date = startDate; - if (endDate) params.end_date = endDate; - return await this.client.get("/api/v1/timesheet-periods", { params }); - } - async submitTimesheetPeriod(periodId) { - return await this.client.post(`/api/v1/timesheet-periods/${periodId}/submit`); - } - async approveTimesheetPeriod(periodId, { comment } = {}) { - const data = {}; - if (comment) data.comment = comment; - return await this.client.post(`/api/v1/timesheet-periods/${periodId}/approve`, data); - } - async rejectTimesheetPeriod(periodId, { reason } = {}) { - const data = {}; - if (reason) data.reason = reason; - return await this.client.post(`/api/v1/timesheet-periods/${periodId}/reject`, data); - } - async deleteTimesheetPeriod(periodId) { - return await this.client.delete(`/api/v1/timesheet-periods/${periodId}`); - } - async getLeaveTypes() { - return await this.client.get("/api/v1/time-off/leave-types"); - } - async getTimeOffRequests({ status, startDate, endDate }) { - const params = {}; - if (status) params.status = status; - if (startDate) params.start_date = startDate; - if (endDate) params.end_date = endDate; - return await this.client.get("/api/v1/time-off/requests", { params }); - } - async createTimeOffRequest({ leaveTypeId, startDate, endDate, requestedHours, comment, submit }) { - const data = { - leave_type_id: leaveTypeId, - start_date: startDate, - end_date: endDate, - submit: submit !== void 0 ? submit : true - }; - if (requestedHours !== void 0 && requestedHours !== null) data.requested_hours = requestedHours; - if (comment) data.comment = comment; - return await this.client.post("/api/v1/time-off/requests", data); - } - async getTimeOffBalances({ userId } = {}) { - const params = {}; - if (userId) params.user_id = userId; - return await this.client.get("/api/v1/time-off/balances", { params }); - } - async approveTimeOffRequest(requestId, { comment } = {}) { - const data = {}; - if (comment) data.comment = comment; - return await this.client.post(`/api/v1/time-off/requests/${requestId}/approve`, data); - } - async rejectTimeOffRequest(requestId, { comment } = {}) { - const data = {}; - if (comment) data.comment = comment; - return await this.client.post(`/api/v1/time-off/requests/${requestId}/reject`, data); - } - async deleteTimeOffRequest(requestId) { - return await this.client.delete(`/api/v1/time-off/requests/${requestId}`); - } - }; - if (typeof module !== "undefined" && module.exports) { - module.exports = ApiClient2; - module.exports.classifyAxiosError = classifyAxiosError2; - module.exports.isTimeTrackerInfoPayload = isTimeTrackerInfoPayload; - } - } - }); - - // src/renderer/js/connection/connection_state.js - var require_connection_state = __commonJS({ - "src/renderer/js/connection/connection_state.js"(exports, module) { - var CONNECTION_STATE2 = { - NOT_CONFIGURED: "NOT_CONFIGURED", - CONNECTING: "CONNECTING", - CONNECTED: "CONNECTED", - ERROR: "ERROR", - OFFLINE: "OFFLINE" - }; - module.exports = { CONNECTION_STATE: CONNECTION_STATE2 }; - } - }); - - // src/renderer/js/connection/connection_manager.js - var require_connection_manager = __commonJS({ - "src/renderer/js/connection/connection_manager.js"(exports, module) { - var ApiClient2 = require_client(); - var { CONNECTION_STATE: CONNECTION_STATE2 } = require_connection_state(); - var STORE_SERVER = "server_url"; - var STORE_TOKEN = "api_token"; - var STORE_TOKEN_SERVER = "api_token_server_url"; - var STORE_USERNAME = "username"; - function createConnectionManager2(deps) { - const storeGet2 = deps.storeGet; - const storeSet2 = deps.storeSet; - const storeDelete2 = deps.storeDelete; - const storeClear2 = deps.storeClear; - const onCacheClear = deps.onCacheClear || (() => { - }); - let apiClient = null; - const listeners = /* @__PURE__ */ new Set(); - let offlineListenerBound = false; - let snapshot = { - state: CONNECTION_STATE2.NOT_CONFIGURED, - serverUrl: null, - lastError: null, - lastConnectedAt: null, - serverVersion: null - }; - function getSnapshot() { - return { ...snapshot }; - } - function getClient() { - return apiClient; - } - function notify() { - const s = getSnapshot(); - for (const fn of listeners) { - try { - fn(s); - } catch (e) { - console.error("ConnectionManager listener error:", e); - } - } - } - function setSnap(partial) { - snapshot = { ...snapshot, ...partial }; - notify(); - } - function tearDownClient() { - apiClient = null; - } - function isTransportSessionError(code) { - return [ - "TIMEOUT", - "REFUSED", - "UNREACHABLE", - "DNS", - "TLS", - "UNKNOWN" - ].includes(code); - } - function attachWindowListeners() { - if (typeof window === "undefined" || offlineListenerBound) return; - offlineListenerBound = true; - window.addEventListener("online", () => { - if (snapshot.state === CONNECTION_STATE2.OFFLINE && apiClient) { - setSnap({ state: CONNECTION_STATE2.CONNECTING, lastError: null }); - } - }); - window.addEventListener("offline", () => { - setSnap({ - state: CONNECTION_STATE2.OFFLINE, - lastError: "Network offline." - }); - }); - } - async function testServer(baseUrl) { - const normalized = ApiClient2.normalizeBaseUrl(String(baseUrl || "").trim()); - if (!normalized) { - return { ok: false, code: "NO_URL", message: "Please enter a server URL." }; - } - return ApiClient2.testPublicServerInfo(normalized); - } - async function bootstrapFromStore() { - attachWindowListeners(); - const serverRaw = await storeGet2(STORE_SERVER); - const token = await storeGet2(STORE_TOKEN); - const serverUrlEarly = serverRaw ? ApiClient2.normalizeBaseUrl(String(serverRaw)) : null; - if (typeof navigator !== "undefined" && navigator.onLine === false) { - tearDownClient(); - setSnap({ - state: CONNECTION_STATE2.OFFLINE, - serverUrl: serverUrlEarly, - lastError: "Network offline." - }); - return { - ok: false, - reason: "offline", - hadCredentials: Boolean(serverUrlEarly && token) - }; - } - const tokenServer = await storeGet2(STORE_TOKEN_SERVER); - let serverUrl = serverRaw ? ApiClient2.normalizeBaseUrl(String(serverRaw)) : null; - if (serverUrl && serverRaw && serverUrl !== String(serverRaw).trim()) { - await storeSet2(STORE_SERVER, serverUrl); - } - if (!serverUrl) { - tearDownClient(); - setSnap({ - state: CONNECTION_STATE2.NOT_CONFIGURED, - serverUrl: null, - lastError: null, - serverVersion: null - }); - return { ok: false, reason: "no_server" }; - } - if (!token) { - tearDownClient(); - setSnap({ - state: CONNECTION_STATE2.NOT_CONFIGURED, - serverUrl, - lastError: null, - serverVersion: null - }); - return { ok: false, reason: "no_token" }; - } - const tokenNorm = tokenServer ? ApiClient2.normalizeBaseUrl(String(tokenServer)) : null; - if (tokenNorm && tokenNorm !== serverUrl) { - await storeDelete2(STORE_TOKEN); - await storeDelete2(STORE_TOKEN_SERVER); - tearDownClient(); - onCacheClear(); - setSnap({ - state: CONNECTION_STATE2.NOT_CONFIGURED, - serverUrl, - lastError: "This saved sign-in was for a different server. Please sign in again.", - serverVersion: null - }); - return { ok: false, reason: "token_server_mismatch" }; - } - apiClient = new ApiClient2(serverUrl, { - enableIdempotentRetry: false, - timeoutMs: 15e3 - }); - await apiClient.setAuthToken(String(token)); - setSnap({ - state: CONNECTION_STATE2.CONNECTING, - serverUrl, - lastError: null - }); - const session = await apiClient.validateSession(); - if (session.ok) { - if (!tokenNorm) { - await storeSet2(STORE_TOKEN_SERVER, serverUrl); - } - const now = Date.now(); - setSnap({ - state: CONNECTION_STATE2.CONNECTED, - serverUrl, - lastError: null, - lastConnectedAt: now, - serverVersion: null - }); - return { ok: true, session }; - } - if (isTransportSessionError(session.code)) { - tearDownClient(); - setSnap({ - state: CONNECTION_STATE2.ERROR, - serverUrl, - lastError: session.message || "Server not reachable.", - serverVersion: null - }); - return { ok: false, reason: "session_unreachable", session, message: session.message }; - } - tearDownClient(); - await storeDelete2(STORE_TOKEN); - await storeDelete2(STORE_TOKEN_SERVER); - onCacheClear(); - setSnap({ - state: CONNECTION_STATE2.ERROR, - serverUrl, - lastError: session.message || "Session invalid", - serverVersion: null - }); - return { ok: false, reason: "session", session }; - } - async function login(serverUrl, username, password) { - const normalized = ApiClient2.normalizeBaseUrl(String(serverUrl || "").trim()); - const pub = await ApiClient2.testPublicServerInfo(normalized); - if (!pub.ok) { - setSnap({ - state: CONNECTION_STATE2.ERROR, - serverUrl: normalized, - lastError: pub.message - }); - return { ok: false, step: "server", ...pub }; - } - const auth = await ApiClient2.loginWithPassword(normalized, username, password); - if (!auth.ok) { - setSnap({ - state: CONNECTION_STATE2.ERROR, - serverUrl: normalized, - lastError: auth.message || "Login failed", - serverVersion: pub.app_version || null - }); - return { ok: false, step: "auth", session: auth }; - } - const probe = new ApiClient2(normalized); - await probe.setAuthToken(auth.token); - const session = await probe.validateSession(); - if (!session.ok) { - setSnap({ - state: CONNECTION_STATE2.ERROR, - serverUrl: normalized, - lastError: session.message || "Login failed", - serverVersion: null - }); - return { ok: false, step: "auth", session }; - } - await storeSet2(STORE_SERVER, normalized); - await storeSet2(STORE_TOKEN, auth.token); - await storeSet2(STORE_TOKEN_SERVER, normalized); - await storeSet2(STORE_USERNAME, String(username || "").trim()); - apiClient = probe; - const now = Date.now(); - setSnap({ - state: CONNECTION_STATE2.CONNECTED, - serverUrl: normalized, - lastError: null, - lastConnectedAt: now, - serverVersion: pub.app_version || null - }); - return { ok: true, session, app_version: pub.app_version || null }; - } - async function logoutKeepServer() { - await storeDelete2(STORE_TOKEN); - await storeDelete2(STORE_TOKEN_SERVER); - tearDownClient(); - onCacheClear(); - const serverRaw = await storeGet2(STORE_SERVER); - const serverUrl = serverRaw ? ApiClient2.normalizeBaseUrl(String(serverRaw)) : null; - setSnap({ - state: CONNECTION_STATE2.NOT_CONFIGURED, - serverUrl, - lastError: null, - serverVersion: null - }); - } - async function fullStoreReset() { - await storeClear2(); - tearDownClient(); - onCacheClear(); - snapshot = { - state: CONNECTION_STATE2.NOT_CONFIGURED, - serverUrl: null, - lastError: null, - lastConnectedAt: null, - serverVersion: null - }; - notify(); - } - async function validateSessionRefresh() { - if (typeof navigator !== "undefined" && navigator.onLine === false) { - setSnap({ - state: CONNECTION_STATE2.OFFLINE, - lastError: "Network offline." - }); - return { ok: false, code: "OFFLINE", message: "Network offline." }; - } - if (!apiClient) { - setSnap({ - state: CONNECTION_STATE2.NOT_CONFIGURED, - lastError: null - }); - return { ok: false, code: "NO_CLIENT", message: "Not connected." }; - } - const session = await apiClient.validateSession(); - if (session.ok) { - const now = Date.now(); - setSnap({ - state: CONNECTION_STATE2.CONNECTED, - lastError: null, - lastConnectedAt: now - }); - return session; - } - if (session.code === "UNAUTHORIZED") { - setSnap({ - state: CONNECTION_STATE2.ERROR, - lastError: session.message || "Unauthorized" - }); - return session; - } - const transportish = session.code === "TIMEOUT" || session.code === "REFUSED" || session.code === "UNREACHABLE" || session.code === "DNS" || session.code === "TLS" || session.code === "UNKNOWN"; - if (transportish) { - setSnap({ - state: CONNECTION_STATE2.ERROR, - lastError: session.message || "Server not reachable" - }); - return session; - } - setSnap({ - state: CONNECTION_STATE2.ERROR, - lastError: session.message || "Connection error" - }); - return session; - } - async function saveServerAndCredentials(serverUrl, username, password, syncExtras) { - const normalized = ApiClient2.normalizeBaseUrl(String(serverUrl || "").trim()); - const pub = await ApiClient2.testPublicServerInfo(normalized); - if (!pub.ok) { - setSnap({ - state: CONNECTION_STATE2.ERROR, - lastError: pub.message - }); - return { ok: false, step: "server", ...pub }; - } - const auth = await ApiClient2.loginWithPassword(normalized, username, password); - if (!auth.ok) { - setSnap({ - state: CONNECTION_STATE2.ERROR, - lastError: auth.message || "Login failed. Settings were not saved." - }); - return { ok: false, step: "auth", session: auth }; - } - const probe = new ApiClient2(normalized); - await probe.setAuthToken(auth.token); - const session = await probe.validateSession(); - if (!session.ok) { - setSnap({ - state: CONNECTION_STATE2.ERROR, - lastError: session.message || "Session check failed. Settings were not saved." - }); - return { ok: false, step: "auth", session }; - } - if (syncExtras) { - if (syncExtras.auto_sync !== void 0) await storeSet2("auto_sync", syncExtras.auto_sync); - if (syncExtras.sync_interval !== void 0) await storeSet2("sync_interval", syncExtras.sync_interval); - } - await storeSet2(STORE_SERVER, normalized); - await storeSet2(STORE_TOKEN, auth.token); - await storeSet2(STORE_TOKEN_SERVER, normalized); - await storeSet2(STORE_USERNAME, String(username || "").trim()); - apiClient = probe; - const now = Date.now(); - setSnap({ - state: CONNECTION_STATE2.CONNECTED, - serverUrl: normalized, - lastError: null, - lastConnectedAt: now, - serverVersion: pub.app_version || null - }); - return { ok: true, session }; - } - async function testServerAndCredentials(serverUrl, username, password) { - const normalized = ApiClient2.normalizeBaseUrl(String(serverUrl || "").trim()); - const pub = await ApiClient2.testPublicServerInfo(normalized); - if (!pub.ok) return pub; - const auth = await ApiClient2.loginWithPassword(normalized, username, password); - if (!auth.ok) return auth; - const probe = new ApiClient2(normalized); - await probe.setAuthToken(auth.token); - const session = await probe.validateSession(); - if (!session.ok) return session; - return { ok: true, app_version: pub.app_version || null }; - } - function subscribe(fn) { - listeners.add(fn); - try { - fn(getSnapshot()); - } catch (e) { - console.error("ConnectionManager subscribe initial error:", e); - } - return () => listeners.delete(fn); - } - function signalError(message) { - if (!apiClient) return; - setSnap({ - state: CONNECTION_STATE2.ERROR, - lastError: message || "Connection error" - }); - } - return { - CONNECTION_STATE: CONNECTION_STATE2, - getSnapshot, - getClient, - subscribe, - testServer, - testServerAndCredentials, - bootstrapFromStore, - login, - logoutKeepServer, - fullStoreReset, - validateSessionRefresh, - saveServerAndCredentials, - tearDownClient, - signalError, - /** Expose for tests */ - _setSnapForTest: setSnap - }; - } - module.exports = { createConnectionManager: createConnectionManager2, STORE_SERVER, STORE_TOKEN, STORE_TOKEN_SERVER }; - } - }); - - // src/renderer/js/connection/timer_operations.js - var require_timer_operations = __commonJS({ - "src/renderer/js/connection/timer_operations.js"(exports, module) { - var _startFlight = null; - var _stopFlight = null; - async function startTimerWithReconcile2(apiClient, payload) { - if (_startFlight) return _startFlight; - _startFlight = (async () => { - try { - return await apiClient.startTimer(payload); - } catch (err) { - const ambiguous = !err.response || err.code === "ECONNABORTED" || err.code === "ECONNRESET" || err.code === "ETIMEDOUT"; - if (!ambiguous) throw err; - try { - const status = await apiClient.getTimerStatus(); - if (status.data && status.data.active && status.data.timer) { - return { data: { message: "Timer already running", timer: status.data.timer }, _reconciled: true }; - } - } catch (reconcileErr) { - console.error("startTimer reconcile failed:", reconcileErr); - } - throw err; - } - })(); - try { - return await _startFlight; - } finally { - _startFlight = null; - } - } - async function stopTimerWithReconcile2(apiClient) { - if (_stopFlight) return _stopFlight; - _stopFlight = (async () => { - try { - return await apiClient.stopTimer(); - } catch (err) { - const statusCode = err.response && err.response.status; - if (statusCode === 400 && err.response.data && err.response.data.error_code === "no_active_timer") { - return { data: err.response.data, _reconciled: true }; - } - const ambiguous = !err.response || err.code === "ECONNABORTED" || err.code === "ECONNRESET" || err.code === "ETIMEDOUT"; - if (!ambiguous) throw err; - try { - const status = await apiClient.getTimerStatus(); - if (status.data && !status.data.active) { - return { data: { message: "Timer already stopped" }, _reconciled: true }; - } - } catch (reconcileErr) { - console.error("stopTimer reconcile failed:", reconcileErr); - } - throw err; - } - })(); - try { - return await _stopFlight; - } finally { - _stopFlight = null; - } - } - module.exports = { startTimerWithReconcile: startTimerWithReconcile2, stopTimerWithReconcile: stopTimerWithReconcile2 }; - } - }); - - // src/renderer/js/ui/notifications.js - var require_notifications = __commonJS({ - "src/renderer/js/ui/notifications.js"(exports, module) { - function showError2(message) { - let errorDiv = document.getElementById("error-notification"); - if (!errorDiv) { - errorDiv = document.createElement("div"); - errorDiv.id = "error-notification"; - errorDiv.className = "notification notification-error"; - errorDiv.setAttribute("role", "alert"); - errorDiv.setAttribute("aria-live", "assertive"); - document.body.appendChild(errorDiv); - } - errorDiv.textContent = message; - errorDiv.style.display = "block"; - setTimeout(() => { - errorDiv.style.display = "none"; - }, 5e3); - } - function showSuccess2(message) { - let successDiv = document.getElementById("success-notification"); - if (!successDiv) { - successDiv = document.createElement("div"); - successDiv.id = "success-notification"; - successDiv.className = "notification notification-success"; - successDiv.setAttribute("role", "status"); - successDiv.setAttribute("aria-live", "polite"); - document.body.appendChild(successDiv); - } - successDiv.textContent = message; - successDiv.style.display = "block"; - setTimeout(() => { - successDiv.style.display = "none"; - }, 3e3); - } - if (typeof module !== "undefined" && module.exports) { - module.exports = { showError: showError2, showSuccess: showSuccess2 }; - } - } - }); - - // src/renderer/js/state.js - var require_state = __commonJS({ - "src/renderer/js/state.js"(exports, module) { - var state2 = { - apiClient: null, - /** Count consecutive background checks that failed with auth (401) while on main UI */ - authFailureStreak: 0, - /** Last timer poll error shown to user (avoid spam) */ - lastTimerPollUserMessageAt: 0, - currentView: "dashboard", - timerInterval: null, - isTimerRunning: false, - connectionCheckInterval: null, - currentUserProfile: { is_admin: false, can_approve: false }, - cachedInvoices: [], - cachedExpenses: [], - cachedWorkforce: { periods: [], capacity: [], timeOffRequests: [], balances: [] }, - viewFilters: { invoiceQuery: "", expenseQuery: "", timeoffQuery: "" }, - viewLimits: { invoices: 20, expenses: 20, timeoff: 20 }, - pagination: { - invoices: { page: 1, perPage: 20, totalPages: 1, total: 0 }, - expenses: { page: 1, perPage: 20, totalPages: 1, total: 0 } - } - }; - function clearViewCaches() { - state2.cachedInvoices = []; - state2.cachedExpenses = []; - state2.cachedWorkforce = { periods: [], capacity: [], timeOffRequests: [], balances: [] }; - } - state2.clearViewCaches = clearViewCaches; - module.exports = state2; - } - }); - - // src/renderer/js/app.js - require_helpers(); - var ApiClient = require_client(); - var { createConnectionManager } = require_connection_manager(); - var { CONNECTION_STATE } = require_connection_state(); - var { startTimerWithReconcile, stopTimerWithReconcile } = require_timer_operations(); - var { classifyAxiosError } = require_client(); - var { showError, showSuccess } = require_notifications(); - var state = require_state(); - var { - formatDuration, - formatDurationLong, - formatDateTime, - isValidUrl, - normalizeServerUrlInput - } = window.Helpers || {}; - var { storeGet, storeSet, storeDelete, storeClear } = window.config || {}; - var connectionManager = null; - var loginWizardStep = "welcome"; - function truncateUrl(url, maxLen) { - const s = String(url || ""); - const m = maxLen || 42; - if (s.length <= m) return s; - return s.slice(0, m - 1) + "\u2026"; - } - async function initApp() { - if (typeof storeGet !== "function" || typeof storeSet !== "function" || typeof storeDelete !== "function" || typeof storeClear !== "function") { - throw new Error("Desktop configuration bridge is unavailable."); - } - connectionManager = createConnectionManager({ - storeGet, - storeSet, - storeDelete, - storeClear, - onCacheClear: () => { - if (typeof state.clearViewCaches === "function") state.clearViewCaches(); - } - }); - connectionManager.subscribe(() => { - state.apiClient = connectionManager.getClient(); - updateConnectionFromManager(); - }); - setupEventListeners(); - setupTrayListeners(); - const boot = await connectionManager.bootstrapFromStore(); - if (boot.ok) { - state.authFailureStreak = 0; - showMainScreen(); - await loadInitialData(); - } else if (boot.reason === "offline" && boot.hadCredentials) { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || "", - openTokenStep: true, - bannerMessage: "You appear to be offline. Reconnect to the network, then use Log in." - }); - } else if (boot.reason === "session" && boot.session) { - showLoginScreen({ prefillServerUrl: connectionManager.getSnapshot().serverUrl || "", sessionError: boot.session }); - } else if (boot.reason === "token_server_mismatch") { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || "", - bannerMessage: connectionManager.getSnapshot().lastError || "Please sign in again." - }); - } else if (boot.reason === "no_server") { - showLoginScreen({ prefillServerUrl: "", startAtServer: true }); - } else if (boot.reason === "no_token") { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || "", - openTokenStep: true - }); - } else if (boot.reason === "bootstrap_timeout") { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || "", - openTokenStep: true, - bannerMessage: boot.message || "Server did not respond in time. Check the URL or network, then try signing in again." - }); - } else if (boot.reason === "session_unreachable") { - showLoginScreen({ - prefillServerUrl: connectionManager.getSnapshot().serverUrl || "", - openTokenStep: true, - bannerMessage: boot.message || "Server is not reachable. Check the URL or network, then try signing in again." - }); - } else { - showLoginScreen({ prefillServerUrl: connectionManager.getSnapshot().serverUrl || "" }); - } - startConnectionCheck(); - window.addEventListener("online", async () => { - if (!connectionManager.getClient()) { - const retry = await connectionManager.bootstrapFromStore(); - if (retry.ok && document.getElementById("main-screen")?.classList.contains("active")) { - state.authFailureStreak = 0; - await loadInitialData(); - } - } - await checkConnection(); - }); - } - async function loadInitialData() { - try { - await loadCurrentUserProfile(); - } catch (err) { - console.error("Initial profile load failed:", err); - } - try { - await loadDashboard(); - } catch (err) { - console.error("Initial dashboard load failed:", err); - } - } - function setupTrayListeners() { - if (window.electronAPI && window.electronAPI.onTrayAction) { - window.electronAPI.onTrayAction((action) => { - if (action === "start-timer" && !state.isTimerRunning) { - handleStartTimer(); - } else if (action === "stop-timer" && state.isTimerRunning) { - handleStopTimer(); - } - }); - } - } - function startConnectionCheck() { - state.connectionCheckInterval = setInterval(async () => { - await checkConnection(); - }, 3e4); - checkConnection(); - } - async function checkConnection() { - if (typeof navigator !== "undefined" && navigator.onLine && !connectionManager.getClient()) { - const snap = connectionManager.getSnapshot(); - if (snap.serverUrl && await storeGet("api_token")) { - const boot = await connectionManager.bootstrapFromStore(); - if (boot.ok && document.getElementById("main-screen")?.classList.contains("active")) { - state.authFailureStreak = 0; - await loadCurrentUserProfile(); - } - } - } - if (!state.apiClient) { - updateConnectionFromManager(); - return; - } - const session = await connectionManager.validateSessionRefresh(); - if (session.ok) { - state.authFailureStreak = 0; - updateConnectionFromManager(); - return; - } - updateConnectionFromManager(); - if (session.code === "UNAUTHORIZED") { - state.authFailureStreak = (state.authFailureStreak || 0) + 1; - if (state.authFailureStreak >= 2 && document.getElementById("main-screen")?.classList.contains("active")) { - await forceRelogin(session.message || "Your session is no longer valid. Please sign in again."); - } - } else { - state.authFailureStreak = 0; - } - } - async function loadCurrentUserProfile() { - if (!state.apiClient) return; - try { - const me = await state.apiClient.getUsersMe(); - const user = me.user || {}; - const role = String(user.role || "").toLowerCase(); - const roleCanApprove = ["admin", "owner", "manager", "approver"].includes(role); - state.currentUserProfile = { - id: user.id, - is_admin: Boolean(user.is_admin), - can_approve: Boolean(user.is_admin) || roleCanApprove - }; - } catch (err) { - console.error("loadCurrentUserProfile failed:", err); - if (err && err.stack) console.error(err.stack); - state.currentUserProfile = { id: null, is_admin: false, can_approve: false }; - const { message } = classifyAxiosError(err); - showError(message || "Could not load your user profile. Some actions may be unavailable until the connection improves."); - } - } - function updateConnectionFromManager() { - if (!connectionManager) return; - const snap = connectionManager.getSnapshot(); - const statusEl = document.getElementById("connection-status"); - const urlEl = document.getElementById("connection-url-label"); - const timeEl = document.getElementById("connection-last-ok"); - if (!statusEl) return; - let cssSuffix = "disconnected"; - let title = ""; - let label = "Connection status: "; - switch (snap.state) { - case CONNECTION_STATE.CONNECTED: - cssSuffix = "connected"; - title = snap.serverUrl || "Connected"; - label += "Connected"; - statusEl.textContent = "\u25CF"; - break; - case CONNECTION_STATE.OFFLINE: - cssSuffix = "offline"; - title = snap.lastError || "Offline"; - label += "Offline"; - statusEl.textContent = "\u25CF"; - break; - case CONNECTION_STATE.CONNECTING: - cssSuffix = "connecting"; - title = snap.lastError || "Connecting\u2026"; - label += "Connecting"; - statusEl.textContent = "\u25D0"; - break; - case CONNECTION_STATE.ERROR: - cssSuffix = "error"; - title = snap.lastError || "Connection error"; - label += "Error"; - statusEl.textContent = "\u25CF"; - break; - default: - title = snap.serverUrl || "Not configured"; - label += "Not configured"; - statusEl.textContent = "\u25CB"; - } - statusEl.className = "connection-status connection-" + cssSuffix; - statusEl.title = title; - statusEl.setAttribute("aria-label", label); - if (urlEl) { - urlEl.textContent = snap.serverUrl ? truncateUrl(snap.serverUrl) : "\u2014"; - urlEl.title = snap.serverUrl || ""; - } - if (timeEl) { - timeEl.textContent = snap.lastConnectedAt ? formatDateTime(new Date(snap.lastConnectedAt)) : "\u2014"; - } - } - async function forceRelogin(message) { - state.authFailureStreak = 0; - const url = await storeGet("server_url"); - if (state.isTimerRunning) { - state.isTimerRunning = false; - stopTimerPolling(); - } - await connectionManager.logoutKeepServer(); - showLoginScreen({ - prefillServerUrl: url ? ApiClient.normalizeBaseUrl(String(url)) : "", - openTokenStep: true, - bannerMessage: message - }); - } - function showWizardWelcomeStep() { - loginWizardStep = "welcome"; - const w = document.getElementById("wizard-step-welcome"); - const s1 = document.getElementById("wizard-step-server"); - const s2 = document.getElementById("wizard-step-token"); - if (w) w.style.display = ""; - if (s1) s1.style.display = "none"; - if (s2) s2.style.display = "none"; - } - function showWizardServerStep() { - loginWizardStep = "server"; - const w = document.getElementById("wizard-step-welcome"); - const s1 = document.getElementById("wizard-step-server"); - const s2 = document.getElementById("wizard-step-token"); - if (w) w.style.display = "none"; - if (s1) s1.style.display = ""; - if (s2) s2.style.display = "none"; - } - function showWizardTokenStep() { - loginWizardStep = "token"; - const w = document.getElementById("wizard-step-welcome"); - const s1 = document.getElementById("wizard-step-server"); - const s2 = document.getElementById("wizard-step-token"); - if (w) w.style.display = "none"; - if (s1) s1.style.display = "none"; - if (s2) s2.style.display = ""; - } - function resetLoginWizard() { - showWizardWelcomeStep(); - const contServer = document.getElementById("login-wizard-continue-server"); - if (contServer) contServer.disabled = true; - const testBtn = document.getElementById("login-test-server-btn"); - if (testBtn) testBtn.disabled = false; - clearLoginError(); - } - function clearLoginError() { - showLoginError(""); - } - function setupEventListeners() { - const loginForm = document.getElementById("login-form"); - if (loginForm) { - loginForm.addEventListener("submit", handleLogin); - } - const loginTestServerBtn = document.getElementById("login-test-server-btn"); - const loginWizardContinue = document.getElementById("login-wizard-continue"); - const loginWizardContinueServer = document.getElementById("login-wizard-continue-server"); - const loginWizardBack = document.getElementById("login-wizard-back"); - if (loginTestServerBtn) loginTestServerBtn.addEventListener("click", handleLoginTestServer); - if (loginWizardContinue) loginWizardContinue.addEventListener("click", handleLoginWizardContinue); - if (loginWizardContinueServer) loginWizardContinueServer.addEventListener("click", handleLoginWizardContinue); - if (loginWizardBack) loginWizardBack.addEventListener("click", handleLoginWizardBack); - document.querySelectorAll(".nav-btn").forEach((btn) => { - btn.addEventListener("click", (e) => { - const view = e.target.dataset.view; - switchView(view); - }); - }); - const minimizeBtn = document.getElementById("minimize-btn"); - const maximizeBtn = document.getElementById("maximize-btn"); - const closeBtn = document.getElementById("close-btn"); - if (minimizeBtn) minimizeBtn.addEventListener("click", () => window.electronAPI?.minimizeWindow()); - if (maximizeBtn) maximizeBtn.addEventListener("click", () => window.electronAPI?.maximizeWindow()); - if (closeBtn) closeBtn.addEventListener("click", () => window.electronAPI?.closeWindow()); - const startTimerBtn = document.getElementById("start-timer-btn"); - const stopTimerBtn = document.getElementById("stop-timer-btn"); - if (startTimerBtn) startTimerBtn.addEventListener("click", handleStartTimer); - if (stopTimerBtn) stopTimerBtn.addEventListener("click", handleStopTimer); - const logoutBtn = document.getElementById("logout-btn"); - if (logoutBtn) logoutBtn.addEventListener("click", handleLogout); - const saveSettingsBtn = document.getElementById("save-settings-btn"); - const testConnectionBtn = document.getElementById("test-connection-btn"); - const autoSyncInput = document.getElementById("auto-sync"); - if (saveSettingsBtn) saveSettingsBtn.addEventListener("click", handleSaveSettings); - if (testConnectionBtn) testConnectionBtn.addEventListener("click", handleTestConnection); - const resetConfigBtn = document.getElementById("reset-configuration-btn"); - if (resetConfigBtn) resetConfigBtn.addEventListener("click", handleResetConfiguration); - if (autoSyncInput) { - autoSyncInput.addEventListener("change", () => updateSyncIntervalState()); - } - const addEntryBtn = document.getElementById("add-entry-btn"); - const filterEntriesBtn = document.getElementById("filter-entries-btn"); - const applyFilterBtn = document.getElementById("apply-filter-btn"); - const clearFilterBtn = document.getElementById("clear-filter-btn"); - const addExpenseBtn = document.getElementById("add-expense-btn"); - const refreshPeriodsBtn = document.getElementById("refresh-periods-btn"); - const addInvoiceBtn = document.getElementById("add-invoice-btn"); - const addTimeoffBtn = document.getElementById("add-timeoff-btn"); - const invoiceSearchInput = document.getElementById("invoice-search"); - const expenseSearchInput = document.getElementById("expense-search"); - const timeoffSearchInput = document.getElementById("timeoff-search"); - const invoicePrevPageBtn = document.getElementById("invoice-prev-page-btn"); - const invoiceNextPageBtn = document.getElementById("invoice-next-page-btn"); - const expensePrevPageBtn = document.getElementById("expense-prev-page-btn"); - const expenseNextPageBtn = document.getElementById("expense-next-page-btn"); - if (addEntryBtn) addEntryBtn.addEventListener("click", () => showTimeEntryForm()); - if (filterEntriesBtn) filterEntriesBtn.addEventListener("click", toggleFilters); - if (applyFilterBtn) applyFilterBtn.addEventListener("click", applyFilters); - if (clearFilterBtn) clearFilterBtn.addEventListener("click", clearFilters); - if (addExpenseBtn) addExpenseBtn.addEventListener("click", () => showCreateExpenseDialog()); - if (refreshPeriodsBtn) refreshPeriodsBtn.addEventListener("click", () => loadWorkforce()); - if (addInvoiceBtn) addInvoiceBtn.addEventListener("click", () => showCreateInvoiceDialog()); - if (addTimeoffBtn) addTimeoffBtn.addEventListener("click", () => showCreateTimeOffDialog()); - if (invoiceSearchInput) { - invoiceSearchInput.addEventListener("input", (e) => { - state.viewFilters.invoiceQuery = String(e.target.value || "").trim().toLowerCase(); - renderInvoices(); - }); - } - if (expenseSearchInput) { - expenseSearchInput.addEventListener("input", (e) => { - state.viewFilters.expenseQuery = String(e.target.value || "").trim().toLowerCase(); - renderExpenses(); - }); - } - if (timeoffSearchInput) { - timeoffSearchInput.addEventListener("input", (e) => { - state.viewFilters.timeoffQuery = String(e.target.value || "").trim().toLowerCase(); - renderTimeOffRequests(); - }); - } - if (invoicePrevPageBtn) invoicePrevPageBtn.addEventListener("click", () => changeInvoicePage(-1)); - if (invoiceNextPageBtn) invoiceNextPageBtn.addEventListener("click", () => changeInvoicePage(1)); - if (expensePrevPageBtn) expensePrevPageBtn.addEventListener("click", () => changeExpensePage(-1)); - if (expenseNextPageBtn) expenseNextPageBtn.addEventListener("click", () => changeExpensePage(1)); - } - async function handleLoginTestServer() { - clearLoginError(); - const raw = document.getElementById("server-url")?.value.trim() || ""; - const normalizedInput = normalizeServerUrlInput(raw); - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showLoginError("Enter a valid server URL (e.g. https://your-server.com or http://192.168.1.10:5000)"); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - const testBtn = document.getElementById("login-test-server-btn"); - const contServer = document.getElementById("login-wizard-continue-server"); - if (testBtn) testBtn.disabled = true; - if (contServer) contServer.disabled = true; - const pub = await connectionManager.testServer(serverUrl); - if (testBtn) testBtn.disabled = false; - if (contServer) contServer.disabled = true; - if (!pub.ok) { - showLoginError(pub.message); - return; - } - const ver = pub.app_version ? ` (server version ${pub.app_version})` : ""; - showSuccess(`TimeTracker server detected${ver}. Continue to sign in.`); - if (contServer) contServer.disabled = false; - } - async function handleLoginWizardContinue() { - clearLoginError(); - if (loginWizardStep === "welcome") { - showWizardServerStep(); - return; - } - const raw = document.getElementById("server-url")?.value.trim() || ""; - const normalizedInput = normalizeServerUrlInput(raw); - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showLoginError("Enter a valid server URL"); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - const contServer = document.getElementById("login-wizard-continue-server"); - if (contServer) contServer.disabled = true; - const pub = await connectionManager.testServer(serverUrl); - if (!pub.ok) { - if (contServer) contServer.disabled = true; - showLoginError(pub.message); - return; - } - if (contServer) contServer.disabled = false; - showWizardTokenStep(); - } - function handleLoginWizardBack() { - clearLoginError(); - if (loginWizardStep === "token") { - showWizardServerStep(); - return; - } - if (loginWizardStep === "server") { - showWizardWelcomeStep(); - return; - } - showWizardWelcomeStep(); - } - async function handleLogin(e) { - e.preventDefault(); - const raw = document.getElementById("server-url")?.value.trim() || ""; - const normalizedInput = normalizeServerUrlInput(raw); - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showLoginError("Please enter a valid server URL"); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - const username = document.getElementById("login-username")?.value.trim() || ""; - const password = document.getElementById("login-password")?.value || ""; - if (!username || !password) { - showLoginError("Please enter your username and password"); - return; - } - const result = await connectionManager.login(serverUrl, username, password); - if (result.ok) { - state.authFailureStreak = 0; - showMainScreen(); - await loadInitialData(); - } else { - const msg = result.session?.message || result.message || "Login failed"; - showLoginError(msg); - if (result.step === "auth" && (result.session?.code === "UNAUTHORIZED" || result.session?.code === "FORBIDDEN")) { - const contServer = document.getElementById("login-wizard-continue-server"); - if (contServer) contServer.disabled = false; - showWizardTokenStep(); - } else if (result.step === "server") { - showWizardServerStep(); - } else { - showWizardServerStep(); - } - } - } - function showLoginError(message) { - const errorDiv = document.getElementById("login-error"); - if (!errorDiv) return; - errorDiv.textContent = message || ""; - if (message) { - errorDiv.classList.add("show"); - } else { - errorDiv.classList.remove("show"); - } - } - function showLoginScreen(options = {}) { - document.getElementById("loading-screen").classList.remove("active"); - document.getElementById("login-screen").classList.add("active"); - document.getElementById("main-screen").classList.remove("active"); - state.authFailureStreak = 0; - const su = document.getElementById("server-url"); - if (su && options.prefillServerUrl !== void 0 && options.prefillServerUrl !== null) { - su.value = String(options.prefillServerUrl || ""); - } - if (options.openTokenStep) { - const contServer = document.getElementById("login-wizard-continue-server"); - if (contServer) contServer.disabled = false; - showWizardTokenStep(); - if (options.bannerMessage) { - showLoginError(options.bannerMessage); - } else { - clearLoginError(); - } - return; - } - if (options.startAtServer) { - showWizardServerStep(); - if (options.bannerMessage) { - showLoginError(options.bannerMessage); - } else { - clearLoginError(); - } - return; - } - if (options.bannerMessage && !options.sessionError) { - resetLoginWizard(); - showLoginError(options.bannerMessage); - return; - } - if (options.sessionError) { - const se = options.sessionError; - if (se.code === "UNAUTHORIZED" || se.code === "FORBIDDEN") { - const contServer = document.getElementById("login-wizard-continue-server"); - if (contServer) contServer.disabled = false; - showWizardTokenStep(); - showLoginError(se.message || "Authentication failed"); - return; - } - resetLoginWizard(); - showLoginError(se.message || "Could not reach the server"); - return; - } - resetLoginWizard(); - } - function showMainScreen() { - document.getElementById("loading-screen").classList.remove("active"); - document.getElementById("login-screen").classList.remove("active"); - document.getElementById("main-screen").classList.add("active"); - } - function switchView(view) { - document.querySelectorAll(".nav-btn").forEach((btn) => { - btn.classList.remove("active"); - }); - document.querySelector(`[data-view="${view}"]`).classList.add("active"); - document.querySelectorAll(".view").forEach((v) => { - v.classList.remove("active"); - }); - document.getElementById(`${view}-view`).classList.add("active"); - state.currentView = view; - if (view === "dashboard") { - loadDashboard(); - } else if (view === "projects") { - loadProjects(); - } else if (view === "entries") { - loadTimeEntries(); - loadProjectsForFilter(); - } else if (view === "invoices") { - loadInvoices(); - } else if (view === "expenses") { - loadExpenses(); - } else if (view === "workforce") { - loadWorkforce(); - } else if (view === "settings") { - loadSettings(); - } - } - async function loadDashboard() { - if (!state.apiClient) return; - try { - const timerResponse = await state.apiClient.getTimerStatus(); - if (timerResponse.data.active) { - state.isTimerRunning = true; - updateTimerDisplay(timerResponse.data.timer); - startTimerPolling(); - } - const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0]; - const entriesResponse = await state.apiClient.getTimeEntries({ startDate: today, endDate: today }); - const totalSeconds = entriesResponse.data.time_entries?.reduce((sum, entry) => { - return sum + (entry.duration_seconds || 0); - }, 0) || 0; - document.getElementById("today-summary").textContent = formatDuration(totalSeconds); - loadRecentEntries(); - } catch (error) { - console.error("Error loading dashboard:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || "Could not load the dashboard."); - } - } - async function loadRecentEntries() { - if (!state.apiClient) return; - try { - const response = await state.apiClient.getTimeEntries({ perPage: 5 }); - const entries = response.data.time_entries || []; - const entriesList = document.getElementById("recent-entries"); - if (entries.length === 0) { - entriesList.innerHTML = '

No recent entries

'; - return; - } - entriesList.innerHTML = entries.map((entry) => ` -
- -
${formatDuration(entry.duration_seconds || 0)}
-
- `).join(""); - } catch (error) { - console.error("Error loading recent entries:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || "Could not load recent entries."); - } - } - async function loadProjects() { - if (!state.apiClient) return; - try { - const response = await state.apiClient.getProjects({ status: "active" }); - const projects = response.data.projects || []; - const projectsList = document.getElementById("projects-list"); - if (projects.length === 0) { - projectsList.innerHTML = '

No projects found

'; - return; - } - projectsList.innerHTML = projects.map((project) => ` -
-

${project.name}

-

${project.client || "No client"}

-
- `).join(""); - } catch (error) { - console.error("Error loading projects:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || "Could not load projects."); - } - } - var currentFilters = { - startDate: null, - endDate: null, - projectId: null - }; - async function loadTimeEntries() { - if (!state.apiClient) return; - try { - const params = { perPage: 50 }; - if (currentFilters.startDate) params.startDate = currentFilters.startDate; - if (currentFilters.endDate) params.endDate = currentFilters.endDate; - if (currentFilters.projectId) params.projectId = currentFilters.projectId; - const response = await state.apiClient.getTimeEntries(params); - const entries = response.data.time_entries || []; - const entriesList = document.getElementById("entries-list"); - if (entries.length === 0) { - entriesList.innerHTML = '

No time entries

'; - return; - } - entriesList.innerHTML = entries.map((entry) => ` -
- -
-
${formatDuration(entry.duration_seconds || 0)}
- - -
-
- `).join(""); - } catch (error) { - console.error("Error loading time entries:", error); - showError("Failed to load time entries: " + (error.response?.data?.error || error.message)); - } - } - async function handleStartTimer() { - if (!state.apiClient) return; - const result = await showStartTimerDialog(); - if (!result) return; - try { - const response = await startTimerWithReconcile(state.apiClient, { - projectId: result.projectId, - taskId: result.taskId, - notes: result.notes - }); - if (response.data && response.data.timer) { - state.isTimerRunning = true; - updateTimerDisplay(response.data.timer); - startTimerPolling(); - document.getElementById("start-timer-btn").style.display = "none"; - document.getElementById("stop-timer-btn").style.display = "block"; - } - } catch (error) { - console.error("Failed to start timer:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || "Failed to start timer: " + (error.response?.data?.error || error.message)); - } - } - async function showStartTimerDialog() { - return new Promise(async (resolve) => { - let projects = []; - let requirements = { require_task: false, require_description: false, description_min_length: 20 }; - try { - const projectsResponse = await state.apiClient.getProjects({ status: "active" }); - projects = projectsResponse.data.projects || []; - try { - const usersMeResponse = await state.apiClient.getUsersMe(); - if (usersMeResponse && usersMeResponse.time_entry_requirements) { - requirements = usersMeResponse.time_entry_requirements; - } - } catch (meErr) { - console.error("getUsersMe for timer dialog:", meErr); - if (meErr && meErr.stack) console.error(meErr.stack); - const { message } = classifyAxiosError(meErr); - showError(message || "Could not load time entry rules; using defaults."); - } - } catch (error) { - console.error("Failed to load projects for timer dialog:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || "Failed to load projects"); - resolve(null); - return; - } - if (projects.length === 0) { - showError("No active projects found"); - resolve(null); - return; - } - const modal = document.createElement("div"); - modal.className = "modal"; - modal.innerHTML = ` - - `; - document.body.appendChild(modal); - const projectSelect = modal.querySelector("#timer-project-select"); - const taskSelect = modal.querySelector("#timer-task-select"); - const notesInput = modal.querySelector("#timer-notes-input"); - const confirmBtn = modal.querySelector("#start-timer-confirm"); - projectSelect.addEventListener("change", async (e) => { - const projectId = parseInt(e.target.value); - if (!projectId) { - taskSelect.innerHTML = ''; - return; - } - try { - const tasksResponse = await state.apiClient.getTasks({ projectId }); - const tasks = tasksResponse.data.tasks || []; - taskSelect.innerHTML = '' + tasks.map((t) => ``).join(""); - } catch (error) { - console.error("Failed to load tasks:", error); - } - }); - confirmBtn.addEventListener("click", () => { - const projectId = parseInt(projectSelect.value); - if (!projectId) { - showError("Please select a project"); - return; - } - const taskId = taskSelect.value ? parseInt(taskSelect.value) : null; - if (requirements.require_task && !taskId) { - showError("A task must be selected when logging time for a project"); - return; - } - const notes = notesInput.value.trim(); - if (requirements.require_description) { - if (!notes) { - showError("A description is required when logging time"); - return; - } - const minLen = requirements.description_min_length || 20; - if (notes.length < minLen) { - showError(`Description must be at least ${minLen} characters`); - return; - } - } - modal.remove(); - resolve({ projectId, taskId, notes: notes || null }); - }); - modal.addEventListener("click", (e) => { - if (e.target === modal) { - modal.remove(); - resolve(null); - } - }); - }); - } - async function handleStopTimer() { - if (!state.apiClient) return; - try { - await stopTimerWithReconcile(state.apiClient); - state.isTimerRunning = false; - stopTimerPolling(); - document.getElementById("timer-display").textContent = "00:00:00"; - document.getElementById("timer-project").textContent = "No active timer"; - document.getElementById("timer-task").style.display = "none"; - document.getElementById("timer-notes").style.display = "none"; - document.getElementById("start-timer-btn").style.display = "block"; - document.getElementById("stop-timer-btn").style.display = "none"; - updateTimerDisplay(null); - loadTimeEntries(); - loadRecentEntries(); - } catch (error) { - console.error("Error stopping timer:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || "Failed to stop timer: " + (error.response?.data?.error || error.message)); - } - } - function startTimerPolling() { - if (state.timerInterval) clearInterval(state.timerInterval); - state.timerInterval = setInterval(async () => { - if (!state.apiClient || !state.isTimerRunning) return; - try { - const response = await state.apiClient.getTimerStatus(); - if (response.data.active) { - updateTimerDisplay(response.data.timer); - } else { - state.isTimerRunning = false; - stopTimerPolling(); - } - } catch (error) { - console.error("Error polling timer:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - connectionManager.signalError(message || "Lost connection while syncing the active timer."); - updateConnectionFromManager(); - const now = Date.now(); - if (!state.lastTimerPollUserMessageAt || now - state.lastTimerPollUserMessageAt > 6e4) { - state.lastTimerPollUserMessageAt = now; - showError( - "Lost connection while syncing the active timer. Check the connection indicator; polling will retry." - ); - } - } - }, 5e3); - } - function stopTimerPolling() { - if (state.timerInterval) { - clearInterval(state.timerInterval); - state.timerInterval = null; - } - } - function updateTimerDisplay(timer) { - if (!timer) { - if (window.electronAPI && window.electronAPI.sendTimerStatus) { - window.electronAPI.sendTimerStatus({ active: false }); - } - return; - } - const startTime = new Date(timer.start_time); - const now = /* @__PURE__ */ new Date(); - const seconds = Math.floor((now - startTime) / 1e3); - document.getElementById("timer-display").textContent = formatDurationLong(seconds); - document.getElementById("timer-project").textContent = timer.project?.name || "Unknown Project"; - const taskEl = document.getElementById("timer-task"); - if (timer.task) { - taskEl.textContent = timer.task.name; - taskEl.style.display = "block"; - } else { - taskEl.style.display = "none"; - } - const notesEl = document.getElementById("timer-notes"); - if (timer.notes) { - notesEl.textContent = timer.notes; - notesEl.style.display = "block"; - } else { - notesEl.style.display = "none"; - } - if (window.electronAPI && window.electronAPI.sendTimerStatus) { - window.electronAPI.sendTimerStatus({ active: true, timer }); - } - } - async function loadInvoices() { - if (!state.apiClient) return; - try { - const response = await state.apiClient.getInvoices({ - page: state.pagination.invoices.page, - perPage: state.pagination.invoices.perPage - }); - state.cachedInvoices = response.data.invoices || []; - state.viewLimits.invoices = 20; - const pagination = response.data.pagination || {}; - state.pagination.invoices.totalPages = Number(pagination.pages || pagination.total_pages || 1) || 1; - state.pagination.invoices.total = Number(pagination.total || state.cachedInvoices.length) || state.cachedInvoices.length; - renderInvoices(); - renderInvoicePager(); - } catch (error) { - console.error("Error loading invoices:", error); - showError("Failed to load invoices: " + (error.response?.data?.error || error.message)); - } - } - function renderInvoicePager() { - const indicator = document.getElementById("invoice-page-indicator"); - const prevBtn = document.getElementById("invoice-prev-page-btn"); - const nextBtn = document.getElementById("invoice-next-page-btn"); - if (indicator) { - indicator.textContent = `Page ${state.pagination.invoices.page}/${state.pagination.invoices.totalPages}`; - } - if (prevBtn) { - prevBtn.disabled = state.pagination.invoices.page <= 1; - } - if (nextBtn) { - nextBtn.disabled = state.pagination.invoices.page >= state.pagination.invoices.totalPages; - } - } - async function changeInvoicePage(delta) { - const nextPage = state.pagination.invoices.page + delta; - if (nextPage < 1 || nextPage > state.pagination.invoices.totalPages) { - return; - } - state.pagination.invoices.page = nextPage; - await loadInvoices(); - } - function renderInvoices() { - const list = document.getElementById("invoices-list"); - if (!list) return; - const filtered = state.cachedInvoices.filter((invoice) => { - const q = state.viewFilters.invoiceQuery; - if (!q) return true; - const haystack = `${invoice.invoice_number || ""} ${invoice.client_name || ""} ${invoice.status || ""}`.toLowerCase(); - return haystack.includes(q); - }); - if (filtered.length === 0) { - list.innerHTML = '

No invoices

'; - return; - } - const limited = filtered.slice(0, state.viewLimits.invoices); - const rowsHtml = limited.map((invoice) => { - const number = invoice.invoice_number || invoice.id || "N/A"; - const status = invoice.status || "unknown"; - const total = invoice.total_amount ?? invoice.total ?? "-"; - const totalNumber = Number(invoice.total_amount ?? invoice.total ?? 0) || 0; - return ` -
- -
-
${total}
- - - -
-
- `; - }).join(""); - const hasMore = filtered.length > limited.length; - list.innerHTML = rowsHtml + (hasMore ? `
` : ""); - } - async function loadExpenses() { - if (!state.apiClient) return; - try { - const response = await state.apiClient.getExpenses({ - page: state.pagination.expenses.page, - perPage: state.pagination.expenses.perPage - }); - state.cachedExpenses = response.data.expenses || []; - state.viewLimits.expenses = 20; - const pagination = response.data.pagination || {}; - state.pagination.expenses.totalPages = Number(pagination.pages || pagination.total_pages || 1) || 1; - state.pagination.expenses.total = Number(pagination.total || state.cachedExpenses.length) || state.cachedExpenses.length; - renderExpenses(); - renderExpensePager(); - } catch (error) { - console.error("Error loading expenses:", error); - showError("Failed to load expenses: " + (error.response?.data?.error || error.message)); - } - } - function renderExpensePager() { - const indicator = document.getElementById("expense-page-indicator"); - const prevBtn = document.getElementById("expense-prev-page-btn"); - const nextBtn = document.getElementById("expense-next-page-btn"); - if (indicator) { - indicator.textContent = `Page ${state.pagination.expenses.page}/${state.pagination.expenses.totalPages}`; - } - if (prevBtn) { - prevBtn.disabled = state.pagination.expenses.page <= 1; - } - if (nextBtn) { - nextBtn.disabled = state.pagination.expenses.page >= state.pagination.expenses.totalPages; - } - } - async function changeExpensePage(delta) { - const nextPage = state.pagination.expenses.page + delta; - if (nextPage < 1 || nextPage > state.pagination.expenses.totalPages) { - return; - } - state.pagination.expenses.page = nextPage; - await loadExpenses(); - } - function renderExpenses() { - const list = document.getElementById("expenses-list"); - if (!list) return; - const filtered = state.cachedExpenses.filter((expense) => { - const q = state.viewFilters.expenseQuery; - if (!q) return true; - const haystack = `${expense.title || ""} ${expense.category || ""} ${expense.expense_date || ""}`.toLowerCase(); - return haystack.includes(q); - }); - if (filtered.length === 0) { - list.innerHTML = '

No expenses

'; - return; - } - const limited = filtered.slice(0, state.viewLimits.expenses); - const rowsHtml = limited.map((expense) => { - const category = expense.category || "General"; - const amount = expense.amount ?? "-"; - const date = expense.expense_date || expense.date || ""; - return ` -
- -
${amount}
-
- `; - }).join(""); - const hasMore = filtered.length > limited.length; - list.innerHTML = rowsHtml + (hasMore ? `
` : ""); - } - async function loadWorkforce() { - if (!state.apiClient) return; - try { - const start = /* @__PURE__ */ new Date(); - start.setDate(start.getDate() - start.getDay() + 1); - const end = new Date(start); - end.setDate(start.getDate() + 6); - const startDate = start.toISOString().split("T")[0]; - const endDate = end.toISOString().split("T")[0]; - const [periodsResponse, capacityResponse, requestsResponse, balancesResponse] = await Promise.all([ - state.apiClient.getTimesheetPeriods({ startDate, endDate }), - state.apiClient.getCapacityReport({ startDate, endDate }), - state.apiClient.getTimeOffRequests({}), - state.apiClient.getTimeOffBalances({}) - ]); - state.cachedWorkforce = { - periods: periodsResponse.data.timesheet_periods || [], - capacity: capacityResponse.data.capacity || [], - timeOffRequests: requestsResponse.data.time_off_requests || [], - balances: balancesResponse.data.balances || [] - }; - state.viewLimits.timeoff = 20; - renderWorkforce(); - } catch (error) { - console.error("Error loading workforce view:", error); - showError("Failed to load workforce data: " + (error.response?.data?.error || error.message)); - } - } - function renderWorkforce() { - renderPeriods(); - renderCapacity(); - renderTimeOffRequests(); - renderBalances(); - } - function renderPeriods() { - const periods = state.cachedWorkforce.periods || []; - const periodsList = document.getElementById("periods-list"); - if (!periodsList) return; - if (periods.length === 0) { - periodsList.innerHTML = '

No periods

'; - return; - } - periodsList.innerHTML = periods.map((period) => ` -
- -
- ${String(period.status || "").toLowerCase() === "draft" ? `` : ""} - ${String(period.status || "").toLowerCase() === "submitted" && state.currentUserProfile.can_approve ? `` : ""} - ${String(period.status || "").toLowerCase() === "submitted" && state.currentUserProfile.can_approve ? `` : ""} - ${["draft", "rejected"].includes(String(period.status || "").toLowerCase()) ? `` : ""} -
-
- `).join(""); - } - function renderCapacity() { - const capacity = state.cachedWorkforce.capacity || []; - const capacityList = document.getElementById("capacity-list"); - if (!capacityList) return; - if (capacity.length === 0) { - capacityList.innerHTML = '

No capacity rows

'; - return; - } - capacityList.innerHTML = capacity.map((row) => { - const username = row.username || row.user_id || "User"; - const expected = row.expected_hours ?? 0; - const allocated = row.allocated_hours ?? 0; - const util = row.utilization_pct ?? 0; - return ` -
- -
${util}%
-
- `; - }).join(""); - } - function renderTimeOffRequests() { - const requests = state.cachedWorkforce.timeOffRequests || []; - const timeoffList = document.getElementById("timeoff-list"); - if (!timeoffList) return; - const filtered = requests.filter((req) => { - const q = state.viewFilters.timeoffQuery; - if (!q) return true; - const haystack = `${req.leave_type_name || ""} ${req.status || ""} ${req.start_date || ""} ${req.end_date || ""}`.toLowerCase(); - return haystack.includes(q); - }); - if (filtered.length === 0) { - timeoffList.innerHTML = '

No time-off requests

'; - return; - } - const limited = filtered.slice(0, state.viewLimits.timeoff); - const rowsHtml = limited.map((req) => { - const leaveType = req.leave_type_name || "Leave"; - const status = req.status || ""; - const pending = String(status).toLowerCase() === "submitted"; - const canReview = pending && state.currentUserProfile.can_approve; - return ` -
- -
-
${status}
- ${canReview ? `` : ""} - ${canReview ? `` : ""} - ${["draft", "submitted", "cancelled"].includes(String(status).toLowerCase()) && (req.user_id === state.currentUserProfile.id || state.currentUserProfile.can_approve) ? `` : ""} -
-
- `; - }).join(""); - const hasMore = filtered.length > limited.length; - timeoffList.innerHTML = rowsHtml + (hasMore ? `
` : ""); - } - function renderBalances() { - const balances = state.cachedWorkforce.balances || []; - const balancesList = document.getElementById("balances-list"); - if (!balancesList) return; - if (balances.length === 0) { - balancesList.innerHTML = '

No leave balances

'; - return; - } - balancesList.innerHTML = balances.map((bal) => { - const leaveType = bal.leave_type_name || "Leave"; - const remaining = bal.remaining_hours ?? bal.balance_hours ?? 0; - return ` -
- -
${remaining}h
-
- `; - }).join(""); - } - async function showCreateInvoiceDialog() { - if (!state.apiClient) return; - try { - const [projectsResponse, clientsResponse] = await Promise.all([ - state.apiClient.getProjects({ status: "active", perPage: 100 }), - state.apiClient.getClients({ status: "active", perPage: 100 }) - ]); - const projects = projectsResponse.data.projects || []; - const clients = clientsResponse.data.clients || []; - if (projects.length === 0 || clients.length === 0) { - showError("Need at least one active project and client to create an invoice"); - return; - } - const modal = document.createElement("div"); - modal.className = "modal"; - modal.innerHTML = ` - - `; - document.body.appendChild(modal); - const createBtn = modal.querySelector("#invoice-create-btn"); - createBtn.addEventListener("click", async () => { - const projectId = Number(modal.querySelector("#invoice-project-select").value); - const clientId = Number(modal.querySelector("#invoice-client-select").value); - const dueDate = modal.querySelector("#invoice-due-date").value; - const client = clients.find((c) => Number(c.id) === clientId); - if (!projectId || !clientId || !client || !dueDate) { - showError("Please provide all required fields"); - return; - } - await state.apiClient.createInvoice({ - project_id: projectId, - client_id: clientId, - client_name: client.name, - due_date: dueDate - }); - modal.remove(); - showSuccess("Invoice created successfully"); - await loadInvoices(); - }); - modal.addEventListener("click", (e) => { - if (e.target === modal) { - modal.remove(); - } - }); - } catch (error) { - showError("Failed to create invoice: " + (error.response?.data?.error || error.message)); - } - } - async function showCreateTimeOffDialog() { - if (!state.apiClient) return; - try { - const leaveTypesResponse = await state.apiClient.getLeaveTypes(); - const leaveTypes = leaveTypesResponse.data.leave_types || []; - if (leaveTypes.length === 0) { - showError("No leave types available"); - return; - } - const modal = document.createElement("div"); - modal.className = "modal"; - const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0]; - modal.innerHTML = ` - - `; - document.body.appendChild(modal); - modal.querySelector("#timeoff-create-btn").addEventListener("click", async () => { - const leaveTypeId = Number(modal.querySelector("#timeoff-leave-type").value); - const startDate = modal.querySelector("#timeoff-start-date").value; - const endDate = modal.querySelector("#timeoff-end-date").value; - const hoursValue = modal.querySelector("#timeoff-hours").value.trim(); - const requestedHours = hoursValue ? Number(hoursValue) : null; - const comment = modal.querySelector("#timeoff-comment").value.trim(); - if (!leaveTypeId || !startDate || !endDate) { - showError("Please provide leave type and dates"); - return; - } - if (hoursValue && !Number.isFinite(requestedHours)) { - showError("requested_hours must be numeric"); - return; - } - await state.apiClient.createTimeOffRequest({ - leaveTypeId, - startDate, - endDate, - requestedHours, - comment, - submit: true - }); - modal.remove(); - showSuccess("Time-off request created"); - await loadWorkforce(); - }); - modal.addEventListener("click", (e) => { - if (e.target === modal) { - modal.remove(); - } - }); - } catch (error) { - showError("Failed to create time-off request: " + (error.response?.data?.error || error.message)); - } - } - async function showCreateExpenseDialog() { - if (!state.apiClient) return; - try { - const modal = document.createElement("div"); - modal.className = "modal"; - modal.innerHTML = ` - - `; - document.body.appendChild(modal); - modal.querySelector("#expense-create-btn").addEventListener("click", async () => { - const title = modal.querySelector("#expense-title").value.trim(); - const category = modal.querySelector("#expense-category").value.trim(); - const amount = Number(modal.querySelector("#expense-amount").value); - const expenseDate = modal.querySelector("#expense-date").value; - if (!title || !category || !expenseDate || !Number.isFinite(amount) || amount <= 0) { - showError("Please provide valid title/category/amount/date"); - return; - } - await state.apiClient.createExpense({ - title, - category, - amount, - expense_date: expenseDate - }); - modal.remove(); - showSuccess("Expense created successfully"); - await loadExpenses(); - }); - modal.addEventListener("click", (e) => { - if (e.target === modal) { - modal.remove(); - } - }); - } catch (error) { - showError("Failed to create expense: " + (error.response?.data?.error || error.message)); - } - } - async function loadSettings() { - const serverUrl = await storeGet("server_url") || ""; - const username = await storeGet("username") || ""; - const autoSync = await storeGet("auto_sync"); - const syncInterval = await storeGet("sync_interval"); - const serverUrlInput = document.getElementById("settings-server-url"); - const usernameInput = document.getElementById("settings-username"); - const passwordInput = document.getElementById("settings-password"); - const autoSyncInput = document.getElementById("auto-sync"); - const syncIntervalInput = document.getElementById("sync-interval"); - if (serverUrlInput) { - serverUrlInput.value = serverUrl ? ApiClient.normalizeBaseUrl(String(serverUrl)) : ""; - } - if (usernameInput) { - usernameInput.value = username ? String(username) : ""; - } - if (passwordInput) { - passwordInput.value = ""; - } - if (autoSyncInput) { - autoSyncInput.checked = autoSync !== null ? Boolean(autoSync) : true; - } - if (syncIntervalInput) { - syncIntervalInput.value = (syncInterval || 60).toString(); - } - updateSyncIntervalState(); - } - function updateSyncIntervalState() { - const autoSyncInput = document.getElementById("auto-sync"); - const syncIntervalInput = document.getElementById("sync-interval"); - if (!autoSyncInput || !syncIntervalInput) return; - syncIntervalInput.disabled = !autoSyncInput.checked; - } - async function handleSaveSettings() { - const serverUrlInput = document.getElementById("settings-server-url"); - const usernameInput = document.getElementById("settings-username"); - const passwordInput = document.getElementById("settings-password"); - const autoSyncInput = document.getElementById("auto-sync"); - const syncIntervalInput = document.getElementById("sync-interval"); - const messageDiv = document.getElementById("settings-message"); - if (!serverUrlInput || !usernameInput || !passwordInput || !autoSyncInput || !syncIntervalInput) return; - const rawServer = serverUrlInput.value.trim(); - const normalizedInput = normalizeServerUrlInput(rawServer); - const username = usernameInput.value.trim(); - const password = passwordInput.value; - const autoSync = autoSyncInput.checked; - const syncInterval = parseInt(syncIntervalInput.value, 10); - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showSettingsMessage("Please enter a valid server URL", "error"); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - if (!username || !password) { - showSettingsMessage("Please enter your username and password to save settings", "error"); - return; - } - if (Number.isNaN(syncInterval) || syncInterval < 10) { - showSettingsMessage("Sync interval must be at least 10 seconds", "error"); - return; - } - try { - const saved = await connectionManager.saveServerAndCredentials(serverUrl, username, password, { - auto_sync: autoSync, - sync_interval: syncInterval - }); - if (!saved.ok) { - showSettingsMessage(saved.message || saved.session?.message || "Could not save settings.", "error"); - updateConnectionFromManager(); - return; - } - state.authFailureStreak = 0; - await loadCurrentUserProfile(); - updateConnectionFromManager(); - showSettingsMessage("Settings saved successfully!", "success"); - passwordInput.value = ""; - serverUrlInput.value = serverUrl; - } catch (error) { - console.error("Error saving settings:", error); - if (error && error.stack) console.error(error.stack); - showSettingsMessage("Error saving settings: " + (error.message || String(error)), "error"); - } - } - async function handleTestConnection() { - const serverUrlInput = document.getElementById("settings-server-url"); - const usernameInput = document.getElementById("settings-username"); - const passwordInput = document.getElementById("settings-password"); - const messageDiv = document.getElementById("settings-message"); - if (!serverUrlInput || !usernameInput || !passwordInput) return; - const rawServer = serverUrlInput.value.trim(); - const normalizedInput = normalizeServerUrlInput(rawServer); - const username = usernameInput.value.trim(); - const password = passwordInput.value; - if (!normalizedInput || !isValidUrl(normalizedInput)) { - showSettingsMessage("Please enter a valid server URL", "error"); - return; - } - const serverUrl = ApiClient.normalizeBaseUrl(normalizedInput); - if (!username || !password) { - showSettingsMessage("Please enter your username and password to test connection", "error"); - return; - } - try { - showSettingsMessage("Testing connection...", "info"); - const r = await connectionManager.testServerAndCredentials(serverUrl, username, password); - if (!r.ok) { - showSettingsMessage(r.message || "Connection test failed.", "error"); - updateConnectionFromManager(); - return; - } - const snap = connectionManager.getSnapshot(); - if (snap.serverUrl === serverUrl && connectionManager.getClient()) { - await connectionManager.validateSessionRefresh(); - } - updateConnectionFromManager(); - const ver = r.app_version ? ` (${r.app_version})` : ""; - showSettingsMessage(`Connection successful: credentials are valid${ver}.`, "success"); - } catch (error) { - console.error("Error testing connection:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showSettingsMessage(message || "Connection error: " + error.message, "error"); - } - } - function showSettingsMessage(message, type = "info") { - const messageDiv = document.getElementById("settings-message"); - if (!messageDiv) return; - messageDiv.textContent = message; - messageDiv.className = `message message-${type}`; - messageDiv.style.display = "block"; - if (type === "success" || type === "info") { - setTimeout(() => { - messageDiv.style.display = "none"; - }, 5e3); - } - } - async function handleLogout() { - if (!confirm("Sign out of this desktop app? Your server URL will be kept.")) return; - if (state.isTimerRunning) { - state.isTimerRunning = false; - stopTimerPolling(); - } - await connectionManager.logoutKeepServer(); - showLoginScreen({ prefillServerUrl: connectionManager.getSnapshot().serverUrl || "" }); - } - async function handleResetConfiguration() { - if (!confirm( - "Reset all app configuration (server URL, token, sync settings)? This cannot be undone." - )) { - return; - } - if (state.isTimerRunning) { - state.isTimerRunning = false; - stopTimerPolling(); - } - await connectionManager.fullStoreReset(); - showLoginScreen({ prefillServerUrl: "", startAtServer: true }); - } - async function safeInitApp() { - try { - await initApp(); - } catch (err) { - console.error("initApp failed:", err); - try { - showLoginScreen({ - prefillServerUrl: "", - startAtServer: true, - bannerMessage: "Startup failed. Please re-enter your server URL and sign in again." - }); - } catch (e) { - console.error("Failed to show login screen after init failure:", e); - } - } - } - if (document.readyState === "loading") { - document.addEventListener("DOMContentLoaded", safeInitApp); - } else { - safeInitApp(); - } - function toggleFilters() { - const filtersEl = document.getElementById("entries-filters"); - if (filtersEl) { - filtersEl.style.display = filtersEl.style.display === "none" ? "block" : "none"; - } - } - async function applyFilters() { - const startDate = document.getElementById("filter-start-date")?.value || null; - const endDate = document.getElementById("filter-end-date")?.value || null; - const projectId = document.getElementById("filter-project")?.value ? parseInt(document.getElementById("filter-project").value) : null; - currentFilters = { startDate, endDate, projectId }; - await loadTimeEntries(); - } - function clearFilters() { - currentFilters = { startDate: null, endDate: null, projectId: null }; - document.getElementById("filter-start-date").value = ""; - document.getElementById("filter-end-date").value = ""; - document.getElementById("filter-project").value = ""; - loadTimeEntries(); - } - async function loadProjectsForFilter() { - if (!state.apiClient) return; - try { - const response = await state.apiClient.getProjects({ status: "active" }); - const projects = response.data.projects || []; - const select = document.getElementById("filter-project"); - if (select) { - select.innerHTML = '' + projects.map((p) => ``).join(""); - if (currentFilters.projectId) { - select.value = String(currentFilters.projectId); - } - } - } catch (error) { - console.error("Error loading projects for filter:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || "Could not load projects for filter."); - } - } - async function showTimeEntryForm(entryId = null) { - if (!state.apiClient) return; - let projects = []; - let requirements = { require_task: false, require_description: false, description_min_length: 20 }; - try { - const projectsResponse = await state.apiClient.getProjects({ status: "active" }); - projects = projectsResponse.data.projects || []; - try { - const usersMeResponse = await state.apiClient.getUsersMe(); - if (usersMeResponse && usersMeResponse.time_entry_requirements) { - requirements = usersMeResponse.time_entry_requirements; - } - } catch (meErr) { - console.error("getUsersMe for time entry form:", meErr); - if (meErr && meErr.stack) console.error(meErr.stack); - const { message } = classifyAxiosError(meErr); - showError(message || "Could not load time entry rules; using defaults."); - } - } catch (error) { - console.error("Failed to load projects for time entry form:", error); - if (error && error.stack) console.error(error.stack); - const { message } = classifyAxiosError(error); - showError(message || "Failed to load projects"); - return; - } - let entry = null; - if (entryId) { - try { - const entryResponse = await state.apiClient.getTimeEntry(entryId); - entry = entryResponse.data.time_entry; - } catch (error) { - showError("Failed to load time entry"); - return; - } - } - let tasks = []; - const projectId = entry ? entry.project_id : null; - if (projectId) { - try { - const tasksResponse = await state.apiClient.getTasks({ projectId }); - tasks = tasksResponse.data.tasks || []; - } catch (error) { - console.error("Failed to load tasks:", error); - } - } - const modal = document.createElement("div"); - modal.className = "modal"; - const startDate = entry ? new Date(entry.start_time).toISOString().split("T")[0] : (/* @__PURE__ */ new Date()).toISOString().split("T")[0]; - const startTime = entry ? new Date(entry.start_time).toTimeString().slice(0, 5) : (/* @__PURE__ */ new Date()).toTimeString().slice(0, 5); - const endDate = entry && entry.end_time ? new Date(entry.end_time).toISOString().split("T")[0] : ""; - const endTime = entry && entry.end_time ? new Date(entry.end_time).toTimeString().slice(0, 5) : ""; - modal.innerHTML = ` - - `; - document.body.appendChild(modal); - const projectSelect = modal.querySelector("#entry-project-select"); - const taskSelect = modal.querySelector("#entry-task-select"); - const saveBtn = modal.querySelector("#save-entry-btn"); - projectSelect.addEventListener("change", async (e) => { - const projectId2 = parseInt(e.target.value); - if (!projectId2) { - taskSelect.innerHTML = ''; - return; - } - try { - const tasksResponse = await state.apiClient.getTasks({ projectId: projectId2 }); - const tasks2 = tasksResponse.data.tasks || []; - taskSelect.innerHTML = '' + tasks2.map((t) => ``).join(""); - } catch (error) { - console.error("Failed to load tasks:", error); - } - }); - saveBtn.addEventListener("click", async () => { - const projectId2 = parseInt(projectSelect.value); - if (!projectId2) { - showError("Please select a project"); - return; - } - const taskId = taskSelect.value ? parseInt(taskSelect.value) : null; - if (requirements.require_task && !taskId) { - showError("A task must be selected when logging time for a project"); - return; - } - const notesEl = document.getElementById("entry-notes"); - const notes = notesEl ? notesEl.value.trim() : ""; - if (requirements.require_description) { - if (!notes) { - showError("A description is required when logging time"); - return; - } - const minLen = requirements.description_min_length || 20; - if (notes.length < minLen) { - showError(`Description must be at least ${minLen} characters`); - return; - } - } - const startDate2 = document.getElementById("entry-start-date").value; - const startTime2 = document.getElementById("entry-start-time").value; - const endDate2 = document.getElementById("entry-end-date").value; - const endTime2 = document.getElementById("entry-end-time").value; - const notesForApi = notes || null; - const tags = document.getElementById("entry-tags").value.trim() || null; - const billable = document.getElementById("entry-billable").checked; - const startDateTime = (/* @__PURE__ */ new Date(`${startDate2}T${startTime2}`)).toISOString(); - const endDateTime = endDate2 && endTime2 ? (/* @__PURE__ */ new Date(`${endDate2}T${endTime2}`)).toISOString() : null; - try { - if (entryId) { - await state.apiClient.updateTimeEntry(entryId, { - project_id: projectId2, - task_id: taskId, - start_time: startDateTime, - end_time: endDateTime, - notes: notesForApi, - tags, - billable - }); - showSuccess("Time entry updated successfully"); - } else { - await state.apiClient.createTimeEntry({ - project_id: projectId2, - task_id: taskId, - start_time: startDateTime, - end_time: endDateTime, - notes: notesForApi, - tags, - billable - }); - showSuccess("Time entry created successfully"); - } - modal.remove(); - loadTimeEntries(); - } catch (error) { - showError("Failed to save time entry: " + (error.response?.data?.error || error.message)); - } - }); - modal.addEventListener("click", (e) => { - if (e.target === modal) { - modal.remove(); - } - }); - } -})(); -/*! Bundled license information: - -axios/dist/browser/axios.cjs: - (*! Axios v1.15.0 Copyright (c) 2026 Matt Zabriskie and contributors *) -*/ diff --git a/desktop/test/react_renderer_package.test.js b/desktop/test/react_renderer_package.test.js index d50cdd43..2bd9691e 100644 --- a/desktop/test/react_renderer_package.test.js +++ b/desktop/test/react_renderer_package.test.js @@ -17,10 +17,14 @@ test('desktop package builds the React renderer with Vite', () => { assert.ok(pkg.build.files.includes('dist-renderer/**/*')); }); -test('Electron loads the built renderer with legacy fallback', () => { +test('Electron loads only the built React renderer', () => { const windowSource = fs.readFileSync(path.join(root, 'src/main/window.js'), 'utf8'); assert.match(windowSource, /dist-renderer\/index\.html/); - assert.match(windowSource, /legacyIndex/); + assert.match(windowSource, /build:renderer/); + assert.doesNotMatch(windowSource, /legacyIndex/); + assert.match(windowSource, /splash\/splash\.html/); + const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8')); + assert.ok(pkg.build.files.some((f) => String(f).includes('!src/renderer'))); }); test('main process store IPC is limited to known desktop settings', () => { diff --git a/desktop/vite.config.mjs b/desktop/vite.config.mjs index bfeca659..ab620a2a 100644 --- a/desktop/vite.config.mjs +++ b/desktop/vite.config.mjs @@ -1,14 +1,19 @@ +import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url'; import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, 'package.json'), 'utf8')); export default defineConfig({ root: path.resolve(__dirname, 'src/renderer-react'), base: './', plugins: [react()], + define: { + __APP_VERSION__: JSON.stringify(pkg.version), + }, build: { outDir: path.resolve(__dirname, 'dist-renderer'), emptyOutDir: true, diff --git a/docs/ARCHITECTURE_AUDIT.md b/docs/ARCHITECTURE_AUDIT.md index cccfbd9e..fac7c9d5 100644 --- a/docs/ARCHITECTURE_AUDIT.md +++ b/docs/ARCHITECTURE_AUDIT.md @@ -10,7 +10,7 @@ This document captures a concise architecture audit of the TimeTracker repositor - **Existing repository layer**: `app/repositories/` provides `BaseRepository` and dedicated repos for TimeEntry, Project, Task, Client, Invoice, Expense, Payment, User, Comment with sensible methods (e.g. `TimeEntryRepository.get_active_timer`, `get_by_date_range`, `get_total_duration`). - **Central API response helpers**: `app/utils/api_responses.py` defines `success_response`, `error_response`, `validation_error_response`, `paginated_response`, etc.; error handlers in `app/utils/error_handlers.py` use them for JSON/API. - **Blueprint registry**: Single registration point in `app/blueprint_registry.py` keeps app init clean. -- **Refactor examples**: The migration guide gives a clear "after" pattern. (Historical note: previously unregistered modules `timer_refactored.py`, `projects_refactored_example.py`, `invoices_refactored.py` have been merged or removed.) +- **Refactor examples**: The migration guide gives a clear "after" pattern. Unregistered reference modules (`timer_refactored.py`, `projects_refactored_example.py`, `invoices_refactored.py`, `offers.py`) were deleted; use active routes (`timer.py`, `projects.py`, `invoices.py`, `quotes.py`) and the Architecture Migration Guide. - **Validation and schemas**: Marshmallow used for time-entry API v1; `app/utils/validation.py` and `app/utils/time_entry_validation.py` exist; `app/schemas/` has schemas for several resources (underused in routes). --- @@ -25,7 +25,7 @@ This document captures a concise architecture audit of the TimeTracker repositor 6. **Logic in models**: `app/models/recurring_invoice.py` `generate_invoice()` does full workflow. `app/models/expense.py`, `app/models/lead.py`, `app/models/issue.py`, `app/models/project.py` contain state transitions and query/aggregation methods that belong in services/repositories. 7. **Template logic**: Budget and status rules in project view/list templates; task counts via `selectattr` in tasks list/my_tasks/kanban; totals and filters in inventory, client portal, expense_categories. Better to precompute in views. 8. **Missing repositories**: No repository for FocusSession, Activity, AuditLog, StockItem/inventory, RecurringInvoice, and others; services and routes use `Model.query` / `db.session` directly. -9. **Unused/refactor-only code**: (Historical: `timer_refactored.py`, `projects_refactored_example.py`, `invoices_refactored.py` are no longer present; refactors were merged or removed.) +9. **Unused/refactor-only code**: Removed dead unregistered route modules (`timer_refactored.py`, `projects_refactored_example.py`, `invoices_refactored.py`, `offers.py`). Prefer services/repositories over new fat routes. --- diff --git a/docs/GAP_ROADMAP.md b/docs/GAP_ROADMAP.md new file mode 100644 index 00000000..0000b88b --- /dev/null +++ b/docs/GAP_ROADMAP.md @@ -0,0 +1,157 @@ +# Gap Remediation Roadmap + +Tracking document for the whole-app gap analysis (implementation, UI/UX, clients, missing features). Archive stale competitive/status docs in favor of this file. + +## Status + +| Phase | Focus | Status | +|-------|--------|--------| +| 0 | Stabilize: idle feature, dead routes, Alembic single-head CI | Done | +| 1 | Security & backend hygiene | Done (first pass) | +| 2 | Web UI/UX consistency | Done (first pass) | +| 3 | Client parity | Done (first pass) | +| 4 | High-return missing features | Done (first slices) | +| 5 | Strategic / enterprise | Done (foundations / design + stubs) | + +## Phase notes + +### Phase 0 +- Idle unanswered action shipped (migration 195, commit on develop). +- Deleted unregistered dead modules: `timer_refactored.py`, `invoices_refactored.py`, `projects_refactored_example.py`, `offers.py`. +- CI: single Alembic head check in `.github/workflows/migration-check.yml`. + +### Phase 1 + +**Silent `except` / `pass` (hot paths)** — Replace swallowed exceptions with structured logging while keeping the same control flow (still swallow where previously swallowed). Phase 1 scope: + +- `app/routes/auth.py` +- `app/routes/admin.py` (high-risk + intentional cleanup at debug) +- `app/routes/expenses.py` +- `app/__init__.py` (optional imports / telemetry at debug) +- `app/utils/scheduled_tasks.py` + +**Lint guard:** Ruff rule **S110** (try/except/pass) is enabled in `pyproject.toml` under `[tool.ruff.lint]` (`extend-select = ["S110"]`). Tests and scripts ignore S110 via `[tool.ruff.lint.per-file-ignores]`. + +**Verify remaining silent handlers in Phase 1 files:** + +```bash +rg -c 'except.*:\n\s+pass' -U \ + app/routes/auth.py app/routes/admin.py app/routes/expenses.py \ + app/__init__.py app/utils/scheduled_tasks.py +``` + +Expect **0** matches per file when Phase 1 logging work is complete. + +See implementation commits and CHANGELOG Unreleased section for other Phase 1 items. + +### Phase 2 (Web UI/UX consistency) + +**Accessibility & dark mode (sample pass)** + +- Icon-only controls: `aria-label` (+ `aria-hidden` on icons) on expense approvals, project/client list filters, project/client delete actions, expense category row actions, dashboard weekly-goal link. +- Dark mode: sample `dark:` fixes on `admin/dashboard.html`, `main/dashboard.html`, `user/settings.html` chevrons, `admin/api_tokens.html` copy (table already themed). + +**Forms** + +- Flatpickr: `user-date-input` on expense approval filters and quote `valid_until` (timer/invoice due dates were already wired). +- Unsaved changes: new `app/static/js/unsaved-changes.js` in `core-a1` bundle; `data-unsaved-guard` on invoice edit, quote edit, admin invoice/quote PDF layout forms; Konva editors dispatch `tt:unsaved-dirty` / `tt:unsaved-clean` on edit/save. + +**Navigation / command palette** + +- Expanded Ctrl+K destinations (projects, tasks, invoices, analytics, calendar, expenses, time entries, settings) via `data-*` URLs on `_command_palette.html`. +- Command titles wired to `window.i18n.commandPalette` in `_head.html`. +- Sidebar unchanged structurally; comment notes palette as alternate entry to primary routes. + +**i18n quick wins** + +- Wrapped hardcoded English on `expense_categories/list.html`, `deals/list.html`, `deals/pipeline.html`, and admin API tokens headers/docs blurb. + +**Follow-ups** + +- Rebuild JS assets (`node scripts/build-js.mjs`) so `core-a1` and `command-palette` hashes pick up new scripts. +- Broader template pass for remaining icon-only buttons and light-only Tailwind grays. +- Extract new `commandPalette.*` strings into `messages.po` for translators. + +### Phase 3 (Client parity — offline, tests, i18n, versions & auth) + +**Versions** + +- Source of truth: `setup.py` (`5.17.0`); mirror `VERSION` at repo root. +- Clients aligned: `desktop/package.json`, `browser-extension/package.json` + `manifest.json`, `mobile/pubspec.yaml` (`5.17.0+1`). +- Desktop sidebar label via Vite `__APP_VERSION__` (`desktop/vite.config.mjs` reads `desktop/package.json`). + +**API login + 2FA** + +- `POST /api/v1/auth/login` — when `user.two_factor_enabled`, **403** with `{ "requires_2fa": true, "temp_token": "…" }`. +- `POST /api/v1/auth/2fa/verify` — TOTP completion → `{ "token": "tt_…" }` (`app/utils/api_auth_2fa.py`, 5-minute signed challenge). +- Desktop/mobile: 2FA sign-in step; API token paste + OIDC notes. Extension: token paste + `requires_2fa` detection in `lib/api.js` (options UI TOTP step still TODO). +- Tests: `tests/test_api_v1_auth_2fa.py`. + +**Offline sync** + +- **Desktop** (`desktop/src/renderer-react/src/sync/syncEngine.js`): `Idempotency-Key` (UUID) on queued `time_entry_create`; PATCH updates with `if_updated_at` via API client; 409 conflicts drop stale updates; max **8** attempts then queue item status `failed`; sync continues other items instead of aborting the whole batch. +- **Desktop API** (`services/api.js`): `createTimeEntry` sends optional idempotency header; `updateTimeEntry` uses `PATCH` (matches mobile/API v1). +- **Mobile** (`sync_service.dart`, `time_tracking_repository.dart`): offline timer **start** queues `timer_start` (not manual create); offline **stop** queues `timer_stop` and clears local timer with a provisional cached entry. + +**Tests** + +- **Browser extension**: `node --test` in `browser-extension/test/api.test.js` — `buildAuthHeaders`, timer start/stop fetch wrappers (`npm test` in extension folder). +- **Mobile**: `mobile/test/sync_service_test.dart` for idempotency key shape/uniqueness. + +**i18n / UX** + +- **Desktop**: `src/renderer-react/src/i18n/` (`en.json`, `t()` helper); Shell sidebar nav labels wired through i18n. +- **Extension**: `popup.css` `prefers-color-scheme: dark` tokens for popup surfaces and form controls. + +**Legacy desktop renderer** + +- Electron loads **only** `dist-renderer/` (hard error if missing build). +- Splash moved to `src/main/splash/`; deprecated `src/renderer/` HTML/bundle removed; `js/` kept for existing desktop unit tests; excluded from electron-builder package via `!src/renderer/**`. + +**Follow-ups** + +- Desktop: queue failed-item UI, locale switching, broader string catalog. +- Mobile: widget test for offline timer stop UX; retry/backoff parity with desktop max attempts. +- Extension: options page dark mode; shared i18n if extension strings grow; options TOTP step after password login. +- Rebuild desktop renderer (`npm run build:renderer`) before release; OIDC browser redirect deferred. + +### Phase 2 + +**List components (`empty_state`, `pagination_nav`, table scroll):** Inventory list pages, CRM (leads/contacts/deals), recurring invoices, milestones, audit logs, and admin list pages (roles, link templates, webhooks, custom fields, email templates). Shared list partials `_tasks_list`, `_projects_list`, `_clients_list`, `_invoices_list`, `_quotes_list` wrap tables in `overflow-x-auto`. No shared bulk/filter partial yet (markup differs per page); skeleton macros in `components/ui.html` for future loading states. + +**Bootstrap class cleanup (Tailwind migration):** Removed leftover Bootstrap form/layout/pagination classes from **18** Jinja templates (e.g. `form-control` → `form-input`, `form-select` → `form-input`, `card-body` → `p-6`, `col-md-*` → Tailwind `grid`/`col-span`, `page-item`/`input-group` → `btn` nav and icon-in-input patterns). Modal markup (`modal-dialog`) deferred to a dedicated dialogs pass. Remaining hits are mostly `form-group-wrapper` in `components/ui.html` (project component, not Bootstrap). + +**Shared confirm/alert dialogs** — `app/static/js/confirm-dialog.js` exposes `window.ttConfirm` / `window.ttAlert` (Promise-based, focus trap, Escape to dismiss, dark-mode styling). Loaded via the `core-a1` bundle in `scripts/build-js.mjs`. Legacy `showConfirm` / `showAlert` alias the same helpers. + +Migrated high-traffic templates and JS away from native `alert()` / `confirm()` (pdf layout editor, manual entry, invoice view, dashboard, reports index, timer page, calendar, integration/OIDC/LDAP wizards, context-menu deletes in `ui-enhancements.js`). Remaining call sites should migrate incrementally; search with `rg '\b(alert|confirm)\s*\(' app/templates app/static`. + +### Phase 5 (Strategic / enterprise foundations) + +Design docs and minimal scaffolding only—no full OAuth server, SAML IdP, or SCIM CRUD yet. + +| Area | Deliverable | Location | +|------|-------------|----------| +| OAuth 2.0 API apps | Authlib-oriented design + `OAuthApplication` / `OAuthAuthorizationCode` models | `docs/design/OAUTH2_API_APPS.md`, migration **197** | +| SAML + SCIM | SAML login design; SCIM Users list stub behind `SCIM_ENABLED` | `docs/design/SAML_SCIM.md`, `app/routes/api_scim.py` | +| AI timesheet summaries | `LLMService.summarize_time_entries`, `POST /api/v1/ai/summarize-entries` | `app/services/llm_service.py`, `app/routes/api_v1_ai.py` | +| Teams bot | `/tt` parity plan + stub bot handler | `docs/design/TEAMS_BOT.md`, `MicrosoftTeamsConnector.handle_bot_command` | +| Multi-tenant | Row-level vs schema-per-tenant analysis + recommendation | `docs/design/MULTI_TENANT.md` | +| Zapier / Make | Webhook trigger mapping using existing `WebhookEvent` | `docs/design/ZAPIER_MAKE.md` | + +**Follow-ups:** Authlib authorization server routes, SAML ACS, SCIM user CRUD, Bot Framework JWT, `organization_id` rollout, official Zapier OAuth app. + +### Phase 4 (high-return missing features — shipped slices) + +- **GDPR erasure** — `app/services/user_gdpr_service.py`; `users.anonymized_at` (migration **197**); self-service `POST /api/v1/users/me/erase`, `POST /api/erase-account`, admin `POST /admin/users//erase`; audit log action `anonymized`; API tokens revoked; username reserved via `DeletedUsername`. +- **API v1** — `api_v1_weekly_goals.py`, `api_v1_recurring_tasks.py`, `api_v1_project_templates.py` (list + get). +- **Estimates vs actuals** — `EstimateActualsService`; `/reports/estimates-vs-actuals`, `/reports/api/estimates-vs-actuals`, `GET /api/v1/reports/estimates-vs-actuals`. +- **Multi-level approvals** — Timesheet period two-step approve when `TimesheetPolicy.enable_multi_level_approval` + two approver IDs; time entry requests can use the same policy chain. +- **Integrations / presets** — Experimental `app/utils/xrechnung.py`; `MollieProvider` in payment registry; Admin → Modules quick presets (Solo = CRM/inventory off); custom field `entity_type` column. + +**Tests:** `tests/test_user_gdpr_erase.py`, `tests/test_api_v1_weekly_goals.py` + +**Follow-ups** + +- Full XRechnung CIUS-DE field mapping and invoice download wiring. +- Admin UI button for GDPR erase on user row; import/export page link for account erasure. +- Custom field rendering on project/task/time entry forms (definitions only extended). diff --git a/docs/admin/configuration/PEPPOL_EINVOICING.md b/docs/admin/configuration/PEPPOL_EINVOICING.md index 370e0ed1..8a0e75a5 100644 --- a/docs/admin/configuration/PEPPOL_EINVOICING.md +++ b/docs/admin/configuration/PEPPOL_EINVOICING.md @@ -152,25 +152,39 @@ When the setting is on **and** the client has Peppol endpoint details, the invoi In **Admin → Settings → Peppol e-Invoicing** you can enable **Embed Factur-X / ZUGFeRD CII XML in invoice PDFs (EN 16931)**. When this is on: - **Exported invoice PDFs** (Export PDF) and **invoice emails** (PDF attachment) use the same pipeline: when these settings are on, the attachment contains an embedded file `factur-x.xml` with a CII (Cross-Industry Invoice) XML conforming to the Factur-X EN 16931 profile. -- The embedded XML is attached as an **Associated File** with relationship **Data** (primary structured invoice), MIME type **text/xml**, and Factur-X XMP metadata is written so validators recognize the document. +- The embedded XML is attached as an **Associated File** with relationship **Data** (primary structured invoice), MIME type **text/xml**, catalog `/AF` entry, embedded-file `/Params` (ModDate/Size), and Factur-X XMP metadata including the **pdfaExtension** schema so validators recognize the document. +- Invoice PDFs embed **Liberation** TrueType fonts (metric-compatible with Helvetica/Times/Courier) so PDF/A validators do not reject unembedded base-14 fonts. - The PDF remains human-readable; the embedded XML makes it machine-readable (e.g. for automated booking or archiving). - **Strict behaviour:** If embedding is enabled and the embed step fails (e.g. missing pikepdf, invalid PDF), the export is **aborted** and the user sees an error; the PDF is not returned without the XML. +- **Pre-export checks** block PDF download when seller or buyer country is missing, or when VAT category AE is used without a buyer VAT ID. -Party data (seller/buyer) is taken from Settings and the invoice's client (including endpoint fields and VAT). For full EN 16931 compliance, configure seller and client data including addresses and country codes. +### Structured addresses and VAT category + +For EN 16931 compliance, configure: + +| Where | Fields | +|---|---| +| **Admin → Company Branding** | Street, postcode, city, country (ISO alpha-2), IBAN, BIC | +| **Client** | Street, postcode, city, country, VAT ID | +| **Admin → Peppol e-Invoicing** | Default VAT category (S/Z/E/AE/K/G/O) and exemption reason/code; presets for AT/DE Kleinunternehmer and reverse charge | +| **Invoice** (optional) | Per-invoice VAT category / exemption override | + +Seller country falls back to Peppol Sender Country if Company Country is empty. Client country/VAT fall back to custom fields `peppol_country` / `vat_id` when structured fields are empty. **Validation:** Validate the embedded XML with [b2brouter](https://app.b2brouter.net/de/validation) or [portinvoice.com](https://www.portinvoice.com/). You can optionally enable **Run veraPDF after export** in Admin → Peppol e-Invoicing and set the veraPDF executable path to get a validation summary after each export (does not block the download). ### Factur-X and PDF/A-3 -You can enable **Normalize Factur-X PDFs to PDF/A-3b** in Admin → Peppol e-Invoicing. When this is on (and Factur-X embedding is enabled), exported and emailed PDFs are normalized to PDF/A-3b: +You can enable **Normalize Factur-X PDFs to PDF/A-3b** in Admin → Peppol e-Invoicing. When this is on (and Factur-X embedding is enabled), embed and PDF/A-3 run in a **single pikepdf pass**: - XMP identification (`pdfaid:part=3`, `pdfaid:conformance=B`) +- Factur-X `fx:` properties plus `pdfaExtension` schema declaration - Embedded sRGB ICC color profile (`DestOutputProfile`) using a bundled compact sRGB profile under `app/resources/icc/`, or override with environment variable **`INVOICE_SRGB_ICC_PATH`** pointing to a full `.icc` file on the server - GTS_PDFA1 output intent If conversion fails, export (or sending the invoice email) is aborted and the user sees an error. -**veraPDF and fonts:** ReportLab invoice templates often use standard fonts without full PDF/A font embedding; veraPDF may still report failures until templates embed fonts or you use an external PDF/A conversion pipeline. **Ghostscript** and similar tools can help but may strip embedded XML if run after Factur-X embedding; prefer tools that preserve associated files, or re-embed `factur-x.xml` after conversion. +**veraPDF:** With embedded Liberation fonts and PDF/A-3 metadata, exports should pass veraPDF PDF/A-3b checks for font embedding and identification. Set `INVOICE_VERAPDF_PATH` (or the Admin path field) and enable **Run veraPDF after export** to surface a summary. A smoke test runs automatically when that env var is set: `pytest tests/test_zugferd.py -k verapdf`. ### UBL validation @@ -178,7 +192,7 @@ When exporting or sending UBL via Peppol, the generated XML is checked for struc ### CII validation -When embedding Factur-X CII XML, the generated XML is checked for EN 16931 structural requirements (required elements, party data, line items, monetary totals). +When embedding Factur-X CII XML, the generated XML is checked for EN 16931 structural requirements (required elements, party data, line items, monetary totals). Unit tests optionally validate against the official Factur-X XSD via the `factur-x` package (`requirements-test.txt`). ## Migrations @@ -194,11 +208,12 @@ This applies (among others): - `113_add_invoice_buyer_reference` (adds `invoices.buyer_reference`) - `128_add_invoices_zugferd_pdf` (adds `settings.invoices_zugferd_pdf` for Factur-X PDF embedding) - `130_add_peppol_transport_mode_and_native` (adds `peppol_transport_mode`, `peppol_sml_url`, `peppol_native_cert_path`, `peppol_native_key_path`, `invoices_pdfa3_compliant`, `invoices_validate_export`, `invoices_verapdf_path`) +- `196_add_einvoice_address_and_vat_category` (structured company/client addresses, IBAN/BIC, default and per-invoice VAT category) ## Testing With your virtual environment activated: ```bash -pytest tests/test_peppol_service.py tests/test_peppol_identifiers.py tests/test_zugferd.py tests/test_pdfa3.py tests/test_invoice_pdf_postprocess.py tests/test_invoice_validators.py -v +pytest tests/test_peppol_service.py tests/test_peppol_identifiers.py tests/test_zugferd.py tests/test_pdfa3.py tests/test_invoice_pdf_postprocess.py tests/test_invoice_validators.py tests/test_cii_invoice.py -v --override-ini="addopts=" ``` diff --git a/docs/design/MULTI_TENANT.md b/docs/design/MULTI_TENANT.md new file mode 100644 index 00000000..01cae540 --- /dev/null +++ b/docs/design/MULTI_TENANT.md @@ -0,0 +1,108 @@ +# Multi-tenant data model + +Design options for hosting **multiple organizations** (tenants) on one TimeTracker deployment—typical SaaS or managed-hosting scenario. + +**Recommendation:** start with **row-level tenancy** (`organization_id` on shared tables), strict query scoping in services/repositories, and a path to **schema-per-tenant** only for large isolated customers. + +## Terminology + +| Term | Meaning | +|------|---------| +| **Tenant / organization** | Billing and data-isolation boundary (company using TimeTracker) | +| **User** | Belongs to one primary org; cross-org access only via explicit membership (future) | +| **Instance** | Single deploy (one database today) | + +## Option A: Row-level (`organization_id`) + +Every tenant-scoped row carries `organization_id` (FK → `organizations`). + +### Pros + +- Single migration path from current single-tenant schema. +- One backup, one connection pool, simpler ops. +- Cross-tenant analytics for platform operator (if needed). + +### Cons + +- **Every query** must filter by org; one missed filter is a data leak. +- Noisy migrations touching many tables. +- Harder to offer “dedicated DB” SLAs without export tooling. + +### Core tables + +| Table | Notes | +|-------|--------| +| `organizations` | `id`, `name`, `slug`, `plan`, `settings_json`, `created_at` | +| `organization_memberships` | `user_id`, `organization_id`, `role`, `is_default` | + +Add `organization_id` (NOT NULL after backfill) to: `users`, `projects`, `clients`, `time_entries`, `invoices`, `tasks`, `settings` (split global vs org settings). + +### Request context + +- Resolve org from: subdomain (`acme.app.example.com`), header (`X-Organization-Id`), or session after login. +- Middleware sets `g.organization_id`; `BaseRepository` applies default filter. + +## Option B: Schema-per-tenant (PostgreSQL) + +One PostgreSQL schema per tenant (`tenant_acme.*`), shared `public` for platform metadata. + +### Pros + +- Strong isolation; easier “delete tenant” (DROP SCHEMA). +- Some compliance narratives prefer separate schemas. + +### Cons + +- Alembic must run **N migrations** or use shared migration runner per schema. +- Connection pooling and search_path management complexity. +- Cross-tenant queries require federation or ETL. + +## Option C: Database-per-tenant + +Separate database per customer; app routes by hostname to DSN. + +### Pros + +- Maximum isolation; common for largest enterprise deals. + +### Cons + +- Operational cost scales linearly; backup/restore per DB. +- Not aligned with current single-`DATABASE_URL` architecture. + +## Migration risks (from current single-tenant) + +1. **Implicit global data** — `Settings` singleton becomes org-scoped; seed one org and attach all rows. +2. **User uniqueness** — `username` / `email` unique globally today; may become unique per `(organization_id, username)`. +3. **API tokens & webhooks** — must include `organization_id` in scope validation. +4. **Integrations** — OAuth tokens and Slack/Teams configs are per-org. +5. **Background jobs** — schedulers must iterate orgs or partition queues. +6. **File storage** — uploads prefixed with `org_id/` in object storage paths. +7. **Client portal** — custom domains map to `(organization_id, client_id)` (extend `portal_domain.py`). + +## Phased rollout + +| Phase | Work | +|-------|------| +| 0 | Document + feature flag `MULTI_TENANT_ENABLED=false` (no behavior change) | +| 1 | Add `organizations`, backfill default org id `1`, add nullable `organization_id` | +| 2 | Enforce NOT NULL + repository scoping + tests | +| 3 | Subdomain / admin org switcher | +| 4 | Billing, quotas, org-level settings UI | + +## Recommendation summary + +| Criterion | Row-level | Schema-per-tenant | +|-----------|-----------|-------------------| +| Time to first SaaS pilot | **Best** | Slow | +| Leak risk if bug | Higher (mitigate with tests + linters) | Lower | +| Enterprise “dedicated” ask | Export + optional DB-per-tenant tier | **Good middle ground** | +| Fits current codebase | **Yes** | Major infra change | + +**Ship row-level first** with mandatory `organization_id` in service layer and a CI check that new models include the column. Offer schema-per-tenant or DB-per-tenant only as premium deployment templates, not as the default refactor. + +## Related work + +- SCIM/SAML: provision users **into** an organization context. +- OAuth apps: register per organization. +- Audit logs: always record `organization_id`. diff --git a/docs/design/OAUTH2_API_APPS.md b/docs/design/OAUTH2_API_APPS.md new file mode 100644 index 00000000..b67e31c1 --- /dev/null +++ b/docs/design/OAUTH2_API_APPS.md @@ -0,0 +1,120 @@ +# OAuth 2.0 API applications (authorization server) + +Design for turning TimeTracker into an **OAuth 2.0 authorization server** so third-party apps (mobile clients, partner integrations, Zapier custom apps) can obtain scoped access tokens instead of long-lived personal API tokens. + +This is **foundational design + model stubs** only. Full Authlib wiring, admin UI, and consent screens are follow-up work. + +## Goals + +- Register **OAuth applications** (confidential or public) with redirect URIs and allowed scopes. +- Support **authorization code + PKCE** for user-delegated access (primary flow for SPAs and mobile). +- Issue **access tokens** that map to existing REST API auth (`require_api_token` scopes) or dedicated OAuth bearer validation. +- Coexist with **personal API tokens** (`ApiToken`) and **OIDC login** (external IdP); do not conflate “login OIDC” with “API OAuth server.” + +## Non-goals (phase 1) + +- Client credentials grant for machine-only apps (phase 2; can reuse `OAuthApplication` with `grant_types`). +- Dynamic client registration (RFC 7591). +- OpenID Connect identity layer on top of our authorization server. + +## Library + +- **[Authlib](https://docs.authlib.org/)** Flask integration (`AuthorizationServer`, `ResourceProtector`, SQLAlchemy mixins where applicable). +- Dependency to add in a later PR: `authlib` (not pinned in this scaffolding pass). + +## Data model + +Implemented as stubs in `app/models/oauth_app.py` (migration **197**). + +| Table | Purpose | +|-------|---------| +| `oauth_applications` | Registered client apps | +| `oauth_authorization_codes` | Short-lived codes exchanged at `/oauth/token` | + +### `oauth_applications` + +| Column | Type | Notes | +|--------|------|--------| +| `id` | int PK | | +| `client_id` | string(64) unique | Public identifier (`tt_app_…`) | +| `client_secret_hash` | string(128) nullable | SHA-256; null for public clients | +| `name` | string(200) | Display name in consent UI | +| `description` | text | Optional | +| `owner_user_id` | FK → `users.id` | Admin or developer who registered the app | +| `redirect_uris` | JSON array | Exact match enforced | +| `allowed_scopes` | text | Comma-separated subset of API scopes | +| `grant_types` | JSON array | Default `["authorization_code"]` | +| `is_confidential` | bool | True → requires `client_secret` at token endpoint | +| `is_active` | bool | Soft disable | +| `created_at` / `updated_at` | datetime | | + +### `oauth_authorization_codes` + +| Column | Type | Notes | +|--------|------|--------| +| `id` | int PK | | +| `code_hash` | string(128) unique | Store hash only | +| `application_id` | FK → `oauth_applications.id` | | +| `user_id` | FK → `users.id` | Resource owner | +| `redirect_uri` | string(500) | Must match authorize request | +| `scope` | text | Granted scopes | +| `code_challenge` | string(128) nullable | PKCE | +| `code_challenge_method` | string(10) nullable | `S256` | +| `expires_at` | datetime | ~10 minutes | +| `used_at` | datetime nullable | Single use | + +Future tables (document only): `oauth_access_tokens`, `oauth_refresh_tokens` (or reuse `ApiToken` with `source=oauth` + `oauth_application_id`). + +## Scopes + +Align with existing API token scopes (`read:projects`, `write:time_entries`, `read:ai`, etc.). OAuth apps declare `allowed_scopes`; consent UI shows intersection with requested scopes. + +Suggested default for new apps: `read:projects,read:time_entries,write:time_entries`. + +## Endpoints (target) + +Base path prefix: `/oauth` (browser + token) and admin under `/admin/oauth-apps` (future). + +| Method | Path | Auth | Purpose | +|--------|------|------|---------| +| GET | `/oauth/authorize` | Session (logged-in user) | Authorization endpoint; query: `client_id`, `redirect_uri`, `response_type=code`, `scope`, `state`, PKCE `code_challenge` | +| POST | `/oauth/authorize` | Session | Consent form submit (approve/deny) | +| POST | `/oauth/token` | Client auth (Basic or body) | Exchange code or refresh token | +| POST | `/oauth/revoke` | Client or token bearer | RFC 7009 revoke | +| GET | `/oauth/.well-known/oauth-authorization-server` | Public | Metadata (issuer, endpoints, PKCE methods) | + +### Admin / API management (future) + +| Method | Path | Auth | Purpose | +|--------|------|------|---------| +| GET | `/api/v1/oauth/applications` | `admin:all` or `manage:oauth_apps` | List apps | +| POST | `/api/v1/oauth/applications` | same | Create app; return `client_secret` once | +| PATCH | `/api/v1/oauth/applications/` | same | Update redirect URIs, scopes, active flag | +| DELETE | `/api/v1/oauth/applications/` | same | Revoke app | + +## Security + +- Enforce **exact redirect URI** match; no open redirects. +- **PKCE required** for public clients; recommended for all clients. +- Hash secrets and authorization codes at rest (same pattern as `ApiToken.hash_token`). +- Rate-limit `/oauth/token` and `/oauth/authorize` via existing Flask-Limiter. +- Audit log events: `oauth_app.created`, `oauth.consent_granted`, `oauth.token_issued`. + +## Integration with existing auth + +1. Token endpoint mints a record compatible with `require_api_token` **or** a parallel `require_oauth_bearer` that resolves to `user_id` + scopes. +2. Personal API tokens remain unchanged. +3. OIDC (`AUTH_METHOD=oidc`) continues to authenticate **humans to the web UI**; OAuth server issues **API access** to registered apps. + +## Implementation phases + +1. **Scaffolding (this PR):** models + migration + this doc. +2. Authlib `AuthorizationServer`, authorize + token routes, PKCE validation. +3. Admin UI + API CRUD for applications. +4. Refresh tokens + client credentials grant (optional). +5. Public developer documentation in `docs/api/OAUTH2.md`. + +## References + +- RFC 6749 (OAuth 2.0), RFC 7636 (PKCE), RFC 8414 (authorization server metadata) +- Existing: `app/models/api_token.py`, `app/utils/api_auth.py`, `app/routes/admin_api_tokens.py` diff --git a/docs/design/SAML_SCIM.md b/docs/design/SAML_SCIM.md new file mode 100644 index 00000000..08348e32 --- /dev/null +++ b/docs/design/SAML_SCIM.md @@ -0,0 +1,115 @@ +# SAML SSO login + SCIM 2.0 provisioning + +Enterprise identity design: **SAML 2.0** for browser login and **SCIM 2.0** for automated user lifecycle from Okta, Azure AD, Google Workspace, etc. + +Scaffolding: `app/routes/api_scim.py` (Users list stub), feature flag `SCIM_ENABLED`. SAML is design-only until `python3-saml` integration is scheduled. + +## SAML 2.0 (login) + +### Library + +- **[python3-saml](https://github.com/SAML-Toolkits/python3-saml)** (`onelogin.saml2`) for SP-initiated and IdP-initiated flows. +- Settings stored in `Settings` or dedicated `saml_idp_configs` table (future migration). + +### Flow + +1. User clicks “Sign in with SSO (SAML)” on `/auth/login`. +2. SP generates AuthnRequest → redirect to IdP. +3. IdP POSTs SAMLResponse to `/auth/saml/acs` (Assertion Consumer Service). +4. Validate signature, `NotOnOrAfter`, audience, recipient; map attributes → `User` (create or update). +5. Establish Flask-Login session; honor `AUTH_METHOD` matrix (`saml`, `all`, etc.—extend `app/config.py` enum in implementation PR). + +### Attribute mapping (defaults) + +| SAML attribute | User field | +|----------------|------------| +| `NameID` or `email` | `email` (lookup key) | +| `givenName` + `sn` or `displayName` | `full_name` | +| `memberOf` / custom groups claim | RBAC via group → role map (mirror `OIDC_ROLE_GROUP_MAP`) | + +### Endpoints (target) + +| Method | Path | Purpose | +|--------|------|---------| +| GET | `/auth/saml/login` | Initiate SSO | +| POST | `/auth/saml/acs` | Consume assertion | +| GET | `/auth/saml/metadata` | SP metadata XML for IdP upload | +| GET | `/auth/saml/slo` | Single logout (optional phase 2) | + +### Config (env / settings) + +- `SAML_ENABLED`, `SAML_SP_ENTITY_ID`, `SAML_SP_ACS_URL`, IdP metadata URL or XML blob, x509 cert for signing (optional). + +### Security + +- Reject unsigned assertions unless explicitly allowed in dev. +- Clock skew tolerance ≤ 120s. +- Do not enable SAML and weak local passwords for the same admin accounts without MFA policy. + +## SCIM 2.0 (provisioning) + +### Scope + +- **Users** resource (create, update, deactivate, list, filter by `userName`). +- **Groups** (optional phase 2) mapped to `Role` or team labels—not LDAP groups duplication. + +### Auth + +- Bearer token (`SCIM_BEARER_TOKEN` env) validated on every request; future: per-tenant tokens when multi-tenant lands. +- Separate from personal API tokens and OAuth (see `OAUTH2_API_APPS.md`). + +### Base URL + +`/scim/v2` (RFC 7644). + +### Endpoints (target) + +| Method | Path | Status | +|--------|------|--------| +| GET | `/scim/v2/ServiceProviderConfig` | Stub → minimal config | +| GET | `/scim/v2/Schemas` | Stub → User schema | +| GET | `/scim/v2/Users` | **Stub:** empty ListResponse when `SCIM_ENABLED` | +| GET | `/scim/v2/Users/{id}` | 501 → implement with User.id | +| POST | `/scim/v2/Users` | Create user + send invite | +| PUT/PATCH | `/scim/v2/Users/{id}` | Update profile, active flag | +| DELETE | `/scim/v2/Users/{id}` | Soft-deactivate (`is_active=false`) | + +### User mapping + +| SCIM | TimeTracker | +|------|-------------| +| `userName` | `username` (unique) | +| `name.givenName` / `name.familyName` | `full_name` | +| `emails[type eq "work"].value` | `email` | +| `active` | `is_active` | +| `externalId` | New column `scim_external_id` (future migration) | +| `id` | Stringified `users.id` (or UUID if migrated) | + +### Deprovisioning + +- `active: false` → disable login, revoke API tokens, stop timers (policy TBD in admin settings). + +## Coexistence with LDAP / OIDC + +| Method | Use case | +|--------|----------| +| OIDC | Cloud IdPs with modern OAuth/OIDC | +| SAML | Legacy enterprise IdPs | +| LDAP | Bind auth + optional sync | +| SCIM | HR-driven provisioning regardless of login protocol | + +`AUTH_METHOD` should document allowed combinations; SCIM is independent of login method. + +## Implementation phases + +1. **Scaffolding:** SCIM GET Users stub + this doc + `SCIM_ENABLED` flag. +2. SAML ACS + metadata + admin settings UI. +3. SCIM full Users CRUD + audit logs. +4. Groups ↔ roles (optional). +5. End-to-end tests with Okta/Azure AD sandbox. + +## References + +- RFC 7643 (SCIM core schema), RFC 7644 (SCIM protocol) +- Existing OIDC: `app/routes/auth.py`, `app/config.py` OIDC_* settings +- Stub route: `app/routes/api_scim.py` diff --git a/docs/design/TEAMS_BOT.md b/docs/design/TEAMS_BOT.md new file mode 100644 index 00000000..33a16690 --- /dev/null +++ b/docs/design/TEAMS_BOT.md @@ -0,0 +1,70 @@ +# Microsoft Teams bot — slash command parity with Slack `/tt` + +Slack integration (`app/integrations/slack_connector.py`) supports **`/tt`** subcommands: `start`, `stop`, `status`, `today`. Microsoft Teams today uses `MicrosoftTeamsConnector` for OAuth, channel notifications, and Graph API messaging—not interactive bot commands. + +## Goal + +Provide the **same timer operations** from Teams via: + +1. **Message extension / slash command** (Bot Framework), or +2. **Adaptive Card actions** in a dedicated chat tab (phase 2). + +## Parity matrix + +| Slack `/tt` | Teams (target) | Notes | +|-------------|----------------|-------| +| `start [project]` | `@TimeTracker start [project]` or `/tt start` | Resolve project by id/name like Slack | +| `stop` | `stop` | Stop active timer for linked user | +| `status` | `status` | Ephemeral reply with current timer | +| `today` | `today` | Hours summary via notification service | +| (help) | empty command | List subcommands | + +## Identity linking + +| Slack | Teams (proposed) | +|-------|------------------| +| `User.slack_user_id` | New `User.teams_aad_id` or store in integration config `linked_teams_user_id` | +| Per-integration `linked_slack_user_id` | Per-integration `linked_teams_user_id` | + +Match incoming activity `from.aadObjectId` to TimeTracker user. + +## Architecture + +```text +Teams client → Azure Bot Service → POST /api/integrations/teams/bot/messages + ↓ + MicrosoftTeamsConnector.handle_bot_command() + ↓ + TimeTrackingService (same as Slack) +``` + +### Azure resources (setup checklist) + +- Bot registration in Azure Portal (App ID + secret). +- Messaging endpoint: `{APP_BASE_URL}/api/integrations/teams/bot/messages`. +- Teams channel enabled for the bot. +- Optional: single-tenant vs multi-tenant bot (align with `microsoft_teams_tenant_id`). + +## Stub (current) + +- `MicrosoftTeamsConnector.handle_bot_command()` returns **501** with a short message pointing to this doc. +- Route: `POST /api/integrations/teams/bot/messages` in `app/routes/integrations_webhooks.py` (JSON body placeholder; Bot Framework JWT validation in phase 2). + +## Security (implementation) + +- Validate Bot Framework **JWT** on each activity (`Authorization: Bearer`). +- Do not trust `from.id` without mapping to a TimeTracker user. +- Rate-limit per `conversation.id`. + +## Implementation phases + +1. Stub route + handler (this phase). +2. Bot Framework auth + user linking UI in user settings. +3. Implement subcommands reusing Slack private methods (shared `ChatTimerCommandMixin` optional refactor). +4. Proactive notifications (already partial via Graph `send_message`). + +## References + +- `docs/integrations/SLACK.md` +- `app/integrations/microsoft_teams.py` +- `app/integrations/slack_connector.py` diff --git a/docs/design/ZAPIER_MAKE.md b/docs/design/ZAPIER_MAKE.md new file mode 100644 index 00000000..493a7c2b --- /dev/null +++ b/docs/design/ZAPIER_MAKE.md @@ -0,0 +1,101 @@ +# Zapier & Make (Integromat) integration via webhooks + +TimeTracker already supports **outbound webhooks** (`Webhook` model, `WebhookDispatcher`, `WebhookEvent` in `app/constants.py`). Zapier and Make do not need native SDKs for most automations: they consume **HTTPS webhook payloads** and call the **REST API** for actions. + +This document describes trigger/action mapping for no-code platforms using existing infrastructure. + +## Architecture + +```text +TimeTracker event → WebhookDispatcher → POST JSON → Zapier Catch Hook / Make Custom Webhook + ↓ + Filter / transform + ↓ + Make/Zapier → TimeTracker REST API (ApiToken Bearer) +``` + +## Outbound triggers (TimeTracker → Zapier/Make) + +Configure in **Admin → Webhooks** (or API). Subscribe to event types from `WebhookEvent`: + +| Webhook event | Typical automation | +|---------------|-------------------| +| `time_entry.created` | Log row in Google Sheets, notify Slack channel | +| `time_entry.updated` | Sync to project management tool | +| `project.created` | Create folder in Drive, notify PM | +| `invoice.sent` | Accounting pipeline, email finance | +| `invoice.paid` | Close deal in CRM, thank-you email | +| `task.created` | Create card in Trello/Asana (via their Zapier apps) | +| `integration.error` | PagerDuty / email ops | + +Payload shape (simplified): + +```json +{ + "event": "time_entry.created", + "timestamp": "2026-09-23T12:00:00Z", + "data": { + "time_entry_id": 123, + "project_id": 45, + "user_id": 7 + } +} +``` + +HMAC signature: webhook `secret` → `X-TimeTracker-Signature` (see `Webhook.sign_payload` in `app/models/webhook.py`). + +### Sample Zap (Zapier) + +1. **Trigger:** Webhooks by Zapier → Catch Hook. +2. Copy hook URL into TimeTracker webhook `url`. +3. Subscribe to `time_entry.created` (and optionally `time_entry.updated`). +4. **Filter:** Only continue if `data.project_id` matches a known client project (optional). +5. **Action:** Google Sheets → Create Spreadsheet Row + - Map `data.time_entry_id`, fetch details via Zapier “Webhooks by Zapier → GET” to `{base}/api/v1/time-entries/{id}` with `Authorization: Bearer tt_…`. + +### Sample scenario (Make) + +1. **Custom webhook** module receives TimeTracker POST. +2. **Router** on `event` field: + - `invoice.paid` → QuickBooks module (or TimeTracker API to mark external ref). + - `time_entry.created` → Slack module message with duration (after HTTP GET entry). +3. **HTTP module** for API calls using stored API token connection. + +## Inbound actions (Zapier/Make → TimeTracker) + +Use **REST API v1** with scoped `ApiToken`: + +| Automation need | API | +|-----------------|-----| +| Start/stop timer | `POST /api/v1/time-entries` (or timer endpoints if exposed) | +| Create project | `POST /api/v1/projects` | +| Create client | `POST /api/v1/clients` | +| List entries for reporting | `GET /api/v1/time-entries?...` | + +Document base URL: `{APP_BASE_URL}/api/v1/…`. + +## Recommended webhook subscriptions by use case + +| Use case | Events | +|----------|--------| +| Daily timesheet backup | `time_entry.created`, `time_entry.updated` | +| Invoice AR workflow | `invoice.sent`, `invoice.paid` | +| Project kickoff | `project.created`, `task.created` | +| Integration health | `integration.error` | + +## Future enhancements (not required for webhook-based Zaps) + +- Official Zapier app with OAuth2 (see `docs/design/OAUTH2_API_APPS.md`). +- Pre-built Make app manifest. +- Polling triggers for accounts that cannot expose inbound URLs (use API + scheduled Make scenario). + +## Testing + +1. Admin → Webhooks → Test delivery (`webhook.test` event). +2. Use [webhook.site](https://webhook.site) or Zapier catch hook to inspect JSON + signature headers. +3. Verify API token scopes match actions (`write:time_entries`, etc.). + +## References + +- `app/models/webhook.py`, `app/utils/webhook_dispatcher.py`, `app/constants.WebhookEvent` +- `docs/api/REST_API.md` diff --git a/docs/implementation-notes/QUICK_START_ARCHITECTURE.md b/docs/implementation-notes/QUICK_START_ARCHITECTURE.md index 206a664f..5e4f271e 100644 --- a/docs/implementation-notes/QUICK_START_ARCHITECTURE.md +++ b/docs/implementation-notes/QUICK_START_ARCHITECTURE.md @@ -242,7 +242,7 @@ def test_get_active_timer(db_session, user, project): - **Full Documentation:** See `IMPLEMENTATION_SUMMARY.md` - **API Documentation:** See `docs/API_ENHANCEMENTS.md` -- **Example Code:** See `app/routes/projects_refactored_example.py` +- **Example Code:** See `ARCHITECTURE_MIGRATION_GUIDE.md` (thin-route pattern) - **Test Examples:** See `tests/test_services/` and `tests/test_repositories/` --- diff --git a/docs/implementation-notes/README_NEW_ARCHITECTURE.md b/docs/implementation-notes/README_NEW_ARCHITECTURE.md index f26f5268..07243eb3 100644 --- a/docs/implementation-notes/README_NEW_ARCHITECTURE.md +++ b/docs/implementation-notes/README_NEW_ARCHITECTURE.md @@ -96,9 +96,7 @@ Centralized constants and enums for all status types, sources, and configuration - **`FINAL_IMPLEMENTATION_SUMMARY.md`** - Final summary ### Examples -- **`app/routes/projects_refactored_example.py`** - Projects example -- **`app/routes/timer_refactored.py`** - Timer example -- **`app/routes/invoices_refactored.py`** - Invoice example +- See [ARCHITECTURE_MIGRATION_GUIDE.md](ARCHITECTURE_MIGRATION_GUIDE.md) for the thin-route pattern (former `*_refactored*.py` examples were removed). --- diff --git a/env.example b/env.example index 1d6faf0e..88948a5b 100644 --- a/env.example +++ b/env.example @@ -41,6 +41,11 @@ ROUNDING_ENFORCE_GLOBAL=false # Seeds Settings.single_active_timer on first settings row; admin System Settings overrides thereafter. SINGLE_ACTIVE_TIMER=true IDLE_TIMEOUT_MINUTES=30 +# What happens when "Still working?" is unanswered: review (default) or auto_stop +IDLE_UNANSWERED_ACTION=review + +# Global Flask-Limiter defaults (semicolon or comma separated). +# RATELIMIT_DEFAULT=200 per day;50 per hour # Optional: Firebase Cloud Messaging for mobile idle "Still working?" wake-up (Issue #722). # Path to a service-account JSON file, or the raw JSON string. @@ -87,6 +92,10 @@ AI_MODEL=llama3.1 AI_TIMEOUT_SECONDS=60 AI_CONTEXT_LIMIT=40 +# SCIM 2.0 provisioning stub (GET /scim/v2/Users returns empty list when enabled) +# SCIM_ENABLED=false +# SCIM_BEARER_TOKEN=generate-a-long-random-secret + # API token rate limits (per token; Redis recommended for multi-worker) # API_TOKEN_RATE_LIMIT_PER_MINUTE=100 # API_TOKEN_RATE_LIMIT_PER_HOUR=1000 diff --git a/migrations/versions/195_add_idle_unanswered_action.py b/migrations/versions/195_add_idle_unanswered_action.py new file mode 100644 index 00000000..cc3f5805 --- /dev/null +++ b/migrations/versions/195_add_idle_unanswered_action.py @@ -0,0 +1,47 @@ +"""Add idle_unanswered_action to settings. + +Controls what happens when the "Still working?" grace window expires +unanswered: "review" (flag and keep running) or "auto_stop" (stop credited +to last activity + idle timeout). Issue #722. + +Revision ID: 195_add_idle_unanswered_action +Revises: 194_roadmap_features +""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy import inspect + +revision = "195_add_idle_unanswered_action" +down_revision = "194_roadmap_features" +branch_labels = None +depends_on = None + + +def _has_column(inspector, table_name: str, column_name: str) -> bool: + try: + return column_name in {c["name"] for c in inspector.get_columns(table_name)} + except Exception: + return False + + +def upgrade(): + bind = op.get_bind() + inspector = inspect(bind) + if not _has_column(inspector, "settings", "idle_unanswered_action"): + op.add_column( + "settings", + sa.Column( + "idle_unanswered_action", + sa.String(length=16), + nullable=False, + server_default="review", + ), + ) + + +def downgrade(): + bind = op.get_bind() + inspector = inspect(bind) + if _has_column(inspector, "settings", "idle_unanswered_action"): + op.drop_column("settings", "idle_unanswered_action") diff --git a/migrations/versions/196_add_einvoice_address_and_vat_category.py b/migrations/versions/196_add_einvoice_address_and_vat_category.py new file mode 100644 index 00000000..2516987a --- /dev/null +++ b/migrations/versions/196_add_einvoice_address_and_vat_category.py @@ -0,0 +1,138 @@ +"""Add structured e-invoice address fields and VAT category settings. + +Adds company street/postcode/city/country, IBAN/BIC, default VAT category +settings; client street/postcode/city/country/vat_id; and per-invoice VAT +category overrides for Factur-X / ZUGFeRD EN 16931 compliance (Discussion #433). + +Revision ID: 196_add_einvoice_address_and_vat_category +Revises: 195_add_idle_unanswered_action +""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy import inspect + +revision = "196_add_einvoice_address_and_vat_category" +down_revision = "195_add_idle_unanswered_action" +branch_labels = None +depends_on = None + + +def _has_column(inspector, table_name: str, column_name: str) -> bool: + try: + return column_name in {c["name"] for c in inspector.get_columns(table_name)} + except Exception: + return False + + +def _add_column_if_missing(inspector, table_name: str, column: sa.Column) -> None: + if not _has_column(inspector, table_name, column.name): + op.add_column(table_name, column) + + +def upgrade(): + bind = op.get_bind() + inspector = inspect(bind) + + # Settings: structured company address + IBAN + default VAT category + _add_column_if_missing( + inspector, "settings", sa.Column("company_street", sa.String(length=255), nullable=True) + ) + _add_column_if_missing( + inspector, "settings", sa.Column("company_postcode", sa.String(length=32), nullable=True) + ) + _add_column_if_missing( + inspector, "settings", sa.Column("company_city", sa.String(length=100), nullable=True) + ) + _add_column_if_missing( + inspector, "settings", sa.Column("company_country", sa.String(length=2), nullable=True) + ) + _add_column_if_missing( + inspector, "settings", sa.Column("company_iban", sa.String(length=34), nullable=True) + ) + _add_column_if_missing( + inspector, "settings", sa.Column("company_bic", sa.String(length=11), nullable=True) + ) + _add_column_if_missing( + inspector, + "settings", + sa.Column( + "invoices_default_vat_category", + sa.String(length=5), + nullable=False, + server_default="S", + ), + ) + _add_column_if_missing( + inspector, + "settings", + sa.Column("invoices_default_vat_exemption_reason", sa.Text(), nullable=True), + ) + _add_column_if_missing( + inspector, + "settings", + sa.Column("invoices_default_vat_exemption_code", sa.String(length=50), nullable=True), + ) + + # Clients: structured address + VAT ID + inspector = inspect(bind) + _add_column_if_missing( + inspector, "clients", sa.Column("street", sa.String(length=255), nullable=True) + ) + _add_column_if_missing( + inspector, "clients", sa.Column("postcode", sa.String(length=32), nullable=True) + ) + _add_column_if_missing( + inspector, "clients", sa.Column("city", sa.String(length=100), nullable=True) + ) + _add_column_if_missing( + inspector, "clients", sa.Column("country", sa.String(length=2), nullable=True) + ) + _add_column_if_missing( + inspector, "clients", sa.Column("vat_id", sa.String(length=50), nullable=True) + ) + + # Invoices: per-invoice VAT category override + inspector = inspect(bind) + _add_column_if_missing( + inspector, "invoices", sa.Column("vat_category", sa.String(length=5), nullable=True) + ) + _add_column_if_missing( + inspector, "invoices", sa.Column("vat_exemption_reason", sa.Text(), nullable=True) + ) + _add_column_if_missing( + inspector, "invoices", sa.Column("vat_exemption_code", sa.String(length=50), nullable=True) + ) + + +def downgrade(): + bind = op.get_bind() + inspector = inspect(bind) + + for col in ( + "vat_exemption_code", + "vat_exemption_reason", + "vat_category", + ): + if _has_column(inspector, "invoices", col): + op.drop_column("invoices", col) + + inspector = inspect(bind) + for col in ("vat_id", "country", "city", "postcode", "street"): + if _has_column(inspector, "clients", col): + op.drop_column("clients", col) + + inspector = inspect(bind) + for col in ( + "invoices_default_vat_exemption_code", + "invoices_default_vat_exemption_reason", + "invoices_default_vat_category", + "company_bic", + "company_iban", + "company_country", + "company_city", + "company_postcode", + "company_street", + ): + if _has_column(inspector, "settings", col): + op.drop_column("settings", col) diff --git a/migrations/versions/197_phase4_gdpr_and_governance.py b/migrations/versions/197_phase4_gdpr_and_governance.py new file mode 100644 index 00000000..dd067aab --- /dev/null +++ b/migrations/versions/197_phase4_gdpr_and_governance.py @@ -0,0 +1,68 @@ +"""Phase 4: GDPR user anonymization, custom field entity types, multi-level timesheet approval. + +Revision ID: 197_phase4_gdpr_and_governance +Revises: 196_add_einvoice_address_and_vat_category +""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy import inspect + +revision = "197_phase4_gdpr_and_governance" +down_revision = "196_add_einvoice_address_and_vat_category" +branch_labels = None +depends_on = None + + +def _has_column(inspector, table_name: str, column_name: str) -> bool: + try: + return column_name in {c["name"] for c in inspector.get_columns(table_name)} + except Exception: + return False + + +def upgrade(): + bind = op.get_bind() + inspector = inspect(bind) + + if not _has_column(inspector, "users", "anonymized_at"): + op.add_column("users", sa.Column("anonymized_at", sa.DateTime(), nullable=True)) + + if not _has_column(inspector, "custom_field_definitions", "entity_type"): + op.add_column( + "custom_field_definitions", + sa.Column("entity_type", sa.String(length=30), nullable=False, server_default="client"), + ) + + if not _has_column(inspector, "timesheet_periods", "secondary_approved_by"): + op.add_column("timesheet_periods", sa.Column("secondary_approved_by", sa.Integer(), nullable=True)) + op.create_foreign_key( + "fk_timesheet_periods_secondary_approved_by_users", + "timesheet_periods", + "users", + ["secondary_approved_by"], + ["id"], + ondelete="SET NULL", + ) + if not _has_column(inspector, "timesheet_periods", "secondary_approved_at"): + op.add_column("timesheet_periods", sa.Column("secondary_approved_at", sa.DateTime(), nullable=True)) + + +def downgrade(): + bind = op.get_bind() + inspector = inspect(bind) + + if _has_column(inspector, "timesheet_periods", "secondary_approved_at"): + op.drop_column("timesheet_periods", "secondary_approved_at") + if _has_column(inspector, "timesheet_periods", "secondary_approved_by"): + try: + op.drop_constraint( + "fk_timesheet_periods_secondary_approved_by_users", "timesheet_periods", type_="foreignkey" + ) + except Exception: + pass + op.drop_column("timesheet_periods", "secondary_approved_by") + if _has_column(inspector, "custom_field_definitions", "entity_type"): + op.drop_column("custom_field_definitions", "entity_type") + if _has_column(inspector, "users", "anonymized_at"): + op.drop_column("users", "anonymized_at") diff --git a/migrations/versions/198_add_oauth_applications.py b/migrations/versions/198_add_oauth_applications.py new file mode 100644 index 00000000..e38b50ac --- /dev/null +++ b/migrations/versions/198_add_oauth_applications.py @@ -0,0 +1,83 @@ +"""Add OAuth application and authorization code tables (Phase 5 scaffolding). + +Revision ID: 198_add_oauth_applications +Revises: 197_phase4_gdpr_and_governance +""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy import inspect + +revision = "198_add_oauth_applications" +down_revision = "197_phase4_gdpr_and_governance" +branch_labels = None +depends_on = None + + +def _has_table(inspector, name: str) -> bool: + try: + return name in inspector.get_table_names() + except Exception: + return False + + +def upgrade(): + bind = op.get_bind() + inspector = inspect(bind) + + if not _has_table(inspector, "oauth_applications"): + op.create_table( + "oauth_applications", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("client_id", sa.String(length=64), nullable=False), + sa.Column("client_secret_hash", sa.String(length=128), nullable=True), + sa.Column("name", sa.String(length=200), nullable=False), + sa.Column("description", sa.Text(), nullable=True), + sa.Column("owner_user_id", sa.Integer(), nullable=False), + sa.Column("redirect_uris", sa.JSON(), nullable=False), + sa.Column("allowed_scopes", sa.Text(), nullable=False, server_default=""), + sa.Column("grant_types", sa.JSON(), nullable=False), + sa.Column("is_confidential", sa.Boolean(), nullable=False, server_default=sa.text("true")), + sa.Column("is_active", sa.Boolean(), nullable=False, server_default=sa.text("true")), + sa.Column("created_at", sa.DateTime(), nullable=False), + sa.Column("updated_at", sa.DateTime(), nullable=False), + sa.ForeignKeyConstraint(["owner_user_id"], ["users.id"]), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index("ix_oauth_applications_client_id", "oauth_applications", ["client_id"], unique=True) + op.create_index("ix_oauth_applications_owner_user_id", "oauth_applications", ["owner_user_id"]) + + if not _has_table(inspector, "oauth_authorization_codes"): + op.create_table( + "oauth_authorization_codes", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("code_hash", sa.String(length=128), nullable=False), + sa.Column("application_id", sa.Integer(), nullable=False), + sa.Column("user_id", sa.Integer(), nullable=False), + sa.Column("redirect_uri", sa.String(length=500), nullable=False), + sa.Column("scope", sa.Text(), nullable=False, server_default=""), + sa.Column("code_challenge", sa.String(length=128), nullable=True), + sa.Column("code_challenge_method", sa.String(length=10), nullable=True), + sa.Column("expires_at", sa.DateTime(), nullable=False), + sa.Column("used_at", sa.DateTime(), nullable=True), + sa.Column("created_at", sa.DateTime(), nullable=False), + sa.ForeignKeyConstraint(["application_id"], ["oauth_applications.id"]), + sa.ForeignKeyConstraint(["user_id"], ["users.id"]), + sa.PrimaryKeyConstraint("id"), + ) + op.create_index( + "ix_oauth_authorization_codes_code_hash", "oauth_authorization_codes", ["code_hash"], unique=True + ) + op.create_index( + "ix_oauth_authorization_codes_application_id", "oauth_authorization_codes", ["application_id"] + ) + op.create_index("ix_oauth_authorization_codes_user_id", "oauth_authorization_codes", ["user_id"]) + + +def downgrade(): + bind = op.get_bind() + inspector = inspect(bind) + if _has_table(inspector, "oauth_authorization_codes"): + op.drop_table("oauth_authorization_codes") + if _has_table(inspector, "oauth_applications"): + op.drop_table("oauth_applications") diff --git a/mobile/lib/core/constants/app_constants.dart b/mobile/lib/core/constants/app_constants.dart index 2170bc32..c5ae7c2b 100644 --- a/mobile/lib/core/constants/app_constants.dart +++ b/mobile/lib/core/constants/app_constants.dart @@ -25,6 +25,7 @@ class AppConstants { static const int notificationTimerRunning = 1; static const int notificationSyncStatus = 2; static const int notificationIdleReminder = 3; + static const int notificationNeedsReview = 4; // Android notification channel for the persistent timer notification static const String timerNotificationChannelId = 'timer_running'; diff --git a/mobile/lib/core/services/idle_detection_service.dart b/mobile/lib/core/services/idle_detection_service.dart index ce294113..e7c82617 100644 --- a/mobile/lib/core/services/idle_detection_service.dart +++ b/mobile/lib/core/services/idle_detection_service.dart @@ -12,7 +12,10 @@ import 'package:timetracker_mobile/domain/repositories/time_tracking_repository. /// While a timer is active and the app is in the foreground, sends a heartbeat /// every 60 seconds. Tracks last resume / interaction time; after /// [idleTimeoutMinutes] of no activity shows a "Still working?" notification -/// with a 5-minute grace window, then auto-stops the timer. +/// with a 5-minute grace window. When the grace expires unanswered: +/// - ``auto_stop``: stop the timer credited to last activity + idle window +/// - ``review`` (default): leave the timer running, stop heartbeats so the +/// server flags it, and show a needs-review notification /// /// When the app is backgrounded, polls the server for ``idle_notified`` (nudged /// by the Android foreground task) so the local notification still fires. @@ -27,6 +30,7 @@ class IdleDetectionService with WidgetsBindingObserver { static final IdleDetectionService instance = IdleDetectionService._(); static const String prefsIdleTimeoutKey = 'idle_timeout_minutes'; + static const String prefsUnansweredActionKey = 'idle_unanswered_action'; static const int defaultIdleTimeoutMinutes = 30; static const Duration heartbeatInterval = Duration(seconds: 60); static const Duration checkInterval = Duration(seconds: 30); @@ -38,6 +42,7 @@ class IdleDetectionService with WidgetsBindingObserver { Timer? _graceTimer; DateTime _lastActivity = DateTime.now(); int _idleTimeoutMinutes = defaultIdleTimeoutMinutes; + String _unansweredAction = 'review'; bool _promptShown = false; bool _started = false; bool _timerActive = false; @@ -55,6 +60,9 @@ class IdleDetectionService with WidgetsBindingObserver { final prefs = await SharedPreferences.getInstance(); _idleTimeoutMinutes = prefs.getInt(prefsIdleTimeoutKey) ?? defaultIdleTimeoutMinutes; + final storedAction = prefs.getString(prefsUnansweredActionKey); + _unansweredAction = + storedAction == 'auto_stop' ? 'auto_stop' : 'review'; _lastActivity = DateTime.now(); _heartbeatTimer = Timer.periodic(heartbeatInterval, (_) => _sendHeartbeat()); @@ -88,6 +96,7 @@ class IdleDetectionService with WidgetsBindingObserver { required bool active, int? idleTimeoutMinutes, bool idleNotified = false, + String? idleUnansweredAction, }) async { _timerActive = active; if (idleTimeoutMinutes != null && idleTimeoutMinutes >= 1) { @@ -95,6 +104,12 @@ class IdleDetectionService with WidgetsBindingObserver { final prefs = await SharedPreferences.getInstance(); await prefs.setInt(prefsIdleTimeoutKey, _idleTimeoutMinutes); } + if (idleUnansweredAction != null) { + _unansweredAction = + idleUnansweredAction == 'auto_stop' ? 'auto_stop' : 'review'; + final prefs = await SharedPreferences.getInstance(); + await prefs.setString(prefsUnansweredActionKey, _unansweredAction); + } if (!active) { _cancelGrace(); await NotificationService.instance.cancelIdlePrompt(); @@ -115,6 +130,10 @@ class IdleDetectionService with WidgetsBindingObserver { /// Server FCM idle_timeout wake-up (Issue #722): stop heartbeats and start grace. void _onIdlePushFromServer(Map data) { if (!_timerActive || _promptShown) return; + final action = (data['idle_unanswered_action'] as String?)?.trim().toLowerCase(); + if (action == 'auto_stop' || action == 'review') { + _unansweredAction = action!; + } _idleStopAt = _creditedStopAt(_lastActivity); unawaited(_showPrompt()); } @@ -157,6 +176,20 @@ class IdleDetectionService with WidgetsBindingObserver { _timerActive = false; } + /// Grace expired unanswered: either auto-stop or leave running for review. + Future _onGraceExpired() async { + await NotificationService.instance.cancelIdlePrompt(); + if (_unansweredAction == 'auto_stop') { + await respondToIdlePrompt(IdlePromptAction.stop); + return; + } + // review mode: keep the timer running, stop heartbeats so the server + // can flag needs_review, and surface a local notification. + _promptShown = false; + _idleStopAt = null; + await NotificationService.instance.showNeedsReviewNotification(); + } + /// last_active + idle_timeout, capped at now (Issue #722 — not 0 min). DateTime _creditedStopAt(DateTime lastActive) { final credited = @@ -236,6 +269,7 @@ class IdleDetectionService with WidgetsBindingObserver { active: active, idleTimeoutMinutes: status.idleTimeoutMinutes, idleNotified: status.idleNotified, + idleUnansweredAction: status.idleUnansweredAction, ); } catch (e) { debugPrint('IdleDetectionService background poll failed: $e'); @@ -247,10 +281,11 @@ class IdleDetectionService with WidgetsBindingObserver { _promptShown = true; await NotificationService.instance.showIdlePrompt( graceMinutes: gracePeriod.inMinutes, + autoStop: _unansweredAction == 'auto_stop', ); _graceTimer?.cancel(); _graceTimer = Timer(gracePeriod, () { - respondToIdlePrompt(IdlePromptAction.stop); + unawaited(_onGraceExpired()); }); } diff --git a/mobile/lib/core/services/notification_service.dart b/mobile/lib/core/services/notification_service.dart index af509c4b..9e96b057 100644 --- a/mobile/lib/core/services/notification_service.dart +++ b/mobile/lib/core/services/notification_service.dart @@ -421,15 +421,19 @@ class NotificationService { /// /// Failures are swallowed so a plugin/R8 regression cannot blank the Timer /// screen (see GitHub issue #731). - Future showIdlePrompt({int graceMinutes = 5}) async { + Future showIdlePrompt({ + int graceMinutes = 5, + bool autoStop = false, + }) async { try { if (!_initialized) { await initialize(); } const title = 'Still working?'; - final body = - 'Your timer will stop in $graceMinutes minutes if you do not answer.'; + final body = autoStop + ? 'Your timer will stop in $graceMinutes minutes if you do not answer (idle time kept).' + : 'Answer within $graceMinutes minutes or the timer will be flagged for review (it keeps running).'; final details = NotificationDetails( android: AndroidNotificationDetails( @@ -476,6 +480,40 @@ class NotificationService { } } + /// Notify that an unanswered idle prompt left the timer running for review. + Future showNeedsReviewNotification() async { + try { + if (!_initialized) { + await initialize(); + } + final details = NotificationDetails( + android: AndroidNotificationDetails( + AppConstants.idleReminderChannelId, + AppConstants.idleReminderChannelName, + channelDescription: AppConstants.idleReminderChannelDescription, + importance: Importance.high, + priority: Priority.high, + category: AndroidNotificationCategory.alarm, + ), + iOS: const DarwinNotificationDetails( + presentAlert: true, + presentBadge: true, + presentSound: true, + interruptionLevel: InterruptionLevel.timeSensitive, + ), + ); + await _localNotifications.show( + AppConstants.notificationNeedsReview, + 'Timer needs review', + 'You were idle and did not answer. Your timer kept running — open TimeTracker to trim or stop it.', + details, + payload: 'needs_review', + ); + } catch (e, st) { + debugPrint('NotificationService.showNeedsReviewNotification failed: $e\n$st'); + } + } + /// Cancel the idle prompt if one is showing. /// /// No-ops when nothing is showing (avoids a redundant plugin cancel that can diff --git a/mobile/lib/data/storage/sync_service.dart b/mobile/lib/data/storage/sync_service.dart index 79e74767..687f5112 100644 --- a/mobile/lib/data/storage/sync_service.dart +++ b/mobile/lib/data/storage/sync_service.dart @@ -45,6 +45,33 @@ class SyncService { await LocalStorage.setSyncQueue(q); } + /// Queue timer start (offline). Processed before manual entry creates when syncing. + static Future queueTimerStart({ + required int projectId, + int? taskId, + String? notes, + }) async { + final q = await LocalStorage.getSyncQueue(); + q.add({ + 'op': 'timer_start', + 'project_id': projectId, + if (taskId != null) 'task_id': taskId, + if (notes != null && notes.isNotEmpty) 'notes': notes, + 'start_time': DateTime.now().toUtc().toIso8601String(), + }); + await LocalStorage.setSyncQueue(q); + } + + /// Queue timer stop (offline). Server creates the time entry on sync. + static Future queueTimerStop({String? stopTime}) async { + final q = await LocalStorage.getSyncQueue(); + q.add({ + 'op': 'timer_stop', + if (stopTime != null) 'stop_time': stopTime, + }); + await LocalStorage.setSyncQueue(q); + } + static Future queueDeleteTimeEntry(int entryId) async { final q = await LocalStorage.getSyncQueue(); q.add({ @@ -124,6 +151,17 @@ class SyncService { billable: op['billable'] as bool?, ifUpdatedAt: op['if_updated_at']?.toString(), ); + } else if (type == 'timer_start') { + await api.startTimer( + projectId: (op['project_id'] as num).toInt(), + taskId: (op['task_id'] as num?)?.toInt(), + notes: op['notes']?.toString(), + ); + } else if (type == 'timer_stop') { + final rawStop = op['stop_time']?.toString(); + await api.stopTimer( + stopTime: rawStop != null ? DateTime.tryParse(rawStop) : null, + ); } else { remaining.add(op); } diff --git a/mobile/lib/domain/repositories/time_tracking_repository.dart b/mobile/lib/domain/repositories/time_tracking_repository.dart index 06dd113b..01c5354f 100644 --- a/mobile/lib/domain/repositories/time_tracking_repository.dart +++ b/mobile/lib/domain/repositories/time_tracking_repository.dart @@ -41,18 +41,33 @@ class TimeTrackingRepository { } /// Timer status plus idle metadata from `/api/v1/timer/status`. - Future<({Timer? timer, int? idleTimeoutMinutes, bool idleNotified})> - getTimerStatusDetailed() async { + Future< + ({ + Timer? timer, + int? idleTimeoutMinutes, + bool idleNotified, + String idleUnansweredAction, + })> getTimerStatusDetailed() async { if (apiClient == null) { final cached = await LocalStorage.getTimer(); - return (timer: cached, idleTimeoutMinutes: null, idleNotified: false); + return ( + timer: cached, + idleTimeoutMinutes: null, + idleNotified: false, + idleUnansweredAction: 'review', + ); } try { final isOnline = await _isOnline(); if (!isOnline) { final cached = await LocalStorage.getTimer(); - return (timer: cached, idleTimeoutMinutes: null, idleNotified: false); + return ( + timer: cached, + idleTimeoutMinutes: null, + idleNotified: false, + idleUnansweredAction: 'review', + ); } final response = await apiClient!.getTimerStatus(); @@ -60,6 +75,10 @@ class TimeTrackingRepository { final idleNotified = response['idle_notified'] == true || (response['timer'] is Map && (response['timer'] as Map)['idle_notified'] == true); + final rawAction = + (response['idle_unanswered_action'] as String?)?.trim().toLowerCase(); + final idleUnansweredAction = + rawAction == 'auto_stop' ? 'auto_stop' : 'review'; if (response['active'] == true && response['timer'] != null) { final timer = Timer.fromJson(response['timer'] as Map); await LocalStorage.saveTimer(timer); @@ -67,6 +86,7 @@ class TimeTrackingRepository { timer: timer, idleTimeoutMinutes: idleTimeout, idleNotified: idleNotified, + idleUnansweredAction: idleUnansweredAction, ); } await LocalStorage.clearTimer(); @@ -74,10 +94,16 @@ class TimeTrackingRepository { timer: null, idleTimeoutMinutes: idleTimeout, idleNotified: false, + idleUnansweredAction: idleUnansweredAction, ); } catch (e) { final cached = await LocalStorage.getTimer(); - return (timer: cached, idleTimeoutMinutes: null, idleNotified: false); + return ( + timer: cached, + idleTimeoutMinutes: null, + idleNotified: false, + idleUnansweredAction: 'review', + ); } } @@ -99,14 +125,13 @@ class TimeTrackingRepository { try { final isOnline = await _isOnline(); if (!isOnline) { - // Queue for sync (project-backed offline path; client-only needs connectivity) + // Queue timer_start (not a manual time entry) for sync when back online. if (projectId == null) { throw Exception('Client-only timers require a network connection'); } - await SyncService.queueCreateTimeEntry( + await SyncService.queueTimerStart( projectId: projectId, taskId: taskId, - startTime: DateTime.now().toIso8601String(), notes: notes, ); // Create a local timer representation @@ -151,6 +176,34 @@ class TimeTrackingRepository { throw Exception('Not connected to server'); } try { + final isOnline = await _isOnline(); + if (!isOnline) { + final cached = await LocalStorage.getTimer(); + if (cached == null) { + throw TimerAlreadyStoppedException('No active timer'); + } + final end = stopTime ?? DateTime.now(); + await SyncService.queueTimerStop(stopTime: end.toUtc().toIso8601String()); + await LocalStorage.clearTimer(); + final entry = TimeEntry( + id: DateTime.now().millisecondsSinceEpoch, + userId: cached.userId, + projectId: cached.projectId, + clientId: cached.clientId, + taskId: cached.taskId, + startTime: cached.startTime, + endTime: end, + notes: cached.notes, + billable: true, + paid: false, + source: 'auto', + createdAt: DateTime.now(), + updatedAt: DateTime.now(), + ); + await LocalStorage.saveTimeEntry(entry); + return entry; + } + final response = await runMobileSpan( 'mobile.timer.stop', () => apiClient!.stopTimer(stopTime: stopTime), diff --git a/mobile/lib/presentation/providers/timer_provider.dart b/mobile/lib/presentation/providers/timer_provider.dart index b45ca998..e36e1fda 100644 --- a/mobile/lib/presentation/providers/timer_provider.dart +++ b/mobile/lib/presentation/providers/timer_provider.dart @@ -23,6 +23,7 @@ class TimerState { final String? error; final int? idleTimeoutMinutes; final bool idleNotified; + final String idleUnansweredAction; TimerState({ this.timer, @@ -30,6 +31,7 @@ class TimerState { this.error, this.idleTimeoutMinutes, this.idleNotified = false, + this.idleUnansweredAction = 'review', }); TimerState copyWith({ @@ -38,6 +40,7 @@ class TimerState { String? error, int? idleTimeoutMinutes, bool? idleNotified, + String? idleUnansweredAction, bool clearTimer = false, bool clearError = false, }) { @@ -47,6 +50,8 @@ class TimerState { error: clearError ? null : (error ?? this.error), idleTimeoutMinutes: idleTimeoutMinutes ?? this.idleTimeoutMinutes, idleNotified: idleNotified ?? this.idleNotified, + idleUnansweredAction: + idleUnansweredAction ?? this.idleUnansweredAction, ); } @@ -100,11 +105,13 @@ class TimerNotifier extends StateNotifier { clearTimer: timer == null, idleTimeoutMinutes: status.idleTimeoutMinutes, idleNotified: status.idleNotified, + idleUnansweredAction: status.idleUnansweredAction, ); await IdleDetectionService.instance.updateFromTimerStatus( active: timer != null && !(timer.isPaused), idleTimeoutMinutes: status.idleTimeoutMinutes, idleNotified: status.idleNotified, + idleUnansweredAction: status.idleUnansweredAction, ); await _syncNotificationWithState(); } catch (e) { diff --git a/mobile/lib/presentation/screens/login_screen.dart b/mobile/lib/presentation/screens/login_screen.dart index fb8e1fc7..214a511f 100644 --- a/mobile/lib/presentation/screens/login_screen.dart +++ b/mobile/lib/presentation/screens/login_screen.dart @@ -28,8 +28,13 @@ class _LoginScreenState extends ConsumerState { final _serverUrlController = TextEditingController(); final _usernameController = TextEditingController(); final _passwordController = TextEditingController(); + final _totpController = TextEditingController(); + final _apiTokenController = TextEditingController(); final _storage = const FlutterSecureStorage(); bool _isLoading = false; + bool _awaiting2fa = false; + String? _loginTempToken; + String? _pendingServerUrl; String? _error; ConnectionDiagnostics? _connectionDiag; @@ -51,9 +56,45 @@ class _LoginScreenState extends ConsumerState { _serverUrlController.dispose(); _usernameController.dispose(); _passwordController.dispose(); + _totpController.dispose(); + _apiTokenController.dispose(); super.dispose(); } + Future _completeLogin(String serverUrl, String token) async { + final trustedHosts = await AppConfig.getTrustedInsecureHosts(); + final apiClient = ApiClient(baseUrl: serverUrl, trustedInsecureHosts: trustedHosts); + await apiClient.setAuthToken(token); + final validationResponse = await runMobileSpan( + 'mobile.login.validate_token', + () => apiClient.validateTokenRaw(), + ); + final status = validationResponse.statusCode; + if (status != 200) { + setState(() { + if (status == 401) { + _error = + 'Login succeeded, but the server rejected the session (401 Unauthorized). Check that the Server URL points to the correct TimeTracker instance.'; + } else { + _error = + 'Login succeeded, but the server returned HTTP ${status ?? '—'} while validating the connection.'; + } + _isLoading = false; + }); + return; + } + + await AppConfig.setServerUrl(serverUrl); + await _storage.write(key: 'api_token', value: token); + + unawaited(SyncUseCase.shared.startPeriodicSync()); + unawaited(NotificationService.instance.registerDeviceToken(apiClient)); + + if (mounted) { + Navigator.of(context).pushReplacementNamed(AppConstants.routeHome); + } + } + /// True if host is likely local/emulator (self-signed cert is common). static bool _isLikelyLocalOrEmulator(String host) { final h = host.toLowerCase(); @@ -73,8 +114,53 @@ class _LoginScreenState extends ConsumerState { return 'https://$trimmed'; } + Future _connectWithApiToken() async { + final rawUrl = _serverUrlController.text.trim(); + final serverUrl = _normalizeServerUrl(rawUrl); + final token = _apiTokenController.text.trim(); + if (serverUrl.isEmpty || token.isEmpty) { + setState(() => _error = 'Enter server URL and API token'); + return; + } + if (!token.startsWith('tt_')) { + setState(() => _error = 'API token must start with tt_'); + return; + } + setState(() { + _isLoading = true; + _error = null; + _connectionDiag = null; + }); + try { + final trustedHosts = await AppConfig.getTrustedInsecureHosts(); + final infoResult = await probeServerInfo( + serverUrl, + trustedInsecureHosts: trustedHosts, + ); + if (!infoResult.ok) { + setState(() { + _error = infoResult.message ?? 'Could not reach TimeTracker server'; + _isLoading = false; + }); + return; + } + await _completeLogin(serverUrl, token); + } catch (_) { + if (mounted) { + setState(() { + _error = 'Could not validate API token on this server.'; + _isLoading = false; + }); + } + } + } + Future _handleLogin() async { - if (!_formKey.currentState!.validate()) { + if (!_awaiting2fa && !_formKey.currentState!.validate()) { + return; + } + if (_awaiting2fa && _totpController.text.trim().isEmpty) { + setState(() => _error = 'Enter your authentication code'); return; } @@ -113,6 +199,24 @@ class _LoginScreenState extends ConsumerState { )); configureDioTrustedHosts(dio, trustedHosts); + if (_awaiting2fa && _loginTempToken != null) { + final code = _totpController.text.trim().replaceAll(' ', ''); + final response = await dio.post>( + '/api/v1/auth/2fa/verify', + data: {'temp_token': _loginTempToken, 'code': code}, + ); + final token = response.data?['token'] as String?; + if (token == null || token.isEmpty) { + setState(() { + _error = 'Invalid authentication code'; + _isLoading = false; + }); + return; + } + await _completeLogin(_pendingServerUrl ?? serverUrl, token); + return; + } + final response = await dio.post>( '/api/v1/auth/login', data: {'username': username, 'password': password}, @@ -127,42 +231,7 @@ class _LoginScreenState extends ConsumerState { return; } - final apiClient = ApiClient(baseUrl: serverUrl, trustedInsecureHosts: trustedHosts); - await apiClient.setAuthToken(token); - final validationResponse = await runMobileSpan( - 'mobile.login.validate_token', - () => apiClient.validateTokenRaw(), - ); - final status = validationResponse.statusCode; - if (status != 200) { - setState(() { - if (status == 401) { - _error = - 'Login succeeded, but the server rejected the session (401 Unauthorized). Check that the Server URL points to the correct TimeTracker instance.'; - } else { - _error = - 'Login succeeded, but the server returned HTTP ${status ?? '—'} while validating the connection.'; - } - _isLoading = false; - }); - return; - } - - // Only persist configuration after we know the connection works. - await AppConfig.setServerUrl(serverUrl); - await _storage.write(key: 'api_token', value: token); - - // Kick off background periodic sync after a successful login. - unawaited(SyncUseCase.shared.startPeriodicSync()); - - // Register FCM device token for idle wake-up when Firebase is configured. - unawaited( - NotificationService.instance.registerDeviceToken(apiClient), - ); - - if (mounted) { - Navigator.of(context).pushReplacementNamed(AppConstants.routeHome); - } + await _completeLogin(serverUrl, token); } on DioException catch (e) { final host = e.requestOptions.uri.host; final isConnectionFailure = e.type == DioExceptionType.connectionError || @@ -220,7 +289,25 @@ class _LoginScreenState extends ConsumerState { } final statusCode = e.response?.statusCode; - final message = e.response?.data is Map ? (e.response!.data as Map)['error'] as String? : null; + final responseData = e.response?.data; + if (statusCode == 403 && + responseData is Map && + responseData['requires_2fa'] == true && + responseData['temp_token'] is String) { + final normalizedUrl = _normalizeServerUrl(_serverUrlController.text.trim()); + if (mounted) { + setState(() { + _awaiting2fa = true; + _loginTempToken = responseData['temp_token'] as String; + _pendingServerUrl = normalizedUrl; + _error = null; + _isLoading = false; + }); + } + return; + } + + final message = responseData is Map ? responseData['error'] as String? : null; final errMsg = (statusCode == 401) ? (message ?? 'Invalid username or password') : (message ?? diag.summary); @@ -408,39 +495,91 @@ class _LoginScreenState extends ConsumerState { return null; }, ), - const SizedBox(height: 16), - TextFormField( - controller: _usernameController, - decoration: const InputDecoration( - labelText: 'Username', - hintText: 'Your web login username', - prefixIcon: Icon(Icons.person), + if (_awaiting2fa) ...[ + Text( + 'Enter the 6-digit code from your authenticator app.', + style: Theme.of(context).textTheme.bodyMedium, + textAlign: TextAlign.center, ), - textCapitalization: TextCapitalization.none, - autocorrect: false, - validator: (value) { - if (value == null || value.trim().isEmpty) { - return 'Please enter username'; - } - return null; - }, - ), - const SizedBox(height: 16), - TextFormField( - controller: _passwordController, - decoration: const InputDecoration( - labelText: 'Password', - hintText: 'Your web login password', - prefixIcon: Icon(Icons.lock), + const SizedBox(height: 16), + TextFormField( + controller: _totpController, + decoration: const InputDecoration( + labelText: 'Authentication code', + hintText: '123456', + prefixIcon: Icon(Icons.pin), + ), + keyboardType: TextInputType.number, + autofocus: true, ), - obscureText: true, - validator: (value) { - if (value == null || value.isEmpty) { - return 'Please enter password'; - } - return null; - }, - ), + const SizedBox(height: 8), + TextButton( + onPressed: _isLoading + ? null + : () { + setState(() { + _awaiting2fa = false; + _loginTempToken = null; + _totpController.clear(); + }); + }, + child: const Text('Back to password'), + ), + ] else ...[ + const SizedBox(height: 16), + TextFormField( + controller: _usernameController, + decoration: const InputDecoration( + labelText: 'Username', + hintText: 'Your web login username', + prefixIcon: Icon(Icons.person), + ), + textCapitalization: TextCapitalization.none, + autocorrect: false, + validator: (value) { + if (value == null || value.trim().isEmpty) { + return 'Please enter username'; + } + return null; + }, + ), + const SizedBox(height: 16), + TextFormField( + controller: _passwordController, + decoration: const InputDecoration( + labelText: 'Password', + hintText: 'Your web login password', + prefixIcon: Icon(Icons.lock), + ), + obscureText: true, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Please enter password'; + } + return null; + }, + ), + const SizedBox(height: 16), + Text( + 'OIDC-only servers: create an API token in Admin → API tokens and paste it below.', + style: Theme.of(context).textTheme.bodySmall, + ), + const SizedBox(height: 8), + TextFormField( + controller: _apiTokenController, + decoration: const InputDecoration( + labelText: 'Or paste API token', + hintText: 'tt_…', + prefixIcon: Icon(Icons.key), + ), + obscureText: true, + ), + const SizedBox(height: 8), + OutlinedButton( + onPressed: _isLoading ? null : _connectWithApiToken, + child: const Text('Connect with token'), + ), + ], if (_error != null) ...[ const SizedBox(height: 16), Container( @@ -497,7 +636,7 @@ class _LoginScreenState extends ConsumerState { width: 20, child: CircularProgressIndicator(strokeWidth: 2), ) - : const Text('Login'), + : Text(_awaiting2fa ? 'Verify code' : 'Login'), ), ], ), diff --git a/mobile/lib/presentation/screens/settings_screen.dart b/mobile/lib/presentation/screens/settings_screen.dart index c5e9fd88..a874103d 100644 --- a/mobile/lib/presentation/screens/settings_screen.dart +++ b/mobile/lib/presentation/screens/settings_screen.dart @@ -336,7 +336,11 @@ class _SettingsScreenState extends ConsumerState { ListTile( leading: const Icon(Icons.key), title: const Text('API Token'), - subtitle: Text(_hasToken ? 'Configured' : 'Not set'), + subtitle: Text( + _hasToken + ? 'Configured' + : 'Not set — required for OIDC-only servers (Admin → API tokens)', + ), trailing: const Icon(Icons.chevron_right), onTap: _showEditApiTokenDialog, ), diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index c09012a2..302c94a0 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -1,7 +1,7 @@ name: timetracker_mobile description: TimeTracker mobile app for Android and iOS publish_to: 'none' -version: 5.13.5+1 +version: 5.17.0+1 environment: sdk: '>=3.0.0 <4.0.0' diff --git a/mobile/test/sync_service_test.dart b/mobile/test/sync_service_test.dart new file mode 100644 index 00000000..694c6013 --- /dev/null +++ b/mobile/test/sync_service_test.dart @@ -0,0 +1,20 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:timetracker_mobile/data/storage/sync_service.dart'; + +void main() { + group('newSyncIdempotencyKey', () { + test('returns RFC-4122-style UUID v4', () { + final key = newSyncIdempotencyKey(); + expect( + RegExp( + r'^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', + ).hasMatch(key), + isTrue, + ); + }); + + test('generates distinct keys', () { + expect(newSyncIdempotencyKey(), isNot(newSyncIdempotencyKey())); + }); + }); +} diff --git a/pyproject.toml b/pyproject.toml index 2a455804..d0ed9310 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -109,3 +109,17 @@ module = ["app.services.task_service", "app.services.quote_service", "app.servic disable_error_code = ["arg-type"] # Pytest config is in pytest.ini (single source of truth to avoid duplicate config warning) + +[tool.ruff] +line-length = 120 +target-version = "py311" +extend-exclude = ["migrations", "venv", ".venv", "htmlcov", "node_modules"] + +[tool.ruff.lint] +# Prefer extend-select so default rules stay off until CI adopts full ruff. +# S110 flags try/except/pass (silent exception swallowing). +extend-select = ["S110"] + +[tool.ruff.lint.per-file-ignores] +"tests/**" = ["S110"] +"scripts/**" = ["S110"] diff --git a/requirements-test.txt b/requirements-test.txt index eaa839a0..afec0f43 100644 --- a/requirements-test.txt +++ b/requirements-test.txt @@ -35,8 +35,8 @@ faker==22.0.0 # Fake data generation requests-mock==1.11.0 # Mock HTTP requests responses==0.24.1 # Mock HTTP responses -# Performance testing -pytest-benchmark==4.0.0 # Performance benchmarking +# Optional Factur-X XSD validation (Akretion factur-x) +factur-x>=3.0 # Database testing sqlalchemy-utils==0.41.1 # Database utilities for testing diff --git a/scripts/build-js.mjs b/scripts/build-js.mjs index 2f09553b..d881e8e6 100644 --- a/scripts/build-js.mjs +++ b/scripts/build-js.mjs @@ -54,7 +54,14 @@ const HEAD_SCRIPTS = ['pwa-enhancements.js']; */ const CORE_GROUPS = { // Ungated: loaded for anonymous and authenticated users alike. - 'core-a1': ['date-picker-init.js', 'enhanced-search.js', 'form-validation.js', 'toast-notifications.js'], + 'core-a1': [ + 'js/confirm-dialog.js', + 'date-picker-init.js', + 'js/unsaved-changes.js', + 'enhanced-search.js', + 'form-validation.js', + 'toast-notifications.js', + ], // Gated on `current_user.is_authenticated and support_ui_json`. 'core-support': ['support-ui.js'], // Ungated. diff --git a/setup.py b/setup.py index 5684adc2..3b8b319e 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name='timetracker', - version='5.16.0', + version='5.17.0', packages=find_packages(), include_package_data=True, package_data={ diff --git a/tests/test_api_token_service.py b/tests/test_api_token_service.py new file mode 100644 index 00000000..842efe05 --- /dev/null +++ b/tests/test_api_token_service.py @@ -0,0 +1,141 @@ +"""Tests for ApiTokenService (create, validate scopes, rotate, revoke).""" + +import pytest + +from app import db +from app.models import ApiToken +from app.services.api_token_service import ApiTokenService + +pytestmark = [pytest.mark.unit] + + +@pytest.mark.unit +def test_create_token_success(app, test_user): + service = ApiTokenService() + + result = service.create_token( + user_id=test_user.id, + name="Test Token", + description="Test description", + scopes="read:projects,write:time_entries", + expires_days=30, + ) + + assert result["success"] is True + assert result["token"] is not None + assert result["token"].startswith("tt_") + assert result["api_token"] is not None + assert result["api_token"].name == "Test Token" + assert result["api_token"].user_id == test_user.id + assert result["api_token"].verify_token(result["token"]) + + +@pytest.mark.unit +def test_create_token_invalid_user(app): + service = ApiTokenService() + + result = service.create_token(user_id=99999, name="Test Token", scopes="read:projects") + + assert result["success"] is False + assert result["error"] == "invalid_user" + + +@pytest.mark.unit +def test_create_token_invalid_scopes(app, test_user): + service = ApiTokenService() + + result = service.create_token( + user_id=test_user.id, + name="Bad scopes", + scopes="read:projects,invalid:scope", + ) + + assert result["success"] is False + assert result["error"] == "invalid_scopes" + assert "invalid:scope" in result["invalid_scopes"] + + +@pytest.mark.unit +def test_validate_scopes_valid(app): + service = ApiTokenService() + + result = service.validate_scopes("read:projects,write:time_entries") + assert result["valid"] is True + assert result["invalid"] == [] + + +@pytest.mark.unit +def test_validate_scopes_invalid(app): + service = ApiTokenService() + + result = service.validate_scopes("read:projects,invalid:scope") + assert result["valid"] is False + assert "invalid:scope" in result["invalid"] + + +@pytest.mark.unit +def test_rotate_token(app, test_user): + service = ApiTokenService() + + create_result = service.create_token(user_id=test_user.id, name="Original Token", scopes="read:projects") + assert create_result["success"] is True + original_token_id = create_result["api_token"].id + + rotate_result = service.rotate_token(token_id=original_token_id, user_id=test_user.id) + + assert rotate_result["success"] is True + assert rotate_result["new_token"] is not None + assert rotate_result["old_token"].is_active is False + assert rotate_result["api_token"].id != original_token_id + + +@pytest.mark.unit +def test_revoke_token_success(app, test_user): + service = ApiTokenService() + create_result = service.create_token(user_id=test_user.id, name="To Revoke", scopes="read:projects") + token_id = create_result["api_token"].id + + revoke_result = service.revoke_token(token_id=token_id, user_id=test_user.id) + + assert revoke_result["success"] is True + stored = ApiToken.query.get(token_id) + assert stored is not None + assert stored.is_active is False + + +@pytest.mark.unit +def test_revoke_token_permission_denied(app, test_user): + from app.models import User + + service = ApiTokenService() + create_result = service.create_token(user_id=test_user.id, name="Owner only", scopes="read:projects") + token_id = create_result["api_token"].id + + other = User(username="otheruser", role="user", email="otheruser@example.com") + other.set_password("password123") + other.is_active = True + db.session.add(other) + db.session.commit() + + result = service.revoke_token(token_id=token_id, user_id=other.id) + + assert result["success"] is False + assert result["error"] == "permission_denied" + + +@pytest.mark.unit +def test_plain_token_invalid_after_revoke(app, test_user): + service = ApiTokenService() + create_result = service.create_token(user_id=test_user.id, name="Verify", scopes="read:projects") + plain = create_result["token"] + api_token = create_result["api_token"] + + assert api_token.verify_token(plain) is True + assert api_token.is_valid() is True + + service.revoke_token(token_id=api_token.id, user_id=test_user.id) + db.session.refresh(api_token) + + assert api_token.verify_token(plain) is True + assert api_token.is_valid() is False + assert api_token.verify_token("tt_not-a-real-token") is False diff --git a/tests/test_api_v1.py b/tests/test_api_v1.py index b96445a7..953ef9ab 100644 --- a/tests/test_api_v1.py +++ b/tests/test_api_v1.py @@ -557,6 +557,7 @@ def test_check_idle_timers_notifies_then_stops(self, client, api_token, test_use settings = Settings.get_settings() settings.idle_timeout_minutes = 30 + settings.idle_unanswered_action = "review" db.session.commit() start = local_now() - timedelta(hours=2) @@ -587,6 +588,48 @@ def test_check_idle_timers_notifies_then_stops(self, client, api_token, test_use assert flagged.end_time is None assert flagged.idle_flagged_at is not None + def test_check_idle_timers_auto_stop_mode(self, client, api_token, test_user, test_project, app): + """With idle_unanswered_action=auto_stop, grace expiry stops at credited time.""" + from datetime import timedelta + + from app.models import Settings + from app.models.time_entry import local_now + from app.utils.scheduled_tasks import check_idle_timers + + settings = Settings.get_settings() + settings.idle_timeout_minutes = 30 + settings.idle_unanswered_action = "auto_stop" + settings.idle_auto_stop_hours = 0 + db.session.commit() + + start = local_now() - timedelta(hours=2) + last_hb = local_now() - timedelta(hours=1) + timer = TimeEntry( + user_id=int(test_user), + project_id=test_project.id, + start_time=start, + end_time=None, + source="api", + billable=True, + ) + timer.last_heartbeat_at = last_hb + timer.idle_notified_at = local_now() - timedelta(minutes=6) + db.session.add(timer) + db.session.commit() + timer_id = timer.id + + check_idle_timers() + stopped = db.session.get(TimeEntry, timer_id) + assert stopped.end_time is not None + assert stopped.idle_flagged_at is None + expected_stop = last_hb + timedelta(minutes=30) + if getattr(expected_stop, "tzinfo", None) is not None: + expected_stop = expected_stop.replace(tzinfo=None) + end = stopped.end_time + if getattr(end, "tzinfo", None) is not None: + end = end.replace(tzinfo=None) + assert abs((end - expected_stop).total_seconds()) < 5 + def test_check_idle_timers_safety_cap_stops_and_keeps_flag(self, client, api_token, test_user, test_project, app): """With the safety cap enabled, an unanswered flagged timer is stopped credited to last activity but stays flagged for review.""" @@ -598,6 +641,7 @@ def test_check_idle_timers_safety_cap_stops_and_keeps_flag(self, client, api_tok settings = Settings.get_settings() settings.idle_timeout_minutes = 30 + settings.idle_unanswered_action = "review" settings.idle_auto_stop_hours = 1 db.session.commit() diff --git a/tests/test_api_v1_auth_2fa.py b/tests/test_api_v1_auth_2fa.py new file mode 100644 index 00000000..ed0caae1 --- /dev/null +++ b/tests/test_api_v1_auth_2fa.py @@ -0,0 +1,78 @@ +"""API login two-factor challenge (desktop/mobile/extension).""" + +import pyotp +import pytest + +from app import db + +pytestmark = [pytest.mark.unit] + + +def _enable_totp(user): + secret = pyotp.random_base32() + user.set_two_factor_secret(secret) + user.two_factor_enabled = True + db.session.commit() + return secret + + +@pytest.mark.unit +def test_api_login_returns_2fa_challenge_when_totp_enabled(client, user): + secret = _enable_totp(user) + + response = client.post( + "/api/v1/auth/login", + json={"username": user.username, "password": "password123"}, + ) + + assert response.status_code == 403 + data = response.get_json() + assert data["requires_2fa"] is True + assert isinstance(data.get("temp_token"), str) and data["temp_token"] + assert "token" not in data + + totp = pyotp.TOTP(secret) + verify = client.post( + "/api/v1/auth/2fa/verify", + json={"temp_token": data["temp_token"], "code": totp.now()}, + ) + assert verify.status_code == 200 + token = verify.get_json().get("token") + assert isinstance(token, str) and token.startswith("tt_") + + +@pytest.mark.unit +def test_api_login_without_2fa_still_returns_token(client, user): + response = client.post( + "/api/v1/auth/login", + json={"username": user.username, "password": "password123"}, + ) + assert response.status_code == 200 + assert response.get_json()["token"].startswith("tt_") + + +@pytest.mark.unit +def test_api_2fa_verify_rejects_bad_code(client, user): + _enable_totp(user) + challenge = client.post( + "/api/v1/auth/login", + json={"username": user.username, "password": "password123"}, + ) + temp = challenge.get_json()["temp_token"] + + bad = client.post( + "/api/v1/auth/2fa/verify", + json={"temp_token": temp, "code": "000000"}, + ) + assert bad.status_code == 401 + assert bad.get_json().get("error") + + +@pytest.mark.unit +def test_api_2fa_verify_rejects_invalid_temp_token(client, user): + _enable_totp(user) + verify_bad = client.post( + "/api/v1/auth/2fa/verify", + json={"temp_token": "not-a-valid-token", "code": "123456"}, + ) + assert verify_bad.status_code == 401 diff --git a/tests/test_api_v1_weekly_goals.py b/tests/test_api_v1_weekly_goals.py new file mode 100644 index 00000000..7e14045d --- /dev/null +++ b/tests/test_api_v1_weekly_goals.py @@ -0,0 +1,40 @@ +"""API v1 weekly goals list endpoint.""" + +import pytest + +pytestmark = [pytest.mark.unit] + + +def _auth(plain_token): + return {"Authorization": f"Bearer {plain_token}"} + + +@pytest.mark.unit +def test_list_weekly_goals(client_with_token, api_token, app, user): + _token_model, plain_token = api_token + response = client_with_token.get("/api/v1/weekly-goals", headers=_auth(plain_token)) + assert response.status_code == 200 + data = response.get_json() + assert "weekly_goals" in data + assert isinstance(data["weekly_goals"], list) + + +@pytest.mark.unit +def test_list_weekly_goals_with_goal(client_with_token, api_token, app, user): + from datetime import date, timedelta + + from app import db + from app.models import WeeklyTimeGoal + + _token_model, plain_token = api_token + with app.app_context(): + start = date.today() - timedelta(days=date.today().weekday()) + goal = WeeklyTimeGoal(user_id=user.id, target_hours=40.0, week_start_date=start) + db.session.add(goal) + db.session.commit() + + response = client_with_token.get("/api/v1/weekly-goals", headers=_auth(plain_token)) + assert response.status_code == 200 + payload = response.get_json()["weekly_goals"] + assert len(payload) >= 1 + assert payload[0]["target_hours"] == 40.0 diff --git a/tests/test_auth_routes_smoke.py b/tests/test_auth_routes_smoke.py new file mode 100644 index 00000000..d71f4b9b --- /dev/null +++ b/tests/test_auth_routes_smoke.py @@ -0,0 +1,21 @@ +"""Smoke tests for auth routes via test client.""" + +import pytest + + +@pytest.mark.smoke +@pytest.mark.routes +def test_login_success_with_local_auth(client, user): + response = client.post( + "/login", + data={"username": user.username, "password": "password123"}, + follow_redirects=False, + ) + assert response.status_code in (302, 303) + + +@pytest.mark.smoke +@pytest.mark.routes +def test_logout_clears_session(authenticated_client): + response = authenticated_client.get("/logout", follow_redirects=False) + assert response.status_code in (302, 303) diff --git a/tests/test_cii_invoice.py b/tests/test_cii_invoice.py index 58257a9d..097ffda4 100644 --- a/tests/test_cii_invoice.py +++ b/tests/test_cii_invoice.py @@ -20,8 +20,12 @@ def _make_invoice(**overrides): tax_rate=Decimal("21.00"), tax_amount=Decimal("42.00"), total_amount=Decimal("242.00"), + amount_paid=Decimal("0"), notes="Test invoice notes", buyer_reference="PO-99", + vat_category=None, + vat_exemption_reason=None, + vat_exemption_code=None, project=None, client=None, client_name="Buyer Inc", @@ -42,6 +46,7 @@ def _make_seller(**overrides): name="Seller GmbH", tax_id="DE123456789", address_line="Hauptstr. 1", + street="Hauptstr. 1", city="Berlin", postcode="10115", country_code="DE", @@ -49,6 +54,8 @@ def _make_seller(**overrides): phone="+49 30 12345", endpoint_id="9930:DE123456789", endpoint_scheme_id="9930", + iban=None, + bic=None, ) defaults.update(overrides) return CIIParty(**defaults) @@ -208,11 +215,14 @@ def test_cii_includes_seller_tax_registration(): @pytest.mark.unit -def test_cii_includes_seller_legal_organization(): +def test_cii_includes_seller_endpoint_as_uri(): seller = _make_seller(endpoint_id="0088:123456", endpoint_scheme_id="0088") xml, _ = build_cii_invoice_xml(_make_invoice(), seller, _make_buyer()) - assert "SpecifiedLegalOrganization" in xml + assert "URIUniversalCommunication" in xml assert "0088:123456" in xml + assert 'schemeID="0088"' in xml + # Peppol endpoint must NOT be in SpecifiedLegalOrganization + assert "SpecifiedLegalOrganization" not in xml @pytest.mark.unit @@ -225,22 +235,104 @@ def test_cii_sha256_changes_with_content(): @pytest.mark.unit -def test_cii_handles_zero_tax(): +def test_cii_handles_zero_tax_as_exempt(): + """Zero tax_rate without override uses category E with exemption reason (not Z+VATEX-EU-O).""" invoice = _make_invoice(tax_rate=Decimal("0"), tax_amount=Decimal("0")) - xml, _ = build_cii_invoice_xml(invoice, _make_seller(), _make_buyer()) - # Zero-rated tax should use category Z - assert "CategoryCode" in xml + settings = SimpleNamespace( + invoices_default_vat_category="E", + invoices_default_vat_exemption_reason="Kleinunternehmerregelung §6 Abs. 1 Z 27 UStG", + invoices_default_vat_exemption_code="VATEX-EU-O", + ) + xml, _ = build_cii_invoice_xml(invoice, _make_seller(), _make_buyer(), settings=settings) + assert ">E<" in xml or ">EZ<" in xml or ">ZAE<" in xml or ">AE= 5 + assert xml.count('currencyID="USD"') == 1 + + +@pytest.mark.unit +def test_cii_postal_address_order(): + xml, _ = build_cii_invoice_xml(_make_invoice(), _make_seller(), _make_buyer()) + # PostcodeCode must appear before LineOne in PostalTradeAddress + idx_pc = xml.find("PostcodeCode") + idx_lo = xml.find("LineOne") + assert idx_pc != -1 and idx_lo != -1 + assert idx_pc < idx_lo + + +@pytest.mark.unit +def test_cii_payment_means_when_iban(): + seller = _make_seller(iban="DE89370400440532013000", bic="COBADEFFXXX") + xml, _ = build_cii_invoice_xml(_make_invoice(), seller, _make_buyer()) + assert "SpecifiedTradeSettlementPaymentMeans" in xml + assert "DE89370400440532013000" in xml + assert "COBADEFFXXX" in xml + assert ">58<" in xml + + +@pytest.mark.unit +def test_cii_prepaid_amount(): + invoice = _make_invoice(amount_paid=Decimal("50.00"), total_amount=Decimal("242.00")) + xml, _ = build_cii_invoice_xml(invoice, _make_seller(), _make_buyer()) + assert "TotalPrepaidAmount" in xml + assert "50.00" in xml + assert "192.00" in xml # due payable + + +@pytest.mark.unit +def test_cii_address_fallback_to_line_one(): + seller = _make_seller(street=None, address_line="Fallback Street 9", postcode="1010", city="Wien") + xml, _ = build_cii_invoice_xml(_make_invoice(), seller, _make_buyer()) + assert "Fallback Street 9" in xml + + +@pytest.mark.unit +def test_cii_lines_before_header_agreement(): + xml, _ = build_cii_invoice_xml(_make_invoice(), _make_seller(), _make_buyer()) + assert xml.find("IncludedSupplyChainTradeLineItem") < xml.find("ApplicableHeaderTradeAgreement") + + +@pytest.mark.unit +def test_cii_passes_facturx_xsd(): + """Validate generated CII against official Factur-X EN16931 XSD (factur-x package).""" + pytest.importorskip("facturx") + from facturx import xml_check_xsd + + invoice = _make_invoice() + seller = _make_seller(iban="DE89370400440532013000", bic="COBADEFFXXX") + buyer = _make_buyer() + xml, _ = build_cii_invoice_xml(invoice, seller, buyer) + # Raises on failure + xml_check_xsd(xml.encode("utf-8"), flavor="factur-x", level="en16931") diff --git a/tests/test_idle_unanswered_action.py b/tests/test_idle_unanswered_action.py new file mode 100644 index 00000000..2503da70 --- /dev/null +++ b/tests/test_idle_unanswered_action.py @@ -0,0 +1,192 @@ +"""Tests for Settings.idle_unanswered_action (Issue #722). + +When the "Still working?" grace window expires unanswered: +- review (default): flag for review, timer keeps running +- auto_stop: stop credited to last_active + idle_timeout +""" + +from datetime import timedelta + +from app import db +from app.models import Settings +from app.models.time_entry import TimeEntry, local_now +from app.utils.scheduled_tasks import check_idle_timers + + +def _make_stale_notified_timer(user, project, *, paused=False): + """Open timer past idle window with grace already expired.""" + now = local_now() + timer = TimeEntry( + user_id=user.id, + project_id=project.id, + start_time=now - timedelta(hours=3), + source="auto", + billable=True, + ) + timer.last_heartbeat_at = now - timedelta(hours=2) + timer.idle_notified_at = now - timedelta(minutes=10) + if paused: + timer.paused_at = now - timedelta(minutes=90) + db.session.add(timer) + db.session.commit() + db.session.refresh(timer) + return timer + + +def test_idle_credited_stop_time_helper(app, user, project): + now = local_now() + timer = TimeEntry( + user_id=user.id, + project_id=project.id, + start_time=now - timedelta(hours=2), + source="auto", + billable=True, + ) + timer.last_heartbeat_at = now - timedelta(hours=1) + db.session.add(timer) + db.session.commit() + + stop_at = timer.idle_credited_stop_time(30, now=now) + expected = timer.last_heartbeat_at + timedelta(minutes=30) + assert abs((stop_at - expected).total_seconds()) < 1 + + # Cap at now when last_active + window is in the future + timer.last_heartbeat_at = now - timedelta(minutes=5) + db.session.commit() + stop_at = timer.idle_credited_stop_time(30, now=now) + assert abs((stop_at - now).total_seconds()) < 1 + + +def test_auto_stop_mode_stops_after_grace(app, user, project): + settings = Settings.get_settings() + settings.idle_timeout_minutes = 30 + settings.idle_unanswered_action = "auto_stop" + settings.idle_auto_stop_hours = 0 + db.session.commit() + + timer = _make_stale_notified_timer(user, project) + last_hb = timer.last_heartbeat_at + + check_idle_timers() + db.session.refresh(timer) + + assert timer.end_time is not None + assert timer.idle_flagged_at is None + assert timer.idle_notified_at is None + expected = last_hb + timedelta(minutes=30) + end = timer.end_time + if getattr(end, "tzinfo", None) is not None: + end = end.replace(tzinfo=None) + if getattr(expected, "tzinfo", None) is not None: + expected = expected.replace(tzinfo=None) + assert abs((end - expected).total_seconds()) < 5 + + +def test_review_mode_flags_without_stopping(app, user, project): + settings = Settings.get_settings() + settings.idle_timeout_minutes = 30 + settings.idle_unanswered_action = "review" + settings.idle_auto_stop_hours = 0 + db.session.commit() + + timer = _make_stale_notified_timer(user, project) + + check_idle_timers() + db.session.refresh(timer) + + assert timer.end_time is None + assert timer.idle_flagged_at is not None + + +def test_auto_stop_skips_paused_timer(app, user, project): + settings = Settings.get_settings() + settings.idle_unanswered_action = "auto_stop" + db.session.commit() + + paused = _make_stale_notified_timer(user, project, paused=True) + check_idle_timers() + db.session.refresh(paused) + + assert paused.end_time is None + assert paused.idle_flagged_at is None + + +def test_timer_status_returns_idle_unanswered_action(client_with_token, app): + with app.app_context(): + settings = Settings.get_settings() + settings.idle_unanswered_action = "auto_stop" + db.session.commit() + + response = client_with_token.get("/api/v1/timer/status") + assert response.status_code == 200 + data = response.get_json() + assert data["idle_unanswered_action"] == "auto_stop" + assert "idle_timeout_minutes" in data + + +def test_admin_rejects_invalid_idle_unanswered_action(admin_authenticated_client, app): + with app.app_context(): + settings = Settings.get_settings() + settings.idle_unanswered_action = "review" + db.session.commit() + data = { + "timezone": settings.timezone or "UTC", + "date_format": settings.date_format or "YYYY-MM-DD", + "time_format": settings.time_format or "24h", + "currency": settings.currency or "EUR", + "rounding_minutes": str(settings.rounding_minutes or 1), + "idle_timeout_minutes": str(settings.idle_timeout_minutes or 30), + "idle_unanswered_action": "delete_everything", + "idle_auto_stop_hours": "0", + "backup_retention_days": str(settings.backup_retention_days or 30), + "backup_time": settings.backup_time or "02:00", + "export_delimiter": settings.export_delimiter or ",", + "company_name": settings.company_name or "Test Co", + "invoice_prefix": settings.invoice_prefix or "INV", + "invoice_number_pattern": settings.invoice_number_pattern or "{PREFIX}-{SEQ}", + "invoice_start_number": str(settings.invoice_start_number or 1000), + "quote_prefix": getattr(settings, "quote_prefix", None) or "QUO", + "quote_number_pattern": getattr(settings, "quote_number_pattern", None) or "{PREFIX}-{SEQ}", + "quote_start_number": str(getattr(settings, "quote_start_number", None) or 1), + } + + response = admin_authenticated_client.post("/admin/settings", data=data, follow_redirects=True) + assert response.status_code == 200 + + with app.app_context(): + settings = Settings.get_settings() + assert settings.idle_unanswered_action == "review" + + +def test_admin_accepts_auto_stop_action(admin_authenticated_client, app): + with app.app_context(): + settings = Settings.get_settings() + settings.idle_unanswered_action = "review" + db.session.commit() + data = { + "timezone": settings.timezone or "UTC", + "date_format": settings.date_format or "YYYY-MM-DD", + "time_format": settings.time_format or "24h", + "currency": settings.currency or "EUR", + "rounding_minutes": str(settings.rounding_minutes or 1), + "idle_timeout_minutes": str(settings.idle_timeout_minutes or 30), + "idle_unanswered_action": "auto_stop", + "idle_auto_stop_hours": "0", + "backup_retention_days": str(settings.backup_retention_days or 30), + "backup_time": settings.backup_time or "02:00", + "export_delimiter": settings.export_delimiter or ",", + "company_name": settings.company_name or "Test Co", + "invoice_prefix": settings.invoice_prefix or "INV", + "invoice_number_pattern": settings.invoice_number_pattern or "{PREFIX}-{SEQ}", + "invoice_start_number": str(settings.invoice_start_number or 1000), + "quote_prefix": getattr(settings, "quote_prefix", None) or "QUO", + "quote_number_pattern": getattr(settings, "quote_number_pattern", None) or "{PREFIX}-{SEQ}", + "quote_start_number": str(getattr(settings, "quote_start_number", None) or 1), + } + + response = admin_authenticated_client.post("/admin/settings", data=data, follow_redirects=True) + assert response.status_code == 200 + + with app.app_context(): + settings = Settings.get_settings() + assert settings.idle_unanswered_action == "auto_stop" diff --git a/tests/test_invoice_validators.py b/tests/test_invoice_validators.py index 4d058990..14257d66 100644 --- a/tests/test_invoice_validators.py +++ b/tests/test_invoice_validators.py @@ -169,34 +169,6 @@ def _minimal_cii_en16931() -> str: - - - Seller Company - - - Buyer Company - - - - - EUR - - 0.00 - VAT - 100.00 - Z - 0.00 - Not subject to VAT - VATEX-EU-O - - - 100.00 - 100.00 - 0.00 - 100.00 - 100.00 - - 1 @@ -206,7 +178,7 @@ def _minimal_cii_en16931() -> str: - 100.00 + 100.00 @@ -215,16 +187,54 @@ def _minimal_cii_en16931() -> str: VAT - Z + E 0.00 - Not subject to VAT - VATEX-EU-O - 100.00 + 100.00 + + + Seller Company + + 1010 + Main St 1 + Vienna + AT + + + + Buyer Company + + 10115 + Buyer Ave 2 + Berlin + DE + + + + + + EUR + + 0.00 + VAT + VAT exempt + 100.00 + E + VATEX-EU-O + 0.00 + + + 100.00 + 100.00 + 0.00 + 100.00 + 100.00 + + """ @@ -237,10 +247,10 @@ def test_validate_cii_en16931_accepts_valid(): @pytest.mark.unit def test_validate_cii_en16931_detects_missing_seller(): - cii = _minimal_cii_en16931().replace( - "\n Seller Company\n ", - "", - ) + cii = _minimal_cii_en16931() + start = cii.index("") + end = cii.index("") + len("") + cii = cii[:start] + cii[end:] passed, issues = validate_cii_en16931(cii) assert passed is False assert any("Seller" in i for i in issues) @@ -270,8 +280,30 @@ def test_validate_cii_en16931_detects_missing_line_items(): @pytest.mark.unit def test_validate_cii_en16931_detects_missing_grand_total(): cii = _minimal_cii_en16931().replace( - '100.00', "" + "100.00", "" ) passed, issues = validate_cii_en16931(cii) assert passed is False assert any("GrandTotal" in i for i in issues) + + +@pytest.mark.unit +def test_validate_facturx_prerequisites_requires_countries(): + from types import SimpleNamespace + + from app.utils.invoice_validators import validate_facturx_prerequisites + + settings = SimpleNamespace( + invoices_zugferd_pdf=True, + company_name="Co", + company_country="", + peppol_sender_country="", + invoices_default_vat_category="S", + invoices_default_vat_exemption_reason="", + invoices_default_vat_exemption_code="", + ) + invoice = SimpleNamespace(client=None, vat_category=None, tax_rate=20) + ok, issues = validate_facturx_prerequisites(invoice, settings) + assert ok is False + assert any("Seller country" in i for i in issues) + assert any("Buyer country" in i for i in issues) diff --git a/tests/test_ldap_service.py b/tests/test_ldap_service.py new file mode 100644 index 00000000..66ef082b --- /dev/null +++ b/tests/test_ldap_service.py @@ -0,0 +1,105 @@ +"""Unit tests for LDAP service helpers and connection diagnostics (mocked).""" + +from __future__ import annotations + +from unittest.mock import MagicMock, patch + +import pytest + +from app.services import ldap_service + +pytestmark = [pytest.mark.unit] + + +def test_user_search_base_combines_user_and_base_dn(): + cfg = {"LDAP_USER_DN": "ou=users", "LDAP_BASE_DN": "dc=example,dc=com"} + assert ldap_service._user_search_base(cfg) == "ou=users,dc=example,dc=com" + + +def test_user_search_base_user_dn_only(): + cfg = {"LDAP_USER_DN": "ou=users", "LDAP_BASE_DN": ""} + assert ldap_service._user_search_base(cfg) == "ou=users" + + +def test_group_search_base_combines_group_and_base_dn(): + cfg = {"LDAP_GROUP_DN": "ou=groups", "LDAP_BASE_DN": "dc=example,dc=com"} + assert ldap_service._group_search_base(cfg) == "ou=groups,dc=example,dc=com" + + +def test_authenticate_empty_credentials_returns_none(app): + with app.app_context(): + from app.services.ldap_service import LDAPService + + assert LDAPService.authenticate("", "") is None + assert LDAPService.authenticate("user", "") is None + + +@patch("app.services.ldap_service.Connection", None) +@patch("app.services.ldap_service.Server", None) +def test_test_connection_without_ldap3(app): + with app.app_context(): + from app.services.ldap_service import LDAPService + + result = LDAPService.test_connection( + { + "LDAP_HOST": "ldap.test", + "LDAP_PORT": 389, + "LDAP_BIND_DN": "cn=svc,dc=example,dc=com", + "LDAP_BIND_PASSWORD": "x", + "LDAP_BASE_DN": "dc=example,dc=com", + } + ) + assert result["success"] is False + assert "ldap3" in result["message"].lower() + + +@patch("app.services.ldap_service._service_connection") +def test_test_connection_bind_failure(mock_svc, app): + from ldap3.core.exceptions import LDAPException + + mock_svc.side_effect = LDAPException("bind failed") + + with app.app_context(): + from app.services.ldap_service import LDAPService + + result = LDAPService.test_connection( + { + "LDAP_HOST": "ldap.test", + "LDAP_PORT": 389, + "LDAP_BIND_DN": "cn=svc,dc=example,dc=com", + "LDAP_BIND_PASSWORD": "x", + "LDAP_BASE_DN": "dc=example,dc=com", + "LDAP_USER_DN": "ou=users", + "LDAP_USER_OBJECT_CLASS": "inetOrgPerson", + } + ) + + assert result["success"] is False + assert "LDAP" in result["message"] + assert result["user_count"] is None + + +@patch("app.services.ldap_service._service_connection") +def test_test_connection_success_counts_users(mock_svc, app): + conn = MagicMock() + conn.entries = [MagicMock(), MagicMock()] + mock_svc.return_value = conn + + with app.app_context(): + from app.services.ldap_service import LDAPService + + result = LDAPService.test_connection( + { + "LDAP_HOST": "ldap.test", + "LDAP_PORT": 389, + "LDAP_BIND_DN": "cn=svc,dc=example,dc=com", + "LDAP_BIND_PASSWORD": "x", + "LDAP_BASE_DN": "dc=example,dc=com", + "LDAP_USER_DN": "ou=users", + "LDAP_USER_OBJECT_CLASS": "inetOrgPerson", + } + ) + + assert result["success"] is True + assert result["user_count"] == 2 + conn.unbind.assert_called() diff --git a/tests/test_pdf_fonts.py b/tests/test_pdf_fonts.py new file mode 100644 index 00000000..90b82e86 --- /dev/null +++ b/tests/test_pdf_fonts.py @@ -0,0 +1,21 @@ +"""Tests for embedded Liberation PDF fonts.""" +import pytest + + +@pytest.mark.unit +def test_resolve_font_maps_base14(): + from app.utils.pdf_fonts import ( + LIBERATION_MONO, + LIBERATION_SANS, + LIBERATION_SANS_BOLD, + LIBERATION_SERIF, + ensure_pdf_fonts_registered, + resolve_font, + ) + + assert ensure_pdf_fonts_registered() is True + assert resolve_font("Helvetica") == LIBERATION_SANS + assert resolve_font("Helvetica-Bold") == LIBERATION_SANS_BOLD + assert resolve_font("Times-Roman") == LIBERATION_SERIF + assert resolve_font("Courier") == LIBERATION_MONO + assert resolve_font(None) == LIBERATION_SANS diff --git a/tests/test_services/test_api_token_service.py b/tests/test_services/test_api_token_service.py deleted file mode 100644 index af7afa4f..00000000 --- a/tests/test_services/test_api_token_service.py +++ /dev/null @@ -1,84 +0,0 @@ -""" -Tests for ApiTokenService. -""" - -import pytest - -# Skip entire test file - ApiTokenService no longer exists -pytestmark = pytest.mark.skip(reason="ApiTokenService no longer exists in app.services") - -# Imports commented out since the service doesn't exist -# from app.services import ApiTokenService -# from app.models import ApiToken, User -# from app import db - - -@pytest.mark.unit -def test_create_token_success(app, test_user): - """Test successful token creation""" - service = ApiTokenService() - - result = service.create_token( - user_id=test_user.id, - name="Test Token", - description="Test description", - scopes="read:projects,write:time_entries", - expires_days=30, - ) - - assert result["success"] is True - assert result["token"] is not None - assert result["api_token"] is not None - assert result["api_token"].name == "Test Token" - assert result["api_token"].user_id == test_user.id - - -@pytest.mark.unit -def test_create_token_invalid_user(app): - """Test token creation with invalid user""" - service = ApiTokenService() - - result = service.create_token(user_id=99999, name="Test Token", scopes="read:projects") # Non-existent user - - assert result["success"] is False - assert result["error"] == "invalid_user" - - -@pytest.mark.unit -def test_validate_scopes_valid(app): - """Test scope validation with valid scopes""" - service = ApiTokenService() - - result = service.validate_scopes("read:projects,write:time_entries") - assert result["valid"] is True - assert len(result["invalid"]) == 0 - - -@pytest.mark.unit -def test_validate_scopes_invalid(app): - """Test scope validation with invalid scopes""" - service = ApiTokenService() - - result = service.validate_scopes("read:projects,invalid:scope") - assert result["valid"] is False - assert "invalid:scope" in result["invalid"] - - -@pytest.mark.unit -def test_rotate_token(app, test_user): - """Test token rotation""" - service = ApiTokenService() - - # Create initial token - create_result = service.create_token(user_id=test_user.id, name="Original Token", scopes="read:projects") - - assert create_result["success"] is True - original_token_id = create_result["api_token"].id - - # Rotate token - rotate_result = service.rotate_token(token_id=original_token_id, user_id=test_user.id) - - assert rotate_result["success"] is True - assert rotate_result["new_token"] is not None - assert rotate_result["old_token"].is_active is False - assert rotate_result["api_token"].id != original_token_id diff --git a/tests/test_services/test_time_entry_bulk_service.py b/tests/test_services/test_time_entry_bulk_service.py deleted file mode 100644 index 03feacbf..00000000 --- a/tests/test_services/test_time_entry_bulk_service.py +++ /dev/null @@ -1,36 +0,0 @@ -"""Tests for bulk time entry actions.""" - -from unittest.mock import MagicMock, patch - -import pytest - -pytestmark = [pytest.mark.unit] - - -@patch("app.services.time_entry_bulk_service.safe_commit") -@patch("app.services.time_entry_bulk_service.db") -def test_bulk_all_active_entries_returns_400(mock_db, mock_safe_commit): - from app.services.time_entry_bulk_service import apply_bulk_time_entry_actions - - e = MagicMock() - e.user_id = 1 - e.is_active = True - - mock_q = MagicMock() - mock_q.all.return_value = [e] - - with patch("app.services.time_entry_bulk_service.TimeEntry") as TE: - TE.query.filter.return_value = mock_q - result = apply_bulk_time_entry_actions( - [99], - "set_billable", - True, - user_id=1, - is_admin=False, - ) - - assert result["success"] is False - assert result["http_status"] == 400 - assert "active" in result["error"].lower() - mock_db.session.rollback.assert_called() - mock_safe_commit.assert_not_called() diff --git a/tests/test_time_entry_bulk_service.py b/tests/test_time_entry_bulk_service.py new file mode 100644 index 00000000..b71c3ad1 --- /dev/null +++ b/tests/test_time_entry_bulk_service.py @@ -0,0 +1,129 @@ +"""Tests for bulk time entry actions.""" + +from datetime import datetime, timedelta +from unittest.mock import MagicMock, patch + +import pytest + +from app import db +from app.models import TimeEntry +from app.services.time_entry_bulk_service import apply_bulk_time_entry_actions + +pytestmark = [pytest.mark.unit] + + +@patch("app.services.time_entry_bulk_service.safe_commit") +@patch("app.services.time_entry_bulk_service.db") +def test_bulk_all_active_entries_returns_400(mock_db, mock_safe_commit): + e = MagicMock() + e.user_id = 1 + e.is_active = True + + mock_q = MagicMock() + mock_q.all.return_value = [e] + + with patch("app.services.time_entry_bulk_service.TimeEntry") as TE: + TE.query.filter.return_value = mock_q + result = apply_bulk_time_entry_actions( + [99], + "set_billable", + True, + user_id=1, + is_admin=False, + ) + + assert result["success"] is False + assert result["http_status"] == 400 + assert "active" in result["error"].lower() + mock_db.session.rollback.assert_called() + mock_safe_commit.assert_not_called() + + +@pytest.mark.unit +def test_bulk_empty_entry_ids(app): + result = apply_bulk_time_entry_actions([], "delete", None, user_id=1, is_admin=False) + assert result["success"] is False + assert result["http_status"] == 400 + + +@pytest.mark.unit +def test_bulk_set_billable(app, user, project): + start = datetime.utcnow() - timedelta(hours=3) + end = datetime.utcnow() - timedelta(hours=2) + entry = TimeEntry( + user_id=user.id, + project_id=project.id, + start_time=start, + end_time=end, + source="manual", + billable=False, + ) + db.session.add(entry) + db.session.commit() + + result = apply_bulk_time_entry_actions( + [entry.id], + "set_billable", + True, + user_id=user.id, + is_admin=False, + ) + + assert result["success"] is True + assert result["affected"] == 1 + db.session.refresh(entry) + assert entry.billable is True + + +@pytest.mark.unit +def test_bulk_delete_completed_entry(app, user, project): + start = datetime.utcnow() - timedelta(hours=3) + end = datetime.utcnow() - timedelta(hours=2) + entry = TimeEntry( + user_id=user.id, + project_id=project.id, + start_time=start, + end_time=end, + source="manual", + ) + db.session.add(entry) + db.session.commit() + entry_id = entry.id + + result = apply_bulk_time_entry_actions( + [entry_id], + "delete", + None, + user_id=user.id, + is_admin=False, + ) + + assert result["success"] is True + assert result["affected"] == 1 + assert TimeEntry.query.get(entry_id) is None + + +@pytest.mark.unit +def test_bulk_access_denied_other_users_entry(app, user, project, admin_user): + start = datetime.utcnow() - timedelta(hours=3) + end = datetime.utcnow() - timedelta(hours=2) + entry = TimeEntry( + user_id=admin_user.id, + project_id=project.id, + start_time=start, + end_time=end, + source="manual", + ) + db.session.add(entry) + db.session.commit() + + result = apply_bulk_time_entry_actions( + [entry.id], + "delete", + None, + user_id=user.id, + is_admin=False, + ) + + assert result["success"] is False + assert result["http_status"] == 403 diff --git a/tests/test_time_entry_csv_import_service.py b/tests/test_time_entry_csv_import_service.py new file mode 100644 index 00000000..548c1ec6 --- /dev/null +++ b/tests/test_time_entry_csv_import_service.py @@ -0,0 +1,71 @@ +"""Tests for CSV import of time entries.""" + +from datetime import datetime, timedelta + +import pytest + +from app import db +from app.models import TimeEntry +from app.services.time_entry_csv_import_service import import_time_entries_from_csv_text + +pytestmark = [pytest.mark.unit] + +CSV_HEADER = "start_time,end_time,project_id,notes,billable,tags\n" + + +@pytest.mark.unit +def test_import_empty_csv(app, user): + result, status = import_time_entries_from_csv_text("", user_id=user.id, is_admin=False) + assert status == 400 + assert result["success"] is False + + +@pytest.mark.unit +def test_import_header_only_no_data_rows(app, user): + result, status = import_time_entries_from_csv_text(CSV_HEADER, user_id=user.id, is_admin=False) + assert status == 200 + assert result["success"] is True + assert result["created"] == 0 + assert result["failed"] == 0 + + +@pytest.mark.unit +def test_import_small_csv_success(app, user, project): + start = datetime.utcnow() - timedelta(hours=4) + end = datetime.utcnow() - timedelta(hours=2) + csv_text = ( + CSV_HEADER + + f"{start.isoformat()},{end.isoformat()},{project.id},Imported row,true,import\n" + ) + + result, status = import_time_entries_from_csv_text( + csv_text, + user_id=user.id, + is_admin=False, + ) + + assert status == 200 + assert result["success"] is True + assert result["created"] == 1 + assert result["failed"] == 0 + + entries = TimeEntry.query.filter_by(user_id=user.id, project_id=project.id).all() + assert any(e.notes == "Imported row" for e in entries) + + +@pytest.mark.unit +def test_import_row_missing_project(app, user, project): + start = datetime.utcnow() - timedelta(hours=4) + end = datetime.utcnow() - timedelta(hours=2) + csv_text = CSV_HEADER + f"{start.isoformat()},{end.isoformat()},,,,\n" + + result, status = import_time_entries_from_csv_text( + csv_text, + user_id=user.id, + is_admin=False, + ) + + assert status == 200 + assert result["created"] == 0 + assert result["failed"] == 1 + assert result["errors"][0]["error"] == "project_id is required" diff --git a/tests/test_user_gdpr_erase.py b/tests/test_user_gdpr_erase.py new file mode 100644 index 00000000..a6fa3ee0 --- /dev/null +++ b/tests/test_user_gdpr_erase.py @@ -0,0 +1,46 @@ +"""Tests for GDPR user anonymization.""" + +import pytest + +from app import db +from app.models import AuditLog, User +from app.services.user_gdpr_service import UserGdprService + +pytestmark = [pytest.mark.unit] + + +@pytest.mark.unit +def test_anonymize_user_clears_pii_and_reserves_username(app, user): + with app.app_context(): + original_username = user.username + user.email = "erase-me@example.com" + user.full_name = "Erase Me" + db.session.commit() + + result = UserGdprService().anonymize_user(user_id=user.id, actor_id=user.id, reason="test") + assert result["success"] is True + + db.session.expire_all() + refreshed = db.session.get(User, user.id) + assert refreshed.anonymized_at is not None + assert refreshed.email is None + assert refreshed.username.startswith("deleted_user_") + assert refreshed.is_active is False + assert refreshed.full_name.startswith("Anonymized User") + + from app.models.deleted_username import DeletedUsername + + reserved = DeletedUsername.query.filter_by(username=original_username.lower()).first() + assert reserved is not None + + audit = AuditLog.query.filter_by(entity_type="user", entity_id=user.id, action="anonymized").first() + assert audit is not None + + +@pytest.mark.unit +def test_anonymize_user_idempotent(app, user): + with app.app_context(): + UserGdprService().anonymize_user(user_id=user.id, actor_id=user.id) + again = UserGdprService().anonymize_user(user_id=user.id, actor_id=user.id) + assert again["success"] is False + assert again["error"] == "already_anonymized" diff --git a/tests/test_zugferd.py b/tests/test_zugferd.py index 3a685237..605c4836 100644 --- a/tests/test_zugferd.py +++ b/tests/test_zugferd.py @@ -2,6 +2,7 @@ from datetime import date, timedelta from decimal import Decimal import io +import os import pytest @@ -10,6 +11,17 @@ from app.utils.zugferd import FACTURX_EMBEDDED_FILENAME, embed_zugferd_xml_in_pdf +def _minimal_pdf_bytes(): + import pikepdf + + pdf = pikepdf.Pdf.new() + pdf.add_blank_page(page_size=(595, 842)) + buf = io.BytesIO() + pdf.save(buf) + pdf.close() + return buf.getvalue() + + @pytest.mark.unit def test_embed_facturx_xml_in_pdf_adds_cii_attachment(app): """Embed step adds factur-x.xml (CII) to PDF with correct structure.""" @@ -24,7 +36,7 @@ def test_embed_facturx_xml_in_pdf_adds_cii_attachment(app): user.set_password("password123") db.session.add(user) - client = Client(name="ZugFerd Client", email="client@example.com", address="Addr 1") + client = Client(name="ZugFerd Client", email="client@example.com", address="Addr 1", country="DE") client.set_custom_field("peppol_endpoint_id", "9915:DE123456789") client.set_custom_field("peppol_scheme_id", "9915") client.set_custom_field("peppol_country", "DE") @@ -70,19 +82,14 @@ def test_embed_facturx_xml_in_pdf_adds_cii_attachment(app): settings = __import__("app.models", fromlist=["Settings"]).Settings.get_settings() if not getattr(settings, "company_name", None): settings.company_name = "Test Company" + settings.company_country = "DE" if not getattr(settings, "peppol_sender_endpoint_id", None): settings.peppol_sender_endpoint_id = "9915:BE111111111" if not getattr(settings, "peppol_sender_scheme_id", None): settings.peppol_sender_scheme_id = "9915" db.session.commit() - # Minimal valid PDF (one blank page) - pdf = pikepdf.Pdf.new() - pdf.add_blank_page(page_size=(595, 842)) - buf = io.BytesIO() - pdf.save(buf) - pdf.close() - pdf_bytes = buf.getvalue() + pdf_bytes = _minimal_pdf_bytes() out_bytes, err = embed_zugferd_xml_in_pdf(pdf_bytes, inv, settings) assert err is None @@ -92,6 +99,19 @@ def test_embed_facturx_xml_in_pdf_adds_cii_attachment(app): assert FACTURX_EMBEDDED_FILENAME in result.attachments attached = result.attachments[FACTURX_EMBEDDED_FILENAME].get_file() xml_content = attached.read_bytes().decode("utf-8") + + # Catalog /AF must reference the associated file + assert "/AF" in result.Root + assert len(result.Root.AF) >= 1 + + # Filespec AFRelationship Data and embedded stream Subtype/Params + fs = result.attachments[FACTURX_EMBEDDED_FILENAME] + assert fs.obj["/AFRelationship"] == pikepdf.Name("/Data") + emb = fs.obj["/EF"]["/F"] + assert emb.get("/Subtype") == pikepdf.Name("/text/xml") + assert "/Params" in emb + assert "/ModDate" in emb["/Params"] or emb["/Params"].get("/ModDate") is not None + result.close() # Must be CII (CrossIndustryInvoice), NOT UBL @@ -112,16 +132,10 @@ def test_embed_facturx_xml_in_pdf_adds_cii_attachment(app): # Must contain the Factur-X guideline ID assert "urn:cen.eu:en16931:2017" in xml_content - # ZUGFeRD / Factur-X: primary invoice XML uses AFRelationship Data and text/xml - fs = result.attachments[FACTURX_EMBEDDED_FILENAME] - assert fs.obj["/AFRelationship"] == pikepdf.Name("/Data") - emb = fs.obj["/EF"]["/F"] - assert emb.get("/Subtype") == pikepdf.Name("/text/xml") - @pytest.mark.unit def test_embed_facturx_xml_has_correct_xmp_metadata(app): - """Embedded PDF has Factur-X XMP metadata (not the old ZUGFeRD CII namespace).""" + """Embedded PDF has Factur-X XMP metadata including pdfaExtension schema.""" try: import pikepdf except ImportError: @@ -133,6 +147,7 @@ def test_embed_facturx_xml_has_correct_xmp_metadata(app): settings = __import__("app.models", fromlist=["Settings"]).Settings.get_settings() if not getattr(settings, "company_name", None): settings.company_name = "Test Company" + settings.company_country = "DE" db.session.commit() inv = SimpleNamespace( @@ -145,8 +160,12 @@ def test_embed_facturx_xml_has_correct_xmp_metadata(app): tax_rate=Decimal("0"), tax_amount=Decimal("0"), total_amount=Decimal("50.00"), + amount_paid=Decimal("0"), notes=None, buyer_reference=None, + vat_category="E", + vat_exemption_reason="Exempt", + vat_exemption_code="VATEX-EU-O", project=None, client=None, client_name="Buyer", @@ -157,23 +176,69 @@ def test_embed_facturx_xml_has_correct_xmp_metadata(app): extra_goods=[], ) - pdf = pikepdf.Pdf.new() - pdf.add_blank_page(page_size=(595, 842)) - buf = io.BytesIO() - pdf.save(buf) - pdf.close() - pdf_bytes = buf.getvalue() - - out_bytes, err = embed_zugferd_xml_in_pdf(pdf_bytes, inv, settings) + out_bytes, err = embed_zugferd_xml_in_pdf(_minimal_pdf_bytes(), inv, settings) assert err is None result = pikepdf.open(io.BytesIO(out_bytes)) xmp = result.Root.Metadata.read_bytes().decode("utf-8", errors="replace") result.close() - # Must use Factur-X namespace, not the old ZUGFeRD CII namespace assert "factur-x" in xmp.lower() or "fx:DocumentType" in xmp assert "factur-x.xml" in xmp + assert "pdfaExtension" in xmp + assert "DocumentFileName" in xmp + + +@pytest.mark.unit +def test_embed_with_pdfa3_adds_pdfaid(app): + try: + import pikepdf + except ImportError: + pytest.skip("pikepdf not installed") + + with app.app_context(): + from types import SimpleNamespace + + settings = __import__("app.models", fromlist=["Settings"]).Settings.get_settings() + settings.company_name = "Test Company" + settings.company_country = "AT" + db.session.commit() + + inv = SimpleNamespace( + id=1, + invoice_number="INV-PDFA-001", + issue_date=date.today(), + due_date=date.today() + timedelta(days=14), + currency_code="EUR", + subtotal=Decimal("50.00"), + tax_rate=Decimal("20"), + tax_amount=Decimal("10"), + total_amount=Decimal("60.00"), + amount_paid=Decimal("0"), + notes=None, + buyer_reference="REF", + vat_category="S", + vat_exemption_reason=None, + vat_exemption_code=None, + project=None, + client=None, + client_name="Buyer", + client_email=None, + client_address=None, + items=[SimpleNamespace(description="Work", quantity=1, unit_price=50, total_amount=50)], + expenses=[], + extra_goods=[], + ) + + out_bytes, err = embed_zugferd_xml_in_pdf(_minimal_pdf_bytes(), inv, settings, pdfa3=True) + assert err is None + + result = pikepdf.open(io.BytesIO(out_bytes)) + xmp = result.Root.Metadata.read_bytes().decode("utf-8", errors="replace") + assert "pdfaid:part" in xmp + assert ">3<" in xmp or "pdfaid:part>3" + assert "/OutputIntents" in result.Root + result.close() @pytest.mark.unit @@ -193,8 +258,12 @@ def test_embed_returns_original_pdf_on_failure(app): tax_rate=Decimal("0"), tax_amount=Decimal("0"), total_amount=Decimal("0"), + amount_paid=Decimal("0"), notes=None, buyer_reference=None, + vat_category=None, + vat_exemption_reason=None, + vat_exemption_code=None, project=None, client=None, client_name="Test", @@ -209,3 +278,30 @@ def test_embed_returns_original_pdf_on_failure(app): out_bytes, err = embed_zugferd_xml_in_pdf(invalid_pdf_bytes, inv, settings) assert err is not None assert out_bytes == invalid_pdf_bytes + + +@pytest.mark.unit +def test_verapdf_smoke_skipped_without_path(): + """veraPDF smoke test runs only when INVOICE_VERAPDF_PATH is set.""" + path = (os.environ.get("INVOICE_VERAPDF_PATH") or "").strip() + if not path or not os.path.isfile(path): + pytest.skip("INVOICE_VERAPDF_PATH not set") + + from app.utils.invoice_validators import validate_pdfa_verapdf + from app.utils.pdf_fonts import ensure_pdf_fonts_registered, resolve_font + from reportlab.pdfgen import canvas + + ensure_pdf_fonts_registered() + buf = io.BytesIO() + c = canvas.Canvas(buf) + c.setFont(resolve_font("Helvetica"), 12) + c.drawString(100, 700, "PDF/A font embed smoke") + c.save() + pdf_bytes = buf.getvalue() + + from app.utils.pdfa3 import convert_to_pdfa3 + + out, err = convert_to_pdfa3(pdf_bytes) + assert err is None + passed, msgs = validate_pdfa_verapdf(out, verapdf_path=path) + assert passed, msgs diff --git a/translations/ar/LC_MESSAGES/messages.po b/translations/ar/LC_MESSAGES/messages.po index 8b8b1f0a..1609c27a 100644 --- a/translations/ar/LC_MESSAGES/messages.po +++ b/translations/ar/LC_MESSAGES/messages.po @@ -3,26630 +3,18336 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: ar\n" "Language-Team: ar \n" -"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" +"Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : " +"n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "يرجى تسجيل الدخول للوصول إلى بوابة العميل." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." -msgstr "انتهت جلسة العمل الخاصة بك أو ظلت الصفحة مفتوحة لفترة طويلة جدًا. يرجى المحاولة مرة أخرى." +msgstr "" +"انتهت جلسة العمل الخاصة بك أو ظلت الصفحة مفتوحة لفترة طويلة جدًا. يرجى " +"المحاولة مرة أخرى." -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "مطلوب وصول المسؤول" +#~ msgid "Administrator access required" +#~ msgstr "مطلوب وصول المسؤول" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "اسم المستخدم مطلوب" +#~ msgid "Username is required" +#~ msgstr "اسم المستخدم مطلوب" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "المستخدم موجود بالفعل" +#~ msgid "User already exists" +#~ msgstr "المستخدم موجود بالفعل" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر إنشاء مستخدم بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "تعذر إنشاء مستخدم بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "تم إنشاء المستخدم \"%(username)s\" بنجاح" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "اسم المستخدم موجود بالفعل" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "الرجاء تحديد عميل عند تمكين الوصول إلى بوابة العميل." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "كلمات المرور غير متطابقة." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "تعذر تحديث المستخدم بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "تم إنشاء المستخدم \"%(username)s\" بنجاح" -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "تم تحديث المستخدم \"%(username)s\" بنجاح" +#~ msgid "Username already exists" +#~ msgstr "اسم المستخدم موجود بالفعل" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "لا يمكن حذف المسؤول الأخير" +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "الرجاء تحديد عميل عند تمكين الوصول إلى بوابة العميل." -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "لا يمكن حذف المستخدم بإدخالات الوقت الموجودة" +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "لا يمكن حذف المستخدم بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Passwords do not match." +#~ msgstr "كلمات المرور غير متطابقة." -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "تم حذف المستخدم \"%(username)s\" بنجاح" +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر تحديث المستخدم بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "تم تمكين القياس عن بعد. شكرا لمساعدتنا على التحسن!" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "تم تحديث المستخدم \"%(username)s\" بنجاح" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "لا يمكن حذف المسؤول الأخير" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "لا يمكن حذف المستخدم بإدخالات الوقت الموجودة" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف المستخدم بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "تم حذف المستخدم \"%(username)s\" بنجاح" -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "تم تمكين القياس عن بعد. شكرا لمساعدتنا على التحسن!" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "المنطقة الزمنية غير صالحة: %(timezone)s" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "تعذر تحديث الإعدادات بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "تم تحديث الإعدادات بنجاح" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "خطأ في حفظ الإعدادات" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "المنطقة الزمنية غير صالحة: %(timezone)s" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر تحديث الإعدادات بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "Settings updated successfully" +#~ msgstr "تم تحديث الإعدادات بنجاح" -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "تعذر تحديث تخطيط PDF بسبب خطأ في قاعدة البيانات." +#~ msgid "Invalid code." +#~ msgstr "" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "تم تحديث تخطيط PDF بنجاح" +#~ msgid "Error saving settings" +#~ msgstr "خطأ في حفظ الإعدادات" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "تعذر إعادة تعيين تخطيط PDF بسبب خطأ في قاعدة البيانات." +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "تعذر تحديث تخطيط PDF بسبب خطأ في قاعدة البيانات." + +#~ msgid "PDF layout updated successfully" +#~ msgstr "تم تحديث تخطيط PDF بنجاح" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "إعادة تعيين تخطيط PDF إلى الإعدادات الافتراضية" +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "تعذر إعادة تعيين تخطيط PDF بسبب خطأ في قاعدة البيانات." -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "PDF layout reset to defaults" +#~ msgstr "إعادة تعيين تخطيط PDF إلى الإعدادات الافتراضية" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Invalid page size" +#~ msgstr "" -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "لم يتم تحديد أي ملف" +#~ msgid "Template not found for this page size" +#~ msgstr "" -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "No file uploaded" +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "No file selected" +#~ msgstr "لم يتم تحديد أي ملف" -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Could not import template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "Template imported successfully" +#~ msgstr "" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "لم يتم تحديد ملف الشعار" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "ملف الصورة غير صالح." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "تعذر حفظ الشعار بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "تم تحميل شعار الشركة بنجاح! يمكنك رؤيته في قسم \"شعار الشركة الحالي\" أعلاه. وسيظهر على الفواتير ومستندات PDF." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "نوع الملف غير صالح. الأنواع المسموح بها: PNG، JPG، JPEG، GIF، SVG، WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "تعذرت إزالة الشعار بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "تمت إزالة شعار الشركة بنجاح. قم بتحميل شعار جديد في القسم أدناه إذا لزم الأمر." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "لا يوجد شعار لإزالته" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "فشل النسخ الاحتياطي: لم يتم إنشاء الأرشيف" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "فشل النسخ الاحتياطي: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "نوع الملف غير صالح" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "لم يتم العثور على ملف النسخ الاحتياطي" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "تم حذف النسخة الاحتياطية \"%(filename)s\" بنجاح" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "فشل حذف النسخة الاحتياطية: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "نوع الملف غير صالح. الرجاء تحديد أرشيف النسخ الاحتياطي بتنسيق .zip." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "لم يتم العثور على ملف النسخ الاحتياطي." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "نوع الملف غير صالح. يرجى تحميل أرشيف النسخ الاحتياطي بتنسيق .zip." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "لم يتم توفير ملف النسخ الاحتياطي" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "بدأت عملية الاستعادة. يمكنك مراقبة التقدم على هذه الصفحة." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "لم يتم تمكين OIDC. اضبط AUTH_METHOD على \"oidc\" أو \"كلاهما\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "لم يتم تكوين OIDC_ISSUER" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "Invoice not found" +#~ msgstr "" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "Quote not found" +#~ msgstr "" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "No logo file selected" +#~ msgstr "لم يتم تحديد ملف الشعار" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "Invalid image file." +#~ msgstr "ملف الصورة غير صالح." -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "تعذر حفظ الشعار بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ تم جلب مستند الاكتشاف بنجاح من %(url)s" +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "تم تحميل شعار الشركة بنجاح! يمكنك " +#~ "رؤيته في قسم \"شعار الشركة الحالي\" " +#~ "أعلاه. وسيظهر على الفواتير ومستندات PDF." -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "نوع الملف غير صالح. الأنواع المسموح بها: PNG، JPG، JPEG، GIF، SVG، WEBP" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ فشل جلب مستند الاكتشاف: %(error)s" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذرت إزالة الشعار بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ خطأ غير متوقع: %(error)s" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "تمت إزالة شعار الشركة بنجاح. قم " +#~ "بتحميل شعار جديد في القسم أدناه " +#~ "إذا لزم الأمر." -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "لا يوجد شعار لإزالته" -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ تم تسجيل عميل OAuth في التطبيق" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ عميل OAuth غير مسجل" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ فشل إنشاء عميل OAuth: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s: %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ %(endpoint)s مفقودة في مستند الاكتشاف" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ النطاق \"%(scope)s\" مدعوم من قبل الموفر" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ قد لا يكون النطاق \"%(scope)s\" مدعومًا من قبل الموفر (المدعوم: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ يدعم الموفر المطالبات: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ تم دعم المطالبة %(claim_type)s \"%(claim_name)s\" التي تم تكوينها" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ المطالبة %(claim_type)s التي تم تكوينها \"%(claim_name)s\" ليست في قائمة المطالبات المدعومة (قد لا تزال تعمل)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "تم الانتهاء من اختبار تكوين OIDC" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "اسم القالب مطلوب" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "اسم القالب مطلوب" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "يوجد قالب بهذا الاسم بالفعل" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "لا يمكن إنشاء قالب البريد الإلكتروني بسبب خطأ في قاعدة البيانات." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "تم إنشاء قالب البريد الإلكتروني بنجاح" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "تعذر تحديث قالب البريد الإلكتروني بسبب خطأ في قاعدة البيانات." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "تم تحديث قالب البريد الإلكتروني بنجاح" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "لا يمكن حذف القالب قيد الاستخدام بواسطة الفواتير أو الفواتير المتكررة" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "لا يمكن حذف قالب البريد الإلكتروني بسبب خطأ في قاعدة البيانات." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "تم حذف قالب البريد الإلكتروني \"%(name)s\" بنجاح" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "Backup failed: archive not created" +#~ msgstr "فشل النسخ الاحتياطي: لم يتم إنشاء الأرشيف" -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "المشروع المحدد غير موجود أو غير نشط" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "رسالة" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "فشل النسخ الاحتياطي: %(error)s" -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "جدول سجلات التدقيق غير موجود. يرجى تشغيل: ترقية قاعدة بيانات القارورة" +#~ msgid "Invalid file type" +#~ msgstr "نوع الملف غير صالح" -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "لم يتم العثور على ملف النسخ الاحتياطي" -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "تم حذف النسخة الاحتياطية \"%(filename)s\" بنجاح" -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "مرحبًا بك مرة أخرى، %(username)s!" +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "فشل حذف النسخة الاحتياطية: %(error)s" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "نوع الملف غير صالح. الرجاء تحديد أرشيف النسخ الاحتياطي بتنسيق .zip." -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Backup file not found." +#~ msgstr "لم يتم العثور على ملف النسخ الاحتياطي." -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "نوع الملف غير صالح. يرجى تحميل أرشيف النسخ الاحتياطي بتنسيق .zip." -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "قم بتعيين كلمة المرور الخاصة بك" +#~ msgid "No backup file provided" +#~ msgstr "لم يتم توفير ملف النسخ الاحتياطي" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "بدأت عملية الاستعادة. يمكنك مراقبة التقدم على هذه الصفحة." -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "رمز إعداد كلمة المرور غير صالح أو منتهية الصلاحية. يرجى طلب واحدة جديدة." +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "لم يتم تمكين OIDC. اضبط AUTH_METHOD على \"oidc\" أو \"كلاهما\"." -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "لم يتم تمكين بوابة العميل لهذا العميل." +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "لم يتم تكوين OIDC_ISSUER" -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "لا يمكن تعيين كلمة المرور بسبب خطأ في قاعدة البيانات." +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ تم جلب مستند الاكتشاف بنجاح من %(url)s" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "تعذر إنشاء حسابك بسبب خطأ في قاعدة البيانات. يرجى المحاولة مرة أخرى في وقت لاحق." +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ فشل جلب مستند الاكتشاف: %(error)s" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "مرحباً! تم إنشاء حسابك." +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ خطأ غير متوقع: %(error)s" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "لم يتم العثور على المستخدم. الرجاء الاتصال بالمسؤول." +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "تعذر تحديث دور حسابك بسبب خطأ في قاعدة البيانات." +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ تم تسجيل عميل OAuth في التطبيق" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "الحساب معطل. الرجاء الاتصال بالمسؤول." +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ عميل OAuth غير مسجل" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ فشل إنشاء عميل OAuth: %(error)s" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s: %(url)s" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ %(endpoint)s مفقودة في مستند الاكتشاف" -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "خطأ غير متوقع أثناء تسجيل الدخول. يرجى المحاولة مرة أخرى أو التحقق من سجلات الخادم." - -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "انتهت جلسة العمل الخاصة بك أو ظلت الصفحة مفتوحة لفترة طويلة جدًا. يرجى المحاولة مرة أخرى." - -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "طريقة المصادقة" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "طريقة المصادقة" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "تعذر إنشاء حسابك بسبب خطأ في قاعدة البيانات." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "طريقة المصادقة" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "تعذر تحديث دور حسابك بسبب خطأ في قاعدة البيانات." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "وداعًا %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "نوع ملف الصورة الرمزية غير صالح. المسموح به: PNG، JPG، JPEG، GIF، WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "فشل حفظ الصورة الرمزية على الخادم." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "تم تحديث الملف الشخصي بنجاح" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "تعذر تحديث ملف التعريف الخاص بك بسبب خطأ في قاعدة البيانات." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ النطاق \"%(scope)s\" مدعوم من قبل الموفر" -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ قد لا يكون النطاق \"%(scope)s\" " +#~ "مدعومًا من قبل الموفر (المدعوم: " +#~ "%(supported)s)" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ يدعم الموفر المطالبات: %(claims)s" -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "✓ تم دعم المطالبة %(claim_type)s \"%(claim_name)s\" التي تم تكوينها" -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ المطالبة %(claim_type)s التي تم " +#~ "تكوينها \"%(claim_name)s\" ليست في قائمة " +#~ "المطالبات المدعومة (قد لا تزال تعمل)" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "OIDC configuration test completed" +#~ msgstr "تم الانتهاء من اختبار تكوين OIDC" -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "تمت إزالة الصورة الرمزية" +#~ msgid "Template name is required" +#~ msgstr "اسم القالب مطلوب" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "فشل في إزالة الصورة الرمزية." +#~ msgid "HTML template content is required" +#~ msgstr "اسم القالب مطلوب" -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "A template with this name already exists" +#~ msgstr "يوجد قالب بهذا الاسم بالفعل" -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Could not create email template due to a database error." +#~ msgstr "لا يمكن إنشاء قالب البريد الإلكتروني بسبب خطأ في قاعدة البيانات." -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Email template created successfully" +#~ msgstr "تم إنشاء قالب البريد الإلكتروني بنجاح" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "لم يتم تكوين الدخول الموحد بعد. الرجاء الاتصال بالمسؤول." +#~ msgid "Could not update email template due to a database error." +#~ msgstr "تعذر تحديث قالب البريد الإلكتروني بسبب خطأ في قاعدة البيانات." -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "لم يتم تكوين الدخول الموحد." +#~ msgid "Email template updated successfully" +#~ msgstr "تم تحديث قالب البريد الإلكتروني بنجاح" -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "لا يمكن حذف القالب قيد الاستخدام بواسطة الفواتير أو الفواتير المتكررة" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "لا يمكن حذف قالب البريد الإلكتروني بسبب خطأ في قاعدة البيانات." -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "فشلت المصادقة: جهة الإصدار أو المطالبة بالموضوع مفقودة. يرجى التحقق من تكوين OIDC." +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "تم حذف قالب البريد الإلكتروني \"%(name)s\" بنجاح" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "حساب المستخدم غير موجود وتم تعطيل التسجيل الذاتي." +#~ msgid "Task name and project are required" +#~ msgstr "" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "تعذر إنشاء حسابك بسبب خطأ في قاعدة البيانات." +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "المشروع المحدد غير موجود أو غير نشط" -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "خطأ غير متوقع أثناء تسجيل الدخول SSO. يرجى المحاولة مرة أخرى أو الاتصال بالدعم." +#~ msgid "message" +#~ msgstr "رسالة" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "ليس لديك حق الوصول إلى هذا المشروع." +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "هذا المشروع ليس لديه ميزانية محددة." +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "جدول سجلات التدقيق غير موجود. يرجى تشغيل: ترقية قاعدة بيانات القارورة" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "تم إنشاء الحدث بنجاح" +#~ msgid "You must change your password before continuing." +#~ msgstr "" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "تم تحديث الحدث بنجاح" +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "ليس لديك الإذن بحذف هذا الحدث." +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "مرحبًا بك مرة أخرى، %(username)s!" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "فشل في حذف الحدث" +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "تم حذف الحدث بنجاح" +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "حدث خطأ أثناء حذف الحدث: %(error)s" +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "تم نقل الحدث بنجاح" +#~ msgid "Reset your TimeTracker password" +#~ msgstr "قم بتعيين كلمة المرور الخاصة بك" -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "تم تغيير حجم الحدث بنجاح" +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "ليس لديك إذن لمشاهدة هذا الحدث." +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "" +#~ "رمز إعداد كلمة المرور غير صالح أو" +#~ " منتهية الصلاحية. يرجى طلب واحدة " +#~ "جديدة." -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "ليس لديك إذن لتعديل هذا الحدث." +#~ msgid "Password reset is not available for this account." +#~ msgstr "لم يتم تمكين بوابة العميل لهذا العميل." -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "لا يمكن أن يكون محتوى الملاحظة فارغًا" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "تمت إضافة الملاحظة بنجاح" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "حدث خطأ أثناء إضافة الملاحظة" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "خطأ في إضافة ملاحظة: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "ملاحظة لا تنتمي إلى هذا العميل" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "ليس لديك الإذن بتعديل هذه الملاحظة" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "حدث خطأ أثناء تحديث الملاحظة" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "تم تحديث الملاحظة بنجاح" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "حدث خطأ أثناء تحديث الملاحظة: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "ليس لديك الإذن بحذف هذه الملاحظة" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "حدث خطأ أثناء حذف الملاحظة" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "تم حذف الملاحظة بنجاح" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "حدث خطأ أثناء حذف الملاحظة: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "يرجى تسجيل الدخول للوصول إلى بوابة العميل." +#~ msgid "Could not reset password due to a database error." +#~ msgstr "لا يمكن تعيين كلمة المرور بسبب خطأ في قاعدة البيانات." -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "تم الرفض" +#~ msgid "Invalid username format" +#~ msgstr "" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 ممنوع" +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "تعذر إنشاء حسابك بسبب خطأ في قاعدة" +#~ " البيانات. يرجى المحاولة مرة أخرى في" +#~ " وقت لاحق." -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "لم يتم العثور على الصفحة" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "مرحباً! تم إنشاء حسابك." -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "لم يتم العثور على المستخدم. الرجاء الاتصال بالمسؤول." -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "الصفحة التي تبحث عنها غير موجودة أو تم نقلها." +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "تعذر تحديث دور حسابك بسبب خطأ في قاعدة البيانات." -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "خطأ في الخادم" +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "الحساب معطل. الرجاء الاتصال بالمسؤول." -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "لم يتم تمكين الوصول إلى بوابة العميل لحسابك." +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "حساب العميل الخاص بك غير نشط." +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" +#~ "خطأ غير متوقع أثناء تسجيل الدخول. " +#~ "يرجى المحاولة مرة أخرى أو التحقق " +#~ "من سجلات الخادم." -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "اسم المستخدم وكلمة المرور مطلوبة." +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "" +#~ "انتهت جلسة العمل الخاصة بك أو ظلت" +#~ " الصفحة مفتوحة لفترة طويلة جدًا. يرجى" +#~ " المحاولة مرة أخرى." -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "اسم المستخدم أو كلمة المرور غير صالحة." +#~ msgid "Invalid authentication code." +#~ msgstr "طريقة المصادقة" -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "مرحبًا %(client_name)s!" +#~ msgid "Two-factor authentication enabled." +#~ msgstr "طريقة المصادقة" -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "لقد تم تسجيل خروجك." +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "تعذر إنشاء حسابك بسبب خطأ في قاعدة البيانات." -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "رمز إعداد كلمة المرور غير صالح أو مفقود." +#~ msgid "Two-factor authentication disabled." +#~ msgstr "طريقة المصادقة" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "رمز إعداد كلمة المرور غير صالح أو منتهية الصلاحية. يرجى طلب واحدة جديدة." +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "تعذر تحديث دور حسابك بسبب خطأ في قاعدة البيانات." -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "كلمة المرور مطلوبة." +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "وداعًا %(username)s!" -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "لا يمكن تعيين كلمة المرور بسبب خطأ في قاعدة البيانات." +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "نوع ملف الصورة الرمزية غير صالح. المسموح به: PNG، JPG، JPEG، GIF، WEBP" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "تم تعيين كلمة المرور بنجاح! يمكنك الآن تسجيل الدخول إلى البوابة." +#~ msgid "Failed to save avatar on server." +#~ msgstr "فشل حفظ الصورة الرمزية على الخادم." -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "غير قادر على تحميل بيانات بوابة العميل." +#~ msgid "Profile updated successfully" +#~ msgstr "تم تحديث الملف الشخصي بنجاح" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "تعذر تحديث ملف التعريف الخاص بك بسبب خطأ في قاعدة البيانات." -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "New password is required" +#~ msgstr "" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Current password is required" +#~ msgstr "" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "لم يتم العثور على الفاتورة." +#~ msgid "Current password is incorrect" +#~ msgstr "" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "لم يتم العثور على الاقتباس." +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Could not update password due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "Avatar removed" +#~ msgstr "تمت إزالة الصورة الرمزية" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "فشل في إزالة الصورة الرمزية." -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "لم يتم تكوين الدخول الموحد بعد. الرجاء الاتصال بالمسؤول." -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "لم يتم تكوين الدخول الموحد." -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "فشلت المصادقة: جهة الإصدار أو المطالبة" +#~ " بالموضوع مفقودة. يرجى التحقق من " +#~ "تكوين OIDC." -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "حساب المستخدم غير موجود وتم تعطيل التسجيل الذاتي." -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "تعذر إنشاء حسابك بسبب خطأ في قاعدة البيانات." -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "خطأ غير متوقع أثناء تسجيل الدخول " +#~ "SSO. يرجى المحاولة مرة أخرى أو " +#~ "الاتصال بالدعم." -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "ليس لديك حق الوصول إلى هذا المشروع." -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "هذا المشروع ليس لديه ميزانية محددة." -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "Event created successfully" +#~ msgstr "تم إنشاء الحدث بنجاح" -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "تم تحديث الحدث بنجاح" -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "ليس لديك الإذن بحذف هذا الحدث." -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Failed to delete event" +#~ msgstr "فشل في حذف الحدث" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Event deleted successfully" +#~ msgstr "تم حذف الحدث بنجاح" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "حدث خطأ أثناء حذف الحدث: %(error)s" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "تم نقل الحدث بنجاح" -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "Event resized successfully" +#~ msgstr "تم تغيير حجم الحدث بنجاح" -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "ليس لديك إذن لمشاهدة هذا الحدث." -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "ليس لديك إذن لتعديل هذا الحدث." -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "غير قادر على تحميل بيانات بوابة العميل." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "بوابة العميل" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "آخر 7 أيام" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "ملخص" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "إجمالي الساعات" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "مدفوع" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "متميز" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "ساعات حسب المشروع" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "مشروع" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "ساعات" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "ساعات قابلة للفوترة" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "النطاق الزمني" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "تاريخ" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "تم الرفض" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "لا يمكن أن يكون محتوى الملاحظة فارغًا" -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "Note added successfully" +#~ msgstr "تمت إضافة الملاحظة بنجاح" -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Error adding note" +#~ msgstr "حدث خطأ أثناء إضافة الملاحظة" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "ليس لديك الإذن بإنشاء عملاء" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "خطأ في إضافة ملاحظة: %(error)s" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "اسم العميل مطلوب" +#~ msgid "Note does not belong to this client" +#~ msgstr "ملاحظة لا تنتمي إلى هذا العميل" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "العميل بهذا الاسم موجود بالفعل" +#~ msgid "You do not have permission to edit this note" +#~ msgstr "ليس لديك الإذن بتعديل هذه الملاحظة" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Error updating note" +#~ msgstr "حدث خطأ أثناء تحديث الملاحظة" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "تنسيق السعر بالساعة غير صالح" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "يجب أن تكون الساعات المدفوعة مسبقًا رقمًا موجبًا." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "يجب أن يكون يوم إعادة ضبط الدفع المسبق بين 1 و28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "Note updated successfully" +#~ msgstr "تم تحديث الملاحظة بنجاح" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "تعذر إنشاء العميل بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Error updating note: %(error)s" +#~ msgstr "حدث خطأ أثناء تحديث الملاحظة: %(error)s" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "ليس لديك حق الوصول إلى هذا المشروع." +#~ msgid "You do not have permission to delete this note" +#~ msgstr "ليس لديك الإذن بحذف هذه الملاحظة" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "ليس لديك الإذن بتحرير العملاء" +#~ msgid "Error deleting note" +#~ msgstr "حدث خطأ أثناء حذف الملاحظة" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "مطلوب اسم مستخدم البوابة عند تمكين الوصول إلى البوابة." +#~ msgid "Note deleted successfully" +#~ msgstr "تم حذف الملاحظة بنجاح" -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "اسم مستخدم البوابة الإلكترونية هذا قيد الاستخدام بالفعل بواسطة عميل آخر." +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "حدث خطأ أثناء حذف الملاحظة: %(error)s" -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "لا يمكن تحديث العميل بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Access Denied" +#~ msgstr "تم الرفض" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "ليس لديك إذن بإرسال رسائل البريد الإلكتروني للبوابة" +#~ msgid "403 Forbidden" +#~ msgstr "403 ممنوع" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "لم يتم تمكين بوابة العميل لهذا العميل." +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "لم يتم تعيين اسم مستخدم المدخل لهذا العميل." +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "لم يتم تعيين عنوان البريد الإلكتروني للعميل. لا يمكن إرسال بريد إلكتروني لإعداد كلمة المرور." +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "تعذر إنشاء الرمز المميز لإعداد كلمة المرور بسبب خطأ في قاعدة البيانات." +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "تم إرسال البريد الإلكتروني الخاص بإعداد كلمة المرور بنجاح إلى %(email)s" +#~ msgid "Page Not Found" +#~ msgstr "لم يتم العثور على الصفحة" -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "لم يتم تكوين خادم البريد الإلكتروني. يرجى تكوين إعدادات البريد الإلكتروني في المسؤول → تكوين البريد الإلكتروني أو تعيين متغير البيئة MAIL_SERVER." +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "فشل في إرسال البريد الإلكتروني لإعداد كلمة المرور. يرجى التحقق من تكوين البريد الإلكتروني وسجلات الخادم للحصول على التفاصيل." +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "الصفحة التي تبحث عنها غير موجودة أو تم نقلها." -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "حدث خطأ أثناء إرسال البريد الإلكتروني: %(error)s" +#~ msgid "Server Error" +#~ msgstr "خطأ في الخادم" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "ليس لديك الإذن بأرشفة العملاء" +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "العميل غير نشط بالفعل" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "ليس لديك الإذن لتنشيط العملاء" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "لم يتم تمكين الوصول إلى بوابة العميل لحسابك." -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "العميل نشط بالفعل" +#~ msgid "Your client account is inactive." +#~ msgstr "حساب العميل الخاص بك غير نشط." -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "ليس لديك الإذن بحذف العملاء" +#~ msgid "Username and password are required." +#~ msgstr "اسم المستخدم وكلمة المرور مطلوبة." -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "Invalid username or password." +#~ msgstr "اسم المستخدم أو كلمة المرور غير صالحة." -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "مرحبًا %(client_name)s!" -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "لا يمكن حذف العميل بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "لم يتم تحديد أي عملاء للحذف" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "لا يمكن حذف العملاء بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "لم يتم حذف أي عملاء" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "ليس لديك الإذن بتغيير حالة العميل" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "لم يتم تحديد أي عملاء" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "الحالة غير صالحة" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "تعذر تحديث حالة العميل بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "لم يتم تحديث أي عملاء" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "لم يتم تقديم أي ملف" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "نوع الملف غير مسموح به" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "يتجاوز حجم الملف الحد الأقصى المسموح به (10 ميغابايت)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "تعذر تحميل المرفق بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "You have been logged out." +#~ msgstr "لقد تم تسجيل خروجك." -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "تم تحميل المرفق بنجاح" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "لم يتم العثور على الملف" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "تعذر حذف المرفق بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "تم حذف المرفق بنجاح" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "لا يمكن أن يكون محتوى التعليق فارغًا" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "يجب أن يرتبط التعليق بمشروع أو مهمة أو عرض أسعار" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "لا يمكن ربط التعليق بأهداف متعددة" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "تعليق الوالدين غير صالح" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "تمت إضافة التعليق بنجاح" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "حدث خطأ أثناء إضافة التعليق" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "خطأ في إضافة التعليق: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "ليس لديك الإذن لتحرير هذا التعليق" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "تم تحديث التعليق بنجاح" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "حدث خطأ أثناء تحديث التعليق: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "ليس لديك الإذن بحذف هذا التعليق" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "تم حذف التعليق بنجاح" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "حدث خطأ أثناء حذف التعليق: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "رمز إعداد كلمة المرور غير صالح أو مفقود." -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "" +#~ "رمز إعداد كلمة المرور غير صالح أو" +#~ " منتهية الصلاحية. يرجى طلب واحدة " +#~ "جديدة." -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "ليس لديك الإذن بحذف هذا المرفق" +#~ msgid "Password is required." +#~ msgstr "كلمة المرور مطلوبة." -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Could not set password due to a database error." +#~ msgstr "لا يمكن تعيين كلمة المرور بسبب خطأ في قاعدة البيانات." -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "تم تعيين كلمة المرور بنجاح! يمكنك الآن تسجيل الدخول إلى البوابة." -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "تم إنشاء جهة الاتصال بنجاح" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "خطأ في إنشاء جهة الاتصال: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "تم تحديث جهة الاتصال بنجاح" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "حدث خطأ أثناء تحديث جهة الاتصال: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "تم حذف جهة الاتصال بنجاح" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "خطأ في حذف جهة الاتصال: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "تم تعيين جهة الاتصال كجهة أساسية" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "خطأ في تعيين جهة الاتصال الأساسية: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "تم تسجيل الإتصال بنجاح" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "خطأ في تسجيل الاتصال: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "غير قادر على تحميل بيانات بوابة العميل." -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "التسمية مطلوبة" +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "Invoice not found." +#~ msgstr "لم يتم العثور على الفاتورة." -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "Quote not found." +#~ msgstr "لم يتم العثور على الاقتباس." -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "قيمة الصفقة غير صالحة" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "تم إنشاء الصفقة بنجاح" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "خطأ في إنشاء الصفقة: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "تم تحديث الصفقة بنجاح" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "حدث خطأ أثناء تحديث الصفقة: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "تم إغلاق الصفقة كما فاز" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "خطأ في إغلاق الصفقة: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "تم إغلاق الصفقة على أنها خاسرة" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "تم تسجيل النشاط بنجاح" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "خطأ في نشاط التسجيل: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "اسم الفئة مطلوب" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "تم إنشاء فئة النفقات بنجاح" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "حدث خطأ أثناء إنشاء فئة المصروفات" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "تم تحديث فئة المصروفات بنجاح" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "حدث خطأ أثناء تحديث فئة المصروفات" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "تم إلغاء تنشيط فئة المصروفات بنجاح" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "حدث خطأ أثناء إلغاء تنشيط فئة المصروفات" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "العنوان مطلوب" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "الفئة مطلوبة" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "المبلغ مطلوب" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "تاريخ النفقات مطلوب" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "تنسيق التاريخ غير صالح" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "تنسيق المبلغ غير صالح" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "تم إنشاء النفقات بنجاح" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "حدث خطأ أثناء إنشاء النفقات" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "ليس لديك إذن لعرض هذه النفقات" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "ليس لديك إذن لتعديل هذه النفقات" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "لا يمكن تعديل النفقات المعتمدة أو المدفوعة" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "يرجى ملء جميع الحقول المطلوبة" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "تم تحديث المصروفات بنجاح" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "حدث خطأ أثناء تحديث النفقات" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "ليس لديك إذن بحذف هذه النفقات" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "لا يمكن حذف النفقات المعتمدة أو المفوترة" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "تم حذف النفقة بنجاح" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "حدث خطأ أثناء حذف النفقات" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "لم يتم تحديد أي نفقات للحذف" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "لا يمكن حذف النفقات بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "تم حذف %(count)d من النفقات بنجاح" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "تم تخطي %(count)d من النفقات: %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "لم يتم تحديد أي نفقات" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "قيمة الحالة غير صالحة" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "تعذر تحديث النفقات بسبب خطأ في قاعدة البيانات" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "تم بنجاح تحديث %(count)d من المصروفات إلى %(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "تم تخطي %(count)d من النفقات: %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "تم تخطي %(count)d من النفقات (بدون إذن)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "يمكن للمسؤولين فقط الموافقة على النفقات" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "يمكن الموافقة على النفقات المعلقة فقط" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "تمت الموافقة على المصروفات بنجاح" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "خطأ في الموافقة على النفقات" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "يمكن للمسؤولين فقط رفض النفقات" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "يمكن رفض النفقات المعلقة فقط" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "سبب الرفض مطلوب" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "تم رفض النفقة" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "خطأ في رفض النفقات" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "يمكن للمسؤولين فقط وضع علامة على النفقات على أنها مستردة" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "يمكن وضع علامة على النفقات المعتمدة فقط على أنها مسددة" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "لم يتم وضع علامة على هذه النفقات على أنها قابلة للسداد" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "تم وضع علامة على النفقات على أنها تم سدادها" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "حدث خطأ أثناء وضع علامة على النفقات على أنها مستردة" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "التعرف الضوئي على الحروف غير متوفر. يرجى الاتصال بالمسؤول الخاص بك." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "نوع الملف غير صالح. الأنواع المسموح بها: png، jpg، jpeg، gif، pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "تم فحص الإيصال بنجاح! يمكنك الآن إنشاء حساب باستخدام البيانات المستخرجة." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "خطأ في مسح الإيصال. يرجى المحاولة مرة أخرى أو إدخال النفقات يدويًا." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "لم يتم العثور على بيانات الإيصال الممسوحة ضوئيًا. يرجى مسح الإيصال أولاً." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "تم إنشاء النفقات بنجاح من الإيصال الممسوح ضوئيًا" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "لم يتم تعيين أذونات." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "غير قادر على تحميل بيانات بوابة العميل." -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "Client Report" +#~ msgstr "بوابة العميل" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "آخر 7 أيام" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Summary" +#~ msgstr "ملخص" -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "إجمالي الساعات" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Paid" +#~ msgstr "مدفوع" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "متميز" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "ساعات حسب المشروع" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Project" +#~ msgstr "مشروع" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Hours" +#~ msgstr "ساعات" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Billable Hours" +#~ msgstr "ساعات قابلة للفوترة" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "Time by Date" +#~ msgstr "النطاق الزمني" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "Date" +#~ msgstr "تاريخ" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "REST API للتكاملات" +#~ msgid "Access denied" +#~ msgstr "تم الرفض" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "اسم العميل مطلوب" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "ليس لديك الإذن بإنشاء عملاء" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "اسم العميل مطلوب" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "العميل بهذا الاسم موجود بالفعل" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "تنسيق السعر بالساعة غير صالح" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "يجب أن تكون الساعات المدفوعة مسبقًا رقمًا موجبًا." -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "يجب أن يكون يوم إعادة ضبط الدفع المسبق بين 1 و28." -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر إنشاء العميل بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "ليس لديك حق الوصول إلى هذا المشروع." -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "ليس لديك الإذن بتحرير العملاء" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "مطلوب اسم مستخدم البوابة عند تمكين الوصول إلى البوابة." -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "This portal username is already in use by another client." +#~ msgstr "" +#~ "اسم مستخدم البوابة الإلكترونية هذا قيد" +#~ " الاستخدام بالفعل بواسطة عميل آخر." -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن تحديث العميل بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "ليس لديك إذن بإرسال رسائل البريد الإلكتروني للبوابة" -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "لم يتم تمكين بوابة العميل لهذا العميل." -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "Portal username is not set for this client." +#~ msgstr "لم يتم تعيين اسم مستخدم المدخل لهذا العميل." + +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "لم يتم تعيين عنوان البريد الإلكتروني " +#~ "للعميل. لا يمكن إرسال بريد إلكتروني " +#~ "لإعداد كلمة المرور." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "تعذر إنشاء الرمز المميز لإعداد كلمة المرور بسبب خطأ في قاعدة البيانات." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "تم إرسال البريد الإلكتروني الخاص بإعداد كلمة المرور بنجاح إلى %(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "لم يتم تكوين خادم البريد الإلكتروني. " +#~ "يرجى تكوين إعدادات البريد الإلكتروني في" +#~ " المسؤول → تكوين البريد الإلكتروني أو" +#~ " تعيين متغير البيئة MAIL_SERVER." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "فشل في إرسال البريد الإلكتروني لإعداد" +#~ " كلمة المرور. يرجى التحقق من تكوين" +#~ " البريد الإلكتروني وسجلات الخادم للحصول " +#~ "على التفاصيل." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "حدث خطأ أثناء إرسال البريد الإلكتروني: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "ليس لديك الإذن بأرشفة العملاء" + +#~ msgid "Client is already inactive" +#~ msgstr "العميل غير نشط بالفعل" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "ليس لديك الإذن لتنشيط العملاء" + +#~ msgid "Client is already active" +#~ msgstr "العميل نشط بالفعل" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "ليس لديك الإذن بحذف العملاء" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف العميل بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." + +#~ msgid "No clients selected for deletion" +#~ msgstr "لم يتم تحديد أي عملاء للحذف" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف العملاء بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." + +#~ msgid "No clients were deleted" +#~ msgstr "لم يتم حذف أي عملاء" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "ليس لديك الإذن بتغيير حالة العميل" + +#~ msgid "No clients selected" +#~ msgstr "لم يتم تحديد أي عملاء" + +#~ msgid "Invalid status" +#~ msgstr "الحالة غير صالحة" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "تعذر تحديث حالة العميل بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." + +#~ msgid "No clients were updated" +#~ msgstr "لم يتم تحديث أي عملاء" + +#~ msgid "No file provided" +#~ msgstr "لم يتم تقديم أي ملف" + +#~ msgid "File type not allowed" +#~ msgstr "نوع الملف غير مسموح به" + +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "يتجاوز حجم الملف الحد الأقصى المسموح به (10 ميغابايت)" -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "تعذر تحميل المرفق بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "تم تحميل المرفق بنجاح" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "File not found" +#~ msgstr "لم يتم العثور على الملف" -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "تعذر حذف المرفق بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "تم حذف المرفق بنجاح" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "لا يمكن أن يكون محتوى التعليق فارغًا" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "يجب أن يرتبط التعليق بمشروع أو مهمة أو عرض أسعار" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "لا يمكن ربط التعليق بأهداف متعددة" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "تعليق الوالدين غير صالح" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "تمت إضافة التعليق بنجاح" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "حدث خطأ أثناء إضافة التعليق" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "خطأ في إضافة التعليق: %(error)s" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "ليس لديك الإذن لتحرير هذا التعليق" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "Comment updated successfully" +#~ msgstr "تم تحديث التعليق بنجاح" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "حدث خطأ أثناء تحديث التعليق: %(error)s" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "ليس لديك الإذن بحذف هذا التعليق" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "تم حذف التعليق بنجاح" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "حدث خطأ أثناء حذف التعليق: %(error)s" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "ليس لديك الإذن بحذف هذا المرفق" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "تم إنشاء جهة الاتصال بنجاح" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "خطأ في إنشاء جهة الاتصال: %(error)s" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "متقدم" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "مراجعة" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "تم تحديث جهة الاتصال بنجاح" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "حدث خطأ أثناء تحديث جهة الاتصال: %(error)s" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "تم حذف جهة الاتصال بنجاح" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "خطأ في حذف جهة الاتصال: %(error)s" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "شركة" +#~ msgid "Contact set as primary" +#~ msgstr "تم تعيين جهة الاتصال كجهة أساسية" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "خطأ في تعيين جهة الاتصال الأساسية: %(error)s" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "تم تسجيل الإتصال بنجاح" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "خطافات الويب" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "خطأ في تسجيل الاتصال: %(error)s" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "المشاريع" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "Label is required" +#~ msgstr "التسمية مطلوبة" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "SKU موجود بالفعل. الرجاء استخدام SKU مختلف." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "تم إنشاء عنصر المخزون بنجاح." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "خطأ في إنشاء عنصر المخزون: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "تم تحديث عنصر المخزون بنجاح." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "حدث خطأ أثناء تحديث عنصر المخزون: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "لا يمكن حذف عنصر المخزون الذي يحتوي على المخزون الحالي أو سجل الحركة." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "تم حذف عنصر المخزون بنجاح." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "حدث خطأ أثناء حذف عنصر المخزون: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "رمز المستودع موجود بالفعل. الرجاء استخدام رمز مختلف." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "تم إنشاء المستودع بنجاح." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "خطأ في إنشاء المستودع: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "تم تحديث المستودع بنجاح." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "خطأ في تحديث المستودع: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "لا يمكن حذف المستودع الذي يحتوي على مخزون موجود. يرجى نقل أو إزالة جميع الأسهم أولا." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "تم حذف المستودع بنجاح." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "خطأ في حذف المستودع: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "قيمة الصفقة غير صالحة" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "تم إنشاء الصفقة بنجاح" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "خطأ في إنشاء الصفقة: %(error)s" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "تم تحديث الصفقة بنجاح" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "حدث خطأ أثناء تحديث الصفقة: %(error)s" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "تم إغلاق الصفقة كما فاز" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "خطأ في إغلاق الصفقة: %(error)s" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "تم إغلاق الصفقة على أنها خاسرة" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "تم تسجيل النشاط بنجاح" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "خطأ في نشاط التسجيل: %(error)s" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "اسم الفئة مطلوب" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Expense category created successfully" +#~ msgstr "تم إنشاء فئة النفقات بنجاح" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "حدث خطأ أثناء إنشاء فئة المصروفات" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "تم تحديث فئة المصروفات بنجاح" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Error updating expense category" +#~ msgstr "حدث خطأ أثناء تحديث فئة المصروفات" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "تم تسجيل حركة السهم بنجاح" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "تم إلغاء تنشيط فئة المصروفات بنجاح" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Error deactivating expense category" +#~ msgstr "حدث خطأ أثناء إلغاء تنشيط فئة المصروفات" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "خطأ في تسجيل حركة المخزون: %(error)s" +#~ msgid "Title is required" +#~ msgstr "العنوان مطلوب" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "يجب أن تكون مستودعات المصدر والوجهة مختلفة." +#~ msgid "Category is required" +#~ msgstr "الفئة مطلوبة" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "عدم كفاية المخزون المتوفر في المستودع المصدر." +#~ msgid "Amount is required" +#~ msgstr "المبلغ مطلوب" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "Expense date is required" +#~ msgstr "تاريخ النفقات مطلوب" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "تنسيق التاريخ غير صالح" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "تنسيق المبلغ غير صالح" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "تمت عملية نقل المخزون بنجاح." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "خطأ في إنشاء النقل: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "تم تسجيل تعديل المخزون بنجاح." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "تعديل تسجيل الخطأ: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "تم الحجز بنجاح." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "خطأ في إتمام الحجز: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "تم إلغاء الحجز بنجاح." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "خطأ في إلغاء الحجز: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "تم إنشاء المورد بنجاح." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "خطأ في إنشاء المورد: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "رمز المورد موجود بالفعل. الرجاء استخدام رمز مختلف." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "تم تحديث المورد بنجاح." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "حدث خطأ أثناء تحديث المورد: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "لا يمكن حذف المورد مع عناصر المخزون المرتبطة. قم بإزالة العناصر أولاً." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "تم حذف المورد بنجاح." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "خطأ في حذف المورد: %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "العنوان مطلوب" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "لم يتم العثور على الموردين." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "اسم الدور مطلوب" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "تعذر إنشاء الدور بسبب خطأ في قاعدة البيانات" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "تم إنشاء أمر الشراء بنجاح." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "خطأ في إنشاء أمر الشراء: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "لا يمكن تعديل أمر الشراء الذي تم استلامه." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "تعذر تحديث الدور بسبب خطأ في قاعدة البيانات" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "تم تحديث أمر الشراء بنجاح." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "خطأ في تحديث أمر الشراء: %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "تعذر تحديث أدوار المستخدم بسبب خطأ في قاعدة البيانات" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "تم وضع علامة على أمر الشراء كمرسل." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "خطأ في إرسال أمر الشراء: %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "تعذر إنشاء الدور بسبب خطأ في قاعدة البيانات" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "تم إلغاء أمر الشراء بنجاح." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "خطأ في إلغاء أمر الشراء: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "لا يمكن حذف أمر الشراء الذي تم استلامه. قم بإلغائها بدلاً من ذلك." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "تعذر حذف الدور بسبب خطأ في قاعدة البيانات" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "تم حذف أمر الشراء بنجاح." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "خطأ في حذف أمر الشراء: %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "تعذر إنشاء الدور بسبب خطأ في قاعدة البيانات" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "تم وضع علامة على أمر الشراء كمستلم وتم تحديث المخزون." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "خطأ في استلام أمر الشراء: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "تم إنشاء النفقات بنجاح" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "حدث خطأ أثناء إنشاء النفقات" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "ليس لديك إذن لعرض هذه النفقات" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "ليس لديك إذن لتعديل هذه النفقات" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "مطلوب المشروع واسم العميل وتاريخ الاستحقاق" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "لا يمكن تعديل النفقات المعتمدة أو المدفوعة" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "تنسيق تاريخ الاستحقاق غير صالح" +#~ msgid "Please fill in all required fields" +#~ msgstr "يرجى ملء جميع الحقول المطلوبة" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "تنسيق معدل الضريبة غير صالح" +#~ msgid "Expense updated successfully" +#~ msgstr "تم تحديث المصروفات بنجاح" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "لم يتم العثور على المشروع المحدد" +#~ msgid "Error updating expense" +#~ msgstr "حدث خطأ أثناء تحديث النفقات" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "تعذر إنشاء فاتورة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "ليس لديك إذن بحذف هذه النفقات" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "ليس لديك الإذن لعرض هذه الفاتورة" +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "لا يمكن حذف النفقات المعتمدة أو المفوترة" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Expense deleted successfully" +#~ msgstr "تم حذف النفقة بنجاح" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "حدث خطأ أثناء حذف النفقات" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "لم يتم تحديد أي نفقات للحذف" -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف النفقات بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "تم حذف %(count)d من النفقات بنجاح" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "تم تخطي %(count)d من النفقات: %(errors)s" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "لم يتم تحديد أي نفقات" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "ليس لديك الإذن بتعديل هذه الفاتورة" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "تحذير: تعذر حجز المخزون للعنصر %(item)s: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "تعذر تحديث الفاتورة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "تم تحديث الفاتورة بنجاح" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "تحذير: تعذر تقليل مخزون العنصر %(item)s: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "ليس لديك الإذن بحذف هذه الفاتورة" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "يمكن تحرير مسودة عروض الأسعار فقط" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "تعذر حذف الفاتورة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "لم يتم تحديد فواتير للحذف" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "لا يمكن حذف الفواتير بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "لم يتم تحديد أي فواتير" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "تعذر تحديث الفواتير بسبب خطأ في قاعدة البيانات" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "لم يتم تحديد إدخالات الوقت أو التكاليف أو النفقات أو السلع الإضافية" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "تعذر إنشاء العناصر بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "تم إنشاء عناصر الفاتورة بنجاح من إدخالات الوقت والتكاليف" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "تم تطبيق %(hours)s من الساعات المدفوعة مسبقًا لـ %(client)s قبل تجاوز الفواتير." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "ليس لديك الإذن بتصدير هذه الفاتورة" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Invalid status value" +#~ msgstr "قيمة الحالة غير صالحة" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "تعذر تحديث النفقات بسبب خطأ في قاعدة البيانات" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "تم بنجاح تحديث %(count)d من المصروفات إلى %(status)s" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "تم تخطي %(count)d من النفقات: %(errors)s" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "تم تخطي %(count)d من النفقات (بدون إذن)" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "يمكن للمسؤولين فقط الموافقة على النفقات" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "يمكن الموافقة على النفقات المعلقة فقط" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "فشل إنشاء ملف PDF: %(err)s. فشل الإجراء الاحتياطي أيضًا: %(fb)s" +#~ msgid "Expense approved successfully" +#~ msgstr "تمت الموافقة على المصروفات بنجاح" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "ليس لديك الإذن بتكرار هذه الفاتورة" +#~ msgid "Error approving expense" +#~ msgstr "خطأ في الموافقة على النفقات" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "لا يمكن تكرار الفاتورة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Only administrators can reject expenses" +#~ msgstr "يمكن للمسؤولين فقط رفض النفقات" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "تعذر إنهاء الفاتورة المكررة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "يمكن رفض النفقات المعلقة فقط" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Rejection reason is required" +#~ msgstr "سبب الرفض مطلوب" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "تم رفض النفقة" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "خطأ في رفض النفقات" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "يمكن للمسؤولين فقط وضع علامة على النفقات على أنها مستردة" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "يمكن وضع علامة على النفقات المعتمدة فقط على أنها مسددة" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "لم يتم وضع علامة على هذه النفقات على أنها قابلة للسداد" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "تم وضع علامة على النفقات على أنها تم سدادها" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "حدث خطأ أثناء وضع علامة على النفقات على أنها مستردة" -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "تم وضع علامة على الفاتورة كمرسلة" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "التعرف الضوئي على الحروف غير متوفر. يرجى الاتصال بالمسؤول الخاص بك." -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "تم وضع علامة على الفاتورة بأنها مدفوعة" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "نوع الملف غير صالح. الأنواع المسموح بها: png، jpg، jpeg، gif، pdf" -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "تم فحص الإيصال بنجاح! يمكنك الآن " +#~ "إنشاء حساب باستخدام البيانات المستخرجة." -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "خطأ في مسح الإيصال. يرجى المحاولة مرة أخرى أو إدخال النفقات يدويًا." -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "لم يتم العثور على بيانات الإيصال " +#~ "الممسوحة ضوئيًا. يرجى مسح الإيصال أولاً." -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "تم إنشاء النفقات بنجاح من الإيصال الممسوح ضوئيًا" -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "Permission denied." +#~ msgstr "لم يتم تعيين أذونات." -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "المفتاح والتسمية مطلوبان" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "تعذر إنشاء عمود بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "تعذر تحديث العمود بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "لا يمكن حذف أعمدة النظام" +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "لا يمكن حذف العمود بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "لا يمكن تبديل العمود بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "REST API للتكاملات" -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "Linear API key is required." +#~ msgstr "اسم العميل مطلوب" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "توقف الموقّت بنجاح" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "تم إنشاء العميل المحتمل بنجاح" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "خطأ في إنشاء العميل المتوقع: %(error)s" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "تم تحديث العميل المتوقع بنجاح" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "حدث خطأ أثناء تحديث العميل المتوقع: %(error)s" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "لقد تم تحويل الرصاص بالفعل" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "تم تحويل العميل المحتمل إلى عميل بنجاح" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "خطأ في تحويل العميل المتوقع: %(error)s" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "تم تحويل الرصاص للتعامل بنجاح" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "تم وضع علامة على العميل المحتمل كمفقود" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "خطأ في وضع علامة على العميل المتوقع كمفقود: %(error)s" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "تم إنشاء إدخال الأميال بنجاح" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "خطأ في إنشاء إدخال الأميال" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "ليس لديك إذن لعرض إدخال الأميال هذا" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "ليس لديك الإذن بتعديل إدخال الأميال هذا" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "لا يمكن تعديل إدخالات الأميال المعتمدة أو التي تم تعويضها" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "تم تحديث إدخال الأميال بنجاح" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "حدث خطأ أثناء تحديث إدخال الأميال" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "ليس لديك الإذن بحذف إدخال الأميال هذا" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "تم حذف إدخال الأميال بنجاح" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "حدث خطأ أثناء حذف إدخال الأميال" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "لم يتم تحديد إدخالات الأميال للحذف" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "تعذر حذف إدخالات الأميال بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "تم بنجاح حذف %(count)d عدد الأميال entr%(plural)s" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "تم تخطي %(count)d عدد الأميال entr%(plural)s: %(errors)s" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "لم يتم تحديد إدخالات الأميال" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "تعذر تحديث إدخالات الأميال بسبب خطأ في قاعدة البيانات" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "تم بنجاح تحديث %(count)d عدد الأميال entr%(plural)s إلى %(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "تم تخطي %(count)d من الأميال entr%(plural)s (بدون إذن)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "يمكن للمسؤولين فقط الموافقة على إدخالات الأميال" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "يمكن الموافقة على إدخالات الأميال المعلقة فقط" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "تمت الموافقة على إدخال الأميال بنجاح" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "خطأ في الموافقة على إدخال الأميال" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "يمكن للمسؤولين فقط رفض إدخالات الأميال" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "يمكن رفض إدخالات الأميال المعلقة فقط" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "تم رفض إدخال الأميال" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "خطأ في رفض إدخال الأميال" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "يمكن للمسؤولين فقط وضع علامة على إدخالات الأميال على أنها تم تعويضها" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "يمكن وضع علامة على إدخالات الأميال المعتمدة فقط على أنها تم تعويضها" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "تم وضع علامة على إدخال الأميال على أنه تم تعويضه" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "حدث خطأ أثناء وضع علامة على إدخال الأميال على أنه تم تعويضه" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "مطلوب عنوان الاقتباس والعميل" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "لم يتم العثور على العميل المحدد" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "تنسيق المبلغ الإجمالي غير صالح" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "تنسيق الساعات المقدرة غير صالح" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "تنسيق التاريخ غير صالح صالح حتى" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "تعذر إنشاء عرض أسعار بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "تم إنشاء الاقتباس بنجاح" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "يمكن تحرير مسودة عروض الأسعار فقط" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "لا يمكن تحديث الاقتباس بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "تم تحديث الاقتباس بنجاح" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "يمكن إرسال مسودة عروض الأسعار فقط" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "تعذر إرسال عرض الأسعار بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "تم إرسال الاقتباس بنجاح" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "لا يمكن قبول هذا الاقتباس" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "تعذر قبول الاقتباس: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "لا يمكن قبول عرض الأسعار بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "تم قبول عرض الأسعار وتم إنشاء المشروع بنجاح" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "لا يمكن رفض هذا الاقتباس" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "تعذر رفض الاقتباس: %(error)s" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "لا يمكن رفض الاقتباس بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "تم رفض الاقتباس" +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "يمكن حذف مسودة علامات الاقتباس أو علامات الاقتباس المرفوضة فقط" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "تعذر حذف الاقتباس بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "تم حذف الاقتباس بنجاح" +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Advanced" +#~ msgstr "متقدم" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "Review" +#~ msgstr "مراجعة" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "غير صالح من تنسيق التاريخ" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "تنسيق التاريخ غير صالح" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "ليس لديك إذن لعرض هذه الدفعة" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "مطلوب الفاتورة والمبلغ وتاريخ الدفع" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "لم يتم العثور على الفاتورة المحددة" +#~ msgid "Company" +#~ msgstr "شركة" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "ليس لديك الإذن بإضافة دفعات إلى هذه الفاتورة" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "يجب أن يكون مبلغ الدفع أكبر من الصفر" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "مبلغ الدفع غير صالح" +#~ msgid "Webhooks" +#~ msgstr "خطافات الويب" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "تنسيق تاريخ الدفع غير صالح" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "لا يمكن أن تكون رسوم البوابة سالبة" +#~ msgid "Projects" +#~ msgstr "المشاريع" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "مبلغ رسوم البوابة غير صالح" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "تعذر إنشاء الدفع بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "ليس لديك إذن لتعديل هذه الدفعة" +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "تعذر تحديث الدفع بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "تم تحديث الدفع بنجاح" +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "ليس لديك إذن بحذف هذه الدفعة" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "تعذر حذف الدفعة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "تم حذف الدفعة بنجاح" +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "لم يتم تحديد أي دفعات للحذف" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "تعذر حذف الدفعات بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "لم يتم تحديد أي دفعات" +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "SKU موجود بالفعل. الرجاء استخدام SKU مختلف." -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "لا يمكن تحديث المدفوعات بسبب خطأ في قاعدة البيانات" +#~ msgid "Stock item created successfully." +#~ msgstr "تم إنشاء عنصر المخزون بنجاح." -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "يجب أن يكون تاريخ البدء قبل تاريخ الانتهاء" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "خطأ في إنشاء عنصر المخزون: %(error)s" -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "لم يتم العثور على معدل البدل اليومي لهذا الموقع. يرجى تكوين الأسعار أولا." +#~ msgid "Stock item updated successfully." +#~ msgstr "تم تحديث عنصر المخزون بنجاح." -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "تم إنشاء المطالبة بالبدل اليومي بنجاح" +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "حدث خطأ أثناء تحديث عنصر المخزون: %(error)s" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "حدث خطأ أثناء إنشاء المطالبة بالبدل اليومي" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "لا يمكن حذف عنصر المخزون الذي يحتوي على المخزون الحالي أو سجل الحركة." -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "ليس لديك إذن لعرض مطالبة البدل اليومي هذه" +#~ msgid "Stock item deleted successfully." +#~ msgstr "تم حذف عنصر المخزون بنجاح." -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "ليس لديك إذن لتعديل مطالبة البدل اليومي هذه" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "حدث خطأ أثناء حذف عنصر المخزون: %(error)s" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "لا يمكن تعديل مطالبات البدل اليومي المعتمدة أو المدفوعة" +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "رمز المستودع موجود بالفعل. الرجاء استخدام رمز مختلف." -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "تم تحديث مطالبة البدل اليومي بنجاح" +#~ msgid "Warehouse created successfully." +#~ msgstr "تم إنشاء المستودع بنجاح." -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "حدث خطأ أثناء تحديث مطالبة البدل اليومي" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "ليس لديك إذن بحذف مطالبة البدل اليومي هذه" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "تم حذف مطالبة البدل اليومي بنجاح" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "حدث خطأ أثناء حذف المطالبة بالبدل اليومي" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "لم يتم تحديد أي مطالبات بدل يومي للحذف" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "تعذر حذف مطالبات البدل اليومي بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "تم حذف %(count)d بنجاح من المطالبات المتعلقة بالبدل اليومي" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "تم تخطي %(count)d مطالبة (مطالبات) البدل اليومي: %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "لم يتم تحديد مطالبات البدل اليومي" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "تعذر تحديث مطالبات البدل اليومي بسبب خطأ في قاعدة البيانات" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "تم بنجاح تحديث %(count)d مطالبة (مطالبات) البدل اليومي إلى %(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "تم تخطي %(count)d من المطالبات المتعلقة بالبدل اليومي (بدون إذن)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "يمكن للمسؤولين فقط الموافقة على مطالبات البدل اليومي" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "يمكن الموافقة فقط على مطالبات البدل اليومي المعلقة" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "تمت الموافقة على المطالبة بالبدل اليومي بنجاح" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "حدث خطأ أثناء الموافقة على المطالبة بالبدل اليومي" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "يمكن للمسؤولين فقط رفض مطالبات البدل اليومي" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "يمكن رفض مطالبات البدل اليومي المعلقة فقط" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "تم رفض المطالبة بالبدل اليومي" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "حدث خطأ أثناء رفض المطالبة بالبدل اليومي" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "تم إنشاء معدل البدل اليومي بنجاح" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "حدث خطأ أثناء إنشاء معدل البدل اليومي" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "تم تحديث معدل البدل اليومي بنجاح" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "حدث خطأ أثناء تحديث معدل البدل اليومي" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "لا يمكن حذف السعر: يتم استخدامه بواسطة %(count)d من المطالبات (المطالبات) لكل بدل يومي. قم بإلغاء تنشيطه بدلاً من ذلك." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "تم حذف معدل البدل اليومي بنجاح" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "حدث خطأ أثناء حذف معدل البدل اليومي" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "ليس لديك إذن للوصول إلى هذه الصفحة" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "اسم الدور مطلوب" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "يوجد دور بهذا الاسم بالفعل" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "تعذر إنشاء الدور بسبب خطأ في قاعدة البيانات" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "تم إنشاء الدور بنجاح" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "خطأ في إنشاء المستودع: %(error)s" -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "تعذر تحديث الدور بسبب خطأ في قاعدة البيانات" +#~ msgid "Warehouse updated successfully." +#~ msgstr "تم تحديث المستودع بنجاح." -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "تم تحديث الدور بنجاح" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "خطأ في تحديث المستودع: %(error)s" -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "ليس لديك الإذن للقيام بهذا الإجراء" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "لا يمكن حذف المستودع الذي يحتوي " +#~ "على مخزون موجود. يرجى نقل أو إزالة" +#~ " جميع الأسهم أولا." -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "لا يمكن حذف أدوار النظام" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "تم حذف المستودع بنجاح." -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "لا يمكن حذف الدور الذي تم تعيينه للمستخدمين. يرجى إعادة تعيين المستخدمين أولاً." +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "خطأ في حذف المستودع: %(error)s" -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "تعذر حذف الدور بسبب خطأ في قاعدة البيانات" +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "تم حذف الدور \"%(name)s\" بنجاح" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "تعذر تحديث أدوار المستخدم بسبب خطأ في قاعدة البيانات" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "تم تحديث أدوار المستخدم بنجاح" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "مطلوب اسم المشروع والعميل" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "مبلغ الميزانية غير صالح" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "النسبة المئوية لحد الميزانية غير صالحة (0-100)" +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "لم يتم العثور على المشروع" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "ليس لديك الإذن بأرشفة المشاريع" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "تمت أرشفة المشروع بالفعل" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "ليس لديك إذن لإلغاء أرشفة المشاريع" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "تم تسجيل حركة السهم بنجاح" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "المشروع نشط بالفعل" +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "ليس لديك الإذن بإلغاء تنشيط المشاريع" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "خطأ في تسجيل حركة المخزون: %(error)s" -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "المشروع غير نشط بالفعل" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "يجب أن تكون مستودعات المصدر والوجهة مختلفة." -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "ليس لديك الإذن لتفعيل المشاريع" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "عدم كفاية المخزون المتوفر في المستودع المصدر." -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "لا يمكن حذف المشروع بإدخالات الوقت الموجودة" +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "لا يمكن حذف المشروع بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "ليس لديك الإذن بحذف المشاريع" +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "لم يتم تحديد أي مشاريع للحذف" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "تمت عملية نقل المخزون بنجاح." -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "لا يمكن حذف المشاريع بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "خطأ في إنشاء النقل: %(error)s" -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "لم يتم حذف أي مشاريع" +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "تم تسجيل تعديل المخزون بنجاح." -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "ليس لديك الإذن بتغيير حالة المشروع" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "تعديل تسجيل الخطأ: %(error)s" -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "لم يتم اختيار أي مشاريع" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "تم الحجز بنجاح." -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "تعذر تحديث حالة المشروع بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "خطأ في إتمام الحجز: %(error)s" -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "لم يتم تحديث أي مشاريع" +#~ msgid "Reservation cancelled successfully." +#~ msgstr "تم إلغاء الحجز بنجاح." -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "المشروع موجود بالفعل في المفضلة" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "خطأ في إلغاء الحجز: %(error)s" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "تمت إضافة المشروع إلى المفضلة" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "فشل في إضافة المشروع إلى المفضلة" +#~ msgid "Supplier created successfully." +#~ msgstr "تم إنشاء المورد بنجاح." -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "المشروع ليس في المفضلة" +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "خطأ في إنشاء المورد: %(error)s" -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "تمت إزالة المشروع من المفضلة" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "رمز المورد موجود بالفعل. الرجاء استخدام رمز مختلف." -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "فشل في إزالة المشروع من المفضلة" +#~ msgid "Supplier updated successfully." +#~ msgstr "تم تحديث المورد بنجاح." -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "الوصف والفئة والمبلغ والتاريخ مطلوبة" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "حدث خطأ أثناء تحديث المورد: %(error)s" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "تعذر إضافة التكلفة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "لا يمكن حذف المورد مع عناصر المخزون المرتبطة. قم بإزالة العناصر أولاً." -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "تمت إضافة التكلفة بنجاح" +#~ msgid "Supplier deleted successfully." +#~ msgstr "تم حذف المورد بنجاح." -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "لم يتم العثور على التكلفة" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "خطأ في حذف المورد: %(error)s" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "ليس لديك إذن لتعديل هذه التكلفة" +#~ msgid "Supplier is required." +#~ msgstr "العنوان مطلوب" -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "تعذر تحديث التكلفة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Supplier not found." +#~ msgstr "لم يتم العثور على الموردين." -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "تم تحديث التكلفة بنجاح" +#~ msgid "Order date is required." +#~ msgstr "اسم الدور مطلوب" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "ليس لديك إذن بحذف هذه التكلفة" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "تعذر إنشاء الدور بسبب خطأ في قاعدة البيانات" -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "لا يمكن حذف التكلفة التي تمت فوترتها" +#~ msgid "Purchase order created successfully." +#~ msgstr "تم إنشاء أمر الشراء بنجاح." -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "تعذر حذف التكلفة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "خطأ في إنشاء أمر الشراء: %(error)s" -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "مطلوب اسم وسعر الوحدة" +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "لا يمكن تعديل أمر الشراء الذي تم استلامه." -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "تنسيق الكمية غير صالح" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "تعذر تحديث الدور بسبب خطأ في قاعدة البيانات" -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "تنسيق سعر الوحدة غير صالح" +#~ msgid "Purchase order updated successfully." +#~ msgstr "تم تحديث أمر الشراء بنجاح." -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "تعذر إضافة قيمة إضافية بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "تمت إضافة الخير الإضافي بنجاح" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "لم يتم العثور على جيدة اضافية" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "ليس لديك الإذن بتعديل هذه السلعة الإضافية" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "تعذر التحديث الإضافي الجيد بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "تم تحديث جيد جدًا بنجاح" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "ليس لديك الإذن بحذف هذه السلعة الإضافية" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "لا يمكن حذف السلعة الإضافية التي تمت إضافتها إلى الفاتورة" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "تعذر حذف العناصر الإضافية الجيدة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "تم إنشاء المشروع بنجاح" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "تنسيق مبلغ الخصم غير صالح" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "يجب الموافقة على عرض الأسعار قبل إرساله" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "لا يمكن إرسال عرض الأسعار: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "ليس لديك الإذن بتحميل المرفقات لهذا الاقتباس" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "ليس لديك الإذن بتنزيل هذا المرفق" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "ليس لديك الإذن بطلب الموافقة على هذا الاقتباس" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "هذا الاقتباس لا يتطلب الموافقة" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "لا يمكن طلب الموافقة: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "تعذر طلب الموافقة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "تم طلب الموافقة بنجاح" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "هذا الاقتباس ليس في انتظار الموافقة" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "لا يمكن الموافقة على الاقتباس: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "تعذرت الموافقة على عرض الأسعار بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "تمت الموافقة على الاقتباس بنجاح" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "لا يمكن رفض الاقتباس: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "تم رفض الموافقة على عرض الأسعار" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "تعذر إنشاء القالب بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "تم إنشاء القالب بنجاح" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "خطأ في تحديث أمر الشراء: %(error)s" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "ليس لديك الإذن بإنشاء قالب من هذا الاقتباس" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "تعذر حفظ القالب بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "تم حفظ القالب بنجاح" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "ليس لديك الإذن بتصدير هذا الاقتباس" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "حدث خطأ أثناء إنشاء ملف PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "عنوان البريد الإلكتروني للمستلم مطلوب" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "تم إرسال الاقتباس بنجاح إلى %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "فشل إرسال عرض الأسعار: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "خطأ في إرسال البريد الإلكتروني: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "ليس لديك الإذن بتكرار هذا الاقتباس" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "لا يمكن تكرار الاقتباس بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "تعذر إنهاء عرض الأسعار المكرر بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "تم إنشاء الاقتباس %(quote_number)s كنسخة مكررة" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "الرجاء تحديد إجراء واقتباس واحد على الأقل" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "معرفات الاقتباس غير صالحة" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "لم يتم العثور على اقتباسات أو ليس لديك إذن" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "%(count)d اقتباس (اقتباسات) مكررة" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "فشل في تكرار %(count)d من الاقتباسات" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "خطأ في تكرار الاقتباسات" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "تم وضع علامة على %(count)d من الاقتباسات كمرسلة" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "تعذر وضع علامة على %(count)d من الاقتباسات كمرسلة" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "حدث خطأ أثناء تحديث عروض الأسعار" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "تم حذف %(count)d من الاقتباسات" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "تعذر حذف %(count)d من الاقتباسات (ربما تكون قيد الاستخدام)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "حدث خطأ أثناء حذف علامات الاقتباس" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "إجراء غير صالح" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "تعذر تحديث أدوار المستخدم بسبب خطأ في قاعدة البيانات" -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "Purchase order marked as sent." +#~ msgstr "تم وضع علامة على أمر الشراء كمرسل." -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "مطلوب الاسم والمشروع والعميل والتكرار وتاريخ التشغيل التالي" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "خطأ في إرسال أمر الشراء: %(error)s" -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "تنسيق تاريخ التشغيل التالي غير صالح" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "تعذر إنشاء الدور بسبب خطأ في قاعدة البيانات" -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "تنسيق تاريخ الانتهاء غير صالح" +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "تم إلغاء أمر الشراء بنجاح." -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "لم يتم العثور على المشروع أو العميل المحدد" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "خطأ في إلغاء أمر الشراء: %(error)s" -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "تعذر إنشاء فاتورة متكررة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "لا يمكن حذف أمر الشراء الذي تم استلامه. قم بإلغائها بدلاً من ذلك." -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "ليس لديك الإذن لعرض هذه الفاتورة المتكررة" +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "تعذر حذف الدور بسبب خطأ في قاعدة البيانات" -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "ليس لديك الإذن بتعديل هذه الفاتورة المتكررة" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "تم حذف أمر الشراء بنجاح." -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "تعذر تحديث الفاتورة المتكررة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "خطأ في حذف أمر الشراء: %(error)s" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "تم تحديث الفاتورة المتكررة بنجاح" +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "تعذر إنشاء الدور بسبب خطأ في قاعدة البيانات" -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "ليس لديك الإذن بحذف هذه الفاتورة المتكررة" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "تم وضع علامة على أمر الشراء كمستلم وتم تحديث المخزون." -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "تعذر حذف الفاتورة المتكررة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "خطأ في استلام أمر الشراء: %(error)s" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "يبدأ" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "نهاية" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "مهمة" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "ملحوظات" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "قابلة للفوترة" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "عميل" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "مستخدم" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "نعم" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "لا" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "تعذر حذف عامل التصفية بسبب خطأ في قاعدة البيانات" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "مطلوب المشروع واسم العميل وتاريخ الاستحقاق" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Invalid due date format" +#~ msgstr "تنسيق تاريخ الاستحقاق غير صالح" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Invalid tax rate format" +#~ msgstr "تنسيق معدل الضريبة غير صالح" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "Selected project not found" +#~ msgstr "لم يتم العثور على المشروع المحدد" -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر إنشاء فاتورة بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "ليس لديك الإذن لعرض هذه الفاتورة" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "تعذر تحديث الإعدادات بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "ليس لديك الإذن بتعديل هذه الفاتورة" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "اكتمل الإعداد! شكرًا لك على مساعدتنا في تحسين TimeTracker." +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "تحذير: تعذر حجز المخزون للعنصر %(item)s: %(error)s" -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر تحديث الفاتورة بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "Invoice updated successfully" +#~ msgstr "تم تحديث الفاتورة بنجاح" -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "مطلوب اسم المشروع والمهمة" +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "تحذير: تعذر تقليل مخزون العنصر %(item)s: %(error)s" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "ليس لديك الإذن بحذف هذه الفاتورة" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "يمكن تحرير مسودة عروض الأسعار فقط" + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر حذف الفاتورة بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "لم يتم تحديد فواتير للحذف" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف الفواتير بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." + +#~ msgid "No invoices selected" +#~ msgstr "لم يتم تحديد أي فواتير" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "تعذر تحديث الفواتير بسبب خطأ في قاعدة البيانات" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "لم يتم تحديد إدخالات الوقت أو التكاليف أو النفقات أو السلع الإضافية" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر إنشاء العناصر بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "تم إنشاء عناصر الفاتورة بنجاح من إدخالات الوقت والتكاليف" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "تم تطبيق %(hours)s من الساعات المدفوعة" +#~ " مسبقًا لـ %(client)s قبل تجاوز " +#~ "الفواتير." + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "ليس لديك الإذن بتصدير هذه الفاتورة" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "المشروع المحدد غير موجود" +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "ليس لديك حق الوصول إلى هذه المهمة" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "يمكنك فقط تحرير المهام التي قمت بإنشائها" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "اسم المهمة مطلوب" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "المشروع مطلوب" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "تعذر تحديث الحالة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "تعذر تحديث المهمة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "ليس لديك الإذن لتحديث هذه المهمة" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "يمكنك فقط تحديث المهام التي قمت بإنشائها" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "يمكنك فقط تعيين المهام التي قمت بإنشائها" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "المستخدم المحدد غير موجود" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "تم إلغاء تعيين المهمة" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "يمكنك فقط حذف المهام التي قمت بإنشائها" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "لا يمكن حذف المهمة ذات إدخالات الوقت الموجودة" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "تعذر حذف المهمة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "لم يتم تحديد أية مهام للحذف" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "لا يمكن حذف المهام بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "لم يتم تحديد أي مهام" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "تعذر تحديث المهام بسبب خطأ في قاعدة البيانات" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "أدخل تاريخ الاستحقاق الجديد (YYYY-MM-DD):" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "تاريخ النفقات مطلوب" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "تنسيق التاريخ غير صالح" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "دعم قاعدة البيانات" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "%(count)d اقتباس (اقتباسات) مكررة" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "لم يتم العثور على مهام" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "تم بنجاح تحديث %(count)d من المصروفات إلى %(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "تم تخطي %(count)d من النفقات (بدون إذن)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "قيمة الأولوية غير صالحة" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "لم يتم تحديد أي مستخدم للمهمة" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "تم تحديد مستخدم غير صالح" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "لا يمكن تعيين المهام بسبب خطأ في قاعدة البيانات" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "لم يتم تحديد أي مشروع" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "تم تحديد مشروع غير صالح" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "لا يمكن نقل المهام بسبب خطأ في قاعدة البيانات" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "يمكن للمسؤولين فقط عرض جميع المهام المتأخرة" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "فشل إنشاء ملف PDF: %(err)s. فشل الإجراء الاحتياطي أيضًا: %(fb)s" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "ليس لديك الإذن بتكرار هذه الفاتورة" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "لا يمكن تكرار الفاتورة بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "تعذر إنهاء الفاتورة المكررة بسبب خطأ " +#~ "في قاعدة البيانات. يرجى التحقق من " +#~ "سجلات الخادم." -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "Invoice marked as sent" +#~ msgstr "تم وضع علامة على الفاتورة كمرسلة" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "تعذر إنشاء القالب بسبب خطأ في قاعدة البيانات" +#~ msgid "Invoice marked as paid" +#~ msgstr "تم وضع علامة على الفاتورة بأنها مدفوعة" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "لا يمكن تحديث القالب بسبب خطأ في قاعدة البيانات" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "لا يمكن حذف القالب بسبب خطأ في قاعدة البيانات" +#~ msgid "Client is required." +#~ msgstr "" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "لا يمكن بدء المؤقت لمشروع مؤرشف. الرجاء إلغاء أرشفة المشروع أولاً." +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "لا يمكن بدء المؤقت لمشروع غير نشط" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "المهمة المحددة غير صالحة للمشروع المختار" +#~ msgid "Project must belong to the same client." +#~ msgstr "" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "ليس لديك حق الوصول إلى هذا المشروع." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "ليس لديك حق الوصول إلى هذه المهمة" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "لديك بالفعل مؤقت نشط. أوقفه قبل البدء بواحدة جديدة." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "تعذر بدء تشغيل المؤقت بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "مجهول" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "يجب أن يحتوي القالب على مشروع لبدء المؤقت" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "لا يمكن بدء المؤقت لهذا المشروع" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "لا يوجد مؤقت نشط للتوقف" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "لا يوجد مشروع" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "لا يوجد مؤقت نشط للتوقف" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "توقف الموقت" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "لا يمكن إنشاء العميل. يرجى المحاولة مرة أخرى." +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "لا يوجد مؤقت نشط للتوقف" +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "لا يمكن إنشاء العميل. يرجى المحاولة مرة أخرى." +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "لا يوجد مؤقت نشط للتوقف" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "قيمة الحالة غير صالحة" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "يمكنك فقط تعديل المؤقتات الخاصة بك" +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "تم تحديد مهمة غير صالحة للمشروع المختار" +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "لا يمكن أن يكون وقت البدء في المستقبل" +#~ msgid "Key and label are required" +#~ msgstr "المفتاح والتسمية مطلوبان" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "تنسيق تاريخ/وقت البدء غير صالح" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر إنشاء عمود بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "يجب أن يكون وقت الانتهاء بعد وقت البدء" +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر تحديث العمود بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "تنسيق تاريخ/وقت الانتهاء غير صالح" +#~ msgid "System columns cannot be deleted" +#~ msgstr "لا يمكن حذف أعمدة النظام" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "تم تحديث الموقّت بنجاح" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف العمود بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن تبديل العمود بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "يمكنك فقط حذف الموقتات الخاصة بك" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "لا يمكن حذف مؤقت نشط" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "تعذر حذف المؤقت بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Timer stopped successfully" +#~ msgstr "توقف الموقّت بنجاح" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Lead created successfully" +#~ msgstr "تم إنشاء العميل المحتمل بنجاح" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "خطأ في إنشاء العميل المتوقع: %(error)s" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Lead updated successfully" +#~ msgstr "تم تحديث العميل المتوقع بنجاح" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "تنسيق التاريخ/الوقت غير صالح" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "حدث خطأ أثناء تحديث العميل المتوقع: %(error)s" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "Lead has already been converted" +#~ msgstr "لقد تم تحويل الرصاص بالفعل" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Lead converted to client successfully" +#~ msgstr "تم تحويل العميل المحتمل إلى عميل بنجاح" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "جميع الحقول مطلوبة" +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "خطأ في تحويل العميل المتوقع: %(error)s" -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "لا يمكن إنشاء إدخالات الوقت لمشروع مؤرشف. الرجاء إلغاء أرشفة المشروع أولاً." +#~ msgid "Lead converted to deal successfully" +#~ msgstr "تم تحويل الرصاص للتعامل بنجاح" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "لا يمكن إنشاء إدخالات الوقت لمشروع غير نشط" +#~ msgid "Lead marked as lost" +#~ msgstr "تم وضع علامة على العميل المحتمل كمفقود" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "تم تحديد مهمة غير صالحة" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "خطأ في وضع علامة على العميل المتوقع كمفقود: %(error)s" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "يجب أن يكون تاريخ الانتهاء بعد تاريخ البدء أو يساويه" +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "لا يمكن أن يتجاوز النطاق الزمني 31 يومًا" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "تنسيق الوقت غير صالح" +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "لم يتم العثور على تواريخ صالحة في النطاق المحدد" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "تعذر إنشاء إدخالات مجمعة بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "حدث خطأ أثناء إنشاء الإدخالات المجمعة. يرجى المحاولة مرة أخرى." +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "يمكنك فقط تكرار أجهزة ضبط الوقت الخاصة بك" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "يمكنك فقط استئناف الموقتات الخاصة بك" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "المشروع لم يعد موجودا" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "تعذر استئناف المؤقت بسبب خطأ في قاعدة البيانات. يرجى التحقق من سجلات الخادم." +#~ msgid "Mileage entry created successfully" +#~ msgstr "تم إنشاء إدخال الأميال بنجاح" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "Error creating mileage entry" +#~ msgstr "خطأ في إنشاء إدخال الأميال" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "ليس لديك إذن لعرض إدخال الأميال هذا" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "ليس لديك الإذن بتعديل إدخال الأميال هذا" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "لا يمكن تعديل إدخالات الأميال المعتمدة أو التي تم تعويضها" -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "تم تحديث إدخال الأميال بنجاح" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "Error updating mileage entry" +#~ msgstr "حدث خطأ أثناء تحديث إدخال الأميال" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "تم تحديد منطقة زمنية غير صالحة" +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "ليس لديك الإذن بحذف إدخال الأميال هذا" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "يجب أن تتراوح الساعات القياسية يوميًا بين 0.5 و24" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "تم حذف إدخال الأميال بنجاح" -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "يجب أن تتراوح الساعات القياسية يوميًا بين 0.5 و24" +#~ msgid "Error deleting mileage entry" +#~ msgstr "حدث خطأ أثناء حذف إدخال الأميال" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "تم حفظ الإعدادات بنجاح" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "لم يتم تحديد إدخالات الأميال للحذف" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "خطأ في حفظ الإعدادات: %(error)s" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "تعذر حذف إدخالات الأميال بسبب خطأ " +#~ "في قاعدة البيانات. يرجى التحقق من " +#~ "سجلات الخادم." -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "تم بنجاح حذف %(count)d عدد الأميال entr%(plural)s" -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "شكرا لاختيارك TimeTracker!" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "خطأ في حفظ الإعدادات" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "تم تخطي %(count)d عدد الأميال entr%(plural)s: %(errors)s" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "تم تحديث التفضيلات" +#~ msgid "No mileage entries selected" +#~ msgstr "لم يتم تحديد إدخالات الأميال" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "تم تحديث اللغة بنجاح" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "لغة غير صالحة" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "تم تحديث اللغة إلى %(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "اسم Webhook مطلوب" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "عنوان URL للخطاف الإلكتروني مطلوب" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "يجب تحديد حدث واحد على الأقل" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "تم إنشاء Webhook بنجاح" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "حدث خطأ أثناء إنشاء الرد التلقائي على الويب" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "خطأ في إنشاء خطاف الويب: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "تم تحديث Webhook بنجاح" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "حدث خطأ أثناء تحديث خطاف الويب: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "تم حذف الرد التلقائي على الويب بنجاح" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "حدث خطأ أثناء حذف خطاف الويب: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "الرجاء إدخال ساعات مستهدفة صالحة (أكبر من 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "هناك هدف موجود بالفعل لهذا الأسبوع. يُرجى تعديل الهدف الحالي بدلاً من ذلك." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "تم إنشاء هدف الوقت الأسبوعي بنجاح!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "فشل في إنشاء الهدف. يرجى المحاولة مرة أخرى." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "ليس لديك إذن لعرض هذا الهدف" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "ليس لديك إذن لتعديل هذا الهدف" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "تم تحديث هدف الوقت الأسبوعي بنجاح!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "فشل تحديث الهدف. يرجى المحاولة مرة أخرى." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "ليس لديك إذن بحذف هذا الهدف" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "تم حذف هدف الوقت الأسبوعي بنجاح" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "تعذر تحديث إدخالات الأميال بسبب خطأ في قاعدة البيانات" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "فشل حذف الهدف. يرجى المحاولة مرة أخرى." +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "تم بنجاح تحديث %(count)d عدد الأميال entr%(plural)s إلى %(status)s" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "تم تخطي %(count)d من الأميال entr%(plural)s (بدون إذن)" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "يمكن للمسؤولين فقط الموافقة على إدخالات الأميال" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "يمكن الموافقة على إدخالات الأميال المعلقة فقط" -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "تمت الموافقة على إدخال الأميال بنجاح" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Error approving mileage entry" +#~ msgstr "خطأ في الموافقة على إدخال الأميال" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "يمكن للمسؤولين فقط رفض إدخالات الأميال" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "يمكن رفض إدخالات الأميال المعلقة فقط" -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "Mileage entry rejected" +#~ msgstr "تم رفض إدخال الأميال" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "خطأ في رفض إدخال الأميال" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "يمكن للمسؤولين فقط وضع علامة على إدخالات الأميال على أنها تم تعويضها" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "يمكن وضع علامة على إدخالات الأميال المعتمدة فقط على أنها تم تعويضها" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "تحديث الحالة" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "تم وضع علامة على إدخال الأميال على أنه تم تعويضه" -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "حدث خطأ أثناء وضع علامة على إدخال الأميال على أنه تم تعويضه" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "إنشاء مهمة" +#~ msgid "Quote title and client are required" +#~ msgstr "مطلوب عنوان الاقتباس والعميل" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "Selected client not found" +#~ msgstr "لم يتم العثور على العميل المحدد" -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "إرسال البريد الإلكتروني" +#~ msgid "Invalid total amount format" +#~ msgstr "تنسيق المبلغ الإجمالي غير صالح" -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Invalid estimated hours format" +#~ msgstr "تنسيق الساعات المقدرة غير صالح" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "Invalid date format for valid until" +#~ msgstr "تنسيق التاريخ غير صالح صالح حتى" -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر إنشاء عرض أسعار بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "Quote created successfully" +#~ msgstr "تم إنشاء الاقتباس بنجاح" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Only draft quotes can be edited" +#~ msgstr "يمكن تحرير مسودة عروض الأسعار فقط" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن تحديث الاقتباس بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "حدد المشروع" +#~ msgid "Quote updated successfully" +#~ msgstr "تم تحديث الاقتباس بنجاح" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "يمكن للمسؤولين فقط رفض إدخالات الأميال" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "يمكن إرسال مسودة عروض الأسعار فقط" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "تعذر إرسال عرض الأسعار بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "تحديثات WebSocket الحية" +#~ msgid "Quote sent successfully" +#~ msgstr "تم إرسال الاقتباس بنجاح" -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "مطلوب اسم وسعر الوحدة" +#~ msgid "This quote cannot be accepted" +#~ msgstr "لا يمكن قبول هذا الاقتباس" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "تم إنشاء العميل" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "تعذر قبول الاقتباس: %(error)s" -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "المفتاح والتسمية مطلوبان" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن قبول عرض الأسعار بسبب خطأ" +#~ " في قاعدة البيانات. يرجى التحقق من" +#~ " سجلات الخادم." -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "تم قبول عرض الأسعار وتم إنشاء المشروع بنجاح" -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "طلب الموافقة" +#~ msgid "This quote cannot be rejected" +#~ msgstr "لا يمكن رفض هذا الاقتباس" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "تم رفض الاقتباس" +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "تعذر رفض الاقتباس: %(error)s" -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "مطلوب اسم وسعر الوحدة" +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن رفض الاقتباس بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "سعر الساعة" +#~ msgid "Quote rejected" +#~ msgstr "تم رفض الاقتباس" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "يمكن حذف مسودة علامات الاقتباس أو علامات الاقتباس المرفوضة فقط" -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر حذف الاقتباس بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." + +#~ msgid "Quote deleted successfully" +#~ msgstr "تم حذف الاقتباس بنجاح" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "" + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Stripe API key not configured." +#~ msgstr "" + +#~ msgid "Payment processed successfully." +#~ msgstr "" + +#~ msgid "Invalid from date format" +#~ msgstr "غير صالح من تنسيق التاريخ" + +#~ msgid "Invalid to date format" +#~ msgstr "تنسيق التاريخ غير صالح" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "ليس لديك إذن لعرض هذه الدفعة" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "مطلوب الفاتورة والمبلغ وتاريخ الدفع" + +#~ msgid "Selected invoice not found" +#~ msgstr "لم يتم العثور على الفاتورة المحددة" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "ليس لديك الإذن بإضافة دفعات إلى هذه الفاتورة" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "متبقي" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "نجاح" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "خطأ" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "تحذير" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "معلومة" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "تحميل..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "توفير..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "جارٍ الحذف..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "يلغي" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "يتأكد" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "يغلق" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "يحفظ" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "يمسح" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "يحرر" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "يضيف" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "يزيل" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "نعم" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "هل أنت متأكد أنك تريد حذف هذا؟" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "لديك تغييرات غير محفوظة. هل أنت متأكد أنك تريد المغادرة؟" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "فشلت العملية" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "تمت العملية بنجاح" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "لم يتم تحديد أي عناصر" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "إدخال غير صالح" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "هذه الخانة مطلوبه" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "لا يوجد توقيت نشط" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "توقف الموقت" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "فشل في إيقاف الموقّت" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "حدث خطأ أثناء إيقاف الموقّت" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "لا يوجد نموذج للحفظ" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "لم يتم العثور على مؤقت" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "توقف الموقت بسبب عدم النشاط" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "يجب أن يكون مبلغ الدفع أكبر من الصفر" -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "انتقل إلى المحتوى" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "الملاحة المتنقلة" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "ملاحة" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "لوحة الأوامر" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "تعليقات" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "تبديل الشريط الجانبي" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "لوحة القيادة" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "الموقت" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "إدخالات الوقت" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "التقارير" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "تقويم" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "عرض التقويم" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "Invalid payment amount" +#~ msgstr "مبلغ الدفع غير صالح" -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "تتبع الوقت" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "طلب الموافقة" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "Invalid payment date format" +#~ msgstr "تنسيق تاريخ الدفع غير صالح" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "لا يمكن أن تكون رسوم البوابة سالبة" -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "المهام" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "Invalid gateway fee amount" +#~ msgstr "مبلغ رسوم البوابة غير صالح" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "مجلس كانبان" +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر إنشاء الدفع بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "الأهداف الأسبوعية" +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "ليس لديك إذن لتعديل هذه الدفعة" -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر تحديث الدفع بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "قوالب إدخال الوقت" +#~ msgid "Payment updated successfully" +#~ msgstr "تم تحديث الدفع بنجاح" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "إدارة علاقات العملاء" +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "ليس لديك إذن بحذف هذه الدفعة" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "العملاء" +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر حذف الدفعة بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "Payment deleted successfully" +#~ msgstr "تم حذف الدفعة بنجاح" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "No payments selected for deletion" +#~ msgstr "لم يتم تحديد أي دفعات للحذف" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر حذف الدفعات بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "No payments selected" +#~ msgstr "لم يتم تحديد أي دفعات" -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "يقتبس" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "لا يمكن تحديث المدفوعات بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "التمويل والمصروفات" +#~ msgid "Start date must be before end date" +#~ msgstr "يجب أن يكون تاريخ البدء قبل تاريخ الانتهاء" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "لم يتم العثور على معدل البدل " +#~ "اليومي لهذا الموقع. يرجى تكوين الأسعار" +#~ " أولا." -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "Per diem claim created successfully" +#~ msgstr "تم إنشاء المطالبة بالبدل اليومي بنجاح" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Error creating per diem claim" +#~ msgstr "حدث خطأ أثناء إنشاء المطالبة بالبدل اليومي" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "التقارير المجدولة" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "الفواتير" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "ليس لديك إذن لعرض مطالبة البدل اليومي هذه" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "ليس لديك إذن لتعديل مطالبة البدل اليومي هذه" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "الفواتير المتكررة" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "المدفوعات" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "نفقات" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "عدد الكيلومترات" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "لكل يوم" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "تنبيهات الميزانية" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "جرد" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "عناصر المخزون" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "المستودعات" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "الموردين" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "طلبات الشراء" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "مستويات المخزون" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "تحركات الأسهم" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "التحويلات" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "التعديلات" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "التحفظات" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "تنبيهات انخفاض المخزون" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "التحليلات" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "الأدوات والبيانات" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "استيراد / تصدير" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "المرشحات المحفوظة" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "مسؤل" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "لوحة تحكم المشرف" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "إدارة المستخدم" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "لا يمكن تعديل مطالبات البدل اليومي المعتمدة أو المدفوعة" -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "الأدوار والأذونات" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "قوالب PDF" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "فاتورة PDF" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "اقتباس قوات الدفاع الشعبي" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "إعدادات النظام" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "إعدادات" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "تم تحديث مطالبة البدل اليومي بنجاح" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "تكوين البريد الإلكتروني" +#~ msgid "Error updating per diem claim" +#~ msgstr "حدث خطأ أثناء تحديث مطالبة البدل اليومي" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "قوالب البريد الإلكتروني" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "ليس لديك إذن بحذف مطالبة البدل اليومي هذه" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "إعدادات أويدك" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "تم حذف مطالبة البدل اليومي بنجاح" -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Error deleting per diem claim" +#~ msgstr "حدث خطأ أثناء حذف المطالبة بالبدل اليومي" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "رموز API" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "لم يتم تحديد أي مطالبات بدل يومي للحذف" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "سجلات التدقيق" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "تعذر حذف مطالبات البدل اليومي بسبب " +#~ "خطأ في قاعدة البيانات. يرجى التحقق " +#~ "من سجلات الخادم." -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "تم حذف %(count)d بنجاح من المطالبات المتعلقة بالبدل اليومي" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "فئات النفقات" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "تم تخطي %(count)d مطالبة (مطالبات) البدل اليومي: %(errors)s" -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "أسعار البدل اليومي" +#~ msgid "No per diem claims selected" +#~ msgstr "لم يتم تحديد مطالبات البدل اليومي" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "تعذر تحديث مطالبات البدل اليومي بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "تم بنجاح تحديث %(count)d مطالبة (مطالبات) البدل اليومي إلى %(status)s" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "تم تخطي %(count)d من المطالبات المتعلقة بالبدل اليومي (بدون إذن)" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "معلومات النظام" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "يمكن للمسؤولين فقط الموافقة على مطالبات البدل اليومي" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "النسخ الاحتياطية" +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "يمكن الموافقة فقط على مطالبات البدل اليومي المعلقة" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "تمت الموافقة على المطالبة بالبدل اليومي بنجاح" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "عن" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "يساعد" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "خيارات التصدير" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "دعم تعقب الوقت" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "تبديل الشريط الجانبي" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "يبحث" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "سمة" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "خيارات التصفية" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "ضوء" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "مظلم" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "نظام" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "Error approving per diem claim" +#~ msgstr "حدث خطأ أثناء الموافقة على المطالبة بالبدل اليومي" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "بدء الموقت" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "ل" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "عرض التعليمات" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "تغيير اللغة" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "لغة" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "قائمة المستخدم" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "يدعم" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "ضيف" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "ملفي الشخصي" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "إعداداتي" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "رخصة" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "يمكن للمسؤولين فقط رفض مطالبات البدل اليومي" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "تسجيل الخروج" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "يمكن رفض مطالبات البدل اليومي المعلقة فقط" -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "تتمتع TimeTracker؟" +#~ msgid "Per diem claim rejected" +#~ msgstr "تم رفض المطالبة بالبدل اليومي" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "حدث خطأ أثناء رفض المطالبة بالبدل اليومي" -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "دعم تعقب الوقت" +#~ msgid "Per diem rate created successfully" +#~ msgstr "تم إنشاء معدل البدل اليومي بنجاح" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "Error creating per diem rate" +#~ msgstr "حدث خطأ أثناء إنشاء معدل البدل اليومي" -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "باي بال" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "تم تحديث معدل البدل اليومي بنجاح" -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "لوازم" +#~ msgid "Error updating per diem rate" +#~ msgstr "حدث خطأ أثناء تحديث معدل البدل اليومي" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "رفض" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "لا يمكن حذف السعر: يتم استخدامه " +#~ "بواسطة %(count)d من المطالبات (المطالبات) " +#~ "لكل بدل يومي. قم بإلغاء تنشيطه " +#~ "بدلاً من ذلك." -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "تم حذف معدل البدل اليومي بنجاح" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "تاريخ البدء" +#~ msgid "Error deleting per diem rate" +#~ msgstr "حدث خطأ أثناء حذف معدل البدل اليومي" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "تحميل المزيد" +#~ msgid "You do not have permission to access this page" +#~ msgstr "ليس لديك إذن للوصول إلى هذه الصفحة" -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "عرض المهمة" +#~ msgid "Role name is required" +#~ msgstr "اسم الدور مطلوب" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "A role with this name already exists" +#~ msgstr "يوجد دور بهذا الاسم بالفعل" -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "إجراءات سريعة" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "الإجراءات" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "وقت السجل" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "مهمة جديدة" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "عرض المشروع" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "تحرير العميل" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "فشلت العملية" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "Could not create role due to a database error" +#~ msgstr "تعذر إنشاء الدور بسبب خطأ في قاعدة البيانات" -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "انتهى العقد" +#~ msgid "Role created successfully" +#~ msgstr "تم إنشاء الدور بنجاح" -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "معاينة الشعار" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "Could not update role due to a database error" +#~ msgstr "تعذر تحديث الدور بسبب خطأ في قاعدة البيانات" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "نهاية" +#~ msgid "Role updated successfully" +#~ msgstr "تم تحديث الدور بنجاح" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "ليس لديك الإذن للقيام بهذا الإجراء" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "لا يمكن حذف أدوار النظام" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "لا يمكن حذف الدور الذي تم تعيينه" +#~ " للمستخدمين. يرجى إعادة تعيين المستخدمين" +#~ " أولاً." -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "تعذر حذف الدور بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "إنشاء رمز API" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "رمز API الخاص بك" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "أمثلة الاستخدام" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "هل أنت متأكد أنك تريد ذلك" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "إلغاء التنشيط" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "فعل" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "هذا الرمز؟" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "إلغاء تنشيط الرمز المميز" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "تفعيل الرمز المميز" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "إلغاء التنشيط" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "فعل" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "هل أنت متأكد أنك تريد حذف هذا الرمز المميز؟ لا يمكن التراجع عن هذا الإجراء." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "حذف الرمز المميز" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "إنشاء نسخة احتياطية" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "استعادة النسخة الاحتياطية" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "النسخ الاحتياطية الموجودة" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "معلومات هامة" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "تأكيد الحذف" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "مسح ذاكرة التخزين المؤقت" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "حالة عامل الخدمة" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "مسح كافة ذاكرات التخزين المؤقت" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "إجراءات عامل الخدمة" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "التحديث اليدوي الثابت" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "تم حذف الدور \"%(name)s\" بنجاح" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "كل الوقت" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "إجمالي المشاريع" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "تعذر تحديث أدوار المستخدم بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "المشاريع النشطة" +#~ msgid "User roles updated successfully" +#~ msgstr "تم تحديث أدوار المستخدم بنجاح" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "Template not found." +#~ msgstr "" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "مطلوب اسم المشروع والعميل" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "Invalid budget amount" +#~ msgstr "مبلغ الميزانية غير صالح" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "قاعدة البيانات" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "النسبة المئوية لحد الميزانية غير صالحة (0-100)" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Project not found" +#~ msgstr "لم يتم العثور على المشروع" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "مستخدمو OIDC" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "المستخدمين" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "أقسام الإدارة" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "النشاط الأخير" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "مدة" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "لا يوجد" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "تكوين واختبار البريد الإلكتروني" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "تكوين واختبار تسليم البريد الإلكتروني" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "العودة إلى المشرف" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "قم بتكوين إعدادات البريد الإلكتروني هنا لحفظها في قاعدة البيانات." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "تمكين تكوين البريد الإلكتروني لقاعدة البيانات" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "خادم البريد" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "ميناء البريد" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "استخدم طبقة النقل الآمنة" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "استخدم طبقة المقابس الآمنة" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "اسم المستخدم" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "كلمة المرور" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "اتركه فارغًا للحفاظ على التيار" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "المرسل الافتراضي" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "البريد الإلكتروني للمستلم" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "ليس لديك الإذن بأرشفة المشاريع" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "حفظ التكوين" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "إعادة ضبط" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "حالة تكوين البريد الإلكتروني" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "ينعش" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "تم تكوين البريد الإلكتروني!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "تم إعداد إعدادات البريد الإلكتروني بشكل صحيح." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "لم يتم تكوين البريد الإلكتروني" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "يرجى ضبط إعدادات البريد الإلكتروني باستخدام النموذج أعلاه." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "أخطاء التكوين" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "تحذيرات التكوين" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "إعدادات البريد الإلكتروني الحالية" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "ميناء" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "تعيين كلمة المرور" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "إرسال البريد الإلكتروني للاختبار" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "عنوان البريد الإلكتروني للمستلم" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "دليل التكوين" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "موفري SMTP المشتركين" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "يتطلب كلمة مرور التطبيق" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "ملاحظات هامة" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "يتطلب Gmail كلمة مرور التطبيق في حالة تمكين المصادقة الثنائية (2FA)." - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "أعد تشغيل التطبيق بعد تغيير إعدادات البريد الإلكتروني" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "تحقق من قواعد جدار الحماية إذا لم يتم إرسال رسائل البريد الإلكتروني" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "للإنتاج، استخدم خدمة بريد إلكتروني مخصصة مثل SendGrid أو Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "تم تعيين كلمة المرور" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "لم يتم تعيين كلمة المرور" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "فشل حفظ التكوين. يرجى المحاولة مرة أخرى." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "نجاح!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "فشل تحديث الحالة. يرجى المحاولة مرة أخرى." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "يرجى إدخال عنوان بريد إلكتروني صالح" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "إرسال..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "فشل في إرسال البريد الإلكتروني التجريبي. يرجى التحقق من التكوين الخاص بك." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "Project is already archived" +#~ msgstr "تمت أرشفة المشروع بالفعل" -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "قم بتكوين OIDC باستخدام متغيرات البيئة التالية:" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "ليس لديك إذن لإلغاء أرشفة المشاريع" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "خدمة" +#~ msgid "Project is already active" +#~ msgstr "المشروع نشط بالفعل" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "ليس لديك الإذن بإلغاء تنشيط المشاريع" -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "المستخدمين" +#~ msgid "Project is already inactive" +#~ msgstr "المشروع غير نشط بالفعل" -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "مطالبة المجموعات" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "ليس لديك الإذن لتفعيل المشاريع" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "لا يمكن حذف المشروع بإدخالات الوقت الموجودة" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف المشروع بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "ضائع" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "ليس لديك الإذن بحذف المشاريع" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "استخدم طبقة المقابس الآمنة" +#~ msgid "No projects selected for deletion" +#~ msgstr "لم يتم تحديد أي مشاريع للحذف" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "يبدأ" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف المشاريع بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "المهلة (ثواني)" +#~ msgid "No projects were deleted" +#~ msgstr "لم يتم حذف أي مشاريع" -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "You do not have permission to change project status" +#~ msgstr "ليس لديك الإذن بتغيير حالة المشروع" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "No projects selected" +#~ msgstr "لم يتم اختيار أي مشاريع" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "تعذر تحديث حالة المشروع بسبب خطأ " +#~ "في قاعدة البيانات. يرجى التحقق من " +#~ "سجلات الخادم." -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "No projects were updated" +#~ msgstr "لم يتم تحديث أي مشاريع" -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "كلمة المرور" +#~ msgid "Project is already in favorites" +#~ msgstr "المشروع موجود بالفعل في المفضلة" -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "أدخل كلمة المرور الخاصة بك" +#~ msgid "Project added to favorites" +#~ msgstr "تمت إضافة المشروع إلى المفضلة" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Failed to add project to favorites" +#~ msgstr "فشل في إضافة المشروع إلى المفضلة" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "Project is not in favorites" +#~ msgstr "المشروع ليس في المفضلة" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "بناء على الأخير" +#~ msgid "Project removed from favorites" +#~ msgstr "تمت إزالة المشروع من المفضلة" -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Failed to remove project from favorites" +#~ msgstr "فشل في إزالة المشروع من المفضلة" -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "استخدم أسعار المشروع بالساعة" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "وقت السجل" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "عنوان البريد الإلكتروني" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "الاسم الأول" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "اسم العائلة" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "طريقة المصادقة" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "الوصف والفئة والمبلغ والتاريخ مطلوبة" -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "أهم المشاريع" +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "تعذر إضافة التكلفة بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "مجموعة المشرف" +#~ msgid "Cost added successfully" +#~ msgstr "تمت إضافة التكلفة بنجاح" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "Cost not found" +#~ msgstr "لم يتم العثور على التكلفة" -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "طريقة المصادقة" +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "ليس لديك إذن لتعديل هذه التكلفة" -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "نشط فقط" +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر تحديث التكلفة بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Cost updated successfully" +#~ msgstr "تم تحديث التكلفة بنجاح" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "ليس لديك إذن بحذف هذه التكلفة" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "لا يمكن حذف التكلفة التي تمت فوترتها" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر حذف التكلفة بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "Name and unit price are required" +#~ msgstr "مطلوب اسم وسعر الوحدة" + +#~ msgid "Invalid quantity format" +#~ msgstr "تنسيق الكمية غير صالح" + +#~ msgid "Invalid unit price format" +#~ msgstr "تنسيق سعر الوحدة غير صالح" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "تعذر إضافة قيمة إضافية بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "تكوين الاختبار" +#~ msgid "Extra good added successfully" +#~ msgstr "تمت إضافة الخير الإضافي بنجاح" + +#~ msgid "Extra good not found" +#~ msgstr "لم يتم العثور على جيدة اضافية" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "ليس لديك الإذن بتعديل هذه السلعة الإضافية" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "تعذر التحديث الإضافي الجيد بسبب خطأ " +#~ "في قاعدة البيانات. يرجى التحقق من " +#~ "سجلات الخادم." -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "Extra good updated successfully" +#~ msgstr "تم تحديث جيد جدًا بنجاح" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "ليس لديك الإذن بحذف هذه السلعة الإضافية" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "لا يمكن حذف السلعة الإضافية التي تمت إضافتها إلى الفاتورة" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "تعذر حذف العناصر الإضافية الجيدة بسبب" +#~ " خطأ في قاعدة البيانات. يرجى التحقق" +#~ " من سجلات الخادم." + +#~ msgid "Project created successfully" +#~ msgstr "تم إنشاء المشروع بنجاح" + +#~ msgid "Invalid discount amount format" +#~ msgstr "تنسيق مبلغ الخصم غير صالح" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "يجب الموافقة على عرض الأسعار قبل إرساله" + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "لا يمكن إرسال عرض الأسعار: %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "ليس لديك الإذن بتحميل المرفقات لهذا الاقتباس" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "ليس لديك الإذن بتنزيل هذا المرفق" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "ليس لديك الإذن بطلب الموافقة على هذا الاقتباس" + +#~ msgid "This quote does not require approval" +#~ msgstr "هذا الاقتباس لا يتطلب الموافقة" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "لا يمكن طلب الموافقة: %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "تعذر طلب الموافقة بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." + +#~ msgid "Approval requested successfully" +#~ msgstr "تم طلب الموافقة بنجاح" + +#~ msgid "This quote is not pending approval" +#~ msgstr "هذا الاقتباس ليس في انتظار الموافقة" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "لا يمكن الموافقة على الاقتباس: %(error)s" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذرت الموافقة على عرض الأسعار بسبب " +#~ "خطأ في قاعدة البيانات. يرجى التحقق " +#~ "من سجلات الخادم." + +#~ msgid "Quote approved successfully" +#~ msgstr "تمت الموافقة على الاقتباس بنجاح" + +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "لا يمكن رفض الاقتباس: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "تكوين الاختبار" +#~ msgid "Quote approval rejected" +#~ msgstr "تم رفض الموافقة على عرض الأسعار" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر إنشاء القالب بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "تكوين الاختبار" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "مرجع متغيرات البيئة" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Template created successfully" +#~ msgstr "تم إنشاء القالب بنجاح" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "ليس لديك الإذن بإنشاء قالب من هذا الاقتباس" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "سابق" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "التالي" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "إحصائيات استخدام الميزة" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر حفظ القالب بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "رمز القسيمة الاختياري" +#~ msgid "Template saved successfully" +#~ msgstr "تم حفظ القالب بنجاح" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "الاهتمام مطلوب" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "ليس لديك الإذن بتصدير هذا الاقتباس" -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "متحرك" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "حدث خطأ أثناء إنشاء ملف PDF: %(error)s" -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "Recipient email address is required" +#~ msgstr "عنوان البريد الإلكتروني للمستلم مطلوب" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "حالة" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "تفاصيل" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "تحميل المزيد" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "فشل" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "تم إرسال الاقتباس بنجاح إلى %(email)s" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "فشل إرسال عرض الأسعار: %(error)s" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "خطأ في إرسال البريد الإلكتروني: %(error)s" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "ليس لديك الإذن بتكرار هذا الاقتباس" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن تكرار الاقتباس بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "تعذر إنهاء عرض الأسعار المكرر بسبب " +#~ "خطأ في قاعدة البيانات. يرجى التحقق " +#~ "من سجلات الخادم." -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "تم إنشاء الاقتباس %(quote_number)s كنسخة مكررة" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Please select an action and at least one quote" +#~ msgstr "الرجاء تحديد إجراء واقتباس واحد على الأقل" -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "Invalid quote IDs" +#~ msgstr "معرفات الاقتباس غير صالحة" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "لم يتم العثور على اقتباسات أو ليس لديك إذن" -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "%(count)d اقتباس (اقتباسات) مكررة" -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "فشل في تكرار %(count)d من الاقتباسات" -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Error duplicating quotes" +#~ msgstr "خطأ في تكرار الاقتباسات" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "جميع الفئات" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "إدارة المشاريع" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "تم وضع علامة على %(count)d من الاقتباسات كمرسلة" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "تعذر وضع علامة على %(count)d من الاقتباسات كمرسلة" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Error updating quotes" +#~ msgstr "حدث خطأ أثناء تحديث عروض الأسعار" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "ممكّن" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "تم حذف %(count)d من الاقتباسات" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "عاجز" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "تعذر حذف %(count)d من الاقتباسات (ربما تكون قيد الاستخدام)" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "Error deleting quotes" +#~ msgstr "حدث خطأ أثناء حذف علامات الاقتباس" -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "إجراء غير صالح" -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "حفظ التغييرات" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "ملحوظة" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "مطلوب الاسم والمشروع والعميل والتكرار وتاريخ التشغيل التالي" -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "Invalid next run date format" +#~ msgstr "تنسيق تاريخ التشغيل التالي غير صالح" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "Invalid end date format" +#~ msgstr "تنسيق تاريخ الانتهاء غير صالح" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "Selected project or client not found" +#~ msgstr "لم يتم العثور على المشروع أو العميل المحدد" -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "تعذر إنشاء فاتورة متكررة بسبب خطأ " +#~ "في قاعدة البيانات. يرجى التحقق من " +#~ "سجلات الخادم." -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "ليس لديك الإذن لعرض هذه الفاتورة المتكررة" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "ليس لديك الإذن بتعديل هذه الفاتورة المتكررة" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "تعذر تحديث الفاتورة المتكررة بسبب خطأ" +#~ " في قاعدة البيانات. يرجى التحقق من" +#~ " سجلات الخادم." -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "لوحة معلومات تصحيح OIDC" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "افحص التكوين وبيانات تعريف الموفر ومستخدمي OIDC" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "تم تحديث الفاتورة المتكررة بنجاح" -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "تكوين الاختبار" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "تكوين أويدك" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "طريقة المصادقة" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "المصدر" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "لم يتم تكوينه" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "معرف العميل" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "سر العميل" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "تعيين" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "لم يتم ضبطه" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "إعادة توجيه URI" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "تم إنشاؤها تلقائيًا" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "النطاقات" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "تعيين المطالبة" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "المطالبة باسم المستخدم" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "المطالبة بالبريد الإلكتروني" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "المطالبة بالاسم الكامل" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "مطالبة المجموعات" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "مجموعة المشرف" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "رسائل البريد الإلكتروني الإدارية" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI بعد تسجيل الخروج" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "البيانات التعريفية للموفر" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "حدث خطأ أثناء تحميل البيانات التعريفية:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "نقطة نهاية الاكتشاف:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "تم تحميل بيانات تعريف الموفر بنجاح" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "نقاط النهاية" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "إذن" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "رمز مميز" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "معلومات المستخدم" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "نهاية الجلسة" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "الميزات المدعومة" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "أنواع الاستجابة" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "أنواع المنح" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "طرق المصادقة" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "المطالبات" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "لم يتم تحميل البيانات التعريفية للموفر. انقر فوق \"اختبار التكوين\" للجلب." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "بريد إلكتروني" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "الاسم الكامل" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "دور" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "تسجيل الدخول الأخير" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "موضوع OIDC" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "غير نشط" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "أبداً" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "لم يقم أي مستخدم بتسجيل الدخول عبر OIDC حتى الآن." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "مرجع متغيرات البيئة" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "قم بتكوين OIDC باستخدام متغيرات البيئة التالية:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "عامل" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "وصف" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "مثال" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "طريقة المصادقة" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "عنوان URL لجهة إصدار موفر OIDC" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "معرف العميل من مزود OIDC" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "سر العميل من مزود OIDC" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "عنوان URL لرد الاتصال (اختياري، يتم إنشاؤه تلقائيًا)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "النطاقات المطلوبة" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "مطالبة تحتوي على اسم المستخدم" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "المطالبة التي تحتوي على البريد الإلكتروني" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "مطالبة تحتوي على الاسم الكامل" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "المطالبة التي تحتوي على مجموعات" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "اسم المجموعة لدور المسؤول (اختياري)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "رسائل البريد الإلكتروني الإدارية مفصولة بفواصل (اختياري)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "ليس لديك الإذن بحذف هذه الفاتورة المتكررة" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "تعذر حذف الفاتورة المتكررة بسبب خطأ " +#~ "في قاعدة البيانات. يرجى التحقق من " +#~ "سجلات الخادم." -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "Start" +#~ msgstr "يبدأ" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "End" +#~ msgstr "نهاية" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "Task" +#~ msgstr "مهمة" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "Notes" +#~ msgstr "ملحوظات" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "طريقة المصادقة" +#~ msgid "Billed" +#~ msgstr "قابلة للفوترة" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Client" +#~ msgstr "عميل" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "User" +#~ msgstr "مستخدم" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "Yes" +#~ msgstr "نعم" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "No" +#~ msgstr "لا" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "تعذر حذف عامل التصفية بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "تعذر تحديث الإعدادات بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "اكتمل الإعداد! شكرًا لك على مساعدتنا في تحسين TimeTracker." -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "Project and task name are required" +#~ msgstr "مطلوب اسم المشروع والمهمة" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "تفاصيل مستخدم OIDC" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "ملف التعريف وهوية OIDC لهذا المستخدم" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "العودة إلى تصحيح OIDC" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "ملف تعريف المستخدم" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "نشيط" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "اللغة المفضلة" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "تم الإنشاء في" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "معلومات أو آي دي سي" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "مصدر OIDC" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "موضوع OIDC (فرعي)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "محلي" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "تم إنشاء هذا المستخدم أو ربطه عبر OIDC. يتم استخدام المصدر والموضوع لتحديد المستخدم بشكل فريد عبر جلسات تسجيل الدخول." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "هذا المستخدم ليس لديه معلومات OIDC. ربما تم إنشاؤها يدويًا أو عبر التسجيل الذاتي بدون OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "إحصائيات النشاط" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "إدخالات الوقت" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "لا أحد" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "الموقت النشط" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "المهام التي تم إنشاؤها" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "تحرير المستخدم" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "عرض كافة المستخدمين" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "مصمم اقتباسات PDF" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "مصمم الاقتباس المرئي" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "قم بسحب وإسقاط العناصر لتصميم تخطيط عرض الأسعار الخاص بك" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "كيفية الاستخدام:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "انقر فوق العناصر من الشريط الجانبي الأيسر لإضافتها إلى اللوحة القماشية. انقر فوق العناصر لتحديدها وتخصيصها في لوحة الخصائص. استخدم أدوات المحاذاة واختصارات لوحة المفاتيح لإجراء تحرير أسرع." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "اختصارات لوحة المفاتيح:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "جدول عناصر الاقتباس" +#~ msgid "Selected project does not exist" +#~ msgstr "المشروع المحدد غير موجود" -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "Task not found" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "المجموع الفرعي للمصروفات" +#~ msgid "You do not have access to this task" +#~ msgstr "ليس لديك حق الوصول إلى هذه المهمة" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "You can only edit tasks you created" +#~ msgstr "يمكنك فقط تحرير المهام التي قمت بإنشائها" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "توفير..." +#~ msgid "Task name is required" +#~ msgstr "اسم المهمة مطلوب" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "Project is required" +#~ msgstr "المشروع مطلوب" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر تحديث الحالة بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر تحديث المهمة بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "تعيين" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "التوثيق" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "قماش شفاف" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "إنشاء معاينة" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "حفظ التصميم" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "عرض الرمز" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "You do not have permission to update this task" +#~ msgstr "ليس لديك الإذن لتحديث هذه المهمة" -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "You can only update tasks you created" +#~ msgstr "يمكنك فقط تحديث المهام التي قمت بإنشائها" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "انطباق على الشبكة (10 بكسل)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "صندوق الأدوات" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "عناصر البحث والمتغيرات..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "عناصر" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "المتغيرات" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "العناصر الأساسية" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "نص مخصص" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "نص" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "عنوان" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "خط" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "المستطيل" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "دائرة" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "معلومات الشركة" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "شعار الشركة" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "اسم الشركة" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "تفاصيل الشركة" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "عنوان" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "هاتف" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "موقع إلكتروني" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "معرف الضريبة" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "تفاصيل الفاتورة" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "رقم الفاتورة" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "فاتورة" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "تاريخ الاستحقاق" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "معلومات العميل" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "اسم العميل" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "عنوان العميل" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "جدول عناصر الاقتباس" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "المجموع الفرعي للمصروفات" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "المجموع الفرعي" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "ضريبة" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "المبلغ الإجمالي" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "شروط" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "الدفع والمشروع" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "تاريخ الدفع" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "طريقة الدفع" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "حالة الدفع" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "المبلغ المدفوع" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "اسم المشروع" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "البريد الإلكتروني للعميل" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "هاتف العميل" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "رمز الاستجابة السريعة" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "الباركود" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "رقم الصفحة" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "التاريخ الحالي" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "العلامة المائية" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "معلومات البنك" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "عملة" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "You can only assign tasks you created" +#~ msgstr "يمكنك فقط تعيين المهام التي قمت بإنشائها" -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "عناصر الفاتورة" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "رقم الفاتورة" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "حالة عرض الأسعار (مسودة/مرسلة/مدفوعة/متأخرة)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "تاريخ الإصدار" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "تاريخ الاستحقاق" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "المبلغ الإجمالي الفرعي" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "معدل الضريبة (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "مبلغ الضريبة" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "المبلغ الإجمالي" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "رمز العملة (يورو، دولار أمريكي، الخ)" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "عناصر الفاتورة" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "الشروط والأحكام" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "حقول العميل" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "اسم الشركة العميلة" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "عنوان البريد الإلكتروني للعميل" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "العنوان الكامل للعميل" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "جهة الاتصال بالعملاء" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "رقم هاتف العميل" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "مجالات الدفع" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "حالة الدفع" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "تاريخ الدفع" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "طريقة الدفع" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "الرقم المرجعي للدفع" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "المبلغ المدفوع" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "المبلغ المستحق" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "ملاحظات الدفع" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "مجالات المشروع" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "اسم المشروع" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "رمز المشروع" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "وصف المشروع" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "مرجع فواتير المشروع" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "حقول الشركة/الإعدادات" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "اسم شركتك" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "عنوان شركتك" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "البريد الإلكتروني لشركتك" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "هاتف شركتك" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "الموقع الإلكتروني لشركتك" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "رقم التعريف الضريبي الخاص بك" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "معلومات حسابك البنكي" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "شروط الفاتورة الافتراضية" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "ملاحظات الفاتورة الافتراضية" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "حقول التاريخ/الوقت" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "التاريخ الحالي" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "تاريخ إنشاء الاقتباس" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "اقتبس تاريخ التحديث الأخير" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "عناصر الفاتورة" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "Selected user does not exist" +#~ msgstr "المستخدم المحدد غير موجود" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "الخدمات القائمة على الوقت والعمل بالساعة" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "وصف السلعة" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "كمية السلعة" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "سعر وحدة السلعة" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "المبلغ الإجمالي للعنصر" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "حلقة النهاية" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "بضائع اضافية" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "مشروع السلع الإضافية" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "اسم الدور" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "المبلغ الإجمالي" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "قماش التصميم" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "حجم الصفحة:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "تكبير" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "تصغير" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "حذف المحدد" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "ملكيات" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "تحذير" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "تحديث الصفحة" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "تحذير" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Task unassigned" +#~ msgstr "تم إلغاء تعيين المهمة" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "تنسيق التاريخ" +#~ msgid "You can only delete tasks you created" +#~ msgstr "يمكنك فقط حذف المهام التي قمت بإنشائها" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "لا يمكن حذف المهمة ذات إدخالات الوقت الموجودة" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "حدد عنصرًا لتحرير خصائصه" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "معاينة قوات الدفاع الشعبي" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر حذف المهمة بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "لم يتم تحديد أية مهام للحذف" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "لا يمكن حذف المهام بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "لم يتم تحديد أي مهام" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "تعذر تحديث المهام بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "أدخل تاريخ الاستحقاق الجديد (YYYY-MM-DD):" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Due date is required" +#~ msgstr "تاريخ النفقات مطلوب" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "تنسيق التاريخ غير صالح" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Database error" +#~ msgstr "دعم قاعدة البيانات" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "%(count)d اقتباس (اقتباسات) مكررة" -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "No tasks updated" +#~ msgstr "لم يتم العثور على مهام" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "تم بنجاح تحديث %(count)d من المصروفات إلى %(status)s" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "تم تخطي %(count)d من النفقات (بدون إذن)" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "Invalid priority value" +#~ msgstr "قيمة الأولوية غير صالحة" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "الكود الذي تم إنشاؤه" +#~ msgid "No user selected for assignment" +#~ msgstr "لم يتم تحديد أي مستخدم للمهمة" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "تم تحديد مستخدم غير صالح" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "لا يمكن تعيين المهام بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "No project selected" +#~ msgstr "لم يتم تحديد أي مشروع" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "تم تحديد مشروع غير صالح" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "لا يمكن نقل المهام بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "يمكن للمسؤولين فقط عرض جميع المهام المتأخرة" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "مسح كافة العناصر؟" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "واضح" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "إعادة التعيين إلى الإعدادات الافتراضية؟" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "إعادة تعيين تخطيط PDF" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "مصمم اقتباسات PDF" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "مصمم الاقتباس المرئي" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "قم بسحب وإسقاط العناصر لتصميم تخطيط عرض الأسعار الخاص بك" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "جدول عناصر الاقتباس" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "جدول عناصر الاقتباس" +#~ msgid "Could not create template due to a database error" +#~ msgstr "تعذر إنشاء القالب بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Could not update template due to a database error" +#~ msgstr "لا يمكن تحديث القالب بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "لا يمكن حذف القالب بسبب خطأ في قاعدة البيانات" -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "بيانات الاقتباس" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "لا يمكن بدء المؤقت لمشروع مؤرشف. الرجاء إلغاء أرشفة المشروع أولاً." -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "رقم الاقتباس" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "لا يمكن بدء المؤقت لمشروع غير نشط" -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "تاريخ الاقتباس" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "المهمة المحددة غير صالحة للمشروع المختار" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "جدول عناصر الاقتباس" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "حقول الاقتباس" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "رقم الاقتباس" +#~ msgid "You do not have access to this project" +#~ msgstr "ليس لديك حق الوصول إلى هذا المشروع." -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "حالة عرض الأسعار (مسودة/مرسلة/مدفوعة/متأخرة)" +#~ msgid "You do not have access to this client" +#~ msgstr "ليس لديك حق الوصول إلى هذه المهمة" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "ملاحظات الاقتباس" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "لديك بالفعل مؤقت نشط. أوقفه قبل البدء بواحدة جديدة." -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "حالة الاقتباس" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر بدء تشغيل المؤقت بسبب خطأ في" +#~ " قاعدة البيانات. يرجى التحقق من سجلات" +#~ " الخادم." -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "تاريخ قبول الاقتباس" +#~ msgid "Unknown" +#~ msgstr "مجهول" -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "تاريخ إنشاء الاقتباس" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "اقتبس تاريخ التحديث الأخير" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "يجب أن يحتوي القالب على مشروع لبدء المؤقت" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "حلقة عناصر الاقتباس" +#~ msgid "Cannot start timer for this project" +#~ msgstr "لا يمكن بدء المؤقت لهذا المشروع" -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "حلقة من خلال عناصر الفاتورة" +#~ msgid "No active timer to stop" +#~ msgstr "لا يوجد مؤقت نشط للتوقف" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "محاذاة لليسار" +#~ msgid "No project" +#~ msgstr "لا يوجد مشروع" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "مركز أفقيا" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "محاذاة لليمين" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "محاذاة الأعلى" +#~ msgid "No active timer to pause" +#~ msgstr "لا يوجد مؤقت نشط للتوقف" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "مركز عموديا" +#~ msgid "Timer paused" +#~ msgstr "توقف الموقت" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "محاذاة القاع" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "لا يمكن إنشاء العميل. يرجى المحاولة مرة أخرى." -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "No active timer to resume" +#~ msgstr "لا يوجد مؤقت نشط للتوقف" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "لا يمكن إنشاء العميل. يرجى المحاولة مرة أخرى." -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "No active timer to adjust" +#~ msgstr "لا يوجد مؤقت نشط للتوقف" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "عنوان البريد الإلكتروني" +#~ msgid "Invalid adjustment value" +#~ msgstr "قيمة الحالة غير صالحة" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "You can only edit your own timers" +#~ msgstr "يمكنك فقط تعديل المؤقتات الخاصة بك" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "تم تحديد مهمة غير صالحة للمشروع المختار" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "Start time cannot be in the future" +#~ msgstr "لا يمكن أن يكون وقت البدء في المستقبل" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "Invalid start date/time format" +#~ msgstr "تنسيق تاريخ/وقت البدء غير صالح" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "End time must be after start time" +#~ msgstr "يجب أن يكون وقت الانتهاء بعد وقت البدء" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "تنسيق تاريخ/وقت الانتهاء غير صالح" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "Timer updated successfully" +#~ msgstr "تم تحديث الموقّت بنجاح" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "You can only delete your own timers" +#~ msgstr "يمكنك فقط حذف الموقتات الخاصة بك" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "Cannot delete an active timer" +#~ msgstr "لا يمكن حذف مؤقت نشط" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر حذف المؤقت بسبب خطأ في قاعدة" +#~ " البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "قوالب إدخال الوقت" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "Invalid date/time format" +#~ msgstr "تنسيق التاريخ/الوقت غير صالح" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "All fields are required" +#~ msgstr "جميع الحقول مطلوبة" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "لا يمكن إنشاء إدخالات الوقت لمشروع " +#~ "مؤرشف. الرجاء إلغاء أرشفة المشروع أولاً." -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "لا يمكن إنشاء إدخالات الوقت لمشروع غير نشط" -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "Invalid task selected" +#~ msgstr "تم تحديد مهمة غير صالحة" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "مفتاح" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "يجب أن يكون تاريخ الانتهاء بعد تاريخ البدء أو يساويه" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "إرسال البريد الإلكتروني" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "لا يمكن أن يتجاوز النطاق الزمني 31 يومًا" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "Invalid time format" +#~ msgstr "تنسيق الوقت غير صالح" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "مفتاح" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "لم يتم العثور على تواريخ صالحة في النطاق المحدد" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "تعذر إنشاء إدخالات مجمعة بسبب خطأ " +#~ "في قاعدة البيانات. يرجى التحقق من " +#~ "سجلات الخادم." -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "حدث خطأ أثناء إنشاء الإدخالات المجمعة. يرجى المحاولة مرة أخرى." -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "يمكنك فقط تكرار أجهزة ضبط الوقت الخاصة بك" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "You can only resume your own timers" +#~ msgstr "يمكنك فقط استئناف الموقتات الخاصة بك" -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "الرمز، الاسم، البريد الإلكتروني" +#~ msgid "Project no longer exists" +#~ msgstr "المشروع لم يعد موجودا" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "العلامة التجارية للشركة" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "افتراضيات الفاتورة" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "تعذر استئناف المؤقت بسبب خطأ في " +#~ "قاعدة البيانات. يرجى التحقق من سجلات " +#~ "الخادم." -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "إعدادات النسخ الاحتياطي" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "ممكّن" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "ضائع" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "استخدم طبقة المقابس الآمنة" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "استخدم طبقة النقل الآمنة" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "على" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "ل" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "قائمة المستخدم" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "أوقات تحميل أسرع" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "الشروط والأحكام" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "إعدادات التصدير" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Invalid timezone selected" +#~ msgstr "تم تحديد منطقة زمنية غير صالحة" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "يجب أن تتراوح الساعات القياسية يوميًا بين 0.5 و24" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "تعديل" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "تحويل" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "أُوكَازيُون" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "إيجار" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "شراء" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "يجب أن تتراوح الساعات القياسية يوميًا بين 0.5 و24" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "Settings saved successfully" +#~ msgstr "تم حفظ الإعدادات بنجاح" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "خطأ في حفظ الإعدادات: %(error)s" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "متاح" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "افتراضيات الفاتورة" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "عملة" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "عنوان URL للصورة" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "شكرا لاختيارك TimeTracker!" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "خطأ في حفظ الإعدادات" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "شفرة" +#~ msgid "Preferences updated" +#~ msgstr "تم تحديث التفضيلات" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "إنشاء رمز API" +#~ msgid "Language updated successfully" +#~ msgstr "تم تحديث اللغة بنجاح" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "اتركه فارغًا للاحتفاظ بكلمة المرور الحالية" +#~ msgid "Invalid language" +#~ msgstr "لغة غير صالحة" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "تم تحديث اللغة إلى %(language)s" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "اسم Webhook مطلوب" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "المهلة (ثواني)" +#~ msgid "Webhook URL is required" +#~ msgstr "عنوان URL للخطاف الإلكتروني مطلوب" -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "نوع المحتوى" +#~ msgid "At least one event must be selected" +#~ msgstr "يجب تحديد حدث واحد على الأقل" -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "دور النظام" +#~ msgid "Webhook created successfully" +#~ msgstr "تم إنشاء Webhook بنجاح" -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "الشروط والأحكام" +#~ msgid "Error creating webhook" +#~ msgstr "حدث خطأ أثناء إنشاء الرد التلقائي على الويب" -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "الخصوصية والتحليلات" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "خطأ في إنشاء خطاف الويب: %(error)s" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "حفظ الإعدادات" +#~ msgid "Webhook updated successfully" +#~ msgstr "تم تحديث Webhook بنجاح" -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "تحميل شعار جديد" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "حدث خطأ أثناء تحديث خطاف الويب: %(error)s" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "معاينة الشعار" +#~ msgid "Webhook deleted successfully" +#~ msgstr "تم حذف الرد التلقائي على الويب بنجاح" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "هل أنت متأكد أنك تريد إزالة شعار الشركة؟" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "حدث خطأ أثناء حذف خطاف الويب: %(error)s" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "إزالة الشعار" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "الرجاء إدخال ساعات مستهدفة صالحة (أكبر من 0)" -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "هناك هدف موجود بالفعل لهذا الأسبوع. " +#~ "يُرجى تعديل الهدف الحالي بدلاً من " +#~ "ذلك." -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "تم إنشاء هدف الوقت الأسبوعي بنجاح!" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "فشل في إنشاء الهدف. يرجى المحاولة مرة أخرى." -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "طلب الموافقة" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "ليس لديك إذن لعرض هذا الهدف" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "تكوين الاختبار" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "ليس لديك إذن لتعديل هذا الهدف" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "فشلت العملية" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "تم تحديث هدف الوقت الأسبوعي بنجاح!" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "فشل تحديث الهدف. يرجى المحاولة مرة أخرى." -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "فشلت العملية" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "ليس لديك إذن بحذف هذا الهدف" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "لوحة القياس والتحليلات" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "تم حذف هدف الوقت الأسبوعي بنجاح" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "المشرف → الإعدادات" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "فشل حذف الهدف. يرجى المحاولة مرة أخرى." -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "اتركه فارغًا للاحتفاظ بكلمة المرور الحالية" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "الوصول إلى بوابة العميل" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "تم تعيينه ل" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "وصول المسؤول" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "الهجرة إلى نظام الأدوار الجديد" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "يهاجر" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "الأدوار" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "لم يتم العثور على مستخدمين." +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "لا يمكن حذف المستخدم \"{name}\" لأن لديه {count} من إدخالات الوقت. لا يمكن حذف المستخدمين الذين لديهم إدخالات زمنية موجودة." +#~ msgid "Update Status" +#~ msgstr "تحديث الحالة" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "لا يمكن حذف المستخدم" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "هل أنت متأكد أنك تريد حذف المستخدم \"{name}\"؟ لا يمكن التراجع عن هذا الإجراء." +#~ msgid "Create Task" +#~ msgstr "إنشاء مهمة" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "حذف المستخدم" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "Send Email" +#~ msgstr "إرسال البريد الإلكتروني" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "Timesheet period rejected" +#~ msgstr "حدد المشروع" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "ملصق" +#~ msgid "Only admins can close periods" +#~ msgstr "يمكن للمسؤولين فقط رفض إدخالات الأميال" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "تحديثات WebSocket الحية" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "مطلوب اسم وسعر الوحدة" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "تم إنشاء العميل" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "المفتاح والتسمية مطلوبان" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Time-off request approved" +#~ msgstr "طلب الموافقة" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "Time-off request rejected" +#~ msgstr "تم رفض الاقتباس" -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "Name and date range are required" +#~ msgstr "مطلوب اسم وسعر الوحدة" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Holiday created" +#~ msgstr "سعر الساعة" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "خياري" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "remaining" +#~ msgstr "متبقي" -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "Success" +#~ msgstr "نجاح" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "Error" +#~ msgstr "خطأ" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "Warning" +#~ msgstr "تحذير" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Information" +#~ msgstr "معلومة" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "تحميل..." -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "Saving..." +#~ msgstr "توفير..." -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "جارٍ الحذف..." -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Cancel" +#~ msgstr "يلغي" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "Confirm" +#~ msgstr "يتأكد" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Close" +#~ msgstr "يغلق" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "Save" +#~ msgstr "يحفظ" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Delete" +#~ msgstr "يمسح" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Edit" +#~ msgstr "يحرر" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "Add" +#~ msgstr "يضيف" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "تعيين كقالب افتراضي" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "قالب HTML" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "رسالة مخصصة" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "المزيد من المتغيرات" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "إنشاء قالب" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "المتغيرات المتاحة" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "متغيرات الفاتورة" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "متغيرات أخرى" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "إرسال البريد الإلكتروني للاختبار" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Remove" +#~ msgstr "يزيل" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "البريد الإلكتروني للمستلم" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "فاتورة" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "تحديث القالب" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "إرسال البريد الإلكتروني للاختبار" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "لم يتم العثور على قوالب البريد الإلكتروني." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "قم بإنشاء قالب البريد الإلكتروني الأول الخاص بك لتخصيص رسائل البريد الإلكتروني الخاصة بالفاتورة." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "إنشاء قالب البريد الإلكتروني" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "حذف قالب البريد الإلكتروني" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "هل أنت متأكد أنك تريد الحذف" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "لا يمكن التراجع عن هذا الإجراء." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "OK" +#~ msgstr "نعم" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "معلومات القالب" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذا؟" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "لديك تغييرات غير محفوظة. هل أنت متأكد أنك تريد المغادرة؟" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "فشلت العملية" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "تمت العملية بنجاح" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "No items selected" +#~ msgstr "لم يتم تحديد أي عناصر" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "Invalid input" +#~ msgstr "إدخال غير صالح" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "This field is required" +#~ msgstr "هذه الخانة مطلوبه" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "No active timer" +#~ msgstr "لا يوجد توقيت نشط" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "توقف الموقت" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "فشل في إيقاف الموقّت" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "Error stopping timer" +#~ msgstr "حدث خطأ أثناء إيقاف الموقّت" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "No form to save" +#~ msgstr "لا يوجد نموذج للحفظ" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "No timer found" +#~ msgstr "لم يتم العثور على مؤقت" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "توقف الموقت بسبب عدم النشاط" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "انتقل إلى المحتوى" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "الملاحة المتنقلة" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "ملاحة" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "لوحة الأوامر" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Commands" +#~ msgstr "تعليقات" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "تبديل الشريط الجانبي" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Dashboard" +#~ msgstr "لوحة القيادة" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Timer" +#~ msgstr "الموقت" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Time entries" +#~ msgstr "إدخالات الوقت" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Reports" +#~ msgstr "التقارير" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Calendar" +#~ msgstr "تقويم" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "عرض التقويم" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "تتبع الوقت" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "طلب الموافقة" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "Tasks" +#~ msgstr "المهام" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "مجلس كانبان" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "الأهداف الأسبوعية" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "قوالب إدخال الوقت" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "CRM" +#~ msgstr "إدارة علاقات العملاء" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "Clients" +#~ msgstr "العملاء" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "يقتبس" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "التمويل والمصروفات" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "رمز" +#~ msgid "Scheduled Reports" +#~ msgstr "التقارير المجدولة" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Invoices" +#~ msgstr "الفواتير" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "الفواتير المتكررة" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "اسم" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Payments" +#~ msgstr "المدفوعات" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Expenses" +#~ msgstr "نفقات" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "Mileage" +#~ msgstr "عدد الكيلومترات" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "لكل يوم" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "تنبيهات الميزانية" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Inventory" +#~ msgstr "جرد" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "عناصر المخزون" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Warehouses" +#~ msgstr "المستودعات" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "الموردين" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "طلبات الشراء" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "أذونات النظام" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "جميع الأذونات المتاحة في النظام" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "العودة إلى الأدوار" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "الأذونات" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "لا يوجد وصف متاح" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "حول الأذونات" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "تحدد الأذونات الإجراءات التي يمكن للمستخدمين تنفيذها في النظام. يتم تعيين هذه الأذونات للأدوار، ويتم تعيين الأدوار للمستخدمين. وهذا يوفر نظامًا مرنًا ودقيقًا للتحكم في الوصول." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "تحرير الدور" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "إنشاء دور جديد" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "اسم الدور" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "اسم فريد لهذا الدور" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "وصف اختياري لهذا الدور" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "الأذونات" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "حدد الأذونات التي يجب أن يتمتع بها هذا الدور:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "تبديل الكل" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "مستويات المخزون" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "تحركات الأسهم" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "التحويلات" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "تحديث الدور" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "إنشاء دور" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "إدارة الأدوار وأذوناتها" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "عرض الأذونات" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "إجمالي الأدوار" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "أدوار النظام" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "الأدوار المخصصة" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "المستخدمون المعينون" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "يكتب" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "الدور الافتراضي" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "مستخدم" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "لا يوجد مستخدمين" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "مخصص" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "منظر" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "أذونات ل" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "لم يتم تعيين أذونات." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "لم يتم العثور على الأدوار." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "حول الأدوار والأذونات" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "الأدوار هي مجموعات من الأذونات التي يمكن تعيينها للمستخدمين. يتم تحديد أدوار النظام مسبقًا ولا يمكن حذفها أو إعادة تسميتها، ولكن يمكن إنشاء أدوار مخصصة لتلبية احتياجاتك المحددة." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "هل أنت متأكد أنك تريد حذف الدور" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "حذف الدور" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "لا يوجد وصف" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "معلومات الدور" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "دور النظام" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "دور مخصص" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "إجمالي الأذونات" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "مخلوق" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "المستخدمون الذين لديهم هذا الدور" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "لم يتم تعيين أي مستخدمين لهذا الدور حتى الآن." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "لم يتم تعيين أي أذونات لهذا الدور." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "العودة إلى المستخدم" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "إدارة الأدوار ل" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "تعيين الأدوار" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "حدد الأدوار التي يجب أن يتمتع بها هذا المستخدم. يرث المستخدمون كافة الأذونات من الأدوار المخصصة لهم." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "تحديث الأدوار" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "الأذونات الفعالة الحالية" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "هذه هي جميع الأذونات التي يمتلكها المستخدم حاليًا من خلال أدواره:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "لا توجد أذونات (قم بتعيين الأدوار لمنح الأذونات)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "إنشاء خطاف ويب" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "تحرير خطاف الويب" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "تكوين خطاف الويب لعمليات التكامل" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "عنوان URL للويب هوك" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "عنوان URL الذي سيتم إرسال أحداث webhook إليه" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "الأحداث" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "حدد الأحداث التي يجب أن تؤدي إلى تشغيل خطاف الويب هذا" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "طريقة HTTP" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "نوع المحتوى" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "ماكس إعادة المحاولة" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "تأخير إعادة المحاولة (بالثواني)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "المهلة (ثواني)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "تجديد السر" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "تحذير: إعادة إنشاء السر سيؤدي إلى إبطال السر الحالي" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "إدارة تكاملات webhook" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "عنوان URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "إحصائيات" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "المجموع" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "لم يتم تكوين خطافات الويب" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "أنشئ خطاف الويب الأول الخاص بك" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "تفاصيل خطاف الويب" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "امتحان" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "سر" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(مقطوع)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "إجمالي التسليمات" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "ناجح" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "التسليم الأخير" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "التسليمات الأخيرة" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "حدث" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "محاولة" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "إجابة" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "وقت" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "إعادة المحاولة" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "لا يوجد تسليمات حتى الآن" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "هل تريد إرسال حدث اختبار webhook؟" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "تم إرسال اختبار الردّ التلقائي على الويب بنجاح." - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "خطأ:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "خطأ غير معروف" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "حدث خطأ أثناء إرسال الرد التلقائي على الويب للاختبار:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "لوحة تحكم التحليلات" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "آخر 7 أيام" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "آخر 30 يومًا" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "آخر 90 يومًا" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "العام الماضي" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "تصدير كـ JSON" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "تصدير CSV" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "المقاييس والرؤى الرئيسية حول تتبع وقتك" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "متوسط ​​الساعات اليومية" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "يعود" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "وقت" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "اتجاه الساعات اليومية" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "قابلة للفوترة مقابل غير قابلة للفوترة" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "الاتجاهات الأسبوعية" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "قبل ساعات" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "التعديلات" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "المدفوعات على مر الزمن" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "الساعات حسب الوقت من اليوم" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "كفاءة المشروع" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "أداء المستخدم" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "فشل تحميل المخططات. يرجى المحاولة مرة أخرى." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "فشل تحديث المخططات. يرجى المحاولة مرة أخرى." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "ساعة من اليوم" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "ربح" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "إعادة ضبط" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Reservations" +#~ msgstr "التحفظات" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "يصدّر" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "المقاييس الرئيسية والرؤى القابلة للتنفيذ" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "مقابل الفترة السابقة" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "من المجموع" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "الإيرادات المحتملة" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "متوسط ​​المعدل:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "اتجاه" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "مشاريع نشطة" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "رؤى وتوصيات" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "تراكمي" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "التوزيع القابل للفوترة" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "نظرة عامة على حالة المهمة" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "اكتملت المهام" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "في تَقَدم" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "للقيام" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "الإيرادات حسب المشروع" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "المدفوعات على مر الزمن" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "طرق الدفع" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "الإيرادات مقابل المدفوعات" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "معدل التحصيل" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "معدل إنجاز المشروع" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "قابلة للفوترة" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "غير قابلة للفوترة" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "مكتمل" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "تم الإلغاء" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "معدل الإنجاز (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "نظرة عامة على رؤى الجوال" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "المتوسط ​​اليومي" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "الساعات اليومية" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "أهم المشاريع" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "تنبيهات انخفاض المخزون" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "Analytics" +#~ msgstr "التحليلات" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "الأدوات والبيانات" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "دخول الوقت" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "استيراد / تصدير" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "ساعات" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "المرشحات المحفوظة" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "يعتمد" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "يرفض" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Admin" +#~ msgstr "مسؤل" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "لوحة تحكم المشرف" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "User Management" +#~ msgstr "إدارة المستخدم" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "الأدوار والأذونات" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "PDF Templates" +#~ msgstr "قوالب PDF" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "Invoice PDF" +#~ msgstr "فاتورة PDF" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "اقتباس قوات الدفاع الشعبي" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "System Settings" +#~ msgstr "إعدادات النظام" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "Settings" +#~ msgstr "إعدادات" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "تكوين البريد الإلكتروني" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "قوالب البريد الإلكتروني" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "تمت الموافقة عليه من قبل" +#~ msgid "OIDC Settings" +#~ msgstr "إعدادات أويدك" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "أضف تعليق" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "أضف تعليق" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "سبب الرفض" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "تتبع من تغير ماذا ومتى" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "المرشحات" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "نوع الكيان" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "جميع الأنواع" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "معرف الكيان" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "كافة المستخدمين" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "فعل" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "جميع الإجراءات" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "تم التحديث" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "تم الحذف" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "النطاق الزمني" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "فلتر" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "الطابع الزمني" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "كيان" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "مجال" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "يتغير" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "سبب" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "تغيير المعلومات" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "رموز API" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "سجلات التدقيق" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Expense Categories" +#~ msgstr "فئات النفقات" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "أسعار البدل اليومي" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "طلب المعلومات" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "System Info" +#~ msgstr "معلومات النظام" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Backups" +#~ msgstr "النسخ الاحتياطية" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "About" +#~ msgstr "عن" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Help" +#~ msgstr "يساعد" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "حماية" +#~ msgid "Open support options" +#~ msgstr "خيارات التصدير" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "Support TimeTracker" +#~ msgstr "دعم تعقب الوقت" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (مصادقة المؤسسة)" +#~ msgid "Open sidebar" +#~ msgstr "تبديل الشريط الجانبي" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "Search" +#~ msgstr "يبحث" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل" +#~ msgid "Theme" +#~ msgstr "سمة" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "Theme options" +#~ msgstr "خيارات التصفية" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "كلمة مرور البوابة" +#~ msgid "Light" +#~ msgstr "ضوء" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "قم بتعيين كلمة المرور الخاصة بك" +#~ msgid "Dark" +#~ msgstr "مظلم" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "System" +#~ msgstr "نظام" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "لا أسماء المستخدمين أو رسائل البريد الإلكتروني" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "Start Timer" +#~ msgstr "بدء الموقت" -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "إرسال البريد الإلكتروني للاختبار" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "العودة إلى المشرف" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "تسجيل الدخول" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "تتبع الوقت. ابق منظمًا." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "قم بتسجيل الدخول إلى حسابك" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "تفاصيل السلعة" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "قم بتعيين كلمة المرور الخاصة بك" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "طريقة المصادقة" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "تسجيل الدخول" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "Stop" +#~ msgstr "ل" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "نصيحة: أدخل اسم مستخدم جديد لإنشاء حسابك." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "أو الاستمرار مع" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "تسجيل الدخول الموحد" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "تحرير الملف الشخصي" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "عضو منذ" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "تعيين كلمة المرور" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "تعيين كلمة المرور" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "قم بتعيين كلمة مرور لحساب بوابة العميل الخاص بك" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "تعيين كلمة المرور" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "تأكيد كلمة المرور" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "قم بتعيين كلمة المرور الخاصة بك" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "تعيين كلمة المرور" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "طريقة المصادقة" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "AI Helper" +#~ msgstr "عرض التعليمات" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "شفرة" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "Change language" +#~ msgstr "تغيير اللغة" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Language" +#~ msgstr "لغة" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "لم يتم تمكين الوصول إلى بوابة العميل لحسابك." +#~ msgid "User menu" +#~ msgstr "قائمة المستخدم" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Supporter" +#~ msgstr "يدعم" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "عاجز" +#~ msgid "Guest" +#~ msgstr "ضيف" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "My Profile" +#~ msgstr "ملفي الشخصي" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "My Settings" +#~ msgstr "إعداداتي" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "License" +#~ msgstr "رخصة" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "Logout" +#~ msgstr "تسجيل الخروج" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "تتمتع TimeTracker؟" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "الكود الذي تم إنشاؤه" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "ممكّن" +#~ msgid "Support / Get key" +#~ msgstr "دعم تعقب الوقت" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "باي بال" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Support / License" +#~ msgstr "لوازم" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "تنبيهات الميزانية والتنبؤ بها" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "مراقبة ميزانيات المشروع والإكمال المتوقع" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "التنبيهات غير المعترف بها" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "تنبيهات حرجة" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "المشاريع مع الميزانيات" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "تنبيهات التحذير" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "التنبيهات النشطة" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "يُقرّ" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "حالة ميزانية المشروع" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "ميزانية" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "مستهلكة" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "متبقي" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "تقدم" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "زيادة" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "أكثر من الميزانية" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "شديد الأهمية" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "صحيح" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "لم يتم العثور على مشاريع بميزانيات" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "تم قبول التنبيه بنجاح" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "فشل في الاعتراف بالتنبيه" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "تحليل الميزانية والتنبؤ بها" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "العودة إلى لوحة القيادة" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "عرض المشروع" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "الميزانية الإجمالية" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "تحليل معدل الحرق" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "معدل الحرق اليومي" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "معدل الحرق الأسبوعي" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "معدل الحرق الشهري" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "إجمالي الفترة" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "بناء على الأخير" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "أيام" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "لا تتوفر بيانات معدل الحرق" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "تقدير الإنجاز" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "تاريخ الانتهاء المقدر" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "الأيام المتبقية" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "مستوى الثقة" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "لا يتوفر تقدير للاكتمال" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "تحليل اتجاه التكلفة" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "متوسط" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "تخصيص الموارد" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "التكلفة الإجمالية" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "سعر الساعة" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "عضو فريق" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "يكلف" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "ساعات ٪" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "يكلف ٪" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "إدخالات" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "التاريخ والوقت" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "موقع" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "تذكير" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "قبل دقائق" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "قبل ساعات" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "قبل أيام" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "يتكرر" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "حتى" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "آخر تحديث" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "العودة إلى التقويم" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "حذف الحدث" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "هل أنت متأكد أنك تريد حذف هذا الحدث؟ لا يمكن التراجع عن هذا الإجراء." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "تحرير الحدث" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "حدث جديد" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "عنوان" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "تاريخ البدء" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "وقت البدء" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "تاريخ الانتهاء" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "وقت النهاية" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "حدث طوال اليوم" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "نوع الحدث" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "مقابلة" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "ميعاد" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "موعد التسليم" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- لا أحد --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "لا يوجد تذكير" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "قبل 5 دقائق" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "قبل 15 دقيقة" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "قبل 30 دقيقة" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "قبل ساعة واحدة" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "قبل يوم واحد" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "لون" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "اختر لونًا لهذا الحدث" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "حدث خاص" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "الأحداث الخاصة مرئية لك فقط" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "حدث متكرر" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "هذا حدث متكرر" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "نمط التكرار" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "استخدم تنسيق RRULE (على سبيل المثال، FREQ=WEEKLY;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "تاريخ انتهاء التكرار" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "تحديث الحدث" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "إنشاء حدث" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "رفض" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "Software update" +#~ msgstr "تاريخ البدء" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "Read more" +#~ msgstr "تحميل المزيد" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "View Release" +#~ msgstr "عرض المهمة" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Quick actions dock" +#~ msgstr "إجراءات سريعة" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Actions" +#~ msgstr "الإجراءات" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "Log Time" +#~ msgstr "وقت السجل" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "New Task" +#~ msgstr "مهمة جديدة" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "New Project" +#~ msgstr "عرض المشروع" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "New Client" +#~ msgstr "تحرير العميل" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "عرض وإدارة الأحداث والمهام وإدخالات الوقت" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "يوم" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "أسبوع" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "شهر" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "اليوم" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "فشلت العملية" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "جارٍ تحميل التقويم..." +#~ msgid "Context included" +#~ msgstr "انتهى العقد" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "تفاصيل الحدث" +#~ msgid "Loading context preview..." +#~ msgstr "معاينة الشعار" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "Send" +#~ msgstr "نهاية" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "Create API Token" +#~ msgstr "إنشاء رمز API" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "Your API Token" +#~ msgstr "رمز API الخاص بك" -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "Usage Examples" +#~ msgstr "أمثلة الاستخدام" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "Are you sure you want to" +#~ msgstr "هل أنت متأكد أنك تريد ذلك" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "deactivate" +#~ msgstr "إلغاء التنشيط" -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "activate" +#~ msgstr "فعل" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "this token?" +#~ msgstr "هذا الرمز؟" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Deactivate Token" +#~ msgstr "إلغاء تنشيط الرمز المميز" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "Activate Token" +#~ msgstr "تفعيل الرمز المميز" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "Deactivate" +#~ msgstr "إلغاء التنشيط" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Activate" +#~ msgstr "فعل" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "هل أنت متأكد أنك تريد حذف هذا " +#~ "الرمز المميز؟ لا يمكن التراجع عن " +#~ "هذا الإجراء." -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "حذف الرمز المميز" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "إنشاء نسخة احتياطية" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "استعادة النسخة الاحتياطية" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "النسخ الاحتياطية الموجودة" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "تحرير ملاحظة العميل" +#~ msgid "Important Information" +#~ msgstr "معلومات هامة" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "العودة إلى العميل" +#~ msgid "Confirm Deletion" +#~ msgstr "تأكيد الحذف" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "عميل:" +#~ msgid "Clear Cache" +#~ msgstr "مسح ذاكرة التخزين المؤقت" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "تم الإنشاء بتاريخ" +#~ msgid "ServiceWorker Status" +#~ msgstr "حالة عامل الخدمة" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "تم التعديل الأخير بتاريخ" +#~ msgid "Clear All Caches" +#~ msgstr "مسح كافة ذاكرات التخزين المؤقت" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "ملاحظة المحتوى" +#~ msgid "ServiceWorker Actions" +#~ msgstr "إجراءات عامل الخدمة" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "ملاحظة داخلية مرئية لفريقك فقط." +#~ msgid "Manual Hard Refresh" +#~ msgstr "التحديث اليدوي الثابت" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "وضع علامة على أنها مهمة" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "All time" +#~ msgstr "كل الوقت" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "بوابة العميل" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "عرض التفاصيل" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "Total Projects" +#~ msgstr "إجمالي المشاريع" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "Active Projects" +#~ msgstr "المشاريع النشطة" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "قيد الانتظار" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "موافقة" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "مرفوض" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "الجميع" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "عرض التفاصيل" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "Database" +#~ msgstr "قاعدة البيانات" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "حالة الموافقة" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "الموافقة مطلوبة" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "لم يتم تحديث أي مشاريع" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "مرحبًا %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "تخصيص الاختصارات" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "إحصائيات" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "أقسام الإدارة" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "الفواتير الأخيرة" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "إدخالات الوقت الأخيرة" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "تحديد العميل..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "فشل في إيقاف الموقّت" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "OIDC Users" +#~ msgstr "مستخدمو OIDC" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "users" +#~ msgstr "المستخدمين" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "أقسام الإدارة" -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Recent Activity" +#~ msgstr "النشاط الأخير" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "انتقل إلى لوحة المعلومات" +#~ msgid "Duration" +#~ msgstr "مدة" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "N/A" +#~ msgstr "لا يوجد" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "عُد" +#~ msgid "Email Configuration & Testing" +#~ msgstr "تكوين واختبار البريد الإلكتروني" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "تكوين واختبار تسليم البريد الإلكتروني" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "تفاصيل الفاتورة" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "تاريخ الإصدار" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "هذه الفاتورة متأخرة بنسبة %(days)d يوم." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "عناصر الفاتورة" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "كمية" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "سعر الوحدة" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "العودة إلى المشرف" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "العودة إلى الفواتير" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "فواتير %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "غير مدفوعة الأجر" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "تأخرت" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "كمية" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "أيام متأخرة" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "قم بتكوين إعدادات البريد الإلكتروني هنا لحفظها في قاعدة البيانات." -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "تمكين تكوين البريد الإلكتروني لقاعدة البيانات" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Mail Server" +#~ msgstr "خادم البريد" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "ميناء البريد" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Use TLS" +#~ msgstr "استخدم طبقة النقل الآمنة" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Use SSL" +#~ msgstr "استخدم طبقة المقابس الآمنة" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "Username" +#~ msgstr "اسم المستخدم" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "Password" +#~ msgstr "كلمة المرور" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Leave empty to keep current" +#~ msgstr "اتركه فارغًا للحفاظ على التيار" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "أولوية" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "المرسل الافتراضي" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "تم تعيينه ل" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "البريد الإلكتروني للمستلم" -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "حفظ التكوين" -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Reset" +#~ msgstr "إعادة ضبط" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "يفتح" +#~ msgid "Email Configuration Status" +#~ msgstr "حالة تكوين البريد الإلكتروني" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Refresh" +#~ msgstr "ينعش" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "تم تكوين البريد الإلكتروني!" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "Your email settings are properly set up." +#~ msgstr "تم إعداد إعدادات البريد الإلكتروني بشكل صحيح." -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "تسجيل الدخول إلى بوابة العميل" +#~ msgid "Email is not configured" +#~ msgstr "لم يتم تكوين البريد الإلكتروني" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "عرض المشاريع والفواتير الخاصة بك" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "يرجى ضبط إعدادات البريد الإلكتروني باستخدام النموذج أعلاه." -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "تسجيل الدخول إلى بوابة العميل" +#~ msgid "Configuration Errors" +#~ msgstr "أخطاء التكوين" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "أدخل بيانات اعتماد البوابة الإلكترونية الخاصة بك للوصول إلى مشاريعك وفواتيرك" +#~ msgid "Configuration Warnings" +#~ msgstr "تحذيرات التكوين" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "Portal_username" +#~ msgid "Current Email Settings" +#~ msgstr "إعدادات البريد الإلكتروني الحالية" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "أدخل كلمة المرور الخاصة بك" +#~ msgid "Port" +#~ msgstr "ميناء" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "Password Set" +#~ msgstr "تعيين كلمة المرور" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "Send Test Email" +#~ msgstr "إرسال البريد الإلكتروني للاختبار" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "Recipient Email Address" +#~ msgstr "عنوان البريد الإلكتروني للمستلم" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "Configuration Guide" +#~ msgstr "دليل التكوين" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "قليل" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "واسطة" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "عالي" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "عاجل" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "Common SMTP Providers" +#~ msgstr "موفري SMTP المشتركين" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "Requires app password" +#~ msgstr "يتطلب كلمة مرور التطبيق" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "Important Notes" +#~ msgstr "ملاحظات هامة" -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "يتطلب Gmail كلمة مرور التطبيق في حالة تمكين المصادقة الثنائية (2FA)." -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "أعد تشغيل التطبيق بعد تغيير إعدادات البريد الإلكتروني" -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "تحقق من قواعد جدار الحماية إذا لم يتم إرسال رسائل البريد الإلكتروني" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "للإنتاج، استخدم خدمة بريد إلكتروني مخصصة مثل SendGrid أو Amazon SES" -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "password is set" +#~ msgstr "تم تعيين كلمة المرور" -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "no password set" +#~ msgstr "لم يتم تعيين كلمة المرور" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "فشل حفظ التكوين. يرجى المحاولة مرة أخرى." -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Success!" +#~ msgstr "نجاح!" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "فشل تحديث الحالة. يرجى المحاولة مرة أخرى." -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "يرجى إدخال عنوان بريد إلكتروني صالح" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "تعليقات" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "أضف تعليق" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "تعليقك" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Sending..." +#~ msgstr "إرسال..." -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "أضف تعليق" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "" +#~ "فشل في إرسال البريد الإلكتروني التجريبي." +#~ " يرجى التحقق من التكوين الخاص بك." -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "قم بتكوين OIDC باستخدام متغيرات البيئة التالية:" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "العودة إلى المشاريع" +#~ msgid "Server" +#~ msgstr "خدمة" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "مشاريع لـ %(client_name)s" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "Users" +#~ msgstr "المستخدمين" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "Groups" +#~ msgstr "مطالبة المجموعات" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "تفاصيل الاقتباس" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "صالحة حتى" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "انتهت صلاحية هذا الاقتباس." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "عناصر الاقتباس" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "رمز التخزين التعريفي" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "الشروط والأحكام" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "قبول الاقتباس" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "رفض الاقتباس" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "العودة إلى الاقتباسات" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "ضائع" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "استخدم طبقة المقابس الآمنة" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "عروض الأسعار لـ %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "منتهي الصلاحية" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "لم يتم العثور على اقتباسات." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "StartTLS" +#~ msgstr "يبدأ" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "المهلة (ثواني)" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "رمز المشروع" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "أكثر من الميزانية" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "ملخص" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "المبلغ الإجمالي" +#~ msgid "Bind password" +#~ msgstr "كلمة المرور" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "لم يتم تحديد أي مهام" +#~ msgid "Enter bind password" +#~ msgstr "أدخل كلمة المرور الخاصة بك" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "لا يوجد نشاط في آخر 30 يومًا." +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Base DN" +#~ msgstr "بناء على الأخير" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "تعيين كلمة المرور" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "قم بتعيين كلمة المرور الخاصة بك للبدء" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "قم بتعيين كلمة المرور الخاصة بك" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "قم بتعيين كلمة مرور لحساب بوابة العميل الخاص بك" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "تأكيد كلمة المرور" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "قم بتأكيد كلمة المرور الخاصة بك" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "إدخالات الوقت لمشاريع %(client_name)s" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "جميع المشاريع" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "من التاريخ" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "حتى الآن" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "إجمالي الإدخالات" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "إجمالي الساعات" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "User object class" +#~ msgstr "استخدم أسعار المشروع بالساعة" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Login attribute" +#~ msgstr "وقت السجل" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "الفواتير الأخيرة" +#~ msgid "Email attribute" +#~ msgstr "عنوان البريد الإلكتروني" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "عرض الكل" +#~ msgid "First name attribute" +#~ msgstr "الاسم الأول" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "اسم العائلة" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "طريقة المصادقة" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Group object class" +#~ msgstr "أهم المشاريع" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "مجموعة المشرف" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "AUTH_METHOD" +#~ msgstr "طريقة المصادقة" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "نشط فقط" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "إجمالي الفواتير" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "إدخالات الوقت الأخيرة" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "تكوين الاختبار" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "تصدير إلى CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "إنشاء عميل" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "العودة إلى العملاء" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "إضافة عميل جديد لإدارة المشاريع ذات الصلة والفواتير." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "أدخل اسم العميل" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "معدل الساعة الافتراضي" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "على سبيل المثال 75.00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "سيتم ملء هذا المعدل تلقائيًا عند إنشاء مشاريع لهذا العميل" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "يدعم تخفيض السعر" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "وصف موجز للعميل أو نطاق المشروع" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "الشخص الذي يمكن الاتصال به" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "اسم جهة الاتصال الأساسية" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@client.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "ساعات الدفع المسبق الشهرية" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "على سبيل المثال 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "اتركه فارغًا إذا لم يكن لدى هذا العميل مخصصات مدفوعة مسبقًا." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "يوم إعادة الضبط المدفوع مسبقًا" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "اليوم من الشهر الذي يتم فيه إعادة ضبط ساعات الدفع المسبق (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "عنوان العميل" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "Test connection" +#~ msgstr "تكوين الاختبار" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "اختر اسمًا وصفيًا واضحًا للمؤسسة العميلة." +#~ msgid "Generate configuration" +#~ msgstr "تكوين الاختبار" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "قم بتعيين السعر القياسي بالساعة لهذا العميل. سيتم نشر هذا تلقائيًا عند إنشاء مشاريع جديدة." +#~ msgid "Environment variables (.env)" +#~ msgstr "مرجع متغيرات البيئة" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "معلومات الاتصال" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "أضف تفاصيل الاتصال لسهولة التواصل وحفظ السجلات." +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "ساعات الدفع المسبق" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "قم بتكوين الساعات المضمنة شهريًا ويوم إعادة التعيين إذا كان لدى هذا العميل باقة التجنيب أو الحزمة المدفوعة مسبقًا." +#~ msgid "Previous" +#~ msgstr "سابق" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "قم بتوفير سياق حول العلاقة مع العميل أو أنواع المشاريع النموذجية." +#~ msgid "Next" +#~ msgstr "التالي" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "تحرير العميل" +#~ msgid "Feature Module Load Status" +#~ msgstr "إحصائيات استخدام الميزة" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "تمكين الوصول إلى البوابة لهذا العميل. يمكن للعملاء تسجيل الدخول باستخدام بيانات الاعتماد الخاصة بهم لعرض المشاريع والفواتير وإدخالات الوقت." +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "تمكين بوابة العميل" +#~ msgid "Optional loaded:" +#~ msgstr "رمز القسيمة الاختياري" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "Attention needed" +#~ msgstr "الاهتمام مطلوب" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Module" +#~ msgstr "متحرك" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "اسم مستخدم البوابة" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "اسم مستخدم فريد لتسجيل الدخول إلى البوابة" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "كلمة مرور البوابة" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "اتركه فارغًا للاحتفاظ بكلمة المرور الحالية" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "قم بتعيين كلمة مرور جديدة أو اتركها فارغة لتبقى محدثة" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "اسم مستخدم البوابة الحالي" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "تحديث العميل" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "إرسال البريد الإلكتروني لإعداد كلمة المرور" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "أرسل بريدًا إلكترونيًا إلى %(email)s يتضمن رابطًا لتعيين كلمة مرور البوابة الإلكترونية الخاصة بهم." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "مطلوب عنوان البريد الإلكتروني لإرسال البريد الإلكتروني لإعداد كلمة المرور. يرجى تعيين عنوان البريد الإلكتروني للعميل أعلاه." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "إحصائيات العميل" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "EST. التكلفة الإجمالية" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "تصفية العملاء" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "تبديل المرشحات" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "إخفاء عوامل التصفية" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "إظهار عوامل التصفية" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "لم يتم العثور على إدخالات زمنية غير مفوترة لهذا المشروع." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "إدخالات الوقت غير المفوترة" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "عناصر الفاتورة" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "وضع علامة على العميل على أنه غير نشط؟" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "تغيير حالة العميل" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "وضع علامة غير نشط" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "تفعيل العميل؟" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "تفعيل العميل" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "حذف العميل" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "إجمالي المشاريع النشطة" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "يدير" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "أساسي" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "المزيد من جهات الاتصال" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "لا توجد اتصالات حتى الآن" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "إضافة جهة اتصال" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "معلومات الاتصال القديمة" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "تتضمن الخطة %(hours)s ساعة لكل دورة. تتم إعادة التعيين في اليوم %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "بداية الدورة الحالية" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "الساعات المتبقية" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "ح" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "استهلكت هذه الدورة" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Status" +#~ msgstr "حالة" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "Details" +#~ msgstr "تفاصيل" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Loaded" +#~ msgstr "تحميل المزيد" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "Failed" +#~ msgstr "فشل" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "—" +#~ msgstr "" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "العميل مرئي" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "مؤرشف" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "ملاحظات داخلية" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "أضف ملاحظة" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "إضافة ملاحظة داخلية حول هذا العميل..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "حفظ الملاحظة" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "تم تحريره" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "مهم" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "قم بإلغاء التحديد" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "علامة هامة" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "لا توجد ملاحظات حتى الآن. أضف ملاحظة لتتبع المعلومات المهمة حول هذا العميل." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "القيمة المقدرة" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "إنشاء فاتورة" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "إنشاء فاتورة" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "إنشاء فاتورة" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "هل أنت متأكد أنك تريد حذف هذه الملاحظة؟" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "حذف الملاحظة" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "تم التعديل عليه" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "رد" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "أكتب ردك..." +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "All Categories" +#~ msgstr "جميع الفئات" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "Project Management" +#~ msgstr "إدارة المشاريع" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "شارك بأفكارك، تحديثاتك، أو أسئلتك..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "يمكنك استخدام فواصل الأسطر لتنسيق تعليقك." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "إضافة صورة" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "لا توجد تعليقات حتى الآن" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "ابدأ المحادثة بإضافة التعليق الأول." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "أضف التعليق الأول" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "تحرير التعليق" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "خلف" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "تعديل التعليق على:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "نشرت أصلا على" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "محتوى التعليق" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "جميع الأنشطة" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "قوالب الوقت" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "لا يوجد نشاط حديث" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "سيظهر النشاط هنا أثناء عملك" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "تحميل المزيد" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "فشل تحميل الأنشطة" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "ممكّن" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "Disabled" +#~ msgstr "عاجز" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Save Changes" +#~ msgstr "حفظ التغييرات" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "تحديد العميل..." +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "Note" +#~ msgstr "ملحوظة" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "لوحة معلومات تصحيح OIDC" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "افحص التكوين وبيانات تعريف الموفر ومستخدمي OIDC" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Test Configuration" +#~ msgstr "تكوين الاختبار" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "OIDC Configuration" +#~ msgstr "تكوين أويدك" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Auth Method" +#~ msgstr "طريقة المصادقة" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Issuer" +#~ msgstr "المصدر" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Not configured" +#~ msgstr "لم يتم تكوينه" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Client ID" +#~ msgstr "معرف العميل" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "Client Secret" +#~ msgstr "سر العميل" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Set" +#~ msgstr "تعيين" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "Not set" +#~ msgstr "لم يتم ضبطه" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "إعادة توجيه URI" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "منتهي" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "تم إنشاؤها تلقائيًا" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "مركز مساعدة TimeTracker" +#~ msgid "Scopes" +#~ msgstr "النطاقات" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "تعيين المطالبة" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "بيت" +#~ msgid "Username Claim" +#~ msgstr "المطالبة باسم المستخدم" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "مهامي ترقيم الصفحات" +#~ msgid "Email Claim" +#~ msgstr "المطالبة بالبريد الإلكتروني" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "Full Name Claim" +#~ msgstr "المطالبة بالاسم الكامل" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Groups Claim" +#~ msgstr "مطالبة المجموعات" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "يتصل" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "رسالة" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "اتجاه" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "الصادرة" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "واردة" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "موضوع" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "المقرر" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "تاريخ المتابعة" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "المحتوى/الملاحظات" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "حفظ الاتصالات" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "الاسم الأول" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "اسم العائلة" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "متحرك" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "قسم" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "اتصال" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "الفواتير" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "اِصطِلاحِيّ" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "تعيين كجهة اتصال أساسية" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "العلامات" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "حفظ جهة الاتصال" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "تعيين الابتدائية" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "لم يتم العثور على جهات اتصال" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "أضف جهة الاتصال الأولى" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "جهة الاتصال الأساسية" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "تاريخ الاتصالات" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "إضافة الاتصالات" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "لم يتم تسجيل أي اتصالات" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "Admin Group" +#~ msgstr "مجموعة المشرف" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "فعل" +#~ msgid "Admin Emails" +#~ msgstr "رسائل البريد الإلكتروني الإدارية" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "Post-Logout URI" +#~ msgstr "URI بعد تسجيل الخروج" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "اسم الصفقة" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "حدد العميل" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "حدد جهة الاتصال" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "منصة" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "قيمة الصفقة" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "احتمالية الفوز" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "تاريخ الإغلاق المتوقع" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "اقتباس ذات صلة" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "حدد اقتباس" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "حفظ الصفقة" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "فاز" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "ضائع" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "جميع المراحل" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "قيمة" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "احتمال" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "الإغلاق المتوقع" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "لم يتم العثور على صفقات" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "إنشاء الصفقة الأولى" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "Provider Metadata" +#~ msgstr "البيانات التعريفية للموفر" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "Error loading metadata:" +#~ msgstr "حدث خطأ أثناء تحميل البيانات التعريفية:" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "Discovery endpoint:" +#~ msgstr "نقطة نهاية الاكتشاف:" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "تم تحميل بيانات تعريف الموفر بنجاح" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "Endpoints" +#~ msgstr "نقاط النهاية" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Authorization" +#~ msgstr "إذن" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "مشروع ذو صلة" +#~ msgid "Token" +#~ msgstr "رمز مميز" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "UserInfo" +#~ msgstr "معلومات المستخدم" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "End Session" +#~ msgstr "نهاية الجلسة" -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "JWKS URI" +#~ msgstr "JWKS URI" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "تاريخ الهدف" +#~ msgid "Supported Features" +#~ msgstr "الميزات المدعومة" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "عرض التفاصيل الكاملة" +#~ msgid "Response Types" +#~ msgstr "أنواع الاستجابة" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "أنواع المنح" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "لقد تم ذكرك" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "عرض المهمة والرد" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "فاتورة" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "فاتورة متأخرة" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "عرض الفاتورة" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "يقتبس" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "تم رفض الموافقة على عرض الأسعار" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "عرض الاقتباس" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "الموافقة مطلوبة" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "مراجعة الاقتباس" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "تمت الموافقة على الاقتباس" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "انتهت صلاحية الاقتباس" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "تنتهي صلاحية الاقتباس قريبًا" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "تم إرسال الاقتباس" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "مهمة المهمة" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "عرض المهمة" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "تفاصيل الاختبار" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "ملخصك الأسبوعي" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 طلب سيء" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "طلب غير صالح" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "الطلب الذي قدمته غير صالح أو يحتوي على أخطاء. قد يكون هذا بسبب:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "بيانات النموذج مفقودة أو غير صالحة" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "معلمات الطلب غير صحيحة" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "ليس لديك إذن للوصول إلى هذا المورد. قد يكون هذا بسبب:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "امتيازات غير كافية" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "لم يتم تسجيل الدخول" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "قيود الوصول إلى الموارد" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "حدث خطأ ما من جانبنا. يرجى المحاولة مرة أخرى لاحقا." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "حاول ثانية" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "حدث خطأ أثناء معالجة طلبك." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "تحديث الصفحة" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "اذهب إلى تسجيل الدخول" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "على سبيل المثال، السفر والوجبات واللوازم المكتبية" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "على سبيل المثال، السفر، الوجبات" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "وصف مختصر لهذه الفئة..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "على سبيل المثال، طائرة اتحاد كرة القدم، أواني اتحاد كرة القدم" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "على سبيل المثال، 19.00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "فئة" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "المعلومات الأساسية" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "على سبيل المثال، رحلة إلى برلين" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "تفاصيل اضافية حول النفقات..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "فئة" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "تفاصيل الدفع" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "موقع" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "تفاصيل الدفع" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "على سبيل المثال، لوفتهانزا" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "معلومات إضافية" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "رقم الاستلام/الفاتورة" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "على سبيل المثال، INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "على سبيل المثال، مؤتمر، اجتماع مع العملاء، عاجل" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "ملاحظات إضافية..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "خياري" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "تصفية النفقات" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "حذف النفقات المحددة" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "تغيير الحالة للنفقات المحددة" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "المرتبطة" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "رفض النفقات" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "توضيح سبب رفض هذه النفقات..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "هل أنت متأكد أنك تريد حذف هذه النفقات؟" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "حذف النفقات" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "Auth Methods" +#~ msgstr "طرق المصادقة" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "استيراد/تصدير البيانات" +#~ msgid "Claims" +#~ msgstr "المطالبات" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "استيراد/تصدير" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "لم يتم تحميل البيانات التعريفية للموفر." +#~ " انقر فوق \"اختبار التكوين\" للجلب." -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "قم باستيراد البيانات من أجهزة تتبع الوقت الأخرى أو قم بتصدير بياناتك للامتثال للقانون العام لحماية البيانات والنسخ الاحتياطية" +#~ msgid "Email" +#~ msgstr "بريد إلكتروني" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "استيراد البيانات" +#~ msgid "Full Name" +#~ msgstr "الاسم الكامل" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "Role" +#~ msgstr "دور" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "استيراد إدخالات الوقت من ملف CSV" +#~ msgid "Last Login" +#~ msgstr "تسجيل الدخول الأخير" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "اختر ملف CSV" +#~ msgid "OIDC Subject" +#~ msgstr "موضوع OIDC" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "تحميل القالب" +#~ msgid "Inactive" +#~ msgstr "غير نشط" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Never" +#~ msgstr "أبداً" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "لم يقم أي مستخدم بتسجيل الدخول عبر OIDC حتى الآن." -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Environment Variables Reference" +#~ msgstr "مرجع متغيرات البيئة" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "قم بتكوين OIDC باستخدام متغيرات البيئة التالية:" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Variable" +#~ msgstr "عامل" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Description" +#~ msgstr "وصف" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Example" +#~ msgstr "مثال" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "استيراد من تبديل المسار" +#~ msgid "Authentication method" +#~ msgstr "طريقة المصادقة" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "استيراد إدخالات الوقت من Toggl Track" +#~ msgid "OIDC provider issuer URL" +#~ msgstr "عنوان URL لجهة إصدار موفر OIDC" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "استيراد من تبديل" +#~ msgid "Client ID from OIDC provider" +#~ msgstr "معرف العميل من مزود OIDC" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "الاستيراد من الحصاد" +#~ msgid "Client secret from OIDC provider" +#~ msgstr "سر العميل من مزود OIDC" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "استيراد إدخالات الوقت من الحصاد" +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "عنوان URL لرد الاتصال (اختياري، يتم إنشاؤه تلقائيًا)" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "استعادة من النسخة الاحتياطية" +#~ msgid "Requested scopes" +#~ msgstr "النطاقات المطلوبة" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "Claim containing username" +#~ msgstr "مطالبة تحتوي على اسم المستخدم" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "تاريخ الاستيراد" +#~ msgid "Claim containing email" +#~ msgstr "المطالبة التي تحتوي على البريد الإلكتروني" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "تصدير البيانات" +#~ msgid "Claim containing full name" +#~ msgstr "مطالبة تحتوي على الاسم الكامل" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "تصدير البيانات الكاملة (GDPR)" +#~ msgid "Claim containing groups" +#~ msgstr "المطالبة التي تحتوي على مجموعات" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "تصدير جميع بياناتك الشخصية" +#~ msgid "Group name for admin role (optional)" +#~ msgstr "اسم المجموعة لدور المسؤول (اختياري)" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "تصدير كـ JSON" +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "رسائل البريد الإلكتروني الإدارية مفصولة بفواصل (اختياري)" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "تصدير بصيغة ZIP" +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "تصدير تمت تصفيته" +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "تصدير بيانات محددة باستخدام المرشحات" +#~ msgid "Basic Config" +#~ msgstr "" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "التصدير باستخدام المرشحات" +#~ msgid "Test Connection" +#~ msgstr "" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "OIDC Issuer URL" +#~ msgstr "" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "إنشاء نسخة احتياطية كاملة لقاعدة البيانات" +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "تاريخ التصدير" +#~ msgid "Enter client secret" +#~ msgstr "" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "رمز API" +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "معرف مساحة العمل" +#~ msgid "Authentication Method" +#~ msgstr "طريقة المصادقة" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "يستورد" +#~ msgid "OIDC Only" +#~ msgstr "" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "معرف الحساب" +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Both" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "SSO and local password authentication" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "Step 2: Test Connection" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" + +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" + +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" + +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" + +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" + +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" + +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" + +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" + +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" + +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" + +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" + +#~ msgid "Generate Configuration" +#~ msgstr "" + +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" + +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" + +#~ msgid "OIDC User Details" +#~ msgstr "تفاصيل مستخدم OIDC" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "ملف التعريف وهوية OIDC لهذا المستخدم" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "العودة إلى تصحيح OIDC" + +#~ msgid "User Profile" +#~ msgstr "ملف تعريف المستخدم" + +#~ msgid "Active" +#~ msgstr "نشيط" + +#~ msgid "Preferred Language" +#~ msgstr "اللغة المفضلة" + +#~ msgid "Created At" +#~ msgstr "تم الإنشاء في" + +#~ msgid "OIDC Information" +#~ msgstr "معلومات أو آي دي سي" + +#~ msgid "OIDC Issuer" +#~ msgstr "مصدر OIDC" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "موضوع OIDC (فرعي)" + +#~ msgid "Local" +#~ msgstr "محلي" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "تم إنشاء هذا المستخدم أو ربطه عبر" +#~ " OIDC. يتم استخدام المصدر والموضوع " +#~ "لتحديد المستخدم بشكل فريد عبر جلسات " +#~ "تسجيل الدخول." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "هذا المستخدم ليس لديه معلومات OIDC. " +#~ "ربما تم إنشاؤها يدويًا أو عبر " +#~ "التسجيل الذاتي بدون OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "إحصائيات النشاط" + +#~ msgid "Time Entries" +#~ msgstr "إدخالات الوقت" + +#~ msgid "None" +#~ msgstr "لا أحد" + +#~ msgid "Active Timer" +#~ msgstr "الموقت النشط" + +#~ msgid "Tasks Created" +#~ msgstr "المهام التي تم إنشاؤها" + +#~ msgid "Edit User" +#~ msgstr "تحرير المستخدم" + +#~ msgid "View All Users" +#~ msgstr "عرض كافة المستخدمين" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "مصمم اقتباسات PDF" + +#~ msgid "Visual Invoice Designer" +#~ msgstr "مصمم الاقتباس المرئي" + +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "قم بسحب وإسقاط العناصر لتصميم تخطيط عرض الأسعار الخاص بك" + +#~ msgid "How to use:" +#~ msgstr "كيفية الاستخدام:" + +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "انقر فوق العناصر من الشريط الجانبي " +#~ "الأيسر لإضافتها إلى اللوحة القماشية. " +#~ "انقر فوق العناصر لتحديدها وتخصيصها في" +#~ " لوحة الخصائص. استخدم أدوات المحاذاة " +#~ "واختصارات لوحة المفاتيح لإجراء تحرير " +#~ "أسرع." + +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "اختصارات لوحة المفاتيح:" + +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" + +#~ msgid "Items Table:" +#~ msgstr "جدول عناصر الاقتباس" + +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" + +#~ msgid "Expenses Table:" +#~ msgstr "المجموع الفرعي للمصروفات" + +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" + +#~ msgid "Saving:" +#~ msgstr "توفير..." + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" + +#~ msgid "Preview:" +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" + +#~ msgid "See" +#~ msgstr "تعيين" + +#~ msgid "for full documentation." +#~ msgstr "التوثيق" + +#~ msgid "Clear Canvas" +#~ msgstr "قماش شفاف" + +#~ msgid "Generate Preview" +#~ msgstr "إنشاء معاينة" + +#~ msgid "Save Design" +#~ msgstr "حفظ التصميم" + +#~ msgid "View Code" +#~ msgstr "عرض الرمز" + +#~ msgid "Export JSON" +#~ msgstr "" + +#~ msgid "Import JSON" +#~ msgstr "" + +#~ msgid "Snap to Grid (10px)" +#~ msgstr "انطباق على الشبكة (10 بكسل)" + +#~ msgid "Toolbox" +#~ msgstr "صندوق الأدوات" + +#~ msgid "Search elements & variables..." +#~ msgstr "عناصر البحث والمتغيرات..." + +#~ msgid "Elements" +#~ msgstr "عناصر" + +#~ msgid "Variables" +#~ msgstr "المتغيرات" + +#~ msgid "Basic Elements" +#~ msgstr "العناصر الأساسية" + +#~ msgid "Custom Text" +#~ msgstr "نص مخصص" + +#~ msgid "Text" +#~ msgstr "نص" + +#~ msgid "Heading" +#~ msgstr "عنوان" + +#~ msgid "Line" +#~ msgstr "خط" + +#~ msgid "Rectangle" +#~ msgstr "المستطيل" + +#~ msgid "Circle" +#~ msgstr "دائرة" + +#~ msgid "Company Info" +#~ msgstr "معلومات الشركة" + +#~ msgid "Company Logo" +#~ msgstr "شعار الشركة" + +#~ msgid "Company Name" +#~ msgstr "اسم الشركة" + +#~ msgid "Company Details" +#~ msgstr "تفاصيل الشركة" + +#~ msgid "Address" +#~ msgstr "عنوان" + +#~ msgid "Phone" +#~ msgstr "هاتف" + +#~ msgid "Website" +#~ msgstr "موقع إلكتروني" + +#~ msgid "Tax ID" +#~ msgstr "معرف الضريبة" + +#~ msgid "Invoice Data" +#~ msgstr "تفاصيل الفاتورة" + +#~ msgid "Invoice Number" +#~ msgstr "رقم الفاتورة" + +#~ msgid "Invoice Date" +#~ msgstr "فاتورة" + +#~ msgid "Due Date" +#~ msgstr "تاريخ الاستحقاق" + +#~ msgid "Client Info" +#~ msgstr "معلومات العميل" + +#~ msgid "Client Name" +#~ msgstr "اسم العميل" + +#~ msgid "Client Address" +#~ msgstr "عنوان العميل" + +#~ msgid "Items Table" +#~ msgstr "جدول عناصر الاقتباس" + +#~ msgid "Expenses Table" +#~ msgstr "المجموع الفرعي للمصروفات" + +#~ msgid "Subtotal" +#~ msgstr "المجموع الفرعي" + +#~ msgid "Tax" +#~ msgstr "ضريبة" + +#~ msgid "Total Amount" +#~ msgstr "المبلغ الإجمالي" + +#~ msgid "Terms" +#~ msgstr "شروط" + +#~ msgid "Payment & Project" +#~ msgstr "الدفع والمشروع" + +#~ msgid "Payment Date" +#~ msgstr "تاريخ الدفع" + +#~ msgid "Payment Method" +#~ msgstr "طريقة الدفع" + +#~ msgid "Payment Status" +#~ msgstr "حالة الدفع" + +#~ msgid "Amount Paid" +#~ msgstr "المبلغ المدفوع" + +#~ msgid "Project Name" +#~ msgstr "اسم المشروع" + +#~ msgid "Client Email" +#~ msgstr "البريد الإلكتروني للعميل" + +#~ msgid "Client Phone" +#~ msgstr "هاتف العميل" + +#~ msgid "QR Code" +#~ msgstr "رمز الاستجابة السريعة" + +#~ msgid "Barcode" +#~ msgstr "الباركود" + +#~ msgid "Page Number" +#~ msgstr "رقم الصفحة" + +#~ msgid "Current Date" +#~ msgstr "التاريخ الحالي" + +#~ msgid "Watermark" +#~ msgstr "العلامة المائية" + +#~ msgid "Bank Info" +#~ msgstr "معلومات البنك" + +#~ msgid "Currency" +#~ msgstr "عملة" + +#~ msgid "Decorative Image" +#~ msgstr "" + +#~ msgid "Invoice Fields" +#~ msgstr "عناصر الفاتورة" + +#~ msgid "Invoice number" +#~ msgstr "رقم الفاتورة" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "حالة عرض الأسعار (مسودة/مرسلة/مدفوعة/متأخرة)" + +#~ msgid "Issue date" +#~ msgstr "تاريخ الإصدار" + +#~ msgid "Due date" +#~ msgstr "تاريخ الاستحقاق" + +#~ msgid "Subtotal amount" +#~ msgstr "المبلغ الإجمالي الفرعي" + +#~ msgid "Tax rate (%)" +#~ msgstr "معدل الضريبة (%)" + +#~ msgid "Tax amount" +#~ msgstr "مبلغ الضريبة" + +#~ msgid "Total amount" +#~ msgstr "المبلغ الإجمالي" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "رمز العملة (يورو، دولار أمريكي، الخ)" + +#~ msgid "Invoice notes" +#~ msgstr "عناصر الفاتورة" + +#~ msgid "Terms & conditions" +#~ msgstr "الشروط والأحكام" + +#~ msgid "Client Fields" +#~ msgstr "حقول العميل" + +#~ msgid "Client company name" +#~ msgstr "اسم الشركة العميلة" + +#~ msgid "Client email address" +#~ msgstr "عنوان البريد الإلكتروني للعميل" + +#~ msgid "Client full address" +#~ msgstr "العنوان الكامل للعميل" + +#~ msgid "Client contact person" +#~ msgstr "جهة الاتصال بالعملاء" + +#~ msgid "Client phone number" +#~ msgstr "رقم هاتف العميل" + +#~ msgid "Payment Fields" +#~ msgstr "مجالات الدفع" + +#~ msgid "Payment status" +#~ msgstr "حالة الدفع" + +#~ msgid "Payment date" +#~ msgstr "تاريخ الدفع" + +#~ msgid "Payment method" +#~ msgstr "طريقة الدفع" + +#~ msgid "Payment reference number" +#~ msgstr "الرقم المرجعي للدفع" + +#~ msgid "Amount paid" +#~ msgstr "المبلغ المدفوع" + +#~ msgid "Outstanding amount" +#~ msgstr "المبلغ المستحق" + +#~ msgid "Payment notes" +#~ msgstr "ملاحظات الدفع" + +#~ msgid "Project Fields" +#~ msgstr "مجالات المشروع" + +#~ msgid "Project name" +#~ msgstr "اسم المشروع" + +#~ msgid "Project code" +#~ msgstr "رمز المشروع" + +#~ msgid "Project description" +#~ msgstr "وصف المشروع" + +#~ msgid "Project billing reference" +#~ msgstr "مرجع فواتير المشروع" + +#~ msgid "Company/Settings Fields" +#~ msgstr "حقول الشركة/الإعدادات" + +#~ msgid "Your company name" +#~ msgstr "اسم شركتك" + +#~ msgid "Your company address" +#~ msgstr "عنوان شركتك" + +#~ msgid "Your company email" +#~ msgstr "البريد الإلكتروني لشركتك" + +#~ msgid "Your company phone" +#~ msgstr "هاتف شركتك" + +#~ msgid "Your company website" +#~ msgstr "الموقع الإلكتروني لشركتك" + +#~ msgid "Your tax ID number" +#~ msgstr "رقم التعريف الضريبي الخاص بك" + +#~ msgid "Your bank account info" +#~ msgstr "معلومات حسابك البنكي" + +#~ msgid "Default invoice terms" +#~ msgstr "شروط الفاتورة الافتراضية" + +#~ msgid "Default invoice notes" +#~ msgstr "ملاحظات الفاتورة الافتراضية" + +#~ msgid "Date/Time Fields" +#~ msgstr "حقول التاريخ/الوقت" + +#~ msgid "Current date" +#~ msgstr "التاريخ الحالي" + +#~ msgid "Invoice creation date" +#~ msgstr "تاريخ إنشاء الاقتباس" + +#~ msgid "Invoice last update date" +#~ msgstr "اقتبس تاريخ التحديث الأخير" + +#~ msgid "Invoice Items Loop" +#~ msgstr "عناصر الفاتورة" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" + +#~ msgid "Time-based items only" +#~ msgstr "الخدمات القائمة على الوقت والعمل بالساعة" + +#~ msgid "Item description" +#~ msgstr "وصف السلعة" + +#~ msgid "Item quantity" +#~ msgstr "كمية السلعة" + +#~ msgid "Item unit price" +#~ msgstr "سعر وحدة السلعة" + +#~ msgid "Item total amount" +#~ msgstr "المبلغ الإجمالي للعنصر" + +#~ msgid "End loop" +#~ msgstr "حلقة النهاية" + +#~ msgid "Extra Goods Loop" +#~ msgstr "بضائع اضافية" + +#~ msgid "Loop through extra goods only" +#~ msgstr "مشروع السلع الإضافية" + +#~ msgid "Good name" +#~ msgstr "اسم الدور" + +#~ msgid "Good total amount" +#~ msgstr "المبلغ الإجمالي" + +#~ msgid "Design Canvas" +#~ msgstr "قماش التصميم" + +#~ msgid "Page Size:" +#~ msgstr "حجم الصفحة:" + +#~ msgid "Zoom In" +#~ msgstr "تكبير" + +#~ msgid "Zoom Out" +#~ msgstr "تصغير" + +#~ msgid "Delete Selected" +#~ msgstr "حذف المحدد" + +#~ msgid "Properties" +#~ msgstr "ملكيات" + +#~ msgid "Warnings" +#~ msgstr "تحذير" + +#~ msgid "Refresh warnings" +#~ msgstr "تحديث الصفحة" + +#~ msgid "No warnings" +#~ msgstr "تحذير" + +#~ msgid "Template Settings" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "تنسيق التاريخ" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "حدد عنصرًا لتحرير خصائصه" + +#~ msgid "PDF Preview" +#~ msgstr "معاينة قوات الدفاع الشعبي" + +#~ msgid "Page Size" +#~ msgstr "" + +#~ msgid "Refresh Preview" +#~ msgstr "" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "" + +#~ msgid "Close Preview" +#~ msgstr "" + +#~ msgid "Zoom Level" +#~ msgstr "" + +#~ msgid "Reset Zoom" +#~ msgstr "" + +#~ msgid "Fit to Width" +#~ msgstr "" + +#~ msgid "Fit Width" +#~ msgstr "" + +#~ msgid "Fit to Height" +#~ msgstr "" + +#~ msgid "Fit Height" +#~ msgstr "" + +#~ msgid "Actual Size" +#~ msgstr "" + +#~ msgid "Generating preview..." +#~ msgstr "" + +#~ msgid "Preview Error" +#~ msgstr "" + +#~ msgid "Retry" +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "الكود الذي تم إنشاؤه" + +#~ msgid "Change Image" +#~ msgstr "" + +#~ msgid "Upload Image" +#~ msgstr "" + +#~ msgid "Remove Image" +#~ msgstr "" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "" + +#~ msgid "Uploading..." +#~ msgstr "" + +#~ msgid "Error: Image update function not found" +#~ msgstr "" + +#~ msgid "Failed to upload image" +#~ msgstr "" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "مسح كافة العناصر؟" + +#~ msgid "Clear" +#~ msgstr "واضح" + +#~ msgid "Exit Fullscreen" +#~ msgstr "" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "إعادة التعيين إلى الإعدادات الافتراضية؟" + +#~ msgid "Reset PDF Layout" +#~ msgstr "إعادة تعيين تخطيط PDF" + +#~ msgid "Error importing template" +#~ msgstr "" + +#~ msgid "PDF Quote Designer" +#~ msgstr "مصمم اقتباسات PDF" + +#~ msgid "Visual Quote Designer" +#~ msgstr "مصمم الاقتباس المرئي" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "قم بسحب وإسقاط العناصر لتصميم تخطيط عرض الأسعار الخاص بك" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "جدول عناصر الاقتباس" + +#~ msgid "Quote Items Table:" +#~ msgstr "جدول عناصر الاقتباس" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" + +#~ msgid "Quote Data" +#~ msgstr "بيانات الاقتباس" + +#~ msgid "Quote Number" +#~ msgstr "رقم الاقتباس" + +#~ msgid "Quote Date" +#~ msgstr "تاريخ الاقتباس" + +#~ msgid "Quote Items Table" +#~ msgstr "جدول عناصر الاقتباس" + +#~ msgid "Quote Fields" +#~ msgstr "حقول الاقتباس" + +#~ msgid "Quote number" +#~ msgstr "رقم الاقتباس" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "حالة عرض الأسعار (مسودة/مرسلة/مدفوعة/متأخرة)" + +#~ msgid "Quote notes" +#~ msgstr "ملاحظات الاقتباس" + +#~ msgid "Quote status" +#~ msgstr "حالة الاقتباس" + +#~ msgid "Quote accepted date" +#~ msgstr "تاريخ قبول الاقتباس" + +#~ msgid "Quote creation date" +#~ msgstr "تاريخ إنشاء الاقتباس" + +#~ msgid "Quote last update date" +#~ msgstr "اقتبس تاريخ التحديث الأخير" + +#~ msgid "Quote Items Loop" +#~ msgstr "حلقة عناصر الاقتباس" + +#~ msgid "Loop through invoice items" +#~ msgstr "حلقة من خلال عناصر الفاتورة" + +#~ msgid "Align Left" +#~ msgstr "محاذاة لليسار" + +#~ msgid "Center Horizontally" +#~ msgstr "مركز أفقيا" + +#~ msgid "Align Right" +#~ msgstr "محاذاة لليمين" + +#~ msgid "Align Top" +#~ msgstr "محاذاة الأعلى" + +#~ msgid "Center Vertically" +#~ msgstr "مركز عموديا" + +#~ msgid "Align Bottom" +#~ msgstr "محاذاة القاع" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "" + +#~ msgid "Email Mappings" +#~ msgstr "" + +#~ msgid "Add Mapping" +#~ msgstr "" + +#~ msgid "Salesman Initial" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "عنوان البريد الإلكتروني" + +#~ msgid "Pattern/Domain" +#~ msgstr "" + +#~ msgid "Add Email Mapping" +#~ msgstr "" + +#~ msgid "1-20 letters only" +#~ msgstr "" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" + +#~ msgid "Direct Email Address" +#~ msgstr "" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" + +#~ msgid "Edit Email Mapping" +#~ msgstr "" + +#~ msgid "Error saving mapping" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" + +#~ msgid "Error deleting mapping" +#~ msgstr "" + +#~ msgid "Time Entry Requirements" +#~ msgstr "قوالب إدخال الوقت" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" + +#~ msgid "Require description when logging time" +#~ msgstr "" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" + +#~ msgid "Support visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "مفتاح" + +#~ msgid "— key sent by email." +#~ msgstr "إرسال البريد الإلكتروني" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "مفتاح" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "الرمز، الاسم، البريد الإلكتروني" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "العلامة التجارية للشركة" + +#~ msgid "Invoice Defaults" +#~ msgstr "افتراضيات الفاتورة" + +#~ msgid "Backup Settings" +#~ msgstr "إعدادات النسخ الاحتياطي" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "ممكّن" + +#~ msgid "Host" +#~ msgstr "ضائع" + +#~ msgid "SSL" +#~ msgstr "استخدم طبقة المقابس الآمنة" + +#~ msgid "TLS" +#~ msgstr "استخدم طبقة النقل الآمنة" + +#~ msgid "on" +#~ msgstr "على" + +#~ msgid "off" +#~ msgstr "ل" + +#~ msgid "User DN" +#~ msgstr "قائمة المستخدم" + +#~ msgid "User login attribute" +#~ msgstr "أوقات تحميل أسرع" + +#~ msgid "Test LDAP Connection" +#~ msgstr "الشروط والأحكام" + +#~ msgid "Export Settings" +#~ msgstr "إعدادات التصدير" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "تعديل" + +#~ msgid "Transfer" +#~ msgstr "تحويل" + +#~ msgid "Sale" +#~ msgstr "أُوكَازيُون" + +#~ msgid "Rent" +#~ msgstr "إيجار" + +#~ msgid "Purchase" +#~ msgstr "شراء" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "متاح" + +#~ msgid "Use environment default" +#~ msgstr "افتراضيات الفاتورة" + +#~ msgid "currently" +#~ msgstr "عملة" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "عنوان URL للصورة" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "شفرة" + +#~ msgid "Hosted API key" +#~ msgstr "إنشاء رمز API" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "اتركه فارغًا للاحتفاظ بكلمة المرور الحالية" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "المهلة (ثواني)" + +#~ msgid "Context limit" +#~ msgstr "نوع المحتوى" + +#~ msgid "System prompt" +#~ msgstr "دور النظام" + +#~ msgid "Test AI connection" +#~ msgstr "الشروط والأحكام" + +#~ msgid "Privacy & Analytics" +#~ msgstr "الخصوصية والتحليلات" + +#~ msgid "Save Settings" +#~ msgstr "حفظ الإعدادات" + +#~ msgid "Upload New Logo" +#~ msgstr "تحميل شعار جديد" + +#~ msgid "Logo Preview" +#~ msgstr "معاينة الشعار" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "هل أنت متأكد أنك تريد إزالة شعار الشركة؟" + +#~ msgid "Remove Logo" +#~ msgstr "إزالة الشعار" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "طلب الموافقة" + +#~ msgid "Testing connection..." +#~ msgstr "تكوين الاختبار" + +#~ msgid "Connection failed." +#~ msgstr "فشلت العملية" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "فشلت العملية" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "لوحة القياس والتحليلات" + +#~ msgid "Admin → Settings" +#~ msgstr "المشرف → الإعدادات" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "اتركه فارغًا للاحتفاظ بكلمة المرور الحالية" + +#~ msgid "Client Portal Access" +#~ msgstr "الوصول إلى بوابة العميل" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "تم تعيينه ل" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "وصول المسؤول" + +#~ msgid "Migrate to new role system" +#~ msgstr "الهجرة إلى نظام الأدوار الجديد" + +#~ msgid "Migrate" +#~ msgstr "يهاجر" + +#~ msgid "Roles" +#~ msgstr "الأدوار" + +#~ msgid "No users found." +#~ msgstr "لم يتم العثور على مستخدمين." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "لا يمكن حذف المستخدم \"{name}\" لأن " +#~ "لديه {count} من إدخالات الوقت. لا " +#~ "يمكن حذف المستخدمين الذين لديهم إدخالات" +#~ " زمنية موجودة." + +#~ msgid "Cannot Delete User" +#~ msgstr "لا يمكن حذف المستخدم" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "هل أنت متأكد أنك تريد حذف المستخدم" +#~ " \"{name}\"؟ لا يمكن التراجع عن هذا" +#~ " الإجراء." + +#~ msgid "Delete User" +#~ msgstr "حذف المستخدم" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "ملصق" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "خياري" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "تعيين كقالب افتراضي" + +#~ msgid "HTML Template" +#~ msgstr "قالب HTML" + +#~ msgid "Custom Message" +#~ msgstr "رسالة مخصصة" + +#~ msgid "More Variables" +#~ msgstr "المزيد من المتغيرات" + +#~ msgid "Create Template" +#~ msgstr "إنشاء قالب" + +#~ msgid "Available Variables" +#~ msgstr "المتغيرات المتاحة" + +#~ msgid "Invoice Variables" +#~ msgstr "متغيرات الفاتورة" + +#~ msgid "Other Variables" +#~ msgstr "متغيرات أخرى" + +#~ msgid "Send test email" +#~ msgstr "إرسال البريد الإلكتروني للاختبار" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "البريد الإلكتروني للمستلم" + +#~ msgid "Invoice ID" +#~ msgstr "فاتورة" + +#~ msgid "Update Template" +#~ msgstr "تحديث القالب" + +#~ msgid "Failed to send test email." +#~ msgstr "إرسال البريد الإلكتروني للاختبار" + +#~ msgid "No email templates found." +#~ msgstr "لم يتم العثور على قوالب البريد الإلكتروني." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" +#~ "قم بإنشاء قالب البريد الإلكتروني الأول" +#~ " الخاص بك لتخصيص رسائل البريد " +#~ "الإلكتروني الخاصة بالفاتورة." + +#~ msgid "Create Email Template" +#~ msgstr "إنشاء قالب البريد الإلكتروني" + +#~ msgid "Delete Email Template" +#~ msgstr "حذف قالب البريد الإلكتروني" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "هل أنت متأكد أنك تريد الحذف" + +#~ msgid "This action cannot be undone." +#~ msgstr "لا يمكن التراجع عن هذا الإجراء." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "معلومات القالب" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "رمز" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "اسم" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "أذونات النظام" + +#~ msgid "All available permissions in the system" +#~ msgstr "جميع الأذونات المتاحة في النظام" + +#~ msgid "Back to Roles" +#~ msgstr "العودة إلى الأدوار" + +#~ msgid "permissions" +#~ msgstr "الأذونات" + +#~ msgid "No description available" +#~ msgstr "لا يوجد وصف متاح" + +#~ msgid "About Permissions" +#~ msgstr "حول الأذونات" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "تحدد الأذونات الإجراءات التي يمكن " +#~ "للمستخدمين تنفيذها في النظام. يتم تعيين" +#~ " هذه الأذونات للأدوار، ويتم تعيين " +#~ "الأدوار للمستخدمين. وهذا يوفر نظامًا " +#~ "مرنًا ودقيقًا للتحكم في الوصول." + +#~ msgid "Edit Role" +#~ msgstr "تحرير الدور" + +#~ msgid "Create New Role" +#~ msgstr "إنشاء دور جديد" + +#~ msgid "Role Name" +#~ msgstr "اسم الدور" + +#~ msgid "A unique name for this role" +#~ msgstr "اسم فريد لهذا الدور" + +#~ msgid "Optional description of this role" +#~ msgstr "وصف اختياري لهذا الدور" + +#~ msgid "Permissions" +#~ msgstr "الأذونات" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "حدد الأذونات التي يجب أن يتمتع بها هذا الدور:" + +#~ msgid "Toggle All" +#~ msgstr "تبديل الكل" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "تحديث الدور" + +#~ msgid "Create Role" +#~ msgstr "إنشاء دور" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "إدارة الأدوار وأذوناتها" + +#~ msgid "View Permissions" +#~ msgstr "عرض الأذونات" + +#~ msgid "Total Roles" +#~ msgstr "إجمالي الأدوار" + +#~ msgid "System Roles" +#~ msgstr "أدوار النظام" + +#~ msgid "Custom Roles" +#~ msgstr "الأدوار المخصصة" + +#~ msgid "Assigned Users" +#~ msgstr "المستخدمون المعينون" + +#~ msgid "Type" +#~ msgstr "يكتب" + +#~ msgid "Default role" +#~ msgstr "الدور الافتراضي" + +#~ msgid "user" +#~ msgstr "مستخدم" + +#~ msgid "No users" +#~ msgstr "لا يوجد مستخدمين" + +#~ msgid "Custom" +#~ msgstr "مخصص" + +#~ msgid "View" +#~ msgstr "منظر" + +#~ msgid "Permissions for" +#~ msgstr "أذونات ل" + +#~ msgid "No permissions assigned." +#~ msgstr "لم يتم تعيين أذونات." + +#~ msgid "No roles found." +#~ msgstr "لم يتم العثور على الأدوار." + +#~ msgid "About Roles & Permissions" +#~ msgstr "حول الأدوار والأذونات" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "الأدوار هي مجموعات من الأذونات التي " +#~ "يمكن تعيينها للمستخدمين. يتم تحديد أدوار" +#~ " النظام مسبقًا ولا يمكن حذفها أو " +#~ "إعادة تسميتها، ولكن يمكن إنشاء أدوار " +#~ "مخصصة لتلبية احتياجاتك المحددة." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "هل أنت متأكد أنك تريد حذف الدور" + +#~ msgid "Delete Role" +#~ msgstr "حذف الدور" + +#~ msgid "No description" +#~ msgstr "لا يوجد وصف" + +#~ msgid "Role Information" +#~ msgstr "معلومات الدور" + +#~ msgid "System Role" +#~ msgstr "دور النظام" + +#~ msgid "Custom Role" +#~ msgstr "دور مخصص" + +#~ msgid "Total Permissions" +#~ msgstr "إجمالي الأذونات" + +#~ msgid "Created" +#~ msgstr "مخلوق" + +#~ msgid "Users with this Role" +#~ msgstr "المستخدمون الذين لديهم هذا الدور" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "لم يتم تعيين أي مستخدمين لهذا الدور حتى الآن." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "لم يتم تعيين أي أذونات لهذا الدور." + +#~ msgid "Back to User" +#~ msgstr "العودة إلى المستخدم" + +#~ msgid "Manage Roles for" +#~ msgstr "إدارة الأدوار ل" + +#~ msgid "Assign Roles" +#~ msgstr "تعيين الأدوار" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "حدد الأدوار التي يجب أن يتمتع بها" +#~ " هذا المستخدم. يرث المستخدمون كافة " +#~ "الأذونات من الأدوار المخصصة لهم." + +#~ msgid "Update Roles" +#~ msgstr "تحديث الأدوار" + +#~ msgid "Current Effective Permissions" +#~ msgstr "الأذونات الفعالة الحالية" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "هذه هي جميع الأذونات التي يمتلكها المستخدم حاليًا من خلال أدواره:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "لا توجد أذونات (قم بتعيين الأدوار لمنح الأذونات)" + +#~ msgid "Create Webhook" +#~ msgstr "إنشاء خطاف ويب" + +#~ msgid "Edit Webhook" +#~ msgstr "تحرير خطاف الويب" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "تكوين خطاف الويب لعمليات التكامل" + +#~ msgid "Webhook URL" +#~ msgstr "عنوان URL للويب هوك" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "عنوان URL الذي سيتم إرسال أحداث webhook إليه" + +#~ msgid "Events" +#~ msgstr "الأحداث" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "حدد الأحداث التي يجب أن تؤدي إلى تشغيل خطاف الويب هذا" + +#~ msgid "HTTP Method" +#~ msgstr "طريقة HTTP" + +#~ msgid "Content Type" +#~ msgstr "نوع المحتوى" + +#~ msgid "Max Retries" +#~ msgstr "ماكس إعادة المحاولة" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "تأخير إعادة المحاولة (بالثواني)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "المهلة (ثواني)" + +#~ msgid "Regenerate Secret" +#~ msgstr "تجديد السر" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "تحذير: إعادة إنشاء السر سيؤدي إلى إبطال السر الحالي" + +#~ msgid "Manage webhook integrations" +#~ msgstr "إدارة تكاملات webhook" + +#~ msgid "URL" +#~ msgstr "عنوان URL" + +#~ msgid "Statistics" +#~ msgstr "إحصائيات" + +#~ msgid "Total" +#~ msgstr "المجموع" + +#~ msgid "No webhooks configured" +#~ msgstr "لم يتم تكوين خطافات الويب" + +#~ msgid "Create Your First Webhook" +#~ msgstr "أنشئ خطاف الويب الأول الخاص بك" + +#~ msgid "Webhook details" +#~ msgstr "تفاصيل خطاف الويب" + +#~ msgid "Test" +#~ msgstr "امتحان" + +#~ msgid "Secret" +#~ msgstr "سر" + +#~ msgid "(truncated)" +#~ msgstr "(مقطوع)" + +#~ msgid "Total Deliveries" +#~ msgstr "إجمالي التسليمات" + +#~ msgid "Successful" +#~ msgstr "ناجح" + +#~ msgid "Last Delivery" +#~ msgstr "التسليم الأخير" + +#~ msgid "Recent Deliveries" +#~ msgstr "التسليمات الأخيرة" + +#~ msgid "Event" +#~ msgstr "حدث" + +#~ msgid "Attempt" +#~ msgstr "محاولة" + +#~ msgid "Response" +#~ msgstr "إجابة" + +#~ msgid "Time" +#~ msgstr "وقت" + +#~ msgid "Retrying" +#~ msgstr "إعادة المحاولة" + +#~ msgid "No deliveries yet" +#~ msgstr "لا يوجد تسليمات حتى الآن" + +#~ msgid "Send a test webhook event?" +#~ msgstr "هل تريد إرسال حدث اختبار webhook؟" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "تم إرسال اختبار الردّ التلقائي على الويب بنجاح." + +#~ msgid "Error:" +#~ msgstr "خطأ:" + +#~ msgid "Unknown error" +#~ msgstr "خطأ غير معروف" + +#~ msgid "Error sending test webhook:" +#~ msgstr "حدث خطأ أثناء إرسال الرد التلقائي على الويب للاختبار:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "لوحة تحكم التحليلات" + +#~ msgid "Last 7 days" +#~ msgstr "آخر 7 أيام" + +#~ msgid "Last 30 days" +#~ msgstr "آخر 30 يومًا" + +#~ msgid "Last 90 days" +#~ msgstr "آخر 90 يومًا" + +#~ msgid "Last year" +#~ msgstr "العام الماضي" + +#~ msgid "Export all charts as PNG" +#~ msgstr "تصدير كـ JSON" + +#~ msgid "Export Charts" +#~ msgstr "تصدير CSV" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "المقاييس والرؤى الرئيسية حول تتبع وقتك" + +#~ msgid "Avg Daily Hours" +#~ msgstr "متوسط ​​الساعات اليومية" + +#~ msgid "Regular" +#~ msgstr "يعود" + +#~ msgid "Overtime" +#~ msgstr "وقت" + +#~ msgid "Daily Hours Trend" +#~ msgstr "اتجاه الساعات اليومية" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "قابلة للفوترة مقابل غير قابلة للفوترة" + +#~ msgid "Weekly Trends" +#~ msgstr "الاتجاهات الأسبوعية" + +#~ msgid "Hours Forecast" +#~ msgstr "قبل ساعات" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "المدفوعات على مر الزمن" + +#~ msgid "Hours by Time of Day" +#~ msgstr "الساعات حسب الوقت من اليوم" + +#~ msgid "Project Efficiency" +#~ msgstr "كفاءة المشروع" + +#~ msgid "User Performance" +#~ msgstr "أداء المستخدم" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "فشل تحميل المخططات. يرجى المحاولة مرة أخرى." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "فشل تحديث المخططات. يرجى المحاولة مرة أخرى." + +#~ msgid "Hour of Day" +#~ msgstr "ساعة من اليوم" + +#~ msgid "Revenue" +#~ msgstr "ربح" + +#~ msgid "Forecast" +#~ msgstr "إعادة ضبط" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "يصدّر" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "المقاييس الرئيسية والرؤى القابلة للتنفيذ" + +#~ msgid "vs previous period" +#~ msgstr "مقابل الفترة السابقة" + +#~ msgid "of total" +#~ msgstr "من المجموع" + +#~ msgid "Potential Revenue" +#~ msgstr "الإيرادات المحتملة" + +#~ msgid "Avg rate:" +#~ msgstr "متوسط ​​المعدل:" + +#~ msgid "Trend" +#~ msgstr "اتجاه" + +#~ msgid "active projects" +#~ msgstr "مشاريع نشطة" + +#~ msgid "Insights & Recommendations" +#~ msgstr "رؤى وتوصيات" + +#~ msgid "Cumulative" +#~ msgstr "تراكمي" + +#~ msgid "Billable Distribution" +#~ msgstr "التوزيع القابل للفوترة" + +#~ msgid "Task Status Overview" +#~ msgstr "نظرة عامة على حالة المهمة" + +#~ msgid "Tasks Completed" +#~ msgstr "اكتملت المهام" + +#~ msgid "In Progress" +#~ msgstr "في تَقَدم" + +#~ msgid "To Do" +#~ msgstr "للقيام" + +#~ msgid "Revenue by Project" +#~ msgstr "الإيرادات حسب المشروع" + +#~ msgid "Payments Over Time" +#~ msgstr "المدفوعات على مر الزمن" + +#~ msgid "Payment Methods" +#~ msgstr "طرق الدفع" + +#~ msgid "Revenue vs Payments" +#~ msgstr "الإيرادات مقابل المدفوعات" + +#~ msgid "Collection Rate" +#~ msgstr "معدل التحصيل" + +#~ msgid "Project Completion Rate" +#~ msgstr "معدل إنجاز المشروع" + +#~ msgid "Billable" +#~ msgstr "قابلة للفوترة" + +#~ msgid "Non-Billable" +#~ msgstr "غير قابلة للفوترة" + +#~ msgid "Completed" +#~ msgstr "مكتمل" + +#~ msgid "Cancelled" +#~ msgstr "تم الإلغاء" + +#~ msgid "Completion Rate (%)" +#~ msgstr "معدل الإنجاز (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "نظرة عامة على رؤى الجوال" + +#~ msgid "Daily Avg" +#~ msgstr "المتوسط ​​اليومي" + +#~ msgid "Daily Hours" +#~ msgstr "الساعات اليومية" + +#~ msgid "Top Projects" +#~ msgstr "أهم المشاريع" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "دخول الوقت" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "ساعات" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "يعتمد" + +#~ msgid "Reject" +#~ msgstr "يرفض" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "تمت الموافقة عليه من قبل" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "أضف تعليق" + +#~ msgid "Approval comment" +#~ msgstr "أضف تعليق" + +#~ msgid "Rejection reason" +#~ msgstr "سبب الرفض" + +#~ msgid "Track who changed what and when" +#~ msgstr "تتبع من تغير ماذا ومتى" + +#~ msgid "Filters" +#~ msgstr "المرشحات" + +#~ msgid "Entity Type" +#~ msgstr "نوع الكيان" + +#~ msgid "All Types" +#~ msgstr "جميع الأنواع" + +#~ msgid "Entity ID" +#~ msgstr "معرف الكيان" + +#~ msgid "All Users" +#~ msgstr "كافة المستخدمين" + +#~ msgid "Action" +#~ msgstr "فعل" + +#~ msgid "All Actions" +#~ msgstr "جميع الإجراءات" + +#~ msgid "Updated" +#~ msgstr "تم التحديث" + +#~ msgid "Deleted" +#~ msgstr "تم الحذف" + +#~ msgid "Time Range" +#~ msgstr "النطاق الزمني" + +#~ msgid "Filter" +#~ msgstr "فلتر" + +#~ msgid "Timestamp" +#~ msgstr "الطابع الزمني" + +#~ msgid "Entity" +#~ msgstr "كيان" + +#~ msgid "Field" +#~ msgstr "مجال" + +#~ msgid "Change" +#~ msgstr "يتغير" + +#~ msgid "Reason" +#~ msgstr "سبب" + +#~ msgid "Change Information" +#~ msgstr "تغيير المعلومات" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "طلب المعلومات" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "حماية" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (مصادقة المؤسسة)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "كلمة مرور البوابة" + +#~ msgid "Reset your password" +#~ msgstr "قم بتعيين كلمة المرور الخاصة بك" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "لا أسماء المستخدمين أو رسائل البريد الإلكتروني" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "إرسال البريد الإلكتروني للاختبار" + +#~ msgid "Back to sign in" +#~ msgstr "العودة إلى المشرف" + +#~ msgid "Login" +#~ msgstr "تسجيل الدخول" + +#~ msgid "Track time. Stay organized." +#~ msgstr "تتبع الوقت. ابق منظمًا." + +#~ msgid "Sign in to your account" +#~ msgstr "قم بتسجيل الدخول إلى حسابك" + +#~ msgid "Demo credentials" +#~ msgstr "تفاصيل السلعة" + +#~ msgid "Forgot your password?" +#~ msgstr "قم بتعيين كلمة المرور الخاصة بك" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "طريقة المصادقة" + +#~ msgid "Sign in" +#~ msgstr "تسجيل الدخول" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "نصيحة: أدخل اسم مستخدم جديد لإنشاء حسابك." + +#~ msgid "Or continue with" +#~ msgstr "أو الاستمرار مع" + +#~ msgid "Single Sign-On" +#~ msgstr "تسجيل الدخول الموحد" + +#~ msgid "Edit Profile" +#~ msgstr "تحرير الملف الشخصي" + +#~ msgid "Member Since" +#~ msgstr "عضو منذ" + +#~ msgid "Reset password" +#~ msgstr "تعيين كلمة المرور" + +#~ msgid "Choose a new password" +#~ msgstr "تعيين كلمة المرور" + +#~ msgid "Enter a new password for your account." +#~ msgstr "قم بتعيين كلمة مرور لحساب بوابة العميل الخاص بك" + +#~ msgid "New password" +#~ msgstr "تعيين كلمة المرور" + +#~ msgid "At least 8 characters" +#~ msgstr "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل" + +#~ msgid "Confirm password" +#~ msgstr "تأكيد كلمة المرور" + +#~ msgid "Repeat your new password" +#~ msgstr "قم بتعيين كلمة المرور الخاصة بك" + +#~ msgid "Update password" +#~ msgstr "تعيين كلمة المرور" + +#~ msgid "Enter authentication code" +#~ msgstr "طريقة المصادقة" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "شفرة" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "لم يتم تمكين الوصول إلى بوابة العميل لحسابك." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "عاجز" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "الكود الذي تم إنشاؤه" + +#~ msgid "Enable 2FA" +#~ msgstr "ممكّن" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "تنبيهات الميزانية والتنبؤ بها" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "مراقبة ميزانيات المشروع والإكمال المتوقع" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "التنبيهات غير المعترف بها" + +#~ msgid "Critical Alerts" +#~ msgstr "تنبيهات حرجة" + +#~ msgid "Projects with Budgets" +#~ msgstr "المشاريع مع الميزانيات" + +#~ msgid "Warning Alerts" +#~ msgstr "تنبيهات التحذير" + +#~ msgid "Active Alerts" +#~ msgstr "التنبيهات النشطة" + +#~ msgid "Acknowledge" +#~ msgstr "يُقرّ" + +#~ msgid "Project Budget Status" +#~ msgstr "حالة ميزانية المشروع" + +#~ msgid "Budget" +#~ msgstr "ميزانية" + +#~ msgid "Consumed" +#~ msgstr "مستهلكة" + +#~ msgid "Remaining" +#~ msgstr "متبقي" + +#~ msgid "Progress" +#~ msgstr "تقدم" + +#~ msgid "over" +#~ msgstr "زيادة" + +#~ msgid "Over Budget" +#~ msgstr "أكثر من الميزانية" + +#~ msgid "Critical" +#~ msgstr "شديد الأهمية" + +#~ msgid "Healthy" +#~ msgstr "صحيح" + +#~ msgid "No projects with budgets found" +#~ msgstr "لم يتم العثور على مشاريع بميزانيات" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "تم قبول التنبيه بنجاح" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "فشل في الاعتراف بالتنبيه" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "تحليل الميزانية والتنبؤ بها" + +#~ msgid "Back to Dashboard" +#~ msgstr "العودة إلى لوحة القيادة" + +#~ msgid "View Project" +#~ msgstr "عرض المشروع" + +#~ msgid "Total Budget" +#~ msgstr "الميزانية الإجمالية" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "تحليل معدل الحرق" + +#~ msgid "Daily Burn Rate" +#~ msgstr "معدل الحرق اليومي" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "معدل الحرق الأسبوعي" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "معدل الحرق الشهري" + +#~ msgid "Period Total" +#~ msgstr "إجمالي الفترة" + +#~ msgid "Based on last" +#~ msgstr "بناء على الأخير" + +#~ msgid "days" +#~ msgstr "أيام" + +#~ msgid "No burn rate data available" +#~ msgstr "لا تتوفر بيانات معدل الحرق" + +#~ msgid "Completion Estimate" +#~ msgstr "تقدير الإنجاز" + +#~ msgid "Estimated Completion Date" +#~ msgstr "تاريخ الانتهاء المقدر" + +#~ msgid "days remaining" +#~ msgstr "الأيام المتبقية" + +#~ msgid "Confidence Level" +#~ msgstr "مستوى الثقة" + +#~ msgid "No completion estimate available" +#~ msgstr "لا يتوفر تقدير للاكتمال" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "تحليل اتجاه التكلفة" + +#~ msgid "Average" +#~ msgstr "متوسط" + +#~ msgid "Resource Allocation" +#~ msgstr "تخصيص الموارد" + +#~ msgid "Total Cost" +#~ msgstr "التكلفة الإجمالية" + +#~ msgid "Hourly Rate" +#~ msgstr "سعر الساعة" + +#~ msgid "Team Member" +#~ msgstr "عضو فريق" + +#~ msgid "Cost" +#~ msgstr "يكلف" + +#~ msgid "Hours %" +#~ msgstr "ساعات ٪" + +#~ msgid "Cost %" +#~ msgstr "يكلف ٪" + +#~ msgid "Entries" +#~ msgstr "إدخالات" + +#~ msgid "Date & Time" +#~ msgstr "التاريخ والوقت" + +#~ msgid "Location" +#~ msgstr "موقع" + +#~ msgid "Reminder" +#~ msgstr "تذكير" + +#~ msgid "minutes before" +#~ msgstr "قبل دقائق" + +#~ msgid "hours before" +#~ msgstr "قبل ساعات" + +#~ msgid "days before" +#~ msgstr "قبل أيام" + +#~ msgid "Recurring" +#~ msgstr "يتكرر" + +#~ msgid "Until" +#~ msgstr "حتى" + +#~ msgid "Last Updated" +#~ msgstr "آخر تحديث" + +#~ msgid "Back to Calendar" +#~ msgstr "العودة إلى التقويم" + +#~ msgid "Delete Event" +#~ msgstr "حذف الحدث" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "هل أنت متأكد أنك تريد حذف هذا الحدث؟ لا يمكن التراجع عن هذا الإجراء." + +#~ msgid "Edit Event" +#~ msgstr "تحرير الحدث" + +#~ msgid "New Event" +#~ msgstr "حدث جديد" + +#~ msgid "Title" +#~ msgstr "عنوان" + +#~ msgid "Start Date" +#~ msgstr "تاريخ البدء" + +#~ msgid "Start Time" +#~ msgstr "وقت البدء" + +#~ msgid "End Date" +#~ msgstr "تاريخ الانتهاء" + +#~ msgid "End Time" +#~ msgstr "وقت النهاية" + +#~ msgid "All Day Event" +#~ msgstr "حدث طوال اليوم" + +#~ msgid "Event Type" +#~ msgstr "نوع الحدث" + +#~ msgid "Meeting" +#~ msgstr "مقابلة" + +#~ msgid "Appointment" +#~ msgstr "ميعاد" + +#~ msgid "Deadline" +#~ msgstr "موعد التسليم" + +#~ msgid "-- None --" +#~ msgstr "-- لا أحد --" + +#~ msgid "No reminder" +#~ msgstr "لا يوجد تذكير" + +#~ msgid "5 minutes before" +#~ msgstr "قبل 5 دقائق" + +#~ msgid "15 minutes before" +#~ msgstr "قبل 15 دقيقة" + +#~ msgid "30 minutes before" +#~ msgstr "قبل 30 دقيقة" + +#~ msgid "1 hour before" +#~ msgstr "قبل ساعة واحدة" + +#~ msgid "1 day before" +#~ msgstr "قبل يوم واحد" + +#~ msgid "Color" +#~ msgstr "لون" + +#~ msgid "Choose a color for this event" +#~ msgstr "اختر لونًا لهذا الحدث" + +#~ msgid "Private Event" +#~ msgstr "حدث خاص" + +#~ msgid "Private events are only visible to you" +#~ msgstr "الأحداث الخاصة مرئية لك فقط" + +#~ msgid "Recurring Event" +#~ msgstr "حدث متكرر" + +#~ msgid "This is a recurring event" +#~ msgstr "هذا حدث متكرر" + +#~ msgid "Recurrence Pattern" +#~ msgstr "نمط التكرار" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "استخدم تنسيق RRULE (على سبيل المثال، FREQ=WEEKLY;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "تاريخ انتهاء التكرار" + +#~ msgid "Update Event" +#~ msgstr "تحديث الحدث" + +#~ msgid "Create Event" +#~ msgstr "إنشاء حدث" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "عرض وإدارة الأحداث والمهام وإدخالات الوقت" + +#~ msgid "Day" +#~ msgstr "يوم" + +#~ msgid "Week" +#~ msgstr "أسبوع" + +#~ msgid "Month" +#~ msgstr "شهر" + +#~ msgid "Today" +#~ msgstr "اليوم" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "جارٍ تحميل التقويم..." + +#~ msgid "Event Details" +#~ msgstr "تفاصيل الحدث" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "تحرير ملاحظة العميل" + +#~ msgid "Back to Client" +#~ msgstr "العودة إلى العميل" + +#~ msgid "Client:" +#~ msgstr "عميل:" + +#~ msgid "Created on" +#~ msgstr "تم الإنشاء بتاريخ" + +#~ msgid "Last edited on" +#~ msgstr "تم التعديل الأخير بتاريخ" + +#~ msgid "Note Content" +#~ msgstr "ملاحظة المحتوى" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "ملاحظة داخلية مرئية لفريقك فقط." + +#~ msgid "Mark as important" +#~ msgstr "وضع علامة على أنها مهمة" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "بوابة العميل" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "عرض التفاصيل" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "قيد الانتظار" + +#~ msgid "Approved" +#~ msgstr "موافقة" + +#~ msgid "Rejected" +#~ msgstr "مرفوض" + +#~ msgid "All" +#~ msgstr "الجميع" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "عرض التفاصيل" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "حالة الموافقة" + +#~ msgid "A time entry approval was requested." +#~ msgstr "الموافقة مطلوبة" + +#~ msgid "An approval was updated." +#~ msgstr "لم يتم تحديث أي مشاريع" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "مرحبًا %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "تخصيص الاختصارات" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "إحصائيات" + +#~ msgid "Pending actions" +#~ msgstr "أقسام الإدارة" + +#~ msgid "Recent invoices" +#~ msgstr "الفواتير الأخيرة" + +#~ msgid "Recent time entries" +#~ msgstr "إدخالات الوقت الأخيرة" + +#~ msgid "Select at least one widget." +#~ msgstr "تحديد العميل..." + +#~ msgid "Failed to save." +#~ msgstr "فشل في إيقاف الموقّت" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "انتقل إلى لوحة المعلومات" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "عُد" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "تفاصيل الفاتورة" + +#~ msgid "Issue Date" +#~ msgstr "تاريخ الإصدار" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "هذه الفاتورة متأخرة بنسبة %(days)d يوم." + +#~ msgid "Invoice Items" +#~ msgstr "عناصر الفاتورة" + +#~ msgid "Quantity" +#~ msgstr "كمية" + +#~ msgid "Unit Price" +#~ msgstr "سعر الوحدة" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "العودة إلى الفواتير" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "فواتير %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "غير مدفوعة الأجر" + +#~ msgid "Overdue" +#~ msgstr "تأخرت" + +#~ msgid "Amount" +#~ msgstr "كمية" + +#~ msgid "days overdue" +#~ msgstr "أيام متأخرة" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "أولوية" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "تم تعيينه ل" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "يفتح" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "تسجيل الدخول إلى بوابة العميل" + +#~ msgid "View your projects and invoices" +#~ msgstr "عرض المشاريع والفواتير الخاصة بك" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "تسجيل الدخول إلى بوابة العميل" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "أدخل بيانات اعتماد البوابة الإلكترونية " +#~ "الخاصة بك للوصول إلى مشاريعك وفواتيرك" + +#~ msgid "portal_username" +#~ msgstr "Portal_username" + +#~ msgid "Enter your password" +#~ msgstr "أدخل كلمة المرور الخاصة بك" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "قليل" + +#~ msgid "Medium" +#~ msgstr "واسطة" + +#~ msgid "High" +#~ msgstr "عالي" + +#~ msgid "Urgent" +#~ msgstr "عاجل" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "تعليقات" + +#~ msgid "Add Comment" +#~ msgstr "أضف تعليق" + +#~ msgid "Your Comment" +#~ msgstr "تعليقك" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "أضف تعليق" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "العودة إلى المشاريع" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "مشاريع لـ %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "تفاصيل الاقتباس" + +#~ msgid "Valid Until" +#~ msgstr "صالحة حتى" + +#~ msgid "This quote has expired." +#~ msgstr "انتهت صلاحية هذا الاقتباس." + +#~ msgid "Quote Items" +#~ msgstr "عناصر الاقتباس" + +#~ msgid "SKU" +#~ msgstr "رمز التخزين التعريفي" + +#~ msgid "Terms & Conditions" +#~ msgstr "الشروط والأحكام" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "قبول الاقتباس" + +#~ msgid "Reject Quote" +#~ msgstr "رفض الاقتباس" + +#~ msgid "Back to Quotes" +#~ msgstr "العودة إلى الاقتباسات" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "عروض الأسعار لـ %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "منتهي الصلاحية" + +#~ msgid "No quotes found." +#~ msgstr "لم يتم العثور على اقتباسات." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "رمز المشروع" + +#~ msgid "Est. / Budget" +#~ msgstr "أكثر من الميزانية" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "ملخص" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "المبلغ الإجمالي" + +#~ msgid "No tasks yet." +#~ msgstr "لم يتم تحديد أي مهام" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "لا يوجد نشاط في آخر 30 يومًا." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "تعيين كلمة المرور" + +#~ msgid "Set your password to get started" +#~ msgstr "قم بتعيين كلمة المرور الخاصة بك للبدء" + +#~ msgid "Set Your Password" +#~ msgstr "قم بتعيين كلمة المرور الخاصة بك" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "قم بتعيين كلمة مرور لحساب بوابة العميل الخاص بك" + +#~ msgid "Confirm Password" +#~ msgstr "تأكيد كلمة المرور" + +#~ msgid "Confirm your password" +#~ msgstr "قم بتأكيد كلمة المرور الخاصة بك" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "إدخالات الوقت لمشاريع %(client_name)s" + +#~ msgid "All Projects" +#~ msgstr "جميع المشاريع" + +#~ msgid "From Date" +#~ msgstr "من التاريخ" + +#~ msgid "To Date" +#~ msgstr "حتى الآن" + +#~ msgid "Total entries" +#~ msgstr "إجمالي الإدخالات" + +#~ msgid "Total hours" +#~ msgstr "إجمالي الساعات" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "الفواتير الأخيرة" + +#~ msgid "View All" +#~ msgstr "عرض الكل" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "إجمالي الفواتير" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "إدخالات الوقت الأخيرة" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "تصدير إلى CSV" + +#~ msgid "Create Client" +#~ msgstr "إنشاء عميل" + +#~ msgid "Back to Clients" +#~ msgstr "العودة إلى العملاء" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "إضافة عميل جديد لإدارة المشاريع ذات الصلة والفواتير." + +#~ msgid "Enter client name" +#~ msgstr "أدخل اسم العميل" + +#~ msgid "Default Hourly Rate" +#~ msgstr "معدل الساعة الافتراضي" + +#~ msgid "e.g. 75.00" +#~ msgstr "على سبيل المثال 75.00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "سيتم ملء هذا المعدل تلقائيًا عند إنشاء مشاريع لهذا العميل" + +#~ msgid "Supports Markdown" +#~ msgstr "يدعم تخفيض السعر" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "وصف موجز للعميل أو نطاق المشروع" + +#~ msgid "Contact Person" +#~ msgstr "الشخص الذي يمكن الاتصال به" + +#~ msgid "Primary contact name" +#~ msgstr "اسم جهة الاتصال الأساسية" + +#~ msgid "contact@client.com" +#~ msgstr "contact@client.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "ساعات الدفع المسبق الشهرية" + +#~ msgid "e.g. 50" +#~ msgstr "على سبيل المثال 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "اتركه فارغًا إذا لم يكن لدى هذا العميل مخصصات مدفوعة مسبقًا." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "يوم إعادة الضبط المدفوع مسبقًا" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "اليوم من الشهر الذي يتم فيه إعادة ضبط ساعات الدفع المسبق (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "عنوان العميل" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "اختر اسمًا وصفيًا واضحًا للمؤسسة العميلة." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "قم بتعيين السعر القياسي بالساعة لهذا " +#~ "العميل. سيتم نشر هذا تلقائيًا عند " +#~ "إنشاء مشاريع جديدة." + +#~ msgid "Contact Information" +#~ msgstr "معلومات الاتصال" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "أضف تفاصيل الاتصال لسهولة التواصل وحفظ السجلات." + +#~ msgid "Prepaid Hours" +#~ msgstr "ساعات الدفع المسبق" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "قم بتكوين الساعات المضمنة شهريًا ويوم" +#~ " إعادة التعيين إذا كان لدى هذا " +#~ "العميل باقة التجنيب أو الحزمة المدفوعة" +#~ " مسبقًا." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "قم بتوفير سياق حول العلاقة مع العميل أو أنواع المشاريع النموذجية." + +#~ msgid "Edit Client" +#~ msgstr "تحرير العميل" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "تمكين الوصول إلى البوابة لهذا العميل." +#~ " يمكن للعملاء تسجيل الدخول باستخدام " +#~ "بيانات الاعتماد الخاصة بهم لعرض المشاريع" +#~ " والفواتير وإدخالات الوقت." + +#~ msgid "Enable Client Portal" +#~ msgstr "تمكين بوابة العميل" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "اسم مستخدم البوابة" + +#~ msgid "Unique username for portal login" +#~ msgstr "اسم مستخدم فريد لتسجيل الدخول إلى البوابة" + +#~ msgid "Portal Password" +#~ msgstr "كلمة مرور البوابة" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "اتركه فارغًا للاحتفاظ بكلمة المرور الحالية" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "قم بتعيين كلمة مرور جديدة أو اتركها فارغة لتبقى محدثة" + +#~ msgid "Current portal username" +#~ msgstr "اسم مستخدم البوابة الحالي" + +#~ msgid "Update Client" +#~ msgstr "تحديث العميل" + +#~ msgid "Send Password Setup Email" +#~ msgstr "إرسال البريد الإلكتروني لإعداد كلمة المرور" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "أرسل بريدًا إلكترونيًا إلى %(email)s " +#~ "يتضمن رابطًا لتعيين كلمة مرور البوابة" +#~ " الإلكترونية الخاصة بهم." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "مطلوب عنوان البريد الإلكتروني لإرسال " +#~ "البريد الإلكتروني لإعداد كلمة المرور. " +#~ "يرجى تعيين عنوان البريد الإلكتروني " +#~ "للعميل أعلاه." + +#~ msgid "Client Statistics" +#~ msgstr "إحصائيات العميل" + +#~ msgid "Est. Total Cost" +#~ msgstr "EST. التكلفة الإجمالية" + +#~ msgid "Filter Clients" +#~ msgstr "تصفية العملاء" + +#~ msgid "Toggle Filters" +#~ msgstr "تبديل المرشحات" + +#~ msgid "Hide Filters" +#~ msgstr "إخفاء عوامل التصفية" + +#~ msgid "Show Filters" +#~ msgstr "إظهار عوامل التصفية" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "لم يتم العثور على إدخالات زمنية غير مفوترة لهذا المشروع." + +#~ msgid "No unbilled time" +#~ msgstr "إدخالات الوقت غير المفوترة" + +#~ msgid "Invoice unbilled time" +#~ msgstr "عناصر الفاتورة" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "وضع علامة على العميل على أنه غير نشط؟" + +#~ msgid "Change Client Status" +#~ msgstr "تغيير حالة العميل" + +#~ msgid "Mark Inactive" +#~ msgstr "وضع علامة غير نشط" + +#~ msgid "Activate client?" +#~ msgstr "تفعيل العميل؟" + +#~ msgid "Activate Client" +#~ msgstr "تفعيل العميل" + +#~ msgid "Delete Client" +#~ msgstr "حذف العميل" + +#~ msgid "Client details and associated projects." +#~ msgstr "إجمالي المشاريع النشطة" + +#~ msgid "Manage" +#~ msgstr "يدير" + +#~ msgid "Primary" +#~ msgstr "أساسي" + +#~ msgid "more contact(s)" +#~ msgstr "المزيد من جهات الاتصال" + +#~ msgid "No contacts yet" +#~ msgstr "لا توجد اتصالات حتى الآن" + +#~ msgid "Add Contact" +#~ msgstr "إضافة جهة اتصال" + +#~ msgid "Legacy Contact Info" +#~ msgstr "معلومات الاتصال القديمة" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "تتضمن الخطة %(hours)s ساعة لكل دورة. " +#~ "تتم إعادة التعيين في اليوم %(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "بداية الدورة الحالية" + +#~ msgid "Remaining hours" +#~ msgstr "الساعات المتبقية" + +#~ msgid "h" +#~ msgstr "ح" + +#~ msgid "Consumed this cycle" +#~ msgstr "استهلكت هذه الدورة" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "العميل مرئي" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "مؤرشف" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "ملاحظات داخلية" + +#~ msgid "Add Note" +#~ msgstr "أضف ملاحظة" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "إضافة ملاحظة داخلية حول هذا العميل..." + +#~ msgid "Save Note" +#~ msgstr "حفظ الملاحظة" + +#~ msgid "edited" +#~ msgstr "تم تحريره" + +#~ msgid "Important" +#~ msgstr "مهم" + +#~ msgid "Unmark" +#~ msgstr "قم بإلغاء التحديد" + +#~ msgid "Mark Important" +#~ msgstr "علامة هامة" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "لا توجد ملاحظات حتى الآن. أضف " +#~ "ملاحظة لتتبع المعلومات المهمة حول هذا" +#~ " العميل." + +#~ msgid "Estimated total" +#~ msgstr "القيمة المقدرة" + +#~ msgid "Create a draft invoice?" +#~ msgstr "إنشاء فاتورة" + +#~ msgid "Create invoice" +#~ msgstr "إنشاء فاتورة" + +#~ msgid "Could not create invoice." +#~ msgstr "إنشاء فاتورة" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذه الملاحظة؟" + +#~ msgid "Delete Note" +#~ msgstr "حذف الملاحظة" + +#~ msgid "Edited on" +#~ msgstr "تم التعديل عليه" + +#~ msgid "Reply" +#~ msgstr "رد" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "أكتب ردك..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "شارك بأفكارك، تحديثاتك، أو أسئلتك..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "يمكنك استخدام فواصل الأسطر لتنسيق تعليقك." + +#~ msgid "Add Image" +#~ msgstr "إضافة صورة" + +#~ msgid "No comments yet" +#~ msgstr "لا توجد تعليقات حتى الآن" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "ابدأ المحادثة بإضافة التعليق الأول." + +#~ msgid "Add First Comment" +#~ msgstr "أضف التعليق الأول" + +#~ msgid "Edit Comment" +#~ msgstr "تحرير التعليق" + +#~ msgid "Back" +#~ msgstr "خلف" + +#~ msgid "Editing comment on:" +#~ msgstr "تعديل التعليق على:" + +#~ msgid "Originally posted on" +#~ msgstr "نشرت أصلا على" + +#~ msgid "Comment Content" +#~ msgstr "محتوى التعليق" + +#~ msgid "All Activities" +#~ msgstr "جميع الأنشطة" + +#~ msgid "Time Templates" +#~ msgstr "قوالب الوقت" + +#~ msgid "No recent activity" +#~ msgstr "لا يوجد نشاط حديث" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "سيظهر النشاط هنا أثناء عملك" + +#~ msgid "Load More" +#~ msgstr "تحميل المزيد" + +#~ msgid "Failed to load activities" +#~ msgstr "فشل تحميل الأنشطة" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "تحديد العميل..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "منتهي" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "مركز مساعدة TimeTracker" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "بيت" + +#~ msgid "Pagination" +#~ msgstr "مهامي ترقيم الصفحات" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "يتصل" + +#~ msgid "Message" +#~ msgstr "رسالة" + +#~ msgid "Direction" +#~ msgstr "اتجاه" + +#~ msgid "Outbound" +#~ msgstr "الصادرة" + +#~ msgid "Inbound" +#~ msgstr "واردة" + +#~ msgid "Subject" +#~ msgstr "موضوع" + +#~ msgid "Scheduled" +#~ msgstr "المقرر" + +#~ msgid "Follow-up Date" +#~ msgstr "تاريخ المتابعة" + +#~ msgid "Content/Notes" +#~ msgstr "المحتوى/الملاحظات" + +#~ msgid "Save Communication" +#~ msgstr "حفظ الاتصالات" + +#~ msgid "First Name" +#~ msgstr "الاسم الأول" + +#~ msgid "Last Name" +#~ msgstr "اسم العائلة" + +#~ msgid "Mobile" +#~ msgstr "متحرك" + +#~ msgid "Department" +#~ msgstr "قسم" + +#~ msgid "Contact" +#~ msgstr "اتصال" + +#~ msgid "Billing" +#~ msgstr "الفواتير" + +#~ msgid "Technical" +#~ msgstr "اِصطِلاحِيّ" + +#~ msgid "Set as primary contact" +#~ msgstr "تعيين كجهة اتصال أساسية" + +#~ msgid "Tags" +#~ msgstr "العلامات" + +#~ msgid "Save Contact" +#~ msgstr "حفظ جهة الاتصال" + +#~ msgid "Set Primary" +#~ msgstr "تعيين الابتدائية" + +#~ msgid "No contacts found" +#~ msgstr "لم يتم العثور على جهات اتصال" + +#~ msgid "Add First Contact" +#~ msgstr "أضف جهة الاتصال الأولى" + +#~ msgid "Primary Contact" +#~ msgstr "جهة الاتصال الأساسية" + +#~ msgid "Communication History" +#~ msgstr "تاريخ الاتصالات" + +#~ msgid "Add Communication" +#~ msgstr "إضافة الاتصالات" + +#~ msgid "No communications recorded" +#~ msgstr "لم يتم تسجيل أي اتصالات" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "فعل" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "اسم الصفقة" + +#~ msgid "Select Client" +#~ msgstr "حدد العميل" + +#~ msgid "Select Contact" +#~ msgstr "حدد جهة الاتصال" + +#~ msgid "Stage" +#~ msgstr "منصة" + +#~ msgid "Deal Value" +#~ msgstr "قيمة الصفقة" + +#~ msgid "Win Probability" +#~ msgstr "احتمالية الفوز" + +#~ msgid "Expected Close Date" +#~ msgstr "تاريخ الإغلاق المتوقع" + +#~ msgid "Related Quote" +#~ msgstr "اقتباس ذات صلة" + +#~ msgid "Select Quote" +#~ msgstr "حدد اقتباس" + +#~ msgid "Save Deal" +#~ msgstr "حفظ الصفقة" + +#~ msgid "Won" +#~ msgstr "فاز" + +#~ msgid "Lost" +#~ msgstr "ضائع" + +#~ msgid "All Stages" +#~ msgstr "جميع المراحل" + +#~ msgid "Value" +#~ msgstr "قيمة" + +#~ msgid "Probability" +#~ msgstr "احتمال" + +#~ msgid "Expected Close" +#~ msgstr "الإغلاق المتوقع" + +#~ msgid "No deals found" +#~ msgstr "لم يتم العثور على صفقات" + +#~ msgid "Create First Deal" +#~ msgstr "إنشاء الصفقة الأولى" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "مشروع ذو صلة" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "تاريخ الهدف" + +#~ msgid "View full history" +#~ msgstr "عرض التفاصيل الكاملة" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "لقد تم ذكرك" + +#~ msgid "View Task & Reply" +#~ msgstr "عرض المهمة والرد" + +#~ msgid "Invoice" +#~ msgstr "فاتورة" + +#~ msgid "Invoice Overdue" +#~ msgstr "فاتورة متأخرة" + +#~ msgid "View Invoice" +#~ msgstr "عرض الفاتورة" + +#~ msgid "Quote" +#~ msgstr "يقتبس" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "تم رفض الموافقة على عرض الأسعار" + +#~ msgid "View Quote" +#~ msgstr "عرض الاقتباس" + +#~ msgid "Approval Requested" +#~ msgstr "الموافقة مطلوبة" + +#~ msgid "Review Quote" +#~ msgstr "مراجعة الاقتباس" + +#~ msgid "Quote Approved" +#~ msgstr "تمت الموافقة على الاقتباس" + +#~ msgid "Quote Expired" +#~ msgstr "انتهت صلاحية الاقتباس" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "تنتهي صلاحية الاقتباس قريبًا" + +#~ msgid "Quote Sent" +#~ msgstr "تم إرسال الاقتباس" + +#~ msgid "Task Assignment" +#~ msgstr "مهمة المهمة" + +#~ msgid "View Task" +#~ msgstr "عرض المهمة" + +#~ msgid "Test Details" +#~ msgstr "تفاصيل الاختبار" + +#~ msgid "Your Weekly Summary" +#~ msgstr "ملخصك الأسبوعي" + +#~ msgid "400 Bad Request" +#~ msgstr "400 طلب سيء" + +#~ msgid "Invalid Request" +#~ msgstr "طلب غير صالح" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "الطلب الذي قدمته غير صالح أو يحتوي على أخطاء. قد يكون هذا بسبب:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "بيانات النموذج مفقودة أو غير صالحة" + +#~ msgid "Malformed request parameters" +#~ msgstr "معلمات الطلب غير صحيحة" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "ليس لديك إذن للوصول إلى هذا المورد. قد يكون هذا بسبب:" + +#~ msgid "Insufficient privileges" +#~ msgstr "امتيازات غير كافية" + +#~ msgid "Not logged in" +#~ msgstr "لم يتم تسجيل الدخول" + +#~ msgid "Resource access restrictions" +#~ msgstr "قيود الوصول إلى الموارد" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "حدث خطأ ما من جانبنا. يرجى المحاولة مرة أخرى لاحقا." + +#~ msgid "Try Again" +#~ msgstr "حاول ثانية" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "حدث خطأ أثناء معالجة طلبك." + +#~ msgid "Refresh Page" +#~ msgstr "تحديث الصفحة" + +#~ msgid "Go to Login" +#~ msgstr "اذهب إلى تسجيل الدخول" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "على سبيل المثال، السفر والوجبات واللوازم المكتبية" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "على سبيل المثال، السفر، الوجبات" + +#~ msgid "Brief description of this category..." +#~ msgstr "وصف مختصر لهذه الفئة..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "على سبيل المثال، طائرة اتحاد كرة القدم، أواني اتحاد كرة القدم" + +#~ msgid "e.g., 19.00" +#~ msgstr "على سبيل المثال، 19.00" + +#~ msgid "Category" +#~ msgstr "فئة" + +#~ msgid "Basic Information" +#~ msgstr "المعلومات الأساسية" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "على سبيل المثال، رحلة إلى برلين" + +#~ msgid "Additional details about the expense..." +#~ msgstr "تفاصيل اضافية حول النفقات..." + +#~ msgid "Select Category" +#~ msgstr "فئة" + +#~ msgid "Amount Details" +#~ msgstr "تفاصيل الدفع" + +#~ msgid "Association" +#~ msgstr "موقع" + +#~ msgid "Payment Details" +#~ msgstr "تفاصيل الدفع" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "على سبيل المثال، لوفتهانزا" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "معلومات إضافية" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "رقم الاستلام/الفاتورة" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "على سبيل المثال، INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "على سبيل المثال، مؤتمر، اجتماع مع العملاء، عاجل" + +#~ msgid "Additional notes..." +#~ msgstr "ملاحظات إضافية..." + +#~ msgid "Options" +#~ msgstr "خياري" + +#~ msgid "Filter Expenses" +#~ msgstr "تصفية النفقات" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "حذف النفقات المحددة" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "تغيير الحالة للنفقات المحددة" + +#~ msgid "Associated With" +#~ msgstr "المرتبطة" + +#~ msgid "Reject Expense" +#~ msgstr "رفض النفقات" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "توضيح سبب رفض هذه النفقات..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذه النفقات؟" + +#~ msgid "Delete Expense" +#~ msgstr "حذف النفقات" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "استيراد/تصدير البيانات" + +#~ msgid "Import/Export" +#~ msgstr "استيراد/تصدير" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "قم باستيراد البيانات من أجهزة تتبع " +#~ "الوقت الأخرى أو قم بتصدير بياناتك " +#~ "للامتثال للقانون العام لحماية البيانات " +#~ "والنسخ الاحتياطية" + +#~ msgid "Import Data" +#~ msgstr "استيراد البيانات" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "استيراد إدخالات الوقت من ملف CSV" + +#~ msgid "Choose CSV File" +#~ msgstr "اختر ملف CSV" + +#~ msgid "Download Template" +#~ msgstr "تحميل القالب" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "استيراد من تبديل المسار" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "استيراد إدخالات الوقت من Toggl Track" + +#~ msgid "Import from Toggl" +#~ msgstr "استيراد من تبديل" + +#~ msgid "Import from Harvest" +#~ msgstr "الاستيراد من الحصاد" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "استيراد إدخالات الوقت من الحصاد" + +#~ msgid "Restore from Backup" +#~ msgstr "استعادة من النسخة الاحتياطية" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "تاريخ الاستيراد" + +#~ msgid "Export Data" +#~ msgstr "تصدير البيانات" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "تصدير البيانات الكاملة (GDPR)" + +#~ msgid "Export all your personal data" +#~ msgstr "تصدير جميع بياناتك الشخصية" + +#~ msgid "Export as JSON" +#~ msgstr "تصدير كـ JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "تصدير بصيغة ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "تصدير تمت تصفيته" + +#~ msgid "Export specific data with filters" +#~ msgstr "تصدير بيانات محددة باستخدام المرشحات" + +#~ msgid "Export with Filters" +#~ msgstr "التصدير باستخدام المرشحات" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "إنشاء نسخة احتياطية كاملة لقاعدة البيانات" + +#~ msgid "Export History" +#~ msgstr "تاريخ التصدير" + +#~ msgid "API Token" +#~ msgstr "رمز API" + +#~ msgid "Workspace ID" +#~ msgstr "معرف مساحة العمل" + +#~ msgid "Import" +#~ msgstr "يستورد" + +#~ msgid "Account ID" +#~ msgstr "معرف الحساب" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "التكامل الزمني" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "العام الماضي" + +#~ msgid "Last status" +#~ msgstr "تحديث الحالة" + +#~ msgid "Credentials" +#~ msgstr "تفاصيل" + +#~ msgid "Last error" +#~ msgstr "العام الماضي" + +#~ msgid "Partial" +#~ msgstr "جزئي" + +#~ msgid "Needs refresh" +#~ msgstr "ينعش" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "إنشاء رمز API" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "إنشاء رمز API" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "اتركه فارغًا للحفاظ على التيار" + +#~ msgid "Enter API secret" +#~ msgstr "تجديد السر" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "عنصر المخزون" + +#~ msgid "Select Item" +#~ msgstr "حدد العنصر" + +#~ msgid "Warehouse" +#~ msgstr "مستودع" + +#~ msgid "Select Warehouse" +#~ msgstr "حدد المستودع" + +#~ msgid "Adjustment Quantity" +#~ msgstr "كمية التعديل" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "استخدم القيم الإيجابية لزيادة المخزون، والقيم السلبية لتقليله" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "" +#~ "على سبيل المثال، تصحيح العد الفعلي، " +#~ "والأضرار، والعناصر التي تم العثور عليها" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "تفاصيل إضافية حول هذا التعديل" + +#~ msgid "Record Adjustment" +#~ msgstr "تعديل السجل" + +#~ msgid "All Warehouses" +#~ msgstr "جميع المستودعات" + +#~ msgid "All Items" +#~ msgstr "كافة العناصر" + +#~ msgid "Date From" +#~ msgstr "التاريخ من" + +#~ msgid "Date To" +#~ msgstr "التاريخ إلى" + +#~ msgid "Item" +#~ msgstr "غرض" + +#~ msgid "No adjustments found." +#~ msgstr "لم يتم العثور على أي تعديلات." + +#~ msgid "On Hand" +#~ msgstr "في متناول اليد" + +#~ msgid "Reorder Point" +#~ msgstr "نقطة إعادة الطلب" + +#~ msgid "Shortfall" +#~ msgstr "النقص" + +#~ msgid "Reorder Qty" +#~ msgstr "إعادة ترتيب الكمية" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "لا توجد تنبيهات انخفاض المخزون. جميع العناصر أعلى من نقطة إعادة الطلب." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "استخدم قيمًا موجبة لعمليات الإضافة، وسالبة لعمليات الإزالة" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "نوع الحركة" + +#~ msgid "Return" +#~ msgstr "يعود" + +#~ msgid "Waste" +#~ msgstr "يضيع" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "على سبيل المثال، تصحيح العد الفعلي" + +#~ msgid "Record Movement" +#~ msgstr "سجل الحركة" + +#~ msgid "Reference Type" +#~ msgstr "نوع المرجع" + +#~ msgid "Manual" +#~ msgstr "يدوي" + +#~ msgid "Unit Cost" +#~ msgstr "تكلفة الوحدة" + +#~ msgid "Reference" +#~ msgstr "مرجع" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "لم يتم العثور على حركات الأسهم." + +#~ msgid "Supplier" +#~ msgstr "مزود" + +#~ msgid "Select Supplier" +#~ msgstr "حدد المورد" + +#~ msgid "Order Date" +#~ msgstr "تاريخ الطلب" + +#~ msgid "Expected Delivery Date" +#~ msgstr "تاريخ التسليم المتوقع" + +#~ msgid "Notes visible to supplier" +#~ msgstr "ملاحظات مرئية للمورد" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "ملاحظات داخلية (غير مرئية للمورد)" + +#~ msgid "Items" +#~ msgstr "أغراض" + +#~ msgid "Add Item" +#~ msgstr "إضافة عنصر" + +#~ msgid "Qty" +#~ msgstr "الكمية" + +#~ msgid "Supplier SKU" +#~ msgstr "رمز SKU للمورد" + +#~ msgid "Create Purchase Order" +#~ msgstr "إنشاء أمر الشراء" + +#~ msgid "Draft" +#~ msgstr "مسودة" + +#~ msgid "Sent" +#~ msgstr "مرسل" + +#~ msgid "Confirmed" +#~ msgstr "مؤكد" + +#~ msgid "Received" +#~ msgstr "تلقى" + +#~ msgid "All Suppliers" +#~ msgstr "جميع الموردين" + +#~ msgid "PO Number" +#~ msgstr "رقم أمر الشراء" + +#~ msgid "Expected Delivery" +#~ msgstr "التسليم المتوقع" + +#~ msgid "No purchase orders found." +#~ msgstr "لم يتم العثور على طلبات الشراء." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "هل أنت متأكد أنك تريد إلغاء أمر الشراء هذا؟" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "هل أنت متأكد أنك تريد حذف أمر الشراء هذا؟" + +#~ msgid "Purchase Order Details" +#~ msgstr "تفاصيل أمر الشراء" + +#~ msgid "Received Date" +#~ msgstr "تاريخ الاستلام" + +#~ msgid "Quantity Ordered" +#~ msgstr "الكمية المطلوبة" + +#~ msgid "Quantity Received" +#~ msgstr "الكمية المستلمة" + +#~ msgid "Line Total" +#~ msgstr "إجمالي الخط" + +#~ msgid "Shipping" +#~ msgstr "شحن" + +#~ msgid "Receive Purchase Order" +#~ msgstr "تلقي أمر الشراء" + +#~ msgid "Mark as Received" +#~ msgstr "وضع علامة كمستلم" + +#~ msgid "No items in this purchase order." +#~ msgstr "لا توجد عناصر في أمر الشراء هذا." + +#~ msgid "Total Items" +#~ msgstr "إجمالي العناصر" + +#~ msgid "Total Warehouses" +#~ msgstr "إجمالي المستودعات" + +#~ msgid "Total Inventory Value" +#~ msgstr "إجمالي قيمة المخزون" + +#~ msgid "Low Stock Items" +#~ msgstr "عناصر المخزون المنخفض" + +#~ msgid "Available Reports" +#~ msgstr "التقارير المتاحة" + +#~ msgid "Stock Valuation" +#~ msgstr "تقييم الأسهم" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "عرض قيمة المخزون حسب المستودع" + +#~ msgid "Movement History" +#~ msgstr "تاريخ الحركة" + +#~ msgid "Detailed movement log" +#~ msgstr "سجل الحركة التفصيلي" + +#~ msgid "Turnover Analysis" +#~ msgstr "تحليل دوران" + +#~ msgid "Inventory turnover rates" +#~ msgstr "معدلات دوران المخزون" + +#~ msgid "Low Stock Report" +#~ msgstr "تقرير المخزون المنخفض" + +#~ msgid "Items below reorder point" +#~ msgstr "العناصر الموجودة أسفل نقطة إعادة الطلب" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "تم العثور على %(count)s من العناصر أسفل نقطة إعادة الطلب الخاصة بها." + +#~ msgid "Quantity On Hand" +#~ msgstr "الكمية في متناول اليد" + +#~ msgid "Reorder Quantity" +#~ msgstr "إعادة طلب الكمية" + +#~ msgid "Create PO" +#~ msgstr "إنشاء أمر الشراء" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "جميع مستويات الأسهم جيدة" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "لا توجد عناصر حاليًا أقل من نقطة إعادة الطلب الخاصة بها." + +#~ msgid "No movements found." +#~ msgstr "لم يتم العثور على أي حركات." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "يشير معدل الدوران إلى عدد مرات بيع" +#~ " المخزون واستبداله خلال عام واحد. " +#~ "تشير المعدلات الأعلى إلى العناصر سريعة" +#~ " الحركة." + +#~ msgid "Total Sold" +#~ msgstr "إجمالي المبيعات" + +#~ msgid "Avg Stock Level" +#~ msgstr "متوسط ​​مستوى المخزون" + +#~ msgid "Turnover Rate" +#~ msgstr "معدل الدوران" + +#~ msgid "Fast Moving" +#~ msgstr "تتحرك بسرعة" + +#~ msgid "Normal" +#~ msgstr "طبيعي" + +#~ msgid "Slow Moving" +#~ msgstr "بطيء الحركة" + +#~ msgid "Very Slow" +#~ msgstr "بطيء جدًا" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "لم يتم العثور على بيانات المبيعات للفترة المحددة." + +#~ msgid "Inventory Valuation" +#~ msgstr "تقييم المخزون" + +#~ msgid "Total Value" +#~ msgstr "القيمة الإجمالية" + +#~ msgid "No items found with cost information." +#~ msgstr "لم يتم العثور على عناصر تحتوي على معلومات التكلفة." + +#~ msgid "Reserved" +#~ msgstr "محجوز" + +#~ msgid "Fulfilled" +#~ msgstr "تم الوفاء به" + +#~ msgid "Reserved At" +#~ msgstr "محفوظة في" + +#~ msgid "Expires At" +#~ msgstr "تنتهي في" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "الوفاء بهذا الحجز؟" + +#~ msgid "Cancel this reservation?" +#~ msgstr "إلغاء هذا الحجز؟" + +#~ msgid "No reservations found." +#~ msgstr "لم يتم العثور على أي تحفظات." + +#~ msgid "Unit" +#~ msgstr "وحدة" + +#~ msgid "Default Cost" +#~ msgstr "التكلفة الافتراضية" + +#~ msgid "Default Price" +#~ msgstr "السعر الافتراضي" + +#~ msgid "Image URL" +#~ msgstr "عنوان URL للصورة" + +#~ msgid "Track Inventory" +#~ msgstr "تتبع المخزون" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "إدارة موردين متعددين لهذا العنصر بأسعار مختلفة." + +#~ msgid "MOQ" +#~ msgstr "موك" + +#~ msgid "Lead Time (days)" +#~ msgstr "المهلة الزمنية (أيام)" + +#~ msgid "Preferred" +#~ msgstr "المفضل" + +#~ msgid "Add Supplier" +#~ msgstr "إضافة مورد" + +#~ msgid "No movement history found for this item." +#~ msgstr "لم يتم العثور على سجل حركة لهذا العنصر." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU، الاسم، الباركود..." + +#~ msgid "Active Only" +#~ msgstr "نشط فقط" + +#~ msgid "Total Qty" +#~ msgstr "إجمالي الكمية" + +#~ msgid "Available" +#~ msgstr "متاح" + +#~ msgid "Low Stock" +#~ msgstr "مخزون منخفض" + +#~ msgid "No stock items found." +#~ msgstr "لم يتم العثور على عناصر المخزون." + +#~ msgid "Item Details" +#~ msgstr "تفاصيل السلعة" + +#~ msgid "Trackable" +#~ msgstr "يمكن تتبعها" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "مستويات المخزون حسب المستودعات" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "تحركات الأسهم الأخيرة" + +#~ msgid "Total On Hand" +#~ msgstr "المجموع في متناول اليد" + +#~ msgid "Total Reserved" +#~ msgstr "إجمالي المحجوزة" + +#~ msgid "Total Available" +#~ msgstr "الإجمالي المتاح" + +#~ msgid "Low Stock Alert" +#~ msgstr "تنبيه انخفاض المخزون" + +#~ msgid "This item is not trackable." +#~ msgstr "هذا العنصر غير قابل للتتبع." + +#~ msgid "Active Reservations" +#~ msgstr "الحجوزات النشطة" + +#~ msgid "Quantity Reserved" +#~ msgstr "الكمية محفوظة" + +#~ msgid "Last Counted" +#~ msgstr "آخر إحصاء" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "لم يتم العثور على مخزون لهذا البند في أي مستودع." + +#~ msgid "No stock levels found." +#~ msgstr "لم يتم العثور على مستويات المخزون." + +#~ msgid "Low Stock Only" +#~ msgstr "مخزون منخفض فقط" + +#~ msgid "Oversold" +#~ msgstr "ذروة البيع" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "لم يتم العثور على عناصر المخزون في هذا المستودع." + +#~ msgid "Supplier Code" +#~ msgstr "رمز المورد" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "رمز فريد لهذا المورد (على سبيل المثال، SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "شروط الدفع" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "على سبيل المثال، صافي 30، صافي 60" + +#~ msgid "Code, name, email" +#~ msgstr "الرمز، الاسم، البريد الإلكتروني" + +#~ msgid "No suppliers found." +#~ msgstr "لم يتم العثور على الموردين." + +#~ msgid "Supplier Details" +#~ msgstr "تفاصيل المورد" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "عناصر المخزون من هذا المورد" + +#~ msgid "Lead Time" +#~ msgstr "مهلة" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "لا توجد عناصر مخزون مرتبطة بهذا المورد." + +#~ msgid "Preferred Items" +#~ msgstr "العناصر المفضلة" + +#~ msgid "From Warehouse" +#~ msgstr "من المستودع" + +#~ msgid "Select Source Warehouse" +#~ msgstr "حدد المستودع المصدر" + +#~ msgid "To Warehouse" +#~ msgstr "إلى المستودع" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "حدد المستودع الوجهة" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "ملاحظات اختيارية حول هذا النقل" + +#~ msgid "Create Transfer" +#~ msgstr "إنشاء نقل" + +#~ msgid "No transfers found." +#~ msgstr "لم يتم العثور على التحويلات." + +#~ msgid "Warehouse Code" +#~ msgstr "رمز المستودع" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "الرمز الفريد لهذا المستودع (على سبيل المثال، WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "البريد الإلكتروني للاتصال" + +#~ msgid "Contact Phone" +#~ msgstr "هاتف الاتصال" + +#~ msgid "No warehouses found." +#~ msgstr "لم يتم العثور على مستودعات." + +#~ msgid "Warehouse Details" +#~ msgstr "تفاصيل المستودع" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "لا توجد عناصر المخزون في هذا المستودع." + +#~ msgid "Total Quantity" +#~ msgstr "الكمية الإجمالية" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "طلب الموافقة" + +#~ msgid "Approval Status" +#~ msgstr "حالة الموافقة" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "سبب الرفض" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "إجراءات سريعة" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "تصدير إلى إكسل" + +#~ msgid "Partially Paid" +#~ msgstr "مدفوعة جزئيا" + +#~ msgid "Fully Paid" +#~ msgstr "مدفوعة بالكامل" + +#~ msgid "Create Invoice" +#~ msgstr "إنشاء فاتورة" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "إنشاء فاتورة جديدة للمشروع والعميل" + +#~ msgid "Select a project" +#~ msgstr "اختر مشروعًا" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "سيؤدي تحديد المشروع إلى ملء تفاصيل العميل تلقائيًا" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "معدل الضريبة (%)" + +#~ msgid "Tips" +#~ msgstr "نصائح" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "اختر المشروع الصحيح لملء تفاصيل العميل تلقائيًا." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "يمكنك تخصيص الملاحظات والشروط قبل إرسال الفاتورة." + +#~ msgid "Edit Invoice" +#~ msgstr "تحرير الفاتورة" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "تحديث تفاصيل الفاتورة والأصناف والشروط" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "الخدمات القائمة على الوقت والعمل بالساعة" + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "حدد عنصر المخزون" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "على سبيل المثال، خدمات تطوير الويب" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "إزالة العنصر" + +#~ msgid "Items Subtotal" +#~ msgstr "العناصر المجموع الفرعي" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "النفقات القابلة للفوترة مثل السفر والوجبات والمواد" + +#~ msgid "Add Expense" +#~ msgstr "أضف النفقات" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "على سبيل المثال، السفر لحضور اجتماع العملاء" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "النفقات المرتبطة - لا يمكن تحرير العنوان" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "النفقات المرتبطة - لا يمكن تحرير الوصف" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "النفقات المرتبطة - لا يمكن تحرير الفئة" + +#~ msgid "Travel" +#~ msgstr "يسافر" + +#~ msgid "Meals" +#~ msgstr "وجبات" + +#~ msgid "Accommodation" +#~ msgstr "إقامة" + +#~ msgid "Supplies" +#~ msgstr "لوازم" + +#~ msgid "Software" +#~ msgstr "برمجة" + +#~ msgid "Equipment" +#~ msgstr "معدات" + +#~ msgid "Services" +#~ msgstr "خدمات" + +#~ msgid "Marketing" +#~ msgstr "تسويق" + +#~ msgid "Training" +#~ msgstr "تمرين" + +#~ msgid "Other" +#~ msgstr "آخر" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "النفقات المرتبطة - لا يمكن تعديل المبلغ" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "النفقات المرتبطة - لا يمكن تعديل التاريخ" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "إلغاء ربط النفقات بالفاتورة" + +#~ msgid "Expenses Subtotal" +#~ msgstr "المجموع الفرعي للمصروفات" + +#~ msgid "Extra Goods" +#~ msgstr "بضائع اضافية" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "المنتجات والمواد والتراخيص والسلع الأخرى" + +#~ msgid "Add Good" +#~ msgstr "أضف جيد" + +#~ msgid "Price" +#~ msgstr "سعر" + +#~ msgid "e.g., Software License" +#~ msgstr "على سبيل المثال، ترخيص البرنامج" + +#~ msgid "Product" +#~ msgstr "منتج" + +#~ msgid "Service" +#~ msgstr "خدمة" + +#~ msgid "Material" +#~ msgstr "مادة" + +#~ msgid "Remove good" +#~ msgstr "إزالة جيدة" + +#~ msgid "Goods Subtotal" +#~ msgstr "السلع المجموع الفرعي" + +#~ msgid "Live Preview" +#~ msgstr "المعاينة المباشرة" + +#~ msgid "Payment" +#~ msgstr "قسط" + +#~ msgid "Goods" +#~ msgstr "بضائع" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "توليد من الوقت / التكاليف" + +#~ msgid "Record Payment" +#~ msgstr "سجل الدفع" + +#~ msgid "Export PDF" +#~ msgstr "تصدير قوات الدفاع الشعبي" + +#~ msgid "Export CSV" +#~ msgstr "تصدير CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "فاتورة مكررة" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "هل أنت متأكد أنك تريد إلغاء ربط هذه النفقات بالفاتورة؟" + +#~ msgid "Unlink Expense" +#~ msgstr "إلغاء ربط النفقات" + +#~ msgid "Unlink" +#~ msgstr "إلغاء الارتباط" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "يرجى إضافة عنصر أو مصروف أو سلعة إضافية واحدة على الأقل إلى الفاتورة" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "توليد من الوقت والتكاليف والسلع" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "حدد إدخالات الوقت غير المفوترة وتكاليف" +#~ " المشروع والسلع الإضافية لإضافتها إلى " +#~ "هذه الفاتورة" + +#~ msgid "Back to Edit" +#~ msgstr "العودة إلى التحرير" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "إدخالات الوقت غير المفوترة" + +#~ msgid "entries" +#~ msgstr "إدخالات" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "لم يتم العثور على إدخالات زمنية غير مفوترة لهذا المشروع." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "تكاليف المشروع غير المفوترة" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "لم يتم العثور على تكاليف غير مفوترة لهذا المشروع." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "النفقات غير القابلة للفوترة" + +#~ msgid "Vendor" +#~ msgstr "بائع" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "لم يتم العثور على نفقات غير مفوترة قابلة للفوترة لهذا المشروع." + +#~ msgid "Project Extra Goods" +#~ msgstr "مشروع السلع الإضافية" + +#~ msgid "No extra goods found for this project." +#~ msgstr "لم يتم العثور على سلع إضافية لهذا المشروع." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "إضافة المحدد إلى الفاتورة" + +#~ msgid "Selection Summary" +#~ msgstr "ملخص الاختيار" + +#~ msgid "Total available hours" +#~ msgstr "إجمالي الساعات المتاحة" + +#~ msgid "Total available costs" +#~ msgstr "إجمالي التكاليف المتاحة" + +#~ msgid "Total available expenses" +#~ msgstr "إجمالي النفقات المتاحة" + +#~ msgid "Total available goods" +#~ msgstr "إجمالي السلع المتوفرة" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "نظرة عامة على ساعات الدفع المسبق" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "تتضمن الخطة %(hours)s ساعة لكل دورة (يتم إعادة الضبط في يوم %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "المستهلكة: %(consumed)s h • المتبقية: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "لم يتم تسجيل أي استخدام للدفع المسبق لفترة محددة حتى الآن." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "يمكنك تحديد إدخالات زمنية متعددة، والتكاليف، والنفقات، والسلع الإضافية." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "يتم تجميع إدخالات الوقت حسب المهمة أو المشروع عند إنشاء العنصر." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "تتم إضافة التكاليف والسلع الإضافية كبنود فاتورة فردية." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "ترتبط المصاريف بالفاتورة وتظهر في قسم منفصل." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "يرجى تحديد إدخال أو تكلفة أو نفقات أو سلعة إضافية لمرة واحدة على الأقل" + +#~ msgid "Filter Invoices" +#~ msgstr "تصفية الفواتير" + +#~ msgid "Invoice number or client" +#~ msgstr "رقم الفاتورة أو العميل" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "حذف الفواتير المحددة" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "تغيير الحالة للفواتير المحددة" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "حذف الفاتورة" + +#~ msgid "Warning:" +#~ msgstr "تحذير:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "هل أنت متأكد أنك تريد حذف الفاتورة" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "سيتم حذف جميع عناصر الفاتورة والسلع " +#~ "الإضافية وسجلات الدفع المرتبطة بهذه " +#~ "الفاتورة نهائيًا." + +#~ msgid "INVOICE" +#~ msgstr "فاتورة" + +#~ msgid "Invoice #" +#~ msgstr "فاتورة #" + +#~ msgid "Bill To" +#~ msgstr "مشروع قانون ل" + +#~ msgid "Quantity (Hours)" +#~ msgstr "الكمية (ساعات)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "تم إنشاؤها من %(num)d إدخالات زمنية" + +#~ msgid "Expense" +#~ msgstr "حساب" + +#~ msgid "Subtotal:" +#~ msgstr "المجموع الفرعي:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "الضريبة (%(rate).2f%%):" + +#~ msgid "Total Amount:" +#~ msgstr "المبلغ الإجمالي:" + +#~ msgid "Notes:" +#~ msgstr "ملحوظات:" + +#~ msgid "Terms:" +#~ msgstr "شروط:" + +#~ msgid "Payment Information:" +#~ msgstr "معلومات الدفع:" + +#~ msgid "Terms & Conditions:" +#~ msgstr "الشروط والأحكام:" + +#~ msgid "Download UBL" +#~ msgstr "" + +#~ msgid "Pay Online" +#~ msgstr "" + +#~ msgid "Payment Reference" +#~ msgstr "" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" + +#~ msgid "Invoice Approval" +#~ msgstr "" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" + +#~ msgid "Payment History" +#~ msgstr "تاريخ الدفع" + +#~ msgid "Send Invoice via Email" +#~ msgstr "إرسال الفاتورة عبر البريد الإلكتروني" + +#~ msgid "Edit Issue" +#~ msgstr "" + +#~ msgid "Unassigned" +#~ msgstr "غير معين" + +#~ msgid "Create Issue" +#~ msgstr "" + +#~ msgid "Filter Issues" +#~ msgstr "" + +#~ msgid "Search by title or description" +#~ msgstr "" + +#~ msgid "Apply Filters" +#~ msgstr "تطبيق المرشحات" + +#~ msgid "Page" +#~ msgstr "صفحة" + +#~ msgid "of" +#~ msgstr "ل" + +#~ msgid "No issues found" +#~ msgstr "لم يتم العثور على مستخدمين." + +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" + +#~ msgid "Create New Issue" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" + +#~ msgid "Delete Issue" +#~ msgstr "" + +#~ msgid "Task Management" +#~ msgstr "إدارة المهام" + +#~ msgid "Link to existing task" +#~ msgstr "" + +#~ msgid "Select a task" +#~ msgstr "" + +#~ msgid "Link" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Kanban" +#~ msgstr "كانبان" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "إدارة الأعمدة" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "اسحب المهام بين الأعمدة لتحديث حالتها" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "لوحة كانبان" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "moved to" +#~ msgstr "انتقل الى" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "لا توجد مهام في هذا العمود." -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "إدارة أعمدة كانبان" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "قم بتخصيص أعمدة لوحة كانبان وحالات المهام" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "Project:" +#~ msgstr "مشروع:" -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "الأعمدة العالمية" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Add Column" +#~ msgstr "إضافة عمود" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "قائمة أعمدة كانبان" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Key" +#~ msgstr "مفتاح" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Complete?" +#~ msgstr "مكتمل؟" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "اسحب لإعادة الترتيب" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Edit column" +#~ msgstr "تحرير العمود" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "تبديل الحالة النشطة" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "لم يتم العثور على أعمدة كانبان. قم بإنشاء العمود الأول للبدء." -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Tips:" +#~ msgstr "نصائح:" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "قم بسحب وإسقاط الصفوف لإعادة ترتيب الأعمدة" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "لا يمكن حذف أعمدة النظام (todo وin_progress وdone) ولكن يمكن تخصيصها" -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "الأعمدة التي تم وضع علامة \"مكتملة\" " +#~ "عليها ستضع علامة على المهام على " +#~ "أنها مكتملة عند سحبها إلى هذا " +#~ "العمود" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "يتم إخفاء الأعمدة غير النشطة من " +#~ "لوحة كانبان ولكن تظل المهام ذات " +#~ "هذه الحالة قابلة للوصول" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "حذف عمود كانبان" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "هل أنت متأكد أنك تريد حذف العمود؟" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "Key:" +#~ msgstr "مفتاح:" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "ملاحظة: ستظل المهام ذات هذه الحالة " +#~ "قابلة للوصول ولكن لن يظهر العمود " +#~ "بعد ذلك على لوحة كانبان." -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "حذف العمود" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "تمت إعادة ترتيب الأعمدة بنجاح" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "فشل في إعادة ترتيب الأعمدة. يرجى المحاولة مرة أخرى." -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "إنشاء عمود كانبان" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "أضف عمودًا جديدًا إلى لوحة كانبان الخاصة بك" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "إنشاء نموذج عمود كانبان" -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "Column Label" +#~ msgstr "تسمية العمود" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "على سبيل المثال، قيد المراجعة، محظور، اختبار" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "اسم العرض الموضح على لوحة كانبان" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "Column Key" +#~ msgstr "مفتاح العمود" -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "على سبيل المثال، in_review، محظور، اختبار" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "المعرف الفريد (أحرف صغيرة، بدون مسافات،" +#~ " استخدم الشرطة السفلية). يتم إنشاؤه " +#~ "تلقائيًا من التصنيف إذا كان فارغًا." -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "التكامل الزمني" +#~ msgid "Global (for all projects)" +#~ msgstr "عالمي (لجميع المشاريع)" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "حدد مشروعًا لإنشاء أعمدة خاصة بالمشروع، أو اتركه كعام لجميع المشاريع" -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "العام الماضي" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "تحديث الحالة" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "تفاصيل" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "العام الماضي" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "جزئي" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "ينعش" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "Icon Class" +#~ msgstr "فئة الأيقونات" -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "فئة أيقونة الخط رائع" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "Browse icons" +#~ msgstr "تصفح الرموز" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "الابتدائية (الأزرق)" -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "Secondary (Gray)" +#~ msgstr "ثانوي (رمادي)" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "النجاح (الأخضر)" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Danger (Red)" +#~ msgstr "خطر (أحمر)" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "تحذير (أصفر)" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "Info (Cyan)" +#~ msgstr "معلومات (سماوي)" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "فئة ألوان Bootstrap للتصميم" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "Mark as Complete State" +#~ msgstr "وضع علامة كحالة كاملة" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "سيتم وضع علامة على المهام المنقولة إلى هذا العمود كمكتملة" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "Create Column" +#~ msgstr "إنشاء عمود" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "Note:" +#~ msgstr "ملحوظة:" -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "إنشاء رمز API" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "سيتم إضافة العمود في نهاية اللوحة. " +#~ "يمكنك إعادة ترتيب الأعمدة لاحقًا من " +#~ "صفحة الإدارة." -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "تحرير عمود كانبان" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "تعديل إعدادات العمود" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "Edit Kanban Column form" +#~ msgstr "تحرير نموذج عمود كانبان" -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "إنشاء رمز API" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "لا يمكن تغيير المفتاح بعد الإنشاء" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "هذا عمود خاص بالمشروع" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "اتركه فارغًا للحفاظ على التيار" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "هذا عمود عام (لجميع المشاريع)" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "تجديد السر" +#~ msgid "Preview" +#~ msgstr "معاينة" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "يتم إخفاء الأعمدة غير النشطة من لوحة كانبان" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "System Column:" +#~ msgstr "عمود النظام:" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "هذا عمود النظام. يمكنك تخصيص مظهره ولكن لا يمكنك حذفه." -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "تبديل الوضع المظلم" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Decrease quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Adjustment quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Increase quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Kiosk adjustment" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Physical count" +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Found" +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Damaged" +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Apply stock adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Apply Adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Undo last adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Undo Last Adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Transfer quantity" +#~ msgstr "" + +#~ msgid "Transfer stock" +#~ msgstr "" + +#~ msgid "Transfer Stock" +#~ msgstr "" + +#~ msgid "Stop timer" +#~ msgstr "" + +#~ msgid "Stop Timer" +#~ msgstr "إيقاف الموقت" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "لا توجد مهمة" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "ما الذي تعمل عليه؟" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "ملخص" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "مصدر" + +#~ msgid "Website, referral, ad..." +#~ msgstr "موقع ويب، إحالة، إعلان..." + +#~ msgid "Lead Score" +#~ msgstr "نقاط الرصاص" + +#~ msgid "Estimated Value" +#~ msgstr "القيمة المقدرة" + +#~ msgid "Save Lead" +#~ msgstr "حفظ الرصاص" + +#~ msgid "Name, company, email..." +#~ msgstr "الاسم، الشركة، البريد الإلكتروني..." + +#~ msgid "All Statuses" +#~ msgstr "جميع الحالات" + +#~ msgid "Website, referral..." +#~ msgstr "موقع، إحالة..." + +#~ msgid "Score" +#~ msgstr "نتيجة" + +#~ msgid "No leads found" +#~ msgstr "لم يتم العثور على أي خيوط" + +#~ msgid "Create First Lead" +#~ msgstr "إنشاء العميل المتوقع الأول" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "تتبع الوقت المهني وإدارة المشاريع" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "تطبيق شامل لتتبع الوقت على شبكة " +#~ "الإنترنت تم تصميمه باستخدام Flask، " +#~ "ويتميز بإدارة المشاريع وتنظيم العملاء " +#~ "وإدارة المهام والفواتير والتحليلات المتقدمة." + +#~ msgid "Invoicing" +#~ msgstr "الفواتير" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "الموقتات الذكية" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "تتبع في الوقت الحقيقي مع الكشف عن الخمول والتحديثات المباشرة" + +#~ msgid "Client Management" +#~ msgstr "إدارة العملاء" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "تنظيم العملاء مع جهات الاتصال والأسعار وعلاقات المشروع" + +#~ msgid "Task System" +#~ msgstr "نظام المهام" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "قم بتقسيم المشاريع إلى مهام مع تتبع التقدم" + +#~ msgid "PDF Invoices" +#~ msgstr "فواتير PDF" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "إنشاء فواتير احترافية من الوقت المتعقب" + +#~ msgid "Core Features" +#~ msgstr "الميزات الأساسية" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "بدء/إيقاف الموقتات مع ارتباط المشروع والمهمة" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "إدخال الوقت يدويًا مع الملاحظات والعلامات" + +#~ msgid "Client and project organization" +#~ msgstr "تنظيم العميل والمشروع" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "الوصول المستند إلى الأدوار وملفات تعريف المستخدمين" + +#~ msgid "Advanced Features" +#~ msgstr "الميزات المتقدمة" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "فواتير PDF ذات علامة تجارية مع تتبع الضرائب والمدفوعات" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "التحليلات المرئية والتقارير التفصيلية" + +#~ msgid "REST API for integrations" +#~ msgstr "REST API للتكاملات" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "قدرات PWA وواجهة مستخدم متوافقة مع الهاتف المحمول" + +#~ msgid "Platform Support" +#~ msgstr "دعم المنصة" + +#~ msgid "Web Application" +#~ msgstr "تطبيق الويب" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "متصفحات سطح المكتب (Chrome، Firefox، Safari، Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "تصميم مستجيب للجوال" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "تطبيق الويب التقدمي (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "واجهة الكمبيوتر اللوحي سهلة اللمس" + +#~ msgid "Operating Systems" +#~ msgstr "أنظمة التشغيل" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "ويندوز، ماك، لينكس" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android وiOS (المتصفح)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "دعم راسبيري باي" + +#~ msgid "Dockerized deployment" +#~ msgstr "نشر إرساء" + +#~ msgid "Database Support" +#~ msgstr "دعم قاعدة البيانات" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (مستحسن)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (تطوير/اختبار)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "عمليات الترحيل التلقائي باستخدام Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "أدوات النسخ الاحتياطي والاستعادة" + +#~ msgid "Technical Specifications" +#~ msgstr "المواصفات الفنية" + +#~ msgid "Technology Stack" +#~ msgstr "كومة التكنولوجيا" + +#~ msgid "Backend" +#~ msgstr "الخلفية" + +#~ msgid "Frontend" +#~ msgstr "الواجهة الأمامية" + +#~ msgid "Deployment" +#~ msgstr "النشر" + +#~ msgid "Key Capabilities" +#~ msgstr "القدرات الرئيسية" + +#~ msgid "Real-time" +#~ msgstr "في الوقت الحالى" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "المصدر المفتوح والمجتمع" + +#~ msgid "Open Source Benefits" +#~ msgstr "فوائد المصدر المفتوح" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "كود المصدر الكامل متاح على جيثب" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "مرخص بموجب GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "التنمية بقيادة المجتمع" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "تتبع المشكلات بشكل شفاف وتقارير الأخطاء" + +#~ msgid "Deployment Options" +#~ msgstr "خيارات النشر" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "صور عامل الميناء (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "النشر المستضاف ذاتيًا مع التحكم الكامل" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "جاهز للسحابة مع تكوينات الإنشاء" + +#~ msgid "View on GitHub" +#~ msgstr "عرض على جيثب" + +#~ msgid "Support updates" +#~ msgstr "الميزات المدعومة" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "الحصول على المساعدة والموارد" + +#~ msgid "Documentation" +#~ msgstr "التوثيق" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "أدلة خطوة بخطوة لجميع الميزات." + +#~ msgid "View Help" +#~ msgstr "عرض التعليمات" + +#~ msgid "System Information" +#~ msgstr "معلومات النظام" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "الحالة والإصدارات وتفاصيل التكوين." + +#~ msgid "Admin access required" +#~ msgstr "مطلوب وصول المشرف" + +#~ msgid "Community Support" +#~ msgstr "دعم المجتمع" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "الإبلاغ عن المشكلات، طلب الميزات، المساهمة." + +#~ msgid "GitHub Issues" +#~ msgstr "قضايا جيثب" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "عرض جميع إدخالات الوقت" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "إليك نظرة عامة سريعة على عملك." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "بدء/إيقاف الموقتات مع ارتباط المشروع والمهمة" + +#~ msgid "Repeat last" +#~ msgstr "تم الإنشاء في" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "بدء/إيقاف الموقتات مع ارتباط المشروع والمهمة" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "يوقف" + +#~ msgid "Break" +#~ msgstr "خلف" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "بدأت في" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "تعديل" + +#~ msgid "Subtract 15 min" +#~ msgstr "" + +#~ msgid "Subtract 5 min" +#~ msgstr "" + +#~ msgid "Add 5 min" +#~ msgstr "مسؤل" + +#~ msgid "Add 15 min" +#~ msgstr "مسؤل" + +#~ msgid "Resume timer" +#~ msgstr "الموقتات الذكية" + +#~ msgid "Resume" +#~ msgstr "إعادة ضبط" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "يوقف" + +#~ msgid "Stop and save current time" +#~ msgstr "" + +#~ msgid "Stop & save" +#~ msgstr "" + +#~ msgid "No active timer." +#~ msgstr "لا يوجد توقيت نشط." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" + +#~ msgid "Resume last session" +#~ msgstr "نهاية الجلسة" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" + +#~ msgid "Today's Hours" +#~ msgstr "" + +#~ msgid "overtime" +#~ msgstr "وقت" + +#~ msgid "Week's Hours" +#~ msgstr "" + +#~ msgid "Month's Hours" +#~ msgstr "" + +#~ msgid "Overtime (YTD)" +#~ msgstr "إعدادات العمل الإضافي" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" + +#~ msgid "Loading insights…" +#~ msgstr "" + +#~ msgid "Value insights" +#~ msgstr "محاذاة لليمين" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "تتبع الوقت. ابق منظمًا." + +#~ msgid "Total hours tracked" +#~ msgstr "إجمالي ساعات العمل" + +#~ msgid "Active days" +#~ msgstr "التنبيهات النشطة" + +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" + +#~ msgid "Hours per day last seven days" +#~ msgstr "" + +#~ msgid "Most productive day" +#~ msgstr "" + +#~ msgid "Avg session length" +#~ msgstr "" + +#~ msgid "Estimated value tracked" +#~ msgstr "القيمة المقدرة" + +#~ msgid "This week vs last week" +#~ msgstr "" + +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" + +#~ msgid "hrs this week" +#~ msgstr "إدخالات الوقت هذا الأسبوع" + +#~ msgid "vs last week" +#~ msgstr "" + +#~ msgid "This week" +#~ msgstr "أسبوع" + +#~ msgid "Last week" +#~ msgstr "العام الماضي" + +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "الإدخالات الأخيرة" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "View all" +#~ msgstr "عرض الكل" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "استئناف - بدء مؤقت جديد بنفس الخصائص" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "تحرير الإدخال" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "إدخال مكرر" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "حذف الإدخال" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "لم يتم العثور على الإدخالات الأخيرة." -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "الهدف الأسبوعي" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "الأيام المتبقية" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "Need" +#~ msgstr "يحتاج" -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "للوصول إلى الهدف" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "لا يوجد هدف أسبوعي" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "حدد هدفًا زمنيًا أسبوعيًا لتتبع تقدمك" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "إنشاء الهدف" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "أهم المشاريع (30 يومًا)" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "View report" +#~ msgstr "تقرير المستخدم" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "الرسوم البيانية الدائرية لتوزيع الوقت" -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "لا يوجد نشاط في آخر 30 يومًا." -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "ابدأ في تتبع الوقت" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "أهم المشاريع (30 يومًا)" -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "لا يوجد نشاط في آخر 30 يومًا." -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "%(count)d اقتباس (اقتباسات) مكررة" -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "حدث خطأ أثناء إنشاء ملف PDF: %(error)s" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "دعم المنصة" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "دليل البدء السريع" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "All templates" +#~ msgstr "قوالب البريد الإلكتروني" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "المهمة (اختيارية)" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "ملاحظات (اختياري)" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "المهمة (اختيارية)" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "على سبيل المثال، الاجتماع، التطوير، المشرف" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "Support Development" +#~ msgstr "دعم التنمية" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "الوثائق الكاملة ودليل المستخدم" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "التنقل السريع" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "تصفية الأقسام..." -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "بداية سريعة" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "التقارير والتحليلات" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "ميزات الإنتاجية" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "ميزات المشرف" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "استخدام الهاتف المحمول" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "التوثيق" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "استكشاف الأخطاء وإصلاحها" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "مركز مساعدة TimeTracker" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "كل ما تحتاج إلى معرفته لتحقيق أقصى استفادة من TimeTracker" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "ابدأ في تتبع الوقت" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "عرض المشاريع" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "إنشاء التقارير" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "رموز API" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "دليل البدء السريع" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "For New Users" +#~ msgstr "للمستخدمين الجدد" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "" +#~ "قم بتسجيل الدخول باستخدام اسم المستخدم" +#~ " الخاص بك (لا توجد كلمة مرور " +#~ "مطلوبة)" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "استكشف لوحة التحكم للاطلاع على النظرة العامة الخاصة بك" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "ابدأ مؤقتك الأول في مشروع موجود" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "عرض إدخالات الوقت الخاص بك في التقارير" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "للمسؤولين" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "قم بإعداد العملاء في قسم إدارة العملاء" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "إنشاء المشاريع وإسنادها للعملاء" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "تكوين إعدادات النظام (المنطقة الزمنية، والعملة، وما إلى ذلك)" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "إدارة المستخدمين والأذونات" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "نصيحة للمحترفين:" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "استخدم الواجهة الملائمة للجوال لتتبع " +#~ "الوقت أثناء التنقل. يستمر المؤقت في " +#~ "العمل حتى إذا قمت بإغلاق المتصفح " +#~ "الخاص بك!" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "تتبع في الوقت الفعلي من خلال الكشف" +#~ " التلقائي عن الخمول وتحديثات WebSocket" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "الإدخال اليدوي" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "قم بتسجيل الوقت يدويًا باستخدام أوقات البدء والانتهاء المخصصة" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "بدء تشغيل الموقّت" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "انتقل إلى صفحة المؤقت أو لوحة المعلومات" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "حدد مشروعًا من القائمة المنسدلة" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "اختياريًا، حدد مهمة لتتبع أكثر تفصيلاً" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "أضف ملاحظات حول ما تعمل عليه (اختياري)" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "إضافة علامات مفصولة بفواصل (اختياري)" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "انقر فوق \"بدء الموقت\"" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "ميزات الموقت" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "عرض المدة في الوقت الحقيقي" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "عنصر المخزون" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "حدد العنصر" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "مستودع" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "حدد المستودع" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "كمية التعديل" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "استخدم القيم الإيجابية لزيادة المخزون، والقيم السلبية لتقليله" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "على سبيل المثال، تصحيح العد الفعلي، والأضرار، والعناصر التي تم العثور عليها" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "تفاصيل إضافية حول هذا التعديل" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "تعديل السجل" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "جميع المستودعات" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "كافة العناصر" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "التاريخ من" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "التاريخ إلى" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "غرض" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "لم يتم العثور على أي تعديلات." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "في متناول اليد" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "نقطة إعادة الطلب" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "النقص" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "إعادة ترتيب الكمية" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "لا توجد تنبيهات انخفاض المخزون. جميع العناصر أعلى من نقطة إعادة الطلب." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Continues running if browser closes" +#~ msgstr "يستمر التشغيل في حالة إغلاق المتصفح" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "الكشف التلقائي عن الخمول (قابل للتكوين)" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "One active timer per user (configurable)" +#~ msgstr "مؤقت نشط واحد لكل مستخدم (قابل للتكوين)" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "استخدم قيمًا موجبة لعمليات الإضافة، وسالبة لعمليات الإزالة" +#~ msgid "WebSocket live updates" +#~ msgstr "تحديثات WebSocket الحية" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "Manual Time Entry" +#~ msgstr "إدخال الوقت يدويا" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "قم بإنشاء إدخالات الوقت يدويًا عندما " +#~ "تحتاج إلى تسجيل الوقت الذي تقضيه " +#~ "بعيدًا عن الكمبيوتر أو ضبط الإدخالات " +#~ "الموجودة." -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "Required Information" +#~ msgstr "المعلومات المطلوبة" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "نوع الحركة" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "يعود" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "يضيع" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "Project selection" +#~ msgstr "اختيار المشروع" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "تاريخ البدء والوقت" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "تاريخ ووقت الانتهاء" -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "معلومات اختيارية" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "مهمة المهمة" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "الوصف/الملاحظات" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "العلامات للتصنيف" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "تجاوز الحالة القابلة للفوترة" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "ميزات متقدمة لإدخال الوقت" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "الدخول بالجملة" -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "على سبيل المثال، تصحيح العد الفعلي" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "سجل الحركة" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "نوع المرجع" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "يدوي" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "تكلفة الوحدة" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "مرجع" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "إنشاء إدخالات زمنية متعددة لأيام متتالية" +#~ " بنفس المشروع والمدة. مثالية لأنماط " +#~ "العمل العادية." -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "لم يتم العثور على حركات الأسهم." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "مزود" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "حدد المورد" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "تاريخ الطلب" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "تاريخ التسليم المتوقع" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "ملاحظات مرئية للمورد" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "ملاحظات داخلية (غير مرئية للمورد)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "أغراض" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "إضافة عنصر" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "الكمية" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "رمز SKU للمورد" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "إنشاء أمر الشراء" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "مسودة" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "مرسل" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "مؤكد" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "تلقى" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "جميع الموردين" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "رقم أمر الشراء" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "التسليم المتوقع" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "لم يتم العثور على طلبات الشراء." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "هل أنت متأكد أنك تريد إلغاء أمر الشراء هذا؟" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "هل أنت متأكد أنك تريد حذف أمر الشراء هذا؟" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "تفاصيل أمر الشراء" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "تاريخ الاستلام" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "الكمية المطلوبة" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "الكمية المستلمة" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "إجمالي الخط" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "شحن" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "تلقي أمر الشراء" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "وضع علامة كمستلم" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "لا توجد عناصر في أمر الشراء هذا." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "إجمالي العناصر" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "إجمالي المستودعات" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "إجمالي قيمة المخزون" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "عناصر المخزون المنخفض" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "التقارير المتاحة" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "تقييم الأسهم" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "عرض قيمة المخزون حسب المستودع" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "تاريخ الحركة" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "سجل الحركة التفصيلي" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "تحليل دوران" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "معدلات دوران المخزون" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "تقرير المخزون المنخفض" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "العناصر الموجودة أسفل نقطة إعادة الطلب" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "تم العثور على %(count)s من العناصر أسفل نقطة إعادة الطلب الخاصة بها." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "الكمية في متناول اليد" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "إعادة طلب الكمية" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "إنشاء أمر الشراء" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "جميع مستويات الأسهم جيدة" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "لا توجد عناصر حاليًا أقل من نقطة إعادة الطلب الخاصة بها." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "لم يتم العثور على أي حركات." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "يشير معدل الدوران إلى عدد مرات بيع المخزون واستبداله خلال عام واحد. تشير المعدلات الأعلى إلى العناصر سريعة الحركة." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "إجمالي المبيعات" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "متوسط ​​مستوى المخزون" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "معدل الدوران" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "تتحرك بسرعة" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "طبيعي" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "بطيء الحركة" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "بطيء جدًا" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "لم يتم العثور على بيانات المبيعات للفترة المحددة." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "تقييم المخزون" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "القيمة الإجمالية" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "لم يتم العثور على عناصر تحتوي على معلومات التكلفة." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "محجوز" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "تم الوفاء به" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "محفوظة في" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "تنتهي في" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "الوفاء بهذا الحجز؟" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "إلغاء هذا الحجز؟" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "لم يتم العثور على أي تحفظات." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "وحدة" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "التكلفة الافتراضية" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "السعر الافتراضي" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "عنوان URL للصورة" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "تتبع المخزون" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "إدارة موردين متعددين لهذا العنصر بأسعار مختلفة." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "موك" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "المهلة الزمنية (أيام)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "المفضل" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "إضافة مورد" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "لم يتم العثور على سجل حركة لهذا العنصر." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU، الاسم، الباركود..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "نشط فقط" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "إجمالي الكمية" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "متاح" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "مخزون منخفض" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "لم يتم العثور على عناصر المخزون." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "تفاصيل السلعة" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "يمكن تتبعها" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "مستويات المخزون حسب المستودعات" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Templates" +#~ msgstr "قوالب" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "حفظ إدخالات الوقت المستخدمة بشكل متكرر" +#~ " كقوالب لإعادة استخدامها بسرعة. يحفظ " +#~ "المشروع والمهمة والملاحظات." -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "تصور إدخالات وقتك في التقويم. قم " +#~ "بالسحب والإفلات لإعادة الجدولة أو انقر" +#~ " فوق التواريخ لإضافة إدخالات." -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "تحركات الأسهم الأخيرة" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "المجموع في متناول اليد" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "إجمالي المحجوزة" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "الإجمالي المتاح" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "تنبيه انخفاض المخزون" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "هذا العنصر غير قابل للتتبع." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "الحجوزات النشطة" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "الكمية محفوظة" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "آخر إحصاء" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "لم يتم العثور على مخزون لهذا البند في أي مستودع." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "لم يتم العثور على مستويات المخزون." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "مخزون منخفض فقط" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "ذروة البيع" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "لم يتم العثور على عناصر المخزون في هذا المستودع." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "رمز المورد" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "رمز فريد لهذا المورد (على سبيل المثال، SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "شروط الدفع" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "على سبيل المثال، صافي 30، صافي 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "الرمز، الاسم، البريد الإلكتروني" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "لم يتم العثور على الموردين." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "تفاصيل المورد" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "عناصر المخزون من هذا المورد" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "مهلة" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "لا توجد عناصر مخزون مرتبطة بهذا المورد." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "العناصر المفضلة" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "من المستودع" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "حدد المستودع المصدر" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "إلى المستودع" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "حدد المستودع الوجهة" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "ملاحظات اختيارية حول هذا النقل" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "إنشاء نقل" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "لم يتم العثور على التحويلات." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "رمز المستودع" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "الرمز الفريد لهذا المستودع (على سبيل المثال، WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "البريد الإلكتروني للاتصال" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "هاتف الاتصال" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "لم يتم العثور على مستودعات." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "تفاصيل المستودع" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "لا توجد عناصر المخزون في هذا المستودع." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "الكمية الإجمالية" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "Project Information" +#~ msgstr "معلومات المشروع" -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "اسم المشروع الوصفي" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "منظمة العملاء المرتبطة" -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "تفاصيل المشروع ونطاقه" -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "نشط أو مكتمل أو مؤرشف" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Billing Information" +#~ msgstr "معلومات الفواتير" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "ما إذا كان ينبغي تتبع الوقت لإعداد الفواتير" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Rate for billable time calculations" +#~ msgstr "معدل لحسابات الوقت القابلة للفوترة" -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Billing Reference" +#~ msgstr "مرجع الفواتير" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "رقم طلب الشراء أو رمز الفاتورة" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "عمليات المشروع" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "طلب الموافقة" +#~ msgid "Create new projects with client relationships" +#~ msgstr "إنشاء مشاريع جديدة مع علاقات العملاء" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "حالة الموافقة" +#~ msgid "Edit existing projects to update details" +#~ msgstr "تحرير المشاريع الحالية لتحديث التفاصيل" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "أرشفة المشاريع للاختباء من أجهزة ضبط الوقت (يحفظ البيانات)" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "حذف المشاريع (إزالة كافة إدخالات الوقت المرتبطة)" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Best Practices" +#~ msgstr "أفضل الممارسات" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Use descriptive project names" +#~ msgstr "استخدم أسماء المشاريع الوصفية" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "سبب الرفض" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "قم بتعيين أسعار دقيقة للساعة للفواتير" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "أرشفة بدلاً من الحذف عندما يكون ذلك ممكناً" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "إجراءات سريعة" +#~ msgid "Use billing references for external tracking" +#~ msgstr "استخدم مراجع الفواتير للتتبع الخارجي" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "يساعد نظام إدارة العملاء على تنظيم " +#~ "عملك من خلال مؤسسات العملاء، ومنع " +#~ "الأخطاء وتبسيط عملية إنشاء المشروع." -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "تصدير إلى إكسل" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "مدفوعة جزئيا" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "مدفوعة بالكامل" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "إنشاء فاتورة" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "إنشاء فاتورة جديدة للمشروع والعميل" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "اختر مشروعًا" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "سيؤدي تحديد المشروع إلى ملء تفاصيل العميل تلقائيًا" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Client Information" +#~ msgstr "معلومات العميل" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Organization Name" +#~ msgstr "اسم المنظمة" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "معدل الضريبة (%)" +#~ msgid "Company or client name" +#~ msgstr "اسم الشركة أو العميل" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "نصائح" +#~ msgid "Primary contact details" +#~ msgstr "تفاصيل الاتصال الأساسية" -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "اختر المشروع الصحيح لملء تفاصيل العميل تلقائيًا." +#~ msgid "Email & Phone" +#~ msgstr "البريد الإلكتروني والهاتف" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "يمكنك تخصيص الملاحظات والشروط قبل إرسال الفاتورة." +#~ msgid "Contact information" +#~ msgstr "معلومات الاتصال" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "تحرير الفاتورة" +#~ msgid "Business address" +#~ msgstr "عنوان العمل" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "تحديث تفاصيل الفاتورة والأصناف والشروط" +#~ msgid "Benefits" +#~ msgstr "فوائد" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "الخدمات القائمة على الوقت والعمل بالساعة" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "اختيار القائمة المنسدلة يمنع الأخطاء المطبعية" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "المعدلات الافتراضية لتعبئة المشاريع تلقائيًا" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "تسمية العميل متسقة" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Easier project organization" +#~ msgstr "تنظيم المشروع أسهل" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "حدد عنصر المخزون" +#~ msgid "Project Count" +#~ msgstr "عد المشروع" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "على سبيل المثال، خدمات تطوير الويب" +#~ msgid "Total and active projects" +#~ msgstr "إجمالي المشاريع النشطة" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Total hours worked" +#~ msgstr "إجمالي ساعات العمل" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "إزالة العنصر" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "العناصر المجموع الفرعي" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "النفقات القابلة للفوترة مثل السفر والوجبات والمواد" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "أضف النفقات" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "على سبيل المثال، السفر لحضور اجتماع العملاء" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "النفقات المرتبطة - لا يمكن تحرير العنوان" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "النفقات المرتبطة - لا يمكن تحرير الوصف" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "النفقات المرتبطة - لا يمكن تحرير الفئة" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "يسافر" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "وجبات" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "إقامة" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "لوازم" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "برمجة" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "معدات" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "خدمات" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "تسويق" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "تمرين" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "آخر" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "النفقات المرتبطة - لا يمكن تعديل المبلغ" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "النفقات المرتبطة - لا يمكن تعديل التاريخ" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "إلغاء ربط النفقات بالفاتورة" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "المجموع الفرعي للمصروفات" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "بضائع اضافية" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "المنتجات والمواد والتراخيص والسلع الأخرى" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "أضف جيد" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "سعر" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "على سبيل المثال، ترخيص البرنامج" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "منتج" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "خدمة" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "مادة" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "إزالة جيدة" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "السلع المجموع الفرعي" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "المعاينة المباشرة" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "قسط" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "بضائع" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "توليد من الوقت / التكاليف" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "سجل الدفع" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "تصدير قوات الدفاع الشعبي" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "تصدير CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "فاتورة مكررة" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "هل أنت متأكد أنك تريد إلغاء ربط هذه النفقات بالفاتورة؟" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "إلغاء ربط النفقات" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "إلغاء الارتباط" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "يرجى إضافة عنصر أو مصروف أو سلعة إضافية واحدة على الأقل إلى الفاتورة" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "توليد من الوقت والتكاليف والسلع" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "حدد إدخالات الوقت غير المفوترة وتكاليف المشروع والسلع الإضافية لإضافتها إلى هذه الفاتورة" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "العودة إلى التحرير" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "إدخالات الوقت غير المفوترة" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "إدخالات" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "لم يتم العثور على إدخالات زمنية غير مفوترة لهذا المشروع." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "تكاليف المشروع غير المفوترة" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "لم يتم العثور على تكاليف غير مفوترة لهذا المشروع." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "النفقات غير القابلة للفوترة" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "بائع" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "لم يتم العثور على نفقات غير مفوترة قابلة للفوترة لهذا المشروع." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "مشروع السلع الإضافية" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "لم يتم العثور على سلع إضافية لهذا المشروع." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "إضافة المحدد إلى الفاتورة" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "ملخص الاختيار" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "إجمالي الساعات المتاحة" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "إجمالي التكاليف المتاحة" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "إجمالي النفقات المتاحة" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "إجمالي السلع المتوفرة" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "نظرة عامة على ساعات الدفع المسبق" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "تتضمن الخطة %(hours)s ساعة لكل دورة (يتم إعادة الضبط في يوم %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "المستهلكة: %(consumed)s h • المتبقية: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "لم يتم تسجيل أي استخدام للدفع المسبق لفترة محددة حتى الآن." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "يمكنك تحديد إدخالات زمنية متعددة، والتكاليف، والنفقات، والسلع الإضافية." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "يتم تجميع إدخالات الوقت حسب المهمة أو المشروع عند إنشاء العنصر." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "تتم إضافة التكاليف والسلع الإضافية كبنود فاتورة فردية." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "ترتبط المصاريف بالفاتورة وتظهر في قسم منفصل." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "يرجى تحديد إدخال أو تكلفة أو نفقات أو سلعة إضافية لمرة واحدة على الأقل" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "تصفية الفواتير" +#~ msgid "Cost Estimation" +#~ msgstr "تقدير التكلفة" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "رقم الفاتورة أو العميل" +#~ msgid "Estimated billing amounts" +#~ msgstr "مبالغ الفواتير المقدرة" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "حذف الفواتير المحددة" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "قم بتقسيم المشاريع إلى مهام يمكن " +#~ "التحكم فيها من خلال التتبع التفصيلي " +#~ "ومراقبة التقدم." -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "تغيير الحالة للفواتير المحددة" +#~ msgid "Task Properties" +#~ msgstr "خصائص المهمة" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "الاسم والوصف" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "مسح تحديد المهمة" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "مستويات الأولوية" -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "حذف الفاتورة" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "تحذير:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "هل أنت متأكد أنك تريد حذف الفاتورة" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "سيتم حذف جميع عناصر الفاتورة والسلع الإضافية وسجلات الدفع المرتبطة بهذه الفاتورة نهائيًا." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "فاتورة" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "فاتورة #" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "مشروع قانون ل" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "الكمية (ساعات)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "تم إنشاؤها من %(num)d إدخالات زمنية" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "حساب" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "المجموع الفرعي:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "الضريبة (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "المبلغ الإجمالي:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "ملحوظات:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "شروط:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "معلومات الدفع:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "الشروط والأحكام:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "منخفض، متوسط، مرتفع، عاجل" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "تواريخ الاستحقاق" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Deadline tracking" +#~ msgstr "تتبع الموعد النهائي" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Assignment" +#~ msgstr "تكليف" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "ملكية المهمة" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "تتبع الحالة" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "تاريخ الدفع" +#~ msgid "To Do - Not started" +#~ msgstr "المهام - لم تبدأ" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "إرسال الفاتورة عبر البريد الإلكتروني" +#~ msgid "In Progress - Currently working" +#~ msgstr "قيد التقدم - العمل حاليا" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "المراجعة - جاهزة للمراجعة" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "غير معين" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "تم - اكتمل" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "تم الإلغاء - غير مطلوب" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "ميزات تتبع الوقت" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "تطبيق المرشحات" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "صفحة" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "ل" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "لم يتم العثور على مستخدمين." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Start timers directly from tasks" +#~ msgstr "بدء الموقتات مباشرة من المهام" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "ربط إدخالات الوقت بمهام محددة" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "تتبع الساعات المقدرة مقابل الساعات الفعلية" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "مراقبة تقدم المهمة تلقائيا" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "إدارة المهام" +#~ msgid "Task Views" +#~ msgstr "طرق عرض المهام" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "مهامي - المهام المخصصة لك" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "جميع المهام - قائمة المهام كاملة" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "المهام المتأخرة - العناصر المتأخرة" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "مهام المشروع - المهام داخل المشاريع" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "Collaboration Features" +#~ msgstr "ميزات التعاون" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "كانبان" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "تعليقات المهام - مناقشات مترابطة حول المهام" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "إدارة الأعمدة" +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "دعم تخفيض السعر - تنسيق غني في الأوصاف" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "اسحب المهام بين الأعمدة لتحديث حالتها" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "إشارات المستخدم - ضع علامة على أعضاء الفريق (إذا تم تمكينه)" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "لوحة كانبان" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "مرفقات الملفات - إرفاق الملفات بالمهام (إذا كانت ممكّنة)" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "انتقل الى" +#~ msgid "Markdown Formatting" +#~ msgstr "تنسيق تخفيض السعر" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "لا توجد مهام في هذا العمود." +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "تدعم أوصاف المهام والمشروع تخفيض السعر:" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "إدارة أعمدة كانبان" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**غامق**، *مائل*، ~~ يتوسطه خط ~~" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "قم بتخصيص أعمدة لوحة كانبان وحالات المهام" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# العناوين، - القوائم، [الروابط](url)" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "مشروع:" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```كتل التعليمات البرمجية```، الجداول، الصور" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "الأعمدة العالمية" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "تصور سير العمل الخاص بك باستخدام " +#~ "لوحة كانبان للسحب والإفلات لإدارة المهام" +#~ " بشكل بديهي." -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "إضافة عمود" +#~ msgid "Board Features" +#~ msgstr "مميزات اللوحة" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "قائمة أعمدة كانبان" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "أعمدة قابلة للتخصيص تتوافق مع حالات المهام" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "مفتاح" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "مهام السحب والإفلات بين الأعمدة" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "مكتمل؟" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "التصفية حسب المشروع أو المستخدم أو الأولوية" -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "اسحب لإعادة الترتيب" +#~ msgid "Quick search across all tasks" +#~ msgstr "بحث سريع في جميع المهام" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "تحرير العمود" +#~ msgid "Using the Kanban Board" +#~ msgstr "استخدام لوحة كانبان" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "تبديل الحالة النشطة" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "الوصول من قائمة المهام أو صفحة المشروع" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "لم يتم العثور على أعمدة كانبان. قم بإنشاء العمود الأول للبدء." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "نصائح:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "قم بسحب وإسقاط الصفوف لإعادة ترتيب الأعمدة" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "لا يمكن حذف أعمدة النظام (todo وin_progress وdone) ولكن يمكن تخصيصها" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "الأعمدة التي تم وضع علامة \"مكتملة\" عليها ستضع علامة على المهام على أنها مكتملة عند سحبها إلى هذا العمود" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "يتم إخفاء الأعمدة غير النشطة من لوحة كانبان ولكن تظل المهام ذات هذه الحالة قابلة للوصول" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "حذف عمود كانبان" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "هل أنت متأكد أنك تريد حذف العمود؟" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "مفتاح:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "ملاحظة: ستظل المهام ذات هذه الحالة قابلة للوصول ولكن لن يظهر العمود بعد ذلك على لوحة كانبان." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "حذف العمود" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "تمت إعادة ترتيب الأعمدة بنجاح" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "فشل في إعادة ترتيب الأعمدة. يرجى المحاولة مرة أخرى." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "إنشاء عمود كانبان" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "أضف عمودًا جديدًا إلى لوحة كانبان الخاصة بك" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "إنشاء نموذج عمود كانبان" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "تسمية العمود" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "على سبيل المثال، قيد المراجعة، محظور، اختبار" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "اسم العرض الموضح على لوحة كانبان" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "مفتاح العمود" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "على سبيل المثال، in_review، محظور، اختبار" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "المعرف الفريد (أحرف صغيرة، بدون مسافات، استخدم الشرطة السفلية). يتم إنشاؤه تلقائيًا من التصنيف إذا كان فارغًا." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "عالمي (لجميع المشاريع)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "حدد مشروعًا لإنشاء أعمدة خاصة بالمشروع، أو اتركه كعام لجميع المشاريع" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "فئة الأيقونات" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "فئة أيقونة الخط رائع" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "تصفح الرموز" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "الابتدائية (الأزرق)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "ثانوي (رمادي)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "النجاح (الأخضر)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "خطر (أحمر)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "تحذير (أصفر)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "معلومات (سماوي)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "فئة ألوان Bootstrap للتصميم" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "وضع علامة كحالة كاملة" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "سيتم وضع علامة على المهام المنقولة إلى هذا العمود كمكتملة" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "إنشاء عمود" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "ملحوظة:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "سيتم إضافة العمود في نهاية اللوحة. يمكنك إعادة ترتيب الأعمدة لاحقًا من صفحة الإدارة." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "تحرير عمود كانبان" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "تعديل إعدادات العمود" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "تحرير نموذج عمود كانبان" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "لا يمكن تغيير المفتاح بعد الإنشاء" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "هذا عمود خاص بالمشروع" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "هذا عمود عام (لجميع المشاريع)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "معاينة" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "يتم إخفاء الأعمدة غير النشطة من لوحة كانبان" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "عمود النظام:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "هذا عمود النظام. يمكنك تخصيص مظهره ولكن لا يمكنك حذفه." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "اسحب المهام إلى أعمدة مختلفة لتغيير الحالة" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "انقر على بطاقة المهمة لعرض/تحرير التفاصيل" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "تبديل الوضع المظلم" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "استخدم المرشحات للتركيز على عمل محدد" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "تعتبر لوحة كانبان مثالية للتخطيط " +#~ "للسباقات والمواقف اليومية. يمثل كل عمود" +#~ " مرحلة في سير عملك!" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "تتبع النفقات" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "تتبع نفقات الأعمال وإدارة الإيصالات " +#~ "والتعامل مع المبالغ المستردة بكفاءة." -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "ميزات النفقات" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "تصنيف النفقات (السفر، الوجبات، الإمدادات، الخ)" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "إرفاق صور ومستندات الإيصال" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "تتبع المبالغ والضرائب وطرق الدفع" -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "الموافقة على سير العمل لطلبات النفقات" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "الفواتير والسداد" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "وضع علامة على النفقات على أنها قابلة للفوترة للعملاء" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "تضمين النفقات في فواتير العميل" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "تتبع حالة السداد" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "ربط النفقات بمشاريع محددة" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "سجل النفقات" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "أدخل التفاصيل وتحميل الإيصال" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "تقديم للموافقة" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Admin reviews and approves" +#~ msgstr "يراجع المشرف ويوافق" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "الفاتورة/السداد" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "إضافة إلى الفاتورة أو سداد" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "تتبع الدفع" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "مراقبة حالة السداد" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Professional Invoicing" +#~ msgstr "الفواتير المهنية" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "إنشاء ملفات PDF احترافية" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Company branding and logos" +#~ msgstr "العلامات التجارية والشعارات الخاصة بالشركة" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "ترقيم الفاتورة تلقائيًا" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "حسابات الضرائب" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Time Integration" +#~ msgstr "التكامل الزمني" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "إيقاف الموقت" +#~ msgid "Generate from time entries" +#~ msgstr "توليد من إدخالات الوقت" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Smart grouping by task/project" +#~ msgstr "التجميع الذكي حسب المهمة/المشروع" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "منع الفواتير المزدوجة" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "استخدم أسعار المشروع بالساعة" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "لا توجد مهمة" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "إعداد تفاصيل العميل والمشروع" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "ما الذي تعمل عليه؟" +#~ msgid "Add Items" +#~ msgstr "إضافة عناصر" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Generate from time or add manually" +#~ msgstr "أنشئ من الوقت أو أضف يدويًا" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "مراجعة وإرسال" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "تصدير PDF وحالة التحديث" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "مراقبة الحالة والمدفوعات" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Standard Reports" +#~ msgstr "التقارير القياسية" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "تقرير المشروع - تفصيل الوقت حسب المشروع" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "تقرير المستخدم - مقاييس الأداء الفردية" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "تقرير ملخص - المقاييس والاتجاهات الرئيسية" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "تقرير إدخال الوقت - سجلات زمنية مفصلة" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Export Options" +#~ msgstr "خيارات التصدير" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "تصدير CSV - للتحليل الخارجي" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Configurable delimiters" +#~ msgstr "المحددات القابلة للتكوين" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "Custom date ranges" +#~ msgstr "النطاقات الزمنية المخصصة" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Filtered data export" +#~ msgstr "تصدير البيانات التي تمت تصفيتها" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "خيارات التصفية" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "ملخص" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "النطاق الزمني - تواريخ البدء والانتهاء المخصصة" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "المشروع - التصفية حسب مشاريع محددة" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "مصدر" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "موقع ويب، إحالة، إعلان..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "نقاط الرصاص" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "القيمة المقدرة" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "حفظ الرصاص" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "الاسم، الشركة، البريد الإلكتروني..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "جميع الحالات" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "موقع، إحالة..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "نتيجة" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "لم يتم العثور على أي خيوط" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "إنشاء العميل المتوقع الأول" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "User - Filter by team members" +#~ msgstr "المستخدم - التصفية حسب أعضاء الفريق" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "Client - Filter by client organization" +#~ msgstr "العميل - التصفية حسب المؤسسة العميلة" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "المرشحات المحفوظة - احفظ المرشحات المستخدمة بشكل متكرر" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Visual Analytics" +#~ msgstr "التحليلات البصرية" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "Interactive bar charts" +#~ msgstr "الرسوم البيانية الشريطية التفاعلية" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "تتبع الوقت المهني وإدارة المشاريع" +#~ msgid "Time distribution pie charts" +#~ msgstr "الرسوم البيانية الدائرية لتوزيع الوقت" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "تطبيق شامل لتتبع الوقت على شبكة الإنترنت تم تصميمه باستخدام Flask، ويتميز بإدارة المشاريع وتنظيم العملاء وإدارة المهام والفواتير والتحليلات المتقدمة." +#~ msgid "Trend analysis over time" +#~ msgstr "تحليل الاتجاه مع مرور الوقت" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "الفواتير" +#~ msgid "Mobile-optimized charts" +#~ msgstr "الرسوم البيانية المحسنة للجوال" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "استخدم عوامل التصفية المحفوظة للوصول " +#~ "بسرعة إلى طرق عرض التقارير الأكثر " +#~ "شيوعًا. احفظ المرشحات للمراجعات الأسبوعية " +#~ "أو الفواتير الشهرية أو تتبع مشروع " +#~ "محدد!" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "الموقتات الذكية" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "عزز كفاءتك باستخدام اختصارات لوحة " +#~ "المفاتيح ولوحة الأوامر وميزات التشغيل " +#~ "الآلي." -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "تتبع في الوقت الحقيقي مع الكشف عن الخمول والتحديثات المباشرة" +#~ msgid "Command Palette" +#~ msgstr "لوحة الأوامر" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "إدارة العملاء" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "يمكنك الوصول إلى أي ميزة على الفور دون مغادرة لوحة المفاتيح" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "تنظيم العملاء مع جهات الاتصال والأسعار وعلاقات المشروع" +#~ msgid "Opening the Command Palette" +#~ msgstr "فتح لوحة الأوامر" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "نظام المهام" +#~ msgid "Press the question mark key" +#~ msgstr "اضغط على مفتاح علامة الاستفهام" -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "قم بتقسيم المشاريع إلى مهام مع تتبع التقدم" +#~ msgid "Quick search" +#~ msgstr "بحث سريع" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "فواتير PDF" +#~ msgid "Go to Projects" +#~ msgstr "اذهب إلى المشاريع" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "إنشاء فواتير احترافية من الوقت المتعقب" +#~ msgid "Go to Tasks" +#~ msgstr "انتقل إلى المهام" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "الميزات الأساسية" +#~ msgid "New Time Entry" +#~ msgstr "دخول الوقت الجديد" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "بدء/إيقاف الموقتات مع ارتباط المشروع والمهمة" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "اختصارات لوحة المفاتيح" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "إدخال الوقت يدويًا مع الملاحظات والعلامات" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "التنقل بشكل أسرع باستخدام الأوامر التي" +#~ " تعتمد على لوحة المفاتيح. اضغط على" +#~ " Shift+؟ لرؤية كافة الاختصارات." -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "تنظيم العميل والمشروع" +#~ msgid "Global Search" +#~ msgstr "البحث العالمي" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "الوصول المستند إلى الأدوار وملفات تعريف المستخدمين" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "يمكنك العثور بسرعة على المشاريع والمهام" +#~ " والعملاء وإدخالات الوقت من أي مكان" +#~ " في التطبيق." -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "الميزات المتقدمة" +#~ msgid "Email Notifications" +#~ msgstr "إشعارات البريد الإلكتروني" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "فواتير PDF ذات علامة تجارية مع تتبع الضرائب والمدفوعات" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "احصل على إشعارات بشأن تعيينات المهام " +#~ "والفواتير المتأخرة والملخصات الأسبوعية عبر " +#~ "البريد الإلكتروني." -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "التحليلات المرئية والتقارير التفصيلية" +#~ msgid "Administrator Features" +#~ msgstr "ميزات المسؤول" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "REST API للتكاملات" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "إنشاء مستخدمين جدد باستخدام مصادقة مرنة" -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "قدرات PWA وواجهة مستخدم متوافقة مع الهاتف المحمول" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "قم بتعيين أدوار مخصصة بأذونات محددة" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "دعم المنصة" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "تفعيل/إلغاء تنشيط حسابات المستخدمين" -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "تطبيق الويب" +#~ msgid "View user statistics and activity" +#~ msgstr "عرض إحصائيات ونشاط المستخدم" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "متصفحات سطح المكتب (Chrome، Firefox، Safari، Edge)" +#~ msgid "Generate API tokens for users" +#~ msgstr "إنشاء رموز API المميزة للمستخدمين" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "تصميم مستجيب للجوال" +#~ msgid "Access Control" +#~ msgstr "التحكم في الوصول" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "تطبيق الويب التقدمي (PWA)" +#~ msgid "Granular role-based permissions system" +#~ msgstr "نظام أذونات دقيق قائم على الأدوار" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "واجهة الكمبيوتر اللوحي سهلة اللمس" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "أدوار مخصصة مع وصول دقيق" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "أنظمة التشغيل" +#~ msgid "User data access controls" +#~ msgstr "ضوابط الوصول إلى بيانات المستخدم" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "ويندوز، ماك، لينكس" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "تكامل OIDC/SSO (Azure AD وAuthelia وما إلى ذلك)" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android وiOS (المتصفح)" +#~ msgid "API token management for integrations" +#~ msgstr "إدارة رمز واجهة برمجة التطبيقات (API) لعمليات التكامل" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "دعم راسبيري باي" +#~ msgid "Authentication Methods" +#~ msgstr "طرق المصادقة" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "نشر إرساء" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "اسم المستخدم فقط (استخدام داخلي بسيط)" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "دعم قاعدة البيانات" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (مصادقة المؤسسة)" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (مستحسن)" +#~ msgid "Both methods simultaneously" +#~ msgstr "كلتا الطريقتين في وقت واحد" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (تطوير/اختبار)" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "تعيين الأدوار تلقائيًا عبر المجموعات" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "عمليات الترحيل التلقائي باستخدام Flask-Migrate" +#~ msgid "Role & Permission Management" +#~ msgstr "إدارة الأدوار والأذونات" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "أدوات النسخ الاحتياطي والاستعادة" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "قم بإنشاء أدوار مخصصة تتجاوز المسؤول/المستخدم" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "المواصفات الفنية" +#~ msgid "Set granular permissions per feature" +#~ msgstr "قم بتعيين الأذونات الدقيقة لكل ميزة" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "كومة التكنولوجيا" +#~ msgid "Assign users to multiple roles" +#~ msgstr "تعيين المستخدمين لأدوار متعددة" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "الخلفية" +#~ msgid "View and manage all permissions" +#~ msgstr "عرض وإدارة جميع الأذونات" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "الواجهة الأمامية" +#~ msgid "General Settings" +#~ msgstr "الإعدادات العامة" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "النشر" +#~ msgid "Timezone and locale settings" +#~ msgstr "إعدادات المنطقة الزمنية والإعدادات المحلية" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "القدرات الرئيسية" +#~ msgid "Currency configuration" +#~ msgstr "تكوين العملة" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "في الوقت الحالى" +#~ msgid "Time rounding rules" +#~ msgstr "قواعد تقريب الوقت" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "Self-registration settings" +#~ msgstr "إعدادات التسجيل الذاتي" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "المصدر المفتوح والمجتمع" +#~ msgid "Timer Settings" +#~ msgstr "إعدادات الموقت" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "فوائد المصدر المفتوح" +#~ msgid "Idle timeout configuration" +#~ msgstr "تكوين مهلة الخمول" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "كود المصدر الكامل متاح على جيثب" +#~ msgid "Single active timer mode" +#~ msgstr "وضع مؤقت نشط واحد" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "مرخص بموجب GPL v3.0" +#~ msgid "Timer display preferences" +#~ msgstr "تفضيلات عرض الموقت" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "التنمية بقيادة المجتمع" +#~ msgid "Notification settings" +#~ msgstr "إعدادات الإخطار" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "تتبع المشكلات بشكل شفاف وتقارير الأخطاء" +#~ msgid "Database Management" +#~ msgstr "إدارة قواعد البيانات" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "خيارات النشر" +#~ msgid "Create manual database backups" +#~ msgstr "إنشاء نسخ احتياطية يدوية لقاعدة البيانات" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "صور عامل الميناء (GHCR)" +#~ msgid "View database migration status" +#~ msgstr "عرض حالة ترحيل قاعدة البيانات" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "النشر المستضاف ذاتيًا مع التحكم الكامل" +#~ msgid "Monitor database performance" +#~ msgstr "مراقبة أداء قاعدة البيانات" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "جاهز للسحابة مع تكوينات الإنشاء" +#~ msgid "Clean up old data and logs" +#~ msgstr "تنظيف البيانات والسجلات القديمة" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "عرض على جيثب" +#~ msgid "System Monitoring" +#~ msgstr "مراقبة النظام" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "الميزات المدعومة" +#~ msgid "View system information and health" +#~ msgstr "عرض معلومات النظام والصحة" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Monitor application performance" +#~ msgstr "مراقبة أداء التطبيق" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Review system logs and errors" +#~ msgstr "مراجعة سجلات النظام والأخطاء" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "ميزات صديقة للجوال" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "الحصول على المساعدة والموارد" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "الأمثل للهواتف والأجهزة اللوحية" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "التوثيق" +#~ msgid "Touch-friendly interface" +#~ msgstr "واجهة سهلة الاستخدام" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "أدلة خطوة بخطوة لجميع الميزات." +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "تخطيطات متكيفة لجميع أحجام الشاشات" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "عرض التعليمات" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "تباين عالٍ للرؤية الخارجية" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "معلومات النظام" +#~ msgid "Mobile Navigation" +#~ msgstr "الملاحة المتنقلة" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "الحالة والإصدارات وتفاصيل التكوين." +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "شريط علامات التبويب السفلي لسهولة الوصول إليه" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "مطلوب وصول المشرف" +#~ msgid "Quick access to dashboard" +#~ msgstr "الوصول السريع إلى لوحة القيادة" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "دعم المجتمع" +#~ msgid "One-tap time logging" +#~ msgstr "تسجيل الوقت بنقرة واحدة" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "الإبلاغ عن المشكلات، طلب الميزات، المساهمة." +#~ msgid "Mobile-optimized reports" +#~ msgstr "تقارير محسنة للجوال" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "قضايا جيثب" +#~ msgid "Installation" +#~ msgstr "تثبيت" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "افتح TimeTracker في متصفح هاتفك المحمول" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "عرض جميع إدخالات الوقت" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "إليك نظرة عامة سريعة على عملك." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "بدء/إيقاف الموقتات مع ارتباط المشروع والمهمة" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "تم الإنشاء في" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "بدء/إيقاف الموقتات مع ارتباط المشروع والمهمة" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "ابحث عن خيار \"إضافة إلى الشاشة الرئيسية\"." -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "يوقف" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "اتبع مطالبات التثبيت الخاصة بالمتصفح" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "خلف" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "قم بالتشغيل من شاشتك الرئيسية مثل التطبيق الأصلي" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "PWA Benefits" +#~ msgstr "فوائد PWA" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "القدرة دون اتصال بالإنترنت للوظائف الأساسية" -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "بدأت في" +#~ msgid "Faster loading times" +#~ msgstr "أوقات تحميل أسرع" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Native app-like experience" +#~ msgstr "تجربة تشبه التطبيق الأصلي" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "إشعارات الدفع (حيثما تكون مدعومة)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "الرسوم البيانية الشريطية التفاعلية" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "المواصفات الفنية" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "التوثيق" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "استكشاف الأخطاء وإصلاحها والأسئلة الشائعة" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "ماذا يحدث إذا نسيت إيقاف مؤقتي؟" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "سيستمر تشغيل المؤقت حتى تقوم بإيقافه " +#~ "يدويًا. يمكنك رؤية مؤقتك النشط على " +#~ "لوحة المعلومات وصفحة المؤقت. يستمر " +#~ "المؤقت حتى إذا قمت بإغلاق المتصفح " +#~ "أو إعادة تشغيل جهازك. إذا تم تمكين" +#~ " اكتشاف الخمول، فقد يتوقف المؤقت " +#~ "تلقائيًا بعد فترة المهلة التي تم " +#~ "تكوينها." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "هل يمكنني تعديل إدخالات الوقت بعد إنشائها؟" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "نعم، يمكنك تعديل أي إدخال للوقت من" +#~ " خلال النقر على زر التعديل في " +#~ "قائمة إدخال الوقت. يمكنك تعديل المشروع،" +#~ " وأوقات البدء/الانتهاء، والملاحظات، والعلامات،" +#~ " وحالة الفوترة، وتعيين المهام. يمكن " +#~ "للمسؤولين تحرير إدخالات جميع الأوقات، " +#~ "بينما يمكن للمستخدمين العاديين فقط تحرير" +#~ " إدخالاتهم الخاصة." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "كيف يمكنني تتبع الوقت لمشاريع متعددة؟" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "افتراضيًا، يمكنك الحصول على مؤقت نشط " +#~ "واحد فقط في كل مرة. لتبديل " +#~ "المشاريع، أوقف مؤقتك الحالي وابدأ مؤقتًا" +#~ " جديدًا لمشروع مختلف. وبدلاً من ذلك،" +#~ " يمكنك إنشاء إدخالات وقت يدوية للعمل" +#~ " السابق أو تكوين النظام للسماح بعدة" +#~ " مؤقتات نشطة (إعداد المسؤول)." + +#~ msgid "How do I export my time data?" +#~ msgstr "كيف يمكنني تصدير بيانات الوقت الخاصة بي؟" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "انتقل إلى صفحة التقارير واستخدم ميزة " +#~ "\"تصدير ملف CSV\". يمكنك تطبيق عوامل " +#~ "التصفية لتصدير بيانات محددة، أو تصدير" +#~ " إدخالات جميع الأوقات. يتضمن ملف CSV" +#~ " تفاصيل إدخال جميع الأوقات ويمكن فتحه" +#~ " في Excel أو تطبيقات جداول البيانات" +#~ " الأخرى. يمكنك أيضًا تكوين المحدد " +#~ "لمعايير إقليمية مختلفة." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "ما الفرق بين الوقت القابل للفوترة وغير القابل للفوترة؟" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "يتم تتبع الوقت القابل للفوترة لأغراض " +#~ "إعداد فواتير العميل ويمكن أن يكون " +#~ "له سعر بالساعة مرتبط به. الوقت غير" +#~ " القابل للفوترة مخصص للعمل الداخلي " +#~ "الذي لا يتم تحميله على العملاء. " +#~ "يمكنك وضع علامة على إدخالات الوقت " +#~ "الفردية على أنها قابلة للفوترة أو " +#~ "غير قابلة للفوترة، ويمكن أن تحتوي " +#~ "المشاريع على إعدادات افتراضية قابلة " +#~ "للفوترة. يعد هذا التمييز أمرًا بالغ " +#~ "الأهمية للفواتير الدقيقة وتحليل الربحية." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "كيف أقوم بإنشاء فاتورة من إدخالات الوقت الخاصة بي؟" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "انتقل إلى الفواتير ← إنشاء فاتورة، " +#~ "وقم بإعداد تفاصيل العميل والمشروع، ثم" +#~ " استخدم \"إنشاء من إدخالات الوقت\" " +#~ "لإنشاء عناصر الفاتورة تلقائيًا من الوقت" +#~ " الذي تم تتبعه. يمكنك التصفية حسب " +#~ "النطاق الزمني والمشروع، وسيقوم النظام " +#~ "بتجميع إدخالات الوقت بذكاء. قم بمراجعة" +#~ " العناصر التي تم إنشاؤها وتصديرها " +#~ "كملف PDF احترافي." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "هل يمكنني استخدام TimeTracker على جهازي المحمول؟" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "نعم! TimeTracker سريع الاستجابة ويعمل " +#~ "بشكل رائع على الأجهزة المحمولة. يمكنك" +#~ " تثبيته كتطبيق ويب تقدمي (PWA) للحصول" +#~ " على تجربة شبيهة بالأصل. تشتمل واجهة" +#~ " الهاتف المحمول على شريط علامات تبويب" +#~ " سفلي لسهولة التنقل وعناصر تحكم محسنة" +#~ " باللمس لتتبع الوقت أثناء التنقل." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "كيف يمكنني استخدام لوحة الأوامر واختصارات لوحة المفاتيح؟" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "اضغط على مفتاح علامة الاستفهام (؟) " +#~ "لفتح لوحة الأوامر. ومن هناك، يمكنك " +#~ "الكتابة للبحث عن أي إجراء أو هدف" +#~ " تنقل. استخدم تسلسلات لوحة المفاتيح " +#~ "مثل \"g d\" للوحة المعلومات، أو " +#~ "\"g p\" للمشاريع، أو \"n e\" " +#~ "للإدخال الجديد. اضغط على Shift+؟ لرؤية" +#~ " جميع الاختصارات المتاحة. اضغط على " +#~ "Ctrl+K (أو Cmd+K في نظام Mac) " +#~ "للبحث السريع." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "كيف أقوم بإنشاء إدخالات زمنية مجمعة لعدة أيام؟" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "انتقل إلى العمل → إدخال الوقت " +#~ "المجمع. حدد مشروعك، واختر نطاقًا زمنيًا،" +#~ " وعيّن أوقات البدء والانتهاء اليومية، " +#~ "وتخطى عطلات نهاية الأسبوع بشكل اختياري." +#~ " سيقوم النظام بإنشاء إدخالات زمنية " +#~ "متطابقة لكل يوم في النطاق. يعد هذا" +#~ " مثاليًا لتسجيل أنماط العمل المنتظمة " +#~ "أو ملء الوقت الماضي عندما عملت " +#~ "لساعات ثابتة." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "ما هي قوالب إدخال الوقت وكيف أستخدمها؟" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "تتيح لك قوالب إدخال الوقت حفظ " +#~ "تكوينات إدخال الوقت المستخدمة بشكل " +#~ "متكرر. عند إنشاء إدخال يدوي للوقت، " +#~ "حدد \"حفظ كقالب\" لحفظ المشروع والمهمة" +#~ " والملاحظات. لاحقًا، عند إنشاء إدخالات " +#~ "جديدة، يمكنك تحديد قالب لملء هذه " +#~ "التفاصيل بسرعة. القوالب شخصية ومرئية لك" +#~ " فقط." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "كيف يمكنني تتبع النفقات وإضافتها إلى الفواتير؟" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "انتقل إلى النفقات → النفقات الجديدة " +#~ "لتسجيل نفقات الأعمال. قم بتحميل صور " +#~ "الإيصالات، وقم بتصنيف النفقات ووضع علامة" +#~ " عليها على أنها قابلة للفوترة إذا " +#~ "لزم الأمر. عند إنشاء الفواتير، يمكنك " +#~ "تضمين هذه النفقات كبنود. تدعم النفقات" +#~ " سير عمل الموافقة، وتتبع السداد، " +#~ "ويمكن ربطها بمشاريع محددة." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "هل يمكنني استخدام Markdown في الأوصاف؟" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "نعم! تدعم أوصاف المشروع والمهام تنسيق" +#~ " Markdown الكامل. يمكنك استخدام العناوين" +#~ " والقوائم والروابط وكتل التعليمات البرمجية" +#~ " والجداول والصور بالخط العريض والمائل. " +#~ "يتيح لك ذلك إنشاء وثائق غنية وجيدة" +#~ " التنسيق مباشرة في مشاريعك ومهامك. " +#~ "يتضمن محرر Markdown وضع المعاينة ويدعم" +#~ " المظهر الداكن." + +#~ msgid "Where can I get additional help?" +#~ msgstr "أين يمكنني الحصول على مساعدة إضافية؟" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "الإبلاغ عن المشكلات وطلب الميزات" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "بوصفك مسؤولاً، يمكنك الوصول إلى معلومات وتشخيصات النظام الإضافية في" + +#~ msgid "section." +#~ msgstr "قسم." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "هل ما زلت بحاجة إلى المساعدة؟" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "لا يمكنك العثور على ما تبحث عنه؟ فيما يلي موارد إضافية:" + +#~ msgid "Complete Documentation" +#~ msgstr "" + +#~ msgid "Documentation Index" +#~ msgstr "" -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "تعديل" +#~ msgid "Getting Started" +#~ msgstr "" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "مسؤل" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "مسؤل" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "الموقتات الذكية" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "إعادة ضبط" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "مستودع جيثب" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "يوقف" +#~ msgid "Report Issue" +#~ msgstr "تقرير المشكلة" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Open support" +#~ msgstr "يدعم" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "لا يوجد توقيت نشط." +#~ msgid "Search Results" +#~ msgstr "نتائج البحث" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "البحث في الملاحظات أو العلامات" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "نهاية الجلسة" +#~ msgid "Results" +#~ msgstr "نتائج" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "هل أنت متأكد أنك تريد حذف إدخال" +#~ " الوقت هذا؟ لا يمكن التراجع عن " +#~ "هذا الإجراء." -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "No results found" +#~ msgstr "لم يتم العثور على نتائج" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "وقت" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "جرّب استعلامًا مختلفًا أو تحقق من إملائك." -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "على سبيل المثال، اجتماع العميل، زيارة الموقع" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "تفاصيل اضافية..." -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "إعدادات العمل الإضافي" +#~ msgid "e.g., Office, Home" +#~ msgstr "على سبيل المثال، المكتب، المنزل" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "على سبيل المثال، موقع العميل، المطار" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "على سبيل المثال، 12345" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "على سبيل المثال، 12400" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "محاذاة لليمين" +#~ msgid "e.g., VW Golf" +#~ msgstr "على سبيل المثال، فولكس فاجن جولف" -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "تتبع الوقت. ابق منظمًا." +#~ msgid "e.g., ABC-123" +#~ msgstr "على سبيل المثال، ABC-123" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "إجمالي ساعات العمل" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "تتبع الوقت" -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "التنبيهات النشطة" +#~ msgid "Back to Mileage" +#~ msgstr "العودة إلى الأدوار" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "التاريخ من" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "Add Point" +#~ msgstr "أضف ملاحظة" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "تتبع النفقات" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "القيمة المقدرة" +#~ msgid "Track ID" +#~ msgstr "تتبع" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Idle" +#~ msgstr "عنوان" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "إدخالات الوقت هذا الأسبوع" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Tracking" +#~ msgstr "تتبع الوقت" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "أسبوع" +#~ msgid "GPS tracking started" +#~ msgstr "ابدأ في تتبع الوقت" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "العام الماضي" +#~ msgid "Track point added" +#~ msgstr "تتبع الدفع" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "GPS tracking stopped" +#~ msgstr "ابدأ في تتبع الوقت" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Expense created" +#~ msgstr "تم رفض النفقة" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "الإدخالات الأخيرة" +#~ msgid "Filter Mileage" +#~ msgstr "تصفية الأميال" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "عرض الكل" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "استئناف - بدء مؤقت جديد بنفس الخصائص" +#~ msgid "Purpose, location..." +#~ msgstr "الهدف والموقع..." -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "تحرير الإدخال" +#~ msgid "Optional approval notes..." +#~ msgstr "ملاحظات الموافقة الاختيارية..." -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "إدخال مكرر" +#~ msgid "Rejection reason (required)" +#~ msgstr "سبب الرفض (مطلوب)" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "حذف الإدخال" +#~ msgid "More navigation" +#~ msgstr "الملاحة المتنقلة" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "لم يتم العثور على الإدخالات الأخيرة." +#~ msgid "Main" +#~ msgstr "بريد إلكتروني" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "اكتب أمرًا أو ابحث..." -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "الهدف الأسبوعي" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "الأيام المتبقية" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "يحتاج" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "للوصول إلى الهدف" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "لا يوجد هدف أسبوعي" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "حدد هدفًا زمنيًا أسبوعيًا لتتبع تقدمك" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "إنشاء الهدف" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "أهم المشاريع (30 يومًا)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "تقرير المستخدم" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "الرسوم البيانية الدائرية لتوزيع الوقت" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "لا يوجد نشاط في آخر 30 يومًا." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "ابدأ في تتبع الوقت" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "أهم المشاريع (30 يومًا)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "لا يوجد نشاط في آخر 30 يومًا." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "%(count)d اقتباس (اقتباسات) مكررة" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "حدث خطأ أثناء إنشاء ملف PDF: %(error)s" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "دعم المنصة" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "دليل البدء السريع" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "قوالب البريد الإلكتروني" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "المهمة (اختيارية)" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "ملاحظات (اختياري)" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "المهمة (اختيارية)" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "على سبيل المثال، الاجتماع، التطوير، المشرف" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "سجل دفعة جديدة" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "إجمالي المدفوعات" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "رسوم البوابة" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Filter Payments" +#~ msgstr "تصفية المدفوعات" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "ID" +#~ msgstr "مدفوع" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "حذف المدفوعات المحددة" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "تغيير الحالة للمدفوعات المحددة" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "الفاتورة ذات الصلة" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "على سبيل المثال، رحلة عمل إلى برلين" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "على سبيل المثال، ألمانيا والولايات المتحدة والمملكة المتحدة" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "دعم التنمية" +#~ msgid "e.g., Berlin" +#~ msgstr "على سبيل المثال، برلين" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "مطالبات التصفية" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "حذف المطالبات المحددة" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "تغيير الحالة للمطالبات المحددة" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "ملاحظات إضافية حول هذا السعر..." -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "هل أنت متأكد أنك تريد حذف معدل البدل اليومي هذا؟" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "حذف معدل البدل اليومي" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "مشروع قابل للفوترة" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "الساعات المقدرة" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "مبلغ الميزانية" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "اسم المهمة" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "رمز المشروع" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "Create Project" +#~ msgstr "إنشاء مشروع" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "الوثائق الكاملة ودليل المستخدم" +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "التنقل السريع" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "تصفية الأقسام..." +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "بداية سريعة" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "التقارير والتحليلات" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "ميزات الإنتاجية" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "ميزات المشرف" +#~ msgid "Kanban board columns" +#~ msgstr "أعمدة لوحة كانبان" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "استخدام الهاتف المحمول" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "التوثيق" +#~ msgid "Edit swimlane" +#~ msgstr "تحرير مسار السباحة" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "استكشاف الأخطاء وإصلاحها" +#~ msgid "Column" +#~ msgstr "عمود" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "مركز مساعدة TimeTracker" +#~ msgid "List View" +#~ msgstr "عرض القائمة" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "كل ما تحتاج إلى معرفته لتحقيق أقصى استفادة من TimeTracker" +#~ msgid "Grid View" +#~ msgstr "عرض الشبكة" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "ابدأ في تتبع الوقت" +#~ msgid "Rate" +#~ msgstr "تاريخ" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "عرض المشاريع" +#~ msgid "Edit Project" +#~ msgstr "تحرير المشروع" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "إنشاء التقارير" +#~ msgid "Add Cost" +#~ msgstr "أضف ملاحظة" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "رموز API" +#~ msgid "Add Cost to Project" +#~ msgstr "العودة إلى المشروع" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "على سبيل المثال، السفر لحضور اجتماع العملاء" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "دليل البدء السريع" +#~ msgid "Brief description of the cost" +#~ msgstr "وصف مختصر لهذه الفئة..." -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "للمستخدمين الجدد" +#~ msgid "Select category" +#~ msgstr "فئة" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "قم بتسجيل الدخول باستخدام اسم المستخدم الخاص بك (لا توجد كلمة مرور مطلوبة)" +#~ msgid "Materials" +#~ msgstr "مادة" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "استكشف لوحة التحكم للاطلاع على النظرة العامة الخاصة بك" +#~ msgid "Software/Licenses" +#~ msgstr "على سبيل المثال، ترخيص البرنامج" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "ابدأ مؤقتك الأول في مشروع موجود" +#~ msgid "Additional details about this cost" +#~ msgstr "تفاصيل إضافية حول هذا التعديل" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "عرض إدخالات الوقت الخاص بك في التقارير" +#~ msgid "Billable to client" +#~ msgstr "العودة إلى العميل" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "للمسؤولين" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "قم بإعداد العملاء في قسم إدارة العملاء" +#~ msgid "Add Extra Good" +#~ msgstr "أضف المزيد من الخير" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "إنشاء المشاريع وإسنادها للعملاء" +#~ msgid "Add a product or service to" +#~ msgstr "إضافة منتج أو خدمة إلى" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "تكوين إعدادات النظام (المنطقة الزمنية، والعملة، وما إلى ذلك)" +#~ msgid "Back to Project" +#~ msgstr "العودة إلى المشروع" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "إدارة المستخدمين والأذونات" +#~ msgid "SKU/Product Code" +#~ msgstr "SKU/رمز المنتج" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "نصيحة للمحترفين:" +#~ msgid "What happens when you archive a project?" +#~ msgstr "ماذا يحدث عند أرشفة المشروع؟" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "استخدم الواجهة الملائمة للجوال لتتبع الوقت أثناء التنقل. يستمر المؤقت في العمل حتى إذا قمت بإغلاق المتصفح الخاص بك!" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "سيتم إخفاء المشروع من قوائم المشاريع النشطة" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "تتبع في الوقت الفعلي من خلال الكشف التلقائي عن الخمول وتحديثات WebSocket" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "لا يمكن إضافة أي إدخالات زمنية جديدة إلى هذا المشروع" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "الإدخال اليدوي" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "يتم الاحتفاظ بالبيانات الموجودة وإدخالات الوقت" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "قم بتسجيل الوقت يدويًا باستخدام أوقات البدء والانتهاء المخصصة" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "يمكنك إلغاء أرشفة المشروع لاحقًا إذا لزم الأمر" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "بدء تشغيل الموقّت" +#~ msgid "Reason for Archiving" +#~ msgstr "سبب الارشيف" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "على سبيل المثال، اكتمل المشروع، انتهى" +#~ " عقد العميل، تم إلغاء المشروع، وما" +#~ " إلى ذلك." -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "انتقل إلى صفحة المؤقت أو لوحة المعلومات" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "تساعد إضافة سبب في تنظيم المشروع والمرجع المستقبلي." -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "حدد مشروعًا من القائمة المنسدلة" +#~ msgid "Quick Select" +#~ msgstr "تحديد سريع" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "اختياريًا، حدد مهمة لتتبع أكثر تفصيلاً" +#~ msgid "Project completed successfully" +#~ msgstr "اكتمل المشروع بنجاح" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "أضف ملاحظات حول ما تعمل عليه (اختياري)" +#~ msgid "Project Completed" +#~ msgstr "اكتمل المشروع" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "إضافة علامات مفصولة بفواصل (اختياري)" +#~ msgid "Client contract ended" +#~ msgstr "انتهى عقد العميل" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "انقر فوق \"بدء الموقت\"" +#~ msgid "Contract Ended" +#~ msgstr "انتهى العقد" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "ميزات الموقت" +#~ msgid "Project cancelled by client" +#~ msgstr "تم إلغاء المشروع من قبل العميل" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "عرض المدة في الوقت الحقيقي" +#~ msgid "Project on hold indefinitely" +#~ msgstr "المشروع معلق لأجل غير مسمى" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "On Hold" +#~ msgstr "في الانتظار" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Maintenance period ended" +#~ msgstr "انتهت فترة الصيانة" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Maintenance Ended" +#~ msgstr "انتهت الصيانة" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "يستمر التشغيل في حالة إغلاق المتصفح" +#~ msgid "Archive Project" +#~ msgstr "مشروع الأرشيف" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "الكشف التلقائي عن الخمول (قابل للتكوين)" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "قم بإعداد مشروع جديد لتنظيم عملك وتتبع الوقت بشكل فعال" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "مؤقت نشط واحد لكل مستخدم (قابل للتكوين)" +#~ msgid "Enter a descriptive project name" +#~ msgstr "أدخل اسمًا وصفيًا للمشروع" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "تحديثات WebSocket الحية" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "اختر اسمًا واضحًا ووصفيًا يوضح نطاق المشروع" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "إدخال الوقت يدويا" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "الرمز القصير، على سبيل المثال، ABC" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "قم بإنشاء إدخالات الوقت يدويًا عندما تحتاج إلى تسجيل الوقت الذي تقضيه بعيدًا عن الكمبيوتر أو ضبط الإدخالات الموجودة." +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "اختياري: علامة قصيرة تظهر على بطاقات كانبان" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "المعلومات المطلوبة" +#~ msgid "Create new client" +#~ msgstr "إنشاء عميل جديد" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "اختيار المشروع" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "تقديم معلومات مفصلة عن المشروع والأهداف والتسليمات..." -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "تاريخ البدء والوقت" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "اختياري: قم بإضافة سياق أو أهداف أو متطلبات محددة للمشروع" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "تاريخ ووقت الانتهاء" +#~ msgid "Enable billing for this project" +#~ msgstr "تمكين الفوترة لهذا المشروع" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "معلومات اختيارية" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "اتركه فارغًا للمشاريع غير القابلة للفوترة" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "مهمة المهمة" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "رقم أمر الشراء ومرجع العقد وما إلى ذلك." -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "الوصف/الملاحظات" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "اختياري: قم بإضافة رقم مرجعي أو معرف لأغراض الفوترة" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "العلامات للتصنيف" +#~ msgid "e.g. 10000.00" +#~ msgstr "على سبيل المثال 10000.00" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "تجاوز الحالة القابلة للفوترة" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "اختياري: قم بتعيين ميزانية المشروع الإجمالية لمراقبة الإنفاق" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "ميزات متقدمة لإدخال الوقت" +#~ msgid "Alert Threshold (%)" +#~ msgstr "عتبة التنبيه (%)" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "الدخول بالجملة" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "قم بالإخطار عندما تتجاوز الميزانية المستهلكة هذا الحد" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "إنشاء إدخالات زمنية متعددة لأيام متتالية بنفس المشروع والمدة. مثالية لأنماط العمل العادية." +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "قوالب" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "حفظ إدخالات الوقت المستخدمة بشكل متكرر كقوالب لإعادة استخدامها بسرعة. يحفظ المشروع والمهمة والملاحظات." +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "تصور إدخالات وقتك في التقويم. قم بالسحب والإفلات لإعادة الجدولة أو انقر فوق التواريخ لإضافة إدخالات." +#~ msgid "Project Creation Tips" +#~ msgstr "نصائح لإنشاء المشروع" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "معلومات المشروع" +#~ msgid "Clear Naming" +#~ msgstr "تسمية واضحة" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "اسم المشروع الوصفي" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "استخدم أسماء وصفية تشير بوضوح إلى غرض المشروع" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "منظمة العملاء المرتبطة" +#~ msgid "Billing Setup" +#~ msgstr "إعداد الفواتير" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "تفاصيل المشروع ونطاقه" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "حدد الأسعار المناسبة للساعة بناءً على مدى تعقيد المشروع وميزانية العميل" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "نشط أو مكتمل أو مؤرشف" +#~ msgid "Detailed Description" +#~ msgstr "وصف تفصيلي" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "معلومات الفواتير" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "قم بتضمين أهداف المشروع والتسليمات والمتطلبات الرئيسية" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "ما إذا كان ينبغي تتبع الوقت لإعداد الفواتير" +#~ msgid "Client Selection" +#~ msgstr "اختيار العميل" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "معدل لحسابات الوقت القابلة للفوترة" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "اختيار العميل المناسب لضمان التنظيم السليم للمشروع" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "مرجع الفواتير" +#~ msgid "Creating..." +#~ msgstr "جارٍ الإنشاء..." -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "رقم طلب الشراء أو رمز الفاتورة" +#~ msgid "Could not create client. Please try again." +#~ msgstr "لا يمكن إنشاء العميل. يرجى المحاولة مرة أخرى." -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "عمليات المشروع" +#~ msgid "Client created" +#~ msgstr "تم إنشاء العميل" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "إنشاء مشاريع جديدة مع علاقات العملاء" +#~ msgid "Network error while creating client" +#~ msgstr "خطأ في الشبكة أثناء إنشاء العميل" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "تحرير المشاريع الحالية لتحديث التفاصيل" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "لوحة تحكم المشروع والتحليلات" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "أرشفة المشاريع للاختباء من أجهزة ضبط الوقت (يحفظ البيانات)" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "حذف المشاريع (إزالة كافة إدخالات الوقت المرتبطة)" +#~ msgid "Budget Analysis" +#~ msgstr "تحليل الميزانية" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "أفضل الممارسات" +#~ msgid "All Time" +#~ msgstr "كل الوقت" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "استخدم أسماء المشاريع الوصفية" +#~ msgid "Last 7 Days" +#~ msgstr "آخر 7 أيام" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "قم بتعيين أسعار دقيقة للساعة للفواتير" +#~ msgid "Last 30 Days" +#~ msgstr "آخر 30 يومًا" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "أرشفة بدلاً من الحذف عندما يكون ذلك ممكناً" +#~ msgid "Last 3 Months" +#~ msgstr "آخر 3 أشهر" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "استخدم مراجع الفواتير للتتبع الخارجي" +#~ msgid "Last Year" +#~ msgstr "العام الماضي" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "يساعد نظام إدارة العملاء على تنظيم عملك من خلال مؤسسات العملاء، ومنع الأخطاء وتبسيط عملية إنشاء المشروع." +#~ msgid "estimated" +#~ msgstr "مُقدَّر" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "معلومات العميل" +#~ msgid "Budget Used" +#~ msgstr "الميزانية المستخدمة" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "اسم المنظمة" +#~ msgid "of budget" +#~ msgstr "من الميزانية" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "اسم الشركة أو العميل" +#~ msgid "Tasks Complete" +#~ msgstr "اكتملت المهام" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "تفاصيل الاتصال الأساسية" +#~ msgid "completion" +#~ msgstr "انتهاء" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "البريد الإلكتروني والهاتف" +#~ msgid "Team Members" +#~ msgstr "أعضاء الفريق" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "معلومات الاتصال" +#~ msgid "contributing" +#~ msgstr "المساهمة" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "عنوان العمل" +#~ msgid "Budget vs. Actual" +#~ msgstr "الميزانية مقابل الفعلية" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "فوائد" +#~ msgid "No budget set for this project" +#~ msgstr "لم يتم تحديد ميزانية لهذا المشروع" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "اختيار القائمة المنسدلة يمنع الأخطاء المطبعية" +#~ msgid "Task Status Distribution" +#~ msgstr "توزيع حالة المهمة" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "المعدلات الافتراضية لتعبئة المشاريع تلقائيًا" +#~ msgid "No tasks created yet" +#~ msgstr "لم يتم إنشاء أي مهام حتى الآن" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "تسمية العميل متسقة" +#~ msgid "Team Member Contributions" +#~ msgstr "مساهمات أعضاء الفريق" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "تنظيم المشروع أسهل" +#~ msgid "No time entries recorded yet" +#~ msgstr "لم يتم تسجيل إدخالات الوقت حتى الآن" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "عد المشروع" +#~ msgid "Time Tracking Timeline" +#~ msgstr "تتبع الوقت الجدول الزمني" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "إجمالي المشاريع النشطة" +#~ msgid "Select a time period to view timeline" +#~ msgstr "حدد فترة زمنية لعرض الجدول الزمني" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "إجمالي ساعات العمل" +#~ msgid "Team Member Details" +#~ msgstr "تفاصيل أعضاء الفريق" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "تقدير التكلفة" +#~ msgid "tasks" +#~ msgstr "المهام" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "مبالغ الفواتير المقدرة" +#~ msgid "No team members have logged time yet" +#~ msgstr "لم يسجل أي من أعضاء الفريق الوقت حتى الآن" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "قم بتقسيم المشاريع إلى مهام يمكن التحكم فيها من خلال التتبع التفصيلي ومراقبة التقدم." +#~ msgid "Attention Required" +#~ msgstr "الاهتمام مطلوب" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "خصائص المهمة" +#~ msgid "task(s) are overdue" +#~ msgstr "المهمة (المهام) متأخرة" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "الاسم والوصف" +#~ msgid "Edit Cost" +#~ msgstr "تكلفة الوحدة" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "مسح تحديد المهمة" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "مستويات الأولوية" +#~ msgid "Update Cost" +#~ msgstr "تحديث الأدوار" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "منخفض، متوسط، مرتفع، عاجل" +#~ msgid "Edit Extra Good" +#~ msgstr "تحرير جيد جدًا" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "تواريخ الاستحقاق" +#~ msgid "Manage products and services for this project" +#~ msgstr "إدارة المنتجات والخدمات لهذا المشروع" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "تتبع الموعد النهائي" +#~ msgid "Total Goods" +#~ msgstr "إجمالي البضائع" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "تكليف" +#~ msgid "Billable Amount" +#~ msgstr "المبلغ القابل للفوترة" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "ملكية المهمة" +#~ msgid "Categories" +#~ msgstr "فئات" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "تتبع الحالة" +#~ msgid "Invoiced" +#~ msgstr "فاتورة" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "المهام - لم تبدأ" +#~ msgid "Non-billable" +#~ msgstr "غير قابلة للفوترة" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "قيد التقدم - العمل حاليا" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذه الميزة الإضافية؟" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "المراجعة - جاهزة للمراجعة" +#~ msgid "Delete Extra Good" +#~ msgstr "حذف جيد جدًا" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "تم - اكتمل" +#~ msgid "No extra goods found for this project" +#~ msgstr "لم يتم العثور على سلع إضافية لهذا المشروع" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "تم الإلغاء - غير مطلوب" +#~ msgid "Add Your First Good" +#~ msgstr "أضف خيرك الأول" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "ميزات تتبع الوقت" +#~ msgid "Breakdown by Category" +#~ msgstr "التقسيم حسب الفئة" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "بدء الموقتات مباشرة من المهام" +#~ msgid "item(s)" +#~ msgstr "أغراض)" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "ربط إدخالات الوقت بمهام محددة" +#~ msgid "Filter Projects" +#~ msgstr "مشاريع التصفية" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "تتبع الساعات المقدرة مقابل الساعات الفعلية" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "مراقبة تقدم المهمة تلقائيا" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "طرق عرض المهام" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "مهامي - المهام المخصصة لك" +#~ msgid "Mark project as Inactive?" +#~ msgstr "هل تريد وضع علامة على المشروع على أنه غير نشط؟" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "جميع المهام - قائمة المهام كاملة" +#~ msgid "Change Project Status" +#~ msgstr "تغيير حالة المشروع" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "المهام المتأخرة - العناصر المتأخرة" +#~ msgid "Activate project?" +#~ msgstr "تفعيل المشروع؟" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "مهام المشروع - المهام داخل المشاريع" +#~ msgid "Activate Project" +#~ msgstr "تفعيل المشروع" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "ميزات التعاون" +#~ msgid "Archive" +#~ msgstr "أرشيف" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "تعليقات المهام - مناقشات مترابطة حول المهام" +#~ msgid "Unarchive project?" +#~ msgstr "مشروع إلغاء الأرشفة؟" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "دعم تخفيض السعر - تنسيق غني في الأوصاف" +#~ msgid "Unarchive Project" +#~ msgstr "مشروع إلغاء الأرشفة" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "إشارات المستخدم - ضع علامة على أعضاء الفريق (إذا تم تمكينه)" +#~ msgid "Unarchive" +#~ msgstr "إلغاء الأرشفة" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "مرفقات الملفات - إرفاق الملفات بالمهام (إذا كانت ممكّنة)" +#~ msgid "Delete Project" +#~ msgstr "حذف المشروع" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "تنسيق تخفيض السعر" +#~ msgid "Archive Information" +#~ msgstr "معلومات الأرشيف" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "تدعم أوصاف المهام والمشروع تخفيض السعر:" +#~ msgid "Archived on:" +#~ msgstr "مؤرشف في:" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**غامق**، *مائل*، ~~ يتوسطه خط ~~" +#~ msgid "Archived by:" +#~ msgstr "تمت أرشفته بواسطة:" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# العناوين، - القوائم، [الروابط](url)" +#~ msgid "Reason:" +#~ msgstr "سبب:" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```كتل التعليمات البرمجية```، الجداول، الصور" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "تصور سير العمل الخاص بك باستخدام لوحة كانبان للسحب والإفلات لإدارة المهام بشكل بديهي." +#~ msgid "Budget Overview" +#~ msgstr "نظرة عامة على الميزانية" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "مميزات اللوحة" +#~ msgid "Over" +#~ msgstr "زيادة" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "أعمدة قابلة للتخصيص تتوافق مع حالات المهام" +#~ msgid "View Full Budget Analysis" +#~ msgstr "عرض التحليل الكامل للميزانية" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "مهام السحب والإفلات بين الأعمدة" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "التصفية حسب المشروع أو المستخدم أو الأولوية" +#~ msgid "Tasks for this project" +#~ msgstr "المهام لهذا المشروع" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "بحث سريع في جميع المهام" +#~ msgid "Due" +#~ msgstr "حق" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "استخدام لوحة كانبان" +#~ msgid "Estimated" +#~ msgstr "مُقدَّر" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "الوصول من قائمة المهام أو صفحة المشروع" +#~ msgid "No tasks for this project." +#~ msgstr "لا توجد مهام لهذا المشروع." -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "اسحب المهام إلى أعمدة مختلفة لتغيير الحالة" +#~ msgid "Move up" +#~ msgstr "انتقل الى" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "انقر على بطاقة المهمة لعرض/تحرير التفاصيل" +#~ msgid "Move down" +#~ msgstr "انتقل الى" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "استخدم المرشحات للتركيز على عمل محدد" +#~ msgid "Manual entry" +#~ msgstr "الإدخال اليدوي" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "تعتبر لوحة كانبان مثالية للتخطيط للسباقات والمواقف اليومية. يمثل كل عمود مرحلة في سير عملك!" +#~ msgid "From stock" +#~ msgstr "مخزون منخفض" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "تتبع النفقات" +#~ msgid "Duplicate" +#~ msgstr "ينسخ" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "تتبع نفقات الأعمال وإدارة الإيصالات والتعامل مع المبالغ المستردة بكفاءة." +#~ msgid "Mark as Sent" +#~ msgstr "وضع علامة كمرسل" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "ميزات النفقات" +#~ msgid "Accepted" +#~ msgstr "مقبول" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "تصنيف النفقات (السفر، الوجبات، الإمدادات، الخ)" +#~ msgid "Create Your First Quote" +#~ msgstr "قم بإنشاء عرض الأسعار الأول الخاص بك" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "إرفاق صور ومستندات الإيصال" +#~ msgid "Learn More" +#~ msgstr "يتعلم أكثر" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "تتبع المبالغ والضرائب وطرق الدفع" +#~ msgid "Back to Quote" +#~ msgstr "العودة إلى الاقتباس" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "الموافقة على سير العمل لطلبات النفقات" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" +#~ "سيؤدي قبول عرض الأسعار هذا إلى " +#~ "إنشاء مشروع جديد بالميزانية من عرض " +#~ "الأسعار." -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "الفواتير والسداد" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "سيتم إنشاء المشروع بالميزانية من عرض الأسعار" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "وضع علامة على النفقات على أنها قابلة للفوترة للعملاء" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "قبول عرض الأسعار وإنشاء المشروع" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "تضمين النفقات في فواتير العميل" +#~ msgid "Create Quote" +#~ msgstr "إنشاء اقتباس" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "تتبع حالة السداد" +#~ msgid "Quote title" +#~ msgstr "عنوان الاقتباس" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "ربط النفقات بمشاريع محددة" +#~ msgid "Quote description" +#~ msgstr "وصف الاقتباس" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "سجل النفقات" +#~ msgid "Quote line items" +#~ msgstr "عناصر الاقتباس" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "أدخل التفاصيل وتحميل الإيصال" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "تقديم للموافقة" +#~ msgid "Add line" +#~ msgstr "موعد التسليم" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "يراجع المشرف ويوافق" +#~ msgid "Line type" +#~ msgstr "نوع المحتوى" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "الفاتورة/السداد" +#~ msgid "Stock" +#~ msgstr "مخزون منخفض" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "إضافة إلى الفاتورة أو سداد" +#~ msgid "Line items subtotal" +#~ msgstr "العناصر المجموع الفرعي" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "تتبع الدفع" +#~ msgid "Costs" +#~ msgstr "يكلف" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "مراقبة حالة السداد" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "على سبيل المثال، السفر، الوجبات" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "الفواتير المهنية" +#~ msgid "Add cost" +#~ msgstr "أضف ملاحظة" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "إنشاء ملفات PDF احترافية" +#~ msgid "Costs subtotal" +#~ msgstr "العناصر المجموع الفرعي" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "العلامات التجارية والشعارات الخاصة بالشركة" +#~ msgid "Extra goods" +#~ msgstr "بضائع اضافية" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "ترقيم الفاتورة تلقائيًا" +#~ msgid "Products, licenses, hardware" +#~ msgstr "المنتجات والمواد والتراخيص والسلع الأخرى" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "حسابات الضرائب" +#~ msgid "Add good" +#~ msgstr "أضف جيد" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "التكامل الزمني" +#~ msgid "Goods subtotal" +#~ msgstr "السلع المجموع الفرعي" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "توليد من إدخالات الوقت" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "مجموع الاقتباسات" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "التجميع الذكي حسب المهمة/المشروع" +#~ msgid "Financial Details" +#~ msgstr "التفاصيل المالية" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "منع الفواتير المزدوجة" +#~ msgid "Select payment terms" +#~ msgstr "حدد شروط الدفع" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "استخدم أسعار المشروع بالساعة" +#~ msgid "Due on Receipt" +#~ msgstr "مستحق عند الاستلام" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "إعداد تفاصيل العميل والمشروع" +#~ msgid "Or enter custom payment terms" +#~ msgstr "أو أدخل شروط الدفع المخصصة" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "إضافة عناصر" +#~ msgid "Use custom terms" +#~ msgstr "استخدم المصطلحات المخصصة" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "أنشئ من الوقت أو أضف يدويًا" +#~ msgid "Discount" +#~ msgstr "تخفيض" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "مراجعة وإرسال" +#~ msgid "Discount Type" +#~ msgstr "نوع الخصم" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "تصدير PDF وحالة التحديث" +#~ msgid "No Discount" +#~ msgstr "لا يوجد خصم" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "مراقبة الحالة والمدفوعات" +#~ msgid "Percentage (%)" +#~ msgstr "نسبة مئوية (٪)" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "التقارير القياسية" +#~ msgid "Fixed Amount" +#~ msgstr "مبلغ ثابت" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "تقرير المشروع - تفصيل الوقت حسب المشروع" +#~ msgid "Discount Amount" +#~ msgstr "مبلغ الخصم" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "تقرير المستخدم - مقاييس الأداء الفردية" +#~ msgid "0.00" +#~ msgstr "0.00" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "تقرير ملخص - المقاييس والاتجاهات الرئيسية" +#~ msgid "Coupon Code" +#~ msgstr "رمز القسيمة" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "تقرير إدخال الوقت - سجلات زمنية مفصلة" +#~ msgid "Optional coupon code" +#~ msgstr "رمز القسيمة الاختياري" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "خيارات التصدير" +#~ msgid "Discount Reason" +#~ msgstr "سبب الخصم" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "تصدير CSV - للتحليل الخارجي" +#~ msgid "Reason for discount" +#~ msgstr "سبب الخصم" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "المحددات القابلة للتكوين" +#~ msgid "Approval Workflow" +#~ msgstr "سير عمل الموافقة" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "النطاقات الزمنية المخصصة" +#~ msgid "Requires approval before sending" +#~ msgstr "يتطلب الموافقة قبل الإرسال" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "تصدير البيانات التي تمت تصفيتها" +#~ msgid "Additional Information" +#~ msgstr "معلومات إضافية" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "خيارات التصفية" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "الملاحظات الداخلية (غير مرئية للعميل)" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "النطاق الزمني - تواريخ البدء والانتهاء المخصصة" +#~ msgid "These notes are only visible to your team" +#~ msgstr "هذه الملاحظات مرئية لفريقك فقط" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "المشروع - التصفية حسب مشاريع محددة" +#~ msgid "Terms and Conditions" +#~ msgstr "الشروط والأحكام" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "المستخدم - التصفية حسب أعضاء الفريق" +#~ msgid "Terms and conditions" +#~ msgstr "الشروط والأحكام" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "العميل - التصفية حسب المؤسسة العميلة" +#~ msgid "These terms will be visible to the client" +#~ msgstr "وستكون هذه الشروط مرئية للعميل" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "المرشحات المحفوظة - احفظ المرشحات المستخدمة بشكل متكرر" +#~ msgid "Edit Quote" +#~ msgstr "تحرير الاقتباس" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "التحليلات البصرية" +#~ msgid "Client cannot be changed" +#~ msgstr "لا يمكن تغيير العميل" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "الرسوم البيانية الشريطية التفاعلية" +#~ msgid "Update Quote" +#~ msgstr "تحديث الاقتباس" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "الرسوم البيانية الدائرية لتوزيع الوقت" +#~ msgid "Total Quotes" +#~ msgstr "مجموع الاقتباسات" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "تحليل الاتجاه مع مرور الوقت" +#~ msgid "Acceptance Rate" +#~ msgstr "معدل القبول" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "الرسوم البيانية المحسنة للجوال" +#~ msgid "Avg Quote Value" +#~ msgstr "متوسط ​​قيمة الاقتباس" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "استخدم عوامل التصفية المحفوظة للوصول بسرعة إلى طرق عرض التقارير الأكثر شيوعًا. احفظ المرشحات للمراجعات الأسبوعية أو الفواتير الشهرية أو تتبع مشروع محدد!" +#~ msgid "Quotes by Status" +#~ msgstr "اقتباسات حسب الحالة" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "عزز كفاءتك باستخدام اختصارات لوحة المفاتيح ولوحة الأوامر وميزات التشغيل الآلي." +#~ msgid "Top Clients by Quotes" +#~ msgstr "أفضل العملاء حسب عروض الأسعار" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "لوحة الأوامر" +#~ msgid "Filter Quotes" +#~ msgstr "تصفية الاقتباسات" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "يمكنك الوصول إلى أي ميزة على الفور دون مغادرة لوحة المفاتيح" +#~ msgid "Search quotes..." +#~ msgstr "اقتباسات البحث..." -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "فتح لوحة الأوامر" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "هل أنت متأكد أنك تريد تكرار" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "اضغط على مفتاح علامة الاستفهام" +#~ msgid "quote(s)?" +#~ msgstr "يقتبس)؟" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "بحث سريع" +#~ msgid "Are you sure you want to mark" +#~ msgstr "هل أنت متأكد أنك تريد وضع علامة" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "اذهب إلى المشاريع" +#~ msgid "quote(s) as sent?" +#~ msgstr "الاقتباس (ق) كما أرسلت؟" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "انتقل إلى المهام" +#~ msgid "QUOTE" +#~ msgstr "يقتبس" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "دخول الوقت الجديد" +#~ msgid "Quote #" +#~ msgstr "يقتبس #" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "اختصارات لوحة المفاتيح" +#~ msgid "Quote For" +#~ msgstr "اقتباس ل" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "التنقل بشكل أسرع باستخدام الأوامر التي تعتمد على لوحة المفاتيح. اضغط على Shift+؟ لرؤية كافة الاختصارات." +#~ msgid "Subtotal After Discount:" +#~ msgstr "المجموع الفرعي بعد الخصم:" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "البحث العالمي" +#~ msgid "Description:" +#~ msgstr "وصف:" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "يمكنك العثور بسرعة على المشاريع والمهام والعملاء وإدخالات الوقت من أي مكان في التطبيق." +#~ msgid "Subtotal After Discount" +#~ msgstr "المجموع الفرعي بعد الخصم" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "إشعارات البريد الإلكتروني" +#~ msgid "Approval not yet requested" +#~ msgstr "لم يتم طلب الموافقة بعد" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "احصل على إشعارات بشأن تعيينات المهام والفواتير المتأخرة والملخصات الأسبوعية عبر البريد الإلكتروني." +#~ msgid "Pending approval" +#~ msgstr "في انتظار الموافقة" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "ميزات المسؤول" +#~ msgid "Rejected by" +#~ msgstr "مرفوض من قبل" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "إنشاء مستخدمين جدد باستخدام مصادقة مرنة" +#~ msgid "Request Approval Again" +#~ msgstr "طلب الموافقة مرة أخرى" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "قم بتعيين أدوار مخصصة بأذونات محددة" +#~ msgid "Send Quote" +#~ msgstr "إرسال الاقتباس" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "تفعيل/إلغاء تنشيط حسابات المستخدمين" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "هل أنت متأكد أنك تريد رفض هذا الاقتباس؟" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "عرض إحصائيات ونشاط المستخدم" +#~ msgid "Delete Quote" +#~ msgstr "حذف الاقتباس" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "إنشاء رموز API المميزة للمستخدمين" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "تعليق داخلي (غير مرئي للعميل)" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "التحكم في الوصول" +#~ msgid "Internal" +#~ msgstr "داخلي" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "نظام أذونات دقيق قائم على الأدوار" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذا التعليق؟" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "أدوار مخصصة مع وصول دقيق" +#~ msgid "Write a reply..." +#~ msgstr "أكتب الرد..." -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "ضوابط الوصول إلى بيانات المستخدم" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "لا توجد تعليقات حتى الآن. ابدأ المحادثة بإضافة التعليق الأول." -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "تكامل OIDC/SSO (Azure AD وAuthelia وما إلى ذلك)" +#~ msgid "Sent At" +#~ msgstr "أرسلت في" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "إدارة رمز واجهة برمجة التطبيقات (API) لعمليات التكامل" +#~ msgid "Accepted At" +#~ msgstr "مقبول في" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "طرق المصادقة" +#~ msgid "Send Quote via Email" +#~ msgstr "إرسال الاقتباس عبر البريد الإلكتروني" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "اسم المستخدم فقط (استخدام داخلي بسيط)" +#~ msgid "Recipient Email" +#~ msgstr "البريد الإلكتروني للمستلم" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (مصادقة المؤسسة)" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "اقتباس %(quote_number)s" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "كلتا الطريقتين في وقت واحد" +#~ msgid "Custom Message (Optional)" +#~ msgstr "رسالة مخصصة (اختياري)" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "تعيين الأدوار تلقائيًا عبر المجموعات" +#~ msgid "Add a custom message to the email..." +#~ msgstr "إضافة رسالة مخصصة إلى البريد الإلكتروني..." -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "إدارة الأدوار والأذونات" +#~ msgid "Attach PDF" +#~ msgstr "إرفاق قوات الدفاع الشعبي" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "قم بإنشاء أدوار مخصصة تتجاوز المسؤول/المستخدم" +#~ msgid "Approve Quote" +#~ msgstr "الموافقة على الاقتباس" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "قم بتعيين الأذونات الدقيقة لكل ميزة" +#~ msgid "Notes (Optional)" +#~ msgstr "ملاحظات (اختياري)" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "تعيين المستخدمين لأدوار متعددة" +#~ msgid "Add approval notes..." +#~ msgstr "إضافة ملاحظات الموافقة..." -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "عرض وإدارة جميع الأذونات" +#~ msgid "Reject Quote Approval" +#~ msgstr "رفض الموافقة على عرض الأسعار" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "الإعدادات العامة" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "الرجاء ذكر سبب الرفض..." -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "إعدادات المنطقة الزمنية والإعدادات المحلية" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "هل أنت متأكد أنك تريد حذف هذا الاقتباس؟ لا يمكن التراجع عن هذا الإجراء." -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "تكوين العملة" +#~ msgid "Create Recurring Invoice" +#~ msgstr "إنشاء فاتورة متكررة" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "قواعد تقريب الوقت" +#~ msgid "Update Recurring Invoice" +#~ msgstr "تحديث الفاتورة المتكررة" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "إعدادات التسجيل الذاتي" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "أتمتة إنشاء الفاتورة للفواتير على أساس الاشتراك" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "إعدادات الموقت" +#~ msgid "Frequency" +#~ msgstr "تكرار" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "تكوين مهلة الخمول" +#~ msgid "Next Run" +#~ msgstr "التشغيل التالي" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "وضع مؤقت نشط واحد" +#~ msgid "Generate Now" +#~ msgstr "توليد الآن" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "تفضيلات عرض الموقت" +#~ msgid "Template Details" +#~ msgstr "تفاصيل القالب" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "إعدادات الإخطار" +#~ msgid "Invoice Settings" +#~ msgstr "إعدادات الفاتورة" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "إدارة قواعد البيانات" +#~ msgid "Recently Generated Invoices" +#~ msgstr "الفواتير التي تم إنشاؤها مؤخرا" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "إنشاء نسخ احتياطية يدوية لقاعدة البيانات" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "عرض حالة ترحيل قاعدة البيانات" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "مراقبة أداء قاعدة البيانات" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "تنظيف البيانات والسجلات القديمة" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "مراقبة النظام" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "عرض معلومات النظام والصحة" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "مراقبة أداء التطبيق" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "مراجعة سجلات النظام والأخطاء" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "ميزات صديقة للجوال" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "الأمثل للهواتف والأجهزة اللوحية" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "واجهة سهلة الاستخدام" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "تخطيطات متكيفة لجميع أحجام الشاشات" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "تباين عالٍ للرؤية الخارجية" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "الملاحة المتنقلة" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "شريط علامات التبويب السفلي لسهولة الوصول إليه" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "الوصول السريع إلى لوحة القيادة" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "تسجيل الوقت بنقرة واحدة" +#~ msgid "Assign To" +#~ msgstr "تعيين ل" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "تقارير محسنة للجوال" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "تثبيت" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "افتح TimeTracker في متصفح هاتفك المحمول" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "ابحث عن خيار \"إضافة إلى الشاشة الرئيسية\"." +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "اتبع مطالبات التثبيت الخاصة بالمتصفح" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "قم بالتشغيل من شاشتك الرئيسية مثل التطبيق الأصلي" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "فوائد PWA" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "القدرة دون اتصال بالإنترنت للوظائف الأساسية" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "أوقات تحميل أسرع" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "تجربة تشبه التطبيق الأصلي" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "إشعارات الدفع (حيثما تكون مدعومة)" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "الرسوم البيانية الشريطية التفاعلية" +#~ msgid "Add table to report" +#~ msgstr "التقارير المتاحة" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "المواصفات الفنية" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Add chart to report" +#~ msgstr "التقارير القياسية" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "التوثيق" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "استكشاف الأخطاء وإصلاحها والأسئلة الشائعة" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "ماذا يحدث إذا نسيت إيقاف مؤقتي؟" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "سيستمر تشغيل المؤقت حتى تقوم بإيقافه يدويًا. يمكنك رؤية مؤقتك النشط على لوحة المعلومات وصفحة المؤقت. يستمر المؤقت حتى إذا قمت بإغلاق المتصفح أو إعادة تشغيل جهازك. إذا تم تمكين اكتشاف الخمول، فقد يتوقف المؤقت تلقائيًا بعد فترة المهلة التي تم تكوينها." +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "هل يمكنني تعديل إدخالات الوقت بعد إنشائها؟" +#~ msgid "Add summary to report" +#~ msgstr "تقرير موجز" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "نعم، يمكنك تعديل أي إدخال للوقت من خلال النقر على زر التعديل في قائمة إدخال الوقت. يمكنك تعديل المشروع، وأوقات البدء/الانتهاء، والملاحظات، والعلامات، وحالة الفوترة، وتعيين المهام. يمكن للمسؤولين تحرير إدخالات جميع الأوقات، بينما يمكن للمستخدمين العاديين فقط تحرير إدخالاتهم الخاصة." +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "كيف يمكنني تتبع الوقت لمشاريع متعددة؟" +#~ msgid "Report canvas" +#~ msgstr "قماش شفاف" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "افتراضيًا، يمكنك الحصول على مؤقت نشط واحد فقط في كل مرة. لتبديل المشاريع، أوقف مؤقتك الحالي وابدأ مؤقتًا جديدًا لمشروع مختلف. وبدلاً من ذلك، يمكنك إنشاء إدخالات وقت يدوية للعمل السابق أو تكوين النظام للسماح بعدة مؤقتات نشطة (إعداد المسؤول)." +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "كيف يمكنني تصدير بيانات الوقت الخاصة بي؟" +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "انتقل إلى صفحة التقارير واستخدم ميزة \"تصدير ملف CSV\". يمكنك تطبيق عوامل التصفية لتصدير بيانات محددة، أو تصدير إدخالات جميع الأوقات. يتضمن ملف CSV تفاصيل إدخال جميع الأوقات ويمكن فتحه في Excel أو تطبيقات جداول البيانات الأخرى. يمكنك أيضًا تكوين المحدد لمعايير إقليمية مختلفة." +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "ما الفرق بين الوقت القابل للفوترة وغير القابل للفوترة؟" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "يتم تتبع الوقت القابل للفوترة لأغراض إعداد فواتير العميل ويمكن أن يكون له سعر بالساعة مرتبط به. الوقت غير القابل للفوترة مخصص للعمل الداخلي الذي لا يتم تحميله على العملاء. يمكنك وضع علامة على إدخالات الوقت الفردية على أنها قابلة للفوترة أو غير قابلة للفوترة، ويمكن أن تحتوي المشاريع على إعدادات افتراضية قابلة للفوترة. يعد هذا التمييز أمرًا بالغ الأهمية للفواتير الدقيقة وتحليل الربحية." +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "كيف أقوم بإنشاء فاتورة من إدخالات الوقت الخاصة بي؟" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "انتقل إلى الفواتير ← إنشاء فاتورة، وقم بإعداد تفاصيل العميل والمشروع، ثم استخدم \"إنشاء من إدخالات الوقت\" لإنشاء عناصر الفاتورة تلقائيًا من الوقت الذي تم تتبعه. يمكنك التصفية حسب النطاق الزمني والمشروع، وسيقوم النظام بتجميع إدخالات الوقت بذكاء. قم بمراجعة العناصر التي تم إنشاؤها وتصديرها كملف PDF احترافي." +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "هل يمكنني استخدام TimeTracker على جهازي المحمول؟" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "نعم! TimeTracker سريع الاستجابة ويعمل بشكل رائع على الأجهزة المحمولة. يمكنك تثبيته كتطبيق ويب تقدمي (PWA) للحصول على تجربة شبيهة بالأصل. تشتمل واجهة الهاتف المحمول على شريط علامات تبويب سفلي لسهولة التنقل وعناصر تحكم محسنة باللمس لتتبع الوقت أثناء التنقل." +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "كيف يمكنني استخدام لوحة الأوامر واختصارات لوحة المفاتيح؟" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "اضغط على مفتاح علامة الاستفهام (؟) لفتح لوحة الأوامر. ومن هناك، يمكنك الكتابة للبحث عن أي إجراء أو هدف تنقل. استخدم تسلسلات لوحة المفاتيح مثل \"g d\" للوحة المعلومات، أو \"g p\" للمشاريع، أو \"n e\" للإدخال الجديد. اضغط على Shift+؟ لرؤية جميع الاختصارات المتاحة. اضغط على Ctrl+K (أو Cmd+K في نظام Mac) للبحث السريع." +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "كيف أقوم بإنشاء إدخالات زمنية مجمعة لعدة أيام؟" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "انتقل إلى العمل → إدخال الوقت المجمع. حدد مشروعك، واختر نطاقًا زمنيًا، وعيّن أوقات البدء والانتهاء اليومية، وتخطى عطلات نهاية الأسبوع بشكل اختياري. سيقوم النظام بإنشاء إدخالات زمنية متطابقة لكل يوم في النطاق. يعد هذا مثاليًا لتسجيل أنماط العمل المنتظمة أو ملء الوقت الماضي عندما عملت لساعات ثابتة." +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "ما هي قوالب إدخال الوقت وكيف أستخدمها؟" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "تتيح لك قوالب إدخال الوقت حفظ تكوينات إدخال الوقت المستخدمة بشكل متكرر. عند إنشاء إدخال يدوي للوقت، حدد \"حفظ كقالب\" لحفظ المشروع والمهمة والملاحظات. لاحقًا، عند إنشاء إدخالات جديدة، يمكنك تحديد قالب لملء هذه التفاصيل بسرعة. القوالب شخصية ومرئية لك فقط." +#~ msgid "Private" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "كيف يمكنني تتبع النفقات وإضافتها إلى الفواتير؟" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "انتقل إلى النفقات → النفقات الجديدة لتسجيل نفقات الأعمال. قم بتحميل صور الإيصالات، وقم بتصنيف النفقات ووضع علامة عليها على أنها قابلة للفوترة إذا لزم الأمر. عند إنشاء الفواتير، يمكنك تضمين هذه النفقات كبنود. تدعم النفقات سير عمل الموافقة، وتتبع السداد، ويمكن ربطها بمشاريع محددة." +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "هل يمكنني استخدام Markdown في الأوصاف؟" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "نعم! تدعم أوصاف المشروع والمهام تنسيق Markdown الكامل. يمكنك استخدام العناوين والقوائم والروابط وكتل التعليمات البرمجية والجداول والصور بالخط العريض والمائل. يتيح لك ذلك إنشاء وثائق غنية وجيدة التنسيق مباشرة في مشاريعك ومهامك. يتضمن محرر Markdown وضع المعاينة ويدعم المظهر الداكن." +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "أين يمكنني الحصول على مساعدة إضافية؟" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "الإبلاغ عن المشكلات وطلب الميزات" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "بوصفك مسؤولاً، يمكنك الوصول إلى معلومات وتشخيصات النظام الإضافية في" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "قسم." +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "هل ما زلت بحاجة إلى المساعدة؟" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "لا يمكنك العثور على ما تبحث عنه؟ فيما يلي موارد إضافية:" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "مستودع جيثب" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "تقرير المشكلة" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "Export Time Entries" +#~ msgstr "إدخالات الوقت الأخيرة" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "يدعم" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "نتائج البحث" +#~ msgid "Export format" +#~ msgstr "تنسيق التصدير" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "البحث في الملاحظات أو العلامات" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "على سبيل المثال، تطوير، اجتماع، عاجل" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "نتائج" +#~ msgid "Reset Filters" +#~ msgstr "المرشحات المحفوظة" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "هل أنت متأكد أنك تريد حذف إدخال الوقت هذا؟ لا يمكن التراجع عن هذا الإجراء." +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "لم يتم العثور على نتائج" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "جرّب استعلامًا مختلفًا أو تحقق من إملائك." +#~ msgid "Please select both start and end dates." +#~ msgstr "النطاق الزمني - تواريخ البدء والانتهاء المخصصة" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "على سبيل المثال، اجتماع العميل، زيارة الموقع" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "يجب أن يكون تاريخ البدء قبل تاريخ الانتهاء" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "تفاصيل اضافية..." +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "على سبيل المثال، المكتب، المنزل" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "على سبيل المثال، موقع العميل، المطار" +#~ msgid "Payments Received" +#~ msgstr "مجالات الدفع" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "على سبيل المثال، 12345" +#~ msgid "Net Received" +#~ msgstr "تلقى" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "على سبيل المثال، 12400" +#~ msgid "After fees" +#~ msgstr "رسوم البوابة" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "على سبيل المثال، فولكس فاجن جولف" +#~ msgid "Date Range & Comparison" +#~ msgstr "النطاق الزمني والمقارنة" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "على سبيل المثال، ABC-123" +#~ msgid "Quick Date Ranges" +#~ msgstr "النطاقات الزمنية السريعة" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "تتبع الوقت" +#~ msgid "This Week" +#~ msgstr "أسبوع" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "العودة إلى الأدوار" +#~ msgid "This Month" +#~ msgstr "شهر" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "This Year" +#~ msgstr "العام الماضي" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "التاريخ من" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "أضف ملاحظة" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "تتبع النفقات" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "تتبع" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "عنوان" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "النطاقات الزمنية المخصصة" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "Comparison View" +#~ msgstr "عرض المقارنة" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "تتبع الوقت" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "ابدأ في تتبع الوقت" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "تتبع الدفع" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "ابدأ في تتبع الوقت" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "تم رفض النفقة" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "تصفية الأميال" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "المعاينة المباشرة" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "الهدف والموقع..." +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "ملاحظات الموافقة الاختيارية..." +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "سبب الرفض (مطلوب)" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "الملاحة المتنقلة" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "بريد إلكتروني" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "اكتب أمرًا أو ابحث..." +#~ msgid "Comparison Results" +#~ msgstr "نتائج المقارنة" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "تصدير التقارير" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "تنسيق التصدير" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "تصدير التقارير" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "التقارير المجدولة" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "استيراد CSV" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "يصدّر" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "Report Types" +#~ msgstr "أنواع التقارير" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "تقرير المشروع" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "User Report" +#~ msgstr "تقرير المستخدم" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "تقرير موجز" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "تقرير المهمة" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "إدخالات الوقت" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "الإدخالات الأخيرة" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "No scheduled reports yet." +#~ msgstr "التقارير المجدولة" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Add Scheduled Report" +#~ msgstr "التقارير المجدولة" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Please set a date range" +#~ msgstr "النطاقات الزمنية المخصصة" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "سجل دفعة جديدة" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "إجمالي المدفوعات" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "رسوم البوابة" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "تصفية المدفوعات" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "مدفوع" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "حذف المدفوعات المحددة" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "تغيير الحالة للمدفوعات المحددة" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "الفاتورة ذات الصلة" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "على سبيل المثال، رحلة عمل إلى برلين" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "على سبيل المثال، ألمانيا والولايات المتحدة والمملكة المتحدة" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "على سبيل المثال، برلين" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "مطالبات التصفية" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "حذف المطالبات المحددة" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "تغيير الحالة للمطالبات المحددة" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "ملاحظات إضافية حول هذا السعر..." +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "هل أنت متأكد أنك تريد حذف معدل البدل اليومي هذا؟" +#~ msgid "No data for the selected period." +#~ msgstr "لم يتم العثور على بيانات المبيعات للفترة المحددة." -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "حذف معدل البدل اليومي" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "مشروع قابل للفوترة" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "الساعات المقدرة" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "مبلغ الميزانية" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "اسم المهمة" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "رمز المشروع" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "إنشاء مشروع" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "أعمدة لوحة كانبان" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "تحرير مسار السباحة" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "عمود" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "عرض القائمة" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "عرض الشبكة" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "تاريخ" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "تحرير المشروع" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "أضف ملاحظة" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "العودة إلى المشروع" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "على سبيل المثال، السفر لحضور اجتماع العملاء" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "وصف مختصر لهذه الفئة..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "فئة" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "مادة" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "على سبيل المثال، ترخيص البرنامج" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "تفاصيل إضافية حول هذا التعديل" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "العودة إلى العميل" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "أضف المزيد من الخير" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "إضافة منتج أو خدمة إلى" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "العودة إلى المشروع" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "SKU/رمز المنتج" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "ماذا يحدث عند أرشفة المشروع؟" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "سيتم إخفاء المشروع من قوائم المشاريع النشطة" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "لا يمكن إضافة أي إدخالات زمنية جديدة إلى هذا المشروع" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "يتم الاحتفاظ بالبيانات الموجودة وإدخالات الوقت" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "يمكنك إلغاء أرشفة المشروع لاحقًا إذا لزم الأمر" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "سبب الارشيف" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "أهم المشاريع (30 يومًا)" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "على سبيل المثال، اكتمل المشروع، انتهى عقد العميل، تم إلغاء المشروع، وما إلى ذلك." +#~ msgid "Time distribution by project" +#~ msgstr "الرسوم البيانية الدائرية لتوزيع الوقت" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "تساعد إضافة سبب في تنظيم المشروع والمرجع المستقبلي." +#~ msgid "No project data for the last 30 days." +#~ msgstr "لا يوجد نشاط في آخر 30 يومًا." -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "تحديد سريع" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "اكتمل المشروع بنجاح" +#~ msgid "Daily hours trend" +#~ msgstr "اتجاه الساعات اليومية" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "اكتمل المشروع" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "انتهى عقد العميل" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "انتهى العقد" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "تم إلغاء المشروع من قبل العميل" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "المشروع معلق لأجل غير مسمى" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "في الانتظار" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "انتهت فترة الصيانة" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "انتهت الصيانة" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "مشروع الأرشيف" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "قم بإعداد مشروع جديد لتنظيم عملك وتتبع الوقت بشكل فعال" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "أدخل اسمًا وصفيًا للمشروع" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "اختر اسمًا واضحًا ووصفيًا يوضح نطاق المشروع" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "الرمز القصير، على سبيل المثال، ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "اختياري: علامة قصيرة تظهر على بطاقات كانبان" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "إنشاء عميل جديد" +#~ msgid "No trend data." +#~ msgstr "بيانات الاقتباس" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "تقديم معلومات مفصلة عن المشروع والأهداف والتسليمات..." +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "أهم المشاريع (30 يومًا)" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "اختياري: قم بإضافة سياق أو أهداف أو متطلبات محددة للمشروع" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "لم يتم العثور على بيانات المبيعات للفترة المحددة." -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "تمكين الفوترة لهذا المشروع" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "اتركه فارغًا للمشاريع غير القابلة للفوترة" +#~ msgid "All Clients" +#~ msgstr "العملاء" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "رقم أمر الشراء ومرجع العقد وما إلى ذلك." +#~ msgid "All Tasks" +#~ msgstr "عرض كافة المهام" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "اختياري: قم بإضافة رقم مرجعي أو معرف لأغراض الفوترة" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "لم يتم العثور على بيانات المبيعات للفترة المحددة." -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "على سبيل المثال 10000.00" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "اختياري: قم بتعيين ميزانية المشروع الإجمالية لمراقبة الإنفاق" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "عتبة التنبيه (%)" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "قم بالإخطار عندما تتجاوز الميزانية المستهلكة هذا الحد" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "نصائح لإنشاء المشروع" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "تسمية واضحة" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "جرّب استعلامًا مختلفًا أو تحقق من إملائك." -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "استخدم أسماء وصفية تشير بوضوح إلى غرض المشروع" +#~ msgid "About Overtime Tracking" +#~ msgstr "حول تتبع العمل الإضافي" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "إعداد الفواتير" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "حدد الأسعار المناسبة للساعة بناءً على مدى تعقيد المشروع وميزانية العميل" +#~ msgid "Back to Reports" +#~ msgstr "العودة إلى الأدوار" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "وصف تفصيلي" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "إدخالات الوقت هذا الأسبوع" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "قم بتضمين أهداف المشروع والتسليمات والمتطلبات الرئيسية" +#~ msgid "Top projects this week" +#~ msgstr "أهم المشاريع" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "اختيار العميل" +#~ msgid "No time logged this week yet." +#~ msgstr "لم يتم تسجيل إدخالات الوقت لهذا الأسبوع حتى الآن" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "اختيار العميل المناسب لضمان التنظيم السليم للمشروع" +#~ msgid "Apply filter" +#~ msgstr "تطبيق الفلتر" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "جارٍ الإنشاء..." +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذا الفلتر؟" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "لا يمكن إنشاء العميل. يرجى المحاولة مرة أخرى." +#~ msgid "Delete Filter" +#~ msgstr "حذف عامل التصفية" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "تم إنشاء العميل" +#~ msgid "Go to Reports" +#~ msgstr "تقرير المخزون المنخفض" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "خطأ في الشبكة أثناء إنشاء العميل" +#~ msgid "No saved filters yet" +#~ msgstr "المرشحات المحفوظة" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "لوحة تحكم المشروع والتحليلات" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "Customize Shortcuts" +#~ msgstr "تخصيص الاختصارات" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "تحليل الميزانية" +#~ msgid "Search shortcuts..." +#~ msgstr "اختصارات البحث..." -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "كل الوقت" +#~ msgid "Save changes" +#~ msgstr "حفظ التغييرات" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "آخر 7 أيام" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "آخر 30 يومًا" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "آخر 3 أشهر" +#~ msgid "Click to record" +#~ msgstr "اسحب لإعادة الترتيب" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "العام الماضي" +#~ msgid "Revert" +#~ msgstr "إعادة ضبط" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "مُقدَّر" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "الميزانية المستخدمة" +#~ msgid "Failed to save" +#~ msgstr "فشل في إيقاف الموقّت" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "من الميزانية" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "اكتملت المهام" +#~ msgid "Failed to save shortcuts." +#~ msgstr "فشل تحديث الحالة" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "انتهاء" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "سيؤدي هذا إلى إعادة تعيين جميع " +#~ "اختصارات لوحة المفاتيح إلى قيمها " +#~ "الافتراضية. يكمل؟" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "أعضاء الفريق" +#~ msgid "Reset to Defaults" +#~ msgstr "إعادة التعيين إلى الإعدادات الافتراضية" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "المساهمة" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "إعادة التعيين إلى الإعدادات الافتراضية؟" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "الميزانية مقابل الفعلية" +#~ msgid "Failed to reset" +#~ msgstr "فشل في إزالة الصورة الرمزية." -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "لم يتم تحديد ميزانية لهذا المشروع" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "إعادة التعيين إلى الإعدادات الافتراضية" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "توزيع حالة المهمة" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "فشل تحديث الحالة" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "لم يتم إنشاء أي مهام حتى الآن" +#~ msgid "Failed to load shortcuts." +#~ msgstr "فشل في تحميل المهام" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "مساهمات أعضاء الفريق" +#~ msgid "Welcome" +#~ msgstr "مرحباً" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "لم يتم تسجيل إدخالات الوقت حتى الآن" +#~ msgid "Privacy First" +#~ msgstr "الخصوصية أولاً" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "تتبع الوقت الجدول الزمني" +#~ msgid "Self-hosted on your server" +#~ msgstr "مستضافة ذاتيًا على الخادم الخاص بك" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "حدد فترة زمنية لعرض الجدول الزمني" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "القياس عن بعد مجهول (الاشتراك)" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "تفاصيل أعضاء الفريق" +#~ msgid "No PII collected ever" +#~ msgstr "لم يتم جمع أي معلومات تحديد الهوية الشخصية (PII) على الإطلاق" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "المهام" +#~ msgid "Open source & transparent" +#~ msgstr "مفتوحة المصدر وشفافة" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "لم يسجل أي من أعضاء الفريق الوقت حتى الآن" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "الاهتمام مطلوب" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "المهمة (المهام) متأخرة" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "تكلفة الوحدة" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "مرحبا بكم في TimeTracker" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "دعنا نجهزك خلال دقيقة واحدة" -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "تحديث الأدوار" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "تحرير جيد جدًا" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "إدارة المنتجات والخدمات لهذا المشروع" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "إجمالي البضائع" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "المبلغ القابل للفوترة" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "فئات" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "فاتورة" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "غير قابلة للفوترة" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "هل أنت متأكد أنك تريد حذف هذه الميزة الإضافية؟" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "حذف جيد جدًا" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "لم يتم العثور على سلع إضافية لهذا المشروع" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "أضف خيرك الأول" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "التقسيم حسب الفئة" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "أغراض)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "مشاريع التصفية" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "شكرا لاختيارك TimeTracker!" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "تبقى بياناتك على الخادم الخاص بك، ويكون لديك السيطرة الكاملة." -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "Region & time" +#~ msgstr "وقت النهاية" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "هل تريد وضع علامة على المشروع على أنه غير نشط؟" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "تغيير حالة المشروع" +#~ msgid "Timezone" +#~ msgstr "المنطقة الزمنية" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "تفعيل المشروع؟" +#~ msgid "Date format" +#~ msgstr "تنسيق التاريخ" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "تفعيل المشروع" +#~ msgid "Time format" +#~ msgstr "تنسيق الوقت" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "أرشيف" +#~ msgid "24-hour" +#~ msgstr "ساعات" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "مشروع إلغاء الأرشفة؟" +#~ msgid "12-hour" +#~ msgstr "ساعات" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "مشروع إلغاء الأرشفة" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "إلغاء الأرشفة" +#~ msgid "Company name" +#~ msgstr "اسم الشركة" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "حذف المشروع" +#~ msgid "Your Company Name" +#~ msgstr "اسم شركتك" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "معلومات الأرشيف" +#~ msgid "Your Company Address" +#~ msgstr "عنوان شركتك" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "مؤرشف في:" +#~ msgid "App behavior and timer settings." +#~ msgstr "إعدادات العمل الإضافي" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "تمت أرشفته بواسطة:" +#~ msgid "Allow self-registration" +#~ msgstr "إعدادات التسجيل الذاتي" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "سبب:" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "قواعد تقريب الوقت" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "نظرة عامة على الميزانية" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "إدخالات الوقت المستديرة إلى فترات زمنية تم تكوينها" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "زيادة" +#~ msgid "Single active timer per user" +#~ msgstr "وضع مؤقت نشط واحد" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "عرض التحليل الكامل للميزانية" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "تكوين مهلة الخمول" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "المهام لهذا المشروع" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "حق" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "مُقدَّر" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "لا توجد مهام لهذا المشروع." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "انتقل الى" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "انتقل الى" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "الإدخال اليدوي" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "مخزون منخفض" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "ينسخ" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "وضع علامة كمرسل" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "مقبول" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "قم بإنشاء عرض الأسعار الأول الخاص بك" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "يتعلم أكثر" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "العودة إلى الاقتباس" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "سيؤدي قبول عرض الأسعار هذا إلى إنشاء مشروع جديد بالميزانية من عرض الأسعار." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "سيتم إنشاء المشروع بالميزانية من عرض الأسعار" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "قبول عرض الأسعار وإنشاء المشروع" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "إنشاء اقتباس" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "عنوان الاقتباس" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "وصف الاقتباس" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "عناصر الاقتباس" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "موعد التسليم" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "نوع المحتوى" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "مخزون منخفض" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "العناصر المجموع الفرعي" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "يكلف" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "على سبيل المثال، السفر، الوجبات" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "أضف ملاحظة" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "العناصر المجموع الفرعي" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "بضائع اضافية" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "المنتجات والمواد والتراخيص والسلع الأخرى" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "أضف جيد" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "السلع المجموع الفرعي" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "مجموع الاقتباسات" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "التفاصيل المالية" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "حدد شروط الدفع" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "مستحق عند الاستلام" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "أو أدخل شروط الدفع المخصصة" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "استخدم المصطلحات المخصصة" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "تخفيض" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "نوع الخصم" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "لا يوجد خصم" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "نسبة مئوية (٪)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "مبلغ ثابت" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "مبلغ الخصم" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0.00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "رمز القسيمة" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "رمز القسيمة الاختياري" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "سبب الخصم" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "سبب الخصم" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "سير عمل الموافقة" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "يتطلب الموافقة قبل الإرسال" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "معلومات إضافية" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "الملاحظات الداخلية (غير مرئية للعميل)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "هذه الملاحظات مرئية لفريقك فقط" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "الشروط والأحكام" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "الشروط والأحكام" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "وستكون هذه الشروط مرئية للعميل" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "تحرير الاقتباس" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "لا يمكن تغيير العميل" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "تحديث الاقتباس" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "مجموع الاقتباسات" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "معدل القبول" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "متوسط ​​قيمة الاقتباس" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "اقتباسات حسب الحالة" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "أفضل العملاء حسب عروض الأسعار" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "تصفية الاقتباسات" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "اقتباسات البحث..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "هل أنت متأكد أنك تريد تكرار" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "يقتبس)؟" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "هل أنت متأكد أنك تريد وضع علامة" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "الاقتباس (ق) كما أرسلت؟" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "يقتبس" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "يقتبس #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "اقتباس ل" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "المجموع الفرعي بعد الخصم:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "وصف:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "المجموع الفرعي بعد الخصم" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "لم يتم طلب الموافقة بعد" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "في انتظار الموافقة" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "مرفوض من قبل" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "طلب الموافقة مرة أخرى" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "إرسال الاقتباس" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "هل أنت متأكد أنك تريد رفض هذا الاقتباس؟" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "حذف الاقتباس" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "تعليق داخلي (غير مرئي للعميل)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "داخلي" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "هل أنت متأكد أنك تريد حذف هذا التعليق؟" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "أكتب الرد..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "لا توجد تعليقات حتى الآن. ابدأ المحادثة بإضافة التعليق الأول." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "أرسلت في" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "مقبول في" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "إرسال الاقتباس عبر البريد الإلكتروني" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "البريد الإلكتروني للمستلم" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "اقتباس %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "رسالة مخصصة (اختياري)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "إضافة رسالة مخصصة إلى البريد الإلكتروني..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "إرفاق قوات الدفاع الشعبي" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "الموافقة على الاقتباس" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "ملاحظات (اختياري)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "إضافة ملاحظات الموافقة..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "رفض الموافقة على عرض الأسعار" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "الرجاء ذكر سبب الرفض..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "هل أنت متأكد أنك تريد حذف هذا الاقتباس؟ لا يمكن التراجع عن هذا الإجراء." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "إنشاء فاتورة متكررة" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "تحديث الفاتورة المتكررة" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "أتمتة إنشاء الفاتورة للفواتير على أساس الاشتراك" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "تكرار" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "التشغيل التالي" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "توليد الآن" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "تفاصيل القالب" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "إعدادات الفاتورة" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "الفواتير التي تم إنشاؤها مؤخرا" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "الخصوصية أولاً" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "تعيين ل" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "تمكين القياس عن بعد مجهول" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "ساعدنا في فهم أنماط الاستخدام لتحسين TimeTracker" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "ما هي البيانات التي يتم جمعها؟" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "ما نجمعه:" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "بصمة تثبيت مجهولة (مجزأة)" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Application version & platform info" +#~ msgstr "إصدار التطبيق ومعلومات النظام الأساسي" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "إحصائيات استخدام الميزة" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "ما لا نجمعه:" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "لا أسماء المستخدمين أو رسائل البريد الإلكتروني" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "لا توجد بيانات أو ملاحظات إدخال الوقت" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "لا توجد بيانات العميل أو الأعمال" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "يمكنك تغيير هذا في أي وقت" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "التقارير المتاحة" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "من خلال المتابعة، فإنك توافق على استخدام TimeTracker ضمن" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "ترخيص GPL-3.0" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "التقارير القياسية" +#~ msgid "Complete Setup & Continue" +#~ msgstr "أكمل الإعداد والمتابعة" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "تحرير المهمة" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "فشل تحديث الحالة" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "فشل تحديث حالة المهمة" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "تم إنشاء عمود كانبان" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "تم حذف عمود كانبان" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "تقرير موجز" +#~ msgid "Kanban columns reordered" +#~ msgstr "تمت إعادة ترتيب أعمدة كانبان" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "تم تغيير رؤية عمود كانبان" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "قماش شفاف" +#~ msgid "Kanban columns updated" +#~ msgstr "تم تحديث أعمدة كانبان" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Update" +#~ msgstr "تحديث" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "فشل تحديث أعمدة كانبان" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "جارٍ تحميل تفاصيل المهمة..." -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Tracked" +#~ msgstr "تتبع" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "عرض التفاصيل الكاملة" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "العودة إلى المهام" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "أضف مهمة جديدة إلى مشروعك لتقسيم العمل إلى مكونات يمكن التحكم فيها" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "أدخل اسمًا وصفيًا للمهمة" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "اختر اسمًا واضحًا ووصفيًا يوضح ما يجب القيام به" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "تقديم معلومات مفصلة عن المهمة والمتطلبات وأي تعليمات محددة..." -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "اختياري: قم بإضافة سياق أو متطلبات أو تعليمات محددة للمهمة" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "حدد المشروع الذي تنتمي إليه هذه المهمة" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "الحالة الأولية" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Done" +#~ msgstr "منتهي" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "اختياري: حدد موعدًا نهائيًا لهذه المهمة" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "اختياري: قم بتقدير المدة التي ستستغرقها هذه المهمة" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "اختياري: قم بتعيين هذه المهمة إلى أحد أعضاء الفريق" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "العلامات للتصنيف" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "نصائح لإنشاء المهام" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "استخدم الأفعال وكن محددًا بشأن ما يجب القيام به" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "تقديرات واقعية" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "ضع في اعتبارك التعقيد والتبعيات عند تقدير الوقت" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "تحديد المواعيد النهائية" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "تساعد تواريخ الاستحقاق في تحديد أولويات العمل وتتبع التقدم" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "المسائل ذات الأولوية" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "استخدم مستويات الأولوية لمساعدة أعضاء " +#~ "الفريق على التركيز على ما هو أكثر" +#~ " أهمية" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "العودة إلى المهمة" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "تحديث تفاصيل المهمة وإعداداتها لـ \"%(task)s\"" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "معلومات المهمة" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "مهمة التحديث" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "التقدير المستخدم" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Actual" +#~ msgstr "فِعلي" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "Current Task Info" +#~ msgstr "معلومات المهمة الحالية" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Current Status" +#~ msgstr "الوضع الحالي" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "الأولوية الحالية" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "المعينة حاليا ل" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "تاريخ الاستحقاق الحالي" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "إدخالات الوقت الأخيرة" +#~ msgid "Current Estimate" +#~ msgstr "التقدير الحالي" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "الساعات الفعلية" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "تنسيق التصدير" +#~ msgid "Started" +#~ msgstr "بدأت" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "على سبيل المثال، تطوير، اجتماع، عاجل" +#~ msgid "Edit Tips" +#~ msgstr "تحرير النصائح" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "المرشحات المحفوظة" +#~ msgid "Status Changes" +#~ msgstr "تغييرات الحالة" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "قد يؤثر تغيير الحالة على تتبع الوقت وحسابات التقدم" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "تحديثات تاريخ الاستحقاق" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "النطاق الزمني - تواريخ البدء والانتهاء المخصصة" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "ضع في اعتبارك عبء عمل الفريق عند تعديل المواعيد النهائية" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "يجب أن يكون تاريخ البدء قبل تاريخ الانتهاء" +#~ msgid "Assignment Changes" +#~ msgstr "تغييرات المهمة" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "قم بإعلام أعضاء الفريق عند إعادة تعيين المهام" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "Updating..." +#~ msgstr "جارٍ التحديث..." -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "مجالات الدفع" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "تلقى" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "رسوم البوابة" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "النطاق الزمني والمقارنة" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "النطاقات الزمنية السريعة" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "أسبوع" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "شهر" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "العام الماضي" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "النطاقات الزمنية المخصصة" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "عرض المقارنة" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "المعاينة المباشرة" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "تصفية المهام" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "الواجهة الأمامية" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "حذف المهام المحددة" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "تغيير الحالة للمهام المحددة" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "تعيين المهام المحددة" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "نتائج المقارنة" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "تصدير التقارير" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "تنسيق التصدير" - -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "تصدير التقارير" - -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "التقارير المجدولة" - -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "استيراد CSV" - -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "يصدّر" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "أنواع التقارير" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "تقرير المشروع" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "تقرير المستخدم" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "تقرير موجز" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "تقرير المهمة" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "إدخالات الوقت" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "تعيين المهام" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "نقل المهام المحددة إلى المشروع" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "حدد المشروع" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "نقل المهام" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "هل أنت متأكد أنك تريد حذف المهمة \"{name}\"؟" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "الإدخالات الأخيرة" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "لا يمكن حذف المهمة \"{name}\" لأنها " +#~ "تحتوي على إدخالات للوقت. يرجى حذف " +#~ "إدخالات الوقت أولا." -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "التقارير المجدولة" +#~ msgid "Delete Task" +#~ msgstr "حذف المهمة" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "التقارير المجدولة" +#~ msgid "My Tasks" +#~ msgstr "المهام الخاصة بي" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "النطاقات الزمنية المخصصة" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "المهام التي تم تعيينها لك أو التي قمت بإنشائها" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "total" +#~ msgstr "المجموع" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "تصفية المهام الخاصة بي" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "اسم المهمة أو الوصف" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "جميع الأولويات" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "نوع المهمة" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "المخصصة لي" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "خلقت من قبلي" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "عرض المتأخرة فقط" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "خلقت من قبلي" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "مهامي ترقيم الصفحات" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "لم يتم العثور على مهام" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "ليس لديك أي مهام تم تكليفك بها أو إنشاؤها بواسطتك حتى الآن." -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "أنشئ مهمتك الأولى" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "عرض كافة المهام" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "المهام المتأخرة" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "يتطلب اهتماما فوريا" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "items" +#~ msgstr "أغراض" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "There are" +#~ msgstr "هناك" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "لم يتم العثور على بيانات المبيعات للفترة المحددة." +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "يرجى مراجعة هذه المهام وتحديثها لمنع المزيد من التأخير." -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Due:" +#~ msgstr "حق:" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Est:" +#~ msgstr "EST:" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Actual:" +#~ msgstr "فِعلي:" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "تواريخ الاستحقاق" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "تواريخ الاستحقاق" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "إدارة المشاريع" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "جميع الأولويات" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "لا توجد مهام متأخرة!" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "عمل عظيم! جميع المهام حاليا في الموعد المحدد." -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "أدخل تاريخ الاستحقاق الجديد (YYYY-MM-DD):" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "هل أنت متأكد أنك تريد تمديد تاريخ الاستحقاق إلى" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "لجميع المهام المتأخرة؟" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "أدخل أولوية جديدة (منخفضة/متوسطة/عالية/عاجلة):" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "هل أنت متأكد أنك تريد تحديد الأولوية ل" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "الأولوية غير صالحة. يرجى استخدام: منخفض، متوسط، مرتفع، أو عاجل" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "فشل تحديث الهدف. يرجى المحاولة مرة أخرى." -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "هل تريد بدء المهمة ووضع علامة قيد التقدم؟" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "تغيير حالة المهمة" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "وضع علامة على المهمة على أنها \"مهام\"؟" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "هل تريد وضع علامة \"تم\" على المهمة؟" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "مهمة كاملة" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Complete" +#~ msgstr "مكتمل" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "هل تريد إعادة فتح المهمة للمراجعة؟" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "إعادة فتح المهمة" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "إعادة فتح" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "تفاصيل المشروع ونطاقه" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "إنشاء قالب إدخال الوقت" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "على سبيل المثال، الاستعداد اليومي، اجتماع العملاء" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "على سبيل المثال، 1.0، 0.5" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "املأ الملاحظات مسبقًا لهذا النوع من إدخال الوقت" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "على سبيل المثال، الاجتماع، التطوير، المشرف" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "تحرير القالب" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذا القالب؟" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "حذف القالب" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "Create Your First Template" +#~ msgstr "أنشئ مهمتك الأولى" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "قوالب" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" +#~ "قم بإنشاء قالب البريد الإلكتروني الأول" +#~ " الخاص بك لتخصيص رسائل البريد " +#~ "الإلكتروني الخاصة بالفاتورة." -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "Usage Statistics" +#~ msgstr "إحصائيات الاستخدام" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "أهم المشاريع (30 يومًا)" +#~ msgid "selected" +#~ msgstr "" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "الرسوم البيانية الدائرية لتوزيع الوقت" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "لا يوجد نشاط في آخر 30 يومًا." +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "اتجاه الساعات اليومية" +#~ msgid "Click to edit" +#~ msgstr "العودة إلى التحرير" -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "بيانات الاقتباس" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "أهم المشاريع (30 يومًا)" +#~ msgid "Request approval" +#~ msgstr "طلب الموافقة" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "لم يتم العثور على بيانات المبيعات للفترة المحددة." +#~ msgid "Clear filters" +#~ msgstr "تبديل المرشحات" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "لا توجد بيانات أو ملاحظات إدخال الوقت" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "العملاء" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "عرض كافة المهام" +#~ msgid "No time entries yet" +#~ msgstr "لم يتم تسجيل إدخالات الوقت حتى الآن" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "لم يتم العثور على بيانات المبيعات للفترة المحددة." +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "مهامي ترقيم الصفحات" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "إدخال الوقت يدويا" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "دخول الوقت" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "كيف أقوم بإنشاء إدخالات زمنية مجمعة لعدة أيام؟" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "الدخول بالجملة" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "لم يتم العثور على المشروع المحدد" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "يتم تحميل المهام بعد تحديد المشروع" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "النطاق الزمني" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "جرّب استعلامًا مختلفًا أو تحقق من إملائك." +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "حول تتبع العمل الإضافي" +#~ msgid "Entries will be created for these dates" +#~ msgstr "سيتم تقريب إدخالات الوقت إلى هذا الفاصل الزمني" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "الموقتات الذكية" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "العودة إلى الأدوار" - -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "إدخالات الوقت هذا الأسبوع" - -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "أهم المشاريع" - -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "لم يتم تسجيل إدخالات الوقت لهذا الأسبوع حتى الآن" - -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "تطبيق الفلتر" - -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "هل أنت متأكد أنك تريد حذف هذا الفلتر؟" - -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "حذف عامل التصفية" - -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "تقرير المخزون المنخفض" - -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "المرشحات المحفوظة" - -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "تخصيص الاختصارات" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "اختصارات البحث..." +#~ msgid "tag1, tag2, tag3" +#~ msgstr "العلامة 1، العلامة 2" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "حفظ التغييرات" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "تصفية الفواتير" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Create Entries" +#~ msgstr "الإدخالات الأخيرة" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "اسحب لإعادة الترتيب" +#~ msgid "Bulk Entry Tips" +#~ msgstr "الدخول بالجملة" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "إعادة ضبط" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "Skip Weekends" +#~ msgstr "الاتجاهات الأسبوعية" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "فشل في إيقاف الموقّت" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "المهلة الزمنية (أيام)" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "فشل تحديث الحالة" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "سيؤدي هذا إلى إعادة تعيين جميع اختصارات لوحة المفاتيح إلى قيمها الافتراضية. يكمل؟" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "إعادة التعيين إلى الإعدادات الافتراضية" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "إعادة التعيين إلى الإعدادات الافتراضية؟" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "فشل في إزالة الصورة الرمزية." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "إعادة التعيين إلى الإعدادات الافتراضية" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "فشل تحديث الحالة" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "فشل في تحميل المهام" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "مرحباً" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "الخصوصية أولاً" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "مستضافة ذاتيًا على الخادم الخاص بك" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "القياس عن بعد مجهول (الاشتراك)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "لم يتم جمع أي معلومات تحديد الهوية الشخصية (PII) على الإطلاق" - -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "مفتوحة المصدر وشفافة" - -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "مرحبا بكم في TimeTracker" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "دعنا نجهزك خلال دقيقة واحدة" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "شكرا لاختيارك TimeTracker!" +#~ msgid "Failed to load tasks" +#~ msgstr "فشل في تحميل المهام" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "تبقى بياناتك على الخادم الخاص بك، ويكون لديك السيطرة الكاملة." +#~ msgid "Total days" +#~ msgstr "إجمالي البضائع" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "وقت النهاية" +#~ msgid "Weekdays only" +#~ msgstr "يبدأ الأسبوع في" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "سيتم تقريب إدخالات الوقت إلى هذا الفاصل الزمني" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "المنطقة الزمنية" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "تنسيق التاريخ" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "تنسيق الوقت" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "ساعات" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "ساعات" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Agenda" +#~ msgstr "تقويم" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "اسم الشركة" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "اسم شركتك" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "عنوان شركتك" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "إعدادات العمل الإضافي" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "إعدادات التسجيل الذاتي" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "تنسيق الوقت" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "قواعد تقريب الوقت" +#~ msgid "CSV Format" +#~ msgstr "استيراد CSV" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "إدخالات الوقت المستديرة إلى فترات زمنية تم تكوينها" +#~ msgid "Filter by tags..." +#~ msgstr "تصفية المهام الخاصة بي" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "وضع مؤقت نشط واحد" +#~ msgid "Show billable entries only" +#~ msgstr "لم يتم العثور على إدخالات الوقت." -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "المبلغ القابل للفوترة" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "تكوين مهلة الخمول" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "إجمالي الساعات" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "ساعات حسب المشروع" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "إنشاء إدخال وقت جديد" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "حدد مشروع..." -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "الفواتير المتكررة" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "إنشاء قالب إدخال الوقت" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "تحديث الفاتورة المتكررة" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "ملاحة" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Views" +#~ msgstr "منظر" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Day View" +#~ msgstr "عرض الشبكة" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Week View" +#~ msgstr "مراجعة" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "Month View" +#~ msgstr "شهر" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "Agenda View" +#~ msgstr "عرض التقويم" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "الخصوصية أولاً" +#~ msgid "Create New Entry" +#~ msgstr "إنشاء عميل جديد" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Focus Filter" +#~ msgstr "إظهار عوامل التصفية" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "تمكين القياس عن بعد مجهول" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "ساعدنا في فهم أنماط الاستخدام لتحسين TimeTracker" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "ما هي البيانات التي يتم جمعها؟" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "ما نجمعه:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "بصمة تثبيت مجهولة (مجزأة)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "إصدار التطبيق ومعلومات النظام الأساسي" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "إحصائيات استخدام الميزة" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "ما لا نجمعه:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "لا أسماء المستخدمين أو رسائل البريد الإلكتروني" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "لا توجد بيانات أو ملاحظات إدخال الوقت" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "لا توجد بيانات العميل أو الأعمال" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "يمكنك تغيير هذا في أي وقت" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "من خلال المتابعة، فإنك توافق على استخدام TimeTracker ضمن" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "ترخيص GPL-3.0" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "أكمل الإعداد والمتابعة" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "تحرير المهمة" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "فشل تحديث الحالة" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "فشل تحديث حالة المهمة" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "تم إنشاء عمود كانبان" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "تم حذف عمود كانبان" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "تمت إعادة ترتيب أعمدة كانبان" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "تم تغيير رؤية عمود كانبان" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "تم تحديث أعمدة كانبان" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "تحديث" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "فشل تحديث أعمدة كانبان" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "جارٍ تحميل تفاصيل المهمة..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "تتبع" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "عرض التفاصيل الكاملة" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "العودة إلى المهام" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "أضف مهمة جديدة إلى مشروعك لتقسيم العمل إلى مكونات يمكن التحكم فيها" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "أدخل اسمًا وصفيًا للمهمة" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "اختر اسمًا واضحًا ووصفيًا يوضح ما يجب القيام به" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "تقديم معلومات مفصلة عن المهمة والمتطلبات وأي تعليمات محددة..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "اختياري: قم بإضافة سياق أو متطلبات أو تعليمات محددة للمهمة" - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "حدد المشروع الذي تنتمي إليه هذه المهمة" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "الحالة الأولية" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "منتهي" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "اختياري: حدد موعدًا نهائيًا لهذه المهمة" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "اختياري: قم بتقدير المدة التي ستستغرقها هذه المهمة" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "اختياري: قم بتعيين هذه المهمة إلى أحد أعضاء الفريق" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "مسح كافة ذاكرات التخزين المؤقت" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "العلامات للتصنيف" +#~ msgid "Close Modal" +#~ msgstr "يغلق" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "نصائح لإنشاء المهام" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "استخدم الأفعال وكن محددًا بشأن ما يجب القيام به" +#~ msgid "Failed to load events" +#~ msgstr "فشل في تحميل المهام" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "تقديرات واقعية" +#~ msgid "Please select a project for new entries" +#~ msgstr "حدد مشروعًا من القائمة المنسدلة" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "ضع في اعتبارك التعقيد والتبعيات عند تقدير الوقت" +#~ msgid "Please select a project first" +#~ msgstr "اختر مشروعًا" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "تحديد المواعيد النهائية" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "تساعد تواريخ الاستحقاق في تحديد أولويات العمل وتتبع التقدم" +#~ msgid "Entry created successfully" +#~ msgstr "تم إنشاء الحدث بنجاح" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "المسائل ذات الأولوية" +#~ msgid "Failed to create entry" +#~ msgstr "فشل في حذف الحدث" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "استخدم مستويات الأولوية لمساعدة أعضاء الفريق على التركيز على ما هو أكثر أهمية" +#~ msgid "Entry updated" +#~ msgstr "آخر تحديث" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "العودة إلى المهمة" +#~ msgid "Failed to update entry" +#~ msgstr "فشل تحديث الحالة" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "تحديث تفاصيل المهمة وإعداداتها لـ \"%(task)s\"" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذه الملاحظة؟" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "معلومات المهمة" +#~ msgid "Delete Entry" +#~ msgstr "حذف الإدخال" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "مهمة التحديث" +#~ msgid "Automatic Timer" +#~ msgstr "بدء الموقت" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "التقدير المستخدم" +#~ msgid "Entry deleted" +#~ msgstr "تم الحذف" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "فِعلي" +#~ msgid "Failed to delete entry" +#~ msgstr "فشل في حذف الحدث" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "معلومات المهمة الحالية" +#~ msgid "Export started" +#~ msgstr "تصدير البيانات" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "الوضع الحالي" +#~ msgid "No recurring blocks yet" +#~ msgstr "الفواتير المتكررة" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "الأولوية الحالية" +#~ msgid "Unknown Project" +#~ msgstr "لا يوجد مشروع" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "المعينة حاليا ل" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "فشل في تحميل المهام" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "تاريخ الاستحقاق الحالي" +#~ msgid "No events in this period" +#~ msgstr "لا توجد مهام في هذا العمود." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "التقدير الحالي" +#~ msgid "Failed to load agenda view" +#~ msgstr "فشل تحميل الأنشطة" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "الساعات الفعلية" +#~ msgid "Failed to load event details" +#~ msgstr "فشل في تحميل المهام" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "بدأت" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذه الملاحظة؟" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "تحرير النصائح" +#~ msgid "Delete Recurring Block" +#~ msgstr "تحديث الفاتورة المتكررة" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "تغييرات الحالة" +#~ msgid "Recurring block deleted" +#~ msgstr "حدث متكرر" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "قد يؤثر تغيير الحالة على تتبع الوقت وحسابات التقدم" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "تحديثات تاريخ الاستحقاق" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "ضع في اعتبارك عبء عمل الفريق عند تعديل المواعيد النهائية" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "تغييرات المهمة" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "قم بإعلام أعضاء الفريق عند إعادة تعيين المهام" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "جارٍ التحديث..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "تصفية المهام" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "الواجهة الأمامية" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "حذف المهام المحددة" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "تغيير الحالة للمهام المحددة" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "تعيين المهام المحددة" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "تعيين المهام" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "نقل المهام المحددة إلى المشروع" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "حدد المشروع" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "نقل المهام" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "هل أنت متأكد أنك تريد حذف المهمة \"{name}\"؟" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "لا يمكن حذف المهمة \"{name}\" لأنها تحتوي على إدخالات للوقت. يرجى حذف إدخالات الوقت أولا." +#~ msgid "Failed to delete recurring block" +#~ msgstr "فشل في حذف الحدث" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "حذف المهمة" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "أدخل تاريخ الاستحقاق الجديد (YYYY-MM-DD):" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "المهام الخاصة بي" +#~ msgid "Entry duplicated successfully" +#~ msgstr "تم تحديث الحدث بنجاح" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "المهام التي تم تعيينها لك أو التي قمت بإنشائها" +#~ msgid "Failed to duplicate entry" +#~ msgstr "فشل في حذف الحدث" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "المجموع" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "تصفية المهام الخاصة بي" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "اختصارات لوحة المفاتيح" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "اسم المهمة أو الوصف" +#~ msgid "Edit Time Entry" +#~ msgstr "دخول الوقت الجديد" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "جميع الأولويات" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "نوع المهمة" +#~ msgid "Confirm Changes" +#~ msgstr "مؤكد" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "المخصصة لي" +#~ msgid "Confirm & Save" +#~ msgstr "مؤكد" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "خلقت من قبلي" +#~ msgid "Admin Mode" +#~ msgstr "مجموعة المشرف" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "عرض المتأخرة فقط" +#~ msgid "Admin Mode:" +#~ msgstr "مجموعة المشرف" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "خلقت من قبلي" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "مهامي ترقيم الصفحات" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "حدد المشروع الذي تنتمي إليه هذه المهمة" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "لم يتم العثور على مهام" +#~ msgid "Task (Optional)" +#~ msgstr "المهمة (اختيارية)" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "ليس لديك أي مهام تم تكليفك بها أو إنشاؤها بواسطتك حتى الآن." +#~ msgid "Select a specific task within the project" +#~ msgstr "المهمة المحددة غير صالحة للمشروع المختار" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "أنشئ مهمتك الأولى" +#~ msgid "When the work started" +#~ msgstr "تاريخ بداية الأسبوع" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "عرض كافة المهام" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "المهام المتأخرة" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "يتطلب اهتماما فوريا" +#~ msgid "Time the work ended" +#~ msgstr "انتهى عقد العميل" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "أغراض" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "هناك" +#~ msgid "Automatic" +#~ msgstr "إذن" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "يرجى مراجعة هذه المهام وتحديثها لمنع المزيد من التأخير." +#~ msgid "How this entry was created" +#~ msgstr "تم إنشاء العميل" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "حق:" +#~ msgid "Duration:" +#~ msgstr "مدة" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "EST:" +#~ msgid "Describe what you worked on" +#~ msgstr "ماذا عملت عليه؟" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "فِعلي:" +#~ msgid "tag1, tag2" +#~ msgstr "العلامة 1، العلامة 2" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "تواريخ الاستحقاق" +#~ msgid "Internal invoice reference" +#~ msgstr "لم يتم تحديد أي فواتير" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "رقم الاستلام/الفاتورة" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "تواريخ الاستحقاق" +#~ msgid "Reason for Change" +#~ msgstr "سبب الارشيف" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "إدارة المشاريع" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "جميع الأولويات" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "لا توجد مهام متأخرة!" +#~ msgid "Task:" +#~ msgstr "مهمة" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "عمل عظيم! جميع المهام حاليا في الموعد المحدد." +#~ msgid "Start:" +#~ msgstr "يبدأ" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "أدخل تاريخ الاستحقاق الجديد (YYYY-MM-DD):" +#~ msgid "End:" +#~ msgstr "نهاية" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "هل أنت متأكد أنك تريد تمديد تاريخ الاستحقاق إلى" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "لجميع المهام المتأخرة؟" +#~ msgid "Admin Notice" +#~ msgstr "أضف ملاحظة" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "أدخل أولوية جديدة (منخفضة/متوسطة/عالية/عاجلة):" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "هل أنت متأكد أنك تريد تحديد الأولوية ل" +#~ msgid "Duplicate Entry" +#~ msgstr "إدخال مكرر" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "الأولوية غير صالحة. يرجى استخدام: منخفض، متوسط، مرتفع، أو عاجل" +#~ msgid "Duplicate Time Entry" +#~ msgstr "إدخال وقت مكرر" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "تسجيل الوقت يدويا" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "فشل تحديث الهدف. يرجى المحاولة مرة أخرى." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "هل تريد بدء المهمة ووضع علامة قيد التقدم؟" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "تغيير حالة المهمة" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "وضع علامة على المهمة على أنها \"مهام\"؟" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "هل تريد وضع علامة \"تم\" على المهمة؟" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "مهمة كاملة" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "مكتمل" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "هل تريد إعادة فتح المهمة للمراجعة؟" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "إعادة فتح المهمة" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "إعادة فتح" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "تفاصيل المشروع ونطاقه" - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "إنشاء قالب إدخال الوقت" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "على سبيل المثال، الاستعداد اليومي، اجتماع العملاء" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "على سبيل المثال، 1.0، 0.5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "املأ الملاحظات مسبقًا لهذا النوع من إدخال الوقت" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "على سبيل المثال، الاجتماع، التطوير، المشرف" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "تحرير القالب" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "هل أنت متأكد أنك تريد حذف هذا القالب؟" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "حذف القالب" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "أنشئ مهمتك الأولى" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "قوالب" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "قم بإنشاء قالب البريد الإلكتروني الأول الخاص بك لتخصيص رسائل البريد الإلكتروني الخاصة بالفاتورة." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "إحصائيات الاستخدام" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "إنشاء نسخة من الإدخال السابق مع الأوقات الجديدة" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "إنشاء إدخال وقت جديد" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "إدخال مكرر:" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "Original:" +#~ msgstr "إبداعي:" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "to" +#~ msgstr "ل" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "العودة إلى التحرير" +#~ msgid "Project & task" +#~ msgstr "المشاريع" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "التاريخ والوقت" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "طلب الموافقة" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "تبديل المرشحات" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "لا توجد بيانات أو ملاحظات إدخال الوقت" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "لم يتم تسجيل إدخالات الوقت حتى الآن" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "مهامي ترقيم الصفحات" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "إدخال الوقت يدويا" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "دخول الوقت" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "كيف أقوم بإنشاء إدخالات زمنية مجمعة لعدة أيام؟" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "الدخول بالجملة" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "لم يتم العثور على المشروع المحدد" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "يتم تحميل المهام بعد تحديد المشروع" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "النطاق الزمني" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "ضيف" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "سيتم تقريب إدخالات الوقت إلى هذا الفاصل الزمني" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "الموقتات الذكية" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "ماذا عملت عليه؟" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "العلامة 1، العلامة 2" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "تصفية الفواتير" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "الإدخالات الأخيرة" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "الدخول بالجملة" +#~ msgid "Apply filters" +#~ msgstr "تطبيق المرشحات" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "الاتجاهات الأسبوعية" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "المهلة الزمنية (أيام)" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "فشل في تحميل المهام" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "إجمالي البضائع" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "يبدأ الأسبوع في" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "سيتم تقريب إدخالات الوقت إلى هذا الفاصل الزمني" - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "تقويم" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "تنسيق الوقت" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "استيراد CSV" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "تصفية المهام الخاصة بي" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "لم يتم العثور على إدخالات الوقت." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "المبلغ القابل للفوترة" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "إجمالي الساعات" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "ساعات حسب المشروع" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "إنشاء إدخال وقت جديد" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "حدد مشروع..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "الفواتير المتكررة" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "إنشاء قالب إدخال الوقت" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "تحديث الفاتورة المتكررة" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "ملاحة" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "منظر" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "عرض الشبكة" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "مراجعة" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "شهر" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "عرض التقويم" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "إنشاء عميل جديد" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "إظهار عوامل التصفية" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "مسح كافة ذاكرات التخزين المؤقت" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "يغلق" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "تتبع وقتك باستخدام مؤقت مرئي" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "الانتهاء المقدر" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "فشل في تحميل المهام" +#~ msgid "Calculating..." +#~ msgstr "جارٍ الحساب..." -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "حدد مشروعًا من القائمة المنسدلة" +#~ msgid "Based on average session duration" +#~ msgstr "بناءً على متوسط ​​مدة الجلسة" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "اختر مشروعًا" +#~ msgid "No active timer. Start one below!" +#~ msgstr "لا يوجد توقيت نشط. ابدأ واحدًا أدناه!" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "بدء الموقت الجديد" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "تم إنشاء الحدث بنجاح" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "فشل في حذف الحدث" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "آخر تحديث" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "فشل تحديث الحالة" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "هل أنت متأكد أنك تريد حذف هذه الملاحظة؟" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "حذف الإدخال" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "بدء الموقت" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "تم الحذف" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "فشل في حذف الحدث" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "تصدير البيانات" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "الفواتير المتكررة" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "لا يوجد مشروع" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "فشل في تحميل المهام" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "لا توجد مهام في هذا العمود." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "فشل تحميل الأنشطة" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "فشل في تحميل المهام" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "هل أنت متأكد أنك تريد حذف هذه الملاحظة؟" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "تحديث الفاتورة المتكررة" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "حدث متكرر" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "فشل في حذف الحدث" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "أدخل تاريخ الاستحقاق الجديد (YYYY-MM-DD):" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "تم تحديث الحدث بنجاح" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "فشل في حذف الحدث" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "أضف ملاحظات حول ما تعمل عليه..." -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "اختصارات لوحة المفاتيح" +#~ msgid "Or use a template" +#~ msgstr "أو استخدم قالبًا" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "دخول الوقت الجديد" +#~ msgid "Recent Projects" +#~ msgstr "المشاريع الأخيرة" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "احصائيات اليوم" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "مؤكد" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "مؤكد" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "مجموعة المشرف" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "مجموعة المشرف" +#~ msgid "Approval" +#~ msgstr "يعتمد" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "حدد المشروع الذي تنتمي إليه هذه المهمة" +#~ msgid "License status" +#~ msgstr "الوضع الحالي" -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "المهمة (اختيارية)" +#~ msgid "Supporter license active" +#~ msgstr "الميزات المدعومة" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "المهمة المحددة غير صالحة للمشروع المختار" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "تاريخ بداية الأسبوع" +#~ msgid "Not activated" +#~ msgstr "فعل" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "أدخل اسم العميل" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "انتهى عقد العميل" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "License key" +#~ msgstr "رخصة" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "إذن" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "تم إنشاء العميل" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "مدة" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "ماذا عملت عليه؟" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "العلامة 1، العلامة 2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "لم يتم تحديد أي فواتير" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "رقم الاستلام/الفاتورة" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "سبب الارشيف" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Validate" +#~ msgstr "تاريخ" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "مهمة" +#~ msgid "Back to Settings" +#~ msgstr "إعدادات النسخ الاحتياطي" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "يبدأ" +#~ msgid "Profile" +#~ msgstr "حساب تعريفي" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "نهاية" +#~ msgid "In progress" +#~ msgstr "في تَقَدم" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "عرض جميع إدخالات الوقت" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "أضف ملاحظة" +#~ msgid "No recent time entries" +#~ msgstr "لا توجد إدخالات الوقت الأخيرة" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "إدارة إعدادات حسابك وتفضيلاتك" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "إدخال مكرر" +#~ msgid "Support & Community" +#~ msgstr "المصدر المفتوح والمجتمع" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "إدخال وقت مكرر" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "تسجيل الوقت يدويا" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "إنشاء نسخة من الإدخال السابق مع الأوقات الجديدة" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "إنشاء إدخال وقت جديد" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "إدخال مكرر:" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "إبداعي:" +#~ msgid "Profile Information" +#~ msgstr "معلومات الملف الشخصي" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "ل" +#~ msgid "Username cannot be changed" +#~ msgstr "لا يمكن تغيير اسم المستخدم" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "المشاريع" +#~ msgid "Required for email notifications" +#~ msgstr "مطلوب لإخطارات البريد الإلكتروني" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "التاريخ والوقت" +#~ msgid "Notification Preferences" +#~ msgstr "تفضيلات الإخطار" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "تمكين إشعارات البريد الإلكتروني" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "مفتاح رئيسي لجميع إشعارات البريد الإلكتروني" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "إخطارات الفاتورة المتأخرة" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "ضيف" +#~ msgid "Task Assignment Notifications" +#~ msgstr "إشعارات تعيين المهام" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "إشعارات التعليق والإشارة" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "البريد الإلكتروني لملخص الوقت الأسبوعي" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "ماذا عملت عليه؟" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "تمكين إشعارات البريد الإلكتروني" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "تطبيق المرشحات" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "تفضيلات العرض" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "System Default" +#~ msgstr "النظام الافتراضي" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "تفضيلات تقريب الوقت" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "قم بتكوين كيفية تقريب إدخالات الوقت " +#~ "الخاصة بك. يؤثر هذا على كيفية حساب" +#~ " المدد عند إيقاف المؤقتات." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "تمكين تقريب الوقت" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "إدخالات الوقت المستديرة إلى فترات زمنية تم تكوينها" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "الفاصل الزمني للتقريب" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "سيتم تقريب إدخالات الوقت إلى هذا الفاصل الزمني" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "تتبع وقتك باستخدام مؤقت مرئي" +#~ msgid "Rounding Method" +#~ msgstr "طريقة التقريب" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "الانتهاء المقدر" +#~ msgid "Overtime Settings" +#~ msgstr "إعدادات العمل الإضافي" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "جارٍ الحساب..." +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "بناءً على متوسط ​​مدة الجلسة" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "لا يوجد توقيت نشط. ابدأ واحدًا أدناه!" +#~ msgid "Daily hours" +#~ msgstr "الساعات اليومية" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "بدء الموقت الجديد" +#~ msgid "Weekly hours" +#~ msgstr "الأهداف الأسبوعية" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "أضف ملاحظات حول ما تعمل عليه..." +#~ msgid "Standard Hours Per Day" +#~ msgstr "ساعات قياسية في اليوم الواحد" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "أو استخدم قالبًا" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "عادة 8 ساعات لوظيفة بدوام كامل" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "المشاريع الأخيرة" +#~ msgid "Standard Hours Per Week" +#~ msgstr "ساعات قياسية في اليوم الواحد" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "احصائيات اليوم" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "How it works" +#~ msgstr "كيف يعمل" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "إذا كنت تعمل أكثر من ساعات العمل" +#~ " القياسية في اليوم، فسيتم تتبع الوقت" +#~ " الإضافي كعمل إضافي في التقارير " +#~ "والتحليلات." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "يعتمد" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "الإعدادات الإقليمية" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "الوضع الحالي" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "الميزات المدعومة" +#~ msgid "Time Format" +#~ msgstr "تنسيق الوقت" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "يبدأ الأسبوع في" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "فعل" +#~ msgid "Sunday" +#~ msgstr "الأحد" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Monday" +#~ msgstr "الاثنين" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "أدخل اسم العميل" +#~ msgid "Saturday" +#~ msgstr "السبت" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "عرض التقويم" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "رخصة" +#~ msgid "Remember last view" +#~ msgstr "عضو منذ" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "تاريخ" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "إنشاء أمر الشراء" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "تم تعطيل تقريب الوقت. سيتم تسجيل جميع الأوقات تمامًا كما تم تتبعها." -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "إعدادات النسخ الاحتياطي" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "لا يوجد تقريب - سيتم تسجيل الأوقات تمامًا كما تم تتبعها." -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "حساب تعريفي" +#~ msgid "Actual time:" +#~ msgstr "الوقت الفعلي:" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "في تَقَدم" +#~ msgid "Rounded:" +#~ msgstr "مدور:" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "عرض جميع إدخالات الوقت" +#~ msgid "With " +#~ msgstr "مع" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "لا توجد إدخالات الوقت الأخيرة" +#~ msgid " minute intervals" +#~ msgstr "فواصل زمنية دقيقة" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "إدارة إعدادات حسابك وتفضيلاتك" +#~ msgid "Create Weekly Goal" +#~ msgstr "إنشاء هدف أسبوعي" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "المصدر المفتوح والمجتمع" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "إنشاء هدف الوقت الأسبوعي" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "حدد هدفًا لساعات العمل هذا الأسبوع" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "الساعات المستهدفة" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "كم ساعة تريد العمل هذا الأسبوع؟" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "تاريخ بداية الأسبوع" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "اتركه فارغًا لاستخدام الأسبوع الحالي (بدءًا من يوم الاثنين)" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "معلومات الملف الشخصي" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "لا يمكن تغيير اسم المستخدم" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "مطلوب لإخطارات البريد الإلكتروني" +#~ msgid "Optional notes about your goal..." +#~ msgstr "ملاحظات اختيارية حول هدفك..." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "تفضيلات الإخطار" +#~ msgid "Quick Presets" +#~ msgstr "الإعدادات المسبقة السريعة" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "تمكين إشعارات البريد الإلكتروني" +#~ msgid "Tips for Setting Goals" +#~ msgstr "نصائح لتحديد الأهداف" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "مفتاح رئيسي لجميع إشعارات البريد الإلكتروني" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "كن واقعيًا: فكر في الإجازات والاجتماعات والالتزامات الأخرى" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "إخطارات الفاتورة المتأخرة" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "ابدأ بشكل متحفظ: يمكنك دائمًا تعديل هدفك لاحقًا" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "إشعارات تعيين المهام" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" +#~ "تتبع التقدم: تحقق من لوحة المعلومات " +#~ "الخاصة بك بانتظام للبقاء على المسار " +#~ "الصحيح" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "إشعارات التعليق والإشارة" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "دوام كامل نموذجي: 40 ساعة في الأسبوع (8 ساعات في اليوم، 5 أيام)" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "البريد الإلكتروني لملخص الوقت الأسبوعي" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "تحرير الهدف الأسبوعي" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "تحرير هدف الوقت الأسبوعي" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "فترة الأسبوع" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "تمكين إشعارات البريد الإلكتروني" +#~ msgid "Current Progress" +#~ msgstr "التقدم الحالي" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "هل أنت متأكد أنك تريد حذف هذا الهدف؟" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "حذف الهدف" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "أهداف الوقت الأسبوعية" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "قم بتعيين وتتبع أهداف الساعة الأسبوعية الخاصة بك" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "هدف جديد" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "مجموع الأهداف" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "تفضيلات العرض" +#~ msgid "Success Rate" +#~ msgstr "معدل النجاح" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "النظام الافتراضي" +#~ msgid "Current Week Goal" +#~ msgstr "هدف الأسبوع الحالي" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "تفضيلات تقريب الوقت" +#~ msgid "Remaining Hours" +#~ msgstr "الساعات المتبقية" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "قم بتكوين كيفية تقريب إدخالات الوقت الخاصة بك. يؤثر هذا على كيفية حساب المدد عند إيقاف المؤقتات." +#~ msgid "Days Remaining" +#~ msgstr "الأيام المتبقية" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "تمكين تقريب الوقت" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "متوسط ​​الساعات/اليوم المطلوب" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "إدخالات الوقت المستديرة إلى فترات زمنية تم تكوينها" +#~ msgid "Edit Goal" +#~ msgstr "تحرير الهدف" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "الفاصل الزمني للتقريب" +#~ msgid "No goal set for this week" +#~ msgstr "لم يتم تحديد هدف لهذا الأسبوع" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "سيتم تقريب إدخالات الوقت إلى هذا الفاصل الزمني" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "قم بإنشاء هدف زمني أسبوعي لبدء تتبع تقدمك" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "طريقة التقريب" +#~ msgid "Goal History" +#~ msgstr "تاريخ الهدف" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "إعدادات العمل الإضافي" +#~ msgid "Target" +#~ msgstr "هدف" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "تفاصيل الهدف الأسبوعي" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "الساعات اليومية" +#~ msgid "Daily Breakdown" +#~ msgstr "الانهيار اليومي" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "الأهداف الأسبوعية" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "ساعات قياسية في اليوم الواحد" +#~ msgid "Time Entries This Week" +#~ msgstr "إدخالات الوقت هذا الأسبوع" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "عادة 8 ساعات لوظيفة بدوام كامل" +#~ msgid "No Project" +#~ msgstr "لا يوجد مشروع" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "ساعات قياسية في اليوم الواحد" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "لم يتم تسجيل إدخالات الوقت لهذا الأسبوع حتى الآن" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "كيف يعمل" +#~ msgid "Reference date" +#~ msgstr "نوع المرجع" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "إذا كنت تعمل أكثر من ساعات العمل القياسية في اليوم، فسيتم تتبع الوقت الإضافي كعمل إضافي في التقارير والتحليلات." +#~ msgid "Create/Get Period" +#~ msgstr "إنشاء أمر الشراء" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Start date" +#~ msgstr "تاريخ البدء" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "End date" +#~ msgstr "تاريخ الانتهاء" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Exports" +#~ msgstr "يصدّر" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "الإعدادات الإقليمية" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "تنسيق الوقت" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "يبدأ الأسبوع في" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "الأحد" +#~ msgid "Audit Events CSV" +#~ msgstr "تحرير الحدث" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "الاثنين" +#~ msgid "Timesheet Periods" +#~ msgstr "فترة الأسبوع" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "السبت" +#~ msgid "Submit" +#~ msgstr "موضوع" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "عرض التقويم" +#~ msgid "No timesheet periods yet." +#~ msgstr "لم يتم تسجيل إدخالات الوقت حتى الآن" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "عضو منذ" +#~ msgid "Leave Balances" +#~ msgstr "حفظ التغييرات" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "إنشاء أمر الشراء" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "تم تعطيل تقريب الوقت. سيتم تسجيل جميع الأوقات تمامًا كما تم تتبعها." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "لا يوجد تقريب - سيتم تسجيل الأوقات تمامًا كما تم تتبعها." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "الوقت الفعلي:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "مدور:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "مع" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "فواصل زمنية دقيقة" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "إنشاء هدف أسبوعي" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "إنشاء هدف الوقت الأسبوعي" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "حدد هدفًا لساعات العمل هذا الأسبوع" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "الساعات المستهدفة" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "كم ساعة تريد العمل هذا الأسبوع؟" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "تاريخ بداية الأسبوع" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "اتركه فارغًا لاستخدام الأسبوع الحالي (بدءًا من يوم الاثنين)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "مستخدم" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "ملاحظات اختيارية حول هدفك..." +#~ msgid "No leave types configured." +#~ msgstr "لم يتم تكوينه" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "الإعدادات المسبقة السريعة" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "نصائح لتحديد الأهداف" +#~ msgid "Select leave type" +#~ msgstr "حدد العميل" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "كن واقعيًا: فكر في الإجازات والاجتماعات والالتزامات الأخرى" +#~ msgid "Requested hours" +#~ msgstr "الساعات المقدرة" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "ابدأ بشكل متحفظ: يمكنك دائمًا تعديل هدفك لاحقًا" +#~ msgid "Available overtime (YTD)" +#~ msgstr "المتغيرات المتاحة" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "تتبع التقدم: تحقق من لوحة المعلومات الخاصة بك بانتظام للبقاء على المسار الصحيح" +#~ msgid "Comment" +#~ msgstr "تعليقات" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "دوام كامل نموذجي: 40 ساعة في الأسبوع (8 ساعات في اليوم، 5 أيام)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "تحرير الهدف الأسبوعي" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "تحرير هدف الوقت الأسبوعي" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "فترة الأسبوع" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "التقدم الحالي" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "هل أنت متأكد أنك تريد حذف هذا الهدف؟" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "حذف الهدف" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "أهداف الوقت الأسبوعية" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "قم بتعيين وتتبع أهداف الساعة الأسبوعية الخاصة بك" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "هدف جديد" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "مجموع الأهداف" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "معدل النجاح" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "هدف الأسبوع الحالي" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "الساعات المتبقية" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "الأيام المتبقية" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "متوسط ​​الساعات/اليوم المطلوب" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "تحرير الهدف" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "لم يتم تحديد هدف لهذا الأسبوع" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "قم بإنشاء هدف زمني أسبوعي لبدء تتبع تقدمك" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "تاريخ الهدف" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "هدف" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "تفاصيل الهدف الأسبوعي" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "مرفوض" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "الانهيار اليومي" +#~ msgid "Allocated" +#~ msgstr "مخلوق" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "وقت" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "إدخالات الوقت هذا الأسبوع" +#~ msgid "Utilization %" +#~ msgstr "إذن" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "لا يوجد مشروع" +#~ msgid "No capacity data available." +#~ msgstr "لا تتوفر بيانات معدل الحرق" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "لم يتم تسجيل إدخالات الوقت لهذا الأسبوع حتى الآن" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "نوع المرجع" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "إنشاء أمر الشراء" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "تاريخ البدء" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "تاريخ الانتهاء" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "يصدّر" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "تمكين بوابة العميل" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "تجاوز الحالة القابلة للفوترة" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "تحرير الحدث" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "فترة الأسبوع" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "موضوع" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "لم يتم تسجيل إدخالات الوقت حتى الآن" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "حفظ التغييرات" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "نشط فقط" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "نوع الحدث" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "مستخدم" +#~ msgid "Accrual hours per month" +#~ msgstr "الساعات الفعلية" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "لم يتم تكوينه" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "نوع الحدث" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "حدد العميل" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "الساعات المقدرة" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "المتغيرات المتاحة" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "تعليقات" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "عاجز" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "تفاصيل الشركة" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "مرفوض" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "مخلوق" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "وقت" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "إذن" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "لا تتوفر بيانات معدل الحرق" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "اسم الدور" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "ملاحظات (اختياري)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "أضف جيد" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "تمكين بوابة العميل" +#~ msgid "No holidays configured." +#~ msgstr "لم يتم تكوين خطافات الويب" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "تجاوز الحالة القابلة للفوترة" +#~ msgid "Support" +#~ msgstr "يدعم" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "نشط فقط" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "نوع الحدث" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "الساعات الفعلية" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "نوع الحدث" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "عاجز" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "تفاصيل الشركة" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "اسم الدور" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "ملاحظات (اختياري)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "أضف جيد" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "لم يتم تكوين خطافات الويب" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "زائدة" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "يدعم" +#~ msgid "Cash" +#~ msgstr "نقدي" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "يفحص" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "التحويل البنكي" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "بطاقة إئتمان" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "بطاقة الخصم" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "شريط" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "زائدة" +#~ msgid "Company Card" +#~ msgstr "بطاقة الشركة" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "نقدي" +#~ msgid "Reimbursed" +#~ msgstr "تسدد" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "يفحص" +#~ msgid "Processing" +#~ msgstr "يعالج" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "التحويل البنكي" +#~ msgid "80% Budget Warning" +#~ msgstr "تحذير بشأن الميزانية بنسبة 80%" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "بطاقة إئتمان" +#~ msgid "Budget Limit Reached" +#~ msgstr "تم الوصول إلى حد الميزانية" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "بطاقة الخصم" +#~ msgid "Info" +#~ msgstr "معلومات" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "شريط" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "بطاقة الشركة" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "تسدد" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "يعالج" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "رقم الفاتورة: %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "تحذير بشأن الميزانية بنسبة 80%" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "تاريخ الإصدار: %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "تم الوصول إلى حد الميزانية" +#~ msgid "Due Date: %(date)s" +#~ msgstr "تاريخ الاستحقاق: %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "معلومات" +#~ msgid "Quote For:" +#~ msgstr "اقتباس ل:" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "تفاصيل الاقتباس:" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "أغراض:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "المجموع:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "رقم الفاتورة: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "تاريخ الإصدار: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "تاريخ الاستحقاق: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "اقتباس ل:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "تفاصيل الاقتباس:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "أغراض:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "المجموع:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "الرجاء تسجيل الدخول للوصول إلى هذه الصفحة" +#~ msgid "Please log in to access this page" +#~ msgstr "الرجاء تسجيل الدخول للوصول إلى هذه الصفحة" diff --git a/translations/de/LC_MESSAGES/messages.po b/translations/de/LC_MESSAGES/messages.po index ca39d383..a4102c4d 100644 --- a/translations/de/LC_MESSAGES/messages.po +++ b/translations/de/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: de\n" @@ -14,26049 +14,19894 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 -msgid "Your session expired or the page was open too long. Please try again." -msgstr "Ihre Sitzung ist abgelaufen oder die Seite war zu lange geöffnet. Bitte versuchen Sie es erneut." - -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "Administratorzugriff erforderlich" - -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "Die Benutzererstellung ist im Demo-Modus deaktiviert." - -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "Benutzername ist erforderlich" - -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "Benutzer existiert bereits" - -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "Standard 'user' Rolle wurde nicht gefunden. Bitte führen Sie 'flask seed_permissions_cmd' aus." - -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte kein Benutzer erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "Benutzer „%(username)s“ erfolgreich erstellt" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "Benutzername existiert bereits" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Bitte wählen Sie einen Kunden aus, wenn Sie den Zugriff auf das Kundenportal aktivieren." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "Das Passwort muss mindestens 8 Zeichen lang sein." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "Passwörter stimmen nicht überein." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "Der Benutzer konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "Passwort für Benutzer \"%(username)s\" erfolgreich zurückgesetzt." - -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "Benutzer „%(username)s“ wurde erfolgreich aktualisiert" - -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "Der letzte Administrator kann nicht gelöscht werden" - -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "Benutzer mit vorhandenen Zeiteinträgen können nicht gelöscht werden" - -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "Der Benutzer konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "Benutzer „%(username)s“ wurde erfolgreich gelöscht" - -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "Telemetrie wurde aktiviert. Vielen Dank, dass Sie uns dabei geholfen haben, uns zu verbessern!" - -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "Detaillierte Analysen wurden deaktiviert. Anonyme Metriken bleiben aktiv." - -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "Ungültige gesperrte Kundenauswahl." - -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "Der ausgewählte gesperrte Kunde existiert nicht oder ist inaktiv." - -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "Modul '%(module)s' kann nicht deaktiviert werden, da es von folgenden Modulen verwendet wird: %(dependents)s" - -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "Modulsichtbarkeit konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Server logs." - -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "Modulsichtbarkeit erfolgreich aktualisiert" - -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "Ungültige Zeitzone: %(timezone)s" - -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "Nicht gültiges Muster für die Rechnungsnummer: %(reason)s" - -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "Die Einstellungen konnten aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Einstellungen erfolgreich aktualisiert" - -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "Ungültiger Code." - -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Fehler beim Speichern der Einstellungen" - -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "Ungültiges JSON-Format der Vorlage. Bitte versuchen Sie es erneut." - -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "Fehler: Vorlagen-JSON ist leer. Bitte versuchen Sie erneut zu speichern." - -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "Fehler: Vorlagen-JSON ist ungültig. Bitte versuchen Sie erneut zu speichern." - -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "Fehler: Vorlagen-JSON ist kein gültiges JSON. Bitte versuchen Sie erneut zu speichern." - -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "Das PDF-Layout konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "PDF-Layout erfolgreich aktualisiert" - -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "PDF-Layout gespeichert, aber die JSON-Überprüfung der Vorlage ist fehlgeschlagen. Bitte überprüfen Sie die Vorlage." - -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "Das PDF-Layout konnte aufgrund eines Datenbankfehlers nicht zurückgesetzt werden." - -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "PDF-Layout auf Standardeinstellungen zurückgesetzt" - -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "Ungültige Seitengröße" - -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "Vorlage für diese Seitengröße nicht gefunden" - -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "Keine Datei hochgeladen" - -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Keine Datei ausgewählt" - -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "Ungültiges JSON-Format der Vorlage. Eigenschaft 'page' fehlt." - -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "Vorlage konnte aufgrund eines Datenbankfehlers nicht importiert werden." - -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "Vorlage erfolgreich importiert" - -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "Ungültige JSON-Datei: %(error)s" - -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "Fehler beim Importieren der Vorlage: %(error)s" - -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "Rechnung nicht gefunden" - -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "Angebot nicht gefunden" - -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "Keine Logodatei ausgewählt" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "Ungültige Bilddatei." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "Das Logo konnte aufgrund eines Datenbankfehlers nicht gespeichert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "Firmenlogo erfolgreich hochgeladen! Sie können es oben im Abschnitt „Aktuelles Firmenlogo“ sehen. Es erscheint auf Rechnungen und PDF-Dokumenten." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "Ungültiger Dateityp. Zulässige Typen: PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "Das Logo konnte aufgrund eines Datenbankfehlers nicht entfernt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "Firmenlogo erfolgreich entfernt. Laden Sie bei Bedarf im Abschnitt unten ein neues Logo hoch." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "Kein Logo zum Entfernen" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "Sicherung fehlgeschlagen: Archiv nicht erstellt" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "Sicherung fehlgeschlagen: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Ungültiger Dateityp" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "Sicherungsdatei nicht gefunden" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "Sicherung „%(filename)s“ erfolgreich gelöscht" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "Sicherung konnte nicht gelöscht werden: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "Ungültiger Dateityp. Bitte wählen Sie ein .zip-Backup-Archiv aus." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "Sicherungsdatei nicht gefunden." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "Ungültiger Dateityp. Bitte laden Sie ein ZIP-Backup-Archiv hoch." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "Keine Sicherungsdatei bereitgestellt" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "Wiederherstellung gestartet. Auf dieser Seite können Sie den Fortschritt verfolgen." - -#: app/routes/admin.py:4362 -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC ist nicht aktiviert. Setzen Sie AUTH_METHOD auf \"oidc\", \"both\" oder \"all\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER ist nicht konfiguriert" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "✗ Aussteller-URL konnte nicht geparst werden: %(error)s" - -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "DNS-Auflösung mit mehreren Strategien wird getestet..." - -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "✓ DNS-Auflösung erfolgreich mit Strategie %(strategy)s: %(ip)s" - -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "✗ DNS-Auflösung fehlgeschlagen mit Strategie %(strategy)s: %(error)s" - -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "ℹ Docker-Umgebung erkannt – interne Dienstnamen sind möglicherweise verfügbar" - -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ Discovery-Dokument wurde erfolgreich von %(url)s abgerufen" - -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "✓ Verwendete DNS-Strategie: %(strategy)s" - -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ Erkennungsdokument konnte nicht abgerufen werden: %(error)s" - -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ Unerwarteter Fehler: %(error)s" - -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "✗ Discovery-Dokument konnte nicht abgerufen werden" - -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ OAuth-Client ist in der Anwendung registriert" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ OAuth-Client ist nicht registriert" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ Fehler beim Erstellen des OAuth-Clients: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s: %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ %(endpoint)s fehlen im Erkennungsdokument" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ Scope „%(scope)s“ wird vom Anbieter unterstützt" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ Bereich „%(scope)s“ wird möglicherweise nicht vom Anbieter unterstützt (unterstützt: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ Anbieter unterstützt Ansprüche: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ Der konfigurierte %(claim_type)s-Anspruch „%(claim_name)s“ wird unterstützt" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ Konfigurierter %(claim_type)s-Anspruch „%(claim_name)s“ nicht in der Liste der unterstützten Ansprüche (funktioniert möglicherweise noch)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "OIDC-Konfigurationstest abgeschlossen" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "Der Name der Vorlage ist erforderlich" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -msgid "HTML template content is required" -msgstr "HTML-Vorlageninhalt ist erforderlich" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "Eine Vorlage mit diesem Namen existiert bereits" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "Aufgrund eines Datenbankfehlers konnte keine E-Mail-Vorlage erstellt werden." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "E-Mail-Vorlage erfolgreich erstellt" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "Die E-Mail-Vorlage konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "E-Mail-Vorlage erfolgreich aktualisiert" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "Die Vorlage, die von Rechnungen oder wiederkehrenden Rechnungen verwendet wird, kann nicht gelöscht werden" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "Die E-Mail-Vorlage konnte aufgrund eines Datenbankfehlers nicht gelöscht werden." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "E-Mail-Vorlage „%(name)s“ erfolgreich gelöscht" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "Aufgabenname und Projekt sind erforderlich" - -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "Das ausgewählte Projekt existiert nicht oder ist inaktiv" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "Nachricht" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "Aufgabe \"%(name)s\" erfolgreich erstellt" - -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "Die Audit-Logs-Tabelle ist nicht vorhanden. Bitte führen Sie Folgendes aus: flask db upgrade" - -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "Sie müssen Ihr Passwort ändern, um fortzufahren." - -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "Administratorkonten müssen 2-Faktor-Authentifizierung aktivieren." - -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "Willkommen zurück, %(username)s!" - -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "Für diese Authentifizierungsmethode können Sie Ihr Passwort nicht zurücksetzen." - -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "Demo Modus: Passwort zurücksetzen ist deaktiviert." - -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "Wenn ein Konto mit Ihren Angaben übereinstimmt und E-Mail konfiguriert ist, erhalten Sie in Kürze einen Zurücksetzungslink." - -#: app/routes/auth.py:213 -msgid "Reset your TimeTracker password" -msgstr "Setzen Sie Ihr TimeTracker Passwort zurück" - -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" -"Für Ihr Konto wurde eine Passwort-Zurücksetzung angefordert.\n" -"\n" -"Verwenden Sie diesen Link, um ein neues Passwort festzulegen:\n" -"%(url)s\n" -"\n" -"Wenn Sie dies nicht angefordert haben, können Sie diese E-Mail ignorieren." - -#: app/routes/auth.py:246 -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Dieser Zurücksetzungslink ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen an." - -#: app/routes/auth.py:250 -msgid "Password reset is not available for this account." -msgstr "Passwort-Zurücksetzung ist für dieses Konto nicht verfügbar." - -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "Ihr Passwort wurde aktualisiert. Sie können sich nun einloggen." - -#: app/routes/auth.py:274 -msgid "Could not reset password due to a database error." -msgstr "Aufgrund eines Datenbankfehlers konnte das Passwort nicht festgelegt werden." - -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "Ungültiges Format für Benutzernamen" - -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "Nur das Demo-Konto kann verwendet werden. Bitte nutzen Sie die Anmeldedaten die unten angezeigt werden." - -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "Passwort ist erforderlich" - -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "Ungültiger Benutzername oder Passwort" - -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "Passwort ist erforderlich, um ein Konto zu erstellen." - -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "Ihr Konto konnte aufgrund eines Datenbankfehlers nicht erstellt werden. Bitte versuchen Sie es später noch einmal." - -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "Willkommen! Ihr Konto wurde erstellt." - -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Benutzer nicht gefunden. Bitte wenden Sie sich an einen Administrator." - -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "Ihre Kontorolle konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "Konto ist deaktiviert. Bitte wenden Sie sich an einen Administrator." - -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "Für Ihr Konto ist kein Passwort festgelegt. Bitte geben Sie ein Passwort ein, um eines festzulegen und sich anzumelden." - -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "Passwort konnte aufgrund eines Datenbankfehlers nicht gesetzt werden. Bitte versuchen Sie es erneut." - -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "Passwort wurde festgelegt. Sie sind jetzt eingeloggt." - -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "Unerwarteter Fehler beim Anmelden. Bitte versuchen Sie es erneut oder überprüfen Sie die Serverprotokolle." - -#: app/routes/auth.py:551 app/routes/auth.py:558 -msgid "Your login session expired. Please sign in again." -msgstr "Ihre Anmeldesitzung ist abgelaufen. Bitte melden Sie sich erneut an." - -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -msgid "Invalid authentication code." -msgstr "Ungültiger Authentifizierungscode." - -#: app/routes/auth.py:625 -msgid "Two-factor authentication enabled." -msgstr "Zwei-Faktor-Authentifizierung aktiviert." - -#: app/routes/auth.py:628 -msgid "Could not enable two-factor authentication due to a database error." -msgstr "Zwei-Faktor-Authentifizierung konnte aufgrund eines Datenbankfehlers nicht aktiviert werden." - -#: app/routes/auth.py:654 -msgid "Two-factor authentication disabled." -msgstr "Zwei-Faktor-Authentifizierung deaktiviert." - -#: app/routes/auth.py:657 -msgid "Could not disable two-factor authentication due to a database error." -msgstr "Zwei-Faktor-Authentifizierung konnte aufgrund eines Datenbankfehlers nicht deaktiviert werden." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "Auf Wiedersehen, %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "Ungültiger Avatar-Dateityp. Zulässig: PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "Avatar konnte nicht auf dem Server gespeichert werden." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Profil erfolgreich aktualisiert" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "Ihr Profil konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "Das Passwort kann für Ihr Konto hier nicht geändert werden." - -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "Neues Passwort ist erforderlich" - -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "Aktuelles Passwort ist erforderlich" - -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "Aktuelles Passwort ist falsch" - -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "Passwort erfolgreich geändert. Sie können jetzt fortfahren." - -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "Passwort konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar entfernt" - -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "Avatar konnte nicht entfernt werden." - -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "Demo-Modus: Nur das Demo-Konto kann verwendet werden. Bitte nutzen Sie die Anmeldedaten auf der Anmeldeseite." - -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "Verbindung zum Single-Sign-On-Anbieter fehlgeschlagen. Bitte wenden Sie sich an einen Administrator. Fehler: %(error)s" - -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "Verbindung zum Single-Sign-On-Anbieter nicht möglich. DNS-Auflösung schlägt möglicherweise fehl. Bitte wenden Sie sich an einen Administrator. Fehler: %(error)s" - -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "Single Sign-On ist noch nicht konfiguriert. Bitte wenden Sie sich an einen Administrator." - -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "Single Sign-On ist nicht konfiguriert." - -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "SSO fehlgeschlagen: verschlüsselte oder nicht unterstützte ID-Token. Deaktivieren Sie die ID-Token-Verschlüsselung bei Ihrem Anbieter (z. B. in Authentik das Verschlüsselungsschlüssel-Feld leer lassen)." - -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "SSO fehlgeschlagen. Wenn dies wiederholt auftritt, überprüfen Sie die Session-Cookie- und Proxy-Konfiguration." - -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "Authentifizierung fehlgeschlagen: Aussteller- oder Subjektanspruch fehlt. Bitte überprüfen Sie die OIDC-Konfiguration." - -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "Das Benutzerkonto ist nicht vorhanden und die Selbstregistrierung ist deaktiviert." - -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "Ihr Konto konnte aufgrund eines Datenbankfehlers nicht erstellt werden." - -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "Unerwarteter Fehler bei der SSO-Anmeldung. Bitte versuchen Sie es erneut oder wenden Sie sich an den Support." - -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "Sie haben keinen Zugriff auf dieses Projekt." - -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Für dieses Projekt ist kein Budget festgelegt." - -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Veranstaltung erfolgreich erstellt" - -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Ereignis erfolgreich aktualisiert" - -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "Sie sind nicht berechtigt, dieses Ereignis zu löschen." - -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "Ereignis konnte nicht gelöscht werden" - -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Ereignis erfolgreich gelöscht" - -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "Fehler beim Löschen des Ereignisses: %(error)s" - -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "Das Ereignis wurde erfolgreich verschoben" - -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "Die Größe des Ereignisses wurde erfolgreich geändert" - -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "Sie haben keine Berechtigung, dieses Ereignis anzusehen." - -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "Sie sind nicht berechtigt, dieses Ereignis zu bearbeiten." - -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "Das Kunden-Modul wurde vom Administrator deaktiviert." - -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "Der Notizinhalt darf nicht leer sein" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Notiz erfolgreich hinzugefügt" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Fehler beim Hinzufügen der Notiz" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Fehler beim Hinzufügen der Notiz: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "Hinweis gehört nicht zu diesem Kunden" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "Sie sind nicht berechtigt, diese Notiz zu bearbeiten" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Fehler beim Aktualisieren der Notiz" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Hinweis erfolgreich aktualisiert" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Fehler beim Aktualisieren des Hinweises: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "Sie sind nicht berechtigt, diese Notiz zu löschen" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Fehler beim Löschen der Notiz" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Notiz erfolgreich gelöscht" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "Fehler beim Löschen der Notiz: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 +#: app/__init__.py:509 msgid "Please log in to access the client portal." msgstr "Bitte melden Sie sich an, um auf das Kundenportal zuzugreifen." -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Zugriff verweigert" +#: app/__init__.py:1056 app/__init__.py:1088 +msgid "Your session expired or the page was open too long. Please try again." +msgstr "" +"Ihre Sitzung ist abgelaufen oder die Seite war zu lange geöffnet. Bitte " +"versuchen Sie es erneut." + +#~ msgid "Administrator access required" +#~ msgstr "Administratorzugriff erforderlich" + +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "Die Benutzererstellung ist im Demo-Modus deaktiviert." + +#~ msgid "Username is required" +#~ msgstr "Benutzername ist erforderlich" + +#~ msgid "User already exists" +#~ msgstr "Benutzer existiert bereits" + +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" +#~ "Standard 'user' Rolle wurde nicht " +#~ "gefunden. Bitte führen Sie 'flask " +#~ "seed_permissions_cmd' aus." + +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte kein" +#~ " Benutzer erstellt werden. Bitte überprüfen" +#~ " Sie die Serverprotokolle." + +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "Benutzer „%(username)s“ erfolgreich erstellt" + +#~ msgid "Username already exists" +#~ msgstr "Benutzername existiert bereits" + +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "" +#~ "Bitte wählen Sie einen Kunden aus, " +#~ "wenn Sie den Zugriff auf das " +#~ "Kundenportal aktivieren." + +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "Das Passwort muss mindestens 8 Zeichen lang sein." + +#~ msgid "Passwords do not match." +#~ msgstr "Passwörter stimmen nicht überein." + +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Der Benutzer konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "Passwort für Benutzer \"%(username)s\" erfolgreich zurückgesetzt." + +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "Benutzer „%(username)s“ wurde erfolgreich aktualisiert" + +#~ msgid "Cannot delete the last administrator" +#~ msgstr "Der letzte Administrator kann nicht gelöscht werden" + +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "Benutzer mit vorhandenen Zeiteinträgen können nicht gelöscht werden" + +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Der Benutzer konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "Benutzer „%(username)s“ wurde erfolgreich gelöscht" + +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "" +#~ "Telemetrie wurde aktiviert. Vielen Dank, " +#~ "dass Sie uns dabei geholfen haben, " +#~ "uns zu verbessern!" + +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" +#~ "Detaillierte Analysen wurden deaktiviert. " +#~ "Anonyme Metriken bleiben aktiv." + +#~ msgid "Invalid locked client selection." +#~ msgstr "Ungültige gesperrte Kundenauswahl." + +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "Der ausgewählte gesperrte Kunde existiert nicht oder ist inaktiv." + +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" +#~ "Modul '%(module)s' kann nicht deaktiviert " +#~ "werden, da es von folgenden Modulen " +#~ "verwendet wird: %(dependents)s" + +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Modulsichtbarkeit konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Server logs." + +#~ msgid "Module visibility updated successfully" +#~ msgstr "Modulsichtbarkeit erfolgreich aktualisiert" + +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "Ungültige Zeitzone: %(timezone)s" + +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "Nicht gültiges Muster für die Rechnungsnummer: %(reason)s" + +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Einstellungen konnten aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Settings updated successfully" +#~ msgstr "Einstellungen erfolgreich aktualisiert" + +#~ msgid "Invalid code." +#~ msgstr "Ungültiger Code." + +#~ msgid "Error saving settings" +#~ msgstr "Fehler beim Speichern der Einstellungen" + +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "Ungültiges JSON-Format der Vorlage. Bitte versuchen Sie es erneut." + +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" +#~ "Fehler: Vorlagen-JSON ist leer. Bitte" +#~ " versuchen Sie erneut zu speichern." + +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" +#~ "Fehler: Vorlagen-JSON ist ungültig. " +#~ "Bitte versuchen Sie erneut zu speichern." + +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" +#~ "Fehler: Vorlagen-JSON ist kein gültiges" +#~ " JSON. Bitte versuchen Sie erneut zu" +#~ " speichern." + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "" +#~ "Das PDF-Layout konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden." + +#~ msgid "PDF layout updated successfully" +#~ msgstr "PDF-Layout erfolgreich aktualisiert" + +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" +#~ "PDF-Layout gespeichert, aber die " +#~ "JSON-Überprüfung der Vorlage ist " +#~ "fehlgeschlagen. Bitte überprüfen Sie die " +#~ "Vorlage." + +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "" +#~ "Das PDF-Layout konnte aufgrund eines " +#~ "Datenbankfehlers nicht zurückgesetzt werden." + +#~ msgid "PDF layout reset to defaults" +#~ msgstr "PDF-Layout auf Standardeinstellungen zurückgesetzt" + +#~ msgid "Invalid page size" +#~ msgstr "Ungültige Seitengröße" + +#~ msgid "Template not found for this page size" +#~ msgstr "Vorlage für diese Seitengröße nicht gefunden" + +#~ msgid "No file uploaded" +#~ msgstr "Keine Datei hochgeladen" + +#~ msgid "No file selected" +#~ msgstr "Keine Datei ausgewählt" + +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "Ungültiges JSON-Format der Vorlage. Eigenschaft 'page' fehlt." + +#~ msgid "Could not import template due to a database error." +#~ msgstr "Vorlage konnte aufgrund eines Datenbankfehlers nicht importiert werden." + +#~ msgid "Template imported successfully" +#~ msgstr "Vorlage erfolgreich importiert" + +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "Ungültige JSON-Datei: %(error)s" + +#~ msgid "Error importing template: %(error)s" +#~ msgstr "Fehler beim Importieren der Vorlage: %(error)s" + +#~ msgid "Invoice not found" +#~ msgstr "Rechnung nicht gefunden" + +#~ msgid "Quote not found" +#~ msgstr "Angebot nicht gefunden" + +#~ msgid "No logo file selected" +#~ msgstr "Keine Logodatei ausgewählt" + +#~ msgid "Invalid image file." +#~ msgstr "Ungültige Bilddatei." + +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "Das Logo konnte aufgrund eines " +#~ "Datenbankfehlers nicht gespeichert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "Firmenlogo erfolgreich hochgeladen! Sie können" +#~ " es oben im Abschnitt „Aktuelles " +#~ "Firmenlogo“ sehen. Es erscheint auf " +#~ "Rechnungen und PDF-Dokumenten." + +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "Ungültiger Dateityp. Zulässige Typen: PNG, JPG, JPEG, GIF, SVG, WEBP" + +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Das Logo konnte aufgrund eines " +#~ "Datenbankfehlers nicht entfernt werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "Firmenlogo erfolgreich entfernt. Laden Sie " +#~ "bei Bedarf im Abschnitt unten ein " +#~ "neues Logo hoch." + +#~ msgid "No logo to remove" +#~ msgstr "Kein Logo zum Entfernen" + +#~ msgid "Backup failed: archive not created" +#~ msgstr "Sicherung fehlgeschlagen: Archiv nicht erstellt" + +#~ msgid "Backup failed: %(error)s" +#~ msgstr "Sicherung fehlgeschlagen: %(error)s" + +#~ msgid "Invalid file type" +#~ msgstr "Ungültiger Dateityp" + +#~ msgid "Backup file not found" +#~ msgstr "Sicherungsdatei nicht gefunden" + +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "Sicherung „%(filename)s“ erfolgreich gelöscht" + +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "Sicherung konnte nicht gelöscht werden: %(error)s" + +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "Ungültiger Dateityp. Bitte wählen Sie ein .zip-Backup-Archiv aus." + +#~ msgid "Backup file not found." +#~ msgstr "Sicherungsdatei nicht gefunden." + +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "Ungültiger Dateityp. Bitte laden Sie ein ZIP-Backup-Archiv hoch." + +#~ msgid "No backup file provided" +#~ msgstr "Keine Sicherungsdatei bereitgestellt" + +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "" +#~ "Wiederherstellung gestartet. Auf dieser Seite" +#~ " können Sie den Fortschritt verfolgen." + +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "" +#~ "OIDC ist nicht aktiviert. Setzen Sie " +#~ "AUTH_METHOD auf \"oidc\", \"both\" oder " +#~ "\"all\"." + +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER ist nicht konfiguriert" + +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "✗ Aussteller-URL konnte nicht geparst werden: %(error)s" + +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "DNS-Auflösung mit mehreren Strategien wird getestet..." + +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "✓ DNS-Auflösung erfolgreich mit Strategie %(strategy)s: %(ip)s" + +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "✗ DNS-Auflösung fehlgeschlagen mit Strategie %(strategy)s: %(error)s" + +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" +#~ "ℹ Docker-Umgebung erkannt – interne " +#~ "Dienstnamen sind möglicherweise verfügbar" + +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ Discovery-Dokument wurde erfolgreich von %(url)s abgerufen" + +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "✓ Verwendete DNS-Strategie: %(strategy)s" + +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ Erkennungsdokument konnte nicht abgerufen werden: %(error)s" + +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ Unerwarteter Fehler: %(error)s" + +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "✗ Discovery-Dokument konnte nicht abgerufen werden" + +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ OAuth-Client ist in der Anwendung registriert" + +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ OAuth-Client ist nicht registriert" + +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ Fehler beim Erstellen des OAuth-Clients: %(error)s" + +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s: %(url)s" + +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ %(endpoint)s fehlen im Erkennungsdokument" + +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ Scope „%(scope)s“ wird vom Anbieter unterstützt" + +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ Bereich „%(scope)s“ wird möglicherweise " +#~ "nicht vom Anbieter unterstützt (unterstützt:" +#~ " %(supported)s)" + +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ Anbieter unterstützt Ansprüche: %(claims)s" + +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "" +#~ "✓ Der konfigurierte %(claim_type)s-Anspruch " +#~ "„%(claim_name)s“ wird unterstützt" + +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ Konfigurierter %(claim_type)s-Anspruch " +#~ "„%(claim_name)s“ nicht in der Liste der" +#~ " unterstützten Ansprüche (funktioniert " +#~ "möglicherweise noch)" + +#~ msgid "OIDC configuration test completed" +#~ msgstr "OIDC-Konfigurationstest abgeschlossen" + +#~ msgid "Template name is required" +#~ msgstr "Der Name der Vorlage ist erforderlich" + +#~ msgid "HTML template content is required" +#~ msgstr "HTML-Vorlageninhalt ist erforderlich" + +#~ msgid "A template with this name already exists" +#~ msgstr "Eine Vorlage mit diesem Namen existiert bereits" + +#~ msgid "Could not create email template due to a database error." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte keine" +#~ " E-Mail-Vorlage erstellt werden." + +#~ msgid "Email template created successfully" +#~ msgstr "E-Mail-Vorlage erfolgreich erstellt" + +#~ msgid "Could not update email template due to a database error." +#~ msgstr "" +#~ "Die E-Mail-Vorlage konnte aufgrund eines" +#~ " Datenbankfehlers nicht aktualisiert werden." + +#~ msgid "Email template updated successfully" +#~ msgstr "E-Mail-Vorlage erfolgreich aktualisiert" + +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" +#~ "Die Vorlage, die von Rechnungen oder " +#~ "wiederkehrenden Rechnungen verwendet wird, " +#~ "kann nicht gelöscht werden" + +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "" +#~ "Die E-Mail-Vorlage konnte aufgrund eines" +#~ " Datenbankfehlers nicht gelöscht werden." + +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "E-Mail-Vorlage „%(name)s“ erfolgreich gelöscht" + +#~ msgid "Task name and project are required" +#~ msgstr "Aufgabenname und Projekt sind erforderlich" + +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "Das ausgewählte Projekt existiert nicht oder ist inaktiv" + +#~ msgid "message" +#~ msgstr "Nachricht" + +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "Aufgabe \"%(name)s\" erfolgreich erstellt" + +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" +#~ "Die Audit-Logs-Tabelle ist nicht " +#~ "vorhanden. Bitte führen Sie Folgendes " +#~ "aus: flask db upgrade" + +#~ msgid "You must change your password before continuing." +#~ msgstr "Sie müssen Ihr Passwort ändern, um fortzufahren." + +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "Administratorkonten müssen 2-Faktor-Authentifizierung aktivieren." + +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "Willkommen zurück, %(username)s!" + +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" +#~ "Für diese Authentifizierungsmethode können Sie" +#~ " Ihr Passwort nicht zurücksetzen." + +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "Demo Modus: Passwort zurücksetzen ist deaktiviert." + +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" +#~ "Wenn ein Konto mit Ihren Angaben " +#~ "übereinstimmt und E-Mail konfiguriert ist, " +#~ "erhalten Sie in Kürze einen " +#~ "Zurücksetzungslink." + +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Setzen Sie Ihr TimeTracker Passwort zurück" + +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" +#~ "Für Ihr Konto wurde eine Passwort-Zurücksetzung angefordert.\n" +#~ "\n" +#~ "Verwenden Sie diesen Link, um ein neues Passwort festzulegen:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "Wenn Sie dies nicht angefordert haben," +#~ " können Sie diese E-Mail ignorieren." + +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "" +#~ "Dieser Zurücksetzungslink ist ungültig oder" +#~ " abgelaufen. Bitte fordern Sie einen " +#~ "neuen an." + +#~ msgid "Password reset is not available for this account." +#~ msgstr "Passwort-Zurücksetzung ist für dieses Konto nicht verfügbar." + +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "Ihr Passwort wurde aktualisiert. Sie können sich nun einloggen." + +#~ msgid "Could not reset password due to a database error." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte das " +#~ "Passwort nicht festgelegt werden." + +#~ msgid "Invalid username format" +#~ msgstr "Ungültiges Format für Benutzernamen" + +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" +#~ "Nur das Demo-Konto kann verwendet " +#~ "werden. Bitte nutzen Sie die " +#~ "Anmeldedaten die unten angezeigt werden." + +#~ msgid "Password is required" +#~ msgstr "Passwort ist erforderlich" + +#~ msgid "Invalid username or password" +#~ msgstr "Ungültiger Benutzername oder Passwort" + +#~ msgid "Password is required to create an account." +#~ msgstr "Passwort ist erforderlich, um ein Konto zu erstellen." + +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "Ihr Konto konnte aufgrund eines " +#~ "Datenbankfehlers nicht erstellt werden. Bitte" +#~ " versuchen Sie es später noch einmal." + +#~ msgid "Welcome! Your account has been created." +#~ msgstr "Willkommen! Ihr Konto wurde erstellt." + +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Benutzer nicht gefunden. Bitte wenden Sie sich an einen Administrator." + +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "" +#~ "Ihre Kontorolle konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden." + +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "Konto ist deaktiviert. Bitte wenden Sie sich an einen Administrator." + +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" +#~ "Für Ihr Konto ist kein Passwort " +#~ "festgelegt. Bitte geben Sie ein Passwort" +#~ " ein, um eines festzulegen und sich" +#~ " anzumelden." + +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" +#~ "Passwort konnte aufgrund eines " +#~ "Datenbankfehlers nicht gesetzt werden. Bitte" +#~ " versuchen Sie es erneut." + +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "Passwort wurde festgelegt. Sie sind jetzt eingeloggt." + +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" +#~ "Unerwarteter Fehler beim Anmelden. Bitte " +#~ "versuchen Sie es erneut oder überprüfen" +#~ " Sie die Serverprotokolle." + +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "Ihre Anmeldesitzung ist abgelaufen. Bitte melden Sie sich erneut an." + +#~ msgid "Invalid authentication code." +#~ msgstr "Ungültiger Authentifizierungscode." + +#~ msgid "Two-factor authentication enabled." +#~ msgstr "Zwei-Faktor-Authentifizierung aktiviert." + +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "" +#~ "Zwei-Faktor-Authentifizierung konnte aufgrund" +#~ " eines Datenbankfehlers nicht aktiviert " +#~ "werden." + +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Zwei-Faktor-Authentifizierung deaktiviert." + +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "" +#~ "Zwei-Faktor-Authentifizierung konnte aufgrund" +#~ " eines Datenbankfehlers nicht deaktiviert " +#~ "werden." + +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "Auf Wiedersehen, %(username)s!" + +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "Ungültiger Avatar-Dateityp. Zulässig: PNG, JPG, JPEG, GIF, WEBP" + +#~ msgid "Failed to save avatar on server." +#~ msgstr "Avatar konnte nicht auf dem Server gespeichert werden." + +#~ msgid "Profile updated successfully" +#~ msgstr "Profil erfolgreich aktualisiert" + +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "" +#~ "Ihr Profil konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden." + +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "Das Passwort kann für Ihr Konto hier nicht geändert werden." + +#~ msgid "New password is required" +#~ msgstr "Neues Passwort ist erforderlich" + +#~ msgid "Current password is required" +#~ msgstr "Aktuelles Passwort ist erforderlich" + +#~ msgid "Current password is incorrect" +#~ msgstr "Aktuelles Passwort ist falsch" + +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "Passwort erfolgreich geändert. Sie können jetzt fortfahren." + +#~ msgid "Could not update password due to a database error." +#~ msgstr "" +#~ "Passwort konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden." + +#~ msgid "Avatar removed" +#~ msgstr "Avatar entfernt" + +#~ msgid "Failed to remove avatar." +#~ msgstr "Avatar konnte nicht entfernt werden." + +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" +#~ "Demo-Modus: Nur das Demo-Konto " +#~ "kann verwendet werden. Bitte nutzen Sie" +#~ " die Anmeldedaten auf der Anmeldeseite." + +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" +#~ "Verbindung zum Single-Sign-On-Anbieter" +#~ " fehlgeschlagen. Bitte wenden Sie sich " +#~ "an einen Administrator. Fehler: %(error)s" + +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" +#~ "Verbindung zum Single-Sign-On-Anbieter" +#~ " nicht möglich. DNS-Auflösung schlägt " +#~ "möglicherweise fehl. Bitte wenden Sie " +#~ "sich an einen Administrator. Fehler: " +#~ "%(error)s" + +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" +#~ "Single Sign-On ist noch nicht " +#~ "konfiguriert. Bitte wenden Sie sich an" +#~ " einen Administrator." + +#~ msgid "Single Sign-On is not configured." +#~ msgstr "Single Sign-On ist nicht konfiguriert." + +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" +#~ "SSO fehlgeschlagen: verschlüsselte oder nicht" +#~ " unterstützte ID-Token. Deaktivieren Sie" +#~ " die ID-Token-Verschlüsselung bei " +#~ "Ihrem Anbieter (z. B. in Authentik " +#~ "das Verschlüsselungsschlüssel-Feld leer " +#~ "lassen)." + +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" +#~ "SSO fehlgeschlagen. Wenn dies wiederholt " +#~ "auftritt, überprüfen Sie die Session-" +#~ "Cookie- und Proxy-Konfiguration." + +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "Authentifizierung fehlgeschlagen: Aussteller- oder" +#~ " Subjektanspruch fehlt. Bitte überprüfen " +#~ "Sie die OIDC-Konfiguration." + +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "" +#~ "Das Benutzerkonto ist nicht vorhanden " +#~ "und die Selbstregistrierung ist deaktiviert." + +#~ msgid "Could not create your account due to a database error." +#~ msgstr "Ihr Konto konnte aufgrund eines Datenbankfehlers nicht erstellt werden." + +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Unerwarteter Fehler bei der SSO-" +#~ "Anmeldung. Bitte versuchen Sie es erneut" +#~ " oder wenden Sie sich an den " +#~ "Support." + +#~ msgid "You do not have access to this project." +#~ msgstr "Sie haben keinen Zugriff auf dieses Projekt." + +#~ msgid "This project does not have a budget set." +#~ msgstr "Für dieses Projekt ist kein Budget festgelegt." + +#~ msgid "Event created successfully" +#~ msgstr "Veranstaltung erfolgreich erstellt" + +#~ msgid "Event updated successfully" +#~ msgstr "Ereignis erfolgreich aktualisiert" + +#~ msgid "You do not have permission to delete this event." +#~ msgstr "Sie sind nicht berechtigt, dieses Ereignis zu löschen." + +#~ msgid "Failed to delete event" +#~ msgstr "Ereignis konnte nicht gelöscht werden" + +#~ msgid "Event deleted successfully" +#~ msgstr "Ereignis erfolgreich gelöscht" + +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "Fehler beim Löschen des Ereignisses: %(error)s" + +#~ msgid "Event moved successfully" +#~ msgstr "Das Ereignis wurde erfolgreich verschoben" + +#~ msgid "Event resized successfully" +#~ msgstr "Die Größe des Ereignisses wurde erfolgreich geändert" + +#~ msgid "You do not have permission to view this event." +#~ msgstr "Sie haben keine Berechtigung, dieses Ereignis anzusehen." + +#~ msgid "You do not have permission to edit this event." +#~ msgstr "Sie sind nicht berechtigt, dieses Ereignis zu bearbeiten." + +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "Das Kunden-Modul wurde vom Administrator deaktiviert." + +#~ msgid "Note content cannot be empty" +#~ msgstr "Der Notizinhalt darf nicht leer sein" + +#~ msgid "Note added successfully" +#~ msgstr "Notiz erfolgreich hinzugefügt" + +#~ msgid "Error adding note" +#~ msgstr "Fehler beim Hinzufügen der Notiz" + +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Fehler beim Hinzufügen der Notiz: %(error)s" + +#~ msgid "Note does not belong to this client" +#~ msgstr "Hinweis gehört nicht zu diesem Kunden" + +#~ msgid "You do not have permission to edit this note" +#~ msgstr "Sie sind nicht berechtigt, diese Notiz zu bearbeiten" + +#~ msgid "Error updating note" +#~ msgstr "Fehler beim Aktualisieren der Notiz" + +#~ msgid "Note updated successfully" +#~ msgstr "Hinweis erfolgreich aktualisiert" + +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Hinweises: %(error)s" + +#~ msgid "You do not have permission to delete this note" +#~ msgstr "Sie sind nicht berechtigt, diese Notiz zu löschen" + +#~ msgid "Error deleting note" +#~ msgstr "Fehler beim Löschen der Notiz" + +#~ msgid "Note deleted successfully" +#~ msgstr "Notiz erfolgreich gelöscht" + +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "Fehler beim Löschen der Notiz: %(error)s" + +#~ msgid "Access Denied" +#~ msgstr "Zugriff verweigert" + +#~ msgid "403 Forbidden" +#~ msgstr "403 Verboten" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" +#~ "Sie haben keine Berechtigung, auf diese" +#~ " Ressource zuzugreifen. Der Kundenportal-" +#~ "Zugang ist möglicherweise für Ihr Konto" +#~ " nicht aktiviert." + +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "Für Ihr Konto ist möglicherweise kein Kundenportal-Zugang aktiviert" + +#~ msgid "Your account may be inactive" +#~ msgstr "Ihr Konto ist möglicherweise inaktiv" + +#~ msgid "You may not be assigned to a client" +#~ msgstr "Sie sind möglicherweise keinem Kunden zugeordnet" + +#~ msgid "Page Not Found" +#~ msgstr "Seite nicht gefunden" + +#~ msgid "404 Not Found" +#~ msgstr "404 Nicht gefunden" + +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "Die gesuchte Seite existiert nicht oder wurde verschoben." + +#~ msgid "Server Error" +#~ msgstr "Serverfehler" + +#~ msgid "500 Internal Server Error" +#~ msgstr "500 Interner Serverfehler" + +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" +#~ "Ein unerwarteter Fehler ist aufgetreten. " +#~ "Bitte versuchen Sie es später erneut " +#~ "oder wenden Sie sich an den " +#~ "Support, wenn das Problem anhält." + +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "Der Zugriff auf das Kundenportal ist für Ihr Konto nicht aktiviert." + +#~ msgid "Your client account is inactive." +#~ msgstr "Ihr Kundenkonto ist inaktiv." + +#~ msgid "Username and password are required." +#~ msgstr "Benutzername und Passwort sind erforderlich." + +#~ msgid "Invalid username or password." +#~ msgstr "Ungültiger Benutzername oder Passwort." + +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "Willkommen, %(client_name)s!" + +#~ msgid "You have been logged out." +#~ msgstr "Sie wurden abgemeldet." + +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Ungültiges oder fehlendes Passwort-Setup-Token." + +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "" +#~ "Ungültiges oder abgelaufenes Passwort-" +#~ "Setup-Token. Bitte fordern Sie ein " +#~ "neues an." + +#~ msgid "Password is required." +#~ msgstr "Passwort ist erforderlich." + +#~ msgid "Could not set password due to a database error." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte das " +#~ "Passwort nicht festgelegt werden." + +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "Passwort erfolgreich gesetzt! Sie können sich nun beim Portal anmelden." + +#~ msgid "Unable to load client portal data." +#~ msgstr "Kundenportaldaten können nicht geladen werden." + +#~ msgid "widget_ids must be a list" +#~ msgstr "widget_ids muss eine Liste sein" + +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "Ungültige Widget-ID(s): %(ids)s" + +#~ msgid "widget_order must be a list" +#~ msgstr "widget_order muss eine Liste sein" + +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "Ungültige Widget-ID(s) in Reihenfolge: %(ids)s" + +#~ msgid "Invoice not found." +#~ msgstr "Rechnung nicht gefunden." + +#~ msgid "Quote not found." +#~ msgstr "Zitat nicht gefunden." + +#~ msgid "Issue reporting is not available." +#~ msgstr "Fehlermeldung ist nicht verfügbar." + +#~ msgid "Title is required." +#~ msgstr "Titel ist erforderlich." + +#~ msgid "Invalid project selected." +#~ msgstr "Ungültiges Projekt ausgewählt." + +#~ msgid "Could not create issue due to a database error." +#~ msgstr "Problem konnte aufgrund eines Datenbankfehlers nicht erstellt werden." + +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "Problem erfolgreich gemeldet. Wir werden es in Kürze prüfen." + +#~ msgid "Issue not found." +#~ msgstr "Problem nicht gefunden." + +#~ msgid "Approval not found." +#~ msgstr "Genehmigung nicht gefunden." + +#~ msgid "No contact found for approval." +#~ msgstr "Kein Kontakt für die Genehmigung gefunden." + +#~ msgid "Time entry approved successfully." +#~ msgstr "Zeiteintrag erfolgreich genehmigt." + +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "Fehler beim Genehmigen des Zeiteintrags: %(error)s" + +#~ msgid "Rejection reason is required." +#~ msgstr "Ablehnungsgrund ist erforderlich." + +#~ msgid "Time entry rejected." +#~ msgstr "Zeiteintrag abgelehnt." + +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "Fehler beim Ablehnen des Zeiteintrags: %(error)s" + +#~ msgid "This quote cannot be accepted." +#~ msgstr "Dieses Angebot kann nicht akzeptiert werden." + +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" +#~ "Angebot erfolgreich akzeptiert. Wir werden " +#~ "uns in Kürze bei Ihnen melden." + +#~ msgid "This quote cannot be rejected." +#~ msgstr "Dieses Angebot kann nicht abgelehnt werden." + +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "Angebot abgelehnt. Wir schätzen Ihr Feedback." + +#~ msgid "This invoice is already paid." +#~ msgstr "Diese Rechnung ist bereits bezahlt." + +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" +#~ "Online-Zahlung ist derzeit nicht " +#~ "verfügbar. Bitte kontaktieren Sie uns " +#~ "für Zahlungsanweisungen." + +#~ msgid "Payment gateway not yet supported." +#~ msgstr "Zahlungsanbieter wird noch nicht unterstützt." + +#~ msgid "Project not found." +#~ msgstr "Projekt nicht gefunden." + +#~ msgid "Comment cannot be empty." +#~ msgstr "Kommentar darf nicht leer sein." + +#~ msgid "No contact found for commenting." +#~ msgstr "Kein Kontakt für das Kommentieren gefunden." + +#~ msgid "Comment added successfully." +#~ msgstr "Kommentar erfolgreich hinzugefügt." + +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "%(count)d Benachrichtigungen als gelesen markiert." + +#~ msgid "Attachment not found or access denied." +#~ msgstr "Anhang nicht gefunden oder Zugriff verweigert." + +#~ msgid "Unable to load report data." +#~ msgstr "Berichtsdaten konnten nicht geladen werden." + +#~ msgid "Client Report" +#~ msgstr "Kundenbericht" + +#~ msgid "Last %(days)s days" +#~ msgstr "Letzte %(days)s Tage" + +#~ msgid "Summary" +#~ msgstr "Zusammenfassung" + +#~ msgid "Total Hours" +#~ msgstr "Gesamtstunden" + +#~ msgid "Total Invoiced" +#~ msgstr "Gesamt fakturiert" + +#~ msgid "Paid" +#~ msgstr "Bezahlt" + +#~ msgid "Outstanding" +#~ msgstr "Hervorragend" + +#~ msgid "Hours by Project" +#~ msgstr "Stunden nach Projekt" + +#~ msgid "Project" +#~ msgstr "Projekt" + +#~ msgid "Hours" +#~ msgstr "Std" + +#~ msgid "Billable Hours" +#~ msgstr "Abrechnungsfähige Stunden" + +#~ msgid "Time by Date" +#~ msgstr "Zeit nach Datum" + +#~ msgid "Date" +#~ msgstr "Datum" + +#~ msgid "Access denied" +#~ msgstr "Zugriff verweigert" + +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "Datei zu groß. Maximal 5 MB." + +#~ msgid "Portal customization updated successfully" +#~ msgstr "Portal-Anpassung erfolgreich aktualisiert" + +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "Suchanfrage ist zu lang. Maximal 200 Zeichen." + +#~ msgid "You do not have permission to create clients" +#~ msgstr "Sie haben keine Berechtigung zum Erstellen von Kunden" + +#~ msgid "Client name is required" +#~ msgstr "Der Name des Kunden ist erforderlich" + +#~ msgid "A client with this name already exists" +#~ msgstr "Ein Client mit diesem Namen existiert bereits" + +#~ msgid "Invalid email address" +#~ msgstr "Ungültige E-Mail-Adresse" + +#~ msgid "Invalid hourly rate format" +#~ msgstr "Ungültiges Stundensatzformat" + +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "Prepaid-Stunden müssen eine positive Zahl sein." + +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "Der Tag der Prepaid-Rücksetzung muss zwischen 1 und 28 liegen." + +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "Benutzerdefiniertes Feld '%(field)s' ist erforderlich" + +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Der Client konnte aufgrund eines " +#~ "Datenbankfehlers nicht erstellt werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "You do not have access to this client." +#~ msgstr "Sie haben keinen Zugriff auf diesen Kunden." + +#~ msgid "You do not have permission to edit clients" +#~ msgstr "Sie haben keine Berechtigung zum Bearbeiten von Clients" + +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "" +#~ "Beim Aktivieren des Portalzugriffs ist " +#~ "ein Portal-Benutzername erforderlich." + +#~ msgid "This portal username is already in use by another client." +#~ msgstr "" +#~ "Dieser Portal-Benutzername wird bereits " +#~ "von einem anderen Kunden verwendet." + +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Der Client konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "Sie sind nicht berechtigt, Portal-E-Mails zu senden" + +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "Das Kundenportal ist für diesen Kunden nicht aktiviert." + +#~ msgid "Portal username is not set for this client." +#~ msgstr "Für diesen Client ist kein Portal-Benutzername festgelegt." + +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "Die E-Mail-Adresse des Kunden ist " +#~ "nicht festgelegt. E-Mail zur " +#~ "Passworteinrichtung kann nicht gesendet " +#~ "werden." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte kein" +#~ " Passwort-Setup-Token generiert werden." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "E-Mail zur Passworteinrichtung wurde erfolgreich an %(email)s gesendet" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "Der E-Mail-Server ist nicht " +#~ "konfiguriert. Bitte konfigurieren Sie die " +#~ "E-Mail-Einstellungen unter Admin → E" +#~ "-Mail-Konfiguration oder legen Sie die " +#~ "Umgebungsvariable MAIL_SERVER fest." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "Das Senden der E-Mail zur " +#~ "Passworteinrichtung ist fehlgeschlagen. Weitere " +#~ "Informationen finden Sie in der E" +#~ "-Mail-Konfiguration und in den " +#~ "Serverprotokollen." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "Beim Senden der E-Mail ist ein Fehler aufgetreten: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "Sie haben keine Berechtigung zum Archivieren von Clients" + +#~ msgid "Client is already inactive" +#~ msgstr "Der Client ist bereits inaktiv" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "Sie sind nicht berechtigt, Clients zu aktivieren" + +#~ msgid "Client is already active" +#~ msgstr "Der Kunde ist bereits aktiv" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "Sie sind nicht berechtigt, Clients zu löschen" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" +#~ "Kunde mit vorhandenen Projekten kann " +#~ "nicht gelöscht werden. Bitte löschen Sie" +#~ " zuerst alle Projekte." + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" +#~ "Kunde mit vorhandenen Rechnungen kann " +#~ "nicht gelöscht werden. Bitte löschen Sie" +#~ " zuerst alle Rechnungen." + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Der Client konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "No clients selected for deletion" +#~ msgstr "Keine Kunden zum Löschen ausgewählt" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Clients konnten aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "No clients were deleted" +#~ msgstr "Es wurden keine Kunden gelöscht" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "Sie sind nicht berechtigt, den Kundenstatus zu ändern" + +#~ msgid "No clients selected" +#~ msgstr "Keine Kunden ausgewählt" + +#~ msgid "Invalid status" +#~ msgstr "Ungültiger Status" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Der Clientstatus konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "No clients were updated" +#~ msgstr "Es wurden keine Clients aktualisiert" + +#~ msgid "No file provided" +#~ msgstr "Keine Datei bereitgestellt" + +#~ msgid "File type not allowed" +#~ msgstr "Dateityp nicht zulässig" + +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "Die Dateigröße überschreitet die maximal zulässige Größe (10 MB)." + +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Der Anhang konnte aufgrund eines " +#~ "Datenbankfehlers nicht hochgeladen werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" +#~ "Die Anhänge-Funktion erfordert eine " +#~ "Datenbankmigration. Bitte führen Sie aus: " +#~ "flask db upgrade" + +#~ msgid "Attachment uploaded successfully" +#~ msgstr "Anhang erfolgreich hochgeladen" + +#~ msgid "File not found" +#~ msgstr "Datei nicht gefunden" + +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Der Anhang konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Attachment deleted successfully" +#~ msgstr "Anhang erfolgreich gelöscht" + +#~ msgid "Comment content cannot be empty" +#~ msgstr "Der Kommentarinhalt darf nicht leer sein" + +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "" +#~ "Der Kommentar muss mit einem Projekt," +#~ " einer Aufgabe oder einem Angebot " +#~ "verknüpft sein" + +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "Der Kommentar kann nicht mehreren Zielen zugeordnet werden" + +#~ msgid "Invalid parent comment" +#~ msgstr "Ungültiger übergeordneter Kommentar" + +#~ msgid "Comment added successfully" +#~ msgstr "Kommentar erfolgreich hinzugefügt" + +#~ msgid "Error adding comment" +#~ msgstr "Fehler beim Hinzufügen des Kommentars" + +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Fehler beim Hinzufügen des Kommentars: %(error)s" + +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "Sie sind nicht berechtigt, diesen Kommentar zu bearbeiten" + +#~ msgid "Comment updated successfully" +#~ msgstr "Kommentar erfolgreich aktualisiert" + +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Kommentars: %(error)s" + +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "Sie haben keine Berechtigung, diesen Kommentar zu löschen" + +#~ msgid "Comment deleted successfully" +#~ msgstr "Kommentar erfolgreich gelöscht" + +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Fehler beim Löschen des Kommentars: %(error)s" + +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "Sie haben keine Berechtigung, Anhänge zu diesem Kommentar hinzuzufügen" + +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "Fehler beim Hochladen des Anhangs: %(error)s" + +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "Sie sind nicht berechtigt, diesen Anhang zu löschen" + +#~ msgid "Error deleting attachment" +#~ msgstr "Fehler beim Löschen des Anhangs" + +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "Fehler beim Löschen des Anhangs: %(error)s" + +#~ msgid "Contact created successfully" +#~ msgstr "Kontakt erfolgreich erstellt" + +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Fehler beim Erstellen des Kontakts: %(error)s" + +#~ msgid "Contact updated successfully" +#~ msgstr "Kontakt erfolgreich aktualisiert" + +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Kontakts: %(error)s" + +#~ msgid "Contact deleted successfully" +#~ msgstr "Kontakt erfolgreich gelöscht" + +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "Fehler beim Löschen des Kontakts: %(error)s" + +#~ msgid "Contact set as primary" +#~ msgstr "Kontakt als primär festgelegt" + +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "Fehler beim Festlegen des primären Kontakts: %(error)s" + +#~ msgid "Communication recorded successfully" +#~ msgstr "Kommunikation erfolgreich aufgezeichnet" + +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Fehler bei der Aufzeichnung der Kommunikation: %(error)s" + +#~ msgid "Field key is required" +#~ msgstr "Feldschlüssel ist erforderlich" + +#~ msgid "Label is required" +#~ msgstr "Etikett ist erforderlich" + +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "Feldschlüssel darf nur Buchstaben, Zahlen und Unterstriche enthalten" + +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" +#~ "Eine benutzerdefinierte Felddefinition mit " +#~ "diesem Schlüssel existiert bereits" + +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" +#~ "Benutzerdefinierte Felddefinition konnte aufgrund" +#~ " eines Datenbankfehlers nicht erstellt " +#~ "werden." + +#~ msgid "Custom field definition created successfully" +#~ msgstr "Benutzerdefinierte Felddefinition erfolgreich erstellt" + +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" +#~ "Benutzerdefinierte Felddefinition konnte aufgrund" +#~ " eines Datenbankfehlers nicht aktualisiert " +#~ "werden." + +#~ msgid "Custom field definition updated successfully" +#~ msgstr "Benutzerdefinierte Felddefinition erfolgreich aktualisiert" + +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" +#~ "Benutzerdefiniertes Feld konnte aufgrund eines" +#~ " Datenbankfehlers nicht von Kunden entfernt" +#~ " werden." + +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" +#~ "Benutzerdefinierte Felddefinition konnte aufgrund" +#~ " eines Datenbankfehlers nicht gelöscht " +#~ "werden." + +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" +#~ "Benutzerdefinierte Felddefinition erfolgreich " +#~ "gelöscht. Das Feld wurde von %(count)d" +#~ " Kunde(n) entfernt." + +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "Benutzerdefinierte Felddefinition erfolgreich gelöscht" + +#~ msgid "You do not have permission to edit this report." +#~ msgstr "Sie haben keine Berechtigung, diesen Bericht zu bearbeiten." + +#~ msgid "Report %(action)s successfully" +#~ msgstr "Bericht erfolgreich %(action)s" + +#~ msgid "You do not have permission to view this report." +#~ msgstr "Sie haben keine Berechtigung, diesen Bericht anzuzeigen." + +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "Sie haben keine Berechtigung, diese Berichtsansicht zu löschen." + +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" +#~ "Berichtsansicht kann nicht gelöscht werden:" +#~ " Sie wird in %(count)d geplantem/geplanten" +#~ " Bericht(en) verwendet." + +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "Berichtsansicht „%(name)s“ erfolgreich gelöscht." + +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" +#~ "Berichtsansicht konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden" + +#~ msgid "Invalid deal value" +#~ msgstr "Ungültiger Dealwert" + +#~ msgid "Deal created successfully" +#~ msgstr "Deal erfolgreich erstellt" + +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Fehler beim Erstellen des Deals: %(error)s" + +#~ msgid "Deal updated successfully" +#~ msgstr "Deal erfolgreich aktualisiert" + +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Deals: %(error)s" + +#~ msgid "Deal closed as won" +#~ msgstr "Der Deal wurde als gewonnen abgeschlossen" + +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Fehler beim Abschluss des Geschäfts: %(error)s" + +#~ msgid "Deal closed as lost" +#~ msgstr "Deal als verloren abgeschlossen" + +#~ msgid "Activity recorded successfully" +#~ msgstr "Aktivität erfolgreich aufgezeichnet" + +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Fehler bei der Aufzeichnungsaktivität: %(error)s" + +#~ msgid "Category name is required" +#~ msgstr "Kategoriename ist erforderlich" + +#~ msgid "Expense category created successfully" +#~ msgstr "Ausgabenkategorie erfolgreich erstellt" + +#~ msgid "Error creating expense category" +#~ msgstr "Fehler beim Erstellen der Ausgabenkategorie" + +#~ msgid "Expense category updated successfully" +#~ msgstr "Die Ausgabenkategorie wurde erfolgreich aktualisiert" + +#~ msgid "Error updating expense category" +#~ msgstr "Fehler beim Aktualisieren der Ausgabenkategorie" + +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Ausgabenkategorie erfolgreich deaktiviert" + +#~ msgid "Error deactivating expense category" +#~ msgstr "Fehler beim Deaktivieren der Ausgabenkategorie" + +#~ msgid "Title is required" +#~ msgstr "Titel ist erforderlich" + +#~ msgid "Category is required" +#~ msgstr "Kategorie ist erforderlich" + +#~ msgid "Amount is required" +#~ msgstr "Betrag ist erforderlich" + +#~ msgid "Expense date is required" +#~ msgstr "Spesendatum ist erforderlich" + +#~ msgid "Invalid date format" +#~ msgstr "Ungültiges Datumsformat" + +#~ msgid "Invalid amount format" +#~ msgstr "Ungültiges Betragsformat" + +#~ msgid "Selected project does not match the locked client." +#~ msgstr "Ausgewähltes Projekt stimmt nicht mit dem gesperrten Kunden überein." + +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" +#~ "Fehler beim Speichern der Belegdatei. " +#~ "Bitte überprüfen Sie die " +#~ "Verzeichnisberechtigungen." + +#~ msgid "Error uploading receipt file." +#~ msgstr "Fehler beim Hochladen der Belegdatei." + +#~ msgid "Expense created successfully" +#~ msgstr "Ausgabe erfolgreich erstellt" + +#~ msgid "Error creating expense" +#~ msgstr "Fehler beim Erstellen der Ausgabe" + +#~ msgid "You do not have permission to view this expense" +#~ msgstr "Sie sind nicht berechtigt, diese Ausgabe anzuzeigen" + +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "Sie sind nicht berechtigt, diese Ausgabe zu bearbeiten" + +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "Genehmigte oder erstattete Ausgaben können nicht bearbeitet werden" + +#~ msgid "Please fill in all required fields" +#~ msgstr "Bitte füllen Sie alle erforderlichen Felder aus" + +#~ msgid "Expense updated successfully" +#~ msgstr "Ausgaben erfolgreich aktualisiert" + +#~ msgid "Error updating expense" +#~ msgstr "Fehler beim Aktualisieren der Kosten" + +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "Sie sind nicht berechtigt, diese Ausgabe zu löschen" + +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "" +#~ "Genehmigte oder in Rechnung gestellte " +#~ "Ausgaben können nicht gelöscht werden" + +#~ msgid "Expense deleted successfully" +#~ msgstr "Ausgabe erfolgreich gelöscht" + +#~ msgid "Error deleting expense" +#~ msgstr "Fehler beim Löschen der Ausgabe" + +#~ msgid "No expenses selected for deletion" +#~ msgstr "Keine Ausgaben zum Löschen ausgewählt" + +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Ausgaben konnten aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "%(count)d Ausgaben(en) erfolgreich gelöscht" + +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "Übersprungene %(count)d Ausgaben: %(errors)s" + +#~ msgid "No expenses selected" +#~ msgstr "Keine Ausgaben ausgewählt" + +#~ msgid "Invalid status value" +#~ msgstr "Ungültiger Statuswert" + +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten die" +#~ " Ausgaben nicht aktualisiert werden" + +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "%(count)d Ausgaben wurden erfolgreich auf %(status)s aktualisiert" + +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "Übersprungene %(count)d Ausgabe(n): %(summary)s" + +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "%(count)d Ausgaben übersprungen (keine Berechtigung)" + +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Nur Administratoren können Ausgaben genehmigen" + +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Es können nur ausstehende Ausgaben genehmigt werden" + +#~ msgid "Expense approved successfully" +#~ msgstr "Ausgabe erfolgreich genehmigt" + +#~ msgid "Error approving expense" +#~ msgstr "Fehler bei der Kostengenehmigung" + +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Nur Administratoren können Ausgaben ablehnen" + +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Lediglich ausstehende Ausgaben können abgelehnt werden" + +#~ msgid "Rejection reason is required" +#~ msgstr "Ein Ablehnungsgrund ist erforderlich" + +#~ msgid "Expense rejected" +#~ msgstr "Spesenabrechnung abgelehnt" + +#~ msgid "Error rejecting expense" +#~ msgstr "Fehler beim Zurückweisen der Kosten" + +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "Nur Administratoren können Ausgaben als erstattet markieren" + +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Nur genehmigte Ausgaben können als erstattet markiert werden" + +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Diese Ausgabe ist nicht als erstattungsfähig gekennzeichnet" + +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Als erstattet markierte Ausgabe" + +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Fehler beim Markieren der Kosten als erstattet" + +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "OCR ist nicht verfügbar. Bitte wenden Sie sich an Ihren Administrator." + +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Ungültiger Dateityp. Zulässige Typen: PNG, JPG, JPEG, GIF, PDF" + +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "Quittung erfolgreich gescannt! Mit den " +#~ "extrahierten Daten können Sie nun eine" +#~ " Ausgabe erstellen." + +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Fehler beim Scannen der Quittung. Bitte" +#~ " versuchen Sie es erneut oder geben" +#~ " Sie die Ausgabe manuell ein." + +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "Es wurden keine gescannten Belegdaten " +#~ "gefunden. Bitte scannen Sie zunächst " +#~ "eine Quittung." + +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Ausgabe erfolgreich aus gescannter Quittung erstellt" + +#~ msgid "Permission denied." +#~ msgstr "Zugriff verweigert." + +#~ msgid "Integration provider not available." +#~ msgstr "Integrationsanbieter nicht verfügbar." + +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "Trello-Integration muss von einem Administrator konfiguriert werden." + +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "Nur Administratoren können globale Integrationen einrichten." + +#~ msgid "Could not initialize connector." +#~ msgstr "Connector konnte nicht initialisiert werden." + +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" +#~ "Google Calendar OAuth-Anmeldedaten müssen " +#~ "zuerst konfiguriert werden. Weiterleitung zur" +#~ " Einrichtung..." + +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" +#~ "Google Calendar-Integration muss zuerst " +#~ "von einem Administrator konfiguriert werden." + +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" +#~ "OAuth-Anmeldedaten nicht konfiguriert. Bitte" +#~ " konfigurieren Sie diese zuerst." + +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" +#~ "Integration nicht konfiguriert. Bitte bitten" +#~ " Sie einen Administrator, OAuth-" +#~ "Anmeldedaten einzurichten." + +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "Autorisierung fehlgeschlagen: %(error)s" + +#~ msgid "Authorization code not received." +#~ msgstr "Autorisierungscode nicht empfangen." + +#~ msgid "Integration not found." +#~ msgstr "Integration nicht gefunden." + +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" +#~ "Ungültiger Status-Parameter. Bitte versuchen" +#~ " Sie erneut, eine Verbindung herzustellen." + +#~ msgid "Integration connected successfully!" +#~ msgstr "Integration erfolgreich verbunden!" + +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "Integration verbunden, aber Verbindungstest fehlgeschlagen: %(message)s" + +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "Fehler beim Verbinden der Integration: %(error)s" + +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "Nur Administratoren können globale Integrationen konfigurieren." + +#~ msgid "Trello API Key is required." +#~ msgstr "Trello API-Schlüssel ist erforderlich." + +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "Trello API-Secret ist für die neue Einrichtung erforderlich." + +#~ msgid "OAuth Client ID is required." +#~ msgstr "OAuth Client-ID ist erforderlich." + +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "OAuth Client-Secret ist für die neue Einrichtung erforderlich." + +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" +#~ "GitLab-Instanz-URL muss eine gültige " +#~ "URL sein (z. B. https://gitlab.com)." + +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "Format der GitLab-Instanz-URL ist ungültig." + +#~ msgid "Integration credentials updated successfully." +#~ msgstr "Integrations-Anmeldedaten erfolgreich aktualisiert." + +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" +#~ "Benutzer können jetzt ihren Google " +#~ "Calendar verbinden. Sie werden automatisch " +#~ "zu Google für die Autorisierung " +#~ "weitergeleitet." + +#~ msgid "Failed to update credentials." +#~ msgstr "Anmeldedaten konnten nicht aktualisiert werden." + +#~ msgid "Invalid action for this integration." +#~ msgstr "Ungültige Aktion für diese Integration." + +#~ msgid "Linear API key is required." +#~ msgstr "Linear API-Schlüssel ist erforderlich." + +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" +#~ "Linear API-Schlüssel gespeichert. Verwenden" +#~ " Sie Sync, um Probleme als Aufgaben" +#~ " zu importieren." + +#~ msgid "Could not save API key." +#~ msgstr "API-Schlüssel konnte nicht gespeichert werden." + +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "Diese Aktion ist nur für CalDAV-Integrationen verfügbar." + +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "Integration nicht gefunden. Bitte verbinden Sie die Integration zuerst." + +#~ msgid "Username is required." +#~ msgstr "Benutzername ist erforderlich." + +#~ msgid "Password is required for new setup." +#~ msgstr "Passwort ist für die neue Einrichtung erforderlich." + +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "CalDAV-Anmeldedaten erfolgreich aktualisiert." + +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "CalDAV-Anmeldedaten konnten nicht aktualisiert werden: %(message)s" + +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "Ungültige Zahl für Feld %(field)s" + +#~ msgid "Field %(field)s is required" +#~ msgstr "Feld %(field)s ist erforderlich" + +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "Ungültiges JSON für Feld %(field)s" + +#~ msgid "Integration configuration updated successfully." +#~ msgstr "Integrationskonfiguration erfolgreich aktualisiert." + +#~ msgid "Failed to update configuration." +#~ msgstr "Konfiguration konnte nicht aktualisiert werden." + +#~ msgid "Connection test successful!" +#~ msgstr "Verbindungstest erfolgreich!" + +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "Verbindungstest fehlgeschlagen: %(message)s" + +#~ msgid "Integration deleted successfully." +#~ msgstr "Integration erfolgreich gelöscht." + +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" +#~ "Integration erfolgreich zurückgesetzt. Sie " +#~ "können sie jetzt neu konfigurieren." + +#~ msgid "Connector not available." +#~ msgstr "Connector nicht verfügbar." + +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "Synchronisierung erfolgreich abgeschlossen. %(details)s" + +#~ msgid "Sync failed: %(message)s" +#~ msgstr "Synchronisierung fehlgeschlagen: %(message)s" + +#~ msgid "Error during sync: %(error)s" +#~ msgstr "Fehler während der Synchronisierung: %(error)s" + +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "Entweder Server-URL oder Kalender-URL ist erforderlich." + +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" +#~ "Server-URL muss eine gültige URL " +#~ "sein (z. B. https://mail.example.com/dav)." + +#~ msgid "Server URL format is invalid." +#~ msgstr "Format der Server-URL ist ungültig." + +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "Kalender-URL muss eine gültige URL sein." + +#~ msgid "Calendar URL format is invalid." +#~ msgstr "Format der Kalender-URL ist ungültig." + +#~ msgid "Selected project not found or is not active." +#~ msgstr "Ausgewähltes Projekt nicht gefunden oder inaktiv." + +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "Rückblicktage müssen zwischen 1 und 365 liegen." + +#~ msgid "Lookback days must be a valid number." +#~ msgstr "Rückblicktage müssen eine gültige Zahl sein." + +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "Anmeldedaten konnten nicht gespeichert werden: %(message)s" + +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "CalDAV-Integration erfolgreich konfiguriert." + +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "CalDAV-Konfiguration konnte nicht gespeichert werden." + +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "ActivityWatch-Server-URL ist erforderlich." + +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "Server-URL muss eine gültige URL sein (z. B. http://localhost:5600)." + +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "Rückblicktage müssen zwischen 1 und 90 liegen." + +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "ActivityWatch-Integration erfolgreich konfiguriert." + +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" +#~ "Konfiguration gespeichert, aber Verbindungstest " +#~ "fehlgeschlagen: %(message)s" + +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "ActivityWatch-Konfiguration konnte nicht gespeichert werden." + +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "Einrichtungsassistent für diese Integration nicht verfügbar." + +#~ msgid "Connector class not found." +#~ msgstr "Connector-Klasse nicht gefunden." + +#~ msgid "Integration configured successfully!" +#~ msgstr "Integration erfolgreich konfiguriert!" + +#~ msgid "Failed to save configuration." +#~ msgstr "Konfiguration konnte nicht gespeichert werden." + +#~ msgid "OAuth Setup" +#~ msgstr "OAuth-Einrichtung" + +#~ msgid "Connection Test" +#~ msgstr "Verbindungstest" + +#~ msgid "Sync Config" +#~ msgstr "Sync-Konfiguration" + +#~ msgid "Advanced" +#~ msgstr "Fortschrittlich" + +#~ msgid "Review" +#~ msgstr "Rezension" + +#~ msgid "Instance" +#~ msgstr "Instanz" + +#~ msgid "OAuth" +#~ msgstr "OAuth" + +#~ msgid "Repositories" +#~ msgstr "Repositories" + +#~ msgid "Sync Settings" +#~ msgstr "Synchronisierungseinstellungen" + +#~ msgid "Company" +#~ msgstr "Unternehmen" + +#~ msgid "Mappings" +#~ msgstr "Zuordnungen" + +#~ msgid "Tenant" +#~ msgstr "Mandant" + +#~ msgid "Webhooks" +#~ msgstr "Webhooks" + +#~ msgid "Workspace" +#~ msgstr "Arbeitsbereich" + +#~ msgid "Projects" +#~ msgstr "Projekte" + +#~ msgid "API Keys" +#~ msgstr "API-Schlüssel" + +#~ msgid "Tenant ID" +#~ msgstr "Mandanten-ID" + +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "%(name)s Einrichtungsassistent" + +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "Geführte Schritt-für-Schritt-Konfiguration für %(name)s" + +#~ msgid "Integration not found" +#~ msgstr "Integration nicht gefunden" + +#~ msgid "Connector not available" +#~ msgstr "Connector nicht verfügbar" + +#~ msgid "SKU is required" +#~ msgstr "Artikelnummer (SKU) ist erforderlich" + +#~ msgid "Name is required" +#~ msgstr "Name ist erforderlich" + +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "Ungültige SKU: %(error)s" + +#~ msgid "Invalid name: %(error)s" +#~ msgstr "Ungültiger Name: %(error)s" + +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "SKU existiert bereits. Bitte verwenden Sie eine andere SKU." + +#~ msgid "Stock item created successfully." +#~ msgstr "Lagerartikel erfolgreich erstellt." + +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "Fehler beim Erstellen des Lagerartikels: %(error)s" + +#~ msgid "Stock item updated successfully." +#~ msgstr "Lagerartikel erfolgreich aktualisiert." + +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Lagerartikels: %(error)s" + +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "Lagerartikel mit vorhandenem Lagerbestand oder" +#~ " Bewegungsverlauf können nicht gelöscht " +#~ "werden." + +#~ msgid "Stock item deleted successfully." +#~ msgstr "Lagerartikel erfolgreich gelöscht." + +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "Fehler beim Löschen des Lagerartikels: %(error)s" + +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "Lagercode existiert bereits. Bitte verwenden Sie einen anderen Code." + +#~ msgid "Warehouse created successfully." +#~ msgstr "Lager erfolgreich erstellt." + +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Fehler beim Erstellen des Lagers: %(error)s" + +#~ msgid "Warehouse updated successfully." +#~ msgstr "Lager wurde erfolgreich aktualisiert." + +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Lagers: %(error)s" + +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "Lager mit vorhandenem Bestand kann nicht" +#~ " gelöscht werden. Bitte übertragen oder " +#~ "entfernen Sie zuerst den gesamten " +#~ "Bestand." + +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Lager erfolgreich gelöscht." + +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Fehler beim Löschen des Lagers: %(error)s" + +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" +#~ "Lagerartikel ist nicht verfolgbar. Abwertung" +#~ " erfordert verfolgbare Artikel." + +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "Abwertungsmenge muss positiv sein" + +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "Lagerartikel muss Standardkosten haben, um eine Abwertung durchzuführen" + +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "Abwertungsprozentsatz ist bei der Prozentmethode erforderlich" + +#~ msgid "Invalid devaluation percent value" +#~ msgstr "Ungültiger Abwertungsprozentsatz" + +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "Abwertungsprozentsatz darf nicht negativ sein" + +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "Abwertungsprozentsatz darf 100 % nicht überschreiten" + +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "Neue Stückkosten sind bei der Festkostenmethode erforderlich" + +#~ msgid "Invalid unit cost value" +#~ msgstr "Ungültiger Stückkostenwert" + +#~ msgid "Unit cost cannot be negative" +#~ msgstr "Stückkosten dürfen nicht negativ sein" + +#~ msgid "Invalid devaluation method" +#~ msgstr "Ungültige Abwertungsmethode" + +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" +#~ "Abwertungskosten (%(devalued)s) dürfen die " +#~ "Originalkosten (%(original)s) nicht überschreiten" + +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" +#~ "Unzureichender Lagerbestand zur Abwertung. " +#~ "Verfügbar: %(available)s, Angefordert: %(requested)s" + +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "Lagerabwertung erfolgreich erfasst." + +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "Rückgabebewegungen müssen eine positive Menge verwenden" + +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "Abfallbewegungen müssen eine negative Menge verwenden" + +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "Abwertungsprozentsatz ist erforderlich, wenn Abwertung aktiviert ist" + +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "Neue Stückkosten sind erforderlich, wenn Abwertung aktiviert ist" + +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" +#~ "Unzureichender Lagerbestand zum Ausbuchen. " +#~ "Verfügbar: %(available)s, Angefordert: %(requested)s" + +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "Lager konnte vor dem Ausbuchen nicht abgewertet werden: %(error)s" + +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "Bewegung konnte nicht erfasst werden: %(error)s" + +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "Rückgabebewegung mit Abwertung erfolgreich erfasst." + +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "Abfallbewegung mit Abwertung erfolgreich erfasst." + +#~ msgid "Stock movement recorded successfully." +#~ msgstr "Lagerbewegung erfolgreich erfasst." + +#~ msgid "Error: %(error)s" +#~ msgstr "Fehler: %(error)s" + +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "Fehler bei der Aufzeichnung der Lagerbewegung: %(error)s" + +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "Quell- und Ziellager müssen unterschiedlich sein." + +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Im Quelllager sind nicht genügend Lagerbestände verfügbar." + +#~ msgid "Stock item not found." +#~ msgstr "Lagerartikel nicht gefunden." + +#~ msgid "Source warehouse not found." +#~ msgstr "Quelllager nicht gefunden." + +#~ msgid "Destination warehouse not found." +#~ msgstr "Ziellager nicht gefunden." + +#~ msgid "Stock transfer completed successfully." +#~ msgstr "Umlagerung erfolgreich abgeschlossen." + +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Fehler beim Erstellen der Übertragung: %(error)s" + +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "Bestandsanpassung erfolgreich erfasst." + +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Fehler bei der Aufzeichnungsanpassung: %(error)s" + +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Reservierung erfolgreich durchgeführt." + +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Fehler beim Erfüllen der Reservierung: %(error)s" + +#~ msgid "Reservation cancelled successfully." +#~ msgstr "Reservierung erfolgreich storniert." + +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "Fehler beim Stornieren der Reservierung: %(error)s" + +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "Lieferant mit Code '%(code)s' existiert bereits" + +#~ msgid "Supplier created successfully." +#~ msgstr "Lieferant erfolgreich erstellt." + +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Fehler beim Erstellen des Lieferanten: %(error)s" + +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "" +#~ "Der Lieferantencode ist bereits vorhanden. " +#~ "Bitte verwenden Sie einen anderen Code." + +#~ msgid "Supplier updated successfully." +#~ msgstr "Lieferant wurde erfolgreich aktualisiert." + +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Lieferanten: %(error)s" + +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "Lieferant mit zugehörigen Lagerartikeln kann" +#~ " nicht gelöscht werden. Entfernen Sie " +#~ "zuerst die Elemente." + +#~ msgid "Supplier deleted successfully." +#~ msgstr "Lieferant erfolgreich gelöscht." + +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Fehler beim Löschen des Lieferanten: %(error)s" + +#~ msgid "Supplier is required." +#~ msgstr "Lieferant ist erforderlich." + +#~ msgid "Supplier not found." +#~ msgstr "Lieferant nicht gefunden." + +#~ msgid "Order date is required." +#~ msgstr "Bestelldatum ist erforderlich." + +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "" +#~ "Bestellung konnte aufgrund eines " +#~ "Datenbankfehlers nicht erstellt werden." + +#~ msgid "Purchase order created successfully." +#~ msgstr "Bestellung erfolgreich erstellt." + +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Fehler beim Erstellen der Bestellung: %(error)s" + +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "Eine eingegangene Bestellung kann nicht bearbeitet werden." + +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "" +#~ "Bestellung konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden." + +#~ msgid "Purchase order updated successfully." +#~ msgstr "Bestellung erfolgreich aktualisiert." + +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Fehler beim Aktualisieren der Bestellung: %(error)s" + +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "" +#~ "Bestellstatus konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden." + +#~ msgid "Purchase order marked as sent." +#~ msgstr "Bestellung als gesendet markiert." + +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Fehler beim Senden der Bestellung: %(error)s" + +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "" +#~ "Bestellung konnte aufgrund eines " +#~ "Datenbankfehlers nicht storniert werden." + +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Bestellung erfolgreich storniert." + +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Fehler beim Stornieren der Bestellung: %(error)s" + +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "" +#~ "Eine eingegangene Bestellung kann nicht " +#~ "gelöscht werden. Stornieren Sie es " +#~ "stattdessen." + +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "" +#~ "Bestellung konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden." + +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Bestellung erfolgreich gelöscht." + +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Fehler beim Löschen der Bestellung: %(error)s" + +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "" +#~ "Bestellung konnte aufgrund eines " +#~ "Datenbankfehlers nicht empfangen werden." + +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "" +#~ "Die Bestellung wurde als eingegangen " +#~ "markiert und der Lagerbestand aktualisiert." + +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Fehler beim Empfang der Bestellung: %(error)s" + +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "Für diese Rechnung ist bereits eine Genehmigungsanfrage ausstehend." + +#~ msgid "Please select at least one approver." +#~ msgstr "Bitte wählen Sie mindestens einen Genehmiger aus." + +#~ msgid "Approval request created successfully." +#~ msgstr "Genehmigungsanfrage erfolgreich erstellt." + +#~ msgid "Invoice approved successfully." +#~ msgstr "Rechnung erfolgreich genehmigt." + +#~ msgid "Please provide a reason for rejection." +#~ msgstr "Bitte geben Sie einen Ablehnungsgrund an." + +#~ msgid "Invoice approval rejected." +#~ msgstr "Rechnungsgenehmigung abgelehnt." + +#~ msgid "Project, client name, and due date are required" +#~ msgstr "Projekt, Name des Kunden und Fälligkeitsdatum sind erforderlich" + +#~ msgid "Invalid due date format" +#~ msgstr "Ungültiges Fälligkeitsdatumsformat" + +#~ msgid "Invalid tax rate format" +#~ msgstr "Ungültiges Steuersatzformat" + +#~ msgid "Selected project not found" +#~ msgstr "Ausgewähltes Projekt nicht gefunden" + +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte keine" +#~ " Rechnung erstellt werden. Bitte überprüfen" +#~ " Sie die Serverprotokolle." + +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "Sie sind nicht berechtigt, diese Rechnung anzuzeigen" + +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" +#~ "Unternehmens-Steuer-ID (USt.) fehlt " +#~ "unter Admin → Einstellungen → " +#~ "Unternehmens-Branding." + +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" +#~ "Absender-Endpunkt-ID fehlt unter Admin" +#~ " → Einstellungen → Peppol E-Invoicing." + +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" +#~ "Absender-Schema-ID fehlt unter Admin " +#~ "→ Einstellungen → Peppol E-Invoicing." + +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" +#~ "Kunden-Peppol-Endpunkt-ID fehlt. Fügen" +#~ " Sie peppol_endpoint_id zu den " +#~ "benutzerdefinierten Feldern des Kunden hinzu." + +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" +#~ "Kunden-Peppol-Schema-ID fehlt. Fügen " +#~ "Sie peppol_scheme_id zu den " +#~ "benutzerdefinierten Feldern des Kunden hinzu." + +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" +#~ "Rechnung hat keinen verknüpften Kunden; " +#~ "Käufer-PEPPOL-Kennungen können nicht " +#~ "überprüft werden." + +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" +#~ "PEPPOL-Konformität konnte nicht überprüft " +#~ "werden; bitte Konfiguration prüfen." + +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "Sie sind nicht berechtigt, diese Rechnung zu bearbeiten" + +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Warnung: Der Lagerbestand für Artikel " +#~ "%(item)s konnte nicht reserviert werden: " +#~ "%(error)s" + +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Rechnung konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Invoice updated successfully" +#~ msgstr "Rechnung erfolgreich aktualisiert" + +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Warnung: Der Lagerbestand für Artikel " +#~ "%(item)s konnte nicht reduziert werden: " +#~ "%(error)s" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "Sie sind nicht berechtigt, diese Rechnung zu löschen" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "Es können nur Rechnungsentwürfe gelöscht werden." + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Rechnung konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "Keine Rechnungen zum Löschen ausgewählt" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten " +#~ "Rechnungen nicht gelöscht werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "No invoices selected" +#~ msgstr "Keine Rechnungen ausgewählt" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "" +#~ "Rechnungen konnten aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "Keine Zeiteinträge, Kosten, Ausgaben oder zusätzliche Waren ausgewählt" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten keine" +#~ " Elemente generiert werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "Aus Zeiteinträgen und Kosten erfolgreich generierte Rechnungspositionen" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "%(hours)s Prepaid-Stunden für %(client)s " +#~ "angewendet, bevor Überschreitungen in Rechnung" +#~ " gestellt werden." + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "Sie haben keine Berechtigung zum Exportieren dieser Rechnung" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "UBL kann nicht generiert werden: %(msg)s" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "UBL-Export fehlgeschlagen: %(msg)s" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" +#~ "Factur-X-Einbettung ist aktiviert, aber " +#~ "fehlgeschlagen: %(err)s. Export abgebrochen, " +#~ "damit das PDF nicht ohne eingebettetes" +#~ " XML ausgeliefert wird." + +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "PDF/A-3-Normalisierung fehlgeschlagen: %(err)s. Export abgebrochen." + +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "veraPDF-Validierung hat Probleme gemeldet: %(summary)s" + +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "veraPDF: %(summary)s" + +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" +#~ "Factur-X-Einbettung ist aktiviert, aber " +#~ "fehlgeschlagen: %(err)s. Export abgebrochen." + +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "" +#~ "PDF-Erzeugung fehlgeschlagen: %(err)s. " +#~ "Fallback ist ebenfalls fehlgeschlagen: %(fb)s" + +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "Sie sind nicht berechtigt, diese Rechnung zu duplizieren" + +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte die " +#~ "Rechnung nicht dupliziert werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte die " +#~ "doppelte Rechnung nicht abgeschlossen werden." +#~ " Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "Sie haben keine Berechtigung, Bilder zu dieser Rechnung hochzuladen" + +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "Dateityp nicht erlaubt. Nur Bilder sind erlaubt" + +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "Dateigröße überschreitet die maximal zulässige Größe (5 MB)" + +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Bild konnte aufgrund eines Datenbankfehlers" +#~ " nicht hochgeladen werden. Bitte überprüfen" +#~ " Sie die Serverprotokolle." + +#~ msgid "Image uploaded successfully" +#~ msgstr "Bild erfolgreich hochgeladen" + +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "Sie haben keine Berechtigung, Bilder von dieser Rechnung zu löschen" + +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Bild konnte aufgrund eines Datenbankfehlers" +#~ " nicht gelöscht werden. Bitte überprüfen" +#~ " Sie die Serverprotokolle." + +#~ msgid "Image deleted successfully" +#~ msgstr "Bild erfolgreich gelöscht" + +#~ msgid "Invoice marked as sent" +#~ msgstr "Rechnung als gesendet markiert" + +#~ msgid "Invoice marked as paid" +#~ msgstr "Rechnung als bezahlt markiert" + +#~ msgid "You do not have permission to create issues." +#~ msgstr "Sie haben keine Berechtigung, Probleme zu erstellen." + +#~ msgid "Client is required." +#~ msgstr "Kunde ist erforderlich." + +#~ msgid "Issue created successfully." +#~ msgstr "Problem erfolgreich erstellt." + +#~ msgid "You do not have permission to view this issue." +#~ msgstr "Sie haben keine Berechtigung, dieses Problem anzuzeigen." + +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "Sie haben keine Berechtigung, dieses Problem zu bearbeiten." + +#~ msgid "Project must belong to the same client." +#~ msgstr "Projekt muss zum selben Kunden gehören." + +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" +#~ "Problem konnte aufgrund eines Datenbankfehlers" +#~ " nicht aktualisiert werden." + +#~ msgid "Issue updated successfully." +#~ msgstr "Problem erfolgreich aktualisiert." + +#~ msgid "Please select a task." +#~ msgstr "Bitte wählen Sie eine Aufgabe aus." + +#~ msgid "Issue linked to task successfully." +#~ msgstr "Problem erfolgreich mit Aufgabe verknüpft." + +#~ msgid "Please select a project." +#~ msgstr "Bitte wählen Sie ein Projekt aus." + +#~ msgid "Task created from issue successfully." +#~ msgstr "Aufgabe erfolgreich aus Problem erstellt." + +#~ msgid "Status is required." +#~ msgstr "Status ist erforderlich." + +#~ msgid "Issue status updated successfully." +#~ msgstr "Problemstatus erfolgreich aktualisiert." + +#~ msgid "Issue assigned successfully." +#~ msgstr "Problem erfolgreich zugewiesen." + +#~ msgid "Could not assign issue." +#~ msgstr "Problem konnte nicht zugewiesen werden." + +#~ msgid "Priority is required." +#~ msgstr "Priorität ist erforderlich." + +#~ msgid "Issue priority updated successfully." +#~ msgstr "Problempriorität erfolgreich aktualisiert." + +#~ msgid "Only administrators can delete issues." +#~ msgstr "Nur Administratoren können Probleme löschen." + +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "Problem konnte aufgrund eines Datenbankfehlers nicht gelöscht werden." + +#~ msgid "Issue deleted successfully." +#~ msgstr "Problem erfolgreich gelöscht." + +#~ msgid "Key and label are required" +#~ msgstr "Schlüssel und Etikett sind erforderlich" + +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Spalte konnte aufgrund eines " +#~ "Datenbankfehlers nicht erstellt werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Spalte konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "System columns cannot be deleted" +#~ msgstr "Systemspalten können nicht gelöscht werden" + +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Spalte konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Spalte konnte aufgrund eines " +#~ "Datenbankfehlers nicht umgeschaltet werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" +#~ "Kiosk-Modus ist nicht aktiviert. Bitte" +#~ " wenden Sie sich an einen " +#~ "Administrator." + +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" +#~ "Für dieses Konto ist kein Passwort " +#~ "festgelegt. Bitte legen Sie zuerst ein" +#~ " Passwort in Ihrem Profil fest." + +#~ msgid "You have been logged out" +#~ msgstr "Sie wurden abgemeldet" + +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "Lagerkorrektur erfolgreich erfasst" + +#~ msgid "Stock transfer completed successfully" +#~ msgstr "Lagertransfer erfolgreich abgeschlossen" + +#~ msgid "Timer started successfully" +#~ msgstr "Timer erfolgreich gestartet" + +#~ msgid "Timer stopped successfully" +#~ msgstr "Der Timer wurde erfolgreich gestoppt" + +#~ msgid "Lead created successfully" +#~ msgstr "Lead erfolgreich erstellt" + +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Fehler beim Erstellen des Leads: %(error)s" + +#~ msgid "Lead updated successfully" +#~ msgstr "Lead erfolgreich aktualisiert" + +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Leads: %(error)s" + +#~ msgid "Lead has already been converted" +#~ msgstr "Lead wurde bereits umgewandelt" + +#~ msgid "Lead converted to client successfully" +#~ msgstr "Lead erfolgreich in Kunden umgewandelt" + +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Fehler beim Konvertieren des Leads: %(error)s" + +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Der Lead wurde in ein erfolgreiches Geschäft umgewandelt" + +#~ msgid "Lead marked as lost" +#~ msgstr "Lead als verloren markiert" + +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "Fehler beim Markieren des Leads als verloren: %(error)s" + +#~ msgid "URL template is required" +#~ msgstr "URL-Vorlage ist erforderlich" + +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "URL-Vorlage muss den Platzhalter {value} oder %value% enthalten" + +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" +#~ "Link-Vorlage konnte aufgrund eines " +#~ "Datenbankfehlers nicht erstellt werden." + +#~ msgid "Link template created successfully" +#~ msgstr "Link-Vorlage erfolgreich erstellt" + +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" +#~ "Link-Vorlage konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden." + +#~ msgid "Link template updated successfully" +#~ msgstr "Link-Vorlage erfolgreich aktualisiert" + +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" +#~ "Link-Vorlage konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden." + +#~ msgid "Link template deleted successfully" +#~ msgstr "Link-Vorlage erfolgreich gelöscht" + +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" +#~ "Sie verwenden TimeTracker seit einer " +#~ "Woche oder länger. Wenn es zu " +#~ "Ihrem Workflow passt, erwägen Sie, die" +#~ " weitere Entwicklung zu unterstützen." + +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" +#~ "Sie haben heute eine beachtliche Menge" +#~ " Zeit erfasst. Wenn TimeTracker Ihren " +#~ "Alltag erleichtert, können Sie das " +#~ "Projekt mit einem Klick unterstützen." + +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "PDF-Export fehlgeschlagen: %(error)s" + +#~ msgid "Mileage entry created successfully" +#~ msgstr "Meileneintrag erfolgreich erstellt" + +#~ msgid "Error creating mileage entry" +#~ msgstr "Fehler beim Erstellen des Kilometereintrags" + +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "Sie sind nicht berechtigt, diesen Meileneintrag anzuzeigen" + +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "Sie sind nicht berechtigt, diesen Meileneintrag zu bearbeiten" + +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "" +#~ "Genehmigte oder erstattete Meileneinträge " +#~ "können nicht bearbeitet werden" + +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Meileneintrag erfolgreich aktualisiert" + +#~ msgid "Error updating mileage entry" +#~ msgstr "Fehler beim Aktualisieren des Meileneintrags" + +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "Sie sind nicht berechtigt, diesen Meileneintrag zu löschen" + +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "Kilometereintrag erfolgreich gelöscht" + +#~ msgid "Error deleting mileage entry" +#~ msgstr "Fehler beim Löschen des Kilometereintrags" + +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "Keine Meileneinträge zum Löschen ausgewählt" + +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kilometereinträge konnten aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "%(count)d Meileneinträge%(plural)s wurden erfolgreich gelöscht" + +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "Übersprungen %(count)d Meileneinträge%(plural)s: %(errors)s" + +#~ msgid "No mileage entries selected" +#~ msgstr "Keine Meileneinträge ausgewählt" + +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "" +#~ "Die Meileneinträge konnten aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden" + +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "" +#~ "%(count)d Meileneintrag%(plural)s wurde erfolgreich" +#~ " auf %(status)s aktualisiert" + +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "%(count)d Meileneinträge%(plural)s übersprungen (keine Berechtigung)" + +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Nur Administratoren können Meileneinträge genehmigen" + +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Es können nur ausstehende Meileneinträge genehmigt werden" + +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Meileneintrag erfolgreich genehmigt" + +#~ msgid "Error approving mileage entry" +#~ msgstr "Fehler beim Genehmigen der Meileneintragung" + +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Nur Administratoren können Kilometereinträge ablehnen" + +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "Lediglich ausstehende Meileneinträge können abgelehnt werden" + +#~ msgid "Mileage entry rejected" +#~ msgstr "Meileneingabe abgelehnt" + +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Fehler beim Zurückweisen der Meileneingabe" + +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "Nur Administratoren können Meileneinträge als erstattet markieren" + +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "Nur genehmigte Meileneinträge können als erstattet markiert werden" + +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Meileneintrag als erstattet markiert" + +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Fehler beim Markieren des Meileneintrags als erstattet" + +#~ msgid "Quote title and client are required" +#~ msgstr "Angebotstitel und Kunde sind erforderlich" + +#~ msgid "Selected client not found" +#~ msgstr "Ausgewählter Kunde nicht gefunden" + +#~ msgid "Invalid total amount format" +#~ msgstr "Ungültiges Gesamtbetragsformat" + +#~ msgid "Invalid estimated hours format" +#~ msgstr "Ungültiges Format für geschätzte Stunden" + +#~ msgid "Invalid date format for valid until" +#~ msgstr "Ungültiges Datumsformat für gültig bis" + +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte kein" +#~ " Angebot erstellt werden. Bitte überprüfen" +#~ " Sie die Serverprotokolle." + +#~ msgid "Quote created successfully" +#~ msgstr "Angebot erfolgreich erstellt" + +#~ msgid "Only draft quotes can be edited" +#~ msgstr "Es können nur Angebotsentwürfe bearbeitet werden" + +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Das Angebot konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Quote updated successfully" +#~ msgstr "Angebot erfolgreich aktualisiert" + +#~ msgid "Only draft quotes can be sent" +#~ msgstr "Es können nur Angebotsentwürfe verschickt werden" + +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte das " +#~ "Angebot nicht gesendet werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "Quote sent successfully" +#~ msgstr "Angebot erfolgreich gesendet" + +#~ msgid "This quote cannot be accepted" +#~ msgstr "Dieses Angebot kann nicht angenommen werden" + +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "Zitat konnte nicht akzeptiert werden: %(error)s" + +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte das " +#~ "Angebot nicht angenommen werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Angebot angenommen und Projekt erfolgreich erstellt" + +#~ msgid "This quote cannot be rejected" +#~ msgstr "Dieses Zitat kann nicht abgelehnt werden" + +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "Zitat konnte nicht abgelehnt werden: %(error)s" + +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Das Angebot konnte aufgrund eines " +#~ "Datenbankfehlers nicht abgelehnt werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Quote rejected" +#~ msgstr "Angebot abgelehnt" + +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "Nur Entwurfs- oder abgelehnte Angebote können gelöscht werden" + +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Das Angebot konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Quote deleted successfully" +#~ msgstr "Angebot erfolgreich gelöscht" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "Zahlungsanbieter erfolgreich erstellt." + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" +#~ "Kein Zahlungsanbieter konfiguriert. Bitte " +#~ "wenden Sie sich an einen Administrator." + +#~ msgid "Stripe API key not configured." +#~ msgstr "Stripe API-Schlüssel nicht konfiguriert." + +#~ msgid "Payment processed successfully." +#~ msgstr "Zahlung erfolgreich verarbeitet." + +#~ msgid "Invalid from date format" +#~ msgstr "Ungültiges Datumsformat ab Datum" + +#~ msgid "Invalid to date format" +#~ msgstr "Ungültiges Datumsformat" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "Sie sind nicht berechtigt, diese Zahlung anzuzeigen" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "Es sind Rechnung, Betrag und Zahlungsdatum erforderlich" + +#~ msgid "Selected invoice not found" +#~ msgstr "Ausgewählte Rechnung nicht gefunden" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "Sie sind nicht berechtigt, Zahlungen zu dieser Rechnung hinzuzufügen" + +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "Der Zahlungsbetrag muss größer als Null sein" + +#~ msgid "Invalid payment amount" +#~ msgstr "Ungültiger Zahlungsbetrag" + +#~ msgid "Invalid payment date format" +#~ msgstr "Ungültiges Zahlungsdatumsformat" + +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "Die Gateway-Gebühr darf nicht negativ sein" + +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Ungültiger Betrag der Gateway-Gebühr" + +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Zahlung konnte aufgrund eines " +#~ "Datenbankfehlers nicht erstellt werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "Sie sind nicht berechtigt, diese Zahlung zu bearbeiten" + +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Zahlung konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Payment updated successfully" +#~ msgstr "Zahlung erfolgreich aktualisiert" + +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "Sie sind nicht berechtigt, diese Zahlung zu löschen" + +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Zahlung konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Payment deleted successfully" +#~ msgstr "Zahlung erfolgreich gelöscht" + +#~ msgid "No payments selected for deletion" +#~ msgstr "Keine Zahlungen zum Löschen ausgewählt" + +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Zahlungen konnten aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "No payments selected" +#~ msgstr "Keine Zahlungen ausgewählt" + +#~ msgid "Could not update payments due to a database error" +#~ msgstr "" +#~ "Zahlungen konnten aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden" + +#~ msgid "Start date must be before end date" +#~ msgstr "Das Startdatum muss vor dem Enddatum liegen" + +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "Für diesen Standort wurde kein Tagessatz" +#~ " gefunden. Bitte konfigurieren Sie zuerst" +#~ " die Tarife." + +#~ msgid "Per diem claim created successfully" +#~ msgstr "Der Tagessatzanspruch wurde erfolgreich erstellt" + +#~ msgid "Error creating per diem claim" +#~ msgstr "Fehler beim Erstellen des Tagegeldanspruchs" + +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "Sie sind nicht berechtigt, diese Tagessatzabrechnung einzusehen" + +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "Sie sind nicht berechtigt, diesen Tagegeldanspruch zu bearbeiten" + +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "" +#~ "Genehmigte oder erstattete Tagessatzansprüche " +#~ "können nicht bearbeitet werden" + +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Der Tagegeldanspruch wurde erfolgreich aktualisiert" + +#~ msgid "Error updating per diem claim" +#~ msgstr "Fehler beim Aktualisieren des Tagegeldanspruchs" + +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "Sie sind nicht berechtigt, diesen Tagegeldanspruch zu löschen" + +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Der Tagegeldanspruch wurde erfolgreich gelöscht" + +#~ msgid "Error deleting per diem claim" +#~ msgstr "Fehler beim Löschen des Tagessatzanspruchs" + +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "Es wurden keine Tagegeldansprüche zum Löschen ausgewählt" + +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Die Tagegeldansprüche konnten aufgrund eines" +#~ " Datenbankfehlers nicht gelöscht werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "%(count)d Tagegeldansprüche erfolgreich gelöscht" + +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "Übersprungene %(count)d Tagegeldansprüche: %(errors)s" + +#~ msgid "No per diem claims selected" +#~ msgstr "Es wurden keine Tagessatzansprüche ausgewählt" + +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "" +#~ "Die Tagegeldansprüche konnten aufgrund eines" +#~ " Datenbankfehlers nicht aktualisiert werden" + +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "" +#~ "%(count)d Tagegeldansprüche wurden erfolgreich " +#~ "auf %(status)s aktualisiert" + +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "Übersprungen %(count)d Tagegeldansprüche (keine Berechtigung)" + +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "Nur Administratoren können Tagessatzansprüche genehmigen" + +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "Es können nur noch offene Tagesgeldansprüche genehmigt werden" + +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Der Tagegeldanspruch wurde erfolgreich genehmigt" + +#~ msgid "Error approving per diem claim" +#~ msgstr "Fehler bei der Genehmigung des Tagegeldanspruchs" + +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "Nur Administratoren können Tagesgeldansprüche ablehnen" + +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "Lediglich anhängige Tagesgeldansprüche können abgelehnt werden" + +#~ msgid "Per diem claim rejected" +#~ msgstr "Anspruch auf Tagesgeld abgelehnt" + +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Fehler bei der Ablehnung des Tagegeldanspruchs" + +#~ msgid "Per diem rate created successfully" +#~ msgstr "Tagessatz erfolgreich erstellt" + +#~ msgid "Error creating per diem rate" +#~ msgstr "Fehler beim Erstellen des Tagessatzes" + +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Der Tagessatz wurde erfolgreich aktualisiert" + +#~ msgid "Error updating per diem rate" +#~ msgstr "Fehler beim Aktualisieren des Tagessatzes" + +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "Tarif kann nicht gelöscht werden: Er " +#~ "wird von %(count)d Tagessatzansprüchen " +#~ "verwendet. Deaktivieren Sie es stattdessen." + +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "Tagessatz erfolgreich gelöscht" + +#~ msgid "Error deleting per diem rate" +#~ msgstr "Fehler beim Löschen des Tagessatzes" + +#~ msgid "You do not have permission to access this page" +#~ msgstr "Sie haben keine Berechtigung, auf diese Seite zuzugreifen" + +#~ msgid "Role name is required" +#~ msgstr "Rollenname ist erforderlich" + +#~ msgid "A role with this name already exists" +#~ msgstr "Eine Rolle mit diesem Namen existiert bereits" + +#~ msgid "Could not create role due to a database error" +#~ msgstr "Die Rolle konnte aufgrund eines Datenbankfehlers nicht erstellt werden" + +#~ msgid "Role created successfully" +#~ msgstr "Rolle erfolgreich erstellt" + +#~ msgid "System role names cannot be changed" +#~ msgstr "Namen von Systemrollen können nicht geändert werden" + +#~ msgid "Could not update role due to a database error" +#~ msgstr "" +#~ "Die Rolle konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden" + +#~ msgid "Role updated successfully" +#~ msgstr "Rolle erfolgreich aktualisiert" + +#~ msgid "You do not have permission to perform this action" +#~ msgstr "Sie haben keine Berechtigung, diese Aktion auszuführen" + +#~ msgid "System roles cannot be deleted" +#~ msgstr "Systemrollen können nicht gelöscht werden" + +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "Die den Benutzern zugewiesene Rolle kann" +#~ " nicht gelöscht werden. Bitte weisen " +#~ "Sie zuerst Benutzer neu zu." + +#~ msgid "Could not delete role due to a database error" +#~ msgstr "Die Rolle konnte aufgrund eines Datenbankfehlers nicht gelöscht werden" + +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Rolle „%(name)s“ erfolgreich gelöscht" + +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "Nur Super-Admins können die Rolle super_admin zuweisen" + +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "Nur Super-Admins können sich selbst die Admin-Rolle entziehen" + +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "Nur Super-Admins können anderen Benutzern die Admin-Rolle entziehen" + +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "" +#~ "Benutzerrollen konnten aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden" + +#~ msgid "User roles updated successfully" +#~ msgstr "Benutzerrollen erfolgreich aktualisiert" + +#~ msgid "Template created successfully." +#~ msgstr "Vorlage erfolgreich erstellt." + +#~ msgid "Template not found." +#~ msgstr "Vorlage nicht gefunden." + +#~ msgid "You do not have permission to view this template." +#~ msgstr "Sie haben keine Berechtigung, diese Vorlage anzuzeigen." + +#~ msgid "You do not have permission to edit this template." +#~ msgstr "Sie haben keine Berechtigung, diese Vorlage zu bearbeiten." + +#~ msgid "Template updated successfully." +#~ msgstr "Vorlage erfolgreich aktualisiert." + +#~ msgid "Template deleted successfully." +#~ msgstr "Vorlage erfolgreich gelöscht." + +#~ msgid "Please select a client." +#~ msgstr "Bitte wählen Sie einen Kunden aus." + +#~ msgid "Project created from template successfully." +#~ msgstr "Projekt erfolgreich aus Vorlage erstellt." + +#~ msgid "Project name and client are required" +#~ msgstr "Projektname und Kunde sind erforderlich" + +#~ msgid "Invalid budget amount" +#~ msgstr "Ungültiger Budgetbetrag" + +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Ungültiger Budgetschwellenwert in Prozent (0–100)" + +#~ msgid "Could not save project due to a database error" +#~ msgstr "Projekt konnte aufgrund eines Datenbankfehlers nicht gespeichert werden" + +#~ msgid "Project not found" +#~ msgstr "Projekt nicht gefunden" + +#~ msgid "Could not update project due to a database error" +#~ msgstr "" +#~ "Projekt konnte aufgrund eines Datenbankfehlers" +#~ " nicht aktualisiert werden" + +#~ msgid "You do not have permission to archive projects" +#~ msgstr "Sie haben keine Berechtigung zum Archivieren von Projekten" + +#~ msgid "Project is already archived" +#~ msgstr "Das Projekt ist bereits archiviert" + +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "Sie sind nicht berechtigt, Projekte zu dearchivieren" + +#~ msgid "Project is already active" +#~ msgstr "Das Projekt ist bereits aktiv" + +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "Sie sind nicht berechtigt, Projekte zu deaktivieren" + +#~ msgid "Project is already inactive" +#~ msgstr "Das Projekt ist bereits inaktiv" + +#~ msgid "You do not have permission to activate projects" +#~ msgstr "Sie haben keine Berechtigung zum Aktivieren von Projekten" + +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "Projekt mit vorhandenen Zeiteinträgen kann nicht gelöscht werden" + +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Das Projekt konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "You do not have permission to delete projects" +#~ msgstr "Sie sind nicht berechtigt, Projekte zu löschen" + +#~ msgid "No projects selected for deletion" +#~ msgstr "Keine Projekte zum Löschen ausgewählt" + +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Projekte konnten aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "No projects were deleted" +#~ msgstr "Es wurden keine Projekte gelöscht" + +#~ msgid "You do not have permission to change project status" +#~ msgstr "Sie sind nicht berechtigt, den Projektstatus zu ändern" + +#~ msgid "No projects selected" +#~ msgstr "Keine Projekte ausgewählt" + +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Der Projektstatus konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "No projects were updated" +#~ msgstr "Es wurden keine Projekte aktualisiert" + +#~ msgid "Project is already in favorites" +#~ msgstr "Das Projekt ist bereits in den Favoriten" + +#~ msgid "Project added to favorites" +#~ msgstr "Projekt zu Favoriten hinzugefügt" + +#~ msgid "Failed to add project to favorites" +#~ msgstr "Das Projekt konnte nicht zu den Favoriten hinzugefügt werden" + +#~ msgid "Project is not in favorites" +#~ msgstr "Projekt ist nicht in den Favoriten" + +#~ msgid "Project removed from favorites" +#~ msgstr "Projekt aus Favoriten entfernt" + +#~ msgid "Failed to remove project from favorites" +#~ msgstr "Das Projekt konnte nicht aus den Favoriten entfernt werden" + +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "Beschreibung, Kategorie, Menge und Datum sind erforderlich" + +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten keine" +#~ " Kosten hinzugefügt werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "Cost added successfully" +#~ msgstr "Kosten erfolgreich hinzugefügt" + +#~ msgid "Cost not found" +#~ msgstr "Kosten nicht gefunden" + +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "Sie sind nicht berechtigt, diese Kosten zu bearbeiten" + +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten die" +#~ " Kosten nicht aktualisiert werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Cost updated successfully" +#~ msgstr "Kosten erfolgreich aktualisiert" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "Sie sind nicht berechtigt, diese Kosten zu löschen" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "Die in Rechnung gestellten Kosten können nicht gelöscht werden" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kosten konnten aufgrund eines Datenbankfehlers" +#~ " nicht gelöscht werden. Bitte überprüfen" +#~ " Sie die Serverprotokolle." + +#~ msgid "Name and unit price are required" +#~ msgstr "Name und Stückpreis sind erforderlich" + +#~ msgid "Invalid quantity format" +#~ msgstr "Ungültiges Mengenformat" + +#~ msgid "Invalid unit price format" +#~ msgstr "Ungültiges Stückpreisformat" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte keine" +#~ " zusätzliche Ware hinzugefügt werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Extra good added successfully" +#~ msgstr "Extra gut erfolgreich hinzugefügt" + +#~ msgid "Extra good not found" +#~ msgstr "Extra gut nicht gefunden" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "Sie haben keine Berechtigung, dieses Extragut zu bearbeiten" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Extragut konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Extra good updated successfully" +#~ msgstr "Extra gut erfolgreich aktualisiert" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "Sie sind nicht berechtigt, dieses Extragut zu löschen" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "" +#~ "Zusätzliche Ware, die einer Rechnung " +#~ "hinzugefügt wurde, kann nicht gelöscht " +#~ "werden" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Extragut konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Project created successfully" +#~ msgstr "Projekt erfolgreich erstellt" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Ungültiges Format für den Rabattbetrag" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "Das Angebot muss genehmigt werden, bevor es gesendet werden kann" + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "Angebot kann nicht gesendet werden: %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "Sie sind nicht berechtigt, Anhänge zu diesem Angebot hochzuladen" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "Sie sind nicht berechtigt, diesen Anhang herunterzuladen" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "" +#~ "Sie sind nicht berechtigt, eine " +#~ "Genehmigung für dieses Angebot anzufordern" + +#~ msgid "This quote does not require approval" +#~ msgstr "Dieses Angebot bedarf keiner Genehmigung" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "Genehmigung kann nicht angefordert werden: %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte keine" +#~ " Genehmigung angefordert werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "Approval requested successfully" +#~ msgstr "Genehmigung erfolgreich angefordert" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Dieses Angebot muss nicht genehmigt werden" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "Angebot kann nicht genehmigt werden: %(error)s" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Das Angebot konnte aufgrund eines " +#~ "Datenbankfehlers nicht genehmigt werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Quote approved successfully" +#~ msgstr "Angebot erfolgreich genehmigt" + +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "Zitat kann nicht abgelehnt werden: %(error)s" + +#~ msgid "Quote approval rejected" +#~ msgstr "Angebotsgenehmigung abgelehnt" + +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Vorlage konnte aufgrund eines " +#~ "Datenbankfehlers nicht erstellt werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Template created successfully" +#~ msgstr "Vorlage erfolgreich erstellt" + +#~ msgid "Quote ID is required" +#~ msgstr "Angebots-ID ist erforderlich" + +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "Sie sind nicht berechtigt, eine Vorlage aus diesem Angebot zu erstellen" + +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Vorlage konnte aufgrund eines " +#~ "Datenbankfehlers nicht gespeichert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Template saved successfully" +#~ msgstr "Vorlage erfolgreich gespeichert" + +#~ msgid "You do not have permission to export this quote" +#~ msgstr "Sie verfügen nicht über die Berechtigung, dieses Angebot zu exportieren" + +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Fehler beim Generieren von PDF: %(error)s" + +#~ msgid "Recipient email address is required" +#~ msgstr "Die E-Mail-Adresse des Empfängers ist erforderlich" + +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Angebot erfolgreich an %(email)s gesendet" + +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "Angebot konnte nicht gesendet werden: %(error)s" + +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Fehler beim Senden der E-Mail: %(error)s" + +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "Sie sind nicht berechtigt, dieses Zitat zu duplizieren" + +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte das " +#~ "Angebot nicht dupliziert werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte das " +#~ "duplizierte Angebot nicht abgeschlossen " +#~ "werden. Bitte überprüfen Sie die " +#~ "Serverprotokolle." + +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "Angebot %(quote_number)s wurde als Duplikat erstellt" + +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Bitte wählen Sie eine Aktion und mindestens ein Zitat aus" + +#~ msgid "Invalid quote IDs" +#~ msgstr "Ungültige Angebots-IDs" + +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "Keine Zitate gefunden oder Sie haben keine Berechtigung" + +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "Doppelte %(count)d Zitat(e)" + +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "%(count)d Zitat(e) konnten nicht dupliziert werden" + +#~ msgid "Error duplicating quotes" +#~ msgstr "Fehler beim Duplizieren von Anführungszeichen" + +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "%(count)d Angebot(e) als gesendet markiert" + +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "%(count)d Angebote konnten nicht als gesendet markiert werden" + +#~ msgid "Error updating quotes" +#~ msgstr "Fehler beim Aktualisieren der Angebote" + +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "Gelöschte %(count)d Zitat(e)" + +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "" +#~ "%(count)d Zitat(e) konnten nicht gelöscht " +#~ "werden (möglicherweise in Verwendung)" + +#~ msgid "Error deleting quotes" +#~ msgstr "Fehler beim Löschen der Angebote" + +#~ msgid "Invalid action" +#~ msgstr "Ungültige Aktion" + +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "Sie haben keine Berechtigung, Bilder zu diesem Angebot hochzuladen" + +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "Sie haben keine Berechtigung, Bilder von diesem Angebot zu löschen" + +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "" +#~ "Name, Projekt, Kunde, Häufigkeit und " +#~ "nächstes Ausführungsdatum sind erforderlich" + +#~ msgid "Invalid next run date format" +#~ msgstr "Ungültiges Datumsformat für die nächste Ausführung" + +#~ msgid "Invalid end date format" +#~ msgstr "Ungültiges Enddatumsformat" + +#~ msgid "Selected project or client not found" +#~ msgstr "Ausgewähltes Projekt oder Kunde nicht gefunden" + +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte keine" +#~ " wiederkehrende Rechnung erstellt werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "Sie sind nicht berechtigt, diese wiederkehrende Rechnung anzuzeigen" + +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "Sie sind nicht berechtigt, diese wiederkehrende Rechnung zu bearbeiten" + +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Die wiederkehrende Rechnung konnte aufgrund" +#~ " eines Datenbankfehlers nicht aktualisiert " +#~ "werden. Bitte überprüfen Sie die " +#~ "Serverprotokolle." + +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Die wiederkehrende Rechnung wurde erfolgreich aktualisiert" + +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "Sie sind nicht berechtigt, diese wiederkehrende Rechnung zu löschen" + +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Die wiederkehrende Rechnung konnte aufgrund" +#~ " eines Datenbankfehlers nicht gelöscht " +#~ "werden. Bitte überprüfen Sie die " +#~ "Serverprotokolle." + +#~ msgid "Recurring task created successfully" +#~ msgstr "Wiederkehrende Aufgabe erfolgreich erstellt" + +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "Sie haben keine Berechtigung, Zeiteinträge anderer Benutzer anzuzeigen" + +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" +#~ "Sie haben keine Berechtigung, Zeiteinträge " +#~ "anderer Benutzer zu exportieren" + +#~ msgid "Start" +#~ msgstr "Start" + +#~ msgid "End" +#~ msgstr "Ende" + +#~ msgid "Duration (hours)" +#~ msgstr "Dauer (Stunden)" + +#~ msgid "Task" +#~ msgstr "Aufgabe" + +#~ msgid "Notes" +#~ msgstr "Notizen" + +#~ msgid "Billed" +#~ msgstr "Abgerechnet" + +#~ msgid "Client" +#~ msgstr "Kunde" + +#~ msgid "User" +#~ msgstr "Benutzer" + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "No" +#~ msgstr "NEIN" + +#~ msgid "You do not have permission to access this page." +#~ msgstr "Sie haben keine Berechtigung, auf diese Seite zuzugreifen." + +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "Der Filter konnte aufgrund eines Datenbankfehlers nicht gelöscht werden" + +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" +#~ "Fehler beim Laden geplanter Berichte. " +#~ "Bitte überprüfen Sie die Protokolle." + +#~ msgid "Please fill in all required fields." +#~ msgstr "Bitte füllen Sie alle erforderlichen Felder aus." + +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" +#~ "Bitte geben Sie einen benutzerdefinierten " +#~ "Feldnamen an, wenn Sie die " +#~ "Berichtsiteration aktivieren." + +#~ msgid "Scheduled report created successfully." +#~ msgstr "Geplanter Bericht erfolgreich erstellt." + +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "Geplanter Bericht erfolgreich gelöscht." + +#~ msgid "Permission denied" +#~ msgstr "Zugriff verweigert" + +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "Sie haben keine Berechtigung, diesen Zeitplan zu korrigieren." + +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "Geplanter Bericht gelöscht: Gespeicherte Ansicht existiert nicht mehr." + +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "Geplanter Bericht deaktiviert: Ungültige Konfiguration." + +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" +#~ "Geplanter Bericht deaktiviert: Konfiguration " +#~ "konnte nicht geparst werden." + +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "Geplanter Bericht validiert und reaktiviert." + +#~ msgid "Saved report view not found" +#~ msgstr "Gespeicherte Berichtsansicht nicht gefunden" + +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "Ihre Einstellungen werden auf der Haupteinstellungsseite verwaltet." + +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "Einstellungen konnten nicht gespeichert " +#~ "werden. Bitte überprüfen Sie die " +#~ "Serverprotokolle." + +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "" +#~ "Einrichtung abgeschlossen! Vielen Dank, dass" +#~ " Sie uns dabei geholfen haben, " +#~ "TimeTracker zu verbessern." + +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" +#~ "Einrichtung abgeschlossen! Detaillierte Analysen " +#~ "sind deaktiviert; anonyme Basis-Telemetrie " +#~ "bleibt aktiv." + +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "Google Calendar OAuth-Anmeldedaten wurden konfiguriert." + +#~ msgid "Project and task name are required" +#~ msgstr "Projekt- und Aufgabenname sind erforderlich" + +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "Ungültiger Aufgabenname: %(error)s" + +#~ msgid "Selected project does not exist" +#~ msgstr "Das ausgewählte Projekt existiert nicht" + +#~ msgid "Task not found" +#~ msgstr "Aufgabe nicht gefunden" + +#~ msgid "You do not have access to this task" +#~ msgstr "Sie haben keinen Zugriff auf diese Aufgabe" + +#~ msgid "You can only edit tasks you created" +#~ msgstr "Sie können nur Aufgaben bearbeiten, die Sie erstellt haben" + +#~ msgid "Task name is required" +#~ msgstr "Der Aufgabenname ist erforderlich" + +#~ msgid "Project is required" +#~ msgstr "Projekt ist erforderlich" + +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Der Status konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Aufgabe konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "You do not have permission to update this task" +#~ msgstr "Sie sind nicht berechtigt, diese Aufgabe zu aktualisieren" + +#~ msgid "You can only update tasks you created" +#~ msgstr "Sie können nur Aufgaben aktualisieren, die Sie erstellt haben" + +#~ msgid "You can only assign tasks you created" +#~ msgstr "Sie können nur von Ihnen erstellte Aufgaben zuweisen" + +#~ msgid "Selected user does not exist" +#~ msgstr "Der ausgewählte Benutzer existiert nicht" + +#~ msgid "Task unassigned" +#~ msgstr "Aufgabe nicht zugewiesen" + +#~ msgid "You can only delete tasks you created" +#~ msgstr "Sie können nur Aufgaben löschen, die Sie erstellt haben" + +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "Aufgabe mit vorhandenen Zeiteinträgen kann nicht gelöscht werden" + +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Die Aufgabe konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "No tasks selected for deletion" +#~ msgstr "Keine Aufgaben zum Löschen ausgewählt" + +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten " +#~ "Aufgaben nicht gelöscht werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "No tasks selected" +#~ msgstr "Keine Aufgaben ausgewählt" + +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten " +#~ "Aufgaben nicht aktualisiert werden" + +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Fälligkeitsdatum ist erforderlich (JJJJ-MM-TT)" + +#~ msgid "Due date is required" +#~ msgstr "Fälligkeitsdatum ist erforderlich" + +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Ungültiges Datumsformat. Verwenden Sie JJJJ-MM-TT" + +#~ msgid "Database error" +#~ msgstr "Datenbankfehler" + +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "%(count)s Aufgabe(n) aktualisiert" + +#~ msgid "No tasks updated" +#~ msgstr "Keine Aufgaben aktualisiert" + +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "" +#~ "Fälligkeitsdatum von %(count)s Aufgabe(n) " +#~ "erfolgreich auf %(date)s aktualisiert" + +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "%(count)s Aufgabe(n) übersprungen (keine Berechtigung)" + +#~ msgid "Invalid priority value" +#~ msgstr "Ungültiger Prioritätswert" + +#~ msgid "No user selected for assignment" +#~ msgstr "Kein Benutzer für die Zuweisung ausgewählt" + +#~ msgid "Invalid user selected" +#~ msgstr "Ungültiger Benutzer ausgewählt" + +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten keine" +#~ " Aufgaben zugewiesen werden" + +#~ msgid "No project selected" +#~ msgstr "Kein Projekt ausgewählt" + +#~ msgid "Invalid project selected" +#~ msgstr "Ungültiges Projekt ausgewählt" + +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "" +#~ "Aufgaben konnten aufgrund eines " +#~ "Datenbankfehlers nicht verschoben werden" + +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "Nur Administratoren können alle überfälligen Aufgaben anzeigen" + +#~ msgid "You don't have access to this channel" +#~ msgstr "Sie haben keinen Zugriff auf diesen Kanal" + +#~ msgid "Message cannot be empty" +#~ msgstr "Nachricht darf nicht leer sein" + +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "Anhangsdaten waren ungültig; Nachricht ohne Anhang gesendet." + +#~ msgid "Invalid message" +#~ msgstr "Ungültige Nachricht" + +#~ msgid "No attachment found" +#~ msgstr "Kein Anhang gefunden" + +#~ msgid "Invalid filename" +#~ msgstr "Ungültiger Dateiname" + +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "Serverfehler: Upload-Verzeichnis konnte nicht erstellt werden" + +#~ msgid "Server error: Could not save file" +#~ msgstr "Serverfehler: Datei konnte nicht gespeichert werden" + +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "Direktnachricht an sich selbst kann nicht erstellt werden" + +#~ msgid "User is not active" +#~ msgstr "Benutzer ist nicht aktiv" + +#~ msgid "Time entry approved" +#~ msgstr "Zeiteintrag genehmigt" + +#~ msgid "Time entry rejected" +#~ msgstr "Zeiteintrag abgelehnt" + +#~ msgid "Approval requested" +#~ msgstr "Genehmigung angefordert" + +#~ msgid "Approval cancelled" +#~ msgstr "Genehmigung abgebrochen" + +#~ msgid "Could not create template due to a database error" +#~ msgstr "" +#~ "Die Vorlage konnte aufgrund eines " +#~ "Datenbankfehlers nicht erstellt werden" + +#~ msgid "Could not update template due to a database error" +#~ msgstr "" +#~ "Die Vorlage konnte aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden" + +#~ msgid "Could not delete template due to a database error" +#~ msgstr "" +#~ "Die Vorlage konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden" + +#~ msgid "Either a project or a client is required" +#~ msgstr "Entweder ein Projekt oder ein Kunde ist erforderlich" + +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "Der Timer für ein archiviertes Projekt" +#~ " kann nicht gestartet werden. Bitte " +#~ "dearchivieren Sie zunächst das Projekt." + +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "Der Timer für ein inaktives Projekt kann nicht gestartet werden" + +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "Die ausgewählte Aufgabe ist für das ausgewählte Projekt ungültig" + +#~ msgid "Invalid client selected" +#~ msgstr "Ungültiger Kunde ausgewählt" + +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "Aufgaben können nur für projektbasierte Timer ausgewählt werden" + +#~ msgid "You do not have access to this project" +#~ msgstr "Sie haben keinen Zugriff auf dieses Projekt" + +#~ msgid "You do not have access to this client" +#~ msgstr "Sie haben keinen Zugriff auf diesen Kunden" + +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "" +#~ "Sie haben bereits einen aktiven Timer." +#~ " Stoppen Sie es, bevor Sie ein " +#~ "neues beginnen." + +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Der Timer konnte aufgrund eines " +#~ "Datenbankfehlers nicht gestartet werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "Unknown" +#~ msgstr "Unbekannt" + +#~ msgid "Timer started" +#~ msgstr "Timer gestartet" + +#~ msgid "Template must have a project to start a timer" +#~ msgstr "Die Vorlage muss über ein Projekt verfügen, um einen Timer zu starten" + +#~ msgid "Cannot start timer for this project" +#~ msgstr "Der Timer für dieses Projekt kann nicht gestartet werden" + +#~ msgid "No active timer to stop" +#~ msgstr "Kein aktiver Timer zum Stoppen" + +#~ msgid "No project" +#~ msgstr "Kein Projekt" + +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "Timer kann nicht gestoppt werden: %(error)s" + +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" +#~ "Timer konnte aufgrund eines Fehlers " +#~ "nicht gestoppt werden. Bitte versuchen " +#~ "Sie es erneut oder wenden Sie sich" +#~ " an den Support, wenn das Problem " +#~ "anhält." + +#~ msgid "No active timer to pause" +#~ msgstr "Kein aktiver Timer zum Pausieren" + +#~ msgid "Timer paused" +#~ msgstr "Timer pausiert" + +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "Timer konnte nicht pausiert werden. Bitte versuchen Sie es erneut." + +#~ msgid "No active timer to resume" +#~ msgstr "Kein aktiver Timer zum Fortsetzen" + +#~ msgid "Timer resumed" +#~ msgstr "Timer fortgesetzt" + +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "Timer konnte nicht fortgesetzt werden. Bitte versuchen Sie es erneut." + +#~ msgid "No active timer to adjust" +#~ msgstr "Kein aktiver Timer zum Anpassen" + +#~ msgid "Invalid adjustment value" +#~ msgstr "Ungültiger Anpassungswert" + +#~ msgid "You can only edit your own timers" +#~ msgstr "Sie können nur Ihre eigenen Timer bearbeiten" + +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Ungültige Aufgabe für das ausgewählte Projekt ausgewählt" + +#~ msgid "Start time cannot be in the future" +#~ msgstr "Die Startzeit darf nicht in der Zukunft liegen" + +#~ msgid "Invalid start date/time format" +#~ msgstr "Ungültiges Format für Startdatum/-uhrzeit" + +#~ msgid "End time must be after start time" +#~ msgstr "Die Endzeit muss nach der Startzeit liegen" + +#~ msgid "Invalid end date/time format" +#~ msgstr "Ungültiges Format für Enddatum/-uhrzeit" + +#~ msgid "Timer updated successfully" +#~ msgstr "Timer erfolgreich aktualisiert" + +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "Sie haben keine Berechtigung, diesen Zeiteintrag anzuzeigen" + +#~ msgid "You can only delete your own timers" +#~ msgstr "Sie können nur Ihre eigenen Timer löschen" + +#~ msgid "Cannot delete an active timer" +#~ msgstr "Ein aktiver Timer kann nicht gelöscht werden" + +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Der Timer konnte aufgrund eines " +#~ "Datenbankfehlers nicht gelöscht werden. Bitte" +#~ " überprüfen Sie die Serverprotokolle." + +#~ msgid "No time entries selected" +#~ msgstr "Keine Zeiteinträge ausgewählt" + +#~ msgid "Invalid entry IDs" +#~ msgstr "Ungültige Eintrags-IDs" + +#~ msgid "No time entries found" +#~ msgstr "Keine Zeiteinträge gefunden" + +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "%(count)d Zeiteintrag/Zeiteinträge erfolgreich gelöscht" + +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" +#~ "%(count)d Zeiteintrag/Zeiteinträge übersprungen " +#~ "(keine Berechtigung oder aktiver Timer)" + +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" +#~ "Bitte geben Sie entweder Start-/Endzeit " +#~ "oder eine Arbeitsdauer (HH:MM) an." + +#~ msgid "Either a project or a client must be selected" +#~ msgstr "Entweder ein Projekt oder ein Kunde muss ausgewählt werden" + +#~ msgid "Invalid date/time format" +#~ msgstr "Ungültiges Datums-/Uhrzeitformat" + +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "Manueller Eintrag erstellt für %(project)s - %(task)s" + +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "Manueller Eintrag erstellt für %(target)s" + +#~ msgid "All fields are required" +#~ msgstr "Alle Felder sind Pflichtfelder" + +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "Für ein archiviertes Projekt können " +#~ "keine Zeiteinträge erstellt werden. Bitte " +#~ "dearchivieren Sie zunächst das Projekt." + +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "Für ein inaktives Projekt können keine Zeiteinträge erstellt werden" + +#~ msgid "Invalid task selected" +#~ msgstr "Ungültige Aufgabe ausgewählt" + +#~ msgid "End date must be after or equal to start date" +#~ msgstr "Das Enddatum muss nach oder gleich dem Startdatum liegen" + +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "Der Datumsbereich darf 31 Tage nicht überschreiten" + +#~ msgid "Invalid time format" +#~ msgstr "Ungültiges Zeitformat" + +#~ msgid "No valid dates found in the selected range" +#~ msgstr "Im ausgewählten Bereich wurden keine gültigen Daten gefunden" + +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnten keine" +#~ " Masseneinträge erstellt werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "" +#~ "Beim Erstellen von Masseneinträgen ist " +#~ "ein Fehler aufgetreten. Bitte versuchen " +#~ "Sie es erneut." + +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Sie können nur Ihre eigenen Timer duplizieren" + +#~ msgid "You can only resume your own timers" +#~ msgstr "Sie können nur Ihre eigenen Timer fortsetzen" + +#~ msgid "Project no longer exists" +#~ msgstr "Projekt existiert nicht mehr" + +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "Kunde existiert nicht mehr oder ist inaktiv" + +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "Timer ist nicht mit einem Projekt oder Kunden verknüpft" + +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Aufgrund eines Datenbankfehlers konnte der " +#~ "Timer nicht fortgesetzt werden. Bitte " +#~ "überprüfen Sie die Serverprotokolle." + +#~ msgid "Resumed timer" +#~ msgstr "Timer fortgesetzt" + +#~ msgid "Invalid paid status" +#~ msgstr "Ungültiger Zahlungsstatus" + +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Zeiteinträge konnten aufgrund eines " +#~ "Datenbankfehlers nicht aktualisiert werden. " +#~ "Bitte überprüfen Sie die Serverprotokolle." + +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "%(count)d Zeiteintrag/Zeiteinträge erfolgreich als %(status)s markiert" + +#~ msgid "paid" +#~ msgstr "bezahlt" + +#~ msgid "unpaid" +#~ msgstr "unbezahlt" + +#~ msgid "Invalid timezone selected" +#~ msgstr "Ungültige Zeitzone ausgewählt" + +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "Die Standardstunden pro Tag müssen zwischen 0,5 und 24 liegen" + +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "Standardstunden pro Woche müssen zwischen 1 und 168 liegen" + +#~ msgid "Settings saved successfully" +#~ msgstr "Einstellungen erfolgreich gespeichert" + +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Fehler beim Speichern der Einstellungen: %(error)s" + +#~ msgid "This instance is already licensed." +#~ msgstr "Diese Instanz ist bereits lizenziert." + +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "Lizenz aktiviert. Vielen Dank für Ihre Unterstützung von TimeTracker!" + +#~ msgid "Error saving settings." +#~ msgstr "Fehler beim Speichern der Einstellungen." + +#~ msgid "Preferences updated" +#~ msgstr "Einstellungen aktualisiert" + +#~ msgid "Language updated successfully" +#~ msgstr "Sprache erfolgreich aktualisiert" + +#~ msgid "Invalid language" +#~ msgstr "Ungültige Sprache" + +#~ msgid "Language updated to %(language)s" +#~ msgstr "Sprache auf %(language)s aktualisiert" + +#~ msgid "Webhook name is required" +#~ msgstr "Webhook-Name ist erforderlich" + +#~ msgid "Webhook URL is required" +#~ msgstr "Webhook-URL ist erforderlich" + +#~ msgid "At least one event must be selected" +#~ msgstr "Es muss mindestens ein Ereignis ausgewählt werden" + +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook erfolgreich erstellt" + +#~ msgid "Error creating webhook" +#~ msgstr "Fehler beim Erstellen des Webhooks" + +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "Fehler beim Erstellen des Webhooks: %(error)s" + +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook wurde erfolgreich aktualisiert" + +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "Fehler beim Aktualisieren des Webhooks: %(error)s" + +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook erfolgreich gelöscht" + +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "Fehler beim Löschen des Webhooks: %(error)s" + +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Bitte geben Sie eine gültige Zielstundenzahl ein (größer als 0)" + +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "Für diese Woche existiert bereits ein" +#~ " Ziel. Bitte bearbeiten Sie stattdessen " +#~ "das vorhandene Ziel." + +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Wöchentliches Zeitziel erfolgreich erstellt!" + +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "Ziel konnte nicht erstellt werden. Bitte versuchen Sie es erneut." + +#~ msgid "You do not have permission to view this goal" +#~ msgstr "Sie haben keine Berechtigung, dieses Ziel anzuzeigen" + +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "Sie sind nicht berechtigt, dieses Ziel zu bearbeiten" + +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Wöchentliches Zeitziel erfolgreich aktualisiert!" + +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "" +#~ "Das Ziel konnte nicht aktualisiert " +#~ "werden. Bitte versuchen Sie es erneut." + +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "Sie sind nicht berechtigt, dieses Ziel zu löschen" + +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Wöchentliches Zeitziel erfolgreich gelöscht" + +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "Ziel konnte nicht gelöscht werden. Bitte versuchen Sie es erneut." + +#~ msgid "Workflow created successfully" +#~ msgstr "Workflow erfolgreich erstellt" + +#~ msgid "Task Status Changes" +#~ msgstr "Aufgabenstatusänderungen" + +#~ msgid "Task Created" +#~ msgstr "Aufgabe erstellt" + +#~ msgid "Task Completed" +#~ msgstr "Aufgabe abgeschlossen" + +#~ msgid "Time Logged" +#~ msgstr "Zeit erfasst" + +#~ msgid "Deadline Approaching" +#~ msgstr "Frist nähert sich" + +#~ msgid "Budget Threshold Reached" +#~ msgstr "Budgetschwelle erreicht" + +#~ msgid "Invoice Created" +#~ msgstr "Rechnung erstellt" + +#~ msgid "Invoice Paid" +#~ msgstr "Rechnung bezahlt" + +#~ msgid "Log Time Entry" +#~ msgstr "Zeiteintrag protokollieren" + +#~ msgid "Send Notification" +#~ msgstr "Benachrichtigung senden" + +#~ msgid "Update Status" +#~ msgstr "Aktualisierungsstatus" + +#~ msgid "Assign Task" +#~ msgstr "Aufgabe zuweisen" + +#~ msgid "Create Task" +#~ msgstr "Aufgabe erstellen" + +#~ msgid "Update Project" +#~ msgstr "Projekt aktualisieren" + +#~ msgid "Send Email" +#~ msgstr "E-Mail senden" + +#~ msgid "Trigger Webhook" +#~ msgstr "Webhook auslösen" + +#~ msgid "Workflow updated successfully" +#~ msgstr "Workflow erfolgreich aktualisiert" + +#~ msgid "Workflow deleted successfully" +#~ msgstr "Workflow erfolgreich gelöscht" + +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "Stundenzettelzeitraum bereit: %(start)s bis %(end)s" + +#~ msgid "Timesheet period submitted" +#~ msgstr "Stundenzettelzeitraum eingereicht" + +#~ msgid "Timesheet period approved" +#~ msgstr "Stundenzettelzeitraum genehmigt" + +#~ msgid "Timesheet period rejected" +#~ msgstr "Stundenzeitraum abgelehnt" + +#~ msgid "Only admins can close periods" +#~ msgstr "Nur Administratoren können Zeiträume schließen" + +#~ msgid "Timesheet period closed" +#~ msgstr "Stundenzettelzeitraum geschlossen" + +#~ msgid "Timesheet policy updated" +#~ msgstr "Stundenblatt-Richtlinie aktualisiert" + +#~ msgid "Name and code are required" +#~ msgstr "Name und Code sind erforderlich" + +#~ msgid "Leave type created" +#~ msgstr "Abwesenheitstyp erstellt" + +#~ msgid "Leave type and date range are required" +#~ msgstr "Abwesenheitstyp und Datumsbereich sind erforderlich" + +#~ msgid "Time-off request submitted" +#~ msgstr "Abwesenheitsantrag eingereicht" + +#~ msgid "Time-off request approved" +#~ msgstr "Urlaubsantrag genehmigt" + +#~ msgid "Time-off request rejected" +#~ msgstr "Urlaubsantrag abgelehnt" + +#~ msgid "Name and date range are required" +#~ msgstr "Name und Datumsbereich sind erforderlich" + +#~ msgid "Holiday created" +#~ msgstr "Feiertag erstellt" + +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "Start- und Enddatum sind für den Lohnexport erforderlich" + +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "Start- und Enddatum sind für den Kapazitätsexport erforderlich" + +#~ msgid "remaining" +#~ msgstr "übrig" + +#~ msgid "Success" +#~ msgstr "Erfolg" + +#~ msgid "Error" +#~ msgstr "Fehler" + +#~ msgid "Warning" +#~ msgstr "Warnung" + +#~ msgid "Information" +#~ msgstr "Information" + +#~ msgid "Loading..." +#~ msgstr "Laden..." + +#~ msgid "Saving..." +#~ msgstr "Sparen..." + +#~ msgid "Deleting..." +#~ msgstr "Löschen..." + +#~ msgid "Cancel" +#~ msgstr "Stornieren" + +#~ msgid "Confirm" +#~ msgstr "Bestätigen" + +#~ msgid "Close" +#~ msgstr "Schließen" + +#~ msgid "Save" +#~ msgstr "Speichern" + +#~ msgid "Delete" +#~ msgstr "Löschen" + +#~ msgid "Edit" +#~ msgstr "Bearbeiten" + +#~ msgid "Add" +#~ msgstr "Hinzufügen" + +#~ msgid "Remove" +#~ msgstr "Entfernen" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Sind Sie sicher, dass Sie dies löschen möchten?" + +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "" +#~ "Sie haben nicht gespeicherte Änderungen. " +#~ "Sind Sie sicher, dass Sie gehen " +#~ "möchten?" + +#~ msgid "Operation failed" +#~ msgstr "Der Vorgang ist fehlgeschlagen" + +#~ msgid "Operation completed successfully" +#~ msgstr "Der Vorgang wurde erfolgreich abgeschlossen" + +#~ msgid "No items selected" +#~ msgstr "Keine Elemente ausgewählt" + +#~ msgid "Invalid input" +#~ msgstr "Ungültige Eingabe" + +#~ msgid "This field is required" +#~ msgstr "Dieses Feld ist erforderlich" + +#~ msgid "No active timer" +#~ msgstr "Kein aktiver Timer" + +#~ msgid "Timer stopped" +#~ msgstr "Timer gestoppt" + +#~ msgid "Failed to stop timer" +#~ msgstr "Timer konnte nicht gestoppt werden" + +#~ msgid "Error stopping timer" +#~ msgstr "Fehler beim Stoppen des Timers" + +#~ msgid "No form to save" +#~ msgstr "Kein Formular zum Speichern" + +#~ msgid "No timer found" +#~ msgstr "Kein Timer gefunden" + +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Der Timer wurde aufgrund von Inaktivität gestoppt" + +#~ msgid "Please select either a project or a client" +#~ msgstr "Bitte wählen Sie entweder ein Projekt oder einen Kunden aus" + +#~ msgid "Skip to content" +#~ msgstr "Zum Inhalt springen" + +#~ msgid "Main navigation" +#~ msgstr "Hauptnavigation" + +#~ msgid "Navigation" +#~ msgstr "Navigation" + +#~ msgid "Open command palette" +#~ msgstr "Befehlspalette öffnen" + +#~ msgid "Commands" +#~ msgstr "Befehle" + +#~ msgid "Toggle sidebar" +#~ msgstr "Seitenleiste umschalten" + +#~ msgid "Dashboard" +#~ msgstr "Armaturenbrett" + +#~ msgid "Timer" +#~ msgstr "Timer" + +#~ msgid "Time entries" +#~ msgstr "Zeiteinträge" + +#~ msgid "Reports" +#~ msgstr "Berichte" + +#~ msgid "Calendar" +#~ msgstr "Kalender" + +#~ msgid "Calendar View" +#~ msgstr "Kalenderansicht" + +#~ msgid "Integrations" +#~ msgstr "Integrationen" + +#~ msgid "Time Tracking" +#~ msgstr "Zeiterfassung" + +#~ msgid "Time Approvals" +#~ msgstr "Zeitgenehmigungen" + +#~ msgid "Project Templates" +#~ msgstr "Projektvorlagen" + +#~ msgid "Gantt Chart" +#~ msgstr "Gantt-Diagramm" + +#~ msgid "Tasks" +#~ msgstr "Aufgaben" + +#~ msgid "Issues" +#~ msgstr "Probleme" + +#~ msgid "Kanban Board" +#~ msgstr "Kanban-Board" + +#~ msgid "Weekly Goals" +#~ msgstr "Wöchentliche Ziele" + +#~ msgid "Workforce" +#~ msgstr "Belegschaft" + +#~ msgid "Time Entry Templates" +#~ msgstr "Zeiteintragsvorlagen" + +#~ msgid "CRM" +#~ msgstr "CRM" + +#~ msgid "Clients" +#~ msgstr "Kunden" + +#~ msgid "Contacts" +#~ msgstr "Kontakte" + +#~ msgid "via Clients" +#~ msgstr "über Kunden" + +#~ msgid "Deals" +#~ msgstr "Deals" + +#~ msgid "Leads" +#~ msgstr "Leads" + +#~ msgid "Quotes" +#~ msgstr "Zitate" + +#~ msgid "Finance & Expenses" +#~ msgstr "Finanzen und Ausgaben" + +#~ msgid "All Reports" +#~ msgstr "Alle Berichte" + +#~ msgid "Report Builder" +#~ msgstr "Berichtsgenerator" + +#~ msgid "Saved Views" +#~ msgstr "Gespeicherte Ansichten" + +#~ msgid "Scheduled Reports" +#~ msgstr "Geplante Berichte" + +#~ msgid "Invoices" +#~ msgstr "Rechnungen" + +#~ msgid "Invoice Approvals" +#~ msgstr "Rechnungsgenehmigungen" + +#~ msgid "Payment Gateways" +#~ msgstr "Zahlungsanbieter" + +#~ msgid "Recurring Invoices" +#~ msgstr "Wiederkehrende Rechnungen" + +#~ msgid "Payments" +#~ msgstr "Zahlungen" + +#~ msgid "Expenses" +#~ msgstr "Kosten" + +#~ msgid "Mileage" +#~ msgstr "Kilometerstand" + +#~ msgid "Per Diem" +#~ msgstr "Pro Tag" + +#~ msgid "Budget Alerts" +#~ msgstr "Budgetwarnungen" + +#~ msgid "Inventory" +#~ msgstr "Inventar" + +#~ msgid "Stock Items" +#~ msgstr "Lagerartikel" + +#~ msgid "Warehouses" +#~ msgstr "Lagerhäuser" + +#~ msgid "Suppliers" +#~ msgstr "Lieferanten" + +#~ msgid "Purchase Orders" +#~ msgstr "Bestellungen" + +#~ msgid "Stock Levels" +#~ msgstr "Lagerbestände" + +#~ msgid "Stock Movements" +#~ msgstr "Lagerbewegungen" + +#~ msgid "Transfers" +#~ msgstr "Überweisungen" + +#~ msgid "Adjustments" +#~ msgstr "Anpassungen" + +#~ msgid "Reservations" +#~ msgstr "Reservierungen" + +#~ msgid "Low Stock Alerts" +#~ msgstr "Warnungen bei niedrigem Lagerbestand" + +#~ msgid "Analytics" +#~ msgstr "Analytik" + +#~ msgid "Tools & Data" +#~ msgstr "Tools & Daten" + +#~ msgid "Import / Export" +#~ msgstr "Importieren / Exportieren" + +#~ msgid "Saved Filters" +#~ msgstr "Gespeicherte Filter" + +#~ msgid "Admin" +#~ msgstr "Admin" + +#~ msgid "Admin Dashboard" +#~ msgstr "Admin-Dashboard" + +#~ msgid "User Management" +#~ msgstr "Benutzerverwaltung" + +#~ msgid "Manage Users" +#~ msgstr "Benutzer verwalten" + +#~ msgid "Roles & Permissions" +#~ msgstr "Rollen und Berechtigungen" + +#~ msgid "PDF Templates" +#~ msgstr "PDF-Vorlagen" + +#~ msgid "Invoice PDF" +#~ msgstr "Rechnungs-PDF" + +#~ msgid "Quote PDF" +#~ msgstr "Angebots-PDF" + +#~ msgid "System Settings" +#~ msgstr "Systemeinstellungen" + +#~ msgid "Settings" +#~ msgstr "Einstellungen" + +#~ msgid "Module Management" +#~ msgstr "Modulverwaltung" + +#~ msgid "Email Configuration" +#~ msgstr "E-Mail-Konfiguration" + +#~ msgid "Email Templates" +#~ msgstr "E-Mail-Vorlagen" + +#~ msgid "OIDC Settings" +#~ msgstr "OIDC-Einstellungen" + +#~ msgid "Security & Access" +#~ msgstr "Sicherheit & Zugriff" + +#~ msgid "API Tokens" +#~ msgstr "API-Tokens" + +#~ msgid "Audit Logs" +#~ msgstr "Audit-Protokolle" + +#~ msgid "Data Management" +#~ msgstr "Datenverwaltung" + +#~ msgid "Expense Categories" +#~ msgstr "Ausgabenkategorien" + +#~ msgid "Per Diem Rates" +#~ msgstr "Tagessätze" + +#~ msgid "Custom Fields" +#~ msgstr "Benutzerdefinierte Felder" + +#~ msgid "Link Templates" +#~ msgstr "Link-Vorlagen" + +#~ msgid "System Maintenance" +#~ msgstr "Systemwartung" + +#~ msgid "System Info" +#~ msgstr "Systeminformationen" + +#~ msgid "Backups" +#~ msgstr "Backups" + +#~ msgid "Telemetry" +#~ msgstr "Datenerfassung" + +#~ msgid "About" +#~ msgstr "Über" + +#~ msgid "Help" +#~ msgstr "Helfen" + +#~ msgid "Open support options" +#~ msgstr "Support-Optionen öffnen" + +#~ msgid "Support TimeTracker" +#~ msgstr "Unterstützen Sie TimeTracker" + +#~ msgid "Open sidebar" +#~ msgstr "Seitenleiste öffnen" + +#~ msgid "Search" +#~ msgstr "Suchen" + +#~ msgid "Theme" +#~ msgstr "Thema" + +#~ msgid "Theme options" +#~ msgstr "Designoptionen" + +#~ msgid "Light" +#~ msgstr "Licht" + +#~ msgid "Dark" +#~ msgstr "Dunkel" + +#~ msgid "System" +#~ msgstr "System" + +#~ msgid "Open chat" +#~ msgstr "Chat öffnen" + +#~ msgid "Start Timer" +#~ msgstr "Timer starten" + +#~ msgid "Stop" +#~ msgstr "Stopp" + +#~ msgid "AI Helper" +#~ msgstr "KI-Assistent" + +#~ msgid "Change language" +#~ msgstr "Sprache ändern" + +#~ msgid "Language" +#~ msgstr "Sprache" + +#~ msgid "User menu" +#~ msgstr "Benutzermenü" + +#~ msgid "Supporter" +#~ msgstr "Unterstützer" + +#~ msgid "Guest" +#~ msgstr "Gast" + +#~ msgid "My Profile" +#~ msgstr "Mein Profil" + +#~ msgid "My Settings" +#~ msgstr "Meine Einstellungen" + +#~ msgid "License" +#~ msgstr "Lizenz" + +#~ msgid "Donate or get a supporter license" +#~ msgstr "Spenden oder Supporter-Lizenz erwerben" + +#~ msgid "Logout" +#~ msgstr "Abmelden" + +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Genießen Sie TimeTracker?" + +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" +#~ "Unabhängige Entwicklung unterstützen – " +#~ "Lizenzen sind Supporter-Abzeichen, keine " +#~ "Bezahlschranken." + +#~ msgid "Support / Get key" +#~ msgstr "Support / Schlüssel erhalten" + +#~ msgid "Buy Me a Coffee" +#~ msgstr "Buy Me a Coffee" + +#~ msgid "PayPal" +#~ msgstr "PayPal" + +#~ msgid "Support / License" +#~ msgstr "Support / Lizenz" + +#~ msgid "Dismiss" +#~ msgstr "Zurückweisen" + +#~ msgid "Built by an independent developer" +#~ msgstr "Von einem unabhängigen Entwickler erstellt" + +#~ msgid "Software update" +#~ msgstr "Software-Update" + +#~ msgid "Read more" +#~ msgstr "Mehr lesen" + +#~ msgid "View Release" +#~ msgstr "Release anzeigen" + +#~ msgid "Don't show again for this version" +#~ msgstr "Für diese Version nicht mehr anzeigen" + +#~ msgid "Quick actions dock" +#~ msgstr "Schnellaktionen-Leiste" + +#~ msgid "Actions" +#~ msgstr "Aktionen" + +#~ msgid "Log Time" +#~ msgstr "Protokollzeit" + +#~ msgid "New Task" +#~ msgstr "Neue Aufgabe" + +#~ msgid "New Project" +#~ msgstr "Neues Projekt" + +#~ msgid "New Client" +#~ msgstr "Neuer Kunde" + +#~ msgid "Open AI Helper" +#~ msgstr "KI-Assistent öffnen" + +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" +#~ "Fragen Sie zu Ihrer erfassten Arbeit," +#~ " Zusammenfassungen, Lücken und nächsten " +#~ "Aktionen." + +#~ msgid "Context included" +#~ msgstr "Kontext enthalten" + +#~ msgid "Loading context preview..." +#~ msgstr "Kontext-Vorschau wird geladen..." + +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" +#~ "Fragen Sie: Woran habe ich diese " +#~ "Woche gearbeitet? Erstellen Sie einen " +#~ "Zeiteintrag aus diesen Notizen..." + +#~ msgid "Send" +#~ msgstr "Senden" + +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "Fantastisch! Sie haben über 100 Stunden erfasst" + +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" +#~ "Updates und neue Funktionen unterstützen " +#~ "– oder Hinweise mit einem Schlüssel " +#~ "entfernen" + +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "Toller Fortschritt! Sie haben 50+ Einträge protokolliert" + +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "Danke, dass Sie TimeTracker verwenden!" + +#~ msgid "Create API Token" +#~ msgstr "Erstellen Sie ein API-Token" + +#~ msgid "Your API Token" +#~ msgstr "Ihr API-Token" + +#~ msgid "Usage Examples" +#~ msgstr "Anwendungsbeispiele" + +#~ msgid "Are you sure you want to" +#~ msgstr "Sind Sie sicher, dass Sie das möchten?" + +#~ msgid "deactivate" +#~ msgstr "deaktivieren" + +#~ msgid "activate" +#~ msgstr "aktivieren" + +#~ msgid "this token?" +#~ msgstr "dieses Token?" + +#~ msgid "Deactivate Token" +#~ msgstr "Token deaktivieren" + +#~ msgid "Activate Token" +#~ msgstr "Token aktivieren" + +#~ msgid "Deactivate" +#~ msgstr "Deaktivieren" + +#~ msgid "Activate" +#~ msgstr "Aktivieren" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie dieses " +#~ "Token löschen möchten? Diese Aktion kann" +#~ " nicht rückgängig gemacht werden." + +#~ msgid "Delete Token" +#~ msgstr "Token löschen" + +#~ msgid "Create Backup" +#~ msgstr "Backup erstellen" + +#~ msgid "Restore Backup" +#~ msgstr "Sicherung wiederherstellen" + +#~ msgid "Existing Backups" +#~ msgstr "Vorhandene Backups" + +#~ msgid "Important Information" +#~ msgstr "Wichtige Informationen" + +#~ msgid "Confirm Deletion" +#~ msgstr "Bestätigen Sie den Löschvorgang" + +#~ msgid "Clear Cache" +#~ msgstr "Cache leeren" + +#~ msgid "ServiceWorker Status" +#~ msgstr "ServiceWorker-Status" + +#~ msgid "Clear All Caches" +#~ msgstr "Alle Caches löschen" + +#~ msgid "ServiceWorker Actions" +#~ msgstr "ServiceWorker-Aktionen" + +#~ msgid "Manual Hard Refresh" +#~ msgstr "Manuelle harte Aktualisierung" + +#~ msgid "Total Users" +#~ msgstr "Gesamtbenutzer" + +#~ msgid "All time" +#~ msgstr "Alle Zeiten" + +#~ msgid "Active Users" +#~ msgstr "Aktive Benutzer" + +#~ msgid "Currently active" +#~ msgstr "Derzeit aktiv" + +#~ msgid "Total Projects" +#~ msgstr "Gesamtprojekte" + +#~ msgid "Active Projects" +#~ msgstr "Aktive Projekte" + +#~ msgid "Total Entries" +#~ msgstr "Gesamteinträge" + +#~ msgid "Time entries logged" +#~ msgstr "Zeiteinträge protokolliert" + +#~ msgid "Active Timers" +#~ msgstr "Aktive Timer" + +#~ msgid "Currently running" +#~ msgstr "Läuft gerade" + +#~ msgid "All time tracked" +#~ msgstr "Gesamt erfasste Zeit" + +#~ msgid "Billable time" +#~ msgstr "Abrechenbare Zeit" + +#~ msgid "User Activity (30 Days)" +#~ msgstr "Benutzeraktivität (30 Tage)" + +#~ msgid "Project Status" +#~ msgstr "Projektstatus" + +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "Zeiteintrag-Trends (30 Tage)" + +#~ msgid "System Health" +#~ msgstr "Systemzustand" + +#~ msgid "Database" +#~ msgstr "Datenbank" + +#~ msgid "Connected" +#~ msgstr "Verbunden" + +#~ msgid "OIDC Authentication" +#~ msgstr "OIDC-Authentifizierung" + +#~ msgid "Configured" +#~ msgstr "Konfiguriert" + +#~ msgid "Not Configured" +#~ msgstr "Nicht konfiguriert" + +#~ msgid "OIDC Users" +#~ msgstr "OIDC-Benutzer" + +#~ msgid "users" +#~ msgstr "Benutzer" + +#~ msgid "Admin Sections" +#~ msgstr "Admin-Bereiche" + +#~ msgid "Recent Activity" +#~ msgstr "Letzte Aktivität" + +#~ msgid "Duration" +#~ msgstr "Dauer" + +#~ msgid "N/A" +#~ msgstr "N / A" + +#~ msgid "Email Configuration & Testing" +#~ msgstr "E-Mail-Konfiguration und -Tests" + +#~ msgid "Configure and test email delivery" +#~ msgstr "Konfigurieren und testen Sie die E-Mail-Zustellung" + +#~ msgid "Back to Admin" +#~ msgstr "Zurück zum Admin" + +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "" +#~ "Konfigurieren Sie hier E-Mail-Einstellungen," +#~ " um sie in der Datenbank zu " +#~ "speichern." + +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Aktivieren Sie die Datenbank-E-Mail-Konfiguration" + +#~ msgid "Mail Server" +#~ msgstr "Mailserver" + +#~ msgid "Mail Port" +#~ msgstr "Mail-Port" + +#~ msgid "Use TLS" +#~ msgstr "Verwenden Sie TLS" + +#~ msgid "Use SSL" +#~ msgstr "Verwenden Sie SSL" + +#~ msgid "Username" +#~ msgstr "Benutzername" + +#~ msgid "Password" +#~ msgstr "Passwort" + +#~ msgid "Leave empty to keep current" +#~ msgstr "Lassen Sie es leer, um auf dem neuesten Stand zu bleiben" + +#~ msgid "Default Sender" +#~ msgstr "Standardabsender" + +#~ msgid "Test recipient email" +#~ msgstr "Test-Empfänger-E-Mail" + +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" +#~ "Wird verwendet, um „Test-E-Mail senden“ " +#~ "und Rechnungsvorlagen-Testsendungen vorauszufüllen." + +#~ msgid "Save Configuration" +#~ msgstr "Konfiguration speichern" + +#~ msgid "Reset" +#~ msgstr "Zurücksetzen" + +#~ msgid "Email Configuration Status" +#~ msgstr "E-Mail-Konfigurationsstatus" + +#~ msgid "Refresh" +#~ msgstr "Aktualisieren" + +#~ msgid "Email is configured!" +#~ msgstr "E-Mail ist konfiguriert!" + +#~ msgid "Your email settings are properly set up." +#~ msgstr "Ihre E-Mail-Einstellungen sind ordnungsgemäß eingerichtet." + +#~ msgid "Email is not configured" +#~ msgstr "E-Mail ist nicht konfiguriert" + +#~ msgid "Please configure email settings using the form above." +#~ msgstr "Bitte konfigurieren Sie die E-Mail-Einstellungen mit dem Formular oben." + +#~ msgid "Configuration Errors" +#~ msgstr "Konfigurationsfehler" + +#~ msgid "Configuration Warnings" +#~ msgstr "Konfigurationswarnungen" + +#~ msgid "Current Email Settings" +#~ msgstr "Aktuelle E-Mail-Einstellungen" + +#~ msgid "Port" +#~ msgstr "Hafen" + +#~ msgid "Password Set" +#~ msgstr "Passwort festgelegt" + +#~ msgid "Send Test Email" +#~ msgstr "Test-E-Mail senden" + +#~ msgid "Recipient Email Address" +#~ msgstr "E-Mail-Adresse des Empfängers" + +#~ msgid "Configuration Guide" +#~ msgstr "Konfigurationshandbuch" + +#~ msgid "Common SMTP Providers" +#~ msgstr "Gängige SMTP-Anbieter" + +#~ msgid "Requires app password" +#~ msgstr "Erfordert App-Passwort" + +#~ msgid "Important Notes" +#~ msgstr "Wichtige Hinweise" + +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail erfordert ein App-Passwort, wenn 2FA aktiviert ist" + +#~ msgid "Restart the application after changing email settings" +#~ msgstr "" +#~ "Starten Sie die Anwendung neu, nachdem" +#~ " Sie die E-Mail-Einstellungen geändert " +#~ "haben" + +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "Überprüfen Sie die Firewall-Regeln, wenn E-Mails nicht gesendet werden" + +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "Verwenden Sie für die Produktion einen" +#~ " dedizierten E-Mail-Dienst wie SendGrid " +#~ "oder Amazon SES" + +#~ msgid "password is set" +#~ msgstr "Das Passwort ist festgelegt" + +#~ msgid "no password set" +#~ msgstr "kein Passwort festgelegt" + +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "" +#~ "Die Konfiguration konnte nicht gespeichert " +#~ "werden. Bitte versuchen Sie es erneut." + +#~ msgid "Success!" +#~ msgstr "Erfolg!" + +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "" +#~ "Der Status konnte nicht aktualisiert " +#~ "werden. Bitte versuchen Sie es erneut." + +#~ msgid "Please enter a valid email address" +#~ msgstr "Bitte geben Sie eine gültige E-Mail-Adresse ein" + +#~ msgid "Sending..." +#~ msgstr "Senden..." + +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "" +#~ "Test-E-Mail konnte nicht gesendet werden. " +#~ "Bitte überprüfen Sie Ihre Konfiguration." + +#~ msgid "LDAP Setup Wizard" +#~ msgstr "LDAP-Einrichtungsassistent" + +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Geführte Konfiguration für LDAP-Authentifizierung (Umgebungsvariablen)" + +#~ msgid "Server" +#~ msgstr "Server" + +#~ msgid "Bind" +#~ msgstr "Binden" + +#~ msgid "Users" +#~ msgstr "Benutzer" + +#~ msgid "Groups" +#~ msgstr "Gruppen" + +#~ msgid "Finalize" +#~ msgstr "Abschließen" + +#~ msgid "Step 1: Server and TLS" +#~ msgstr "Schritt 1: Server und TLS" + +#~ msgid "LDAP host" +#~ msgstr "LDAP-Host" + +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "SSL verwenden (LDAPS)" + +#~ msgid "StartTLS" +#~ msgstr "StartTLS" + +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Verbindungs-Timeout (Sekunden)" + +#~ msgid "TLS CA certificate file" +#~ msgstr "TLS-CA-Zertifikatsdatei" + +#~ msgid "optional" +#~ msgstr "optional" + +#~ msgid "Step 2: Service bind account" +#~ msgstr "Schritt 2: Dienst-Bindekonto" + +#~ msgid "Bind DN" +#~ msgstr "Bind-DN" + +#~ msgid "Bind password" +#~ msgstr "Bind-Passwort" + +#~ msgid "Enter bind password" +#~ msgstr "Bind-Passwort eingeben" + +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" +#~ "Ein Bind-Passwort ist bereits in " +#~ "der Umgebung gesetzt. Geben Sie es " +#~ "hier erneut ein, um die Konfiguration" +#~ " zu testen oder zu generieren." + +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "Schritt 3: Benutzerverzeichnis und Attribute" + +#~ msgid "Base DN" +#~ msgstr "Basis-DN" + +#~ msgid "User subtree (relative to base)" +#~ msgstr "Benutzer-Teilbaum (relativ zur Basis)" + +#~ msgid "User object class" +#~ msgstr "Benutzerobjektklasse" + +#~ msgid "Login attribute" +#~ msgstr "Anmeldeattribut" + +#~ msgid "Email attribute" +#~ msgstr "E-Mail-Attribut" + +#~ msgid "First name attribute" +#~ msgstr "Vorname-Attribut" + +#~ msgid "Last name attribute" +#~ msgstr "Nachname-Attribut" + +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Schritt 4: Gruppen und Authentifizierungsmodus" + +#~ msgid "Group subtree (relative to base)" +#~ msgstr "Gruppen-Teilbaum (relativ zur Basis)" + +#~ msgid "Group object class" +#~ msgstr "Gruppenobjektklasse" + +#~ msgid "Admin group (CN)" +#~ msgstr "Admingruppe (CN)" + +#~ msgid "Required group (CN)" +#~ msgstr "Erforderliche Gruppe (CN)" + +#~ msgid "AUTH_METHOD" +#~ msgstr "AUTH_METHOD" + +#~ msgid "LDAP only" +#~ msgstr "Nur LDAP" + +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "Alle (lokal + OIDC + LDAP)" + +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" +#~ "Verwenden Sie „All“ nur, wenn Sie " +#~ "auch lokale und OIDC-Anmeldung " +#~ "konfigurieren; AUTH_METHOD=all aktiviert jede " +#~ "Methode." + +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Schritt 5: Konfiguration testen und generieren" + +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" +#~ "Testen Sie das Dienst-Binden und " +#~ "die Benutzersuche, dann generieren Sie " +#~ ".env-Snippets zum Kopieren in Ihre " +#~ "Bereitstellung." + +#~ msgid "Test connection" +#~ msgstr "Verbindung testen" + +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" +#~ "Generieren Sie Umgebungsvariablenzeilen für " +#~ "Ihre .env-Datei oder Docker Compose." + +#~ msgid "Generate configuration" +#~ msgstr "Konfiguration generieren" + +#~ msgid "Environment variables (.env)" +#~ msgstr "Umgebungsvariablen (.env)" + +#~ msgid "Copy" +#~ msgstr "Kopieren" + +#~ msgid "Docker Compose" +#~ msgstr "Docker Compose" + +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" +#~ "Fügen Sie diese Variablen zu Ihrer " +#~ "Umgebung oder Compose-Datei hinzu, " +#~ "starten Sie die Anwendung neu und " +#~ "bestätigen Sie unter Einstellungen → " +#~ "LDAP." + +#~ msgid "Previous" +#~ msgstr "Vorherige" + +#~ msgid "Next" +#~ msgstr "Nächste" + +#~ msgid "Feature Module Load Status" +#~ msgstr "Ladestatus der Funktionsmodule" + +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" +#~ "Dies zeigt, welche optionalen Funktionsmodule" +#~ " beim Serverstart erfolgreich geladen " +#~ "wurden." + +#~ msgid "Optional loaded:" +#~ msgstr "Optional geladen:" + +#~ msgid "Attention needed" +#~ msgstr "Aufmerksamkeit erforderlich" + +#~ msgid "Module" +#~ msgstr "Modul" + +#~ msgid "Blueprint" +#~ msgstr "Blueprint" + +#~ msgid "Status" +#~ msgstr "Status" + +#~ msgid "Details" +#~ msgstr "Einzelheiten" + +#~ msgid "Loaded" +#~ msgstr "Geladen" + +#~ msgid "Failed" +#~ msgstr "Fehlgeschlagen" + +#~ msgid "—" +#~ msgstr "—" + +#~ msgid "Client Lock (optional)" +#~ msgstr "Kundensperre (optional)" + +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" +#~ "Wenn gesetzt, wählen alle Kundenauswahlen " +#~ "in der App automatisch diesen Kunden " +#~ "aus und verhindern Änderungen." + +#~ msgid "Locked Client" +#~ msgstr "Gesperrter Kunde" + +#~ msgid "None (no lock)" +#~ msgstr "Keine (keine Sperre)" + +#~ msgid "Module Visibility" +#~ msgstr "Modulsichtbarkeit" + +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" +#~ "Deaktivieren Sie Module, um sie vor " +#~ "allen Benutzern zu verbergen. Deaktivierte " +#~ "Module erscheinen nicht in der " +#~ "Seitenleiste. Kernmodule (Dashboard, Projekte, " +#~ "Timer usw.) sind immer aktiviert und " +#~ "können nicht deaktiviert werden." + +#~ msgid "Enable All" +#~ msgstr "Alle aktivieren" + +#~ msgid "Disable All" +#~ msgstr "Alle deaktivieren" + +#~ msgid "Total Modules:" +#~ msgstr "Module gesamt:" + +#~ msgid "Enabled:" +#~ msgstr "Aktiviert:" + +#~ msgid "Disabled:" +#~ msgstr "Deaktiviert:" + +#~ msgid "Search modules..." +#~ msgstr "Module suchen..." + +#~ msgid "All Categories" +#~ msgstr "Alle Kategorien" + +#~ msgid "Project Management" +#~ msgstr "Projektmanagement" + +#~ msgid "Show disabled only" +#~ msgstr "Nur deaktivierte anzeigen" + +#~ msgid "Show with dependencies" +#~ msgstr "Mit Abhängigkeiten anzeigen" + +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "Warnung: Das Deaktivieren dieser Module betrifft auch abhängige Module:" + +#~ msgid "Enabled" +#~ msgstr "Ermöglicht" + +#~ msgid "Disabled" +#~ msgstr "Deaktiviert" + +#~ msgid "Depends on:" +#~ msgstr "Hängt ab von:" + +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" +#~ "Das Deaktivieren von „Berichte“ blendet " +#~ "das gesamte Berichte-Untermenü einschließlich" +#~ " Berichtsgenerator und geplante Berichte " +#~ "aus." + +#~ msgid "Save Changes" +#~ msgstr "Änderungen speichern" + +#~ msgid "No modules available." +#~ msgstr "Keine Module verfügbar." + +#~ msgid "Note" +#~ msgstr "Notiz" + +#~ msgid "All modules are enabled by default." +#~ msgstr "Alle Module sind standardmäßig aktiviert." + +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" +#~ "Kernmodule können nicht deaktiviert werden," +#~ " da sie für die Funktion der " +#~ "Anwendung erforderlich sind." + +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" +#~ "Das Deaktivieren eines Moduls betrifft " +#~ "alle Benutzer systemweit. Deaktivierte Module" +#~ " erscheinen nicht in der Navigationsleiste." + +#~ msgid "Enable all modules?" +#~ msgstr "Alle Module aktivieren?" + +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "Alle Module deaktivieren? Dies kann die Funktionalität beeinträchtigen." + +#~ msgid "Disable" +#~ msgstr "Deaktivieren" + +#~ msgid "module(s) in this category?" +#~ msgstr "Modul(e) in dieser Kategorie?" + +#~ msgid "Validation errors:" +#~ msgstr "Validierungsfehler:" + +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "OIDC-Debug-Dashboard" + +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "Überprüfen Sie die Konfiguration, Anbietermetadaten und OIDC-Benutzer" + +#~ msgid "Setup Wizard" +#~ msgstr "Einrichtungsassistent" + +#~ msgid "Test Configuration" +#~ msgstr "Testkonfiguration" + +#~ msgid "OIDC Configuration" +#~ msgstr "OIDC-Konfiguration" + +#~ msgid "Auth Method" +#~ msgstr "Authentifizierungsmethode" + +#~ msgid "Issuer" +#~ msgstr "Emittent" + +#~ msgid "Not configured" +#~ msgstr "Nicht konfiguriert" + +#~ msgid "Client ID" +#~ msgstr "Kunden-ID" + +#~ msgid "Client Secret" +#~ msgstr "Client-Geheimnis" + +#~ msgid "Set" +#~ msgstr "Satz" + +#~ msgid "Not set" +#~ msgstr "Nicht festgelegt" + +#~ msgid "Redirect URI" +#~ msgstr "Umleitungs-URI" + +#~ msgid "Auto-generated" +#~ msgstr "Automatisch generiert" + +#~ msgid "Scopes" +#~ msgstr "Bereiche" + +#~ msgid "Claim Mapping" +#~ msgstr "Anspruchszuordnung" + +#~ msgid "Username Claim" +#~ msgstr "Anspruch auf Benutzernamen" + +#~ msgid "Email Claim" +#~ msgstr "E-Mail-Anspruch" + +#~ msgid "Full Name Claim" +#~ msgstr "Vollständiger Namensanspruch" + +#~ msgid "Groups Claim" +#~ msgstr "Gruppenanspruch" + +#~ msgid "Admin Group" +#~ msgstr "Admin-Gruppe" + +#~ msgid "Admin Emails" +#~ msgstr "Admin-E-Mails" + +#~ msgid "Post-Logout URI" +#~ msgstr "Post-Logout-URI" + +#~ msgid "Provider Metadata" +#~ msgstr "Anbieter-Metadaten" + +#~ msgid "Error loading metadata:" +#~ msgstr "Fehler beim Laden der Metadaten:" + +#~ msgid "Discovery endpoint:" +#~ msgstr "Discovery-Endpunkt:" + +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Anbietermetadaten wurden erfolgreich geladen" + +#~ msgid "Endpoints" +#~ msgstr "Endpunkte" + +#~ msgid "Authorization" +#~ msgstr "Genehmigung" + +#~ msgid "Token" +#~ msgstr "Token" + +#~ msgid "UserInfo" +#~ msgstr "Benutzerinfo" + +#~ msgid "End Session" +#~ msgstr "Sitzung beenden" + +#~ msgid "JWKS URI" +#~ msgstr "JWKS-URI" + +#~ msgid "Supported Features" +#~ msgstr "Unterstützte Funktionen" + +#~ msgid "Response Types" +#~ msgstr "Antworttypen" + +#~ msgid "Grant Types" +#~ msgstr "Zuschussarten" + +#~ msgid "Auth Methods" +#~ msgstr "Authentifizierungsmethoden" + +#~ msgid "Claims" +#~ msgstr "Ansprüche" + +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Anbietermetadaten wurden nicht geladen. " +#~ "Klicken Sie zum Abrufen auf " +#~ "„Konfiguration testen“." + +#~ msgid "Email" +#~ msgstr "E-Mail" + +#~ msgid "Full Name" +#~ msgstr "Vollständiger Name" + +#~ msgid "Role" +#~ msgstr "Rolle" + +#~ msgid "Last Login" +#~ msgstr "Letzte Anmeldung" + +#~ msgid "OIDC Subject" +#~ msgstr "OIDC-Betreff" + +#~ msgid "Inactive" +#~ msgstr "Inaktiv" + +#~ msgid "Never" +#~ msgstr "Niemals" + +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Es haben sich noch keine Benutzer über OIDC angemeldet." + +#~ msgid "Environment Variables Reference" +#~ msgstr "Referenz zu Umgebungsvariablen" + +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Konfigurieren Sie OIDC mit diesen Umgebungsvariablen:" + +#~ msgid "Variable" +#~ msgstr "Variable" + +#~ msgid "Description" +#~ msgstr "Beschreibung" + +#~ msgid "Example" +#~ msgstr "Beispiel" + +#~ msgid "Authentication method" +#~ msgstr "Authentifizierungsmethode" + +#~ msgid "OIDC provider issuer URL" +#~ msgstr "URL des Ausstellers des OIDC-Anbieters" + +#~ msgid "Client ID from OIDC provider" +#~ msgstr "Client-ID vom OIDC-Anbieter" + +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Client-Geheimnis vom OIDC-Anbieter" + +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "Rückruf-URL (optional, automatisch generiert)" + +#~ msgid "Requested scopes" +#~ msgstr "Angeforderte Bereiche" + +#~ msgid "Claim containing username" +#~ msgstr "Anspruch, der den Benutzernamen enthält" + +#~ msgid "Claim containing email" +#~ msgstr "Anspruch mit E-Mail" + +#~ msgid "Claim containing full name" +#~ msgstr "Anspruch mit vollständigem Namen" + +#~ msgid "Claim containing groups" +#~ msgstr "Anspruch, der Gruppen enthält" + +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Gruppenname für Administratorrolle (optional)" + +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "Durch Kommas getrennte Administrator-E-Mails (optional)" + +#~ msgid "OIDC Setup Wizard" +#~ msgstr "OIDC-Einrichtungsassistent" + +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" +#~ "Geführte Schritt-für-Schritt-Konfiguration " +#~ "für OpenID Connect-Authentifizierung" + +#~ msgid "Basic Config" +#~ msgstr "Grundkonfiguration" + +#~ msgid "Test Connection" +#~ msgstr "Verbindung testen" + +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "Schritt 1: Grundkonfiguration" + +#~ msgid "OIDC Issuer URL" +#~ msgstr "OIDC-Aussteller-URL" + +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" +#~ "Die Basis-URL Ihres OIDC-Anbieters " +#~ "(z. B. https://auth.example.com oder " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" + +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "Die Client-ID von Ihrem OIDC-Anbieter" + +#~ msgid "Enter client secret" +#~ msgstr "Client-Secret eingeben" + +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "Das Client-Secret von Ihrem OIDC-Anbieter" + +#~ msgid "Authentication Method" +#~ msgstr "Authentifizierungsmethode" + +#~ msgid "OIDC Only" +#~ msgstr "Nur OIDC" + +#~ msgid "SSO login only, no local passwords" +#~ msgstr "Nur SSO-Anmeldung, keine lokalen Passwörter" + +#~ msgid "Both" +#~ msgstr "Beides" + +#~ msgid "SSO and local password authentication" +#~ msgstr "SSO und lokale Passwortauthentifizierung" + +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" +#~ "Wählen Sie, ob nur OIDC-Anmeldung " +#~ "oder sowohl OIDC als auch lokale " +#~ "Passwortauthentifizierung erlaubt sein soll" + +#~ msgid "Step 2: Test Connection" +#~ msgstr "Schritt 2: Verbindung testen" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" +#~ "Klicken Sie auf „Verbindung testen“, um" +#~ " DNS-Auflösung und Metadaten-Endpunkt-" +#~ "Zugänglichkeit zu überprüfen." + +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "Schritt 3: Claim-Zuordnung" + +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "Claim-Name mit dem Benutzernamen (Standard: preferred_username)" + +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "Claim-Name mit der E-Mail-Adresse (Standard: email)" + +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "Claim-Name mit dem vollständigen Namen (Standard: name)" + +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "Claim-Name mit Benutzergruppen (Standard: groups, optional)" + +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "Gruppenname, der Admin-Zugriff gewährt (optional)" + +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" +#~ "Kommagetrennte Liste von E-Mail-Adressen, " +#~ "die Admin-Zugriff gewähren (optional)" + +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "Schritt 4: Erweiterte Einstellungen" + +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" +#~ "Leerzeichen-getrennte Liste von OIDC-" +#~ "Scopes (Standard: openid profile email)" + +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" +#~ "OAuth-Callback-URL (normalerweise automatisch" +#~ " generiert, kann aber angepasst werden)" + +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "Post-Logout-Weiterleitungs-URI" + +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" +#~ "URL für die Weiterleitung nach dem " +#~ "Abmelden (optional, nur wenn Ihr " +#~ "Anbieter end_session_endpoint unterstützt)" + +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "Schritt 5: Konfiguration generieren" + +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" +#~ "Klicken Sie auf „Konfiguration generieren“," +#~ " um die Umgebungsvariablenkonfiguration zu " +#~ "erstellen." + +#~ msgid "Generate Configuration" +#~ msgstr "Konfiguration generieren" + +#~ msgid "Environment Variables (.env file)" +#~ msgstr "Umgebungsvariablen (.env-Datei)" + +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" +#~ "Kopieren Sie die obige Konfiguration und" +#~ " fügen Sie sie zu Ihren " +#~ "Umgebungsvariablen oder der Docker Compose-" +#~ "Datei hinzu, dann starten Sie die " +#~ "Anwendung neu." + +#~ msgid "OIDC User Details" +#~ msgstr "OIDC-Benutzerdetails" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Profil und OIDC-Identität für diesen Benutzer" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "Zurück zum OIDC-Debug" + +#~ msgid "User Profile" +#~ msgstr "Benutzerprofil" + +#~ msgid "Active" +#~ msgstr "Aktiv" + +#~ msgid "Preferred Language" +#~ msgstr "Bevorzugte Sprache" + +#~ msgid "Created At" +#~ msgstr "Erstellt am" + +#~ msgid "OIDC Information" +#~ msgstr "OIDC-Informationen" + +#~ msgid "OIDC Issuer" +#~ msgstr "OIDC-Emittent" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "OIDC-Betreff (Untertitel)" + +#~ msgid "Local" +#~ msgstr "Lokal" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Dieser Benutzer wurde über OIDC erstellt" +#~ " oder verknüpft. Der Aussteller und " +#~ "der Betreff werden verwendet, um den " +#~ "Benutzer über alle Anmeldesitzungen hinweg " +#~ "eindeutig zu identifizieren." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Dieser Benutzer verfügt über keine " +#~ "OIDC-Informationen. Sie wurden möglicherweise " +#~ "manuell oder durch Selbstregistrierung ohne" +#~ " OIDC erstellt." + +#~ msgid "Activity Statistics" +#~ msgstr "Aktivitätsstatistik" + +#~ msgid "Time Entries" +#~ msgstr "Zeiteinträge" + +#~ msgid "None" +#~ msgstr "Keiner" + +#~ msgid "Active Timer" +#~ msgstr "Aktiver Timer" + +#~ msgid "Tasks Created" +#~ msgstr "Aufgaben erstellt" + +#~ msgid "Edit User" +#~ msgstr "Benutzer bearbeiten" + +#~ msgid "View All Users" +#~ msgstr "Alle Benutzer anzeigen" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "PDF-Rechnungsdesigner" + +#~ msgid "Visual Invoice Designer" +#~ msgstr "Visueller Rechnungsdesigner" + +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "" +#~ "Elemente per Drag-and-Drop verschieben," +#~ " um das Rechnungslayout zu gestalten" + +#~ msgid "How to use:" +#~ msgstr "Anwendung:" + +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Klicken Sie in der linken Seitenleiste" +#~ " auf Elemente, um sie der Leinwand" +#~ " hinzuzufügen. Klicken Sie auf Elemente," +#~ " um sie im Eigenschaftenfenster auszuwählen" +#~ " und anzupassen. Verwenden Sie die " +#~ "Ausrichtungswerkzeuge und Tastaturkürzel für " +#~ "eine schnellere Bearbeitung." + +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Tastaturkürzel:" + +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "Hilfe: Artikeltabelle, Ausgabentabelle & Speichern" + +#~ msgid "Items Table:" +#~ msgstr "Artikeltabelle:" + +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" +#~ "Zeigt Zeiteinträge, Zusätzliches und Ausgaben" +#~ " an. Aus Rechnungsdaten in der " +#~ "Seitenleiste hinzufügen. Verwendet" + +#~ msgid "Expenses Table:" +#~ msgstr "Ausgabentabelle:" + +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" +#~ "Optionale separate Tabelle für Ausgaben. " +#~ "Aus Rechnungsdaten in der Seitenleiste " +#~ "hinzufügen." + +#~ msgid "Saving:" +#~ msgstr "Speichern:" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" +#~ "Klicken Sie auf „Design speichern“, um" +#~ " zu speichern. Wenn Tabellen nach dem" +#~ " Speichern verschwinden, versuchen Sie " +#~ "Zurücksetzen, um die Standardwerte " +#~ "wiederherzustellen, und fügen Sie dann " +#~ "die Tabellen erneut hinzu." + +#~ msgid "Preview:" +#~ msgstr "Vorschau:" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" +#~ "Verwenden Sie „Vorschau generieren“, um " +#~ "zu sehen, wie die PDF mit echten" +#~ " Rechnungsdaten aussehen wird." + +#~ msgid "See" +#~ msgstr "Siehe" + +#~ msgid "for full documentation." +#~ msgstr "für vollständige Dokumentation." + +#~ msgid "Clear Canvas" +#~ msgstr "Klare Leinwand" + +#~ msgid "Generate Preview" +#~ msgstr "Vorschau generieren" + +#~ msgid "Save Design" +#~ msgstr "Design speichern" + +#~ msgid "View Code" +#~ msgstr "Code anzeigen" + +#~ msgid "Export JSON" +#~ msgstr "JSON exportieren" + +#~ msgid "Import JSON" +#~ msgstr "JSON importieren" + +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Am Raster ausrichten (10 Pixel)" + +#~ msgid "Toolbox" +#~ msgstr "Werkzeugkasten" + +#~ msgid "Search elements & variables..." +#~ msgstr "Suchelemente und Variablen..." + +#~ msgid "Elements" +#~ msgstr "Elemente" + +#~ msgid "Variables" +#~ msgstr "Variablen" + +#~ msgid "Basic Elements" +#~ msgstr "Grundelemente" + +#~ msgid "Custom Text" +#~ msgstr "Benutzerdefinierter Text" + +#~ msgid "Text" +#~ msgstr "Text" + +#~ msgid "Heading" +#~ msgstr "Überschrift" + +#~ msgid "Line" +#~ msgstr "Linie" + +#~ msgid "Rectangle" +#~ msgstr "Rechteck" + +#~ msgid "Circle" +#~ msgstr "Kreis" + +#~ msgid "Company Info" +#~ msgstr "Firmeninformationen" + +#~ msgid "Company Logo" +#~ msgstr "Firmenlogo" + +#~ msgid "Company Name" +#~ msgstr "Name der Firma" + +#~ msgid "Company Details" +#~ msgstr "Firmendetails" + +#~ msgid "Address" +#~ msgstr "Adresse" + +#~ msgid "Phone" +#~ msgstr "Telefon" + +#~ msgid "Website" +#~ msgstr "Webseite" + +#~ msgid "Tax ID" +#~ msgstr "Steuer-ID" + +#~ msgid "Invoice Data" +#~ msgstr "Rechnungsdaten" + +#~ msgid "Invoice Number" +#~ msgstr "Rechnungsnummer" + +#~ msgid "Invoice Date" +#~ msgstr "Rechnungsdatum" + +#~ msgid "Due Date" +#~ msgstr "Fälligkeitsdatum" + +#~ msgid "Client Info" +#~ msgstr "Kundeninformationen" + +#~ msgid "Client Name" +#~ msgstr "Kundenname" + +#~ msgid "Client Address" +#~ msgstr "Kundenadresse" + +#~ msgid "Items Table" +#~ msgstr "Artikeltabelle" + +#~ msgid "Expenses Table" +#~ msgstr "Ausgabentabelle" + +#~ msgid "Subtotal" +#~ msgstr "Zwischensumme" + +#~ msgid "Tax" +#~ msgstr "Steuer" + +#~ msgid "Total Amount" +#~ msgstr "Gesamtbetrag" + +#~ msgid "Terms" +#~ msgstr "Bedingungen" + +#~ msgid "Payment & Project" +#~ msgstr "Zahlung & Projekt" + +#~ msgid "Payment Date" +#~ msgstr "Zahlungsdatum" + +#~ msgid "Payment Method" +#~ msgstr "Zahlungsmethode" + +#~ msgid "Payment Status" +#~ msgstr "Zahlungsstatus" + +#~ msgid "Amount Paid" +#~ msgstr "Bezahlter Betrag" + +#~ msgid "Project Name" +#~ msgstr "Projektname" + +#~ msgid "Client Email" +#~ msgstr "Kunden-E-Mail" + +#~ msgid "Client Phone" +#~ msgstr "Kundentelefon" + +#~ msgid "QR Code" +#~ msgstr "QR-Code" + +#~ msgid "Barcode" +#~ msgstr "Barcode" + +#~ msgid "Page Number" +#~ msgstr "Seitenzahl" + +#~ msgid "Current Date" +#~ msgstr "Aktuelles Datum" + +#~ msgid "Watermark" +#~ msgstr "Wasserzeichen" + +#~ msgid "Bank Info" +#~ msgstr "Bankinformationen" + +#~ msgid "Currency" +#~ msgstr "Währung" + +#~ msgid "Decorative Image" +#~ msgstr "Dekoratives Bild" + +#~ msgid "Invoice Fields" +#~ msgstr "Rechnungsfelder" + +#~ msgid "Invoice number" +#~ msgstr "Rechnungsnummer" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Rechnungsstatus (Entwurf/gesendet/bezahlt/überfällig)" + +#~ msgid "Issue date" +#~ msgstr "Ausgabedatum" + +#~ msgid "Due date" +#~ msgstr "Fälligkeitsdatum" + +#~ msgid "Subtotal amount" +#~ msgstr "Zwischensummenbetrag" + +#~ msgid "Tax rate (%)" +#~ msgstr "Steuersatz (%)" + +#~ msgid "Tax amount" +#~ msgstr "Steuerbetrag" + +#~ msgid "Total amount" +#~ msgstr "Gesamtbetrag" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Währungscode (EUR, USD usw.)" + +#~ msgid "Invoice notes" +#~ msgstr "Rechnungsnotizen" + +#~ msgid "Terms & conditions" +#~ msgstr "Allgemeine Geschäftsbedingungen" + +#~ msgid "Client Fields" +#~ msgstr "Kundenfelder" + +#~ msgid "Client company name" +#~ msgstr "Name des Kundenunternehmens" + +#~ msgid "Client email address" +#~ msgstr "E-Mail-Adresse des Kunden" + +#~ msgid "Client full address" +#~ msgstr "Vollständige Adresse des Kunden" + +#~ msgid "Client contact person" +#~ msgstr "Ansprechpartner des Kunden" + +#~ msgid "Client phone number" +#~ msgstr "Telefonnummer des Kunden" + +#~ msgid "Payment Fields" +#~ msgstr "Zahlungsfelder" + +#~ msgid "Payment status" +#~ msgstr "Zahlungsstatus" + +#~ msgid "Payment date" +#~ msgstr "Zahlungsdatum" + +#~ msgid "Payment method" +#~ msgstr "Zahlungsart" + +#~ msgid "Payment reference number" +#~ msgstr "Zahlungsreferenznummer" + +#~ msgid "Amount paid" +#~ msgstr "Gezahlter Betrag" + +#~ msgid "Outstanding amount" +#~ msgstr "Ausstehender Betrag" + +#~ msgid "Payment notes" +#~ msgstr "Zahlungshinweise" + +#~ msgid "Project Fields" +#~ msgstr "Projektfelder" + +#~ msgid "Project name" +#~ msgstr "Projektname" + +#~ msgid "Project code" +#~ msgstr "Projektcode" + +#~ msgid "Project description" +#~ msgstr "Projektbeschreibung" + +#~ msgid "Project billing reference" +#~ msgstr "Referenz zur Projektabrechnung" + +#~ msgid "Company/Settings Fields" +#~ msgstr "Firmen-/Einstellungsfelder" + +#~ msgid "Your company name" +#~ msgstr "Ihr Firmenname" + +#~ msgid "Your company address" +#~ msgstr "Ihre Firmenadresse" + +#~ msgid "Your company email" +#~ msgstr "Ihre Firmen-E-Mail" + +#~ msgid "Your company phone" +#~ msgstr "Ihr Firmentelefon" + +#~ msgid "Your company website" +#~ msgstr "Ihre Unternehmenswebsite" + +#~ msgid "Your tax ID number" +#~ msgstr "Ihre Steueridentifikationsnummer" + +#~ msgid "Your bank account info" +#~ msgstr "Ihre Bankkontodaten" + +#~ msgid "Default invoice terms" +#~ msgstr "Standard-Rechnungsbedingungen" + +#~ msgid "Default invoice notes" +#~ msgstr "Standard-Rechnungsnotizen" + +#~ msgid "Date/Time Fields" +#~ msgstr "Datums-/Uhrzeitfelder" + +#~ msgid "Current date" +#~ msgstr "Aktuelles Datum" + +#~ msgid "Invoice creation date" +#~ msgstr "Rechnungserstellungsdatum" + +#~ msgid "Invoice last update date" +#~ msgstr "Datum der letzten Rechnungsaktualisierung" + +#~ msgid "Invoice Items Loop" +#~ msgstr "Schleife über Rechnungspositionen" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "Alle Artikel (Zeit + Zusatzwaren + Ausgaben)" + +#~ msgid "Time-based items only" +#~ msgstr "Nur zeitbasierte Artikel" + +#~ msgid "Item description" +#~ msgstr "Artikelbeschreibung" + +#~ msgid "Item quantity" +#~ msgstr "Artikelmenge" + +#~ msgid "Item unit price" +#~ msgstr "Stückpreis des Artikels" + +#~ msgid "Item total amount" +#~ msgstr "Gesamtbetrag des Artikels" + +#~ msgid "End loop" +#~ msgstr "Schleife beenden" + +#~ msgid "Extra Goods Loop" +#~ msgstr "Schleife über zusätzliche Waren" + +#~ msgid "Loop through extra goods only" +#~ msgstr "Nur durch zusätzliche Waren iterieren" + +#~ msgid "Good name" +#~ msgstr "Warenname" + +#~ msgid "Good total amount" +#~ msgstr "Gesamtbetrag der Ware" + +#~ msgid "Design Canvas" +#~ msgstr "Design-Leinwand" + +#~ msgid "Page Size:" +#~ msgstr "Seitengröße:" + +#~ msgid "Zoom In" +#~ msgstr "Vergrößern" + +#~ msgid "Zoom Out" +#~ msgstr "Herauszoomen" + +#~ msgid "Delete Selected" +#~ msgstr "Ausgewählte löschen" + +#~ msgid "Properties" +#~ msgstr "Eigenschaften" + +#~ msgid "Warnings" +#~ msgstr "Warnungen" + +#~ msgid "Refresh warnings" +#~ msgstr "Warnungen aktualisieren" + +#~ msgid "No warnings" +#~ msgstr "Keine Warnungen" + +#~ msgid "Template Settings" +#~ msgstr "Vorlageneinstellungen" + +#~ msgid "Date Format" +#~ msgstr "Datumsformat" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "strftime-Format verwenden (z. B. %d.%m.%Y für 12.09.2025)" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "Wählen Sie ein Element aus, um seine Eigenschaften zu bearbeiten" + +#~ msgid "PDF Preview" +#~ msgstr "PDF-Vorschau" + +#~ msgid "Page Size" +#~ msgstr "Seitengröße" + +#~ msgid "Refresh Preview" +#~ msgstr "Vorschau aktualisieren" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "Vollbild umschalten" + +#~ msgid "Close Preview" +#~ msgstr "Vorschau schließen" + +#~ msgid "Zoom Level" +#~ msgstr "Zoomstufe" + +#~ msgid "Reset Zoom" +#~ msgstr "Zoom zurücksetzen" + +#~ msgid "Fit to Width" +#~ msgstr "Breite anpassen" + +#~ msgid "Fit Width" +#~ msgstr "Breite anpassen" + +#~ msgid "Fit to Height" +#~ msgstr "Höhe anpassen" + +#~ msgid "Fit Height" +#~ msgstr "Höhe anpassen" + +#~ msgid "Actual Size" +#~ msgstr "Tatsächliche Größe" + +#~ msgid "Generating preview..." +#~ msgstr "Vorschau wird generiert..." + +#~ msgid "Preview Error" +#~ msgstr "Vorschaufehler" + +#~ msgid "Retry" +#~ msgstr "Wiederholen" + +#~ msgid "Generated Code" +#~ msgstr "Generierter Code" + +#~ msgid "Change Image" +#~ msgstr "Bild ändern" + +#~ msgid "Upload Image" +#~ msgstr "Bild hochladen" + +#~ msgid "Remove Image" +#~ msgstr "Bild entfernen" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "Nur Bilddateien (PNG, JPG, JPEG, GIF, WEBP) sind erlaubt" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "Dateigröße muss weniger als 5 MB betragen" + +#~ msgid "Uploading..." +#~ msgstr "Wird hochgeladen..." + +#~ msgid "Error: Image update function not found" +#~ msgstr "Fehler: Bildaktualisierungsfunktion nicht gefunden" + +#~ msgid "Failed to upload image" +#~ msgstr "Bild konnte nicht hochgeladen werden" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "Sind Sie sicher, dass Sie dieses Bild entfernen möchten?" + +#~ msgid "Clear all elements?" +#~ msgstr "Alle Elemente löschen?" + +#~ msgid "Clear" +#~ msgstr "Klar" + +#~ msgid "Exit Fullscreen" +#~ msgstr "Vollbild beenden" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "Vorschau konnte nicht geladen werden. Bitte versuchen Sie es erneut." + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" +#~ "Die Änderung der Seitengröße lädt die" +#~ " Vorschau mit der Vorlage für diese" +#~ " Größe neu. Fortfahren?" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" +#~ "Die Vorschaufunktion ist derzeit nicht " +#~ "verfügbar. Bitte überprüfen Sie die " +#~ "Browser-Konsole auf Fehler." + +#~ msgid "Reset to defaults?" +#~ msgstr "Auf Standardeinstellungen zurücksetzen?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "PDF-Layout zurücksetzen" + +#~ msgid "Error importing template" +#~ msgstr "Fehler beim Importieren der Vorlage" + +#~ msgid "PDF Quote Designer" +#~ msgstr "PDF-Angebotsdesigner" + +#~ msgid "Visual Quote Designer" +#~ msgstr "Visueller Zitat-Designer" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "" +#~ "Ziehen Sie Elemente per Drag-and-" +#~ "Drop, um Ihr Angebotslayout zu entwerfen" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Hilfe: Angebotspositionstabelle & Speichern" + +#~ msgid "Quote Items Table:" +#~ msgstr "Angebotspositionstabelle:" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" +#~ "Zeigt Angebotspositionen an. Aus " +#~ "Rechnungsdaten in der Seitenleiste hinzufügen." + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" +#~ "Klicken Sie auf „Design speichern“, um" +#~ " zu speichern. Wenn die Tabelle nach" +#~ " dem Speichern verschwindet, versuchen Sie" +#~ " Zurücksetzen, um die Standardwerte " +#~ "wiederherzustellen, und fügen Sie dann " +#~ "die Artikeltabelle erneut hinzu." + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" +#~ "Verwenden Sie „Vorschau generieren“, um " +#~ "zu sehen, wie die PDF mit echten" +#~ " Angebotsdaten aussehen wird." + +#~ msgid "Quote Data" +#~ msgstr "Angebotsdaten" + +#~ msgid "Quote Number" +#~ msgstr "Angebotsnummer" + +#~ msgid "Quote Date" +#~ msgstr "Angebotsdatum" + +#~ msgid "Quote Items Table" +#~ msgstr "Angebotspositionstabelle" + +#~ msgid "Quote Fields" +#~ msgstr "Angebotsfelder" + +#~ msgid "Quote number" +#~ msgstr "Angebotsnummer" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Angebotsstatus (Entwurf/gesendet/bezahlt/überfällig)" + +#~ msgid "Quote notes" +#~ msgstr "Zitatnotizen" + +#~ msgid "Quote status" +#~ msgstr "Angebotsstatus" + +#~ msgid "Quote accepted date" +#~ msgstr "Datum der Annahme des Angebots" + +#~ msgid "Quote creation date" +#~ msgstr "Datum der Angebotserstellung" + +#~ msgid "Quote last update date" +#~ msgstr "Geben Sie das Datum der letzten Aktualisierung an" + +#~ msgid "Quote Items Loop" +#~ msgstr "Angebotselemente-Schleife" + +#~ msgid "Loop through invoice items" +#~ msgstr "Durchlaufen Sie Rechnungspositionen" + +#~ msgid "Align Left" +#~ msgstr "Links ausrichten" + +#~ msgid "Center Horizontally" +#~ msgstr "Horizontal zentrieren" + +#~ msgid "Align Right" +#~ msgstr "Rechts ausrichten" + +#~ msgid "Align Top" +#~ msgstr "Oben ausrichten" + +#~ msgid "Center Vertically" +#~ msgstr "Vertikal zentrieren" + +#~ msgid "Align Bottom" +#~ msgstr "Unten ausrichten" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "Vertriebsmitarbeiter-E-Mail-Zuordnungen" + +#~ msgid "Email Mappings" +#~ msgstr "E-Mail-Zuordnungen" + +#~ msgid "Add Mapping" +#~ msgstr "Zuordnung hinzufügen" + +#~ msgid "Salesman Initial" +#~ msgstr "Kürzel des Vertriebsmitarbeiters" + +#~ msgid "Email Address" +#~ msgstr "E-Mail-Adresse" + +#~ msgid "Pattern/Domain" +#~ msgstr "Muster/Domain" + +#~ msgid "Add Email Mapping" +#~ msgstr "E-Mail-Zuordnung hinzufügen" + +#~ msgid "1-20 letters only" +#~ msgstr "Nur 1–20 Buchstaben" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" +#~ "Das Kürzel des Vertriebsmitarbeiters aus " +#~ "benutzerdefinierten Kundenfeldern (z. B. MM" +#~ " für Max Mustermann)" + +#~ msgid "Direct Email Address" +#~ msgstr "Direkte E-Mail-Adresse" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "Muster (z. B. {value}@test.de)" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "Domain (z. B. test.de)" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "Wird generiert: {initial}@domain" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "Zusätzliche Notizen zu dieser Zuordnung" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" +#~ "Keine Zuordnungen konfiguriert. Klicken Sie" +#~ " auf „Zuordnung hinzufügen“, um eine " +#~ "zu erstellen." + +#~ msgid "Edit Email Mapping" +#~ msgstr "E-Mail-Zuordnung bearbeiten" + +#~ msgid "Error saving mapping" +#~ msgstr "Fehler beim Speichern der Zuordnung" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "Sind Sie sicher, dass Sie diese Zuordnung löschen möchten?" + +#~ msgid "Error deleting mapping" +#~ msgstr "Fehler beim Löschen der Zuordnung" + +#~ msgid "Time Entry Requirements" +#~ msgstr "Zeiteintragsanforderungen" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" +#~ "Optional können Benutzer beim Erfassen " +#~ "der Arbeitszeit aufgefordert werden, Aufgabe" +#~ " und Beschreibung anzugeben. Gilt für " +#~ "Web, Mobil und Desktop." + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" +#~ "Aufgabenauswahl beim Zeiterfassen erforderlich " +#~ "(nur projektbasierte Einträge)" + +#~ msgid "Require description when logging time" +#~ msgstr "Beschreibung beim Zeiterfassen erforderlich" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "Mindestbeschreibungslänge (Zeichen)" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "Mindestanzahl der im Beschreibungsfeld erforderlichen Zeichen." + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "Standard-Tagesarbeitszeit (für neue Benutzer)" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" +#~ "Wird als Standard-Stunden pro Tag " +#~ "für die Überstundenberechnung bei der " +#~ "Erstellung neuer Benutzer verwendet. " +#~ "Bestehende Benutzer behalten ihre eigene " +#~ "Einstellung." + +#~ msgid "Support visibility" +#~ msgstr "Support-Sichtbarkeit" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" +#~ "Spendenhinweise und Support-Aufforderungen für" +#~ " alle Benutzer mit einem Einmalschlüssel" +#~ " entfernen (25 €, ein Schlüssel pro" +#~ " Instanz)." + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" +#~ "Kopieren Sie Ihre System-ID unten " +#~ "und verwenden Sie sie beim Kauf " +#~ "des Schlüssels." + +#~ msgid "Buy key" +#~ msgstr "Schlüssel kaufen" + +#~ msgid "— key sent by email." +#~ msgstr "— Schlüssel per E-Mail gesendet." + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "Fügen Sie den Code unten ein und klicken Sie auf Verifizieren." + +#~ msgid "Get key" +#~ msgstr "Schlüssel erhalten" + +#~ msgid "Step 1: System ID" +#~ msgstr "Schritt 1: System-ID" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "Verwenden Sie diese ID beim Kauf Ihres Schlüssels." + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" +#~ "Supporter-Instanz: Hinweise werden minimiert;" +#~ " Support-Einstiegspunkte bleiben verfügbar." + +#~ msgid "Step 3: Paste code" +#~ msgstr "Schritt 3: Code einfügen" + +#~ msgid "Enter code from email" +#~ msgstr "Code aus E-Mail eingeben" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "Verifizieren und für alle ausblenden" + +#~ msgid "Company Branding" +#~ msgstr "Firmenbranding" + +#~ msgid "Invoice Defaults" +#~ msgstr "Rechnungsvorgaben" + +#~ msgid "Backup Settings" +#~ msgstr "Sicherungseinstellungen" + +#~ msgid "LDAP" +#~ msgstr "LDAP" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" +#~ "LDAP-Authentifizierung wird mit " +#~ "Umgebungsvariablen konfiguriert. Die Werte " +#~ "unten sind schreibgeschützt." + +#~ msgid "Enabled for auth" +#~ msgstr "Für Authentifizierung aktiviert" + +#~ msgid "Host" +#~ msgstr "Host" + +#~ msgid "SSL" +#~ msgstr "SSL" + +#~ msgid "TLS" +#~ msgstr "TLS" + +#~ msgid "on" +#~ msgstr "An" + +#~ msgid "off" +#~ msgstr "aus" + +#~ msgid "User DN" +#~ msgstr "Benutzer-DN" + +#~ msgid "User login attribute" +#~ msgstr "Benutzeranmeldeattribut" + +#~ msgid "Test LDAP Connection" +#~ msgstr "LDAP-Verbindung testen" + +#~ msgid "Export Settings" +#~ msgstr "Exporteinstellungen" + +#~ msgid "Kiosk Mode" +#~ msgstr "Kiosk-Modus" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "Kiosk-Modus aktivieren" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" +#~ "Der Kiosk-Modus bietet eine vereinfachte" +#~ " Oberfläche für Lagerbetrieb mit " +#~ "Barcode-Scannen und Zeiterfassung. Zugang " +#~ "unter" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "Automatische Abmeldung (Minuten)" + +#~ msgid "Default Movement Type" +#~ msgstr "Standard-Bewegungstyp" + +#~ msgid "Adjustment" +#~ msgstr "Einstellung" + +#~ msgid "Transfer" +#~ msgstr "Überweisen" + +#~ msgid "Sale" +#~ msgstr "Verkauf" + +#~ msgid "Rent" +#~ msgstr "Miete" + +#~ msgid "Purchase" +#~ msgstr "Kaufen" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "Kamerabasiertes Barcode-Scannen erlauben" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "Grund für Lagerkorrekturen erforderlich" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" +#~ "Den gemeinsamen serverseitigen KI-Helfer " +#~ "für Web-App, Desktop-App und " +#~ "API-Clients konfigurieren. Schlüssel für " +#~ "gehostete Anbieter verbleiben auf dem " +#~ "Server." + +#~ msgid "Availability" +#~ msgstr "Verfügbarkeit" + +#~ msgid "Use environment default" +#~ msgstr "Umgebungsstandard verwenden" + +#~ msgid "currently" +#~ msgstr "aktuell" + +#~ msgid "Provider" +#~ msgstr "Anbieter" + +#~ msgid "Base URL" +#~ msgstr "Basis-URL" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "Für Ollama ist dies die URL vom Flask-Server zu Ollama." + +#~ msgid "Model" +#~ msgstr "Modell" + +#~ msgid "Hosted API key" +#~ msgstr "Gehosteter API-Schlüssel" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "Gespeichert; leer lassen zum Beibehalten" + +#~ msgid "Only required for hosted providers" +#~ msgstr "Nur für gehostete Anbieter erforderlich" + +#~ msgid "Clear stored API key" +#~ msgstr "Gespeicherten API-Schlüssel löschen" + +#~ msgid "Timeout seconds" +#~ msgstr "Timeout-Sekunden" + +#~ msgid "Context limit" +#~ msgstr "Kontextlimit" + +#~ msgid "System prompt" +#~ msgstr "Systemaufforderung" + +#~ msgid "Test AI connection" +#~ msgstr "KI-Verbindung testen" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Datenschutz und Analyse" + +#~ msgid "Save Settings" +#~ msgstr "Einstellungen speichern" + +#~ msgid "Upload New Logo" +#~ msgstr "Laden Sie ein neues Logo hoch" + +#~ msgid "Logo Preview" +#~ msgstr "Logo-Vorschau" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Möchten Sie das Firmenlogo wirklich entfernen?" + +#~ msgid "Remove Logo" +#~ msgstr "Logo entfernen" + +#~ msgid "Copied" +#~ msgstr "Kopiert" + +#~ msgid "Please enter a code." +#~ msgstr "Bitte geben Sie einen Code ein." + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" +#~ "Erfolgreich. Die Spendenoberfläche ist jetzt" +#~ " für alle ausgeblendet. Laden Sie die" +#~ " Seite neu, um die Änderung zu " +#~ "sehen." + +#~ msgid "Request failed." +#~ msgstr "Anfrage fehlgeschlagen." + +#~ msgid "Testing connection..." +#~ msgstr "Verbindung wird getestet..." + +#~ msgid "Connection failed." +#~ msgstr "Verbindung fehlgeschlagen." + +#~ msgid "AI connection succeeded." +#~ msgstr "KI-Verbindung erfolgreich." + +#~ msgid "AI connection failed." +#~ msgstr "KI-Verbindung fehlgeschlagen." + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Telemetrie- und Analyse-Dashboard" + +#~ msgid "Admin → Settings" +#~ msgstr "Admin → Einstellungen" + +#~ msgid "Password Reset" +#~ msgstr "Passwort zurücksetzen" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "Lassen Sie das Feld leer, um das aktuelle Passwort beizubehalten" + +#~ msgid "Client Portal Access" +#~ msgstr "Zugriff auf das Kundenportal" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "Zugewiesene Kunden (Subunternehmer)" + +#~ msgid "Assigned clients" +#~ msgstr "Zugewiesene Kunden" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "Halten Sie Strg/Cmd gedrückt, um mehrere Kunden auszuwählen." + +#~ msgid "Admin Access" +#~ msgstr "Admin-Zugriff" + +#~ msgid "Migrate to new role system" +#~ msgstr "Auf neues Rollensystem migrieren" + +#~ msgid "Migrate" +#~ msgstr "Wandern" + +#~ msgid "Roles" +#~ msgstr "Rollen" + +#~ msgid "No users found." +#~ msgstr "Keine Benutzer gefunden." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "Benutzer „{name}“ kann nicht gelöscht " +#~ "werden, da er über {count} Zeiteinträge" +#~ " verfügt. Benutzer mit bestehenden " +#~ "Zeiteinträgen können nicht gelöscht werden." + +#~ msgid "Cannot Delete User" +#~ msgstr "Benutzer kann nicht gelöscht werden" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie den " +#~ "Benutzer „{name}“ löschen möchten? Diese " +#~ "Aktion kann nicht rückgängig gemacht " +#~ "werden." + +#~ msgid "Delete User" +#~ msgstr "Benutzer löschen" + +#~ msgid "Custom Field Definitions" +#~ msgstr "Benutzerdefinierte Felddefinitionen" + +#~ msgid "Create" +#~ msgstr "Erstellen" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "Benutzerdefinierte Felddefinition bearbeiten" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "Benutzerdefinierte Felddefinition erstellen" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" +#~ "Ein globales benutzerdefiniertes Feld " +#~ "definieren, das für alle Kunden " +#~ "verwendet werden kann" + +#~ msgid "Field Key" +#~ msgstr "Feldschlüssel" + +#~ msgid "e.g., debtor_number" +#~ msgstr "z. B. debtor_number" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" +#~ "Eindeutiger Bezeichner für dieses Feld " +#~ "(nur Buchstaben, Zahlen und Unterstriche). " +#~ "Kann nach der Erstellung nicht geändert" +#~ " werden." + +#~ msgid "Label" +#~ msgstr "Etikett" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "z. B. Debitorennummer" + +#~ msgid "Display name shown in client forms" +#~ msgstr "Anzeigename in Kundenformularen" + +#~ msgid "Optional help text for this field" +#~ msgstr "Optionaler Hilfetext für dieses Feld" + +#~ msgid "Display Order" +#~ msgstr "Anzeigereihenfolge" + +#~ msgid "Lower numbers appear first" +#~ msgstr "Niedrigere Zahlen erscheinen zuerst" + +#~ msgid "Mandatory" +#~ msgstr "Pflichtfeld" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "Pflichtfeld – Kunden müssen dieses ausfüllen" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "Nur aktive Felder werden in Kundenformularen angezeigt" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "Globale benutzerdefinierte Felddefinitionen für Kunden verwalten" + +#~ msgid "Create Custom Field" +#~ msgstr "Benutzerdefiniertes Feld erstellen" + +#~ msgid "Order" +#~ msgstr "Reihenfolge" + +#~ msgid "Required" +#~ msgstr "Erforderlich" + +#~ msgid "Optional" +#~ msgstr "Optional" + +#~ msgid "No custom field definitions found." +#~ msgstr "Keine benutzerdefinierten Felddefinitionen gefunden." + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "Wie benutzerdefinierte Felddefinitionen funktionieren" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" +#~ "Benutzerdefinierte Felddefinitionen ermöglichen es" +#~ " Ihnen, globale Felder zu erstellen, " +#~ "die für alle Kunden verwendet werden " +#~ "können. Dies beseitigt die Notwendigkeit, " +#~ "dieselben benutzerdefinierten Felder für jeden" +#~ " Kunden neu zu erstellen." + +#~ msgid "Features:" +#~ msgstr "Funktionen:" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" +#~ "Benutzerdefinierte Felder einmal definieren " +#~ "und für alle Kunden verwenden" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" +#~ "Felder als Pflichtfelder markieren, um " +#~ "sicherzustellen, dass sie immer ausgefüllt " +#~ "werden" + +#~ msgid "Control field order and visibility" +#~ msgstr "Feldreihenfolge und Sichtbarkeit steuern" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" +#~ "Link-Vorlagen können zugewiesen werden, " +#~ "um Feldwerte anklickbar zu machen" + +#~ msgid "Example:" +#~ msgstr "Beispiel:" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" +#~ "Erstellen Sie eine Felddefinition mit " +#~ "dem Schlüssel „debtor_number\" und der " +#~ "Bezeichnung „Debitorennummer\"" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "Als Pflichtfeld markieren, wenn erforderlich" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" +#~ "Beim Erstellen oder Bearbeiten eines " +#~ "Kunden erscheint dieses Feld automatisch" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" +#~ "Eine Link-Vorlage erstellen, um den " +#~ "Wert anklickbar zu machen (z. B. " +#~ "https://erp.example.com/customer/%value%)" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" +#~ "Warnung: %(count)d Kunde(n) haben einen " +#~ "Wert für dieses benutzerdefinierte Feld. " +#~ "Das Löschen dieser Felddefinition entfernt " +#~ "den Feldwert von allen %(count)d " +#~ "Kunde(n). Sind Sie sicher, dass Sie " +#~ "die benutzerdefinierte Felddefinition „%(label)s“" +#~ " löschen möchten?" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie diese " +#~ "benutzerdefinierte Felddefinition löschen möchten?" + +#~ msgid "Set as default template" +#~ msgstr "Als Standardvorlage festlegen" + +#~ msgid "HTML Template" +#~ msgstr "HTML-Vorlage" + +#~ msgid "Custom Message" +#~ msgstr "Benutzerdefinierte Nachricht" + +#~ msgid "More Variables" +#~ msgstr "Weitere Variablen" + +#~ msgid "Create Template" +#~ msgstr "Vorlage erstellen" + +#~ msgid "Available Variables" +#~ msgstr "Verfügbare Variablen" + +#~ msgid "Invoice Variables" +#~ msgstr "Rechnungsvariablen" + +#~ msgid "Other Variables" +#~ msgstr "Andere Variablen" + +#~ msgid "Send test email" +#~ msgstr "Test-E-Mail senden" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" +#~ "Sendet die gespeicherte Vorlage (zuerst " +#~ "Änderungen speichern). Verwendet dieselbe " +#~ "Darstellung wie eine echte Rechnungs-E-Mail." +#~ " Standardempfänger kann unter Admin → " +#~ "E-Mail-Konfiguration festgelegt werden." + +#~ msgid "Recipient" +#~ msgstr "Empfänger" + +#~ msgid "Invoice ID" +#~ msgstr "Rechnungs-ID" + +#~ msgid "Update Template" +#~ msgstr "Vorlage aktualisieren" + +#~ msgid "Failed to send test email." +#~ msgstr "Test-E-Mail konnte nicht gesendet werden." + +#~ msgid "No email templates found." +#~ msgstr "Keine E-Mail-Vorlagen gefunden." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" +#~ "Erstellen Sie Ihre erste E-Mail-Vorlage," +#~ " um Rechnungs-E-Mails anzupassen." + +#~ msgid "Create Email Template" +#~ msgstr "E-Mail-Vorlage erstellen" + +#~ msgid "Delete Email Template" +#~ msgstr "E-Mail-Vorlage löschen" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "Sind Sie sicher, dass Sie löschen möchten?" + +#~ msgid "This action cannot be undone." +#~ msgstr "Diese Aktion kann nicht rückgängig gemacht werden." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" +#~ "Verwendet dieselbe Darstellung wie eine " +#~ "echte Rechnungs-E-Mail. Legen Sie eine " +#~ "Standardadresse unter Admin → E-Mail-" +#~ "Konfiguration (Test-Empfänger-E-Mail) fest." + +#~ msgid "Template Information" +#~ msgstr "Informationen zur Vorlage" + +#~ msgid "Integration Setup" +#~ msgstr "Integrationseinrichtung" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" +#~ "OAuth-Anmeldedaten für jede Integration " +#~ "konfigurieren. Globale Integrationen werden " +#~ "von allen Benutzern gemeinsam genutzt." + +#~ msgid "Global" +#~ msgstr "Global" + +#~ msgid "Per User" +#~ msgstr "Pro Benutzer" + +#~ msgid "Setup" +#~ msgstr "Einrichtung" + +#~ msgid "Trello API Key" +#~ msgstr "Trello API-Schlüssel" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "Beziehen von https://trello.com/app-key" + +#~ msgid "Get your API key from" +#~ msgstr "Holen Sie sich Ihren API-Schlüssel von" + +#~ msgid "Trello API Secret" +#~ msgstr "Trello API-Secret" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "Leer lassen, um den aktuellen Wert beizubehalten" + +#~ msgid "Get your API secret from" +#~ msgstr "Holen Sie sich Ihr API-Secret von" + +#~ msgid "(shown after generating API key)" +#~ msgstr "(wird nach der Generierung des API-Schlüssels angezeigt)" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" +#~ "Nach dem Speichern von API-Schlüssel " +#~ "und Secret können Sie Trello über " +#~ "den OAuth-Ablauf verbinden. Das Token" +#~ " wird automatisch während der Verbindung" +#~ " generiert." + +#~ msgid "OAuth Client ID" +#~ msgstr "OAuth Client-ID" + +#~ msgid "OAuth Client Secret" +#~ msgstr "OAuth Client-Secret" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" +#~ "Für die neue Einrichtung erforderlich. " +#~ "Leer lassen, um das vorhandene Secret" +#~ " beizubehalten." + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "Leer lassen für „common“ (Mehrinstanzen)" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" +#~ "Leer lassen für „common“ (Mehrinstanzen). " +#~ "Geben Sie Ihre Azure AD Mandanten-" +#~ "ID für Einzelinstanzen-Apps ein." + +#~ msgid "GitLab Instance URL" +#~ msgstr "GitLab-Instanz-URL" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" +#~ "URL Ihrer GitLab-Instanz. Verwenden Sie" +#~ " „https://gitlab.com“ für GitLab.com oder " +#~ "Ihre selbst gehostete GitLab-URL." + +#~ msgid "OAuth Redirect URI" +#~ msgstr "OAuth-Weiterleitungs-URI" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" +#~ "Fügen Sie diese URL als autorisierte " +#~ "Weiterleitungs-URI in Ihren OAuth-" +#~ "App-Einstellungen hinzu:" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "Automatischer Verbindungsablauf" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" +#~ "Nachdem Sie diese Anmeldedaten gespeichert " +#~ "haben, können Benutzer auf „Google " +#~ "Kalender verbinden\" klicken" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "Sie werden automatisch zu Google OAuth weitergeleitet" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" +#~ "Keine manuelle Eingabe von Anmeldedaten " +#~ "erforderlich – vollständig automatisch!" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "Jeder Benutzer verbindet sein eigenes Google Calendar-Konto" + +#~ msgid "Save Credentials" +#~ msgstr "Anmeldedaten speichern" + +#~ msgid "How Google Calendar Works" +#~ msgstr "Wie Google Calendar funktioniert" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" +#~ "Nachdem Sie die obigen OAuth-" +#~ "Anmeldedaten gespeichert haben, können " +#~ "Benutzer ihren Google Kalender verbinden, " +#~ "indem sie auf der Integrationsseite auf" +#~ " „Google Kalender verbinden“ klicken." + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" +#~ "Sie werden automatisch zu Google " +#~ "weitergeleitet, um den Zugriff zu " +#~ "autorisieren – keine manuelle Eingabe " +#~ "von Anmeldedaten erforderlich!" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" +#~ "Jeder Benutzer verbindet sein eigenes " +#~ "Google Calendar-Konto (benutzerbezogene " +#~ "Integration)." + +#~ msgid "Connection Status" +#~ msgstr "Verbindungsstatus" + +#~ msgid "View Integration" +#~ msgstr "Integration anzeigen" + +#~ msgid "Next Steps" +#~ msgstr "Nächste Schritte" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "Nach dem Speichern der Anmeldedaten die Integration verbinden:" + +#~ msgid "Connect Integration" +#~ msgstr "Integration verbinden" + +#~ msgid "Edit Link Template" +#~ msgstr "Link-Vorlage bearbeiten" + +#~ msgid "Create Link Template" +#~ msgstr "Link-Vorlage erstellen" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "URL-Vorlage für benutzerdefinierte Kundenfelder konfigurieren" + +#~ msgid "Template Name" +#~ msgstr "Vorlagenname" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "z. B. ERP-System-Link" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "Ein beschreibender Name für diese Link-Vorlage" + +#~ msgid "Optional description" +#~ msgstr "Optionale Beschreibung" + +#~ msgid "URL Template" +#~ msgstr "URL-Vorlage" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "https://example.com/customer/%value%" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" +#~ "URL mit {value} oder %value% " +#~ "Platzhalter. Beispiele: " +#~ "https://erp.example.com/customer/{value} oder " +#~ "https://erp.example.com/customer/%value%" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "Der Schlüssel im client custom_fields JSON" + +#~ msgid "Icon" +#~ msgstr "Symbol" + +#~ msgid "fas fa-link" +#~ msgstr "fas fa-link" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "Font Awesome Icon-Klasse (z. B. fas fa-link)" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "Nur aktive Vorlagen werden auf Kundenseiten angezeigt" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "URL-Vorlagen für benutzerdefinierte Kundenfelder verwalten" + +#~ msgid "Name" +#~ msgstr "Name" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "Sind Sie sicher, dass Sie diese Link-Vorlage löschen möchten?" + +#~ msgid "No link templates found." +#~ msgstr "Keine Link-Vorlagen gefunden." + +#~ msgid "How Link Templates Work" +#~ msgstr "Wie Link-Vorlagen funktionieren" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" +#~ "Link-Vorlagen ermöglichen es Ihnen, " +#~ "Schnelllinks zu externen Systemen (wie " +#~ "ERP-Systemen) mithilfe von Werten aus " +#~ "benutzerdefinierten Kundenfeldern zu erstellen." + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" +#~ "Erstellen Sie ein benutzerdefiniertes Feld " +#~ "namens „debtor_number“ für einen Kunden" + +#~ msgid "Create a link template with URL:" +#~ msgstr "Eine Link-Vorlage mit URL erstellen:" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "Den Feldschlüssel auf „debtor_number\" setzen" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" +#~ "Beim Anzeigen des Kunden erscheint ein" +#~ " Link, der das ERP-System mit " +#~ "der richtigen Kunden-ID öffnet" + +#~ msgid "URL Template Format:" +#~ msgstr "URL-Vorlagenformat:" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" +#~ "Verwenden Sie {value} als Platzhalter " +#~ "für den benutzerdefinierten Feldwert." + +#~ msgid "System Permissions" +#~ msgstr "Systemberechtigungen" + +#~ msgid "All available permissions in the system" +#~ msgstr "Alle verfügbaren Berechtigungen im System" + +#~ msgid "Back to Roles" +#~ msgstr "Zurück zu Rollen" + +#~ msgid "permissions" +#~ msgstr "Berechtigungen" + +#~ msgid "No description available" +#~ msgstr "Keine Beschreibung verfügbar" + +#~ msgid "About Permissions" +#~ msgstr "Über Berechtigungen" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Berechtigungen legen fest, welche Aktionen " +#~ "Benutzer im System ausführen können. " +#~ "Diese Berechtigungen werden Rollen zugewiesen," +#~ " und Rollen werden Benutzern zugewiesen." +#~ " Dies bietet ein flexibles und " +#~ "granulares Zugangskontrollsystem." + +#~ msgid "Edit Role" +#~ msgstr "Rolle bearbeiten" + +#~ msgid "Create New Role" +#~ msgstr "Neue Rolle erstellen" + +#~ msgid "Role Name" +#~ msgstr "Rollenname" + +#~ msgid "A unique name for this role" +#~ msgstr "Ein eindeutiger Name für diese Rolle" + +#~ msgid "Optional description of this role" +#~ msgstr "Optionale Beschreibung dieser Rolle" + +#~ msgid "Permissions" +#~ msgstr "Berechtigungen" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Wählen Sie die Berechtigungen aus, die diese Rolle haben soll:" + +#~ msgid "Toggle All" +#~ msgstr "Alle umschalten" + +#~ msgid "Module visibility" +#~ msgstr "Modulsichtbarkeit" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" +#~ "Wählen Sie, welche Module für diese " +#~ "Rolle ausgeblendet werden sollen. " +#~ "Ausgeblendete Module erscheinen nicht in " +#~ "der Navigation und sind nicht direkt " +#~ "zugänglich." + +#~ msgid "Hide" +#~ msgstr "Ausblenden" + +#~ msgid "Update Role" +#~ msgstr "Rolle aktualisieren" + +#~ msgid "Create Role" +#~ msgstr "Rolle erstellen" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Verwalten Sie Rollen und ihre Berechtigungen" + +#~ msgid "View Permissions" +#~ msgstr "Berechtigungen anzeigen" + +#~ msgid "Total Roles" +#~ msgstr "Gesamtrollen" + +#~ msgid "System Roles" +#~ msgstr "Systemrollen" + +#~ msgid "Custom Roles" +#~ msgstr "Benutzerdefinierte Rollen" + +#~ msgid "Assigned Users" +#~ msgstr "Zugewiesene Benutzer" + +#~ msgid "Type" +#~ msgstr "Typ" + +#~ msgid "Default role" +#~ msgstr "Standardrolle" + +#~ msgid "user" +#~ msgstr "Benutzer" + +#~ msgid "No users" +#~ msgstr "Keine Benutzer" + +#~ msgid "Custom" +#~ msgstr "Brauch" + +#~ msgid "View" +#~ msgstr "Sicht" + +#~ msgid "Permissions for" +#~ msgstr "Berechtigungen für" + +#~ msgid "No permissions assigned." +#~ msgstr "Keine Berechtigungen zugewiesen." + +#~ msgid "No roles found." +#~ msgstr "Keine Rollen gefunden." + +#~ msgid "About Roles & Permissions" +#~ msgstr "Über Rollen und Berechtigungen" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "Rollen sind Sammlungen von Berechtigungen, " +#~ "die Benutzern zugewiesen werden können. " +#~ "Systemrollen sind vordefiniert und können " +#~ "nicht gelöscht oder umbenannt werden. Es" +#~ " können jedoch benutzerdefinierte Rollen " +#~ "für Ihre spezifischen Anforderungen erstellt" +#~ " werden." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "Sind Sie sicher, dass Sie die Rolle löschen möchten?" + +#~ msgid "Delete Role" +#~ msgstr "Rolle löschen" + +#~ msgid "No description" +#~ msgstr "Keine Beschreibung" + +#~ msgid "Role Information" +#~ msgstr "Rolleninformationen" + +#~ msgid "System Role" +#~ msgstr "Systemrolle" + +#~ msgid "Custom Role" +#~ msgstr "Benutzerdefinierte Rolle" + +#~ msgid "Total Permissions" +#~ msgstr "Gesamtberechtigungen" + +#~ msgid "Created" +#~ msgstr "Erstellt" + +#~ msgid "Users with this Role" +#~ msgstr "Benutzer mit dieser Rolle" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Dieser Rolle sind noch keine Benutzer zugewiesen." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "Dieser Rolle sind keine Berechtigungen zugewiesen." + +#~ msgid "Back to User" +#~ msgstr "Zurück zum Benutzer" + +#~ msgid "Manage Roles for" +#~ msgstr "Rollen verwalten für" + +#~ msgid "Assign Roles" +#~ msgstr "Rollen zuweisen" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Wählen Sie die Rollen aus, die " +#~ "dieser Benutzer haben soll. Benutzer " +#~ "erben alle Berechtigungen von ihren " +#~ "zugewiesenen Rollen." + +#~ msgid "Update Roles" +#~ msgstr "Rollen aktualisieren" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Aktuelle effektive Berechtigungen" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "" +#~ "Dies sind alle Berechtigungen, die der" +#~ " Benutzer derzeit durch seine Rollen " +#~ "hat:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "Keine Berechtigungen (Rollen zuweisen, um Berechtigungen zu erteilen)" + +#~ msgid "Create Webhook" +#~ msgstr "Erstellen Sie einen Webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Webhook bearbeiten" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Webhook für Integrationen konfigurieren" + +#~ msgid "Webhook URL" +#~ msgstr "Webhook-URL" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "Die URL, an die Webhook-Ereignisse gesendet werden" + +#~ msgid "Events" +#~ msgstr "Veranstaltungen" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Wählen Sie aus, welche Ereignisse diesen Webhook auslösen sollen" + +#~ msgid "HTTP Method" +#~ msgstr "HTTP-Methode" + +#~ msgid "Content Type" +#~ msgstr "Inhaltstyp" + +#~ msgid "Max Retries" +#~ msgstr "Max. Wiederholungsversuche" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Wiederholungsverzögerung (Sekunden)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Timeout (Sekunden)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Geheimnis regenerieren" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "" +#~ "Warnung: Durch die Neugenerierung des " +#~ "Geheimnisses wird das aktuelle Geheimnis " +#~ "ungültig" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Verwalten Sie Webhook-Integrationen" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "Statistics" +#~ msgstr "Statistiken" + +#~ msgid "Total" +#~ msgstr "Gesamt" + +#~ msgid "No webhooks configured" +#~ msgstr "Keine Webhooks konfiguriert" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Erstellen Sie Ihren ersten Webhook" + +#~ msgid "Webhook details" +#~ msgstr "Webhook-Details" + +#~ msgid "Test" +#~ msgstr "Prüfen" + +#~ msgid "Secret" +#~ msgstr "Geheimnis" + +#~ msgid "(truncated)" +#~ msgstr "(gekürzt)" + +#~ msgid "Total Deliveries" +#~ msgstr "Gesamtlieferungen" + +#~ msgid "Successful" +#~ msgstr "Erfolgreich" + +#~ msgid "Last Delivery" +#~ msgstr "Letzte Lieferung" + +#~ msgid "Recent Deliveries" +#~ msgstr "Aktuelle Lieferungen" + +#~ msgid "Event" +#~ msgstr "Ereignis" + +#~ msgid "Attempt" +#~ msgstr "Versuchen" + +#~ msgid "Response" +#~ msgstr "Antwort" + +#~ msgid "Time" +#~ msgstr "Zeit" + +#~ msgid "Retrying" +#~ msgstr "Erneuter Versuch" + +#~ msgid "No deliveries yet" +#~ msgstr "Noch keine Lieferungen" + +#~ msgid "Send a test webhook event?" +#~ msgstr "Ein Test-Webhook-Ereignis senden?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "Test-Webhook erfolgreich gesendet!" + +#~ msgid "Error:" +#~ msgstr "Fehler:" + +#~ msgid "Unknown error" +#~ msgstr "Unbekannter Fehler" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Fehler beim Senden des Test-Webhooks:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Analytics-Dashboard" + +#~ msgid "Last 7 days" +#~ msgstr "Letzte 7 Tage" + +#~ msgid "Last 30 days" +#~ msgstr "Letzte 30 Tage" + +#~ msgid "Last 90 days" +#~ msgstr "Letzte 90 Tage" + +#~ msgid "Last year" +#~ msgstr "Letztes Jahr" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Alle Diagramme als PNG exportieren" + +#~ msgid "Export Charts" +#~ msgstr "Diagramme exportieren" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Wichtige Kennzahlen und Erkenntnisse zu Ihrer Zeiterfassung" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Durchschnittliche tägliche Stunden" + +#~ msgid "Regular" +#~ msgstr "Regulär" + +#~ msgid "Overtime" +#~ msgstr "Überstunden" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Täglicher Stundentrend" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Abrechenbar vs. nicht abrechenbar" + +#~ msgid "Weekly Trends" +#~ msgstr "Wöchentliche Trends" + +#~ msgid "Hours Forecast" +#~ msgstr "Stunden-Prognose" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "Nächste 7 Tage basierend auf dem 7-Tage-Durchschnitt" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Tägliche reguläre vs. Überstunden" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Stunden nach Tageszeit" + +#~ msgid "Project Efficiency" +#~ msgstr "Projekteffizienz" + +#~ msgid "User Performance" +#~ msgstr "Benutzerleistung" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "Diagramme konnten nicht geladen werden. Bitte versuchen Sie es erneut." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "" +#~ "Diagramme konnten nicht aktualisiert werden." +#~ " Bitte versuchen Sie es erneut." + +#~ msgid "Hour of Day" +#~ msgstr "Stunde des Tages" + +#~ msgid "Revenue" +#~ msgstr "Einnahmen" + +#~ msgid "Forecast" +#~ msgstr "Prognose" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "Diagramme exportiert. Überprüfen Sie Ihre Downloads." + +#~ msgid "Export" +#~ msgstr "Export" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Wichtige Kennzahlen und umsetzbare Erkenntnisse" + +#~ msgid "vs previous period" +#~ msgstr "im Vergleich zur Vorperiode" + +#~ msgid "of total" +#~ msgstr "insgesamt" + +#~ msgid "Potential Revenue" +#~ msgstr "Potenzielle Einnahmen" + +#~ msgid "Avg rate:" +#~ msgstr "Durchschnittspreis:" + +#~ msgid "Trend" +#~ msgstr "Trend" + +#~ msgid "active projects" +#~ msgstr "aktive Projekte" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Einblicke und Empfehlungen" + +#~ msgid "Cumulative" +#~ msgstr "Kumulativ" + +#~ msgid "Billable Distribution" +#~ msgstr "Abrechnungsfähige Verteilung" + +#~ msgid "Task Status Overview" +#~ msgstr "Übersicht über den Aufgabenstatus" + +#~ msgid "Tasks Completed" +#~ msgstr "Aufgaben abgeschlossen" + +#~ msgid "In Progress" +#~ msgstr "Im Gange" + +#~ msgid "To Do" +#~ msgstr "Zu tun" + +#~ msgid "Revenue by Project" +#~ msgstr "Umsatz nach Projekt" + +#~ msgid "Payments Over Time" +#~ msgstr "Zahlungen im Laufe der Zeit" + +#~ msgid "Payment Methods" +#~ msgstr "Zahlungsmethoden" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Einnahmen vs. Zahlungen" + +#~ msgid "Collection Rate" +#~ msgstr "Sammelquote" + +#~ msgid "Project Completion Rate" +#~ msgstr "Projektabschlussrate" + +#~ msgid "Billable" +#~ msgstr "Abrechnungsfähig" + +#~ msgid "Non-Billable" +#~ msgstr "Nicht abrechenbar" + +#~ msgid "Completed" +#~ msgstr "Vollendet" + +#~ msgid "Cancelled" +#~ msgstr "Abgesagt" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Abschlussrate (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Übersicht über mobile Erkenntnisse" + +#~ msgid "Daily Avg" +#~ msgstr "Täglicher Durchschn" + +#~ msgid "Daily Hours" +#~ msgstr "Tägliche Öffnungszeiten" + +#~ msgid "Top Projects" +#~ msgstr "Top-Projekte" + +#~ msgid "Time Entry Approvals" +#~ msgstr "Zeiteintragsgenehmigungen" + +#~ msgid "Review and approve time entries" +#~ msgstr "Zeiteinträge prüfen und genehmigen" + +#~ msgid "Pending Approvals" +#~ msgstr "Ausstehende Genehmigungen" + +#~ msgid "Time Entry" +#~ msgstr "Zeiteintrag" + +#~ msgid "Requested by" +#~ msgstr "Angefordert von" + +#~ msgid "hours" +#~ msgstr "Std." + +#~ msgid "Direct" +#~ msgstr "Direkt" + +#~ msgid "Approve" +#~ msgstr "Genehmigen" + +#~ msgid "Reject" +#~ msgstr "Ablehnen" + +#~ msgid "No pending approvals" +#~ msgstr "Keine ausstehenden Genehmigungen" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "Alle Zeiteinträge wurden geprüft." + +#~ msgid "My Requests" +#~ msgstr "Meine Anfragen" + +#~ msgid "No pending requests" +#~ msgstr "Keine ausstehenden Anfragen" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "Sie haben keine Zeiteintragsgenehmigungsanfragen." + +#~ msgid "Reject Time Entry" +#~ msgstr "Zeiteintrag ablehnen" + +#~ msgid "Reason for rejection" +#~ msgstr "Ablehnungsgrund" + +#~ msgid "Approval Details" +#~ msgstr "Genehmigungsdetails" + +#~ msgid "Review time entry approval request" +#~ msgstr "Zeiteintragsgenehmigungsanfrage prüfen" + +#~ msgid "Time Entry Details" +#~ msgstr "Zeiteintragdetails" + +#~ msgid "Entry ID" +#~ msgstr "Eintrags-ID" + +#~ msgid "Approval Information" +#~ msgstr "Genehmigungsinformationen" + +#~ msgid "Requested at" +#~ msgstr "Angefordert am" + +#~ msgid "Approved by" +#~ msgstr "Genehmigt von" + +#~ msgid "Approved at" +#~ msgstr "Genehmigt am" + +#~ msgid "Request comment" +#~ msgstr "Anfrage-Kommentar" + +#~ msgid "Approval comment" +#~ msgstr "Genehmigungskommentar" + +#~ msgid "Rejection reason" +#~ msgstr "Ablehnungsgrund" + +#~ msgid "Track who changed what and when" +#~ msgstr "Verfolgen Sie, wer wann was geändert hat" + +#~ msgid "Filters" +#~ msgstr "Filter" + +#~ msgid "Entity Type" +#~ msgstr "Entitätstyp" + +#~ msgid "All Types" +#~ msgstr "Alle Typen" + +#~ msgid "Entity ID" +#~ msgstr "Entitäts-ID" + +#~ msgid "All Users" +#~ msgstr "Alle Benutzer" + +#~ msgid "Action" +#~ msgstr "Aktion" + +#~ msgid "All Actions" +#~ msgstr "Alle Aktionen" + +#~ msgid "Updated" +#~ msgstr "Aktualisiert" + +#~ msgid "Deleted" +#~ msgstr "Gelöscht" + +#~ msgid "Time Range" +#~ msgstr "Zeitbereich" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Timestamp" +#~ msgstr "Zeitstempel" + +#~ msgid "Entity" +#~ msgstr "Juristische Person" + +#~ msgid "Field" +#~ msgstr "Feld" + +#~ msgid "Change" +#~ msgstr "Ändern" + +#~ msgid "Reason" +#~ msgstr "Grund" + +#~ msgid "Change Information" +#~ msgstr "Informationen ändern" + +#~ msgid "Entity Context" +#~ msgstr "Entitätskontext" + +#~ msgid "TimeEntry Created" +#~ msgstr "Zeiteintrag erstellt" + +#~ msgid "Entry Owner" +#~ msgstr "Eintragsinhaber" + +#~ msgid "Field Change Details" +#~ msgstr "Details zur Feldänderung" + +#~ msgid "Full Entity State" +#~ msgstr "Vollständiger Entitätszustand" + +#~ msgid "Before Change" +#~ msgstr "Vor der Änderung" + +#~ msgid "After Change" +#~ msgstr "Nach der Änderung" + +#~ msgid "Request Information" +#~ msgstr "Informationen anfordern" + +#~ msgid "Update your password." +#~ msgstr "Aktualisieren Sie Ihr Passwort." + +#~ msgid "Current Password" +#~ msgstr "Aktuelles Passwort" + +#~ msgid "New Password" +#~ msgstr "Neues Passwort" + +#~ msgid "Confirm New Password" +#~ msgstr "Neues Passwort bestätigen" + +#~ msgid "Change Password" +#~ msgstr "Passwort ändern" + +#~ msgid "Security" +#~ msgstr "Sicherheit" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "Zwei-Faktor-Authentifizierung für Ihr Konto verwalten." + +#~ msgid "Two-factor authentication" +#~ msgstr "Zwei-Faktor-Authentifizierung" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "Bitte füllen Sie beide Passwortfelder aus oder lassen Sie beide leer" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "Das Passwort muss mindestens 8 Zeichen lang sein" + +#~ msgid "Passwords do not match" +#~ msgstr "Passwörter stimmen nicht überein" + +#~ msgid "Forgot password" +#~ msgstr "Passwort vergessen" + +#~ msgid "Reset your password" +#~ msgstr "Passwort zurücksetzen" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" +#~ "Geben Sie Ihren Benutzernamen oder Ihre" +#~ " E-Mail-Adresse ein. Wenn ein Konto" +#~ " übereinstimmt und E-Mail konfiguriert ist," +#~ " senden wir Ihnen einen Zurücksetzungslink." + +#~ msgid "Username or email" +#~ msgstr "Benutzername oder E-Mail" + +#~ msgid "your-username or you@example.com" +#~ msgstr "ihr-benutzername oder sie@beispiel.de" + +#~ msgid "Send reset link" +#~ msgstr "Zurücksetzungslink senden" + +#~ msgid "Back to sign in" +#~ msgstr "Zurück zur Anmeldung" + +#~ msgid "Login" +#~ msgstr "Login" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Verfolgen Sie die Zeit. Bleiben Sie organisiert." + +#~ msgid "Sign in to your account" +#~ msgstr "Melden Sie sich bei Ihrem Konto an" + +#~ msgid "Demo credentials" +#~ msgstr "Demo-Anmeldedaten" + +#~ msgid "Forgot your password?" +#~ msgstr "Passwort vergessen?" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "LDAP-Authentifizierung ist aktiviert" + +#~ msgid "Sign in" +#~ msgstr "anmelden" + +#~ msgid "Use the demo credentials above." +#~ msgstr "Verwenden Sie die obigen Demo-Anmeldedaten." + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "" +#~ "Tipp: Geben Sie einen neuen " +#~ "Benutzernamen ein, um Ihr Konto zu " +#~ "erstellen." + +#~ msgid "Or continue with" +#~ msgstr "Oder fahren Sie fort mit" + +#~ msgid "Single Sign-On" +#~ msgstr "Single Sign-On" + +#~ msgid "Edit Profile" +#~ msgstr "Profil bearbeiten" + +#~ msgid "Member Since" +#~ msgstr "Mitglied seit" + +#~ msgid "Reset password" +#~ msgstr "Passwort zurücksetzen" + +#~ msgid "Choose a new password" +#~ msgstr "Neues Passwort wählen" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Geben Sie ein neues Passwort für Ihr Konto ein." + +#~ msgid "New password" +#~ msgstr "Neues Passwort" + +#~ msgid "At least 8 characters" +#~ msgstr "Mindestens 8 Zeichen" + +#~ msgid "Confirm password" +#~ msgstr "Passwort bestätigen" + +#~ msgid "Repeat your new password" +#~ msgstr "Neues Passwort wiederholen" + +#~ msgid "Update password" +#~ msgstr "Passwort aktualisieren" + +#~ msgid "Enter authentication code" +#~ msgstr "Authentifizierungscode eingeben" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" +#~ "Öffnen Sie Ihre Authentifizierungs-App " +#~ "und geben Sie den 6-stelligen Code " +#~ "ein." + +#~ msgid "Code" +#~ msgstr "Code" + +#~ msgid "Verify" +#~ msgstr "Verifizieren" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" +#~ "Fügen Sie Ihrem Konto eine zusätzliche" +#~ " Sicherheitsebene mit einer TOTP-" +#~ "Authentifizierungs-App hinzu (Google " +#~ "Authenticator, Authy, 1Password usw.)." + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "Zwei-Faktor-Authentifizierung ist für Ihr Konto aktiviert." + +#~ msgid "Enter a current code to disable" +#~ msgstr "Geben Sie einen aktuellen Code ein, um zu deaktivieren" + +#~ msgid "Disable 2FA" +#~ msgstr "2FA deaktivieren" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "Zwei-Faktor-Authentifizierung ist derzeit deaktiviert." + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "Ein Secret wird generiert, wenn Sie die 2FA aktivieren." + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "1) Zu Ihrer Authentifizierungs-App hinzufügen" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" +#~ "Wenn Sie keinen QR-Code scannen " +#~ "können, können Sie dieses Secret manuell" +#~ " eingeben:" + +#~ msgid "Provisioning URI:" +#~ msgstr "Bereitstellungs-URI:" + +#~ msgid "2) Verify and enable" +#~ msgstr "2) Verifizieren und aktivieren" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Den 6-stelligen Code eingeben" + +#~ msgid "Enable 2FA" +#~ msgstr "2FA aktivieren" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" +#~ "Für Ihr TimeTracker-Konto wurde eine " +#~ "Passwort-Zurücksetzung angefordert." + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" +#~ "Wenn die Schaltfläche nicht funktioniert, " +#~ "kopieren Sie diesen Link und fügen " +#~ "Sie ihn in Ihren Browser ein:" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" +#~ "Wenn Sie dies nicht angefordert haben," +#~ " können Sie diese E-Mail ignorieren." + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Budgetwarnungen und -prognosen" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "Überwachen Sie Projektbudgets und prognostizieren Sie den Abschluss" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Unbestätigte Warnungen" + +#~ msgid "Critical Alerts" +#~ msgstr "Kritische Warnungen" + +#~ msgid "Projects with Budgets" +#~ msgstr "Projekte mit Budgets" + +#~ msgid "Warning Alerts" +#~ msgstr "Warnmeldungen" + +#~ msgid "Active Alerts" +#~ msgstr "Aktive Warnungen" + +#~ msgid "Acknowledge" +#~ msgstr "Anerkennen" + +#~ msgid "Project Budget Status" +#~ msgstr "Projektbudgetstatus" + +#~ msgid "Budget" +#~ msgstr "Budget" + +#~ msgid "Consumed" +#~ msgstr "Verbraucht" + +#~ msgid "Remaining" +#~ msgstr "Übrig" + +#~ msgid "Progress" +#~ msgstr "Fortschritt" + +#~ msgid "over" +#~ msgstr "über" + +#~ msgid "Over Budget" +#~ msgstr "Über dem Budget" + +#~ msgid "Critical" +#~ msgstr "Kritisch" + +#~ msgid "Healthy" +#~ msgstr "Gesund" + +#~ msgid "No projects with budgets found" +#~ msgstr "Keine Projekte mit Budgets gefunden" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Warnung erfolgreich bestätigt" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "Warnung konnte nicht bestätigt werden" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Budgetanalyse und -prognose" + +#~ msgid "Back to Dashboard" +#~ msgstr "Zurück zum Dashboard" + +#~ msgid "View Project" +#~ msgstr "Projekt anzeigen" + +#~ msgid "Total Budget" +#~ msgstr "Gesamtbudget" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Analyse der Verbrennungsrate" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Tägliche Brennrate" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Wöchentliche Brennrate" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Monatliche Brennrate" + +#~ msgid "Period Total" +#~ msgstr "Periodensumme" + +#~ msgid "Based on last" +#~ msgstr "Basierend auf dem letzten" + +#~ msgid "days" +#~ msgstr "Tage" + +#~ msgid "No burn rate data available" +#~ msgstr "Es sind keine Daten zur Brennrate verfügbar" + +#~ msgid "Completion Estimate" +#~ msgstr "Kostenvoranschlag für die Fertigstellung" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Voraussichtliches Fertigstellungsdatum" + +#~ msgid "days remaining" +#~ msgstr "verbleibende Tage" + +#~ msgid "Confidence Level" +#~ msgstr "Vertrauensniveau" + +#~ msgid "No completion estimate available" +#~ msgstr "Keine Fertigstellungsschätzung verfügbar" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Kostentrendanalyse" + +#~ msgid "Average" +#~ msgstr "Durchschnitt" + +#~ msgid "Resource Allocation" +#~ msgstr "Ressourcenzuteilung" + +#~ msgid "Total Cost" +#~ msgstr "Gesamtkosten" + +#~ msgid "Hourly Rate" +#~ msgstr "Stundensatz" + +#~ msgid "Team Member" +#~ msgstr "Teammitglied" + +#~ msgid "Cost" +#~ msgstr "Kosten" + +#~ msgid "Hours %" +#~ msgstr "Std %" + +#~ msgid "Cost %" +#~ msgstr "Kosten %" + +#~ msgid "Entries" +#~ msgstr "Einträge" + +#~ msgid "Date & Time" +#~ msgstr "Datum und Uhrzeit" + +#~ msgid "Location" +#~ msgstr "Standort" + +#~ msgid "Reminder" +#~ msgstr "Erinnerung" + +#~ msgid "minutes before" +#~ msgstr "Minuten vorher" + +#~ msgid "hours before" +#~ msgstr "Stunden vorher" + +#~ msgid "days before" +#~ msgstr "Tage vorher" + +#~ msgid "Recurring" +#~ msgstr "Wiederkehrend" + +#~ msgid "Until" +#~ msgstr "Bis" + +#~ msgid "Last Updated" +#~ msgstr "Zuletzt aktualisiert" + +#~ msgid "Back to Calendar" +#~ msgstr "Zurück zum Kalender" + +#~ msgid "Delete Event" +#~ msgstr "Ereignis löschen" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie dieses " +#~ "Ereignis löschen möchten? Diese Aktion " +#~ "kann nicht rückgängig gemacht werden." + +#~ msgid "Edit Event" +#~ msgstr "Ereignis bearbeiten" + +#~ msgid "New Event" +#~ msgstr "Neue Veranstaltung" + +#~ msgid "Title" +#~ msgstr "Titel" + +#~ msgid "Start Date" +#~ msgstr "Startdatum" + +#~ msgid "Start Time" +#~ msgstr "Startzeit" + +#~ msgid "End Date" +#~ msgstr "Enddatum" + +#~ msgid "End Time" +#~ msgstr "Endzeit" + +#~ msgid "All Day Event" +#~ msgstr "Ganztägige Veranstaltung" + +#~ msgid "Event Type" +#~ msgstr "Ereignistyp" + +#~ msgid "Meeting" +#~ msgstr "Treffen" + +#~ msgid "Appointment" +#~ msgstr "Termin" + +#~ msgid "Deadline" +#~ msgstr "Frist" + +#~ msgid "-- None --" +#~ msgstr "-- Keine --" + +#~ msgid "No reminder" +#~ msgstr "Keine Erinnerung" + +#~ msgid "5 minutes before" +#~ msgstr "5 Minuten vorher" + +#~ msgid "15 minutes before" +#~ msgstr "15 Minuten vorher" + +#~ msgid "30 minutes before" +#~ msgstr "30 Minuten vorher" + +#~ msgid "1 hour before" +#~ msgstr "1 Stunde vorher" + +#~ msgid "1 day before" +#~ msgstr "1 Tag vorher" + +#~ msgid "Color" +#~ msgstr "Farbe" + +#~ msgid "Choose a color for this event" +#~ msgstr "Wählen Sie eine Farbe für dieses Ereignis" + +#~ msgid "Private Event" +#~ msgstr "Private Veranstaltung" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Private Veranstaltungen sind nur für Sie sichtbar" + +#~ msgid "Recurring Event" +#~ msgstr "Wiederkehrendes Ereignis" + +#~ msgid "This is a recurring event" +#~ msgstr "Dies ist ein wiederkehrendes Ereignis" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Wiederholungsmuster" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Verwenden Sie das RRULE-Format (z. B. FREQ=WEEKLY;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Enddatum der Wiederholung" + +#~ msgid "Update Event" +#~ msgstr "Ereignis aktualisieren" + +#~ msgid "Create Event" +#~ msgstr "Ereignis erstellen" + +#~ msgid "Calendar Integrations" +#~ msgstr "Kalenderintegrationen" + +#~ msgid "Last synced" +#~ msgstr "Zuletzt synchronisiert" + +#~ msgid "Manage Integration" +#~ msgstr "Integration verwalten" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "Sind Sie sicher, dass Sie diese Integration trennen möchten?" + +#~ msgid "Disconnect" +#~ msgstr "Trennen" + +#~ msgid "No Calendar Integrations" +#~ msgstr "Keine Kalenderintegrationen" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" +#~ "Verbinden Sie Ihren Kalender, um " +#~ "Zeiteinträge und Ereignisse automatisch zu " +#~ "synchronisieren." + +#~ msgid "Connect Google Calendar" +#~ msgstr "Google Calendar verbinden" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "Wie die Kalenderintegration funktioniert" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "Zeiteinträge werden automatisch mit Ihrem Kalender synchronisiert" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "Kalenderereignisse können in Zeiteinträge umgewandelt werden" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "Bidirektionale Synchronisierung hält alles synchron" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Sehen und verwalten Sie Ihre Ereignisse, Aufgaben und Zeiteinträge" + +#~ msgid "Day" +#~ msgstr "Tag" + +#~ msgid "Week" +#~ msgstr "Woche" + +#~ msgid "Month" +#~ msgstr "Monat" + +#~ msgid "Today" +#~ msgstr "Heute" + +#~ msgid "Calendar colors" +#~ msgstr "Kalenderfarben" + +#~ msgid "Legend" +#~ msgstr "Legende" + +#~ msgid "Loading calendar..." +#~ msgstr "Kalender wird geladen..." + +#~ msgid "Event Details" +#~ msgstr "Veranstaltungsdetails" + +#~ msgid "Go to all details" +#~ msgstr "Alle Details anzeigen" + +#~ msgid "Team Chat" +#~ msgstr "Team-Chat" + +#~ msgid "Team chat channel" +#~ msgstr "Team-Chat-Kanal" + +#~ msgid "Type a message..." +#~ msgstr "Nachricht eingeben..." + +#~ msgid "Channel Info" +#~ msgstr "Kanalinformationen" + +#~ msgid "Members" +#~ msgstr "Mitglieder" + +#~ msgid "Channel Settings" +#~ msgstr "Kanaleinstellungen" + +#~ msgid "Upload Attachment" +#~ msgstr "Anhang hochladen" + +#~ msgid "Select File" +#~ msgstr "Datei auswählen" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "Maximale Dateigröße: 10 MB" + +#~ msgid "Selected:" +#~ msgstr "Ausgewählt:" + +#~ msgid "Upload" +#~ msgstr "Hochladen" + +#~ msgid "Please select a file" +#~ msgstr "Bitte wählen Sie eine Datei aus" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "Dateigröße überschreitet das 10-MB-Limit" + +#~ msgid "Failed to upload attachment" +#~ msgstr "Anhang konnte nicht hochgeladen werden" + +#~ msgid "Communicate with your team" +#~ msgstr "Mit Ihrem Team kommunizieren" + +#~ msgid "Channels" +#~ msgstr "Kanäle" + +#~ msgid "Direct Messages" +#~ msgstr "Direktnachrichten" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "Wählen Sie einen Kanal aus, um zu chatten" + +#~ msgid "Create Channel" +#~ msgstr "Kanal erstellen" + +#~ msgid "Channel Name" +#~ msgstr "Kanalname" + +#~ msgid "Private channel" +#~ msgstr "Privater Kanal" + +#~ msgid "Edit Client Note" +#~ msgstr "Kundennotiz bearbeiten" + +#~ msgid "Back to Client" +#~ msgstr "Zurück zum Kunden" + +#~ msgid "Client:" +#~ msgstr "Kunde:" + +#~ msgid "Created on" +#~ msgstr "Erstellt am" + +#~ msgid "Last edited on" +#~ msgstr "Zuletzt bearbeitet am" + +#~ msgid "Note Content" +#~ msgstr "Inhalt beachten" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Interne Notiz, nur für Ihr Team sichtbar." + +#~ msgid "Mark as important" +#~ msgstr "Als wichtig markieren" + +#~ msgid "Activity Feed" +#~ msgstr "Aktivitätsfeed" + +#~ msgid "Client Portal" +#~ msgstr "Kundenportal" + +#~ msgid "Recent project activities" +#~ msgstr "Aktuelle Projektaktivitäten" + +#~ msgid "View details" +#~ msgstr "Details anzeigen" + +#~ msgid "No Activity" +#~ msgstr "Keine Aktivität" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" +#~ "Keine aktuelle Aktivität anzuzeigen. Aktivität" +#~ " erscheint hier, wenn Projekte aktualisiert" +#~ " und Zeiteinträge protokolliert werden." + +#~ msgid "Approvals" +#~ msgstr "Genehmigungen" + +#~ msgid "Pending" +#~ msgstr "Ausstehend" + +#~ msgid "Approved" +#~ msgstr "Genehmigt" + +#~ msgid "Rejected" +#~ msgstr "Abgelehnt" + +#~ msgid "All" +#~ msgstr "Alle" + +#~ msgid "Requested on" +#~ msgstr "Angefordert am" + +#~ msgid "Request Comment" +#~ msgstr "Anfrage-Kommentar" + +#~ msgid "View Details" +#~ msgstr "Details anzeigen" + +#~ msgid "No Approvals" +#~ msgstr "Keine Genehmigungen" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" +#~ "Sie haben keine ausstehenden " +#~ "Zeiteintragsgenehmigungen. Alles auf dem " +#~ "neuesten Stand!" + +#~ msgid "No approvals found for this status." +#~ msgstr "Keine Genehmigungen für diesen Status gefunden." + +#~ msgid "Notifications" +#~ msgstr "Benachrichtigungen" + +#~ msgid "More" +#~ msgstr "Mehr" + +#~ msgid "Documents" +#~ msgstr "Dokumente" + +#~ msgid "Activity" +#~ msgstr "Aktivität" + +#~ msgid "Toggle menu" +#~ msgstr "Menü umschalten" + +#~ msgid "Approval update" +#~ msgstr "Genehmigungsaktualisierung" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Eine Zeiteintrags-Genehmigung wurde angefordert." + +#~ msgid "An approval was updated." +#~ msgstr "Eine Genehmigung wurde aktualisiert." + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "Willkommen, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "Dashboard anpassen" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" +#~ "Wählen Sie, welche Widgets angezeigt " +#~ "werden sollen und in welcher " +#~ "Reihenfolge." + +#~ msgid "Statistics cards" +#~ msgstr "Statistik-Karten" + +#~ msgid "Pending actions" +#~ msgstr "Ausstehende Aktionen" + +#~ msgid "Recent invoices" +#~ msgstr "Aktuelle Rechnungen" + +#~ msgid "Recent time entries" +#~ msgstr "Aktuelle Zeiteinträge" + +#~ msgid "Select at least one widget." +#~ msgstr "Mindestens ein Widget auswählen." + +#~ msgid "Failed to save." +#~ msgstr "Speichern fehlgeschlagen." + +#~ msgid "View and download project documents" +#~ msgstr "Projektdokumente anzeigen und herunterladen" + +#~ msgid "Client Document" +#~ msgstr "Kundendokument" + +#~ msgid "Download" +#~ msgstr "Herunterladen" + +#~ msgid "No Documents" +#~ msgstr "Keine Dokumente" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" +#~ "Es wurden noch keine Dokumente mit " +#~ "Ihnen geteilt. Dokumente erscheinen hier, " +#~ "sobald sie hochgeladen und für Kunden" +#~ " sichtbar gemacht werden." + +#~ msgid "An error occurred" +#~ msgstr "Ein Fehler ist aufgetreten" + +#~ msgid "Go to Dashboard" +#~ msgstr "Gehen Sie zum Dashboard" + +#~ msgid "Login to Client Portal" +#~ msgstr "Im Kundenportal anmelden" + +#~ msgid "Go Back" +#~ msgstr "Geh zurück" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" +#~ "Wenn Sie der Meinung sind, Zugang " +#~ "zum Kundenportal haben zu sollen, wenden" +#~ " Sie sich bitte an Ihren " +#~ "Administrator oder verwenden Sie den " +#~ "obigen Anmeldelink." + +#~ msgid "Invoice Details" +#~ msgstr "Rechnungsdetails" + +#~ msgid "Issue Date" +#~ msgstr "Ausgabedatum" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "Diese Rechnung ist %(days)d Tage überfällig." + +#~ msgid "Invoice Items" +#~ msgstr "Rechnungspositionen" + +#~ msgid "Quantity" +#~ msgstr "Menge" + +#~ msgid "Unit Price" +#~ msgstr "Stückpreis" + +#~ msgid "Pay Invoice" +#~ msgstr "Rechnung bezahlen" + +#~ msgid "Back to Invoices" +#~ msgstr "Zurück zu Rechnungen" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "Rechnungen für %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "Unbezahlt" + +#~ msgid "Overdue" +#~ msgstr "Überfällig" + +#~ msgid "Amount" +#~ msgstr "Menge" + +#~ msgid "days overdue" +#~ msgstr "Tage überfällig" + +#~ msgid "No invoices found" +#~ msgstr "Keine Rechnungen gefunden" + +#~ msgid "No paid invoices" +#~ msgstr "Keine bezahlten Rechnungen" + +#~ msgid "No unpaid invoices" +#~ msgstr "Keine unbezahlten Rechnungen" + +#~ msgid "No overdue invoices" +#~ msgstr "Keine übcfälligen Rechnungen" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" +#~ "Derzeit sind keine Rechnungen verfügbar. " +#~ "Rechnungen erscheinen hier, sobald sie " +#~ "erstellt werden." + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" +#~ "Es gibt keine Rechnungen, die diesem " +#~ "Filter entsprechen. Versuchen Sie, einen " +#~ "anderen Status auszuwählen." + +#~ msgid "View All Invoices" +#~ msgstr "Alle Rechnungen anzeigen" + +#~ msgid "Issue #%(id)s" +#~ msgstr "Problem #%(id)s" + +#~ msgid "No description provided." +#~ msgstr "Keine Beschreibung angegeben." + +#~ msgid "Priority" +#~ msgstr "Priorität" + +#~ msgid "Linked Task" +#~ msgstr "Verknüpfte Aufgabe" + +#~ msgid "Assigned To" +#~ msgstr "Zugewiesen an" + +#~ msgid "Resolved" +#~ msgstr "Gelöst" + +#~ msgid "Back to Issues" +#~ msgstr "Zurück zu Problemen" + +#~ msgid "Issue Reports" +#~ msgstr "Problemberichte" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "Probleme für %(client_name)s melden und verfolgen" + +#~ msgid "Open" +#~ msgstr "Offen" + +#~ msgid "Closed" +#~ msgstr "Geschlossen" + +#~ msgid "Report New Issue" +#~ msgstr "Neues Problem melden" + +#~ msgid "No issues found." +#~ msgstr "Keine Probleme gefunden." + +#~ msgid "Client Portal Login" +#~ msgstr "Anmeldung im Kundenportal" + +#~ msgid "View your projects and invoices" +#~ msgstr "Sehen Sie sich Ihre Projekte und Rechnungen an" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Melden Sie sich beim Kundenportal an" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "Geben Sie Ihre Portal-Zugangsdaten ein," +#~ " um auf Ihre Projekte und Rechnungen" +#~ " zuzugreifen" + +#~ msgid "portal_username" +#~ msgstr "portal_benutzername" + +#~ msgid "Enter your password" +#~ msgstr "Geben Sie Ihr Passwort ein" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "Einen Fehler oder ein Problem melden, das Sie festgestellt haben" + +#~ msgid "Brief description of the issue" +#~ msgstr "Kurze Beschreibung des Problems" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "Detaillierte Beschreibung des Problems, Schritte zur Reproduktion usw." + +#~ msgid "Select a project (optional)" +#~ msgstr "Projekt auswählen (optional)" + +#~ msgid "Low" +#~ msgstr "Niedrig" + +#~ msgid "Medium" +#~ msgstr "Medium" + +#~ msgid "High" +#~ msgstr "Hoch" + +#~ msgid "Urgent" +#~ msgstr "Dringend" + +#~ msgid "Your Name" +#~ msgstr "Ihr Name" + +#~ msgid "Your name (optional)" +#~ msgstr "Ihr Name (optional)" + +#~ msgid "Your Email" +#~ msgstr "Ihre E-Mail" + +#~ msgid "Your email (optional)" +#~ msgstr "Ihre E-Mail (optional)" + +#~ msgid "Submit Issue" +#~ msgstr "Problem einreichen" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "Bleiben Sie über Ihre Projekte und Rechnungen auf dem Laufenden" + +#~ msgid "Unread" +#~ msgstr "Ungelesen" + +#~ msgid "Mark All as Read" +#~ msgstr "Alle als gelesen markieren" + +#~ msgid "Mark as read" +#~ msgstr "Als gelesen markieren" + +#~ msgid "No Notifications" +#~ msgstr "Keine Benachrichtigungen" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" +#~ "Sie haben keine ungelesenen " +#~ "Benachrichtigungen. Alles auf dem neuesten " +#~ "Stand!" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" +#~ "Sie haben noch keine Benachrichtigungen. " +#~ "Benachrichtigungen erscheinen hier, wenn es" +#~ " Aktualisierungen zu Ihren Projekten oder" +#~ " Rechnungen gibt." + +#~ msgid "Project Comments" +#~ msgstr "Projektkommentare" + +#~ msgid "Comments" +#~ msgstr "Kommentare" + +#~ msgid "Add Comment" +#~ msgstr "Kommentar hinzufügen" + +#~ msgid "Your Comment" +#~ msgstr "Ihr Kommentar" + +#~ msgid "Enter your comment..." +#~ msgstr "Kommentar eingeben..." + +#~ msgid "Post Comment" +#~ msgstr "Kommentar posten" + +#~ msgid "No Comments" +#~ msgstr "Keine Kommentare" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "Schreiben Sie den ersten Kommentar zu diesem Projekt." + +#~ msgid "Back to Projects" +#~ msgstr "Zurück zu Projekten" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "Projekte für %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "Zeiteinträge anzeigen" + +#~ msgid "No projects found" +#~ msgstr "Keine Projekte gefunden" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" +#~ "Derzeit sind keine Projekte verfügbar. " +#~ "Projekte erscheinen hier, sobald sie " +#~ "erstellt und Ihrem Konto zugewiesen " +#~ "werden." + +#~ msgid "Quote Details" +#~ msgstr "Angebotsdetails" + +#~ msgid "Valid Until" +#~ msgstr "Gültig bis" + +#~ msgid "This quote has expired." +#~ msgstr "Dieses Angebot ist abgelaufen." + +#~ msgid "Quote Items" +#~ msgstr "Angebotsartikel" + +#~ msgid "SKU" +#~ msgstr "Artikelnummer" + +#~ msgid "Terms & Conditions" +#~ msgstr "Allgemeine Geschäftsbedingungen" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "Sind Sie sicher, dass Sie dieses Angebot akzeptieren möchten?" + +#~ msgid "Accept Quote" +#~ msgstr "Angebot annehmen" + +#~ msgid "Reject Quote" +#~ msgstr "Angebot ablehnen" + +#~ msgid "Back to Quotes" +#~ msgstr "Zurück zu Zitaten" + +#~ msgid "Reason (optional)" +#~ msgstr "Grund (optional)" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "Bitte geben Sie einen Grund für die Ablehnung dieses Angebots an..." + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "Angebote für %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "Abgelaufen" + +#~ msgid "No quotes found." +#~ msgstr "Keine Zitate gefunden." + +#~ msgid "Project and invoice summaries" +#~ msgstr "Projekt- und Rechnungszusammenfassungen" + +#~ msgid "Hours tracked" +#~ msgstr "Erfasste Stunden" + +#~ msgid "Project progress" +#~ msgstr "Projektfortschritt" + +#~ msgid "Est. / Budget" +#~ msgstr "Geschätzt / Budget" + +#~ msgid "No project hours data available." +#~ msgstr "Keine Projektstundendaten verfügbar." + +#~ msgid "Task summary" +#~ msgstr "Aufgabenzusammenfassung" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "Aufgaben gesamt: %(count)s" + +#~ msgid "No tasks yet." +#~ msgstr "Noch keine Aufgaben." + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Zeit nach Datum (letzte 30 Tage)" + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "Aktuelle Zeiteinträge (letzte 30 Tage)" + +#~ msgid "No recent time entries." +#~ msgstr "Keine aktuellen Zeiteinträge." + +#~ msgid "Set Password" +#~ msgstr "Passwort festlegen" + +#~ msgid "Set your password to get started" +#~ msgstr "Legen Sie Ihr Passwort fest, um loszulegen" + +#~ msgid "Set Your Password" +#~ msgstr "Legen Sie Ihr Passwort fest" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Legen Sie ein Passwort für Ihr Kundenportalkonto fest" + +#~ msgid "Confirm Password" +#~ msgstr "Passwort bestätigen" + +#~ msgid "Confirm your password" +#~ msgstr "Bestätigen Sie Ihr Passwort" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "Zeiteinträge für %(client_name)s Projekte" + +#~ msgid "All Projects" +#~ msgstr "Alle Projekte" + +#~ msgid "From Date" +#~ msgstr "Von Datum" + +#~ msgid "To Date" +#~ msgstr "Miteinander ausgehen" + +#~ msgid "Total entries" +#~ msgstr "Gesamteinträge" + +#~ msgid "Total hours" +#~ msgstr "Gesamtstunden" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" +#~ "Keine Zeiteinträge entsprechen Ihren aktuellen" +#~ " Filtern. Versuchen Sie, Ihre " +#~ "Filterkriterien anzupassen." + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" +#~ "Derzeit sind keine Zeiteinträge verfügbar. " +#~ "Zeiteinträge erscheinen hier, sobald sie " +#~ "für Ihre Projekte protokolliert werden." + +#~ msgid "Clear Filters" +#~ msgstr "Filter zurücksetzen" + +#~ msgid "Recent Invoices" +#~ msgstr "Aktuelle Rechnungen" + +#~ msgid "View All" +#~ msgstr "Alle anzeigen" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "Rechnungen erscheinen hier, sobald sie erstellt werden" + +#~ msgid "Action Required" +#~ msgstr "Handlung erforderlich" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "Zeiteinträge warten auf Ihre Überprüfung" + +#~ msgid "Review Now" +#~ msgstr "Jetzt überprüfen" + +#~ msgid "New Updates" +#~ msgstr "Neue Aktualisierungen" + +#~ msgid "Notifications waiting for you" +#~ msgstr "Benachrichtigungen warten auf Sie" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "Projekte erscheinen hier, sobald sie erstellt werden" + +#~ msgid "Total active" +#~ msgstr "Gesamt aktiv" + +#~ msgid "Total Invoices" +#~ msgstr "Gesamtrechnungen" + +#~ msgid "All invoices" +#~ msgstr "Alle Rechnungen" + +#~ msgid "Recent Time Entries" +#~ msgstr "Aktuelle Zeiteinträge" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "Zeiteinträge erscheinen hier, sobald sie protokolliert werden" + +#~ msgid "Export to CSV" +#~ msgstr "Als CSV exportieren" + +#~ msgid "Create Client" +#~ msgstr "Client erstellen" + +#~ msgid "Back to Clients" +#~ msgstr "Zurück zu Kunden" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" +#~ "Fügen Sie einen neuen Kunden hinzu, " +#~ "um zugehörige Projekte und Abrechnungen " +#~ "zu verwalten." + +#~ msgid "Enter client name" +#~ msgstr "Geben Sie den Kundennamen ein" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Standardstundensatz" + +#~ msgid "e.g. 75.00" +#~ msgstr "z.B. 75,00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Dieser Satz wird automatisch ausgefüllt, " +#~ "wenn Projekte für diesen Kunden erstellt" +#~ " werden" + +#~ msgid "Supports Markdown" +#~ msgstr "Unterstützt Markdown" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Kurze Beschreibung des Kunden- oder Projektumfangs" + +#~ msgid "Contact Person" +#~ msgstr "Ansprechpartner" + +#~ msgid "Primary contact name" +#~ msgstr "Name des primären Kontakts" + +#~ msgid "contact@client.com" +#~ msgstr "contact@client.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Monatliche Prepaid-Stunden" + +#~ msgid "e.g. 50" +#~ msgstr "z.B. 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "Leer lassen, wenn dieser Kunde kein Prepaid-Kontingent hat." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Prepaid-Reset-Tag" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Tag des Monats, an dem die Prepaid-Stunden zurückgesetzt werden (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Kundenadresse" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" +#~ "Diese benutzerdefinierten Felder sind global" +#~ " definiert und für alle Kunden " +#~ "verfügbar." + +#~ msgid "Enter value" +#~ msgstr "Wert eingeben" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "" +#~ "Wählen Sie einen klaren, aussagekräftigen " +#~ "Namen für die Kundenorganisation." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Legen Sie den Standardstundensatz für " +#~ "diesen Kunden fest. Dies wird beim " +#~ "Erstellen neuer Projekte automatisch " +#~ "ausgefüllt." + +#~ msgid "Contact Information" +#~ msgstr "Kontaktinformationen" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "" +#~ "Fügen Sie Kontaktdaten hinzu, um die " +#~ "Kommunikation und das Führen von " +#~ "Aufzeichnungen zu erleichtern." + +#~ msgid "Prepaid Hours" +#~ msgstr "Prepaid-Stunden" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Konfigurieren Sie monatliche Inklusivstunden " +#~ "und den Rücksetztag, wenn dieser Kunde" +#~ " über ein Retainer- oder Prepaid-" +#~ "Paket verfügt." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "" +#~ "Geben Sie Kontext zur Kundenbeziehung " +#~ "oder zu typischen Projekttypen an." + +#~ msgid "Edit Client" +#~ msgstr "Client bearbeiten" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Aktivieren Sie den Portalzugriff für " +#~ "diesen Kunden. Kunden können sich mit" +#~ " ihren eigenen Zugangsdaten anmelden, um" +#~ " Projekte, Rechnungen und Zeiteinträge " +#~ "anzuzeigen." + +#~ msgid "Enable Client Portal" +#~ msgstr "Aktivieren Sie das Kundenportal" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "Problemberichterstattung aktivieren" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "Kunden erlauben, Fehler und Probleme über das Portal zu melden" + +#~ msgid "Portal Username" +#~ msgstr "Portal-Benutzername" + +#~ msgid "Unique username for portal login" +#~ msgstr "Eindeutiger Benutzername für die Portalanmeldung" + +#~ msgid "Portal Password" +#~ msgstr "Portal-Passwort" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "Lassen Sie das Feld leer, um das aktuelle Passwort beizubehalten" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "" +#~ "Legen Sie ein neues Passwort fest " +#~ "oder lassen Sie es leer, um das" +#~ " aktuelle Passwort zu behalten" + +#~ msgid "Current portal username" +#~ msgstr "Aktueller Portal-Benutzername" + +#~ msgid "Update Client" +#~ msgstr "Client aktualisieren" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Senden Sie eine E-Mail zur Passworteinrichtung" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Senden Sie eine E-Mail an %(email)s " +#~ "mit einem Link zum Festlegen ihres " +#~ "Portalkennworts." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "Zum Versenden einer E-Mail zur " +#~ "Passworteinrichtung ist eine E-Mail-Adresse" +#~ " erforderlich. Bitte geben Sie oben " +#~ "die E-Mail-Adresse des Kunden ein." + +#~ msgid "Client Statistics" +#~ msgstr "Kundenstatistiken" + +#~ msgid "Est. Total Cost" +#~ msgstr "Schätzung: Gesamtkosten" + +#~ msgid "Filter Clients" +#~ msgstr "Kunden filtern" + +#~ msgid "Toggle Filters" +#~ msgstr "Filter umschalten" + +#~ msgid "Hide Filters" +#~ msgstr "Filter ausblenden" + +#~ msgid "Show Filters" +#~ msgstr "Filter anzeigen" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" +#~ "Ein Projekt zuweisen, um Zeiteinträge " +#~ "vor der Rechnungsstellung zu leiten." + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "Keine abrechenbaren, nicht abgerechneten Zeiten für diesen Kunden." + +#~ msgid "No unbilled time" +#~ msgstr "Keine nicht abgerechnete Zeit" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Nicht abgerechnete Zeit in Rechnung stellen" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "Client als inaktiv markieren?" + +#~ msgid "Change Client Status" +#~ msgstr "Kundenstatus ändern" + +#~ msgid "Mark Inactive" +#~ msgstr "Als inaktiv markieren" + +#~ msgid "Activate client?" +#~ msgstr "Client aktivieren?" + +#~ msgid "Activate Client" +#~ msgstr "Client aktivieren" + +#~ msgid "Delete Client" +#~ msgstr "Client löschen" + +#~ msgid "Client details and associated projects." +#~ msgstr "Kundendetails und zugehörige Projekte." + +#~ msgid "Manage" +#~ msgstr "Verwalten" + +#~ msgid "Primary" +#~ msgstr "Primär" + +#~ msgid "more contact(s)" +#~ msgstr "weitere Kontakt(e)" + +#~ msgid "No contacts yet" +#~ msgstr "Noch keine Kontakte" + +#~ msgid "Add Contact" +#~ msgstr "Kontakt hinzufügen" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Legacy-Kontaktinformationen" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "Der Plan umfasst %(hours)s Stunden pro" +#~ " Zyklus. Wird am Tag %(day)s " +#~ "zurückgesetzt." + +#~ msgid "Current cycle start" +#~ msgstr "Aktueller Zyklusstart" + +#~ msgid "Remaining hours" +#~ msgstr "Verbleibende Stunden" + +#~ msgid "h" +#~ msgstr "H" + +#~ msgid "Consumed this cycle" +#~ msgstr "In diesem Zyklus verbraucht" + +#~ msgid "Attachments" +#~ msgstr "Anhänge" + +#~ msgid "File" +#~ msgstr "Datei" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" +#~ "Maximale Größe: 10 MB. Erlaubt: Bilder," +#~ " PDFs, Dokumente, Tabellenkalkulationen, Archive" + +#~ msgid "Description (optional)" +#~ msgstr "Beschreibung (optional)" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "z. B. Vertrag, Vereinbarung usw." + +#~ msgid "Visible to client in portal" +#~ msgstr "Im Portal für Kunden sichtbar" + +#~ msgid "Client Visible" +#~ msgstr "Kunde sichtbar" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "Sind Sie sicher, dass Sie diesen Anhang löschen möchten?" + +#~ msgid "Delete Attachment" +#~ msgstr "Anhang löschen" + +#~ msgid "No attachments yet" +#~ msgstr "Noch keine Anhänge" + +#~ msgid "Archived" +#~ msgstr "Archiviert" + +#~ msgid "Recent Hours History" +#~ msgstr "Aktuelle Stundenhistorie" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "Zeigt die letzten %(count)s Einträge" + +#~ msgid "No recent time entries found." +#~ msgstr "Keine aktuellen Zeiteinträge gefunden." + +#~ msgid "Internal Notes" +#~ msgstr "Interne Notizen" + +#~ msgid "Add Note" +#~ msgstr "Notiz hinzufügen" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Fügen Sie eine interne Notiz zu diesem Kunden hinzu..." + +#~ msgid "Save Note" +#~ msgstr "Notiz speichern" + +#~ msgid "edited" +#~ msgstr "bearbeitet" + +#~ msgid "Important" +#~ msgstr "Wichtig" + +#~ msgid "Unmark" +#~ msgstr "Markierung aufheben" + +#~ msgid "Mark Important" +#~ msgstr "Markieren Sie „Wichtig“." + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Noch keine Notizen. Fügen Sie eine " +#~ "Notiz hinzu, um wichtige Informationen " +#~ "zu diesem Kunden im Auge zu " +#~ "behalten." + +#~ msgid "Estimated total" +#~ msgstr "Geschätzter Gesamtbetrag" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Rechnungsentwurf erstellen?" + +#~ msgid "Create invoice" +#~ msgstr "Rechnung erstellen" + +#~ msgid "Could not create invoice." +#~ msgstr "Rechnung konnte nicht erstellt werden." + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "Möchten Sie diese Notiz wirklich löschen?" + +#~ msgid "Delete Note" +#~ msgstr "Notiz löschen" + +#~ msgid "Edited on" +#~ msgstr "Bearbeitet am" + +#~ msgid "Reply" +#~ msgstr "Antwort" + +#~ msgid "Add Attachment" +#~ msgstr "Anhang hinzufügen" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "Maximal 10 MB. Bilder, PDFs, Dokumente, Tabellenkalkulationen, Archive" + +#~ msgid "Write your reply..." +#~ msgstr "Schreiben Sie Ihre Antwort..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "Antworten sind zu tief verschachtelt, um angezeigt zu werden." + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "Kommentarverschachtelung zu tief zum Anzeigen." + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Teilen Sie Ihre Gedanken, Aktualisierungen oder Fragen mit ..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "Sie können Zeilenumbrüche verwenden, um Ihren Kommentar zu formatieren." + +#~ msgid "Add Image" +#~ msgstr "Bild hinzufügen" + +#~ msgid "No comments yet" +#~ msgstr "Noch keine Kommentare" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Beginnen Sie die Konversation, indem Sie" +#~ " den ersten Kommentar hinzufügen." + +#~ msgid "Add First Comment" +#~ msgstr "Erster Kommentar hinzufügen" + +#~ msgid "Edit Comment" +#~ msgstr "Kommentar bearbeiten" + +#~ msgid "Back" +#~ msgstr "Zurück" + +#~ msgid "Editing comment on:" +#~ msgstr "Bearbeitungskommentar zu:" + +#~ msgid "Originally posted on" +#~ msgstr "Ursprünglich gepostet am" + +#~ msgid "Comment Content" +#~ msgstr "Kommentarinhalt" + +#~ msgid "All Activities" +#~ msgstr "Alle Aktivitäten" + +#~ msgid "Time Templates" +#~ msgstr "Zeitvorlagen" + +#~ msgid "No recent activity" +#~ msgstr "Keine aktuelle Aktivität" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "Während Sie arbeiten, wird hier eine Aktivität angezeigt" + +#~ msgid "Load More" +#~ msgstr "Mehr laden" + +#~ msgid "Failed to load activities" +#~ msgstr "Aktivitäten konnten nicht geladen werden" + +#~ msgid "Start a Chat" +#~ msgstr "Chat starten" + +#~ msgid "Search users..." +#~ msgstr "Benutzer suchen..." + +#~ msgid "Loading users..." +#~ msgstr "Benutzer werden geladen..." + +#~ msgid "Failed to load users" +#~ msgstr "Benutzer konnten nicht geladen werden" + +#~ msgid "No users found" +#~ msgstr "Keine Benutzer gefunden" + +#~ msgid "Starting chat..." +#~ msgstr "Chat wird gestartet..." + +#~ msgid "Failed to start chat" +#~ msgstr "Chat konnte nicht gestartet werden" + +#~ msgid "Client (auto-selected)" +#~ msgstr "Kunde (automatisch ausgewählt)" + +#~ msgid "Select a client..." +#~ msgstr "Wählen Sie einen Kunden aus..." + +#~ msgid "Select a client (optional)" +#~ msgstr "Kunden auswählen (optional)" + +#~ msgid "Selected" +#~ msgstr "Ausgewählt" + +#~ msgid "Search..." +#~ msgstr "Suchen..." + +#~ msgid "Select all" +#~ msgstr "Alle auswählen" + +#~ msgid "No items available" +#~ msgstr "Keine Elemente verfügbar" + +#~ msgid "Apply" +#~ msgstr "Anwenden" + +#~ msgid "Sync Now" +#~ msgstr "Jetzt synchronisieren" + +#~ msgid "Pending Sync" +#~ msgstr "Ausstehende Synchronisierung" + +#~ msgid "No pending items" +#~ msgstr "Keine ausstehenden Elemente" + +#~ msgid "Sync All" +#~ msgstr "Alle synchronisieren" + +#~ msgid "Error loading queue" +#~ msgstr "Fehler beim Laden der Warteschlange" + +#~ msgid "Toggle chat" +#~ msgstr "Chat umschalten" + +#~ msgid "Chat" +#~ msgstr "Chat" + +#~ msgid "Start new chat" +#~ msgstr "Neuen Chat starten" + +#~ msgid "Minimize chat" +#~ msgstr "Chat minimieren" + +#~ msgid "View full" +#~ msgstr "Vollansicht" + +#~ msgid "Failed to load messages" +#~ msgstr "Nachrichten konnten nicht geladen werden" + +#~ msgid "No messages yet" +#~ msgstr "Noch keine Nachrichten" + +#~ msgid "Failed to send message" +#~ msgstr "Nachricht konnte nicht gesendet werden" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" +#~ "Vielen Dank, dass Sie ein Supporter " +#~ "sind. Das Teilen der App hilft " +#~ "anderen, sie ebenfalls zu entdecken." + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" +#~ "TimeTracker ist kostenlos und wird " +#~ "unabhängig entwickelt. Wenn es Ihnen " +#~ "hilft, erwägen Sie, seine Entwicklung zu" +#~ " unterstützen." + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" +#~ "Vertraut von Teams und Freiberuflern, " +#~ "die eine einfache, zuverlässige Zeiterfassung" +#~ " wünschen." + +#~ msgid "Donate" +#~ msgstr "Spenden" + +#~ msgid "Buy license (€25)" +#~ msgstr "Lizenz kaufen (25 €)" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "TimeTracker mögen? Teilen Sie es" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" +#~ "Eine Lizenz ist ein Supporter-Abzeichen" +#~ " – sie sperrt keine Funktionen. Sie" +#~ " behalten in jedem Fall vollen " +#~ "Zugriff." + +#~ msgid "Home" +#~ msgstr "Heim" + +#~ msgid "Pagination" +#~ msgstr "Seitennavigation" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "Zeigt %(start)s bis %(end)s von %(total)s Einträgen" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "Zum Hochladen klicken oder per Drag & Drop ablegen" + +#~ msgid "Call" +#~ msgstr "Anruf" + +#~ msgid "Message" +#~ msgstr "Nachricht" + +#~ msgid "Direction" +#~ msgstr "Richtung" + +#~ msgid "Outbound" +#~ msgstr "Ausgehend" + +#~ msgid "Inbound" +#~ msgstr "Eingehend" + +#~ msgid "Subject" +#~ msgstr "Thema" + +#~ msgid "Scheduled" +#~ msgstr "Geplant" + +#~ msgid "Follow-up Date" +#~ msgstr "Folgetermin" + +#~ msgid "Content/Notes" +#~ msgstr "Inhalt/Notizen" + +#~ msgid "Save Communication" +#~ msgstr "Kommunikation speichern" + +#~ msgid "First Name" +#~ msgstr "Vorname" + +#~ msgid "Last Name" +#~ msgstr "Nachname" + +#~ msgid "Mobile" +#~ msgstr "Mobile" + +#~ msgid "Department" +#~ msgstr "Abteilung" + +#~ msgid "Contact" +#~ msgstr "Kontakt" + +#~ msgid "Billing" +#~ msgstr "Abrechnung" + +#~ msgid "Technical" +#~ msgstr "Technisch" + +#~ msgid "Set as primary contact" +#~ msgstr "Als Hauptkontakt festlegen" + +#~ msgid "Tags" +#~ msgstr "Schlagworte" + +#~ msgid "Save Contact" +#~ msgstr "Kontakt speichern" + +#~ msgid "Set Primary" +#~ msgstr "Legen Sie „Primär“ fest" + +#~ msgid "No contacts found" +#~ msgstr "Keine Kontakte gefunden" + +#~ msgid "Add First Contact" +#~ msgstr "Erster Kontakt hinzufügen" + +#~ msgid "Primary Contact" +#~ msgstr "Hauptkontakt" + +#~ msgid "Communication History" +#~ msgstr "Kommunikationsgeschichte" + +#~ msgid "Add Communication" +#~ msgstr "Kommunikation hinzufügen" + +#~ msgid "No communications recorded" +#~ msgstr "Keine Kommunikation aufgezeichnet" + +#~ msgid "Add Activity" +#~ msgstr "Aktivität hinzufügen" + +#~ msgid "Activity Date" +#~ msgstr "Aktivitätsdatum" + +#~ msgid "Brief subject or title" +#~ msgstr "Kurzes Thema oder Titel" + +#~ msgid "Deal Name" +#~ msgstr "Deal-Name" + +#~ msgid "Select Client" +#~ msgstr "Wählen Sie Kunde aus" + +#~ msgid "Select Contact" +#~ msgstr "Wählen Sie Kontakt aus" + +#~ msgid "Stage" +#~ msgstr "Bühne" + +#~ msgid "Deal Value" +#~ msgstr "Deal-Wert" + +#~ msgid "Win Probability" +#~ msgstr "Gewinnwahrscheinlichkeit" + +#~ msgid "Expected Close Date" +#~ msgstr "Voraussichtliches Abschlussdatum" + +#~ msgid "Related Quote" +#~ msgstr "Verwandtes Zitat" + +#~ msgid "Select Quote" +#~ msgstr "Wählen Sie Angebot aus" + +#~ msgid "Save Deal" +#~ msgstr "Sparangebot" + +#~ msgid "Won" +#~ msgstr "Won" + +#~ msgid "Lost" +#~ msgstr "Verloren" + +#~ msgid "All Stages" +#~ msgstr "Alle Stufen" + +#~ msgid "Value" +#~ msgstr "Wert" + +#~ msgid "Probability" +#~ msgstr "Wahrscheinlichkeit" + +#~ msgid "Expected Close" +#~ msgstr "Erwarteter Abschluss" + +#~ msgid "No deals found" +#~ msgstr "Keine Angebote gefunden" + +#~ msgid "Create First Deal" +#~ msgstr "Erstellen Sie den ersten Deal" + +#~ msgid "Pipeline" +#~ msgstr "Pipeline" + +#~ msgid "Deal Information" +#~ msgstr "Deal-Informationen" + +#~ msgid "Actual Close" +#~ msgstr "Tatsächlicher Abschluss" + +#~ msgid "Owner" +#~ msgstr "Inhaber" + +#~ msgid "Related Lead" +#~ msgstr "Zugehöriger Lead" + +#~ msgid "Loss Reason" +#~ msgstr "Verlustgrund" + +#~ msgid "Related Project" +#~ msgstr "Verwandtes Projekt" + +#~ msgid "by" +#~ msgstr "von" + +#~ msgid "No activities recorded yet" +#~ msgstr "Noch keine Aktivitäten erfasst" + +#~ msgid "Add first activity" +#~ msgstr "Erste Aktivität hinzufügen" + +#~ msgid "History" +#~ msgstr "Verlauf" + +#~ msgid "View full history" +#~ msgstr "Vollständigen Verlauf anzeigen" + +#~ msgid "No change history yet" +#~ msgstr "Noch keine Änderungshistorie" + +#~ msgid "You Were Mentioned" +#~ msgstr "Sie wurden erwähnt" + +#~ msgid "View Task & Reply" +#~ msgstr "Aufgabe und Antwort anzeigen" + +#~ msgid "Invoice" +#~ msgstr "Rechnung" + +#~ msgid "Invoice Overdue" +#~ msgstr "Rechnung überfällig" + +#~ msgid "View Invoice" +#~ msgstr "Rechnung anzeigen" + +#~ msgid "Quote" +#~ msgstr "Zitat" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Angebotsgenehmigung abgelehnt" + +#~ msgid "View Quote" +#~ msgstr "Angebot ansehen" + +#~ msgid "Approval Requested" +#~ msgstr "Genehmigung beantragt" + +#~ msgid "Review Quote" +#~ msgstr "Bewertungsangebot" + +#~ msgid "Quote Approved" +#~ msgstr "Angebot genehmigt" + +#~ msgid "Quote Expired" +#~ msgstr "Angebot abgelaufen" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "Angebot läuft bald ab" + +#~ msgid "Quote Sent" +#~ msgstr "Angebot gesendet" + +#~ msgid "Task Assignment" +#~ msgstr "Aufgabenzuweisung" + +#~ msgid "View Task" +#~ msgstr "Aufgabe anzeigen" + +#~ msgid "Test Details" +#~ msgstr "Testdetails" + +#~ msgid "Your Weekly Summary" +#~ msgstr "Ihre wöchentliche Zusammenfassung" + +#~ msgid "400 Bad Request" +#~ msgstr "400 Ungültige Anfrage" + +#~ msgid "Invalid Request" +#~ msgstr "Ungültige Anfrage" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "Die von Ihnen gestellte Anfrage ist " +#~ "ungültig oder enthält Fehler. Dies " +#~ "könnte folgende Ursachen haben:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Fehlende oder ungültige Formulardaten" + +#~ msgid "Malformed request parameters" +#~ msgstr "Fehlerhafte Anforderungsparameter" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "" +#~ "Sie haben keine Berechtigung, auf diese" +#~ " Ressource zuzugreifen. Dies könnte " +#~ "folgende Ursachen haben:" + +#~ msgid "Insufficient privileges" +#~ msgstr "Unzureichende Berechtigungen" + +#~ msgid "Not logged in" +#~ msgstr "Nicht angemeldet" + +#~ msgid "Resource access restrictions" +#~ msgstr "Einschränkungen des Ressourcenzugriffs" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "" +#~ "Bei uns ist etwas schief gelaufen. " +#~ "Bitte versuchen Sie es später noch " +#~ "einmal." + +#~ msgid "Try Again" +#~ msgstr "Versuchen Sie es erneut" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten." + +#~ msgid "Refresh Page" +#~ msgstr "Seite aktualisieren" + +#~ msgid "Go to Login" +#~ msgstr "Gehen Sie zu Anmelden" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "z. B. Reisen, Mahlzeiten, Bürobedarf" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "z. B. REISEN, MAHLZEITEN" + +#~ msgid "Brief description of this category..." +#~ msgstr "Kurze Beschreibung dieser Kategorie..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "z. B. Fa-Flugzeug, Fa-Utensilien" + +#~ msgid "e.g., 19.00" +#~ msgstr "z.B. 19.00 Uhr" + +#~ msgid "Category" +#~ msgstr "Kategorie" + +#~ msgid "Basic Information" +#~ msgstr "Grundlegende Informationen" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "z.B. Flug nach Berlin" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Weitere Details zu den Kosten..." + +#~ msgid "Select Category" +#~ msgstr "Kategorie auswählen" + +#~ msgid "Amount Details" +#~ msgstr "Betragsdetails" + +#~ msgid "Association" +#~ msgstr "Zuordnung" + +#~ msgid "Payment Details" +#~ msgstr "Zahlungsdetails" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "z.B. Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "Quittung & Zusätzliche Informationen" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Quittungs-/Rechnungsnummer" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "z. B. INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "z. B. Konferenz, Kundenbesprechung, dringend" + +#~ msgid "Additional notes..." +#~ msgstr "Zusätzliche Hinweise..." + +#~ msgid "Options" +#~ msgstr "Optionen" + +#~ msgid "Filter Expenses" +#~ msgstr "Ausgaben filtern" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Ausgewählte Ausgaben löschen" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Status für ausgewählte Ausgaben ändern" + +#~ msgid "Associated With" +#~ msgstr "Verbunden mit" + +#~ msgid "Reject Expense" +#~ msgstr "Kosten ablehnen" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Erklären Sie, warum diese Ausgabe abgelehnt wird ..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "Sind Sie sicher, dass Sie diese Ausgabe löschen möchten?" + +#~ msgid "Delete Expense" +#~ msgstr "Ausgabe löschen" + +#~ msgid "Add task" +#~ msgstr "Aufgabe hinzufügen" + +#~ msgid "Import/Export Data" +#~ msgstr "Daten importieren/exportieren" + +#~ msgid "Import/Export" +#~ msgstr "Import/Export" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Importieren Sie Daten aus anderen " +#~ "Zeiterfassungsgeräten oder exportieren Sie " +#~ "Ihre Daten zur Einhaltung der DSGVO " +#~ "und für Backups" + +#~ msgid "Import Data" +#~ msgstr "Daten importieren" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "CSV-Import – Zeiteinträge" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Zeiteinträge aus einer CSV-Datei importieren" + +#~ msgid "Choose CSV File" +#~ msgstr "Wählen Sie CSV-Datei" + +#~ msgid "Download Template" +#~ msgstr "Vorlage herunterladen" + +#~ msgid "CSV Import - Clients" +#~ msgstr "CSV-Import – Kunden" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" +#~ "Kunden mit benutzerdefinierten Feldern und " +#~ "mehreren Kontakten aus einer CSV-Datei" +#~ " importieren" + +#~ msgid "Skip duplicate clients" +#~ msgstr "Doppelte Kunden überspringen" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "Diese Felder zur Duplikaterkennung verwenden:" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "Benutzerdefinierte Felder (kommagetrennt):" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "z. B. debtor_number, erp_id" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" +#~ "Beispiel: Geben Sie „debtor_number“ ein, " +#~ "um Duplikate nur nach Debitorennummer zu" +#~ " erkennen (nicht nach Name)" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Von Toggl Track importieren" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Zeiteinträge aus Toggl Track importieren" + +#~ msgid "Import from Toggl" +#~ msgstr "Aus Toggl importieren" + +#~ msgid "Import from Harvest" +#~ msgstr "Import aus Harvest" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Importieren Sie Zeiteinträge aus Harvest" + +#~ msgid "Restore from Backup" +#~ msgstr "Aus Backup wiederherstellen" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "Daten aus einer JSON- oder ZIP-Sicherungsdatei wiederherstellen" + +#~ msgid "Import History" +#~ msgstr "Historie importieren" + +#~ msgid "Export Data" +#~ msgstr "Daten exportieren" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Vollständiger Datenexport (DSGVO)" + +#~ msgid "Export all your personal data" +#~ msgstr "Exportieren Sie alle Ihre persönlichen Daten" + +#~ msgid "Export as JSON" +#~ msgstr "Als JSON exportieren" + +#~ msgid "Export as ZIP" +#~ msgstr "Als ZIP exportieren" + +#~ msgid "Filtered Export" +#~ msgstr "Gefilterter Export" + +#~ msgid "Export specific data with filters" +#~ msgstr "Exportieren Sie spezifische Daten mit Filtern" + +#~ msgid "Export with Filters" +#~ msgstr "Mit Filtern exportieren" + +#~ msgid "Export Clients" +#~ msgstr "Kunden exportieren" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" +#~ "Alle Kunden mit benutzerdefinierten Feldern" +#~ " und Kontakten in CSV exportieren" + +#~ msgid "Export Clients to CSV" +#~ msgstr "Kunden als CSV exportieren" + +#~ msgid "Create a full database backup" +#~ msgstr "Erstellen Sie eine vollständige Datenbanksicherung" + +#~ msgid "Export History" +#~ msgstr "Verlauf exportieren" + +#~ msgid "API Token" +#~ msgstr "API-Token" + +#~ msgid "Workspace ID" +#~ msgstr "Arbeitsbereichs-ID" + +#~ msgid "Import" +#~ msgstr "Import" + +#~ msgid "Account ID" +#~ msgstr "Konto-ID" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "ActivityWatch-Einrichtung" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" +#~ "Fenster- und Webaktivitäten aus ActivityWatch" +#~ " (aw-server) als automatische Zeiteinträge" +#~ " importieren" + +#~ msgid "Server Connection" +#~ msgstr "Serververbindung" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "ActivityWatch-Server-URL" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" +#~ "Basis-URL Ihres aw-Servers (kein " +#~ "abschließender Schrägstrich). aw-server muss" +#~ " laufen und von diesem Server " +#~ "erreichbar sein." + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" +#~ "Verwenden Sie http://localhost:5600, wenn " +#~ "TimeTracker auf demselben Rechner läuft." + +#~ msgid "Import Settings" +#~ msgstr "Importeinstellungen" + +#~ msgid "Default Project" +#~ msgstr "Standardprojekt" + +#~ msgid "No project (import without project)" +#~ msgstr "Kein Projekt (ohne Projekt importieren)" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" +#~ "Importierte Aktivitätsereignisse diesem Projekt " +#~ "zuweisen. Leer lassen, um ohne Projekt" +#~ " zu importieren." + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" +#~ "Keine aktiven Projekte gefunden. Ereignisse" +#~ " werden ohne Projekt importiert." + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "Sie können später ein Projekt erstellen und Ereignisse dazu zuweisen." + +#~ msgid "Create a project" +#~ msgstr "Projekt erstellen" + +#~ msgid "Lookback Days" +#~ msgstr "Rückblicktage" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" +#~ "Wie viele Tage zurück beim vollständigen" +#~ " Sync importiert werden sollen (1–90, " +#~ "Standard: 7)." + +#~ msgid "Bucket IDs" +#~ msgstr "Bucket-IDs" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" +#~ "Kommagetrennt oder JSON-Array. Leer " +#~ "lassen, um alle aw-watcher-window_*- " +#~ "und aw-watcher-web_*-Buckets zu " +#~ "verwenden." + +#~ msgid "Enable automatic sync" +#~ msgstr "Automatische Synchronisierung aktivieren" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" +#~ "Aktivität nach einem Zeitplan automatisch " +#~ "synchronisieren. Sie können auch manuelle " +#~ "Synchronisierungen auslösen." + +#~ msgid "Sync Schedule" +#~ msgstr "Synchronisierungszeitplan" + +#~ msgid "Manual only" +#~ msgstr "Nur manuell" + +#~ msgid "Every hour" +#~ msgstr "Jede Stunde" + +#~ msgid "Daily" +#~ msgstr "Täglich" + +#~ msgid "Test & Sync" +#~ msgstr "Testen & Synchronisieren" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" +#~ "Nach dem Speichern können Sie die " +#~ "Verbindung testen und eine Synchronisierung" +#~ " von der Integrationsseite starten." + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "CalDAV-Kalendereinrichtung" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" +#~ "Mit einem CalDAV-Server verbinden (z." +#~ " B. Zimbra), um Kalenderereignisse als " +#~ "Zeiteinträge zu importieren" + +#~ msgid "CalDAV Server URL" +#~ msgstr "CalDAV-Server-URL" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "optional, wenn Kalender-URL angegeben wird" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "Basis-URL Ihres CalDAV-Servers. Wird zur Kalenderentdeckung verwendet." + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "Beispiel: https://mail.example.com/dav für Zimbra" + +#~ msgid "Calendar URL" +#~ msgstr "Kalender-URL" + +#~ msgid "optional if server URL is provided" +#~ msgstr "optional, wenn Server-URL angegeben wird" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" +#~ "Direkte URL zu Ihrer Kalendersammlung. " +#~ "Wenn angegeben, wird die Server-URL " +#~ "nur zur Entdeckung verwendet." + +#~ msgid "Calendar Name" +#~ msgstr "Kalendername" + +#~ msgid "My Calendar" +#~ msgstr "Mein Kalender" + +#~ msgid "Authentication" +#~ msgstr "Authentifizierung" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "Ihr CalDAV-Benutzername (normalerweise Ihre E-Mail-Adresse)." + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "Ihr CalDAV-Passwort oder App-spezifisches Passwort." + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "Leer lassen, um Ihr aktuelles Passwort beizubehalten." + +#~ msgid "Verify SSL certificate" +#~ msgstr "SSL-Zertifikat verifizieren" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "Nur deaktivieren, wenn Sie ein selbstsigniertes Zertifikat verwenden." + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" +#~ "Kalenderereignisse werden als Zeiteinträge " +#~ "importiert. Wenn ein Projekt ausgewählt " +#~ "ist, werden Ereignisse diesem Projekt " +#~ "zugewiesen." + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" +#~ "Wenn ein Ereignistitel einen Projektnamen " +#~ "enthält, wird dieses Projekt stattdessen " +#~ "verwendet." + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" +#~ "Wenn kein Projekt ausgewählt ist, werden" +#~ " Ereignisse ohne Projekt importiert." + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" +#~ "Wie viele Tage zurück Ereignisse " +#~ "importiert werden sollen (Standard: 90)." + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" +#~ "Kalenderereignisse stündlich automatisch " +#~ "synchronisieren. Sie können weiterhin manuelle" +#~ " Synchronisierungen auslösen." + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" +#~ "Nach dem Speichern können Sie die " +#~ "Verbindung testen und verfügbare Kalender " +#~ "entdecken." + +#~ msgid "Integration Health" +#~ msgstr "Integrationsstatus" + +#~ msgid "Scope" +#~ msgstr "Geltungsbereich" + +#~ msgid "Last sync" +#~ msgstr "Letzte Synchronisierung" + +#~ msgid "Last status" +#~ msgstr "Letzter Status" + +#~ msgid "Credentials" +#~ msgstr "Anmeldedaten" + +#~ msgid "Last error" +#~ msgstr "Letzter Fehler" + +#~ msgid "Partial" +#~ msgstr "Teilweise" + +#~ msgid "Needs refresh" +#~ msgstr "Aktualisierung erforderlich" + +#~ msgid "Expires" +#~ msgstr "Läuft ab" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" +#~ "Diese Integration zurücksetzen? Dadurch werden" +#~ " gespeicherte OAuth-Token entfernt." + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" +#~ "Verbinden Sie Ihren Time Tracker mit " +#~ "externen Diensten. Konfigurieren Sie " +#~ "Integrationen unten, um Daten zu " +#~ "synchronisieren, Workflows zu automatisieren " +#~ "und die Produktivität zu steigern." + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "OIDC / Single Sign-On" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" +#~ "OpenID Connect-Authentifizierung für Single" +#~ " Sign-On (SSO) mit Ihrem " +#~ "Identitätsanbieter konfigurieren" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" +#~ "Verzeichnisauthentifizierung über Umgebungsvariablen " +#~ "konfigurieren; verwenden Sie den Assistenten," +#~ " um ein funktionsfähiges .env-Snippet " +#~ "zu erstellen und die Konnektivität zu" +#~ " testen." + +#~ msgid "Not Connected" +#~ msgstr "Nicht verbunden" + +#~ msgid "Synced" +#~ msgstr "Synchronisiert" + +#~ msgid "Not Set Up" +#~ msgstr "Nicht eingerichtet" + +#~ msgid "Connect" +#~ msgstr "Verbinden" + +#~ msgid "Integration" +#~ msgstr "Integration" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "Geführter Einrichtungsassistent" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" +#~ "Verwenden Sie unseren schrittweisen " +#~ "Assistenten, um diese Integration einfach " +#~ "zu konfigurieren." + +#~ msgid "Launch Setup Wizard" +#~ msgstr "Einrichtungsassistenten starten" + +#~ msgid "Linear API Key" +#~ msgstr "Linear API-Schlüssel" + +#~ msgid "Personal API Key" +#~ msgstr "Persönlicher API-Schlüssel" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "Erstellen unter linear.app/settings/api" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "Von Linear: Einstellungen → API → Persönliche API-Schlüssel" + +#~ msgid "Save API Key" +#~ msgstr "API-Schlüssel speichern" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "OAuth-Anmeldedaten-Einrichtung" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "Gespeichert; leer lassen zum Beibehalten" + +#~ msgid "Enter API secret" +#~ msgstr "API-Secret eingeben" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" +#~ "Nach dem Speichern von API-Schlüssel " +#~ "und Secret können Sie Trello über " +#~ "den OAuth-Ablauf verbinden." + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "Verwenden Sie „common“ für Mehrinstanzen oder lassen Sie das Feld leer" + +#~ msgid "CalDAV Authentication" +#~ msgstr "CalDAV-Authentifizierung" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" +#~ "CalDAV verwendet Benutzernamen- und " +#~ "Passwortauthentifizierung (nicht OAuth). " +#~ "Aktualisieren Sie Ihre Anmeldedaten unten." + +#~ msgid "Integration Configuration" +#~ msgstr "Integrationskonfiguration" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" +#~ "Synchronisierungseinstellungen, Datenzuordnungen und " +#~ "andere Integrationsoptionen konfigurieren." + +#~ msgid "Connection Management" +#~ msgstr "Verbindungsverwaltung" + +#~ msgid "Connector Error" +#~ msgstr "Connector-Fehler" + +#~ msgid "Sync OK" +#~ msgstr "Sync OK" + +#~ msgid "Sync Error" +#~ msgstr "Sync-Fehler" + +#~ msgid "No expiration" +#~ msgstr "Kein Ablaufdatum" + +#~ msgid "Not connected" +#~ msgstr "Nicht verbunden" + +#~ msgid "Last Sync" +#~ msgstr "Letzte Synchronisierung" + +#~ msgid "Last Error" +#~ msgstr "Letzter Fehler" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" +#~ "CalDAV verwendet Benutzernamen/Passwort-" +#~ "Authentifizierung. Klicken Sie unten, um " +#~ "Ihre CalDAV-Verbindung einzurichten." + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "CalDAV-Integration einrichten" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" +#~ "ActivityWatch importiert Fenster- und " +#~ "Webaktivitäten von Ihrem lokalen aw-" +#~ "Server. Klicken Sie unten, um es " +#~ "zu konfigurieren." + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "ActivityWatch-Integration einrichten" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" +#~ "OAuth-Anmeldedaten sind konfiguriert. Sie " +#~ "können jetzt Trello verbinden." + +#~ msgid "Connect Trello" +#~ msgstr "Trello verbinden" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" +#~ "Bitte konfigurieren Sie den Trello " +#~ "API-Schlüssel und das Token im " +#~ "Abschnitt OAuth-Anmeldedaten-Einrichtung oben." + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" +#~ "Bitte konfigurieren Sie OAuth-Anmeldedaten " +#~ "im obigen Abschnitt, bevor Sie eine " +#~ "Verbindung herstellen." + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" +#~ "OAuth-Anmeldedaten müssen zuerst von " +#~ "einem Administrator konfiguriert werden." + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" +#~ "Verbinden Sie Ihr Google Calendar-Konto." +#~ " Sie werden zur Autorisierung zu " +#~ "Google weitergeleitet." + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" +#~ "Diese Integration verbinden. Sie werden " +#~ "zur Autorisierung zum Anbieter weitergeleitet." + +#~ msgid "Back to Integrations" +#~ msgstr "Zurück zu Integrationen" + +#~ msgid "Integration Status" +#~ msgstr "Integrationsstatus" + +#~ msgid "Token Expires" +#~ msgstr "Token läuft ab" + +#~ msgid "Sync History" +#~ msgstr "Synchronisierungshistorie" + +#~ msgid "No sync events yet" +#~ msgstr "Noch keine Synchronisierungsereignisse" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "CalDAV-Integration konfigurieren" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "ActivityWatch konfigurieren" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie diese " +#~ "Integration zurücksetzen möchten? Dadurch " +#~ "werden alle Anmeldedaten und Konfigurationen" +#~ " entfernt." + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie diese " +#~ "Integration löschen möchten? Diese Aktion " +#~ "kann nicht rückgängig gemacht werden." + +#~ msgid "Edit Configuration" +#~ msgstr "Konfiguration bearbeiten" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "Schritt 1: OAuth einrichten" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" +#~ "Erstellen Sie eine Asana-App unter " +#~ "Einstellungen → Apps → Entwickler-Apps" +#~ " verwalten." + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "Asana OAuth Client-ID" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "OAuth Client-ID eingeben" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "Asana OAuth Client-Secret" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "OAuth Client-Secret eingeben" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "Schritt 2: Arbeitsbereichsauswahl" + +#~ msgid "Workspace GID" +#~ msgstr "Arbeitsbereich-GID" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" +#~ "Finden Sie Ihre Arbeitsbereich-GID in" +#~ " den Asana-Arbeitsbereichseinstellungen oder " +#~ "der API" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "Schritt 3: Projektauswahl" + +#~ msgid "Project GIDs" +#~ msgstr "Projekt-GIDs" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" +#~ "Kommagetrennte Liste der zu synchronisierenden" +#~ " Projekt-GIDs. Leer lassen, um alle" +#~ " Projekte im Arbeitsbereich zu " +#~ "synchronisieren." + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "Schritt 4: Synchronisierungskonfiguration" + +#~ msgid "Sync Direction" +#~ msgstr "Synchronisierungsrichtung" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "Asana → TimeTracker (nur Import)" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "TimeTracker → Asana (nur Export)" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "Bidirektional (Zwei-Wege-Synchronisierung)" + +#~ msgid "Items to Sync" +#~ msgstr "Zu synchronisierende Elemente" + +#~ msgid "Subtasks" +#~ msgstr "Unteraufgaben" + +#~ msgid "Auto Sync" +#~ msgstr "Automatische Synchronisierung" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "Abgeschlossene Aufgaben synchronisieren" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "Schritt 5: Überprüfen & Speichern" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" +#~ "Überprüfen Sie Ihre Konfiguration und " +#~ "klicken Sie auf „Fertigstellen“, um zu" +#~ " speichern." + +#~ msgid "Finish" +#~ msgstr "Fertigstellen" + +#~ msgid "Step" +#~ msgstr "Schritt" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" +#~ "Erstellen Sie eine GitHub OAuth App " +#~ "unter Einstellungen → Entwicklereinstellungen " +#~ "→ OAuth Apps." + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "GitHub OAuth Client-ID" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "GitHub OAuth Client-Secret" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "Schritt 2: Repository-Auswahl" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" +#~ "Kommagetrennte Liste von Repositories (z. " +#~ "B. „octocat/Hello-World“). Leer lassen, " +#~ "um alle zugänglichen Repositories zu " +#~ "synchronisieren." + +#~ msgid "Create Projects" +#~ msgstr "Projekte erstellen" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "Schritt 3: Synchronisierungskonfiguration" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "GitHub → TimeTracker (nur Import)" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "TimeTracker → GitHub (nur Export)" + +#~ msgid "Pull Requests" +#~ msgstr "Pull-Requests" + +#~ msgid "Projects (Repositories)" +#~ msgstr "Projekte (Repositories)" + +#~ msgid "Issue States to Sync" +#~ msgstr "Zu synchronisierende Problemstatus" + +#~ msgid "Open Issues" +#~ msgstr "Offene Probleme" + +#~ msgid "Closed Issues" +#~ msgstr "Geschlossene Probleme" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "Schritt 4: Webhook einrichten" + +#~ msgid "Webhook Secret" +#~ msgstr "Webhook-Secret" + +#~ msgid "Enter webhook secret" +#~ msgstr "Webhook-Secret eingeben" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" +#~ "Geheimes Token zur Verifizierung von " +#~ "Webhook-Signaturen. Konfigurieren Sie dies " +#~ "in Ihren GitHub-Repository-Webhook-" +#~ "Einstellungen." + +#~ msgid "Weekly" +#~ msgstr "Wöchentlich" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "Automatisch synchronisieren, wenn Webhooks von GitHub empfangen werden" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" +#~ "Fügen Sie diese URL als Webhook in" +#~ " Ihren GitHub-Repository-Einstellungen " +#~ "hinzu:" + +#~ msgid "All repositories" +#~ msgstr "Alle Repositories" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "Schritt 1: Instanzkonfiguration" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" +#~ "Sie können GitLab.com oder Ihre selbst" +#~ " gehostete GitLab-Instanz verwenden." + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "Schritt 2: OAuth einrichten" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" +#~ "OAuth-Anmeldedaten konfigurieren. Erstellen " +#~ "Sie eine Anwendung unter GitLab-" +#~ "Einstellungen → Anwendungen." + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "GitLab OAuth Client-ID" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "GitLab OAuth Client-Secret" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" +#~ "Fügen Sie diese URL als autorisierte " +#~ "Weiterleitungs-URI in Ihren GitLab-" +#~ "Anwendungseinstellungen hinzu:" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "Schritt 3: Repository-Auswahl" + +#~ msgid "Repository IDs" +#~ msgstr "Repository-IDs" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" +#~ "Kommagetrennte Liste der zu synchronisierenden" +#~ " GitLab-Projekt-IDs. Leer lassen, um" +#~ " alle zugänglichen Projekte zu " +#~ "synchronisieren." + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "Projekte in TimeTracker automatisch aus GitLab-Projekten erstellen" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "Schritt 4: Synchronisierungseinstellungen" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "GitLab → TimeTracker (nur Import)" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "TimeTracker → GitLab (nur Export)" + +#~ msgid "Merge Requests" +#~ msgstr "Merge-Anfragen" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "Automatisch synchronisieren, wenn Webhooks von GitLab empfangen werden" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "Geheimes Token zur Verifizierung von Webhook-Signaturen" + +#~ msgid "Instance URL" +#~ msgstr "Instanz-URL" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "Schritt 1: OAuth einrichten & Grundkonfiguration" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" +#~ "Konfigurieren Sie zunächst die OAuth-" +#~ "Anmeldedaten für Jira. Diese erhalten " +#~ "Sie aus der Atlassian Developer Console." + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "Jira OAuth Client-ID" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "Dies aus der Atlassian Developer Console beziehen" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "Jira OAuth Client-Secret" + +#~ msgid "Jira Instance URL" +#~ msgstr "Jira-Instanz-URL" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" +#~ "Ihre Jira Cloud- oder Server-URL " +#~ "(z. B. https://your-domain.atlassian.net)" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" +#~ "Fügen Sie diese URL als autorisierte " +#~ "Weiterleitungs-URI in Ihren Jira-" +#~ "OAuth-App-Einstellungen hinzu:" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" +#~ "Klicken Sie auf „Verbindung testen“, um" +#~ " sicherzustellen, dass Jira erreichbar ist" +#~ " und die OAuth-Anmeldedaten korrekt " +#~ "sind." + +#~ msgid "JQL Query" +#~ msgstr "JQL-Abfrage" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" +#~ "JQL-Abfrage zum Filtern der zu " +#~ "synchronisierenden Probleme. Leer lassen, um" +#~ " alle zugewiesenen Probleme zu " +#~ "synchronisieren." + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "Jira → TimeTracker (nur Import)" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "TimeTracker → Jira (nur Export)" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "Wählen Sie, wie Daten zwischen Jira und TimeTracker fließen" + +#~ msgid "Issues (Tasks)" +#~ msgstr "Probleme (Aufgaben)" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "Automatisch synchronisieren, wenn Webhooks von Jira empfangen werden" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "Projekte in TimeTracker automatisch aus Jira-Projekten erstellen" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" +#~ "Überprüfen Sie Ihre Konfiguration unten. " +#~ "Klicken Sie auf „Fertigstellen“, um zu" +#~ " speichern und die Einrichtung " +#~ "abzuschließen." + +#~ msgid "Jira URL" +#~ msgstr "Jira-URL" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "Bitte testen Sie die Verbindung, bevor Sie fortfahren." + +#~ msgid "Please enter Jira URL first." +#~ msgstr "Bitte geben Sie zuerst die Jira-URL ein." + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "Schritt 1: Mandanten-ID-Konfiguration" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" +#~ "Geben Sie Ihre Azure AD Mandanten-" +#~ "ID ein. Verwenden Sie „common“ für " +#~ "Mehrinstanzen-Apps oder lassen Sie das" +#~ " Feld für den Standard leer." + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "OAuth-Anmeldedaten aus Azure AD App-Registrierungen konfigurieren." + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "Microsoft Teams OAuth Client-ID" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "Microsoft Teams OAuth Client-Secret" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "Schritt 3: Überprüfen & Speichern" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "Outlook Kalender OAuth Client-ID" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "Outlook Kalender OAuth Client-Secret" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" +#~ "Überprüfen Sie Ihre Konfiguration und " +#~ "klicken Sie auf „Fertigstellen“, um zu" +#~ " speichern. Nach dem Speichern können " +#~ "Benutzer ihre Outlook-Kalender-Konten " +#~ "verbinden." + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "Schritt 1: OAuth-Verbindung" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "OAuth-Anmeldedaten aus dem Intuit Developer Dashboard konfigurieren." + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "QuickBooks OAuth Client-ID" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "QuickBooks OAuth Client-Secret" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" +#~ "Nach dem Speichern der OAuth-" +#~ "Anmeldedaten müssen Sie Ihr QuickBooks-" +#~ "Konto über OAuth verbinden." + +#~ msgid "Step 2: Company Selection" +#~ msgstr "Schritt 2: Unternehmensauswahl" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "Firmen-ID (Realm-ID)" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" +#~ "Finden Sie Ihre Firmen-ID (Realm-" +#~ "ID) in QuickBooks nach der Verbindung" +#~ " über OAuth." + +#~ msgid "Use Sandbox" +#~ msgstr "Sandbox verwenden" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "QuickBooks-Sandbox-Umgebung zum Testen verwenden" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "QuickBooks → TimeTracker (nur Import)" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "TimeTracker → QuickBooks (nur Export)" + +#~ msgid "Customers" +#~ msgstr "Kunden" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "Schritt 4: Kontenzuordnungen" + +#~ msgid "Default Expense Account ID" +#~ msgstr "Standard-Ausgabenkonto-ID" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "QuickBooks-Konto-ID für Ausgaben, wenn keine Zuordnung konfiguriert ist" + +#~ msgid "Customer Mappings" +#~ msgstr "Kundenzuordnungen" + +#~ msgid "JSON" +#~ msgstr "JSON" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "TimeTracker-Kunden-IDs QuickBooks-Kunden-IDs zuordnen (JSON-Format)" + +#~ msgid "Account Mappings" +#~ msgstr "Kontenzuordnungen" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" +#~ "TimeTracker-Ausgabenkategorie-IDs QuickBooks-" +#~ "Konto-IDs zuordnen (JSON-Format)" + +#~ msgid "Company ID" +#~ msgstr "Firmen-ID" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "Schritt 1: API-Schlüssel einrichten" + +#~ msgid "Get your API key and secret from" +#~ msgstr "API-Schlüssel und Secret erhalten von" + +#~ msgid "Enter API Key" +#~ msgstr "API-Schlüssel eingeben" + +#~ msgid "Enter API Secret" +#~ msgstr "API-Secret eingeben" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "Generieren Sie ein Token nach dem Erstellen des API-Schlüssels" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" +#~ "Klicken Sie auf „Verbindung testen“, um" +#~ " zu überprüfen, ob Ihre Trello-" +#~ "API-Anmeldedaten korrekt sind." + +#~ msgid "API Key" +#~ msgstr "API-Schlüssel" + +#~ msgid "Not tested" +#~ msgstr "Nicht getestet" + +#~ msgid "Connection failed" +#~ msgstr "Verbindung fehlgeschlagen" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "OAuth-Anmeldedaten aus dem Xero Developer Portal konfigurieren." + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "Xero OAuth Client-ID" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "Xero OAuth Client-Secret" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "Schritt 2: Mandantenauswahl" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" +#~ "Finden Sie Ihre Mandanten-ID " +#~ "(Organisations-ID) in Xero nach der " +#~ "Verbindung über OAuth." + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "Xero → TimeTracker (nur Import)" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "TimeTracker → Xero (nur Export)" + +#~ msgid "Default Expense Account Code" +#~ msgstr "Standard-Ausgabenkonto-Code" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "Xero-Kontocode für Ausgaben, wenn keine Zuordnung konfiguriert ist" + +#~ msgid "Contact Mappings" +#~ msgstr "Kontaktzuordnungen" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "TimeTracker-Kunden-IDs Xero-Kontakt-IDs zuordnen (JSON-Format)" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" +#~ "TimeTracker-Ausgabenkategorie-IDs Xero-" +#~ "Kontocodes zuordnen (JSON-Format)" + +#~ msgid "Stock Item" +#~ msgstr "Lagerartikel" + +#~ msgid "Select Item" +#~ msgstr "Wählen Sie Artikel aus" + +#~ msgid "Warehouse" +#~ msgstr "Lager" + +#~ msgid "Select Warehouse" +#~ msgstr "Wählen Sie Lager" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Anpassungsmenge" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Verwenden Sie positive Werte, um den " +#~ "Lagerbestand zu erhöhen, negative Werte, " +#~ "um ihn zu verringern" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "z. B. Korrektur der physischen Anzahl, Schäden, gefundene Gegenstände" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Weitere Details zu dieser Anpassung" + +#~ msgid "Record Adjustment" +#~ msgstr "Datensatzanpassung" + +#~ msgid "All Warehouses" +#~ msgstr "Alle Lager" + +#~ msgid "All Items" +#~ msgstr "Alle Artikel" + +#~ msgid "Date From" +#~ msgstr "Stammen aus" + +#~ msgid "Date To" +#~ msgstr "Datum bis" + +#~ msgid "Item" +#~ msgstr "Artikel" + +#~ msgid "No adjustments found." +#~ msgstr "Keine Anpassungen gefunden." + +#~ msgid "On Hand" +#~ msgstr "Zur Hand" + +#~ msgid "Reorder Point" +#~ msgstr "Nachbestellpunkt" + +#~ msgid "Shortfall" +#~ msgstr "Fehlbetrag" + +#~ msgid "Reorder Qty" +#~ msgstr "Menge nachbestellen" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "" +#~ "Keine Warnungen bei niedrigem Lagerbestand." +#~ " Alle Artikel liegen über dem " +#~ "Mindestbestellwert." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "Positive Menge verwenden (zurückkommende Artikel)" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "Negative Menge verwenden (abgeschriebene Artikel)" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "Neuzubewertende Menge (positiv)" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "" +#~ "Verwenden Sie positive Werte für " +#~ "Hinzufügungen, negative für Entfernungen" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "Rückgabe erfordert eine positive Menge." + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "Ausschuss erfordert eine negative Menge." + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" +#~ "Für die Abwertung ist ein " +#~ "nachverfolgbarer Artikel mit Standardkosten " +#~ "erforderlich." + +#~ msgid "Movement Type" +#~ msgstr "Bewegungsart" + +#~ msgid "Return" +#~ msgstr "Zurückkehren" + +#~ msgid "Waste" +#~ msgstr "Abfall" + +#~ msgid "Devaluation" +#~ msgstr "Abwertung" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" +#~ "Sie können unten eine Abwertung " +#~ "anwenden, um zurückgegebene oder verschwendete" +#~ " Artikel zu reduzierten Kosten zu " +#~ "erfassen." + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "Artikel abwerten, ohne einen neuen Lagerartikel zu erstellen" + +#~ msgid "Apply devaluation" +#~ msgstr "Abwertung anwenden" + +#~ msgid "Method" +#~ msgstr "Methode" + +#~ msgid "Percent off default cost" +#~ msgstr "Prozent Rabatt auf Standardkosten" + +#~ msgid "Fixed new unit cost" +#~ msgstr "Neuer Stückpreis (fest)" + +#~ msgid "Percent" +#~ msgstr "Prozent" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "Beispiel: 30 = Kosten um 30 % reduzieren" + +#~ msgid "New Unit Cost" +#~ msgstr "Neuer Stückpreis" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "z. B. Korrektur der physischen Anzahl" + +#~ msgid "Record Movement" +#~ msgstr "Bewegung aufzeichnen" + +#~ msgid "Reference Type" +#~ msgstr "Referenztyp" + +#~ msgid "Manual" +#~ msgstr "Handbuch" + +#~ msgid "Unit Cost" +#~ msgstr "Stückkosten" + +#~ msgid "Reference" +#~ msgstr "Referenz" + +#~ msgid "Devalued" +#~ msgstr "Abgewertet" + +#~ msgid "No stock movements found." +#~ msgstr "Keine Lagerbewegungen gefunden." + +#~ msgid "Supplier" +#~ msgstr "Anbieter" + +#~ msgid "Select Supplier" +#~ msgstr "Wählen Sie Lieferant aus" + +#~ msgid "Order Date" +#~ msgstr "Bestelldatum" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Voraussichtlicher Liefertermin" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Hinweise für den Lieferanten sichtbar" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Interne Notizen (für den Lieferanten nicht sichtbar)" + +#~ msgid "Items" +#~ msgstr "Artikel" + +#~ msgid "Add Item" +#~ msgstr "Artikel hinzufügen" + +#~ msgid "Qty" +#~ msgstr "Menge" + +#~ msgid "Supplier SKU" +#~ msgstr "Lieferanten-SKU" + +#~ msgid "Create Purchase Order" +#~ msgstr "Bestellung erstellen" + +#~ msgid "Draft" +#~ msgstr "Entwurf" + +#~ msgid "Sent" +#~ msgstr "Gesendet" + +#~ msgid "Confirmed" +#~ msgstr "Bestätigt" + +#~ msgid "Received" +#~ msgstr "Erhalten" + +#~ msgid "All Suppliers" +#~ msgstr "Alle Lieferanten" + +#~ msgid "PO Number" +#~ msgstr "Bestellnummer" + +#~ msgid "Expected Delivery" +#~ msgstr "Lieferung voraussichtlich" + +#~ msgid "No purchase orders found." +#~ msgstr "Keine Bestellungen gefunden." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "Möchten Sie diese Bestellung wirklich stornieren?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "Sind Sie sicher, dass Sie diese Bestellung löschen möchten?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Bestelldetails" + +#~ msgid "Received Date" +#~ msgstr "Empfangsdatum" + +#~ msgid "Quantity Ordered" +#~ msgstr "Bestellte Menge" + +#~ msgid "Quantity Received" +#~ msgstr "Erhaltene Menge" + +#~ msgid "Line Total" +#~ msgstr "Zeilensumme" + +#~ msgid "Shipping" +#~ msgstr "Versand" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Bestellung erhalten" + +#~ msgid "Mark as Received" +#~ msgstr "Als erhalten markieren" + +#~ msgid "No items in this purchase order." +#~ msgstr "Keine Artikel in dieser Bestellung." + +#~ msgid "Total Items" +#~ msgstr "Gesamtzahl der Artikel" + +#~ msgid "Total Warehouses" +#~ msgstr "Gesamtlager" + +#~ msgid "Total Inventory Value" +#~ msgstr "Gesamtbestandswert" + +#~ msgid "Low Stock Items" +#~ msgstr "Artikel mit geringem Lagerbestand" + +#~ msgid "Available Reports" +#~ msgstr "Verfügbare Berichte" + +#~ msgid "Stock Valuation" +#~ msgstr "Aktienbewertung" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Lagerwert nach Lager anzeigen" + +#~ msgid "Movement History" +#~ msgstr "Bewegungsgeschichte" + +#~ msgid "Detailed movement log" +#~ msgstr "Detailliertes Bewegungsprotokoll" + +#~ msgid "Turnover Analysis" +#~ msgstr "Umsatzanalyse" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Lagerumschlagsraten" + +#~ msgid "Low Stock Report" +#~ msgstr "Bericht über niedrige Lagerbestände" + +#~ msgid "Items below reorder point" +#~ msgstr "Artikel unterhalb des Bestellpunktes" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "%(count)s Artikel unterhalb ihres Bestellpunktes gefunden." + +#~ msgid "Quantity On Hand" +#~ msgstr "Verfügbare Menge" + +#~ msgid "Reorder Quantity" +#~ msgstr "Menge nachbestellen" + +#~ msgid "Create PO" +#~ msgstr "Bestellung erstellen" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Alle Lagerbestände sind gut" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Derzeit liegen keine Artikel unter ihrem Bestellpunkt." + +#~ msgid "No movements found." +#~ msgstr "Keine Bewegungen gefunden." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "Die Umschlagshäufigkeit gibt an, wie oft" +#~ " Lagerbestände in einem Jahr verkauft " +#~ "und ersetzt werden. Höhere Raten weisen" +#~ " auf sich schneller bewegende Artikel " +#~ "hin." + +#~ msgid "Total Sold" +#~ msgstr "Insgesamt verkauft" + +#~ msgid "Avg Stock Level" +#~ msgstr "Durchschnittlicher Lagerbestand" + +#~ msgid "Turnover Rate" +#~ msgstr "Fluktuationsrate" + +#~ msgid "Fast Moving" +#~ msgstr "Schnelllebig" + +#~ msgid "Normal" +#~ msgstr "Normal" + +#~ msgid "Slow Moving" +#~ msgstr "Langsame Bewegung" + +#~ msgid "Very Slow" +#~ msgstr "Sehr langsam" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "Für den ausgewählten Zeitraum wurden keine Verkaufsdaten gefunden." + +#~ msgid "Inventory Valuation" +#~ msgstr "Bestandsbewertung" + +#~ msgid "Total Value" +#~ msgstr "Gesamtwert" + +#~ msgid "No items found with cost information." +#~ msgstr "Es wurden keine Artikel mit Kosteninformationen gefunden." + +#~ msgid "Reserved" +#~ msgstr "Reserviert" + +#~ msgid "Fulfilled" +#~ msgstr "Erfüllt" + +#~ msgid "Reserved At" +#~ msgstr "Reserviert unter" + +#~ msgid "Expires At" +#~ msgstr "Läuft ab um" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "Diese Reservierung erfüllen?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "Diese Reservierung stornieren?" + +#~ msgid "No reservations found." +#~ msgstr "Keine Reservierungen gefunden." + +#~ msgid "Unit" +#~ msgstr "Einheit" + +#~ msgid "Default Cost" +#~ msgstr "Standardkosten" + +#~ msgid "Default Price" +#~ msgstr "Standardpreis" + +#~ msgid "Image URL" +#~ msgstr "Bild-URL" + +#~ msgid "Track Inventory" +#~ msgstr "Verfolgen Sie den Lagerbestand" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "" +#~ "Verwalten Sie mehrere Lieferanten für " +#~ "diesen Artikel mit unterschiedlichen Preisen." + +#~ msgid "MOQ" +#~ msgstr "Mindestbestellmenge" + +#~ msgid "Lead Time (days)" +#~ msgstr "Vorlaufzeit (Tage)" + +#~ msgid "Preferred" +#~ msgstr "Bevorzugt" + +#~ msgid "Add Supplier" +#~ msgstr "Lieferant hinzufügen" + +#~ msgid "No movement history found for this item." +#~ msgstr "Für diesen Artikel wurde kein Bewegungsverlauf gefunden." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "Artikelnummer, Name, Barcode..." + +#~ msgid "Active Only" +#~ msgstr "Nur aktiv" + +#~ msgid "Total Qty" +#~ msgstr "Gesamtmenge" + +#~ msgid "Available" +#~ msgstr "Verfügbar" + +#~ msgid "Low Stock" +#~ msgstr "Geringer Lagerbestand" + +#~ msgid "No stock items found." +#~ msgstr "Keine Lagerartikel gefunden." + +#~ msgid "Item Details" +#~ msgstr "Artikeldetails" + +#~ msgid "Trackable" +#~ msgstr "Nachverfolgbar" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Lagerbestände nach Lager" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "Lagerbestandsaufschlüsselung nach Bewertung" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" +#~ "Detaillierte Aufschlüsselung des verbleibenden " +#~ "Bestands mit verschiedenen Abwertungsraten" + +#~ msgid "No devaluation" +#~ msgstr "Keine Abwertung" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Aktuelle Aktienbewegungen" + +#~ msgid "Total On Hand" +#~ msgstr "Insgesamt verfügbar" + +#~ msgid "Total Reserved" +#~ msgstr "Insgesamt reserviert" + +#~ msgid "Total Available" +#~ msgstr "Insgesamt verfügbar" + +#~ msgid "Low Stock Alert" +#~ msgstr "Warnung bei niedrigem Lagerbestand" + +#~ msgid "This item is not trackable." +#~ msgstr "Dieser Artikel ist nicht verfolgbar." + +#~ msgid "Active Reservations" +#~ msgstr "Aktive Reservierungen" + +#~ msgid "Quantity Reserved" +#~ msgstr "Menge reserviert" + +#~ msgid "Last Counted" +#~ msgstr "Zuletzt gezählt" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "Für diesen Artikel wurde in keinem Lager ein Lagerbestand gefunden." + +#~ msgid "No stock levels found." +#~ msgstr "Keine Lagerbestände gefunden." + +#~ msgid "Low Stock Only" +#~ msgstr "Nur geringe Lagerbestände" + +#~ msgid "Oversold" +#~ msgstr "Überverkauft" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "In diesem Lager wurden keine Lagerartikel gefunden." + +#~ msgid "Supplier Code" +#~ msgstr "Lieferantenkodex" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Eindeutiger Code für diesen Lieferanten (z. B. SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Zahlungsbedingungen" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "z. B. Netto 30, Netto 60" + +#~ msgid "Code, name, email" +#~ msgstr "Code, Name, E-Mail" + +#~ msgid "No suppliers found." +#~ msgstr "Keine Lieferanten gefunden." + +#~ msgid "Supplier Details" +#~ msgstr "Lieferantendetails" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Lagerartikel dieses Lieferanten" + +#~ msgid "Lead Time" +#~ msgstr "Vorlaufzeit" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "Mit diesem Lieferanten sind keine Lagerartikel verknüpft." + +#~ msgid "Preferred Items" +#~ msgstr "Bevorzugte Artikel" + +#~ msgid "From Warehouse" +#~ msgstr "Ab Lager" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Wählen Sie Quelllager aus" + +#~ msgid "To Warehouse" +#~ msgstr "Zum Lager" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Wählen Sie Ziellager" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Optionale Hinweise zu dieser Übertragung" + +#~ msgid "Create Transfer" +#~ msgstr "Übertragung erstellen" + +#~ msgid "No transfers found." +#~ msgstr "Keine Überweisungen gefunden." + +#~ msgid "Warehouse Code" +#~ msgstr "Lagercode" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Eindeutiger Code für dieses Lager (z. B. WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "Kontakt-E-Mail" + +#~ msgid "Contact Phone" +#~ msgstr "Kontakttelefon" + +#~ msgid "No warehouses found." +#~ msgstr "Keine Lager gefunden." + +#~ msgid "Warehouse Details" +#~ msgstr "Lagerdetails" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "In diesem Lager sind keine Lagerartikel vorhanden." + +#~ msgid "Total Quantity" +#~ msgstr "Gesamtmenge" + +#~ msgid "Current Approver" +#~ msgstr "Aktueller Genehmiger" + +#~ msgid "You" +#~ msgstr "Sie" + +#~ msgid "No Pending Approvals" +#~ msgstr "Keine ausstehenden Genehmigungen" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "Sie haben keine Rechnungen, die auf Ihre Genehmigung warten." + +#~ msgid "Reject Invoice Approval" +#~ msgstr "Rechnungsgenehmigung ablehnen" + +#~ msgid "Reason for Rejection" +#~ msgstr "Ablehnungsgrund" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "Bitte geben Sie einen Grund für die Ablehnung dieser Rechnung an..." + +#~ msgid "Request Invoice Approval" +#~ msgstr "Rechnungsgenehmigung anfordern" + +#~ msgid "Back to Invoice" +#~ msgstr "Zurück zur Rechnung" + +#~ msgid "Select Approvers" +#~ msgstr "Genehmiger auswählen" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" +#~ "Wählen Sie einen oder mehrere Benutzer" +#~ " aus, die diese Rechnung genehmigen " +#~ "müssen. Genehmigungen werden der Reihe " +#~ "nach bearbeitet." + +#~ msgid "Request Approval" +#~ msgstr "Genehmigung anfordern" + +#~ msgid "Approval Status" +#~ msgstr "Genehmigungsstatus" + +#~ msgid "Requested By" +#~ msgstr "Angefordert von" + +#~ msgid "Requested At" +#~ msgstr "Angefordert am" + +#~ msgid "Approved By" +#~ msgstr "Genehmigt von" + +#~ msgid "Rejected By" +#~ msgstr "Abgelehnt von" + +#~ msgid "Rejection Reason" +#~ msgstr "Ablehnungsgrund" + +#~ msgid "Approval Stages" +#~ msgstr "Genehmigungsstufen" + +#~ msgid "Quick Actions" +#~ msgstr "Schnelle Aktionen" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "Warte auf Genehmigung von einem anderen Benutzer." + +#~ msgid "Export to Excel" +#~ msgstr "Export nach Excel" + +#~ msgid "Partially Paid" +#~ msgstr "Teilweise bezahlt" + +#~ msgid "Fully Paid" +#~ msgstr "Vollständig bezahlt" + +#~ msgid "Create Invoice" +#~ msgstr "Rechnung erstellen" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Erstellen Sie eine neue Rechnung für ein Projekt und einen Kunden" + +#~ msgid "Select a project" +#~ msgstr "Wählen Sie ein Projekt aus" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "" +#~ "Wenn Sie ein Projekt auswählen, werden" +#~ " die Kundendaten automatisch ausgefüllt" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "Käuferreferenz (PEPPOL BT-10)" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "Optional; wird in PEPPOL UBL verwendet" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Steuersatz (%)" + +#~ msgid "Tips" +#~ msgstr "Tipps" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "" +#~ "Wählen Sie das richtige Projekt aus, " +#~ "um die Kundendaten automatisch auszufüllen." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "" +#~ "Sie können Notizen und Bedingungen " +#~ "anpassen, bevor Sie die Rechnung senden." + +#~ msgid "Edit Invoice" +#~ msgstr "Rechnung bearbeiten" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Aktualisieren Sie Rechnungsdetails, Artikel und Bedingungen" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Zeitbasierte Dienstleistungen und Stundenarbeit" + +#~ msgid "Project / Stock Item" +#~ msgstr "Projekt / Lagerartikel" + +#~ msgid "Task / Warehouse" +#~ msgstr "Aufgabe / Lager" + +#~ msgid "Project hours" +#~ msgstr "Projektstunden" + +#~ msgid "Select Stock Item" +#~ msgstr "Wählen Sie Lagerartikel aus" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "z. B. Webentwicklungsdienste" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "Menge stammt aus erfassten Stunden und kann nicht bearbeitet werden" + +#~ msgid "Remove item" +#~ msgstr "Artikel entfernen" + +#~ msgid "Items Subtotal" +#~ msgstr "Zwischensumme der Artikel" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "Abzurechnende Ausgaben wie Reisen, Verpflegung und Material" + +#~ msgid "Add Expense" +#~ msgstr "Kosten hinzufügen" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "z. B. Reisen zum Kundentreffen" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Verknüpfte Ausgabe – Titel kann nicht bearbeitet werden" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Verknüpfte Ausgabe – Beschreibung kann nicht bearbeitet werden" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Verknüpfte Ausgabe – Kategorie kann nicht bearbeitet werden" + +#~ msgid "Travel" +#~ msgstr "Reisen" + +#~ msgid "Meals" +#~ msgstr "Mahlzeiten" + +#~ msgid "Accommodation" +#~ msgstr "Unterkunft" + +#~ msgid "Supplies" +#~ msgstr "Lieferungen" + +#~ msgid "Software" +#~ msgstr "Software" + +#~ msgid "Equipment" +#~ msgstr "Ausrüstung" + +#~ msgid "Services" +#~ msgstr "Dienstleistungen" + +#~ msgid "Marketing" +#~ msgstr "Marketing" + +#~ msgid "Training" +#~ msgstr "Ausbildung" + +#~ msgid "Other" +#~ msgstr "Andere" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Verknüpfte Ausgabe – Betrag kann nicht bearbeitet werden" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Verknüpfte Ausgabe – Datum kann nicht bearbeitet werden" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Verknüpfung der Ausgaben mit der Rechnung aufheben" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Zwischensumme der Ausgaben" + +#~ msgid "Extra Goods" +#~ msgstr "Zusätzliche Waren" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Produkte, Materialien, Lizenzen und andere Waren" + +#~ msgid "Add Good" +#~ msgstr "Gut hinzufügen" + +#~ msgid "Price" +#~ msgstr "Preis" + +#~ msgid "e.g., Software License" +#~ msgstr "z. B. Softwarelizenz" + +#~ msgid "Product" +#~ msgstr "Produkt" + +#~ msgid "Service" +#~ msgstr "Service" + +#~ msgid "Material" +#~ msgstr "Material" + +#~ msgid "Remove good" +#~ msgstr "Gut entfernen" + +#~ msgid "Goods Subtotal" +#~ msgstr "Warenzwischensumme" + +#~ msgid "Live Preview" +#~ msgstr "Live-Vorschau" + +#~ msgid "Payment" +#~ msgstr "Zahlung" + +#~ msgid "Goods" +#~ msgstr "Waren" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Aus Zeit/Kosten generieren" + +#~ msgid "Record Payment" +#~ msgstr "Zahlung aufzeichnen" + +#~ msgid "Export PDF" +#~ msgstr "PDF exportieren" + +#~ msgid "Export CSV" +#~ msgstr "CSV exportieren" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Doppelte Rechnung" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie die " +#~ "Verknüpfung dieser Ausgabe mit der " +#~ "Rechnung aufheben möchten?" + +#~ msgid "Unlink Expense" +#~ msgstr "Verknüpfung der Ausgaben aufheben" + +#~ msgid "Unlink" +#~ msgstr "Verknüpfung aufheben" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "" +#~ "Bitte fügen Sie der Rechnung mindestens" +#~ " einen Artikel, eine Ausgabe oder " +#~ "eine zusätzliche Ware hinzu" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Generieren Sie aus Zeit, Kosten und Waren" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Wählen Sie nicht abgerechnete Zeiteinträge," +#~ " Projektkosten und zusätzliche Waren aus," +#~ " die dieser Rechnung hinzugefügt werden " +#~ "sollen" + +#~ msgid "Back to Edit" +#~ msgstr "Zurück zu Bearbeiten" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Nicht abgerechnete Zeiteinträge" + +#~ msgid "entries" +#~ msgstr "Einträge" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "" +#~ "Für dieses Projekt wurden keine nicht" +#~ " abgerechneten Zeiteinträge gefunden." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Nicht in Rechnung gestellte Projektkosten" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "" +#~ "Für dieses Projekt wurden keine nicht" +#~ " in Rechnung gestellten Kosten gefunden." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Nicht in Rechnung gestellte abrechenbare Ausgaben" + +#~ msgid "Vendor" +#~ msgstr "Verkäufer" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "" +#~ "Für dieses Projekt wurden keine nicht" +#~ " in Rechnung gestellten abrechenbaren " +#~ "Ausgaben gefunden." + +#~ msgid "Project Extra Goods" +#~ msgstr "Projektzusatzgüter" + +#~ msgid "No extra goods found for this project." +#~ msgstr "Für dieses Projekt wurden keine zusätzlichen Waren gefunden." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Ausgewählte zur Rechnung hinzufügen" + +#~ msgid "Selection Summary" +#~ msgstr "Zusammenfassung der Auswahl" + +#~ msgid "Total available hours" +#~ msgstr "Insgesamt verfügbare Stunden" + +#~ msgid "Total available costs" +#~ msgstr "Gesamte verfügbare Kosten" + +#~ msgid "Total available expenses" +#~ msgstr "Gesamte verfügbare Ausgaben" + +#~ msgid "Total available goods" +#~ msgstr "Insgesamt verfügbare Waren" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Übersicht über die Prepaid-Stunden" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" +#~ "Der Plan umfasst %(hours)s Stunden pro" +#~ " Zyklus (wird am Tag %(day)s " +#~ "zurückgesetzt)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "Verbraucht: %(consumed)s h • Verbleibend: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "Für den ausgewählten Zeitraum wurde noch keine Prepaid-Nutzung erfasst." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" +#~ "Sie können mehrere Zeiteinträge, Kosten, " +#~ "Ausgaben und Zusatzgüter auswählen." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "Zeiteinträge werden bei der Elementerstellung" +#~ " nach Aufgabe oder Projekt gruppiert." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "Kosten und Zusatzgüter werden als einzelne Rechnungspositionen addiert." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "" +#~ "Ausgaben sind mit der Rechnung verknüpft" +#~ " und erscheinen in einem separaten " +#~ "Abschnitt." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "" +#~ "Bitte wählen Sie mindestens einen " +#~ "Zeiteintrag, Kosten, Ausgaben oder ein " +#~ "Extragut aus" + +#~ msgid "Filter Invoices" +#~ msgstr "Rechnungen filtern" + +#~ msgid "Invoice number or client" +#~ msgstr "Rechnungsnummer oder Kunde" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "Ausgewählte Rechnungen löschen" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Status für ausgewählte Rechnungen ändern" + +#~ msgid "Select Status" +#~ msgstr "Status auswählen" + +#~ msgid "Invoice Reference" +#~ msgstr "Rechnungsreferenz" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "z. B. Zahlungsbestätigungsnummer" + +#~ msgid "Delete Invoice" +#~ msgstr "Rechnung löschen" + +#~ msgid "Warning:" +#~ msgstr "Warnung:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Sind Sie sicher, dass Sie die Rechnung löschen möchten?" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Alle mit dieser Rechnung verbundenen " +#~ "Rechnungspositionen, zusätzlichen Waren und " +#~ "Zahlungsaufzeichnungen werden dauerhaft gelöscht." + +#~ msgid "INVOICE" +#~ msgstr "RECHNUNG" + +#~ msgid "Invoice #" +#~ msgstr "Rechnung #" + +#~ msgid "Bill To" +#~ msgstr "Gesetzesentwurf für" + +#~ msgid "Quantity (Hours)" +#~ msgstr "Menge (Stunden)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "Erstellt aus %(num)d Zeiteinträgen" + +#~ msgid "Expense" +#~ msgstr "Kosten" + +#~ msgid "Subtotal:" +#~ msgstr "Zwischensumme:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "Steuer (%(rate).2f%%):" + +#~ msgid "Total Amount:" +#~ msgstr "Gesamtbetrag:" + +#~ msgid "Notes:" +#~ msgstr "Hinweise:" + +#~ msgid "Terms:" +#~ msgstr "Bedingungen:" + +#~ msgid "Payment Information:" +#~ msgstr "Zahlungsinformationen:" + +#~ msgid "Terms & Conditions:" +#~ msgstr "Allgemeine Geschäftsbedingungen:" + +#~ msgid "Download UBL" +#~ msgstr "UBL herunterladen" + +#~ msgid "Pay Online" +#~ msgstr "Online bezahlen" + +#~ msgid "Payment Reference" +#~ msgstr "Zahlungsreferenz" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "PEPPOL-Konformität: Die folgenden Angaben fehlen" + +#~ msgid "Invoice Approval" +#~ msgstr "Rechnungsgenehmigung" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" +#~ "Genehmigung anfordern, bevor diese Rechnung" +#~ " an den Kunden gesendet wird." + +#~ msgid "Payment History" +#~ msgstr "Zahlungshistorie" + +#~ msgid "Send Invoice via Email" +#~ msgstr "Rechnung per E-Mail senden" + +#~ msgid "Edit Issue" +#~ msgstr "Problem bearbeiten" + +#~ msgid "Unassigned" +#~ msgstr "Nicht zugewiesen" + +#~ msgid "Create Issue" +#~ msgstr "Problem erstellen" + +#~ msgid "Filter Issues" +#~ msgstr "Probleme filtern" + +#~ msgid "Search by title or description" +#~ msgstr "Nach Titel oder Beschreibung suchen" + +#~ msgid "Apply Filters" +#~ msgstr "Filter anwenden" + +#~ msgid "Page" +#~ msgstr "Seite" + +#~ msgid "of" +#~ msgstr "von" + +#~ msgid "No issues found" +#~ msgstr "Keine Probleme gefunden" + +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" +#~ "Keine Probleme entsprechen Ihren Filtern. " +#~ "Erstellen Sie ein Problem oder passen" +#~ " Sie Ihre Filter an." + +#~ msgid "Create New Issue" +#~ msgstr "Neues Problem erstellen" + +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "Möchten Sie dieses Problem wirklich löschen?" + +#~ msgid "Delete Issue" +#~ msgstr "Problem löschen" + +#~ msgid "Task Management" +#~ msgstr "Aufgabenverwaltung" + +#~ msgid "Link to existing task" +#~ msgstr "Mit vorhandener Aufgabe verknüpfen" + +#~ msgid "Select a task" +#~ msgstr "Aufgabe auswählen" + +#~ msgid "Link" +#~ msgstr "Link" + +#~ msgid "Create new task from this issue" +#~ msgstr "Neue Aufgabe aus diesem Problem erstellen" + +#~ msgid "Submitted By" +#~ msgstr "Eingereicht von" + +#~ msgid "Kanban" +#~ msgstr "Kanban" + +#~ msgid "Manage Columns" +#~ msgstr "Spalten verwalten" + +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "Ziehen Sie Aufgaben zwischen Spalten, um ihren Status zu aktualisieren" + +#~ msgid "Kanban board" +#~ msgstr "Kanban-Board" + +#~ msgid "moved to" +#~ msgstr "umgezogen" + +#~ msgid "No tasks in this column." +#~ msgstr "Keine Aufgaben in dieser Spalte." + +#~ msgid "Manage Kanban Columns" +#~ msgstr "Kanban-Spalten verwalten" + +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "Passen Sie die Spalten und Aufgabenstatus Ihrer Kanban-Tafel an" + +#~ msgid "Project:" +#~ msgstr "Projekt:" + +#~ msgid "Global Columns" +#~ msgstr "Globale Spalten" + +#~ msgid "Add Column" +#~ msgstr "Spalte hinzufügen" + +#~ msgid "Kanban columns list" +#~ msgstr "Liste der Kanban-Spalten" + +#~ msgid "Key" +#~ msgstr "Schlüssel" + +#~ msgid "Complete?" +#~ msgstr "Vollständig?" + +#~ msgid "Drag to reorder" +#~ msgstr "Zum Neuanordnen ziehen" + +#~ msgid "Edit column" +#~ msgstr "Spalte bearbeiten" + +#~ msgid "Toggle active state" +#~ msgstr "Aktiven Status umschalten" + +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" +#~ "Keine Kanban-Spalten gefunden. Erstellen " +#~ "Sie Ihre erste Spalte, um loszulegen." + +#~ msgid "Tips:" +#~ msgstr "Tipps:" + +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Ziehen Sie Zeilen per Drag-and-Drop, um die Spalten neu anzuordnen" + +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "Systemspalten (todo, in_progress, done) können" +#~ " nicht gelöscht, aber angepasst werden" + +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "Als „Abgeschlossen“ markierte Spalten " +#~ "markieren Aufgaben als abgeschlossen, wenn " +#~ "sie in diese Spalte gezogen werden" + +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Inaktive Spalten werden auf dem " +#~ "Kanban-Board ausgeblendet, Aufgaben mit " +#~ "diesem Status bleiben jedoch zugänglich" + +#~ msgid "Delete Kanban Column" +#~ msgstr "Kanban-Spalte löschen" + +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Sind Sie sicher, dass Sie die Spalte löschen möchten?" + +#~ msgid "Key:" +#~ msgstr "Schlüssel:" + +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Hinweis: Auf Aufgaben mit diesem Status" +#~ " kann weiterhin zugegriffen werden, die " +#~ "Spalte wird jedoch nicht mehr auf " +#~ "dem Kanban-Board angezeigt." + +#~ msgid "Delete Column" +#~ msgstr "Spalte löschen" + +#~ msgid "Columns reordered successfully" +#~ msgstr "Die Spalten wurden erfolgreich neu angeordnet" + +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "" +#~ "Spalten konnten nicht neu angeordnet " +#~ "werden. Bitte versuchen Sie es erneut." + +#~ msgid "Create Kanban Column" +#~ msgstr "Erstellen Sie eine Kanban-Spalte" + +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Fügen Sie Ihrem Kanban-Board eine neue Spalte hinzu" + +#~ msgid "Create Kanban Column form" +#~ msgstr "Erstellen Sie ein Kanban-Spaltenformular" + +#~ msgid "Column Label" +#~ msgstr "Spaltenbeschriftung" + +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "z. B. „In Überprüfung“, „Blockiert“, „Testet“." + +#~ msgid "The display name shown on the kanban board" +#~ msgstr "Der auf der Kanban-Tafel angezeigte Anzeigename" + +#~ msgid "Column Key" +#~ msgstr "Spaltenschlüssel" + +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "z. B. in_review, blockiert, testen" + +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Eindeutiger Bezeichner (Kleinbuchstaben, keine " +#~ "Leerzeichen, Unterstriche verwenden). Wird " +#~ "automatisch aus dem Etikett generiert, " +#~ "wenn es leer ist." + +#~ msgid "Global (for all projects)" +#~ msgstr "Global (für alle Projekte)" + +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Wählen Sie ein Projekt aus, um " +#~ "projektspezifische Spalten zu erstellen, oder" +#~ " belassen Sie die Spalte „Global“ für" +#~ " alle Projekte" + +#~ msgid "Icon Class" +#~ msgstr "Icon-Klasse" + +#~ msgid "Font Awesome icon class" +#~ msgstr "Font Awesome-Icon-Klasse" + +#~ msgid "Browse icons" +#~ msgstr "Durchsuchen Sie Symbole" + +#~ msgid "Primary (Blue)" +#~ msgstr "Primär (Blau)" + +#~ msgid "Secondary (Gray)" +#~ msgstr "Sekundär (Grau)" + +#~ msgid "Success (Green)" +#~ msgstr "Erfolg (Grün)" + +#~ msgid "Danger (Red)" +#~ msgstr "Gefahr (Rot)" + +#~ msgid "Warning (Yellow)" +#~ msgstr "Warnung (Gelb)" + +#~ msgid "Info (Cyan)" +#~ msgstr "Info (Cyan)" + +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Bootstrap-Farbklasse für das Styling" + +#~ msgid "Mark as Complete State" +#~ msgstr "Als abgeschlossen markieren" + +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "In diese Spalte verschobene Aufgaben werden als erledigt markiert" + +#~ msgid "Create Column" +#~ msgstr "Spalte erstellen" + +#~ msgid "Note:" +#~ msgstr "Notiz:" + +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "Die Spalte wird am Ende der Tafel" +#~ " hinzugefügt. Sie können die Spalten " +#~ "später auf der Verwaltungsseite neu " +#~ "anordnen." + +#~ msgid "Edit Kanban Column" +#~ msgstr "Kanban-Spalte bearbeiten" + +#~ msgid "Modify column settings" +#~ msgstr "Spalteneinstellungen ändern" + +#~ msgid "Edit Kanban Column form" +#~ msgstr "Kanban-Spaltenformular bearbeiten" + +#~ msgid "The key cannot be changed after creation" +#~ msgstr "Der Schlüssel kann nach der Erstellung nicht mehr geändert werden" + +#~ msgid "This is a project-specific column" +#~ msgstr "Dies ist eine projektspezifische Spalte" + +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Dies ist eine globale Spalte (für alle Projekte)" + +#~ msgid "Preview" +#~ msgstr "Vorschau" + +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Inaktive Spalten werden auf dem Kanban-Board ausgeblendet" + +#~ msgid "System Column:" +#~ msgstr "Systemspalte:" + +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Dies ist eine Systemspalte. Sie können" +#~ " das Erscheinungsbild anpassen, es jedoch" +#~ " nicht löschen." + +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "Tastenkürzel (? drücken)" + +#~ msgid "Show keyboard shortcuts" +#~ msgstr "Tastenkürzel anzeigen" + +#~ msgid "Toggle dark mode" +#~ msgstr "Schalten Sie den Dunkelmodus um" + +#~ msgid "Logout from kiosk mode" +#~ msgstr "Vom Kiosk-Modus abmelden" + +#~ msgid "Scan" +#~ msgstr "Scannen" + +#~ msgid "Adjust Stock" +#~ msgstr "Lagerbestand anpassen" + +#~ msgid "Close keyboard shortcuts" +#~ msgstr "Tastenkürzel schließen" + +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "Barcode scannen oder SKU eingeben" + +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "Verwenden Sie einen Barcode-Scanner oder geben Sie die SKU manuell ein" + +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "Barcode scannen oder SKU eingeben..." + +#~ msgid "Barcode or SKU input" +#~ msgstr "Barcode- oder SKU-Eingabe" + +#~ msgid "Use Camera to Scan" +#~ msgstr "Kamera zum Scannen verwenden" + +#~ msgid "Open camera scanner" +#~ msgstr "Kamera-Scanner öffnen" + +#~ msgid "Close camera scanner" +#~ msgstr "Kamera-Scanner schließen" + +#~ msgid "Close Camera" +#~ msgstr "Kamera schließen" + +#~ msgid "Decrease quantity" +#~ msgstr "Menge verringern" + +#~ msgid "Adjustment quantity" +#~ msgstr "Anpassungsmenge" + +#~ msgid "Increase quantity" +#~ msgstr "Menge erhöhen" + +#~ msgid "Kiosk adjustment" +#~ msgstr "Kiosk-Anpassung" + +#~ msgid "Physical count" +#~ msgstr "Physische Zählung" + +#~ msgid "Found" +#~ msgstr "Gefunden" + +#~ msgid "Damaged" +#~ msgstr "Beschädigt" + +#~ msgid "Apply stock adjustment" +#~ msgstr "Lagerbestandsanpassung anwenden" + +#~ msgid "Apply Adjustment" +#~ msgstr "Anpassung anwenden" + +#~ msgid "Undo last adjustment" +#~ msgstr "Letzte Anpassung rückgängig machen" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "Letzte Anpassung rückgängig machen" + +#~ msgid "Transfer quantity" +#~ msgstr "Übertragungsmenge" + +#~ msgid "Transfer stock" +#~ msgstr "Lagerbestand übertragen" + +#~ msgid "Transfer Stock" +#~ msgstr "Lagerbestand übertragen" + +#~ msgid "Stop timer" +#~ msgstr "Timer stoppen" + +#~ msgid "Stop Timer" +#~ msgstr "Timer stoppen" + +#~ msgid "Select project..." +#~ msgstr "Projekt auswählen..." + +#~ msgid "No projects available" +#~ msgstr "Keine Projekte verfügbar" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" +#~ "Keine aktiven Projekte gefunden. Bitte " +#~ "erstellen Sie zuerst ein Projekt." + +#~ msgid "No task" +#~ msgstr "Keine Aufgabe" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "Aufgaben werden nach der Projektauswahl geladen" + +#~ msgid "What are you working on?" +#~ msgstr "Woran arbeitest du?" + +#~ msgid "Start timer" +#~ msgstr "Timer starten" + +#~ msgid "Recent Items" +#~ msgstr "Aktuelle Elemente" + +#~ msgid "Kiosk Login" +#~ msgstr "Kiosk-Anmeldung" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "Schnellzugriff für Lageroperationen" + +#~ msgid "Barcode scanning" +#~ msgstr "Barcode-Scannen" + +#~ msgid "Stock management" +#~ msgstr "Lagerverwaltung" + +#~ msgid "Time tracking" +#~ msgstr "Zeiterfassung" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "Im Kiosk-Modus anmelden" + +#~ msgid "Select your username to continue" +#~ msgstr "Benutzernamen auswählen, um fortzufahren" + +#~ msgid "Toggle Theme" +#~ msgstr "Design umschalten" + +#~ msgid "Select User" +#~ msgstr "Benutzer auswählen" + +#~ msgid "your-username" +#~ msgstr "Ihr-Benutzername" + +#~ msgid "Standard Login" +#~ msgstr "Standard-Anmeldung" + +#~ msgid "Convert to Client" +#~ msgstr "In Kunden umwandeln" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" +#~ "Dies erstellt einen neuen Kunden und " +#~ "primären Kontakt aus diesem Lead und " +#~ "markiert den Lead dann als konvertiert." + +#~ msgid "Lead summary" +#~ msgstr "Lead-Zusammenfassung" + +#~ msgid "Convert to Deal" +#~ msgstr "In Geschäft umwandeln" + +#~ msgid "Source" +#~ msgstr "Quelle" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Website, Empfehlung, Anzeige..." + +#~ msgid "Lead Score" +#~ msgstr "Lead-Score" + +#~ msgid "Estimated Value" +#~ msgstr "Schätzwert" + +#~ msgid "Save Lead" +#~ msgstr "Lead speichern" + +#~ msgid "Name, company, email..." +#~ msgstr "Name, Firma, E-Mail..." + +#~ msgid "All Statuses" +#~ msgstr "Alle Status" + +#~ msgid "Website, referral..." +#~ msgstr "Website, Empfehlung..." + +#~ msgid "Score" +#~ msgstr "Punktzahl" + +#~ msgid "No leads found" +#~ msgstr "Keine Leads gefunden" + +#~ msgid "Create First Lead" +#~ msgstr "Erstellen Sie den ersten Lead" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "Diesen Lead als verloren markieren?" + +#~ msgid "Mark Lost" +#~ msgstr "Als verloren markieren" + +#~ msgid "Lead" +#~ msgstr "Lead" + +#~ msgid "No contact details yet" +#~ msgstr "Noch keine Kontaktdetails" + +#~ msgid "Lead Details" +#~ msgstr "Lead-Details" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Professionelle Zeiterfassung und Projektmanagement" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "Eine umfassende webbasierte Zeiterfassungsanwendung," +#~ " die mit Flask erstellt wurde und " +#~ "Projektmanagement, Kundenorganisation, Aufgabenverwaltung," +#~ " Rechnungsstellung und erweiterte Analysen " +#~ "bietet." + +#~ msgid "Invoicing" +#~ msgstr "Fakturierung" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" +#~ "TimeTracker ist kostenlos und Open " +#~ "Source. Sie können spenden oder eine " +#~ "Supporter-Lizenz kaufen — Funktionen " +#~ "sind nie gesperrt." + +#~ msgid "Smart Timers" +#~ msgstr "Intelligente Timer" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "Echtzeit-Tracking mit Leerlauferkennung und Live-Updates" + +#~ msgid "Client Management" +#~ msgstr "Kundenmanagement" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "Organisieren Sie Kunden mit Kontakten, Tarifen und Projektbeziehungen" + +#~ msgid "Task System" +#~ msgstr "Aufgabensystem" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Teilen Sie Projekte mit Fortschrittsverfolgung in Aufgaben auf" + +#~ msgid "PDF Invoices" +#~ msgstr "PDF-Rechnungen" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Erstellen Sie professionelle Rechnungen aus erfasster Zeit" + +#~ msgid "Core Features" +#~ msgstr "Kernfunktionen" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Timer mit Projekt- und Aufgabenzuordnung starten/stoppen" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Manuelle Zeiteingabe mit Notizen und Tags" + +#~ msgid "Client and project organization" +#~ msgstr "Kunden- und Projektorganisation" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Rollenbasierter Zugriff und Benutzerprofile" + +#~ msgid "Advanced Features" +#~ msgstr "Erweiterte Funktionen" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Gebrandete PDF-Rechnung mit Steuer- und Zahlungsverfolgung" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Visuelle Analysen und detaillierte Berichte" + +#~ msgid "REST API for integrations" +#~ msgstr "REST-API für Integrationen" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "PWA-Funktionen und mobilfreundliche Benutzeroberfläche" + +#~ msgid "Platform Support" +#~ msgstr "Plattformunterstützung" + +#~ msgid "Web Application" +#~ msgstr "Webanwendung" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Desktop-Browser (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Mobiles responsives Design" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "Progressive Web-App (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Touch-freundliche Tablet-Oberfläche" + +#~ msgid "Operating Systems" +#~ msgstr "Betriebssysteme" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android und iOS (Browser)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Raspberry Pi-Unterstützung" + +#~ msgid "Dockerized deployment" +#~ msgstr "Dockerisierte Bereitstellung" + +#~ msgid "Database Support" +#~ msgstr "Datenbankunterstützung" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (empfohlen)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (Entwicklung/Test)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Automatische Migrationen mit Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Backup- und Wiederherstellungstools" + +#~ msgid "Technical Specifications" +#~ msgstr "Technische Spezifikationen" + +#~ msgid "Technology Stack" +#~ msgstr "Technologie-Stack" + +#~ msgid "Backend" +#~ msgstr "Backend" + +#~ msgid "Frontend" +#~ msgstr "Frontend" + +#~ msgid "Deployment" +#~ msgstr "Einsatz" + +#~ msgid "Key Capabilities" +#~ msgstr "Schlüsselfunktionen" + +#~ msgid "Real-time" +#~ msgstr "Echtzeit" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "Open Source und Community" + +#~ msgid "Open Source Benefits" +#~ msgstr "Vorteile von Open Source" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Vollständiger Quellcode auf GitHub verfügbar" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Lizenziert unter GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "Community-getriebene Entwicklung" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Transparente Problemverfolgung und Fehlerberichte" + +#~ msgid "Deployment Options" +#~ msgstr "Bereitstellungsoptionen" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Docker-Images (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Selbstgehostete Bereitstellung mit voller Kontrolle" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Cloud-fähig mit Compose-Konfigurationen" + +#~ msgid "View on GitHub" +#~ msgstr "Auf GitHub ansehen" + +#~ msgid "Support updates" +#~ msgstr "Support-Updates" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "TimeTracker-Entwicklung unterstützen" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" +#~ "TimeTracker ist kostenlos und Open " +#~ "Source. Unterstützen Sie Updates und " +#~ "neue Funktionen — oder entfernen Sie " +#~ "Hinweise mit einem einmaligen Schlüssel." + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "Hinweise mit einem einmaligen Schlüssel entfernen." + +#~ msgid "Getting Help & Resources" +#~ msgstr "Hilfe und Ressourcen erhalten" + +#~ msgid "Documentation" +#~ msgstr "Dokumentation" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Schritt-für-Schritt-Anleitungen für alle Funktionen." + +#~ msgid "View Help" +#~ msgstr "Hilfe anzeigen" + +#~ msgid "System Information" +#~ msgstr "Systeminformationen" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Status, Versionen und Konfigurationsdetails." + +#~ msgid "Admin access required" +#~ msgstr "Administratorzugriff erforderlich" + +#~ msgid "Community Support" +#~ msgstr "Community-Unterstützung" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "" +#~ "Melden Sie Probleme, fordern Sie " +#~ "Funktionen an und leisten Sie einen " +#~ "Beitrag." + +#~ msgid "GitHub Issues" +#~ msgstr "GitHub-Probleme" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "%(duration)s auf %(project)s erfasst" + +#~ msgid "View time entries" +#~ msgstr "Zeiteinträge anzeigen" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "Hier erhalten Sie einen kurzen Überblick über Ihre Arbeit." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "" +#~ "Timer mit demselben Projekt, Aufgabe und" +#~ " Notizen wie beim letzten Eintrag " +#~ "starten" + +#~ msgid "Repeat last" +#~ msgstr "Letzten wiederholen" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Timer mit letztem Projekt und Notizen starten?" + +#~ msgid "Quick start" +#~ msgstr "Schnellstart" + +#~ msgid "Paused" +#~ msgstr "Pausiert" + +#~ msgid "Break" +#~ msgstr "Pause" + +#~ msgid "Running" +#~ msgstr "Läuft" + +#~ msgid "Break so far" +#~ msgstr "Pause bisher" + +#~ msgid "Started at" +#~ msgstr "Begonnen um" + +#~ msgid "Elapsed" +#~ msgstr "Abgelaufen" + +#~ msgid "Adjust time" +#~ msgstr "Zeit anpassen" + +#~ msgid "Subtract 15 min" +#~ msgstr "15 Min. abziehen" + +#~ msgid "Subtract 5 min" +#~ msgstr "5 Min. abziehen" + +#~ msgid "Add 5 min" +#~ msgstr "+5 Min" + +#~ msgid "Add 15 min" +#~ msgstr "+15 Min" + +#~ msgid "Resume timer" +#~ msgstr "Timer fortsetzen" + +#~ msgid "Resume" +#~ msgstr "Fortsetzen" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "Timer pausieren (Pausenzeit wird bei Fortsetzung gezählt)" + +#~ msgid "Pause" +#~ msgstr "Pause" + +#~ msgid "Stop and save current time" +#~ msgstr "Aktuelle Zeit stoppen und speichern" + +#~ msgid "Stop & save" +#~ msgstr "Stoppen & speichern" + +#~ msgid "No active timer." +#~ msgstr "Kein aktiver Timer." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" +#~ "Setzen Sie Ihre letzte Sitzung fort " +#~ "oder verwenden Sie die Schaltflächen " +#~ "oben, um die letzte zu wiederholen " +#~ "/ einen neuen Timer zu starten." + +#~ msgid "Resume last session" +#~ msgstr "Letzte Sitzung fortsetzen" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "Klicken Sie oben auf „Timer starten“, um Ihre Zeit zu erfassen." + +#~ msgid "Today's Hours" +#~ msgstr "Heutige Stunden" + +#~ msgid "overtime" +#~ msgstr "Überstunden" + +#~ msgid "Week's Hours" +#~ msgstr "Wochenstunden" + +#~ msgid "Month's Hours" +#~ msgstr "Monatsstunden" + +#~ msgid "Overtime (YTD)" +#~ msgstr "Überstunden (laufendes Jahr)" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" +#~ "Wenn dies Ihnen auch nur 1 Stunde" +#~ " gespart hat, erwägen Sie eine " +#~ "Unterstützung ❤️" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" +#~ "Beginnen Sie mit der Erfassung, um " +#~ "Ihre Produktivitätserkenntnisse hier zu sehen." + +#~ msgid "Loading insights…" +#~ msgstr "Erkenntnisse werden geladen…" + +#~ msgid "Value insights" +#~ msgstr "Wertanalyse" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "Ihre erfasste Zeit auf einen Blick" + +#~ msgid "Total hours tracked" +#~ msgstr "Gesamte erfasste Stunden" + +#~ msgid "Active days" +#~ msgstr "Aktive Tage" + +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "Stunden pro Tag (letzte 7 Tage)" + +#~ msgid "Hours per day last seven days" +#~ msgstr "Stunden pro Tag letzte sieben Tage" + +#~ msgid "Most productive day" +#~ msgstr "Produktivster Tag" + +#~ msgid "Avg session length" +#~ msgstr "Durchschnittliche Sitzungsdauer" + +#~ msgid "Estimated value tracked" +#~ msgstr "Geschätzter erfasster Wert" + +#~ msgid "This week vs last week" +#~ msgstr "Diese Woche vs. letzte Woche" + +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "Stunden pro Tag (Mo–heute vs. gleiche Tage letzte Woche)" + +#~ msgid "hrs this week" +#~ msgstr "Std. diese Woche" + +#~ msgid "vs last week" +#~ msgstr "vs. letzte Woche" + +#~ msgid "This week" +#~ msgstr "Diese Woche" + +#~ msgid "Last week" +#~ msgstr "Letzte Woche" + +#~ msgid "Could not load comparison." +#~ msgstr "Vergleich konnte nicht geladen werden." + +#~ msgid "This week and last week hours by day" +#~ msgstr "Diese und letzte Woche Stunden pro Tag" + +#~ msgid "Recent Entries" +#~ msgstr "Aktuelle Einträge" + +#~ msgid "View all" +#~ msgstr "Alle anzeigen" + +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Fortsetzen – Starten Sie einen neuen Timer mit denselben Eigenschaften" + +#~ msgid "Edit entry" +#~ msgstr "Eintrag bearbeiten" + +#~ msgid "Duplicate entry" +#~ msgstr "Doppelter Eintrag" + +#~ msgid "Delete entry" +#~ msgstr "Eintrag löschen" + +#~ msgid "No recent entries found." +#~ msgstr "Keine aktuellen Einträge gefunden." + +#~ msgid "Start tracking time to see entries here." +#~ msgstr "Beginnen Sie mit der Zeiterfassung, um Einträge hier zu sehen." + +#~ msgid "Weekly Goal" +#~ msgstr "Wöchentliches Ziel" + +#~ msgid "Days Left" +#~ msgstr "Tage übrig" + +#~ msgid "Need" +#~ msgstr "Brauchen" + +#~ msgid "to reach goal" +#~ msgstr "Ziel erreichen" + +#~ msgid "No Weekly Goal" +#~ msgstr "Kein wöchentliches Ziel" + +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "" +#~ "Legen Sie ein wöchentliches Zeitziel " +#~ "fest, um Ihren Fortschritt zu verfolgen" + +#~ msgid "Create Goal" +#~ msgstr "Ziel erstellen" + +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Zeit nach Projekt (letzte 7 Tage)" + +#~ msgid "View report" +#~ msgstr "Bericht anzeigen" + +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Zeitverteilung nach Projekt für die letzten 7 Tage" + +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Keine Zeit in den letzten 7 Tagen erfasst." + +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Beginnen Sie mit der Zeiterfassung, um die Verteilung hier zu sehen." + +#~ msgid "Top Projects (30 days)" +#~ msgstr "Top-Projekte (30 Tage)" + +#~ msgid "No activity in the last 30 days." +#~ msgstr "Keine Aktivität in den letzten 30 Tagen." + +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "Beginnen Sie mit der Zeiterfassung für Projekte, um sie hier zu sehen." + +#~ msgid "Live" +#~ msgstr "Live" + +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "Sie haben %(hours)s Stunden erfasst" + +#~ msgid "You have created %(count)s entries" +#~ msgstr "Sie haben %(count)s Einträge erstellt" + +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Generierte Berichte: %(n)s" + +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" +#~ "Vielen Dank für Ihre Unterstützung der" +#~ " Entwicklung. Das Teilen von TimeTracker" +#~ " hilft immer noch sehr." + +#~ msgid "Share & support" +#~ msgstr "Teilen & Unterstützen" + +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" +#~ "Wenn dies Ihnen Zeit spart, erwägen " +#~ "Sie die Unterstützung der Entwicklung —" +#~ " alles bleibt kostenlos und offen." + +#~ msgid "Buy License (€25)" +#~ msgstr "Lizenz kaufen (€25)" + +#~ msgid "Create new task..." +#~ msgstr "Neue Aufgabe erstellen..." + +#~ msgid "Loading tasks..." +#~ msgstr "Aufgaben werden geladen..." + +#~ msgid "Enter new task name:" +#~ msgstr "Neuen Aufgabennamen eingeben:" + +#~ msgid "Failed to create task: " +#~ msgstr "Aufgabe konnte nicht erstellt werden: " + +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" +#~ "Bitte schließen Sie die Aufgabenerstellung " +#~ "ab oder wählen Sie eine vorhandene " +#~ "Aufgabe aus" + +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" +#~ "Eine Aufgabe muss ausgewählt werden, " +#~ "wenn Zeit für ein Projekt erfasst " +#~ "wird" + +#~ msgid "A description is required when logging time" +#~ msgstr "Eine Beschreibung ist erforderlich, wenn Zeit erfasst wird" + +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "Die Beschreibung muss mindestens %(min)s Zeichen lang sein" + +#~ msgid "Quick start with a template" +#~ msgstr "Schnellstart mit einer Vorlage" + +#~ msgid "All templates" +#~ msgstr "Alle Vorlagen" + +#~ msgid "Select either a project or a client" +#~ msgstr "Entweder ein Projekt oder einen Kunden auswählen" + +#~ msgid "Task (optional)" +#~ msgstr "Aufgabe (optional)" + +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" +#~ "Wählen Sie zuerst ein Projekt aus, " +#~ "um Aufgaben zu laden, oder wählen " +#~ "Sie „Neue Aufgabe erstellen...“, um eine" +#~ " hinzuzufügen" + +#~ msgid "Notes (optional)" +#~ msgstr "Notizen (optional)" + +#~ msgid "Tags (optional)" +#~ msgstr "Tags (optional)" + +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "z. B. Besprechung, Entwicklung, Verwaltung" + +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "Kommagetrennt; zuletzt verwendete Tags werden als Vorschläge angezeigt." + +#~ msgid "Enter a name for the new task." +#~ msgstr "Geben Sie einen Namen für die neue Aufgabe ein." + +#~ msgid "Task name" +#~ msgstr "Aufgabenname" + +#~ msgid "Create task" +#~ msgstr "Aufgabe erstellen" + +#~ msgid "Task name is required." +#~ msgstr "Aufgabenname ist erforderlich." + +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" +#~ "Keine gültigen Bilddateien ausgewählt. Bitte" +#~ " wählen Sie PNG-, JPG-, GIF- oder " +#~ "WebP-Bilder." + +#~ msgid "Uploading" +#~ msgstr "Wird hochgeladen" + +#~ msgid "images" +#~ msgstr "Bilder" + +#~ msgid "Uploading image" +#~ msgstr "Bild wird hochgeladen" + +#~ msgid "Successfully uploaded" +#~ msgstr "Erfolgreich hochgeladen" + +#~ msgid "image(s) failed to upload" +#~ msgstr "Bild(er) konnten nicht hochgeladen werden" + +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "Bilder konnten nicht hochgeladen werden. Bitte versuchen Sie es erneut." + +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" +#~ "Bilder konnten nicht hochgeladen werden. " +#~ "Bitte überprüfen Sie Ihre Verbindung und" +#~ " versuchen Sie es erneut." + +#~ msgid "Support Development" +#~ msgstr "Unterstützen Sie die Entwicklung" + +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" +#~ "Spenden Sie zur Unterstützung der " +#~ "Entwicklung — oder erwerben Sie einen" +#~ " Schlüssel, um Hinweise zu entfernen" + +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "Updates unterstützen und TimeTracker für alle kostenlos halten" + +#~ msgid "Remove prompts with key" +#~ msgstr "Hinweise mit Schlüssel entfernen" + +#~ msgid "Why Your Support Matters" +#~ msgstr "Warum Ihre Unterstützung wichtig ist" + +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" +#~ "TimeTracker ist ein kostenloses Open-" +#~ "Source-Projekt, das mit Leidenschaft und" +#~ " Hingabe entwickelt wurde. Ihre Spenden " +#~ "unterstützen direkt:" + +#~ msgid "Server Infrastructure" +#~ msgstr "Serverinfrastruktur" + +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" +#~ "Hosting-, Datenbank- und CDN-Kosten, um" +#~ " TimeTracker schnell und zuverlässig zu " +#~ "halten" + +#~ msgid "Feature Development" +#~ msgstr "Funktionsentwicklung" + +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" +#~ "Neue Funktionen, Verbesserungen und " +#~ "Fehlerbehebungen basierend auf Ihrem Feedback" + +#~ msgid "Security & Maintenance" +#~ msgstr "Sicherheit & Wartung" + +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" +#~ "Regelmäßige Sicherheitsupdates, Abhängigkeitspflege " +#~ "und Leistungsoptimierung" + +#~ msgid "Internationalization" +#~ msgstr "Internationalisierung" + +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" +#~ "Übersetzungsunterstützung, Lokalisierung und " +#~ "weltweite Zugänglichkeit von TimeTracker" + +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" +#~ "Ein Schlüssel pro Instanz; Schlüssel " +#~ "wird nach der Zahlung per E-Mail " +#~ "gesendet (€25 einmalig). Kein Abonnement." + +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" +#~ "Kopieren Sie Ihre System-ID aus " +#~ "Admin → Einstellungen → Support-" +#~ "Sichtbarkeit." + +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" +#~ "Kaufen Sie einen Schlüssel über den " +#~ "folgenden Link; Sie erhalten ihn per " +#~ "E-Mail." + +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" +#~ "Fügen Sie den Code in Admin → " +#~ "Einstellungen → Support-Sichtbarkeit ein " +#~ "und verifizieren Sie ihn." + +#~ msgid "Your TimeTracker Journey" +#~ msgstr "Ihre TimeTracker-Reise" + +#~ msgid "Days using TimeTracker" +#~ msgstr "Tage mit TimeTracker" + +#~ msgid "Time entries tracked" +#~ msgstr "Erfasste Zeiteinträge" + +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "Vielen Dank, dass Sie Teil der TimeTracker-Community sind!" + +#~ msgid "How to Support" +#~ msgstr "Wie man unterstützt" + +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" +#~ "Jeder Beitrag, egal wie groß, macht " +#~ "einen Unterschied. Ihre Unterstützung hilft" +#~ " sicherzustellen, dass TimeTracker kostenlos " +#~ "bleibt und sich weiterentwickelt." + +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" +#~ "Sie werden zu Buy Me a Coffee " +#~ "weitergeleitet, wo Sie Ihren Beitragsbetrag" +#~ " wählen können" + +#~ msgid "The Impact of Your Support" +#~ msgstr "Die Auswirkung Ihrer Unterstützung" + +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" +#~ "Ermöglicht schnellere Entwicklungszyklen und " +#~ "schnellere Funktionsveröffentlichungen" + +#~ msgid "Supports better documentation and user guides" +#~ msgstr "Unterstützt bessere Dokumentation und Benutzeranleitungen" + +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "Hilft dabei, hohe Code- und Sicherheitsstandards aufrechtzuerhalten" + +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "Hält TimeTracker kostenlos und für alle zugänglich" + +#~ msgid "Other Ways to Help" +#~ msgstr "Andere Möglichkeiten zu helfen" + +#~ msgid "Contribute on GitHub" +#~ msgstr "Auf GitHub beitragen" + +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "Fehler melden, Funktionen vorschlagen oder Code einreichen" + +#~ msgid "Help Others" +#~ msgstr "Anderen helfen" + +#~ msgid "Share your knowledge in the community" +#~ msgstr "Teilen Sie Ihr Wissen in der Community" + +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "Einmaliger Schlüssel pro Instanz; kein Abonnement" + +#~ msgid "Complete documentation and user guide" +#~ msgstr "Vollständige Dokumentation und Bedienungsanleitung" + +#~ msgid "Quick Navigation" +#~ msgstr "Schnelle Navigation" + +#~ msgid "Filter sections..." +#~ msgstr "Abschnitte filtern..." + +#~ msgid "Quick Start" +#~ msgstr "Schnellstart" + +#~ msgid "Reports & Analytics" +#~ msgstr "Berichte und Analysen" + +#~ msgid "Productivity Features" +#~ msgstr "Produktivitätsfunktionen" + +#~ msgid "Admin Features" +#~ msgstr "Admin-Funktionen" + +#~ msgid "Mobile Usage" +#~ msgstr "Mobile Nutzung" + +#~ msgid "API Documentation" +#~ msgstr "API-Dokumentation" + +#~ msgid "Troubleshooting" +#~ msgstr "Fehlerbehebung" + +#~ msgid "TimeTracker Help Center" +#~ msgstr "TimeTracker-Hilfecenter" + +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "Alles, was Sie wissen müssen, um TimeTracker optimal zu nutzen" + +#~ msgid "Start Tracking Time" +#~ msgstr "Beginnen Sie mit der Zeiterfassung" + +#~ msgid "View Projects" +#~ msgstr "Projekte anzeigen" + +#~ msgid "Generate Reports" +#~ msgstr "Berichte erstellen" + +#~ msgid "API Docs" +#~ msgstr "API-Dokumentation" + +#~ msgid "Restart Product Tour" +#~ msgstr "Produkttour neu starten" + +#~ msgid "Quick Start Guide" +#~ msgstr "Kurzanleitung" + +#~ msgid "For New Users" +#~ msgstr "Für neue Benutzer" + +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Melden Sie sich mit Ihrem Benutzernamen an (kein Passwort erforderlich)" + +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Erkunden Sie das Dashboard, um einen Überblick zu erhalten" + +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Starten Sie Ihren ersten Timer für ein bestehendes Projekt" + +#~ msgid "View your time entries in reports" +#~ msgstr "Sehen Sie sich Ihre Zeiteinträge in Berichten an" + +#~ msgid "For Administrators" +#~ msgstr "Für Administratoren" + +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Richten Sie Kunden im Bereich „Kundenverwaltung“ ein" + +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Erstellen Sie Projekte und weisen Sie sie Kunden zu" + +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Systemeinstellungen konfigurieren (Zeitzone, Währung usw.)" + +#~ msgid "Manage users and permissions" +#~ msgstr "Verwalten Sie Benutzer und Berechtigungen" + +#~ msgid "Pro Tip:" +#~ msgstr "Profi-Tipp:" + +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Nutzen Sie die mobilfreundliche Oberfläche," +#~ " um die Zeit unterwegs zu erfassen." +#~ " Der Timer läuft auch dann weiter," +#~ " wenn Sie Ihren Browser schließen!" + +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Echtzeit-Tracking mit automatischer " +#~ "Leerlauferkennung und WebSocket-Updates" + +#~ msgid "Manual Entry" +#~ msgstr "Manuelle Eingabe" + +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "" +#~ "Protokollieren Sie die Zeit manuell mit" +#~ " benutzerdefinierten Start- und Endzeiten" + +#~ msgid "Starting a Timer" +#~ msgstr "Starten eines Timers" + +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" +#~ "Klicken Sie auf das Timer-Symbol " +#~ "in der Kopfzeile (runder Button), um " +#~ "von jeder Seite aus zu starten " +#~ "oder zu stoppen" + +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Oder zur Timer-Seite oder zum Dashboard navigieren" + +#~ msgid "Select a project from the dropdown" +#~ msgstr "Wählen Sie ein Projekt aus der Dropdown-Liste aus" + +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "" +#~ "Wählen Sie optional eine Aufgabe für " +#~ "eine detailliertere Nachverfolgung aus" + +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Fügen Sie Notizen zu dem hinzu, woran Sie gerade arbeiten (optional)" + +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Durch Kommas getrennte Tags hinzufügen (optional)" + +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Klicken Sie auf „Timer starten“" + +#~ msgid "Timer Features" +#~ msgstr "Timer-Funktionen" + +#~ msgid "Real-time duration display" +#~ msgstr "Anzeige der Dauer in Echtzeit" + +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" +#~ "Pause und Stopp auf dem Dashboard " +#~ "— Pause speichert Ihre Zeit, damit " +#~ "Sie später fortfahren können" + +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" +#~ "Letzte Sitzung mit einem Klick " +#~ "fortsetzen (gleiches Projekt/Aufgabe/Notizen)" + +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" +#~ "Schnelle Zeitanpassung (−15 / −5 / " +#~ "+5 / +15 Min.) während der Timer" +#~ " läuft" + +#~ msgid "Continues running if browser closes" +#~ msgstr "Läuft weiter, wenn der Browser geschlossen wird" + +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Automatische Leerlauferkennung (konfigurierbar)" + +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Ein aktiver Timer pro Benutzer (konfigurierbar)" + +#~ msgid "WebSocket live updates" +#~ msgstr "WebSocket-Live-Updates" + +#~ msgid "Manual Time Entry" +#~ msgstr "Manuelle Zeiteingabe" + +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Erstellen Sie Zeiteinträge manuell, wenn " +#~ "Sie die Zeit erfassen müssen, die " +#~ "Sie nicht am Computer verbracht haben," +#~ " oder passen Sie vorhandene Einträge " +#~ "an." + +#~ msgid "Required Information" +#~ msgstr "Erforderliche Informationen" + +#~ msgid "Project selection" +#~ msgstr "Projektauswahl" + +#~ msgid "Start date and time" +#~ msgstr "Startdatum und -uhrzeit" + +#~ msgid "End date and time" +#~ msgstr "Enddatum und -uhrzeit" + +#~ msgid "Optional Information" +#~ msgstr "Optionale Informationen" + +#~ msgid "Task assignment" +#~ msgstr "Aufgabenzuweisung" + +#~ msgid "Description/notes" +#~ msgstr "Beschreibung/Anmerkungen" + +#~ msgid "Tags for categorization" +#~ msgstr "Tags zur Kategorisierung" + +#~ msgid "Billable status override" +#~ msgstr "Überschreibung des abrechenbaren Status" + +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Erweiterte Zeiteingabefunktionen" + +#~ msgid "Bulk Entry" +#~ msgstr "Masseneintrag" + +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Erstellen Sie mehrere Zeiteinträge für " +#~ "aufeinanderfolgende Tage mit demselben Projekt" +#~ " und derselben Dauer. Perfekt für " +#~ "regelmäßige Arbeitsabläufe." + +#~ msgid "Templates" +#~ msgstr "Vorlagen" + +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Speichern Sie häufig verwendete Zeiteinträge" +#~ " als Vorlagen zur schnellen " +#~ "Wiederverwendung. Speichert Projekte, Aufgaben " +#~ "und Notizen." + +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualisieren Sie Ihre Zeiteinträge in " +#~ "einem Kalender. Per Drag-and-Drop " +#~ "können Sie einen neuen Termin festlegen" +#~ " oder auf Daten klicken, um Einträge" +#~ " hinzuzufügen." + +#~ msgid "Project Information" +#~ msgstr "Projektinformationen" + +#~ msgid "Descriptive project name" +#~ msgstr "Beschreibender Projektname" + +#~ msgid "Associated client organization" +#~ msgstr "Zugehörige Kundenorganisation" + +#~ msgid "Project details and scope" +#~ msgstr "Projektdetails und Umfang" + +#~ msgid "Active, completed, or archived" +#~ msgstr "Aktiv, abgeschlossen oder archiviert" + +#~ msgid "Billing Information" +#~ msgstr "Abrechnungsdaten" + +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Ob die Zeit für die Abrechnung erfasst werden soll" + +#~ msgid "Rate for billable time calculations" +#~ msgstr "Tarif für abrechnungsfähige Zeitberechnungen" + +#~ msgid "Billing Reference" +#~ msgstr "Rechnungsreferenz" + +#~ msgid "PO number or billing code" +#~ msgstr "Bestellnummer oder Rechnungscode" + +#~ msgid "Project Operations" +#~ msgstr "Projektbetrieb" + +#~ msgid "Create new projects with client relationships" +#~ msgstr "Erstellen Sie neue Projekte mit Kundenbeziehungen" + +#~ msgid "Edit existing projects to update details" +#~ msgstr "Bearbeiten Sie vorhandene Projekte, um Details zu aktualisieren" + +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "" +#~ "Projekte archivieren, um sie vor Timern" +#~ " zu verbergen (Daten bleiben erhalten)" + +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Projekte löschen (entfernt alle zugehörigen Zeiteinträge)" + +#~ msgid "Best Practices" +#~ msgstr "Best Practices" + +#~ msgid "Use descriptive project names" +#~ msgstr "Verwenden Sie beschreibende Projektnamen" + +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Legen Sie genaue Stundensätze für die Abrechnung fest" + +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Archivieren statt löschen, wenn möglich" + +#~ msgid "Use billing references for external tracking" +#~ msgstr "Verwenden Sie Rechnungsreferenzen für die externe Nachverfolgung" + +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "Das Kundenverwaltungssystem hilft Ihnen, Ihre" +#~ " Arbeit nach Kundenorganisationen zu " +#~ "organisieren, Fehler zu vermeiden und " +#~ "die Projekterstellung zu optimieren." + +#~ msgid "Client Information" +#~ msgstr "Kundeninformationen" + +#~ msgid "Organization Name" +#~ msgstr "Name der Organisation" + +#~ msgid "Company or client name" +#~ msgstr "Firmen- oder Kundenname" + +#~ msgid "Primary contact details" +#~ msgstr "Hauptkontaktdaten" + +#~ msgid "Email & Phone" +#~ msgstr "E-Mail und Telefon" + +#~ msgid "Contact information" +#~ msgstr "Kontaktinformationen" + +#~ msgid "Business address" +#~ msgstr "Geschäftsadresse" + +#~ msgid "Benefits" +#~ msgstr "Vorteile" + +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "Die Dropdown-Auswahl verhindert Tippfehler" + +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Standardtarife füllen Projekte automatisch aus" + +#~ msgid "Consistent client naming" +#~ msgstr "Konsistente Kundenbenennung" + +#~ msgid "Easier project organization" +#~ msgstr "Einfachere Projektorganisation" + +#~ msgid "Project Count" +#~ msgstr "Projektanzahl" + +#~ msgid "Total and active projects" +#~ msgstr "Insgesamt und aktive Projekte" + +#~ msgid "Total hours worked" +#~ msgstr "Gesamtarbeitsstunden" + +#~ msgid "Cost Estimation" +#~ msgstr "Kostenschätzung" + +#~ msgid "Estimated billing amounts" +#~ msgstr "Geschätzte Rechnungsbeträge" + +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Unterteilen Sie Projekte in überschaubare " +#~ "Aufgaben mit detaillierter Nachverfolgung und" +#~ " Fortschrittsüberwachung." + +#~ msgid "Task Properties" +#~ msgstr "Aufgabeneigenschaften" + +#~ msgid "Name & Description" +#~ msgstr "Name und Beschreibung" + +#~ msgid "Clear task identification" +#~ msgstr "Klare Aufgabenidentifikation" + +#~ msgid "Priority Levels" +#~ msgstr "Prioritätsstufen" + +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Niedrig, Mittel, Hoch, Dringend" + +#~ msgid "Due Dates" +#~ msgstr "Fälligkeitstermine" + +#~ msgid "Deadline tracking" +#~ msgstr "Terminverfolgung" + +#~ msgid "Assignment" +#~ msgstr "Abtretung" + +#~ msgid "Task ownership" +#~ msgstr "Aufgabeneigentum" + +#~ msgid "Status Tracking" +#~ msgstr "Statusverfolgung" + +#~ msgid "To Do - Not started" +#~ msgstr "Zu erledigen – Nicht gestartet" + +#~ msgid "In Progress - Currently working" +#~ msgstr "In Bearbeitung – Derzeit in Arbeit" + +#~ msgid "Review - Ready for review" +#~ msgstr "Überprüfung – Bereit zur Überprüfung" + +#~ msgid "Done - Completed" +#~ msgstr "Fertig – Abgeschlossen" + +#~ msgid "Cancelled - Not needed" +#~ msgstr "Abgebrochen – Nicht erforderlich" + +#~ msgid "Time Tracking Features" +#~ msgstr "Zeiterfassungsfunktionen" + +#~ msgid "Start timers directly from tasks" +#~ msgstr "Starten Sie Timer direkt aus Aufgaben" + +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Verknüpfen Sie Zeiteinträge mit bestimmten Aufgaben" + +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Verfolgen Sie geschätzte und tatsächliche Stunden" + +#~ msgid "Monitor task progress automatically" +#~ msgstr "Überwachen Sie den Aufgabenfortschritt automatisch" + +#~ msgid "Task Views" +#~ msgstr "Aufgabenansichten" + +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Meine Aufgaben – Ihre zugewiesenen Aufgaben" + +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Alle Aufgaben – Vollständige Aufgabenliste" + +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Überfällige Aufgaben – Überfällige Elemente" + +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Projektaufgaben – Aufgaben innerhalb von Projekten" + +#~ msgid "Collaboration Features" +#~ msgstr "Funktionen für die Zusammenarbeit" + +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Aufgabenkommentare – Thread-Diskussionen zu Aufgaben" + +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Markdown-Unterstützung – Umfangreiche Formatierung in Beschreibungen" + +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "Benutzererwähnungen – Tag-Teammitglieder (falls aktiviert)" + +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Dateianhänge – Dateien an Aufgaben anhängen (falls aktiviert)" + +#~ msgid "Markdown Formatting" +#~ msgstr "Markdown-Formatierung" + +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "Aufgaben- und Projektbeschreibungen unterstützen Markdown:" + +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Fett**, *Kursiv*, ~~Durchgestrichen~~" + +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# Überschriften, - Listen, [Links](url)" + +#~ msgid "```code blocks```, tables, images" +#~ msgstr "„Codeblöcke“, Tabellen, Bilder" + +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualisieren Sie Ihren Arbeitsablauf mit " +#~ "einem Drag-and-Drop-Kanban-Board " +#~ "für eine intuitive Aufgabenverwaltung." + +#~ msgid "Board Features" +#~ msgstr "Board-Funktionen" + +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Anpassbare Spalten passend zum Aufgabenstatus" + +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Drag-and-Drop-Aufgaben zwischen Spalten" + +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Filtern Sie nach Projekt, Benutzer oder Priorität" + +#~ msgid "Quick search across all tasks" +#~ msgstr "Schnelle Suche über alle Aufgaben hinweg" + +#~ msgid "Using the Kanban Board" +#~ msgstr "Verwendung des Kanban-Boards" + +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Zugriff über das Aufgabenmenü oder die Projektseite" + +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "Ziehen Sie Aufgaben in verschiedene Spalten, um den Status zu ändern" + +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Klicken Sie auf eine Aufgabenkarte, um Details anzuzeigen/zu bearbeiten" + +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Verwenden Sie Filter, um sich auf bestimmte Arbeiten zu konzentrieren" + +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "Das Kanban-Board eignet sich perfekt " +#~ "für die Sprintplanung und tägliche " +#~ "Standups. Jede Spalte repräsentiert eine " +#~ "Phase in Ihrem Workflow!" + +#~ msgid "Expense Tracking" +#~ msgstr "Kostenverfolgung" + +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Verfolgen Sie Geschäftsausgaben, verwalten Sie" +#~ " Belege und wickeln Sie Rückerstattungen" +#~ " effizient ab." + +#~ msgid "Expense Features" +#~ msgstr "Spesenfunktionen" + +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Kategorisieren Sie Ausgaben (Reisen, Mahlzeiten, Vorräte usw.)" + +#~ msgid "Attach receipt images and documents" +#~ msgstr "Fügen Sie Belegbilder und Dokumente bei" + +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Verfolgen Sie Beträge, Steuern und Zahlungsmethoden" + +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Genehmigungsworkflow für Spesenanträge" + +#~ msgid "Billing & Reimbursement" +#~ msgstr "Abrechnung und Rückerstattung" + +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Markieren Sie Ausgaben als für Kunden abrechenbar" + +#~ msgid "Include expenses in client invoices" +#~ msgstr "Beziehen Sie Ausgaben in Kundenrechnungen ein" + +#~ msgid "Track reimbursement status" +#~ msgstr "Verfolgen Sie den Erstattungsstatus" + +#~ msgid "Link expenses to specific projects" +#~ msgstr "Verknüpfen Sie Ausgaben mit bestimmten Projekten" + +#~ msgid "Record Expense" +#~ msgstr "Ausgaben erfassen" + +#~ msgid "Enter details and upload receipt" +#~ msgstr "Geben Sie die Details ein und laden Sie die Quittung hoch" + +#~ msgid "Submit for Approval" +#~ msgstr "Zur Genehmigung einreichen" + +#~ msgid "Admin reviews and approves" +#~ msgstr "Der Administrator überprüft und genehmigt" + +#~ msgid "Invoice/Reimburse" +#~ msgstr "Rechnung/Rückerstattung" + +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Zur Rechnung hinzufügen oder erstatten" + +#~ msgid "Track Payment" +#~ msgstr "Verfolgen Sie die Zahlung" + +#~ msgid "Monitor reimbursement status" +#~ msgstr "Überwachen Sie den Erstattungsstatus" + +#~ msgid "Professional Invoicing" +#~ msgstr "Professionelle Rechnungsstellung" + +#~ msgid "Professional PDF generation" +#~ msgstr "Professionelle PDF-Generierung" + +#~ msgid "Company branding and logos" +#~ msgstr "Firmenbranding und Logos" + +#~ msgid "Automatic invoice numbering" +#~ msgstr "Automatische Rechnungsnummerierung" + +#~ msgid "Tax calculations" +#~ msgstr "Steuerberechnungen" + +#~ msgid "Time Integration" +#~ msgstr "Zeitintegration" + +#~ msgid "Generate from time entries" +#~ msgstr "Aus Zeiteinträgen generieren" + +#~ msgid "Smart grouping by task/project" +#~ msgstr "Intelligente Gruppierung nach Aufgabe/Projekt" + +#~ msgid "Prevent double-billing" +#~ msgstr "Vermeiden Sie Doppelabrechnungen" + +#~ msgid "Use project hourly rates" +#~ msgstr "Verwenden Sie Projektstundensätze" + +#~ msgid "Set up client and project details" +#~ msgstr "Kunden- und Projektdetails einrichten" + +#~ msgid "Add Items" +#~ msgstr "Elemente hinzufügen" + +#~ msgid "Generate from time or add manually" +#~ msgstr "Aus Zeitgründen generieren oder manuell hinzufügen" + +#~ msgid "Review & Send" +#~ msgstr "Überprüfen und senden" + +#~ msgid "Export PDF and update status" +#~ msgstr "PDF exportieren und Status aktualisieren" + +#~ msgid "Monitor status and payments" +#~ msgstr "Überwachen Sie Status und Zahlungen" + +#~ msgid "Standard Reports" +#~ msgstr "Standardberichte" + +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Projektbericht – Zeitaufschlüsselung nach Projekt" + +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Benutzerbericht – Individuelle Leistungsmetriken" + +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Zusammenfassender Bericht – Wichtige Kennzahlen und Trends" + +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Zeiteintragsbericht – Detaillierte Zeitprotokolle" + +#~ msgid "Export Options" +#~ msgstr "Exportoptionen" + +#~ msgid "CSV Export - For external analysis" +#~ msgstr "CSV-Export – Für externe Analyse" + +#~ msgid "Configurable delimiters" +#~ msgstr "Konfigurierbare Trennzeichen" + +#~ msgid "Custom date ranges" +#~ msgstr "Benutzerdefinierte Datumsbereiche" + +#~ msgid "Filtered data export" +#~ msgstr "Gefilterter Datenexport" + +#~ msgid "Filter Options" +#~ msgstr "Filteroptionen" + +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Datumsbereich – Benutzerdefiniertes Start- und Enddatum" + +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Projekt – Filtern Sie nach bestimmten Projekten" + +#~ msgid "User - Filter by team members" +#~ msgstr "Benutzer – Filtern Sie nach Teammitgliedern" + +#~ msgid "Client - Filter by client organization" +#~ msgstr "Kunde – Filtern Sie nach Kundenorganisation" + +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Gespeicherte Filter – Speichern Sie häufig verwendete Filter" + +#~ msgid "Visual Analytics" +#~ msgstr "Visuelle Analyse" + +#~ msgid "Interactive bar charts" +#~ msgstr "Interaktive Balkendiagramme" + +#~ msgid "Time distribution pie charts" +#~ msgstr "Zeitverteilungs-Kreisdiagramme" + +#~ msgid "Trend analysis over time" +#~ msgstr "Trendanalyse im Zeitverlauf" + +#~ msgid "Mobile-optimized charts" +#~ msgstr "Für Mobilgeräte optimierte Diagramme" + +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Verwenden Sie gespeicherte Filter, um " +#~ "schnell auf Ihre häufigsten Berichtsansichten" +#~ " zuzugreifen. Speichern Sie Filter für " +#~ "wöchentliche Überprüfungen, monatliche Abrechnung" +#~ " oder spezifische Projektverfolgung!" + +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Steigern Sie Ihre Effizienz mit " +#~ "Tastaturkürzeln, Befehlspalette und " +#~ "Automatisierungsfunktionen." + +#~ msgid "Command Palette" +#~ msgstr "Befehlspalette" + +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "" +#~ "Greifen Sie sofort auf alle Funktionen" +#~ " zu, ohne die Tastatur zu verlassen" + +#~ msgid "Opening the Command Palette" +#~ msgstr "Öffnen der Befehlspalette" + +#~ msgid "Press the question mark key" +#~ msgstr "Drücken Sie die Fragezeichen-Taste" + +#~ msgid "Quick search" +#~ msgstr "Schnellsuche" + +#~ msgid "Go to Projects" +#~ msgstr "Gehen Sie zu Projekte" + +#~ msgid "Go to Tasks" +#~ msgstr "Gehen Sie zu Aufgaben" + +#~ msgid "New Time Entry" +#~ msgstr "Neuer Zeiteintrag" + +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Tastaturkürzel" + +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Navigieren Sie schneller mit " +#~ "tastaturgesteuerten Befehlen. Umschalt+ drücken? " +#~ "um alle Verknüpfungen anzuzeigen." + +#~ msgid "Global Search" +#~ msgstr "Globale Suche" + +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "Finden Sie schnell Projekte, Aufgaben, " +#~ "Kunden und Zeiteinträge von überall in" +#~ " der App." + +#~ msgid "Email Notifications" +#~ msgstr "E-Mail-Benachrichtigungen" + +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Lassen Sie sich per E-Mail über " +#~ "Aufgabenzuweisungen, überfällige Rechnungen und " +#~ "wöchentliche Zusammenfassungen benachrichtigen." + +#~ msgid "Administrator Features" +#~ msgstr "Administratorfunktionen" + +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Erstellen Sie neue Benutzer mit flexibler Authentifizierung" + +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Weisen Sie benutzerdefinierte Rollen mit spezifischen Berechtigungen zu" + +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Benutzerkonten aktivieren/deaktivieren" + +#~ msgid "View user statistics and activity" +#~ msgstr "Sehen Sie sich Benutzerstatistiken und -aktivitäten an" + +#~ msgid "Generate API tokens for users" +#~ msgstr "Generieren Sie API-Tokens für Benutzer" + +#~ msgid "Access Control" +#~ msgstr "Zugangskontrolle" + +#~ msgid "Granular role-based permissions system" +#~ msgstr "Granulares rollenbasiertes Berechtigungssystem" + +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Benutzerdefinierte Rollen mit fein abgestuftem Zugriff" + +#~ msgid "User data access controls" +#~ msgstr "Zugriffskontrollen für Benutzerdaten" + +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "OIDC/SSO-Integration (Azure AD, Authelia usw.)" + +#~ msgid "API token management for integrations" +#~ msgstr "API-Token-Verwaltung für Integrationen" + +#~ msgid "Authentication Methods" +#~ msgstr "Authentifizierungsmethoden" + +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Nur Benutzername (einfache interne Verwendung)" + +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (Unternehmensauthentifizierung)" + +#~ msgid "Both methods simultaneously" +#~ msgstr "Beide Methoden gleichzeitig" + +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Automatische Rollenzuweisung über Gruppen" + +#~ msgid "Role & Permission Management" +#~ msgstr "Rollen- und Berechtigungsverwaltung" + +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Erstellen Sie benutzerdefinierte Rollen über Admin/Benutzer hinaus" + +#~ msgid "Set granular permissions per feature" +#~ msgstr "Legen Sie detaillierte Berechtigungen pro Funktion fest" + +#~ msgid "Assign users to multiple roles" +#~ msgstr "Weisen Sie Benutzern mehrere Rollen zu" + +#~ msgid "View and manage all permissions" +#~ msgstr "Alle Berechtigungen anzeigen und verwalten" + +#~ msgid "General Settings" +#~ msgstr "Allgemeine Einstellungen" + +#~ msgid "Timezone and locale settings" +#~ msgstr "Zeitzonen- und Gebietsschemaeinstellungen" + +#~ msgid "Currency configuration" +#~ msgstr "Währungskonfiguration" + +#~ msgid "Time rounding rules" +#~ msgstr "Zeitrundungsregeln" + +#~ msgid "Self-registration settings" +#~ msgstr "Einstellungen zur Selbstregistrierung" + +#~ msgid "Timer Settings" +#~ msgstr "Timer-Einstellungen" + +#~ msgid "Idle timeout configuration" +#~ msgstr "Konfiguration des Leerlauf-Timeouts" + +#~ msgid "Single active timer mode" +#~ msgstr "Einzelaktiver Timer-Modus" + +#~ msgid "Timer display preferences" +#~ msgstr "Einstellungen für die Timer-Anzeige" + +#~ msgid "Notification settings" +#~ msgstr "Benachrichtigungseinstellungen" + +#~ msgid "Database Management" +#~ msgstr "Datenbankverwaltung" + +#~ msgid "Create manual database backups" +#~ msgstr "Erstellen Sie manuelle Datenbanksicherungen" + +#~ msgid "View database migration status" +#~ msgstr "Status der Datenbankmigration anzeigen" + +#~ msgid "Monitor database performance" +#~ msgstr "Überwachen Sie die Datenbankleistung" + +#~ msgid "Clean up old data and logs" +#~ msgstr "Bereinigen Sie alte Daten und Protokolle" + +#~ msgid "System Monitoring" +#~ msgstr "Systemüberwachung" + +#~ msgid "View system information and health" +#~ msgstr "Systeminformationen und -zustand anzeigen" + +#~ msgid "Monitor application performance" +#~ msgstr "Überwachen Sie die Anwendungsleistung" + +#~ msgid "Review system logs and errors" +#~ msgstr "Überprüfen Sie Systemprotokolle und Fehler" + +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Mobilfreundliche Funktionen" + +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Optimiert für Telefone und Tablets" + +#~ msgid "Touch-friendly interface" +#~ msgstr "Touch-freundliche Oberfläche" + +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "Adaptive Layouts für alle Bildschirmgrößen" + +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Hoher Kontrast für Sichtbarkeit im Freien" + +#~ msgid "Mobile Navigation" +#~ msgstr "Mobile Navigation" + +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Untere Tab-Leiste für einfachen Zugriff" + +#~ msgid "Quick access to dashboard" +#~ msgstr "Schneller Zugriff auf das Dashboard" + +#~ msgid "One-tap time logging" +#~ msgstr "Zeiterfassung mit nur einem Tastendruck" + +#~ msgid "Mobile-optimized reports" +#~ msgstr "Für Mobilgeräte optimierte Berichte" + +#~ msgid "Installation" +#~ msgstr "Installation" + +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Öffnen Sie TimeTracker in Ihrem mobilen Browser" + +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Suchen Sie nach der Option „Zum Startbildschirm hinzufügen“." + +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Befolgen Sie die browserspezifischen Installationsanweisungen" + +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Starten Sie von Ihrem Startbildschirm aus wie eine native App" + +#~ msgid "PWA Benefits" +#~ msgstr "PWA-Vorteile" + +#~ msgid "Offline capability for basic functions" +#~ msgstr "Offline-Fähigkeit für Grundfunktionen" + +#~ msgid "Faster loading times" +#~ msgstr "Schnellere Ladezeiten" + +#~ msgid "Native app-like experience" +#~ msgstr "Natives App-ähnliches Erlebnis" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Push-Benachrichtigungen (sofern unterstützt)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" +#~ "TimeTracker bietet eine REST-API für " +#~ "die Integration mit anderen Tools, " +#~ "mobilen Apps und benutzerdefinierten " +#~ "Workflows." + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "Interaktive Swagger-UI unter" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "OpenAPI 3.0-Spezifikation unter" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "Bearer-Token- oder X-API-Key-Authentifizierung" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "Projekte, Zeiteinträge, Aufgaben, Kunden, Rechnungen und mehr" + +#~ msgid "Open API Documentation" +#~ msgstr "API-Dokumentation öffnen" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Fehlerbehebung und FAQ" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "Was passiert, wenn ich vergesse, meinen Timer zu stoppen?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "Der Timer läuft weiter, bis Sie " +#~ "ihn manuell stoppen. Sie können Ihren" +#~ " aktiven Timer auf dem Dashboard und" +#~ " der Timer-Seite sehen. Der Timer " +#~ "bleibt bestehen, auch wenn Sie Ihren " +#~ "Browser schließen oder Ihr Gerät neu " +#~ "starten. Wenn die Leerlauferkennung aktiviert" +#~ " ist, kann der Timer nach dem " +#~ "konfigurierten Timeout-Zeitraum automatisch " +#~ "pausieren." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "Kann ich Zeiteinträge bearbeiten, nachdem sie erstellt wurden?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Ja, Sie können jeden Zeiteintrag " +#~ "bearbeiten, indem Sie in der " +#~ "Zeiteintragsliste auf die Schaltfläche " +#~ "„Bearbeiten“ klicken. Sie können das " +#~ "Projekt, die Start-/Endzeiten, Notizen, Tags," +#~ " den Abrechnungsstatus und die " +#~ "Aufgabenzuweisung ändern. Administratoren können " +#~ "alle Zeiteinträge bearbeiten, während normale" +#~ " Benutzer nur ihre eigenen Einträge " +#~ "bearbeiten können." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "Wie erfasse ich die Zeit für mehrere Projekte?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "Standardmäßig können Sie jeweils nur " +#~ "einen aktiven Timer haben. Um Projekte" +#~ " zu wechseln, stoppen Sie Ihren " +#~ "aktuellen Timer und starten Sie einen" +#~ " neuen für das andere Projekt. " +#~ "Alternativ können Sie manuelle Zeiteinträge" +#~ " für vergangene Arbeiten erstellen oder " +#~ "das System so konfigurieren, dass " +#~ "mehrere aktive Timer zugelassen sind " +#~ "(Administratoreinstellung)." + +#~ msgid "How do I export my time data?" +#~ msgstr "Wie exportiere ich meine Zeitdaten?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Gehen Sie zur Seite „Berichte“ und " +#~ "verwenden Sie die Funktion „CSV " +#~ "exportieren“. Sie können Filter anwenden, " +#~ "um bestimmte Daten zu exportieren, oder" +#~ " alle Zeiteinträge exportieren. Die CSV-" +#~ "Datei enthält alle Details zu den " +#~ "Zeiteinträgen und kann in Excel oder " +#~ "anderen Tabellenkalkulationsprogrammen geöffnet " +#~ "werden. Sie können das Trennzeichen auch" +#~ " für verschiedene regionale Standards " +#~ "konfigurieren." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "" +#~ "Was ist der Unterschied zwischen " +#~ "abrechenbarer und nicht abrechenbarer Zeit?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "Die abrechenbare Zeit wird zu " +#~ "Abrechnungszwecken für Kunden erfasst und " +#~ "kann mit einem Stundensatz verknüpft " +#~ "sein. Nicht abrechenbare Zeit gilt für" +#~ " interne Arbeit, die den Kunden nicht" +#~ " in Rechnung gestellt wird. Sie " +#~ "können einzelne Zeiteinträge als abrechenbar" +#~ " oder nicht abrechenbar markieren und " +#~ "Projekte können standardmäßige abrechenbare " +#~ "Einstellungen haben. Diese Unterscheidung ist" +#~ " für eine genaue Rechnungsstellung und " +#~ "Rentabilitätsanalyse von entscheidender Bedeutung." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "Wie erstelle ich aus meinen Zeiteinträgen eine Rechnung?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Navigieren Sie zu Rechnungen → Rechnung" +#~ " erstellen, richten Sie die Kunden- " +#~ "und Projektdetails ein und verwenden Sie" +#~ " dann „Aus Zeiteinträgen generieren“, um" +#~ " automatisch Rechnungspositionen aus Ihrer " +#~ "erfassten Zeit zu erstellen. Sie können" +#~ " nach Datumsbereich und Projekt filtern " +#~ "und das System gruppiert Zeiteinträge " +#~ "intelligent. Überprüfen Sie die generierten" +#~ " Elemente und exportieren Sie sie als" +#~ " professionelles PDF." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "Kann ich TimeTracker auf meinem Mobilgerät verwenden?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "Ja! TimeTracker reagiert vollständig und " +#~ "funktioniert hervorragend auf Mobilgeräten. " +#~ "Sie können es als Progressive Web " +#~ "App (PWA) für ein natives Erlebnis " +#~ "installieren. Die mobile Benutzeroberfläche " +#~ "umfasst eine untere Tab-Leiste für " +#~ "einfache Navigation und berührungsoptimierte " +#~ "Steuerelemente für die Zeiterfassung " +#~ "unterwegs." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "Wie verwende ich die Befehlspalette und Tastaturkürzel?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Drücken Sie die Fragezeichentaste (?), " +#~ "um die Befehlspalette zu öffnen. Von " +#~ "dort aus können Sie eingeben, um " +#~ "nach einer Aktion oder einem " +#~ "Navigationsziel zu suchen. Verwenden Sie " +#~ "Tastatursequenzen wie „g d“ für " +#~ "Dashboard, „g p“ für Projekte oder " +#~ "„n e“ für Neuer Eintrag. Umschalt+ " +#~ "drücken? um alle verfügbaren Verknüpfungen " +#~ "anzuzeigen. Drücken Sie Strg+K (oder " +#~ "Befehl+K auf dem Mac) für eine " +#~ "schnelle Suche." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "Wie erstelle ich Massenzeiteinträge für mehrere Tage?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Navigieren Sie zu Arbeit → " +#~ "Massenzeiteintrag. Wählen Sie Ihr Projekt " +#~ "aus, wählen Sie einen Datumsbereich, " +#~ "legen Sie Ihre täglichen Start- und " +#~ "Endzeiten fest und überspringen Sie " +#~ "optional Wochenenden. Das System erstellt " +#~ "für jeden Tag im Bereich identische " +#~ "Zeiteinträge. Dies eignet sich perfekt " +#~ "zum Protokollieren regelmäßiger Arbeitsmuster " +#~ "oder zum Ausfüllen vergangener Zeiten, " +#~ "in denen Sie regelmäßig gearbeitet " +#~ "haben." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "Was sind Zeiterfassungsvorlagen und wie verwende ich sie?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "Mit Zeiteintragsvorlagen können Sie häufig " +#~ "verwendete Zeiteintragskonfigurationen speichern. " +#~ "Wenn Sie einen manuellen Zeiteintrag " +#~ "erstellen, aktivieren Sie „Als Vorlage " +#~ "speichern“, um das Projekt, die Aufgabe" +#~ " und die Notizen zu speichern. " +#~ "Später, wenn Sie neue Einträge " +#~ "erstellen, können Sie eine Vorlage " +#~ "auswählen, um diese Details schnell " +#~ "einzugeben. Vorlagen sind persönlich und " +#~ "nur für Sie sichtbar." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "Wie verfolge ich Ausgaben und füge sie zu Rechnungen hinzu?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Gehen Sie zu Ausgaben → Neue " +#~ "Ausgabe, um Geschäftsausgaben zu erfassen. " +#~ "Laden Sie Belegbilder hoch, kategorisieren " +#~ "Sie die Ausgabe und markieren Sie " +#~ "sie bei Bedarf als abrechenbar. Bei " +#~ "der Rechnungserstellung können Sie diese " +#~ "Ausgaben als Einzelposten einbeziehen. " +#~ "Ausgaben unterstützen Genehmigungsworkflows und " +#~ "die Nachverfolgung von Erstattungen und " +#~ "können mit bestimmten Projekten verknüpft " +#~ "werden." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "Kann ich Markdown in Beschreibungen verwenden?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "Ja! Projekt- und Aufgabenbeschreibungen " +#~ "unterstützen die vollständige Markdown-" +#~ "Formatierung. Sie können Fettschrift, " +#~ "Kursivschrift, Überschriften, Listen, Links, " +#~ "Codeblöcke, Tabellen und Bilder verwenden. " +#~ "Dadurch können Sie direkt in Ihren " +#~ "Projekten und Aufgaben umfangreiche, gut " +#~ "formatierte Dokumentationen erstellen. Der " +#~ "Markdown-Editor verfügt über einen " +#~ "Vorschaumodus und unterstützt dunkle Themen." + +#~ msgid "Where can I get additional help?" +#~ msgstr "Wo bekomme ich zusätzliche Hilfe?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" +#~ "Diese Hilfeseite behandelt die häufigsten " +#~ "Fragen und Funktionen. Für die " +#~ "vollständige Dokumentation:" + +#~ msgid "Complete Documentation Index" +#~ msgstr "Vollständiger Dokumentationsindex" + +#~ msgid "Getting Started Guide" +#~ msgstr "Erste-Schritte-Anleitung" + +#~ msgid "Product Overview & Features" +#~ msgstr "Produktübersicht & Funktionen" + +#~ msgid "Changelog" +#~ msgstr "Änderungsprotokoll" + +#~ msgid "Report issues and request features on" +#~ msgstr "Melden Sie Probleme und fordern Sie Funktionen an" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "Als Administrator können Sie auf " +#~ "zusätzliche Systeminformationen und Diagnosen " +#~ "zugreifen" + +#~ msgid "section." +#~ msgstr "Abschnitt." + +#~ msgid "Admin documentation:" +#~ msgstr "Admin-Dokumentation:" + +#~ msgid "Administrator Guide" +#~ msgstr "Administratorhandbuch" + +#~ msgid "Still Need Help?" +#~ msgstr "Brauchen Sie noch Hilfe?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "" +#~ "Sie können nicht finden, was Sie " +#~ "suchen? Hier sind zusätzliche Ressourcen:" + +#~ msgid "Complete Documentation" +#~ msgstr "Vollständige Dokumentation" + +#~ msgid "Documentation Index" +#~ msgstr "Dokumentationsindex" + +#~ msgid "Getting Started" +#~ msgstr "Erste Schritte" + +#~ msgid "Feature Guides" +#~ msgstr "Funktionsanleitungen" + +#~ msgid "Admin Documentation" +#~ msgstr "Admin-Dokumentation" + +#~ msgid "GitHub Repository" +#~ msgstr "GitHub-Repository" + +#~ msgid "Report Issue" +#~ msgstr "Problem melden" + +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" +#~ "Spenden und Lizenzen finanzieren die " +#~ "Entwicklung; nichts ist hinter einer " +#~ "Bezahlschranke." + +#~ msgid "Open support" +#~ msgstr "Support öffnen" + +#~ msgid "Search Results" +#~ msgstr "Suchergebnisse" + +#~ msgid "Search notes or tags" +#~ msgstr "Suchen Sie nach Notizen oder Tags" + +#~ msgid "Results" +#~ msgstr "Ergebnisse" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie diesen " +#~ "Zeiteintrag löschen möchten? Diese Aktion " +#~ "kann nicht rückgängig gemacht werden." + +#~ msgid "No results found" +#~ msgstr "Keine Ergebnisse gefunden" + +#~ msgid "Try a different query or check your spelling." +#~ msgstr "" +#~ "Versuchen Sie es mit einer anderen " +#~ "Abfrage oder überprüfen Sie Ihre " +#~ "Rechtschreibung." + +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "z. B. Kundenbesprechung, Besuch vor Ort" + +#~ msgid "Additional details..." +#~ msgstr "Weitere Details..." + +#~ msgid "e.g., Office, Home" +#~ msgstr "z. B. Büro, Zuhause" + +#~ msgid "e.g., Client site, Airport" +#~ msgstr "z. B. Kundenstandort, Flughafen" + +#~ msgid "e.g., 12345" +#~ msgstr "z. B. 12345" + +#~ msgid "e.g., 12400" +#~ msgstr "z. B. 12400" + +#~ msgid "e.g., VW Golf" +#~ msgstr "z.B. VW Golf" + +#~ msgid "e.g., ABC-123" +#~ msgstr "z. B. ABC-123" + +#~ msgid "GPS Mileage Tracking" +#~ msgstr "GPS-Kilometererfassung" + +#~ msgid "Back to Mileage" +#~ msgstr "Zurück zur Kilometererfassung" + +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" +#~ "Verwenden Sie Ihr Geräte-GPS, um " +#~ "Routenpunkte aufzuzeichnen, Entfernungen zu " +#~ "berechnen und die Strecke in eine " +#~ "Ausgabe umzuwandeln." + +#~ msgid "Rate per km" +#~ msgstr "Satz pro km" + +#~ msgid "Add Point" +#~ msgstr "Punkt hinzufügen" + +#~ msgid "Create Expense from Track" +#~ msgstr "Ausgabe aus Strecke erstellen" + +#~ msgid "Track ID" +#~ msgstr "Strecken-ID" + +#~ msgid "Idle" +#~ msgstr "Inaktiv" + +#~ msgid "Distance (km)" +#~ msgstr "Entfernung (km)" + +#~ msgid "Distance (miles)" +#~ msgstr "Entfernung (Meilen)" + +#~ msgid "Tracking" +#~ msgstr "Wird erfasst" + +#~ msgid "GPS tracking started" +#~ msgstr "GPS-Erfassung gestartet" + +#~ msgid "Track point added" +#~ msgstr "Streckenpunkt hinzugefügt" + +#~ msgid "GPS tracking stopped" +#~ msgstr "GPS-Erfassung gestoppt" + +#~ msgid "Expense created" +#~ msgstr "Ausgabe erstellt" + +#~ msgid "Filter Mileage" +#~ msgstr "Kilometerstand filtern" + +#~ msgid "Exports use current filters" +#~ msgstr "Exporte verwenden aktuelle Filter" + +#~ msgid "Purpose, location..." +#~ msgstr "Zweck, Ort..." + +#~ msgid "Optional approval notes..." +#~ msgstr "Optionale Genehmigungshinweise..." + +#~ msgid "Rejection reason (required)" +#~ msgstr "Ablehnungsgrund (erforderlich)" + +#~ msgid "More navigation" +#~ msgstr "Weitere Navigation" + +#~ msgid "Main" +#~ msgstr "Haupt" + +#~ msgid "Type a command or search..." +#~ msgstr "Geben Sie einen Befehl ein oder suchen Sie..." + +#~ msgid "Configure Payment Gateway" +#~ msgstr "Zahlungsgateway konfigurieren" + +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "Zahlungsabwicklung für Online-Rechnungszahlungen einrichten" + +#~ msgid "Back to Gateways" +#~ msgstr "Zurück zu Gateways" + +#~ msgid "Gateway Name" +#~ msgstr "Gateway-Name" + +#~ msgid "e.g., Stripe Production" +#~ msgstr "z. B. Stripe Produktion" + +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "Ein beschreibender Name für diese Gateway-Konfiguration" + +#~ msgid "Select provider..." +#~ msgstr "Anbieter auswählen..." + +#~ msgid "Stripe Configuration" +#~ msgstr "Stripe-Konfiguration" + +#~ msgid "Your Stripe secret key" +#~ msgstr "Ihr Stripe-Secret-Schlüssel" + +#~ msgid "Publishable Key" +#~ msgstr "Veröffentlichbarer Schlüssel" + +#~ msgid "Your Stripe publishable key" +#~ msgstr "Ihr Stripe-veröffentlichbarer Schlüssel" + +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "Webhook-Signing-Secret zur Verifizierung von Webhook-Ereignissen" + +#~ msgid "PayPal Configuration" +#~ msgstr "PayPal-Konfiguration" + +#~ msgid "Test Mode" +#~ msgstr "Testmodus" + +#~ msgid "Enable test mode for development and testing" +#~ msgstr "Testmodus für Entwicklung und Tests aktivieren" + +#~ msgid "Save Gateway" +#~ msgstr "Gateway speichern" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Production" +#~ msgstr "Produktion" + +#~ msgid "Add Gateway" +#~ msgstr "Gateway hinzufügen" + +#~ msgid "No Payment Gateways" +#~ msgstr "Keine Zahlungsgateways" + +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" +#~ "Konfigurieren Sie ein Zahlungsgateway, um " +#~ "Online-Rechnungszahlungen zu ermöglichen." + +#~ msgid "Amount Due" +#~ msgstr "Fälliger Betrag" + +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" +#~ "Sie werden auf eine sichere " +#~ "Zahlungsseite weitergeleitet, um Ihre Zahlung" +#~ " abzuschließen." + +#~ msgid "Continue to Payment" +#~ msgstr "Weiter zur Zahlung" + +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" +#~ "Zahlungsgateway noch nicht unterstützt. Bitte" +#~ " wenden Sie sich an den Support." + +#~ msgid "Record New Payment" +#~ msgstr "Neue Zahlung erfassen" + +#~ msgid "Total Payments" +#~ msgstr "Gesamtzahlungen" + +#~ msgid "Gateway Fees" +#~ msgstr "Gateway-Gebühren" + +#~ msgid "Filter Payments" +#~ msgstr "Zahlungen filtern" + +#~ msgid "ID" +#~ msgstr "ID" + +#~ msgid "Delete Selected Payments" +#~ msgstr "Ausgewählte Zahlungen löschen" + +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Status für ausgewählte Zahlungen ändern" + +#~ msgid "Related Invoice" +#~ msgstr "Zugehörige Rechnung" + +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "z.B. Geschäftsreise nach Berlin" + +#~ msgid "e.g., DE, US, GB" +#~ msgstr "z. B. DE, US, GB" + +#~ msgid "e.g., Berlin" +#~ msgstr "z.B. Berlin" + +#~ msgid "Filter Claims" +#~ msgstr "Ansprüche filtern" + +#~ msgid "Delete Selected Claims" +#~ msgstr "Ausgewählte Ansprüche löschen" + +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Status für ausgewählte Ansprüche ändern" + +#~ msgid "Additional notes about this rate..." +#~ msgstr "Zusätzliche Hinweise zu diesem Tarif..." + +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "Sind Sie sicher, dass Sie diesen Tagessatz löschen möchten?" + +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Tagessatz löschen" + +#~ msgid "Create Project Template" +#~ msgstr "Projektvorlage erstellen" + +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" +#~ "Eine wiederverwendbare Vorlage für die " +#~ "schnelle Projekteinrichtung erstellen" + +#~ msgid "Back to Templates" +#~ msgstr "Zurück zu Vorlagen" + +#~ msgid "e.g., Web Development Project" +#~ msgstr "z. B. Webentwicklungsprojekt" + +#~ msgid "Describe what this template is used for..." +#~ msgstr "Beschreiben Sie, wofür diese Vorlage verwendet wird..." + +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "z. B. Webentwicklung, Marketing" + +#~ msgid "Comma-separated tags" +#~ msgstr "Kommagetrennte Tags" + +#~ msgid "Project Configuration" +#~ msgstr "Projektkonfiguration" + +#~ msgid "Billable Project" +#~ msgstr "Abrechenbares Projekt" + +#~ msgid "Estimated Hours" +#~ msgstr "Geschätzte Stunden" + +#~ msgid "Budget Amount" +#~ msgstr "Budgetbetrag" + +#~ msgid "Template Tasks" +#~ msgstr "Vorlagenaufgaben" + +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" +#~ "Aufgaben werden erstellt, wenn ein " +#~ "Projekt aus dieser Vorlage erstellt wird" + +#~ msgid "Task Name" +#~ msgstr "Aufgabenname" + +#~ msgid "Add Task" +#~ msgstr "Aufgabe hinzufügen" + +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "Diese Vorlage öffentlich machen (für alle Benutzer sichtbar)" + +#~ msgid "Create Project from Template" +#~ msgstr "Projekt aus Vorlage erstellen" + +#~ msgid "Using template:" +#~ msgstr "Vorlage wird verwendet:" + +#~ msgid "Back to Template" +#~ msgstr "Zurück zur Vorlage" + +#~ msgid "Leave empty to use template name" +#~ msgstr "Leer lassen, um den Vorlagennamen zu verwenden" + +#~ msgid "Override Settings (Optional)" +#~ msgstr "Einstellungen überschreiben (Optional)" + +#~ msgid "Project Code" +#~ msgstr "Projektcode" + +#~ msgid "The following tasks will be created:" +#~ msgstr "Die folgenden Aufgaben werden erstellt:" + +#~ msgid "Create Project" +#~ msgstr "Projekt erstellen" + +#~ msgid "Edit Project Template" +#~ msgstr "Projektvorlage bearbeiten" + +#~ msgid "Remove Task" +#~ msgstr "Aufgabe entfernen" + +#~ msgid "Show Public Templates" +#~ msgstr "Öffentliche Vorlagen anzeigen" + +#~ msgid "uses" +#~ msgstr "verwendet" + +#~ msgid "Public" +#~ msgstr "Öffentlich" + +#~ msgid "No Templates Found" +#~ msgstr "Keine Vorlagen gefunden" + +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" +#~ "Erstellen Sie Ihre erste Projektvorlage, " +#~ "um neue Projekte schnell mit " +#~ "vorkonfigurierten Einstellungen und Aufgaben " +#~ "einzurichten." + +#~ msgid "Project Template" +#~ msgstr "Projektvorlage" + +#~ msgid "Template Info" +#~ msgstr "Vorlageninformationen" + +#~ msgid "Usage Count" +#~ msgstr "Verwendungsanzahl" + +#~ msgid "Last Used" +#~ msgstr "Zuletzt verwendet" + +#~ msgid "Kanban board columns" +#~ msgstr "Kanban-Board-Spalten" + +#~ msgid "Add task to this column" +#~ msgstr "Aufgabe zu dieser Spalte hinzufügen" + +#~ msgid "Edit swimlane" +#~ msgstr "Swimlane bearbeiten" + +#~ msgid "Column" +#~ msgstr "Spalte" + +#~ msgid "List View" +#~ msgstr "Listenansicht" + +#~ msgid "Grid View" +#~ msgstr "Rasteransicht" + +#~ msgid "Rate" +#~ msgstr "Satz" + +#~ msgid "Edit Project" +#~ msgstr "Projekt bearbeiten" + +#~ msgid "Add Cost" +#~ msgstr "Kosten hinzufügen" + +#~ msgid "Add Cost to Project" +#~ msgstr "Kosten zum Projekt hinzufügen" + +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "z. B. Reisekosten zum Kundensitz" + +#~ msgid "Brief description of the cost" +#~ msgstr "Kurze Beschreibung der Kosten" + +#~ msgid "Select category" +#~ msgstr "Kategorie auswählen" + +#~ msgid "Materials" +#~ msgstr "Materialien" + +#~ msgid "Software/Licenses" +#~ msgstr "Software/Lizenzen" + +#~ msgid "Additional details about this cost" +#~ msgstr "Weitere Details zu diesen Kosten" + +#~ msgid "Billable to client" +#~ msgstr "Dem Kunden berechenbar" + +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "Wenn aktiviert, werden diese Kosten in Rechnungen einbezogen" + +#~ msgid "Add Extra Good" +#~ msgstr "Fügen Sie Extragut hinzu" + +#~ msgid "Add a product or service to" +#~ msgstr "Fügen Sie ein Produkt oder eine Dienstleistung hinzu" + +#~ msgid "Back to Project" +#~ msgstr "Zurück zum Projekt" + +#~ msgid "SKU/Product Code" +#~ msgstr "SKU/Produktcode" + +#~ msgid "What happens when you archive a project?" +#~ msgstr "Was passiert, wenn Sie ein Projekt archivieren?" + +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "Das Projekt wird aus den aktiven Projektlisten ausgeblendet" + +#~ msgid "No new time entries can be added to this project" +#~ msgstr "Zu diesem Projekt können keine neuen Zeiteinträge hinzugefügt werden" + +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "Vorhandene Daten- und Zeiteinträge bleiben erhalten" + +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "Sie können das Projekt später bei Bedarf aus der Archivierung entfernen" + +#~ msgid "Reason for Archiving" +#~ msgstr "Grund für die Archivierung" + +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "z. B. Projekt abgeschlossen, Kundenvertrag " +#~ "beendet, Projekt abgebrochen usw." + +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "Das Hinzufügen einer Begründung hilft " +#~ "bei der Projektorganisation und bei der" +#~ " späteren Referenzierung." + +#~ msgid "Quick Select" +#~ msgstr "Schnellauswahl" + +#~ msgid "Project completed successfully" +#~ msgstr "Projekt erfolgreich abgeschlossen" + +#~ msgid "Project Completed" +#~ msgstr "Projekt abgeschlossen" + +#~ msgid "Client contract ended" +#~ msgstr "Kundenvertrag beendet" + +#~ msgid "Contract Ended" +#~ msgstr "Vertrag beendet" + +#~ msgid "Project cancelled by client" +#~ msgstr "Projekt vom Kunden abgebrochen" + +#~ msgid "Project on hold indefinitely" +#~ msgstr "Projekt auf unbestimmte Zeit ausgesetzt" + +#~ msgid "On Hold" +#~ msgstr "In der Warteschleife" + +#~ msgid "Maintenance period ended" +#~ msgstr "Der Wartungszeitraum ist beendet" + +#~ msgid "Maintenance Ended" +#~ msgstr "Wartung beendet" + +#~ msgid "Archive Project" +#~ msgstr "Archivprojekt" + +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" +#~ "Richten Sie ein neues Projekt ein, " +#~ "um Ihre Arbeit zu organisieren und " +#~ "die Zeit effektiv zu erfassen" + +#~ msgid "Enter a descriptive project name" +#~ msgstr "Geben Sie einen beschreibenden Projektnamen ein" + +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "" +#~ "Wählen Sie einen klaren, beschreibenden " +#~ "Namen, der den Projektumfang erläutert" + +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Kurzcode, z. B. ABC" + +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Optional: Kurzes Tag, das auf Kanban-Karten angezeigt wird" + +#~ msgid "Create new client" +#~ msgstr "Neuen Kunden erstellen" + +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "" +#~ "Geben Sie detaillierte Informationen über " +#~ "das Projekt, die Ziele und die zu" +#~ " erbringenden Leistungen an ..." + +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" +#~ "Optional: Fügen Sie Kontext, Ziele oder" +#~ " spezifische Anforderungen für das Projekt" +#~ " hinzu" + +#~ msgid "Enable billing for this project" +#~ msgstr "Aktivieren Sie die Abrechnung für dieses Projekt" + +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "Für nicht abrechenbare Projekte leer lassen" + +#~ msgid "PO number, contract reference, etc." +#~ msgstr "Bestellnummer, Vertragsreferenz usw." + +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" +#~ "Optional: Fügen Sie zu Abrechnungszwecken " +#~ "eine Referenznummer oder Kennung hinzu" + +#~ msgid "e.g. 10000.00" +#~ msgstr "z.B. 10000,00" + +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "" +#~ "Optional: Legen Sie ein Gesamtprojektbudget" +#~ " fest, um die Ausgaben zu überwachen" + +#~ msgid "Alert Threshold (%)" +#~ msgstr "Alarmschwelle (%)" + +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "" +#~ "Benachrichtigen, wenn das verbrauchte Budget" +#~ " diesen Schwellenwert überschreitet" + +#~ msgid "Gantt color" +#~ msgstr "Gantt-Farbe" + +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" +#~ "Optional: Farbe für dieses Projekt im" +#~ " Gantt-Diagramm. Wählen oder geben " +#~ "Sie einen Hex-Code ein (z. B. " +#~ "#3b82f6)." + +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" +#~ "Diese benutzerdefinierten Felder sind global" +#~ " definiert und für alle Projekte " +#~ "verfügbar." + +#~ msgid "Project Creation Tips" +#~ msgstr "Tipps zur Projekterstellung" + +#~ msgid "Clear Naming" +#~ msgstr "Klare Benennung" + +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "" +#~ "Verwenden Sie beschreibende Namen, die " +#~ "den Zweck des Projekts klar angeben" + +#~ msgid "Billing Setup" +#~ msgstr "Abrechnungseinrichtung" + +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Legen Sie angemessene Stundensätze basierend" +#~ " auf der Projektkomplexität und dem " +#~ "Kundenbudget fest" + +#~ msgid "Detailed Description" +#~ msgstr "Detaillierte Beschreibung" + +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "Beziehen Sie Projektziele, Ergebnisse und Schlüsselanforderungen ein" + +#~ msgid "Client Selection" +#~ msgstr "Kundenauswahl" + +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "" +#~ "Wählen Sie den richtigen Kunden, um " +#~ "eine ordnungsgemäße Projektorganisation " +#~ "sicherzustellen" + +#~ msgid "Creating..." +#~ msgstr "Erstellen..." + +#~ msgid "Could not create client. Please try again." +#~ msgstr "Client konnte nicht erstellt werden. Bitte versuchen Sie es erneut." + +#~ msgid "Client created" +#~ msgstr "Kunde erstellt" + +#~ msgid "Network error while creating client" +#~ msgstr "Netzwerkfehler beim Erstellen des Clients" + +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "Projekt-Dashboard und -Analyse" + +#~ msgid "Entries Overview" +#~ msgstr "Übersicht der Einträge" + +#~ msgid "Budget Analysis" +#~ msgstr "Budgetanalyse" + +#~ msgid "All Time" +#~ msgstr "Alle Zeit" + +#~ msgid "Last 7 Days" +#~ msgstr "Letzte 7 Tage" + +#~ msgid "Last 30 Days" +#~ msgstr "Letzte 30 Tage" + +#~ msgid "Last 3 Months" +#~ msgstr "Letzte 3 Monate" + +#~ msgid "Last Year" +#~ msgstr "Letztes Jahr" + +#~ msgid "estimated" +#~ msgstr "geschätzt" + +#~ msgid "Budget Used" +#~ msgstr "Verwendetes Budget" + +#~ msgid "of budget" +#~ msgstr "des Budgets" + +#~ msgid "Tasks Complete" +#~ msgstr "Aufgaben abgeschlossen" + +#~ msgid "completion" +#~ msgstr "Fertigstellung" + +#~ msgid "Team Members" +#~ msgstr "Teammitglieder" + +#~ msgid "contributing" +#~ msgstr "beitragen" + +#~ msgid "Budget vs. Actual" +#~ msgstr "Budget vs. Ist" + +#~ msgid "No budget set for this project" +#~ msgstr "Für dieses Projekt ist kein Budget festgelegt" + +#~ msgid "Task Status Distribution" +#~ msgstr "Verteilung des Aufgabenstatus" + +#~ msgid "No tasks created yet" +#~ msgstr "Es wurden noch keine Aufgaben erstellt" + +#~ msgid "Team Member Contributions" +#~ msgstr "Beiträge der Teammitglieder" + +#~ msgid "No time entries recorded yet" +#~ msgstr "Es wurden noch keine Zeiteinträge erfasst" + +#~ msgid "Time Tracking Timeline" +#~ msgstr "Zeiterfassungs-Zeitleiste" + +#~ msgid "Select a time period to view timeline" +#~ msgstr "Wählen Sie einen Zeitraum aus, um die Zeitleiste anzuzeigen" + +#~ msgid "Team Member Details" +#~ msgstr "Details zu den Teammitgliedern" + +#~ msgid "tasks" +#~ msgstr "Aufgaben" + +#~ msgid "No team members have logged time yet" +#~ msgstr "Es hat noch kein Teammitglied Zeit protokolliert" + +#~ msgid "Attention Required" +#~ msgstr "Aufmerksamkeit erforderlich" + +#~ msgid "task(s) are overdue" +#~ msgstr "Aufgabe(n) sind überfällig" + +#~ msgid "Edit Cost" +#~ msgstr "Kosten bearbeiten" + +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" +#~ "Diese Kosten wurden bereits in Rechnung" +#~ " gestellt. Änderungen können bestehende " +#~ "Rechnungen beeinflussen." + +#~ msgid "Update Cost" +#~ msgstr "Kosten aktualisieren" + +#~ msgid "Edit Extra Good" +#~ msgstr "Besonders gut bearbeiten" + +#~ msgid "Manage products and services for this project" +#~ msgstr "Verwalten Sie Produkte und Dienstleistungen für dieses Projekt" + +#~ msgid "Total Goods" +#~ msgstr "Gesamtwaren" + +#~ msgid "Billable Amount" +#~ msgstr "Abrechnungsfähiger Betrag" + +#~ msgid "Categories" +#~ msgstr "Kategorien" + +#~ msgid "Invoiced" +#~ msgstr "In Rechnung gestellt" + +#~ msgid "Non-billable" +#~ msgstr "Nicht abrechenbar" + +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Sind Sie sicher, dass Sie dieses Extragut löschen möchten?" + +#~ msgid "Delete Extra Good" +#~ msgstr "Extra Good löschen" + +#~ msgid "No extra goods found for this project" +#~ msgstr "Für dieses Projekt wurden keine zusätzlichen Waren gefunden" + +#~ msgid "Add Your First Good" +#~ msgstr "Fügen Sie Ihr erstes Gut hinzu" + +#~ msgid "Breakdown by Category" +#~ msgstr "Aufschlüsselung nach Kategorie" + +#~ msgid "item(s)" +#~ msgstr "Artikel)" + +#~ msgid "Filter Projects" +#~ msgstr "Projekte filtern" + +#~ msgid "Time Entries Overview" +#~ msgstr "Übersicht der Zeiteinträge" + +#~ msgid "Days" +#~ msgstr "Tage" + +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" +#~ "Keine Zeiteinträge für dieses Projekt im" +#~ " ausgewählten Zeitraum gefunden." + +#~ msgid "Mark project as Inactive?" +#~ msgstr "Projekt als inaktiv markieren?" + +#~ msgid "Change Project Status" +#~ msgstr "Projektstatus ändern" + +#~ msgid "Activate project?" +#~ msgstr "Projekt aktivieren?" + +#~ msgid "Activate Project" +#~ msgstr "Projekt aktivieren" + +#~ msgid "Archive" +#~ msgstr "Archiv" + +#~ msgid "Unarchive project?" +#~ msgstr "Projekt dearchivieren?" + +#~ msgid "Unarchive Project" +#~ msgstr "Projekt dearchivieren" + +#~ msgid "Unarchive" +#~ msgstr "Dearchivieren" + +#~ msgid "Delete Project" +#~ msgstr "Projekt löschen" + +#~ msgid "Archive Information" +#~ msgstr "Archivinformationen" + +#~ msgid "Archived on:" +#~ msgstr "Archiviert am:" + +#~ msgid "Archived by:" +#~ msgstr "Archiviert von:" + +#~ msgid "Reason:" +#~ msgstr "Grund:" + +#~ msgid "Quick Links" +#~ msgstr "Schnelllinks" + +#~ msgid "Budget Overview" +#~ msgstr "Budgetübersicht" + +#~ msgid "Over" +#~ msgstr "Über" + +#~ msgid "View Full Budget Analysis" +#~ msgstr "Vollständige Budgetanalyse anzeigen" + +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "z. B. Vertrag, Spezifikation usw." + +#~ msgid "Tasks for this project" +#~ msgstr "Aufgaben für dieses Projekt" + +#~ msgid "Due" +#~ msgstr "Fällig" + +#~ msgid "Estimated" +#~ msgstr "Geschätzt" + +#~ msgid "No tasks for this project." +#~ msgstr "Keine Aufgaben für dieses Projekt." + +#~ msgid "Move up" +#~ msgstr "Nach oben" + +#~ msgid "Move down" +#~ msgstr "Nach unten" + +#~ msgid "Manual entry" +#~ msgstr "Manuelle Eingabe" + +#~ msgid "From stock" +#~ msgstr "Aus Lagerbestand" + +#~ msgid "Duplicate" +#~ msgstr "Duplikat" + +#~ msgid "Mark as Sent" +#~ msgstr "Als gesendet markieren" + +#~ msgid "Accepted" +#~ msgstr "Akzeptiert" + +#~ msgid "Create Your First Quote" +#~ msgstr "Erstellen Sie Ihr erstes Angebot" + +#~ msgid "Learn More" +#~ msgstr "Erfahren Sie mehr" + +#~ msgid "Back to Quote" +#~ msgstr "Zurück zum Angebot" + +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" +#~ "Wenn Sie dieses Angebot annehmen, wird" +#~ " ein neues Projekt mit dem Budget " +#~ "aus dem Angebot erstellt." + +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "Das Projekt wird mit dem Budget aus dem Angebot erstellt" + +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Angebot annehmen und Projekt erstellen" + +#~ msgid "Create Quote" +#~ msgstr "Angebot erstellen" + +#~ msgid "Quote title" +#~ msgstr "Titel des Zitats" + +#~ msgid "Quote description" +#~ msgstr "Angebotsbeschreibung" + +#~ msgid "Quote line items" +#~ msgstr "Angebotspositionen" + +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "Dienstleistungen, Arbeit und Katalogpositionen" + +#~ msgid "Add line" +#~ msgstr "Zeile hinzufügen" + +#~ msgid "Line type" +#~ msgstr "Zeilentyp" + +#~ msgid "Stock" +#~ msgstr "Lagerbestand" + +#~ msgid "Line items subtotal" +#~ msgstr "Zwischensumme der Positionen" + +#~ msgid "Costs" +#~ msgstr "Kosten" + +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "Einmalige Kosten (z. B. Reise, Materialien)" + +#~ msgid "Add cost" +#~ msgstr "Kosten hinzufügen" + +#~ msgid "Costs subtotal" +#~ msgstr "Kostenzwischensumme" + +#~ msgid "Extra goods" +#~ msgstr "Zusätzliche Waren" + +#~ msgid "Products, licenses, hardware" +#~ msgstr "Produkte, Lizenzen, Hardware" + +#~ msgid "Add good" +#~ msgstr "Ware hinzufügen" + +#~ msgid "Goods subtotal" +#~ msgstr "Warenzwischensumme" + +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Zwischensumme (alle Angebotspositionen)" + +#~ msgid "Financial Details" +#~ msgstr "Finanzielle Details" + +#~ msgid "Select payment terms" +#~ msgstr "Zahlungsbedingungen auswählen" + +#~ msgid "Due on Receipt" +#~ msgstr "Fällig bei Erhalt" + +#~ msgid "Or enter custom payment terms" +#~ msgstr "Oder geben Sie benutzerdefinierte Zahlungsbedingungen ein" + +#~ msgid "Use custom terms" +#~ msgstr "Verwenden Sie benutzerdefinierte Begriffe" + +#~ msgid "Discount" +#~ msgstr "Rabatt" + +#~ msgid "Discount Type" +#~ msgstr "Rabattart" + +#~ msgid "No Discount" +#~ msgstr "Kein Rabatt" + +#~ msgid "Percentage (%)" +#~ msgstr "Prozentsatz (%)" + +#~ msgid "Fixed Amount" +#~ msgstr "Fester Betrag" + +#~ msgid "Discount Amount" +#~ msgstr "Rabattbetrag" + +#~ msgid "0.00" +#~ msgstr "0,00" + +#~ msgid "Coupon Code" +#~ msgstr "Gutscheincode" + +#~ msgid "Optional coupon code" +#~ msgstr "Optionaler Gutscheincode" + +#~ msgid "Discount Reason" +#~ msgstr "Rabattgrund" + +#~ msgid "Reason for discount" +#~ msgstr "Grund für den Rabatt" + +#~ msgid "Approval Workflow" +#~ msgstr "Genehmigungsworkflow" + +#~ msgid "Requires approval before sending" +#~ msgstr "Erfordert eine Genehmigung vor dem Senden" + +#~ msgid "Additional Information" +#~ msgstr "Weitere Informationen" + +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Interne Notizen (für den Kunden nicht sichtbar)" + +#~ msgid "These notes are only visible to your team" +#~ msgstr "Diese Notizen sind nur für Ihr Team sichtbar" + +#~ msgid "Terms and Conditions" +#~ msgstr "Geschäftsbedingungen" + +#~ msgid "Terms and conditions" +#~ msgstr "Geschäftsbedingungen" + +#~ msgid "These terms will be visible to the client" +#~ msgstr "Diese Bedingungen sind für den Kunden sichtbar" + +#~ msgid "Edit Quote" +#~ msgstr "Angebot bearbeiten" + +#~ msgid "Client cannot be changed" +#~ msgstr "Der Kunde kann nicht geändert werden" + +#~ msgid "Update Quote" +#~ msgstr "Angebot aktualisieren" + +#~ msgid "Total Quotes" +#~ msgstr "Gesamtquoten" + +#~ msgid "Acceptance Rate" +#~ msgstr "Akzeptanzrate" + +#~ msgid "Avg Quote Value" +#~ msgstr "Durchschnittlicher Angebotswert" + +#~ msgid "Quotes by Status" +#~ msgstr "Zitate nach Status" + +#~ msgid "Top Clients by Quotes" +#~ msgstr "Top-Kunden nach Zitaten" + +#~ msgid "Filter Quotes" +#~ msgstr "Angebote filtern" + +#~ msgid "Search quotes..." +#~ msgstr "Zitate suchen..." + +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "Sind Sie sicher, dass Sie duplizieren möchten?" + +#~ msgid "quote(s)?" +#~ msgstr "Zitate)?" + +#~ msgid "Are you sure you want to mark" +#~ msgstr "Sind Sie sicher, dass Sie markieren möchten?" + +#~ msgid "quote(s) as sent?" +#~ msgstr "Angebot(e) wie gesendet?" + +#~ msgid "QUOTE" +#~ msgstr "ZITAT" + +#~ msgid "Quote #" +#~ msgstr "Zitat #" + +#~ msgid "Quote For" +#~ msgstr "Angebot für" + +#~ msgid "Subtotal After Discount:" +#~ msgstr "Zwischensumme nach Rabatt:" + +#~ msgid "Description:" +#~ msgstr "Beschreibung:" + +#~ msgid "Subtotal After Discount" +#~ msgstr "Zwischensumme nach Rabatt" + +#~ msgid "Approval not yet requested" +#~ msgstr "Genehmigung noch nicht beantragt" + +#~ msgid "Pending approval" +#~ msgstr "Genehmigung ausstehend" + +#~ msgid "Rejected by" +#~ msgstr "Abgelehnt von" + +#~ msgid "Request Approval Again" +#~ msgstr "Bitten Sie erneut um Genehmigung" + +#~ msgid "Send Quote" +#~ msgstr "Angebot senden" + +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "Möchten Sie dieses Angebot wirklich ablehnen?" + +#~ msgid "Delete Quote" +#~ msgstr "Angebot löschen" + +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Interner Kommentar (für den Kunden nicht sichtbar)" + +#~ msgid "Internal" +#~ msgstr "Intern" + +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "Sind Sie sicher, dass Sie diesen Kommentar löschen möchten?" + +#~ msgid "Write a reply..." +#~ msgstr "Schreibe eine Antwort..." + +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Noch keine Kommentare. Beginnen Sie die" +#~ " Konversation, indem Sie den ersten " +#~ "Kommentar hinzufügen." + +#~ msgid "Sent At" +#~ msgstr "Gesendet an" + +#~ msgid "Accepted At" +#~ msgstr "Akzeptiert bei" + +#~ msgid "Send Quote via Email" +#~ msgstr "Angebot per E-Mail senden" + +#~ msgid "Recipient Email" +#~ msgstr "Empfänger-E-Mail" + +#~ msgid "Quote %(quote_number)s" +#~ msgstr "Zitat %(quote_number)s" + +#~ msgid "Custom Message (Optional)" +#~ msgstr "Benutzerdefinierte Nachricht (optional)" + +#~ msgid "Add a custom message to the email..." +#~ msgstr "Fügen Sie der E-Mail eine benutzerdefinierte Nachricht hinzu..." + +#~ msgid "Attach PDF" +#~ msgstr "PDF anhängen" + +#~ msgid "Approve Quote" +#~ msgstr "Angebot genehmigen" + +#~ msgid "Notes (Optional)" +#~ msgstr "Notizen (optional)" + +#~ msgid "Add approval notes..." +#~ msgstr "Genehmigungsnotizen hinzufügen..." + +#~ msgid "Reject Quote Approval" +#~ msgstr "Angebotsgenehmigung ablehnen" + +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Bitte geben Sie einen Grund für die Ablehnung an..." + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Sind Sie sicher, dass Sie dieses " +#~ "Zitat löschen möchten? Diese Aktion kann" +#~ " nicht rückgängig gemacht werden." + +#~ msgid "Create Recurring Invoice" +#~ msgstr "Erstellen Sie eine wiederkehrende Rechnung" + +#~ msgid "Update Recurring Invoice" +#~ msgstr "Wiederkehrende Rechnung aktualisieren" + +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "" +#~ "Automatisieren Sie die Rechnungserstellung für" +#~ " die abonnementbasierte Abrechnung" + +#~ msgid "Frequency" +#~ msgstr "Frequenz" + +#~ msgid "Next Run" +#~ msgstr "Nächster Lauf" + +#~ msgid "Generate Now" +#~ msgstr "Jetzt generieren" + +#~ msgid "Template Details" +#~ msgstr "Vorlagendetails" + +#~ msgid "Invoice Settings" +#~ msgstr "Rechnungseinstellungen" + +#~ msgid "Recently Generated Invoices" +#~ msgstr "Kürzlich erstellte Rechnungen" + +#~ msgid "Recurring Task" +#~ msgstr "Wiederkehrende Aufgabe" + +#~ msgid "Recurring Tasks" +#~ msgstr "Wiederkehrende Aufgaben" + +#~ msgid "Create Recurring Task" +#~ msgstr "Wiederkehrende Aufgabe erstellen" + +#~ msgid "Edit Recurring Task" +#~ msgstr "Wiederkehrende Aufgabe bearbeiten" + +#~ msgid "Set up automated task creation" +#~ msgstr "Automatische Aufgabenerstellung einrichten" + +#~ msgid "Task Name Template" +#~ msgstr "Aufgabennamen-Vorlage" + +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "z. B. Wöchentliches Teammeeting" + +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "Dies wird als Basisname für erstellte Aufgaben verwendet" + +#~ msgid "Schedule" +#~ msgstr "Zeitplan" + +#~ msgid "Monthly" +#~ msgstr "Monatlich" + +#~ msgid "Yearly" +#~ msgstr "Jährlich" + +#~ msgid "Interval" +#~ msgstr "Intervall" + +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "Alle N Zeiträume wiederholen (z. B. alle 2 Wochen)" + +#~ msgid "Next Run Date" +#~ msgstr "Nächstes Ausführungsdatum" + +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "Optional: Aufgabenerstellung nach diesem Datum beenden" + +#~ msgid "Task Settings" +#~ msgstr "Aufgabeneinstellungen" + +#~ msgid "Assign To" +#~ msgstr "Zuordnen zu" + +#~ msgid "Auto-assign to creator" +#~ msgstr "Automatisch dem Ersteller zuweisen" + +#~ msgid "Automated task creation templates" +#~ msgstr "Vorlagen zur automatischen Aufgabenerstellung" + +#~ msgid "Not scheduled" +#~ msgstr "Nicht geplant" + +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "Möchten Sie diese wiederkehrende Aufgabe wirklich löschen?" + +#~ msgid "No recurring tasks" +#~ msgstr "Keine wiederkehrenden Aufgaben" + +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" +#~ "Wiederkehrende Aufgabenvorlagen erstellen, um " +#~ "Aufgaben automatisch nach einem Zeitplan " +#~ "zu generieren." -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Verboten" - -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "Sie haben keine Berechtigung, auf diese Ressource zuzugreifen. Der Kundenportal-Zugang ist möglicherweise für Ihr Konto nicht aktiviert." - -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "Für Ihr Konto ist möglicherweise kein Kundenportal-Zugang aktiviert" - -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "Ihr Konto ist möglicherweise inaktiv" - -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "Sie sind möglicherweise keinem Kunden zugeordnet" - -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Seite nicht gefunden" - -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "404 Nicht gefunden" - -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "Die gesuchte Seite existiert nicht oder wurde verschoben." - -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Serverfehler" - -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "500 Interner Serverfehler" - -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "Ein unerwarteter Fehler ist aufgetreten. Bitte versuchen Sie es später erneut oder wenden Sie sich an den Support, wenn das Problem anhält." - -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "Der Zugriff auf das Kundenportal ist für Ihr Konto nicht aktiviert." - -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "Ihr Kundenkonto ist inaktiv." - -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Benutzername und Passwort sind erforderlich." - -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Ungültiger Benutzername oder Passwort." - -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "Willkommen, %(client_name)s!" - -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "Sie wurden abgemeldet." - -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Ungültiges oder fehlendes Passwort-Setup-Token." - -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "Ungültiges oder abgelaufenes Passwort-Setup-Token. Bitte fordern Sie ein neues an." - -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "Passwort ist erforderlich." - -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "Aufgrund eines Datenbankfehlers konnte das Passwort nicht festgelegt werden." - -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "Passwort erfolgreich gesetzt! Sie können sich nun beim Portal anmelden." - -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "Kundenportaldaten können nicht geladen werden." - -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "widget_ids muss eine Liste sein" - -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "Ungültige Widget-ID(s): %(ids)s" - -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "widget_order muss eine Liste sein" - -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "Ungültige Widget-ID(s) in Reihenfolge: %(ids)s" - -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Rechnung nicht gefunden." - -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Zitat nicht gefunden." - -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "Fehlermeldung ist nicht verfügbar." - -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "Titel ist erforderlich." - -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "Ungültiges Projekt ausgewählt." - -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "Problem konnte aufgrund eines Datenbankfehlers nicht erstellt werden." - -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "Problem erfolgreich gemeldet. Wir werden es in Kürze prüfen." - -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "Problem nicht gefunden." - -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "Genehmigung nicht gefunden." - -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "Kein Kontakt für die Genehmigung gefunden." - -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "Zeiteintrag erfolgreich genehmigt." - -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "Fehler beim Genehmigen des Zeiteintrags: %(error)s" - -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "Ablehnungsgrund ist erforderlich." - -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "Zeiteintrag abgelehnt." - -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "Fehler beim Ablehnen des Zeiteintrags: %(error)s" - -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "Dieses Angebot kann nicht akzeptiert werden." - -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "Angebot erfolgreich akzeptiert. Wir werden uns in Kürze bei Ihnen melden." - -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "Dieses Angebot kann nicht abgelehnt werden." - -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "Angebot abgelehnt. Wir schätzen Ihr Feedback." - -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "Diese Rechnung ist bereits bezahlt." - -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "Online-Zahlung ist derzeit nicht verfügbar. Bitte kontaktieren Sie uns für Zahlungsanweisungen." - -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "Zahlungsanbieter wird noch nicht unterstützt." - -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "Projekt nicht gefunden." - -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "Kommentar darf nicht leer sein." - -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "Kein Kontakt für das Kommentieren gefunden." - -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "Kommentar erfolgreich hinzugefügt." - -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "%(count)d Benachrichtigungen als gelesen markiert." - -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "Anhang nicht gefunden oder Zugriff verweigert." - -#: app/routes/client_portal.py:1382 -msgid "Unable to load report data." -msgstr "Berichtsdaten konnten nicht geladen werden." - -#: app/routes/client_portal.py:1415 -msgid "Client Report" -msgstr "Kundenbericht" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -msgid "Last %(days)s days" -msgstr "Letzte %(days)s Tage" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Zusammenfassung" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Gesamtstunden" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "Gesamt fakturiert" - -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Bezahlt" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Hervorragend" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Stunden nach Projekt" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Projekt" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Std" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Abrechnungsfähige Stunden" - -#: app/routes/client_portal.py:1431 -msgid "Time by Date" -msgstr "Zeit nach Datum" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Datum" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Zugriff verweigert" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "Datei zu groß. Maximal 5 MB." - -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "Portal-Anpassung erfolgreich aktualisiert" - -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "Suchanfrage ist zu lang. Maximal 200 Zeichen." - -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "Sie haben keine Berechtigung zum Erstellen von Kunden" - -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "Der Name des Kunden ist erforderlich" - -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "Ein Client mit diesem Namen existiert bereits" - -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "Ungültige E-Mail-Adresse" - -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Ungültiges Stundensatzformat" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "Prepaid-Stunden müssen eine positive Zahl sein." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "Der Tag der Prepaid-Rücksetzung muss zwischen 1 und 28 liegen." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "Benutzerdefiniertes Feld '%(field)s' ist erforderlich" - -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "Der Client konnte aufgrund eines Datenbankfehlers nicht erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/clients.py:439 app/routes/clients.py:580 -msgid "You do not have access to this client." -msgstr "Sie haben keinen Zugriff auf diesen Kunden." - -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "Sie haben keine Berechtigung zum Bearbeiten von Clients" - -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "Beim Aktivieren des Portalzugriffs ist ein Portal-Benutzername erforderlich." - -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Dieser Portal-Benutzername wird bereits von einem anderen Kunden verwendet." - -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "Der Client konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "Sie sind nicht berechtigt, Portal-E-Mails zu senden" - -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "Das Kundenportal ist für diesen Kunden nicht aktiviert." - -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "Für diesen Client ist kein Portal-Benutzername festgelegt." - -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "Die E-Mail-Adresse des Kunden ist nicht festgelegt. E-Mail zur Passworteinrichtung kann nicht gesendet werden." - -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "Aufgrund eines Datenbankfehlers konnte kein Passwort-Setup-Token generiert werden." - -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "E-Mail zur Passworteinrichtung wurde erfolgreich an %(email)s gesendet" - -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "Der E-Mail-Server ist nicht konfiguriert. Bitte konfigurieren Sie die E-Mail-Einstellungen unter Admin → E-Mail-Konfiguration oder legen Sie die Umgebungsvariable MAIL_SERVER fest." - -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "Das Senden der E-Mail zur Passworteinrichtung ist fehlgeschlagen. Weitere Informationen finden Sie in der E-Mail-Konfiguration und in den Serverprotokollen." - -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "Beim Senden der E-Mail ist ein Fehler aufgetreten: %(error)s" - -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "Sie haben keine Berechtigung zum Archivieren von Clients" - -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "Der Client ist bereits inaktiv" - -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "Sie sind nicht berechtigt, Clients zu aktivieren" - -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "Der Kunde ist bereits aktiv" - -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "Sie sind nicht berechtigt, Clients zu löschen" - -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "Kunde mit vorhandenen Projekten kann nicht gelöscht werden. Bitte löschen Sie zuerst alle Projekte." - -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "Kunde mit vorhandenen Rechnungen kann nicht gelöscht werden. Bitte löschen Sie zuerst alle Rechnungen." - -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "Der Client konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "Keine Kunden zum Löschen ausgewählt" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "Clients konnten aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "Es wurden keine Kunden gelöscht" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "Sie sind nicht berechtigt, den Kundenstatus zu ändern" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "Keine Kunden ausgewählt" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Ungültiger Status" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "Der Clientstatus konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "Es wurden keine Clients aktualisiert" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "Keine Datei bereitgestellt" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Dateityp nicht zulässig" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "Die Dateigröße überschreitet die maximal zulässige Größe (10 MB)." - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "Der Anhang konnte aufgrund eines Datenbankfehlers nicht hochgeladen werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "Die Anhänge-Funktion erfordert eine Datenbankmigration. Bitte führen Sie aus: flask db upgrade" - -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "Anhang erfolgreich hochgeladen" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "Datei nicht gefunden" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "Der Anhang konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "Anhang erfolgreich gelöscht" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "Der Kommentarinhalt darf nicht leer sein" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "Der Kommentar muss mit einem Projekt, einer Aufgabe oder einem Angebot verknüpft sein" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "Der Kommentar kann nicht mehreren Zielen zugeordnet werden" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Ungültiger übergeordneter Kommentar" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Kommentar erfolgreich hinzugefügt" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Fehler beim Hinzufügen des Kommentars" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Fehler beim Hinzufügen des Kommentars: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "Sie sind nicht berechtigt, diesen Kommentar zu bearbeiten" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Kommentar erfolgreich aktualisiert" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Fehler beim Aktualisieren des Kommentars: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "Sie haben keine Berechtigung, diesen Kommentar zu löschen" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Kommentar erfolgreich gelöscht" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Fehler beim Löschen des Kommentars: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "Sie haben keine Berechtigung, Anhänge zu diesem Kommentar hinzuzufügen" - -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "Fehler beim Hochladen des Anhangs: %(error)s" - -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "Sie sind nicht berechtigt, diesen Anhang zu löschen" - -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "Fehler beim Löschen des Anhangs" - -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "Fehler beim Löschen des Anhangs: %(error)s" - -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Kontakt erfolgreich erstellt" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Fehler beim Erstellen des Kontakts: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Kontakt erfolgreich aktualisiert" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Fehler beim Aktualisieren des Kontakts: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Kontakt erfolgreich gelöscht" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "Fehler beim Löschen des Kontakts: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Kontakt als primär festgelegt" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "Fehler beim Festlegen des primären Kontakts: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Kommunikation erfolgreich aufgezeichnet" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Fehler bei der Aufzeichnung der Kommunikation: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "Feldschlüssel ist erforderlich" - -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "Etikett ist erforderlich" - -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "Feldschlüssel darf nur Buchstaben, Zahlen und Unterstriche enthalten" - -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "Eine benutzerdefinierte Felddefinition mit diesem Schlüssel existiert bereits" - -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "Benutzerdefinierte Felddefinition konnte aufgrund eines Datenbankfehlers nicht erstellt werden." - -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "Benutzerdefinierte Felddefinition erfolgreich erstellt" - -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "Benutzerdefinierte Felddefinition konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "Benutzerdefinierte Felddefinition erfolgreich aktualisiert" - -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "Benutzerdefiniertes Feld konnte aufgrund eines Datenbankfehlers nicht von Kunden entfernt werden." - -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "Benutzerdefinierte Felddefinition konnte aufgrund eines Datenbankfehlers nicht gelöscht werden." - -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "Benutzerdefinierte Felddefinition erfolgreich gelöscht. Das Feld wurde von %(count)d Kunde(n) entfernt." - -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "Benutzerdefinierte Felddefinition erfolgreich gelöscht" - -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "Sie haben keine Berechtigung, diesen Bericht zu bearbeiten." - -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "Bericht erfolgreich %(action)s" - -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "Sie haben keine Berechtigung, diesen Bericht anzuzeigen." - -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "Sie haben keine Berechtigung, diese Berichtsansicht zu löschen." - -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "Berichtsansicht kann nicht gelöscht werden: Sie wird in %(count)d geplantem/geplanten Bericht(en) verwendet." - -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "Berichtsansicht „%(name)s“ erfolgreich gelöscht." - -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "Berichtsansicht konnte aufgrund eines Datenbankfehlers nicht gelöscht werden" - -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Ungültiger Dealwert" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Deal erfolgreich erstellt" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Fehler beim Erstellen des Deals: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Deal erfolgreich aktualisiert" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Fehler beim Aktualisieren des Deals: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Der Deal wurde als gewonnen abgeschlossen" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Fehler beim Abschluss des Geschäfts: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Deal als verloren abgeschlossen" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Aktivität erfolgreich aufgezeichnet" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Fehler bei der Aufzeichnungsaktivität: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "Kategoriename ist erforderlich" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Ausgabenkategorie erfolgreich erstellt" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Fehler beim Erstellen der Ausgabenkategorie" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Die Ausgabenkategorie wurde erfolgreich aktualisiert" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Fehler beim Aktualisieren der Ausgabenkategorie" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Ausgabenkategorie erfolgreich deaktiviert" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Fehler beim Deaktivieren der Ausgabenkategorie" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "Titel ist erforderlich" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "Kategorie ist erforderlich" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "Betrag ist erforderlich" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "Spesendatum ist erforderlich" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Ungültiges Datumsformat" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Ungültiges Betragsformat" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "Ausgewähltes Projekt stimmt nicht mit dem gesperrten Kunden überein." - -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "Fehler beim Speichern der Belegdatei. Bitte überprüfen Sie die Verzeichnisberechtigungen." - -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "Fehler beim Hochladen der Belegdatei." - -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Ausgabe erfolgreich erstellt" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Fehler beim Erstellen der Ausgabe" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "Sie sind nicht berechtigt, diese Ausgabe anzuzeigen" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "Sie sind nicht berechtigt, diese Ausgabe zu bearbeiten" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "Genehmigte oder erstattete Ausgaben können nicht bearbeitet werden" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Bitte füllen Sie alle erforderlichen Felder aus" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Ausgaben erfolgreich aktualisiert" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Fehler beim Aktualisieren der Kosten" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "Sie sind nicht berechtigt, diese Ausgabe zu löschen" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "Genehmigte oder in Rechnung gestellte Ausgaben können nicht gelöscht werden" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Ausgabe erfolgreich gelöscht" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Fehler beim Löschen der Ausgabe" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "Keine Ausgaben zum Löschen ausgewählt" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "Ausgaben konnten aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "%(count)d Ausgaben(en) erfolgreich gelöscht" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "Übersprungene %(count)d Ausgaben: %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "Keine Ausgaben ausgewählt" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Ungültiger Statuswert" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "Aufgrund eines Datenbankfehlers konnten die Ausgaben nicht aktualisiert werden" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "%(count)d Ausgaben wurden erfolgreich auf %(status)s aktualisiert" - -#: app/routes/expenses.py:824 -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "Übersprungene %(count)d Ausgabe(n): %(summary)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "%(count)d Ausgaben übersprungen (keine Berechtigung)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Nur Administratoren können Ausgaben genehmigen" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Es können nur ausstehende Ausgaben genehmigt werden" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Ausgabe erfolgreich genehmigt" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Fehler bei der Kostengenehmigung" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Nur Administratoren können Ausgaben ablehnen" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Lediglich ausstehende Ausgaben können abgelehnt werden" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Ein Ablehnungsgrund ist erforderlich" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Spesenabrechnung abgelehnt" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Fehler beim Zurückweisen der Kosten" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Nur Administratoren können Ausgaben als erstattet markieren" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Nur genehmigte Ausgaben können als erstattet markiert werden" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Diese Ausgabe ist nicht als erstattungsfähig gekennzeichnet" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Als erstattet markierte Ausgabe" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Fehler beim Markieren der Kosten als erstattet" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "OCR ist nicht verfügbar. Bitte wenden Sie sich an Ihren Administrator." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Ungültiger Dateityp. Zulässige Typen: PNG, JPG, JPEG, GIF, PDF" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "Quittung erfolgreich gescannt! Mit den extrahierten Daten können Sie nun eine Ausgabe erstellen." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "Fehler beim Scannen der Quittung. Bitte versuchen Sie es erneut oder geben Sie die Ausgabe manuell ein." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "Es wurden keine gescannten Belegdaten gefunden. Bitte scannen Sie zunächst eine Quittung." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Ausgabe erfolgreich aus gescannter Quittung erstellt" - -#: app/routes/integrations.py:67 -msgid "Permission denied." -msgstr "Zugriff verweigert." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "Integrationsanbieter nicht verfügbar." - -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "Trello-Integration muss von einem Administrator konfiguriert werden." - -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "Nur Administratoren können globale Integrationen einrichten." - -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "Connector konnte nicht initialisiert werden." - -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "Google Calendar OAuth-Anmeldedaten müssen zuerst konfiguriert werden. Weiterleitung zur Einrichtung..." - -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "Google Calendar-Integration muss zuerst von einem Administrator konfiguriert werden." - -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "OAuth-Anmeldedaten nicht konfiguriert. Bitte konfigurieren Sie diese zuerst." - -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "Integration nicht konfiguriert. Bitte bitten Sie einen Administrator, OAuth-Anmeldedaten einzurichten." - -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "Autorisierung fehlgeschlagen: %(error)s" - -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "Autorisierungscode nicht empfangen." - -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "Integration nicht gefunden." - -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "Ungültiger Status-Parameter. Bitte versuchen Sie erneut, eine Verbindung herzustellen." - -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "Integration erfolgreich verbunden!" - -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "Integration verbunden, aber Verbindungstest fehlgeschlagen: %(message)s" - -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "Fehler beim Verbinden der Integration: %(error)s" - -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "Nur Administratoren können globale Integrationen konfigurieren." - -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "Trello API-Schlüssel ist erforderlich." - -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "Trello API-Secret ist für die neue Einrichtung erforderlich." - -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "OAuth Client-ID ist erforderlich." - -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "OAuth Client-Secret ist für die neue Einrichtung erforderlich." - -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "GitLab-Instanz-URL muss eine gültige URL sein (z. B. https://gitlab.com)." - -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "Format der GitLab-Instanz-URL ist ungültig." - -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "Integrations-Anmeldedaten erfolgreich aktualisiert." - -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "Benutzer können jetzt ihren Google Calendar verbinden. Sie werden automatisch zu Google für die Autorisierung weitergeleitet." - -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "Anmeldedaten konnten nicht aktualisiert werden." - -#: app/routes/integrations.py:506 -msgid "Invalid action for this integration." -msgstr "Ungültige Aktion für diese Integration." - -#: app/routes/integrations.py:513 -msgid "Linear API key is required." -msgstr "Linear API-Schlüssel ist erforderlich." - -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "Linear API-Schlüssel gespeichert. Verwenden Sie Sync, um Probleme als Aufgaben zu importieren." - -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "API-Schlüssel konnte nicht gespeichert werden." - -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "Diese Aktion ist nur für CalDAV-Integrationen verfügbar." - -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "Integration nicht gefunden. Bitte verbinden Sie die Integration zuerst." - -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "Benutzername ist erforderlich." - -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "Passwort ist für die neue Einrichtung erforderlich." - -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "CalDAV-Anmeldedaten erfolgreich aktualisiert." - -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "CalDAV-Anmeldedaten konnten nicht aktualisiert werden: %(message)s" - -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "Ungültige Zahl für Feld %(field)s" - -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "Feld %(field)s ist erforderlich" - -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "Ungültiges JSON für Feld %(field)s" - -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "Integrationskonfiguration erfolgreich aktualisiert." - -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "Konfiguration konnte nicht aktualisiert werden." - -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "Verbindungstest erfolgreich!" - -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "Verbindungstest fehlgeschlagen: %(message)s" - -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "Integration erfolgreich gelöscht." - -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "Integration erfolgreich zurückgesetzt. Sie können sie jetzt neu konfigurieren." - -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "Connector nicht verfügbar." - -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "Synchronisierung erfolgreich abgeschlossen. %(details)s" - -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "Synchronisierung fehlgeschlagen: %(message)s" - -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "Fehler während der Synchronisierung: %(error)s" - -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "Entweder Server-URL oder Kalender-URL ist erforderlich." - -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "Server-URL muss eine gültige URL sein (z. B. https://mail.example.com/dav)." - -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "Format der Server-URL ist ungültig." - -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "Kalender-URL muss eine gültige URL sein." - -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "Format der Kalender-URL ist ungültig." - -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "Ausgewähltes Projekt nicht gefunden oder inaktiv." - -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "Rückblicktage müssen zwischen 1 und 365 liegen." - -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "Rückblicktage müssen eine gültige Zahl sein." - -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "Anmeldedaten konnten nicht gespeichert werden: %(message)s" - -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "CalDAV-Integration erfolgreich konfiguriert." - -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "CalDAV-Konfiguration konnte nicht gespeichert werden." - -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "ActivityWatch-Server-URL ist erforderlich." - -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "Server-URL muss eine gültige URL sein (z. B. http://localhost:5600)." - -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "Rückblicktage müssen zwischen 1 und 90 liegen." - -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "ActivityWatch-Integration erfolgreich konfiguriert." - -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "Konfiguration gespeichert, aber Verbindungstest fehlgeschlagen: %(message)s" - -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "ActivityWatch-Konfiguration konnte nicht gespeichert werden." - -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "Einrichtungsassistent für diese Integration nicht verfügbar." - -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "Connector-Klasse nicht gefunden." - -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "Integration erfolgreich konfiguriert!" - -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "Konfiguration konnte nicht gespeichert werden." - -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "OAuth-Einrichtung" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "Verbindungstest" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "Sync-Konfiguration" - -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Fortschrittlich" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Rezension" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "Instanz" - -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "OAuth" - -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "Repositories" - -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "Synchronisierungseinstellungen" - -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Unternehmen" - -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "Zuordnungen" - -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "Mandant" - -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Webhooks" - -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "Arbeitsbereich" - -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Projekte" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "API-Schlüssel" - -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "Mandanten-ID" - -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "%(name)s Einrichtungsassistent" - -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "Geführte Schritt-für-Schritt-Konfiguration für %(name)s" - -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "Integration nicht gefunden" - -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "Connector nicht verfügbar" - -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "Artikelnummer (SKU) ist erforderlich" - -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "Name ist erforderlich" - -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "Ungültige SKU: %(error)s" - -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "Ungültiger Name: %(error)s" - -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "SKU existiert bereits. Bitte verwenden Sie eine andere SKU." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Lagerartikel erfolgreich erstellt." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "Fehler beim Erstellen des Lagerartikels: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Lagerartikel erfolgreich aktualisiert." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "Fehler beim Aktualisieren des Lagerartikels: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "Lagerartikel mit vorhandenem Lagerbestand oder Bewegungsverlauf können nicht gelöscht werden." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "Lagerartikel erfolgreich gelöscht." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "Fehler beim Löschen des Lagerartikels: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "Lagercode existiert bereits. Bitte verwenden Sie einen anderen Code." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Lager erfolgreich erstellt." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Fehler beim Erstellen des Lagers: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Lager wurde erfolgreich aktualisiert." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "Fehler beim Aktualisieren des Lagers: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "Lager mit vorhandenem Bestand kann nicht gelöscht werden. Bitte übertragen oder entfernen Sie zuerst den gesamten Bestand." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Lager erfolgreich gelöscht." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Fehler beim Löschen des Lagers: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "Lagerartikel ist nicht verfolgbar. Abwertung erfordert verfolgbare Artikel." - -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "Abwertungsmenge muss positiv sein" - -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "Lagerartikel muss Standardkosten haben, um eine Abwertung durchzuführen" - -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "Abwertungsprozentsatz ist bei der Prozentmethode erforderlich" - -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "Ungültiger Abwertungsprozentsatz" - -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "Abwertungsprozentsatz darf nicht negativ sein" - -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "Abwertungsprozentsatz darf 100 % nicht überschreiten" - -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "Neue Stückkosten sind bei der Festkostenmethode erforderlich" - -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "Ungültiger Stückkostenwert" - -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "Stückkosten dürfen nicht negativ sein" - -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "Ungültige Abwertungsmethode" - -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "Abwertungskosten (%(devalued)s) dürfen die Originalkosten (%(original)s) nicht überschreiten" - -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "Unzureichender Lagerbestand zur Abwertung. Verfügbar: %(available)s, Angefordert: %(requested)s" - -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "Lagerabwertung erfolgreich erfasst." - -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "Rückgabebewegungen müssen eine positive Menge verwenden" - -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "Abfallbewegungen müssen eine negative Menge verwenden" - -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "Abwertungsprozentsatz ist erforderlich, wenn Abwertung aktiviert ist" - -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "Neue Stückkosten sind erforderlich, wenn Abwertung aktiviert ist" - -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "Unzureichender Lagerbestand zum Ausbuchen. Verfügbar: %(available)s, Angefordert: %(requested)s" - -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "Lager konnte vor dem Ausbuchen nicht abgewertet werden: %(error)s" - -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "Bewegung konnte nicht erfasst werden: %(error)s" - -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "Rückgabebewegung mit Abwertung erfolgreich erfasst." - -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "Abfallbewegung mit Abwertung erfolgreich erfasst." - -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "Lagerbewegung erfolgreich erfasst." - -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "Fehler: %(error)s" - -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "Fehler bei der Aufzeichnung der Lagerbewegung: %(error)s" - -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "Quell- und Ziellager müssen unterschiedlich sein." - -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Im Quelllager sind nicht genügend Lagerbestände verfügbar." - -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "Lagerartikel nicht gefunden." - -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "Quelllager nicht gefunden." - -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "Ziellager nicht gefunden." - -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "Umlagerung erfolgreich abgeschlossen." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Fehler beim Erstellen der Übertragung: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "Bestandsanpassung erfolgreich erfasst." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Fehler bei der Aufzeichnungsanpassung: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Reservierung erfolgreich durchgeführt." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Fehler beim Erfüllen der Reservierung: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "Reservierung erfolgreich storniert." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "Fehler beim Stornieren der Reservierung: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "Lieferant mit Code '%(code)s' existiert bereits" - -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "Lieferant erfolgreich erstellt." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Fehler beim Erstellen des Lieferanten: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "Der Lieferantencode ist bereits vorhanden. Bitte verwenden Sie einen anderen Code." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "Lieferant wurde erfolgreich aktualisiert." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Fehler beim Aktualisieren des Lieferanten: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "Lieferant mit zugehörigen Lagerartikeln kann nicht gelöscht werden. Entfernen Sie zuerst die Elemente." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "Lieferant erfolgreich gelöscht." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Fehler beim Löschen des Lieferanten: %(error)s" - -#: app/routes/inventory.py:1817 -msgid "Supplier is required." -msgstr "Lieferant ist erforderlich." - -#: app/routes/inventory.py:1822 -msgid "Supplier not found." -msgstr "Lieferant nicht gefunden." - -#: app/routes/inventory.py:1827 -msgid "Order date is required." -msgstr "Bestelldatum ist erforderlich." - -#: app/routes/inventory.py:1908 -msgid "Could not create purchase order due to a database error." -msgstr "Bestellung konnte aufgrund eines Datenbankfehlers nicht erstellt werden." - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Bestellung erfolgreich erstellt." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Fehler beim Erstellen der Bestellung: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "Eine eingegangene Bestellung kann nicht bearbeitet werden." - -#: app/routes/inventory.py:2038 -msgid "Could not update purchase order due to a database error." -msgstr "Bestellung konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Bestellung erfolgreich aktualisiert." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Fehler beim Aktualisieren der Bestellung: %(error)s" - -#: app/routes/inventory.py:2079 -msgid "Could not update purchase order status due to a database error." -msgstr "Bestellstatus konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Bestellung als gesendet markiert." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Fehler beim Senden der Bestellung: %(error)s" - -#: app/routes/inventory.py:2103 -msgid "Could not cancel purchase order due to a database error." -msgstr "Bestellung konnte aufgrund eines Datenbankfehlers nicht storniert werden." - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Bestellung erfolgreich storniert." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Fehler beim Stornieren der Bestellung: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "Eine eingegangene Bestellung kann nicht gelöscht werden. Stornieren Sie es stattdessen." - -#: app/routes/inventory.py:2131 -msgid "Could not delete purchase order due to a database error." -msgstr "Bestellung konnte aufgrund eines Datenbankfehlers nicht gelöscht werden." - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Bestellung erfolgreich gelöscht." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Fehler beim Löschen der Bestellung: %(error)s" - -#: app/routes/inventory.py:2175 -msgid "Could not receive purchase order due to a database error." -msgstr "Bestellung konnte aufgrund eines Datenbankfehlers nicht empfangen werden." - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Die Bestellung wurde als eingegangen markiert und der Lagerbestand aktualisiert." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Fehler beim Empfang der Bestellung: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "Für diese Rechnung ist bereits eine Genehmigungsanfrage ausstehend." - -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "Bitte wählen Sie mindestens einen Genehmiger aus." - -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "Genehmigungsanfrage erfolgreich erstellt." - -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "Rechnung erfolgreich genehmigt." - -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "Bitte geben Sie einen Ablehnungsgrund an." - -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "Rechnungsgenehmigung abgelehnt." - -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "Projekt, Name des Kunden und Fälligkeitsdatum sind erforderlich" - -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Ungültiges Fälligkeitsdatumsformat" - -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Ungültiges Steuersatzformat" - -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Ausgewähltes Projekt nicht gefunden" - -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte keine Rechnung erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "Sie sind nicht berechtigt, diese Rechnung anzuzeigen" - -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "Unternehmens-Steuer-ID (USt.) fehlt unter Admin → Einstellungen → Unternehmens-Branding." - -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "Absender-Endpunkt-ID fehlt unter Admin → Einstellungen → Peppol E-Invoicing." - -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "Absender-Schema-ID fehlt unter Admin → Einstellungen → Peppol E-Invoicing." - -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "Kunden-Peppol-Endpunkt-ID fehlt. Fügen Sie peppol_endpoint_id zu den benutzerdefinierten Feldern des Kunden hinzu." - -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "Kunden-Peppol-Schema-ID fehlt. Fügen Sie peppol_scheme_id zu den benutzerdefinierten Feldern des Kunden hinzu." - -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "Rechnung hat keinen verknüpften Kunden; Käufer-PEPPOL-Kennungen können nicht überprüft werden." - -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "PEPPOL-Konformität konnte nicht überprüft werden; bitte Konfiguration prüfen." - -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "Sie sind nicht berechtigt, diese Rechnung zu bearbeiten" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "Warnung: Der Lagerbestand für Artikel %(item)s konnte nicht reserviert werden: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "Die Rechnung konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "Rechnung erfolgreich aktualisiert" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "Warnung: Der Lagerbestand für Artikel %(item)s konnte nicht reduziert werden: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "Sie sind nicht berechtigt, diese Rechnung zu löschen" - -#: app/routes/invoices.py:749 -msgid "Only draft invoices can be deleted." -msgstr "Es können nur Rechnungsentwürfe gelöscht werden." - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "Die Rechnung konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "Keine Rechnungen zum Löschen ausgewählt" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnten Rechnungen nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "Keine Rechnungen ausgewählt" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "Rechnungen konnten aufgrund eines Datenbankfehlers nicht aktualisiert werden" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "Keine Zeiteinträge, Kosten, Ausgaben oder zusätzliche Waren ausgewählt" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnten keine Elemente generiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "Aus Zeiteinträgen und Kosten erfolgreich generierte Rechnungspositionen" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "%(hours)s Prepaid-Stunden für %(client)s angewendet, bevor Überschreitungen in Rechnung gestellt werden." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "Sie haben keine Berechtigung zum Exportieren dieser Rechnung" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "UBL kann nicht generiert werden: %(msg)s" - -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "UBL-Export fehlgeschlagen: %(msg)s" - -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "Factur-X-Einbettung ist aktiviert, aber fehlgeschlagen: %(err)s. Export abgebrochen, damit das PDF nicht ohne eingebettetes XML ausgeliefert wird." - -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "PDF/A-3-Normalisierung fehlgeschlagen: %(err)s. Export abgebrochen." - -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "veraPDF-Validierung hat Probleme gemeldet: %(summary)s" - -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "veraPDF: %(summary)s" - -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "Factur-X-Einbettung ist aktiviert, aber fehlgeschlagen: %(err)s. Export abgebrochen." - -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "PDF-Erzeugung fehlgeschlagen: %(err)s. Fallback ist ebenfalls fehlgeschlagen: %(fb)s" - -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "Sie sind nicht berechtigt, diese Rechnung zu duplizieren" - -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte die Rechnung nicht dupliziert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte die doppelte Rechnung nicht abgeschlossen werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "Sie haben keine Berechtigung, Bilder zu dieser Rechnung hochzuladen" - -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "Dateityp nicht erlaubt. Nur Bilder sind erlaubt" - -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "Dateigröße überschreitet die maximal zulässige Größe (5 MB)" - -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "Bild konnte aufgrund eines Datenbankfehlers nicht hochgeladen werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "Bild erfolgreich hochgeladen" - -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "Sie haben keine Berechtigung, Bilder von dieser Rechnung zu löschen" - -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "Bild konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "Bild erfolgreich gelöscht" - -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Rechnung als gesendet markiert" - -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Rechnung als bezahlt markiert" - -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "Sie haben keine Berechtigung, Probleme zu erstellen." - -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "Kunde ist erforderlich." - -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "Problem erfolgreich erstellt." - -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "Sie haben keine Berechtigung, dieses Problem anzuzeigen." - -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "Sie haben keine Berechtigung, dieses Problem zu bearbeiten." - -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "Projekt muss zum selben Kunden gehören." - -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "Problem konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "Problem erfolgreich aktualisiert." - -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "Bitte wählen Sie eine Aufgabe aus." - -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "Problem erfolgreich mit Aufgabe verknüpft." +#~ msgid "Edit Report" +#~ msgstr "Bericht bearbeiten" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "Bitte wählen Sie ein Projekt aus." - -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "Aufgabe erfolgreich aus Problem erstellt." - -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "Status ist erforderlich." - -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "Problemstatus erfolgreich aktualisiert." - -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "Problem erfolgreich zugewiesen." - -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "Problem konnte nicht zugewiesen werden." - -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "Priorität ist erforderlich." - -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "Problempriorität erfolgreich aktualisiert." - -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "Nur Administratoren können Probleme löschen." - -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "Problem konnte aufgrund eines Datenbankfehlers nicht gelöscht werden." +#~ msgid "Custom Report Builder" +#~ msgstr "Benutzerdefinierter Berichtsgenerator" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "Problem erfolgreich gelöscht." +#~ msgid "Unpaid time entries" +#~ msgstr "Unbezahlte Zeiteinträge" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "Schlüssel und Etikett sind erforderlich" - -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "Die Spalte konnte aufgrund eines Datenbankfehlers nicht erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "Die Spalte konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "Systemspalten können nicht gelöscht werden" - -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "Die Spalte konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "Die Spalte konnte aufgrund eines Datenbankfehlers nicht umgeschaltet werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "Kiosk-Modus ist nicht aktiviert. Bitte wenden Sie sich an einen Administrator." - -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "Für dieses Konto ist kein Passwort festgelegt. Bitte legen Sie zuerst ein Passwort in Ihrem Profil fest." - -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "Sie wurden abgemeldet" - -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "Lagerkorrektur erfolgreich erfasst" - -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "Lagertransfer erfolgreich abgeschlossen" - -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "Timer erfolgreich gestartet" - -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "Der Timer wurde erfolgreich gestoppt" - -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Lead erfolgreich erstellt" - -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Fehler beim Erstellen des Leads: %(error)s" - -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Lead erfolgreich aktualisiert" - -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Fehler beim Aktualisieren des Leads: %(error)s" - -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "Lead wurde bereits umgewandelt" - -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Lead erfolgreich in Kunden umgewandelt" - -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Fehler beim Konvertieren des Leads: %(error)s" - -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Der Lead wurde in ein erfolgreiches Geschäft umgewandelt" - -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Lead als verloren markiert" - -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "Fehler beim Markieren des Leads als verloren: %(error)s" - -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "URL-Vorlage ist erforderlich" - -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "URL-Vorlage muss den Platzhalter {value} oder %value% enthalten" - -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "Link-Vorlage konnte aufgrund eines Datenbankfehlers nicht erstellt werden." - -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "Link-Vorlage erfolgreich erstellt" - -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "Link-Vorlage konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden." - -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "Link-Vorlage erfolgreich aktualisiert" - -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "Link-Vorlage konnte aufgrund eines Datenbankfehlers nicht gelöscht werden." - -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "Link-Vorlage erfolgreich gelöscht" - -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "Sie verwenden TimeTracker seit einer Woche oder länger. Wenn es zu Ihrem Workflow passt, erwägen Sie, die weitere Entwicklung zu unterstützen." - -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "Sie haben heute eine beachtliche Menge Zeit erfasst. Wenn TimeTracker Ihren Alltag erleichtert, können Sie das Projekt mit einem Klick unterstützen." - -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "PDF-Export fehlgeschlagen: %(error)s" - -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Meileneintrag erfolgreich erstellt" - -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Fehler beim Erstellen des Kilometereintrags" - -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "Sie sind nicht berechtigt, diesen Meileneintrag anzuzeigen" - -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "Sie sind nicht berechtigt, diesen Meileneintrag zu bearbeiten" - -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "Genehmigte oder erstattete Meileneinträge können nicht bearbeitet werden" - -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Meileneintrag erfolgreich aktualisiert" - -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Fehler beim Aktualisieren des Meileneintrags" - -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "Sie sind nicht berechtigt, diesen Meileneintrag zu löschen" - -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "Kilometereintrag erfolgreich gelöscht" - -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Fehler beim Löschen des Kilometereintrags" - -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "Keine Meileneinträge zum Löschen ausgewählt" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "Kilometereinträge konnten aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "%(count)d Meileneinträge%(plural)s wurden erfolgreich gelöscht" - -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "Übersprungen %(count)d Meileneinträge%(plural)s: %(errors)s" - -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "Keine Meileneinträge ausgewählt" - -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "Die Meileneinträge konnten aufgrund eines Datenbankfehlers nicht aktualisiert werden" - -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "%(count)d Meileneintrag%(plural)s wurde erfolgreich auf %(status)s aktualisiert" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "%(count)d Meileneinträge%(plural)s übersprungen (keine Berechtigung)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Nur Administratoren können Meileneinträge genehmigen" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Es können nur ausstehende Meileneinträge genehmigt werden" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Meileneintrag erfolgreich genehmigt" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Fehler beim Genehmigen der Meileneintragung" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Nur Administratoren können Kilometereinträge ablehnen" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "Lediglich ausstehende Meileneinträge können abgelehnt werden" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Meileneingabe abgelehnt" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Fehler beim Zurückweisen der Meileneingabe" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "Nur Administratoren können Meileneinträge als erstattet markieren" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "Nur genehmigte Meileneinträge können als erstattet markiert werden" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Meileneintrag als erstattet markiert" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Fehler beim Markieren des Meileneintrags als erstattet" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "Angebotstitel und Kunde sind erforderlich" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Ausgewählter Kunde nicht gefunden" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Ungültiges Gesamtbetragsformat" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Ungültiges Format für geschätzte Stunden" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Ungültiges Datumsformat für gültig bis" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte kein Angebot erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Angebot erfolgreich erstellt" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "Es können nur Angebotsentwürfe bearbeitet werden" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "Das Angebot konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "Angebot erfolgreich aktualisiert" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "Es können nur Angebotsentwürfe verschickt werden" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte das Angebot nicht gesendet werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Angebot erfolgreich gesendet" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Dieses Angebot kann nicht angenommen werden" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "Zitat konnte nicht akzeptiert werden: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte das Angebot nicht angenommen werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Angebot angenommen und Projekt erfolgreich erstellt" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Dieses Zitat kann nicht abgelehnt werden" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "Zitat konnte nicht abgelehnt werden: %(error)s" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "Zeiteinträge, nur unbezahlte, letzte 30 Tage" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "Das Angebot konnte aufgrund eines Datenbankfehlers nicht abgelehnt werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "Data Sources" +#~ msgstr "Datenquellen" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Angebot abgelehnt" +#~ msgid "Components" +#~ msgstr "Komponenten" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "Nur Entwurfs- oder abgelehnte Angebote können gelöscht werden" +#~ msgid "Add table to report" +#~ msgstr "Tabelle zum Bericht hinzufügen" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "Das Angebot konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "Table" +#~ msgstr "Tabelle" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Angebot erfolgreich gelöscht" +#~ msgid "Add chart to report" +#~ msgstr "Diagramm zum Bericht hinzufügen" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "Zahlungsanbieter erfolgreich erstellt." +#~ msgid "Chart" +#~ msgstr "Diagramm" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "Kein Zahlungsanbieter konfiguriert. Bitte wenden Sie sich an einen Administrator." +#~ msgid "Add doughnut chart to report" +#~ msgstr "Ringdiagramm zum Bericht hinzufügen" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "Stripe API-Schlüssel nicht konfiguriert." +#~ msgid "Doughnut Chart" +#~ msgstr "Ringdiagramm" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "Zahlung erfolgreich verarbeitet." +#~ msgid "Add bar chart to report" +#~ msgstr "Balkendiagramm zum Bericht hinzufügen" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "Ungültiges Datumsformat ab Datum" +#~ msgid "Bar Chart" +#~ msgstr "Balkendiagramm" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Ungültiges Datumsformat" +#~ msgid "Add summary to report" +#~ msgstr "Zusammenfassung zum Bericht hinzufügen" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "Sie sind nicht berechtigt, diese Zahlung anzuzeigen" +#~ msgid "Report Canvas" +#~ msgstr "Berichtsleinwand" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "Es sind Rechnung, Betrag und Zahlungsdatum erforderlich" +#~ msgid "Report canvas" +#~ msgstr "Bericht-Leinwand" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "Ausgewählte Rechnung nicht gefunden" +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" +#~ "Ziehen Sie Datenquellen und Komponenten " +#~ "hierher, um Ihren Bericht zu erstellen" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "Sie sind nicht berechtigt, Zahlungen zu dieser Rechnung hinzuzufügen" +#~ msgid "Advanced Filters" +#~ msgstr "Erweiterte Filter" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "Der Zahlungsbetrag muss größer als Null sein" +#~ msgid "Unpaid Hours Only" +#~ msgstr "Nur unbezahlte Stunden" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Ungültiger Zahlungsbetrag" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "Unbezahlt = abrechenbar, noch auf keiner Rechnung." -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Ungültiges Zahlungsdatumsformat" +#~ msgid "Custom Field" +#~ msgstr "Benutzerdefiniertes Feld" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "Die Gateway-Gebühr darf nicht negativ sein" +#~ msgid "No Filter" +#~ msgstr "Kein Filter" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Ungültiger Betrag der Gateway-Gebühr" +#~ msgid "Field Value" +#~ msgstr "Feldwert" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "Die Zahlung konnte aufgrund eines Datenbankfehlers nicht erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "Sie sind nicht berechtigt, diese Zahlung zu bearbeiten" - -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "Die Zahlung konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Zahlung erfolgreich aktualisiert" - -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "Sie sind nicht berechtigt, diese Zahlung zu löschen" +#~ msgid "e.g., MM, PB" +#~ msgstr "z. B. MM, PB" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "Die Zahlung konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "Geben Sie den Filterwert ein (z. B. Verkäuferkürzel)" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Zahlung erfolgreich gelöscht" +#~ msgid "Report Preview" +#~ msgstr "Berichtsvorschau" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "Keine Zahlungen zum Löschen ausgewählt" +#~ msgid "Loading preview..." +#~ msgstr "Vorschau wird geladen..." -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "Zahlungen konnten aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "Save Report" +#~ msgstr "Bericht speichern" -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "Keine Zahlungen ausgewählt" +#~ msgid "Report Name" +#~ msgstr "Berichtsname" -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "Zahlungen konnten aufgrund eines Datenbankfehlers nicht aktualisiert werden" +#~ msgid "My Custom Report" +#~ msgstr "Mein benutzerdefinierter Bericht" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "Das Startdatum muss vor dem Enddatum liegen" +#~ msgid "Private" +#~ msgstr "Privat" -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "Für diesen Standort wurde kein Tagessatz gefunden. Bitte konfigurieren Sie zuerst die Tarife." +#~ msgid "Team" +#~ msgstr "Team" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Der Tagessatzanspruch wurde erfolgreich erstellt" +#~ msgid "Iterative Report Generation" +#~ msgstr "Iterative Berichtsgenerierung" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Fehler beim Erstellen des Tagegeldanspruchs" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" +#~ "Einen Bericht pro benutzerdefiniertem Feldwert" +#~ " generieren (z. B. einen Bericht pro" +#~ " Verkäufer)" -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "Sie sind nicht berechtigt, diese Tagessatzabrechnung einzusehen" +#~ msgid "Custom Field Name" +#~ msgstr "Name des benutzerdefinierten Feldes" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "Sie sind nicht berechtigt, diesen Tagegeldanspruch zu bearbeiten" +#~ msgid "Select Field" +#~ msgstr "Feld auswählen" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "Genehmigte oder erstattete Tagessatzansprüche können nicht bearbeitet werden" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" +#~ "Das benutzerdefinierte Feld auswählen, über" +#~ " das iteriert werden soll (z. B. " +#~ "„salesman“)" -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "Der Tagegeldanspruch wurde erfolgreich aktualisiert" +#~ msgid "Please select a data source first" +#~ msgstr "Bitte wählen Sie zuerst eine Datenquelle aus" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Fehler beim Aktualisieren des Tagegeldanspruchs" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "Sie sind nicht berechtigt, diesen Tagegeldanspruch zu löschen" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Der Tagegeldanspruch wurde erfolgreich gelöscht" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Fehler beim Löschen des Tagessatzanspruchs" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "Es wurden keine Tagegeldansprüche zum Löschen ausgewählt" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "Die Tagegeldansprüche konnten aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "%(count)d Tagegeldansprüche erfolgreich gelöscht" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "Übersprungene %(count)d Tagegeldansprüche: %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "Es wurden keine Tagessatzansprüche ausgewählt" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "Die Tagegeldansprüche konnten aufgrund eines Datenbankfehlers nicht aktualisiert werden" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "%(count)d Tagegeldansprüche wurden erfolgreich auf %(status)s aktualisiert" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "Übersprungen %(count)d Tagegeldansprüche (keine Berechtigung)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Nur Administratoren können Tagessatzansprüche genehmigen" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Es können nur noch offene Tagesgeldansprüche genehmigt werden" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Der Tagegeldanspruch wurde erfolgreich genehmigt" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Fehler bei der Genehmigung des Tagegeldanspruchs" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Nur Administratoren können Tagesgeldansprüche ablehnen" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Lediglich anhängige Tagesgeldansprüche können abgelehnt werden" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Anspruch auf Tagesgeld abgelehnt" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Fehler bei der Ablehnung des Tagegeldanspruchs" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Tagessatz erfolgreich erstellt" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Fehler beim Erstellen des Tagessatzes" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Der Tagessatz wurde erfolgreich aktualisiert" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Fehler beim Aktualisieren des Tagessatzes" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "Tarif kann nicht gelöscht werden: Er wird von %(count)d Tagessatzansprüchen verwendet. Deaktivieren Sie es stattdessen." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "Tagessatz erfolgreich gelöscht" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Fehler beim Löschen des Tagessatzes" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "Sie haben keine Berechtigung, auf diese Seite zuzugreifen" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "Rollenname ist erforderlich" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "Eine Rolle mit diesem Namen existiert bereits" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "Die Rolle konnte aufgrund eines Datenbankfehlers nicht erstellt werden" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Rolle erfolgreich erstellt" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "Namen von Systemrollen können nicht geändert werden" - -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "Die Rolle konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden" - -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Rolle erfolgreich aktualisiert" - -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "Sie haben keine Berechtigung, diese Aktion auszuführen" - -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "Systemrollen können nicht gelöscht werden" - -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "Die den Benutzern zugewiesene Rolle kann nicht gelöscht werden. Bitte weisen Sie zuerst Benutzer neu zu." - -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "Die Rolle konnte aufgrund eines Datenbankfehlers nicht gelöscht werden" - -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "Rolle „%(name)s“ erfolgreich gelöscht" - -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "Nur Super-Admins können die Rolle super_admin zuweisen" - -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "Nur Super-Admins können sich selbst die Admin-Rolle entziehen" - -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "Nur Super-Admins können anderen Benutzern die Admin-Rolle entziehen" - -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "Benutzerrollen konnten aufgrund eines Datenbankfehlers nicht aktualisiert werden" - -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Benutzerrollen erfolgreich aktualisiert" - -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "Vorlage erfolgreich erstellt." - -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "Vorlage nicht gefunden." - -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "Sie haben keine Berechtigung, diese Vorlage anzuzeigen." - -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "Sie haben keine Berechtigung, diese Vorlage zu bearbeiten." - -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "Vorlage erfolgreich aktualisiert." - -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "Vorlage erfolgreich gelöscht." - -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "Bitte wählen Sie einen Kunden aus." +#~ msgid "Failed to generate preview" +#~ msgstr "Vorschau konnte nicht generiert werden" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "Projekt erfolgreich aus Vorlage erstellt." +#~ msgid "Unknown error occurred" +#~ msgstr "Unbekannter Fehler aufgetreten" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "Projektname und Kunde sind erforderlich" +#~ msgid "Error loading preview" +#~ msgstr "Fehler beim Laden der Vorschau" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Ungültiger Budgetbetrag" +#~ msgid "No data found for the selected filters" +#~ msgstr "Keine Daten für die ausgewählten Filter gefunden" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Ungültiger Budgetschwellenwert in Prozent (0–100)" +#~ msgid "Please enter a report name" +#~ msgstr "Bitte geben Sie einen Berichtsnamen ein" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "Projekt konnte aufgrund eines Datenbankfehlers nicht gespeichert werden" +#~ msgid "Report created successfully!" +#~ msgstr "Bericht erfolgreich erstellt!" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Projekt nicht gefunden" +#~ msgid "Report updated successfully!" +#~ msgstr "Bericht erfolgreich aktualisiert!" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "Projekt konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden" +#~ msgid "Failed to save report" +#~ msgstr "Bericht konnte nicht gespeichert werden" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "Sie haben keine Berechtigung zum Archivieren von Projekten" +#~ msgid "Error saving report" +#~ msgstr "Fehler beim Speichern des Berichts" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "Das Projekt ist bereits archiviert" +#~ msgid "Custom Report" +#~ msgstr "Benutzerdefinierter Bericht" -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "Sie sind nicht berechtigt, Projekte zu dearchivieren" +#~ msgid "Data Table" +#~ msgstr "Datentabelle" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "Das Projekt ist bereits aktiv" +#~ msgid "No data found" +#~ msgstr "Keine Daten gefunden" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "Sie sind nicht berechtigt, Projekte zu deaktivieren" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" +#~ "Dieser Bericht hat keine Daten, die " +#~ "den aktuellen Filtern entsprechen. Versuchen" +#~ " Sie, Ihren Datumsbereich oder Ihre " +#~ "Filter anzupassen." -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "Das Projekt ist bereits inaktiv" +#~ msgid "No summary data available." +#~ msgstr "Keine Zusammenfassungsdaten verfügbar." -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "Sie haben keine Berechtigung zum Aktivieren von Projekten" +#~ msgid "No data available for chart." +#~ msgstr "Keine Daten für das Diagramm verfügbar." -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "Projekt mit vorhandenen Zeiteinträgen kann nicht gelöscht werden" +#~ msgid "No components configured" +#~ msgstr "Keine Komponenten konfiguriert" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "Das Projekt konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" +#~ "Für diesen Bericht sind keine " +#~ "Komponenten konfiguriert. Bitte bearbeiten Sie" +#~ " den Bericht, um Komponenten hinzuzufügen." -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "Sie sind nicht berechtigt, Projekte zu löschen" +#~ msgid "Export Time Entries" +#~ msgstr "Zeiteinträge exportieren" -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "Keine Projekte zum Löschen ausgewählt" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" +#~ "Verwenden Sie die folgenden Filter, um" +#~ " Ihren Export anzupassen. Wählen Sie " +#~ "CSV- oder Excel-Format. Alle Filter " +#~ "sind optional - lassen Sie das " +#~ "Feld leer, um alle Einträge im " +#~ "Datumsbereich einzuschließen." -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "Projekte konnten aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "Export format" +#~ msgstr "Exportformat" -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "Es wurden keine Projekte gelöscht" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "z. B. Entwicklung, Besprechung, dringend" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "Sie sind nicht berechtigt, den Projektstatus zu ändern" +#~ msgid "Reset Filters" +#~ msgstr "Filter zurücksetzen" -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "Keine Projekte ausgewählt" +#~ msgid "CSV / Excel" +#~ msgstr "CSV / Excel" -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "Der Projektstatus konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" +#~ "Die Datei wird mit einem Dateinamen " +#~ "heruntergeladen, der den Datumsbereich und " +#~ "die angewandten Filter angibt." -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "Es wurden keine Projekte aktualisiert" +#~ msgid "Please select both start and end dates." +#~ msgstr "Bitte Start- und Enddatum auswählen." -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "Das Projekt ist bereits in den Favoriten" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "Das Startdatum muss vor oder gleich dem Enddatum sein." -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Projekt zu Favoriten hinzugefügt" +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "Umfassende Berichte und Analysen für Ihre Zeiterfassungsdaten anzeigen" -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "Das Projekt konnte nicht zu den Favoriten hinzugefügt werden" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" +#~ "Unterstützen Sie die Entwicklung oder " +#~ "erwerben Sie eine Supporter-Lizenz — " +#~ "die App bleibt für alle kostenlos." -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "Projekt ist nicht in den Favoriten" +#~ msgid "Payments Received" +#~ msgstr "Erhaltene Zahlungen" -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Projekt aus Favoriten entfernt" +#~ msgid "Net Received" +#~ msgstr "Netto erhalten" -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "Das Projekt konnte nicht aus den Favoriten entfernt werden" +#~ msgid "After fees" +#~ msgstr "Nach Gebühren" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "Beschreibung, Kategorie, Menge und Datum sind erforderlich" +#~ msgid "Date Range & Comparison" +#~ msgstr "Datumsbereich und Vergleich" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnten keine Kosten hinzugefügt werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "Quick Date Ranges" +#~ msgstr "Schnelle Datumsbereiche" -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Kosten erfolgreich hinzugefügt" +#~ msgid "This Week" +#~ msgstr "Diese Woche" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Kosten nicht gefunden" +#~ msgid "This Month" +#~ msgstr "Dieser Monat" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "Sie sind nicht berechtigt, diese Kosten zu bearbeiten" +#~ msgid "This Year" +#~ msgstr "Dieses Jahr" -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnten die Kosten nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "Custom Range" +#~ msgstr "Benutzerdefinierter Zeitraum" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Kosten erfolgreich aktualisiert" +#~ msgid "Comparison View" +#~ msgstr "Vergleichsansicht" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "Sie sind nicht berechtigt, diese Kosten zu löschen" +#~ msgid "Week in Review" +#~ msgstr "Rückblick der Woche" -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "Die in Rechnung gestellten Kosten können nicht gelöscht werden" +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "Stunden dieser Woche, Top-Projekte, abrechenbar vs. nicht abrechenbar" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "Kosten konnten aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." +#~ msgid "This Month vs Last Month" +#~ msgstr "Dieser Monat vs. letzter Monat" -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Name und Stückpreis sind erforderlich" +#~ msgid "Compare current month with previous month" +#~ msgstr "Aktuellen Monat mit dem Vormonat vergleichen" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Ungültiges Mengenformat" +#~ msgid "This Year vs Last Year" +#~ msgstr "Dieses Jahr vs. letztes Jahr" -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Ungültiges Stückpreisformat" +#~ msgid "Compare current year with previous year" +#~ msgstr "Aktuelles Jahr mit dem Vorjahr vergleichen" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte keine zusätzliche Ware hinzugefügt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Extra gut erfolgreich hinzugefügt" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Extra gut nicht gefunden" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "Sie haben keine Berechtigung, dieses Extragut zu bearbeiten" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "Extragut konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Extra gut erfolgreich aktualisiert" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "Sie sind nicht berechtigt, dieses Extragut zu löschen" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "Zusätzliche Ware, die einer Rechnung hinzugefügt wurde, kann nicht gelöscht werden" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "Extragut konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Projekt erfolgreich erstellt" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Ungültiges Format für den Rabattbetrag" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "Das Angebot muss genehmigt werden, bevor es gesendet werden kann" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "Angebot kann nicht gesendet werden: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "Sie sind nicht berechtigt, Anhänge zu diesem Angebot hochzuladen" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "Sie sind nicht berechtigt, diesen Anhang herunterzuladen" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "Sie sind nicht berechtigt, eine Genehmigung für dieses Angebot anzufordern" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Dieses Angebot bedarf keiner Genehmigung" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "Genehmigung kann nicht angefordert werden: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte keine Genehmigung angefordert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Genehmigung erfolgreich angefordert" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Dieses Angebot muss nicht genehmigt werden" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "Angebot kann nicht genehmigt werden: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "Das Angebot konnte aufgrund eines Datenbankfehlers nicht genehmigt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Angebot erfolgreich genehmigt" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "Zitat kann nicht abgelehnt werden: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Angebotsgenehmigung abgelehnt" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "Die Vorlage konnte aufgrund eines Datenbankfehlers nicht erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Vorlage erfolgreich erstellt" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "Angebots-ID ist erforderlich" - -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "Sie sind nicht berechtigt, eine Vorlage aus diesem Angebot zu erstellen" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "Die Vorlage konnte aufgrund eines Datenbankfehlers nicht gespeichert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Vorlage erfolgreich gespeichert" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "Sie verfügen nicht über die Berechtigung, dieses Angebot zu exportieren" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Fehler beim Generieren von PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "Die E-Mail-Adresse des Empfängers ist erforderlich" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Angebot erfolgreich an %(email)s gesendet" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "Angebot konnte nicht gesendet werden: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Fehler beim Senden der E-Mail: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "Sie sind nicht berechtigt, dieses Zitat zu duplizieren" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte das Angebot nicht dupliziert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte das duplizierte Angebot nicht abgeschlossen werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "Angebot %(quote_number)s wurde als Duplikat erstellt" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Bitte wählen Sie eine Aktion und mindestens ein Zitat aus" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "Ungültige Angebots-IDs" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "Keine Zitate gefunden oder Sie haben keine Berechtigung" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "Doppelte %(count)d Zitat(e)" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "%(count)d Zitat(e) konnten nicht dupliziert werden" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Fehler beim Duplizieren von Anführungszeichen" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "%(count)d Angebot(e) als gesendet markiert" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "%(count)d Angebote konnten nicht als gesendet markiert werden" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Fehler beim Aktualisieren der Angebote" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "Gelöschte %(count)d Zitat(e)" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "%(count)d Zitat(e) konnten nicht gelöscht werden (möglicherweise in Verwendung)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Fehler beim Löschen der Angebote" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Ungültige Aktion" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "Sie haben keine Berechtigung, Bilder zu diesem Angebot hochzuladen" - -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "Sie haben keine Berechtigung, Bilder von diesem Angebot zu löschen" - -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "Name, Projekt, Kunde, Häufigkeit und nächstes Ausführungsdatum sind erforderlich" - -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Ungültiges Datumsformat für die nächste Ausführung" - -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Ungültiges Enddatumsformat" - -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Ausgewähltes Projekt oder Kunde nicht gefunden" - -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte keine wiederkehrende Rechnung erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "Sie sind nicht berechtigt, diese wiederkehrende Rechnung anzuzeigen" - -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "Sie sind nicht berechtigt, diese wiederkehrende Rechnung zu bearbeiten" - -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "Die wiederkehrende Rechnung konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Die wiederkehrende Rechnung wurde erfolgreich aktualisiert" - -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "Sie sind nicht berechtigt, diese wiederkehrende Rechnung zu löschen" - -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "Die wiederkehrende Rechnung konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "Wiederkehrende Aufgabe erfolgreich erstellt" - -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "Sie haben keine Berechtigung, Zeiteinträge anderer Benutzer anzuzeigen" - -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "Sie haben keine Berechtigung, Zeiteinträge anderer Benutzer zu exportieren" - -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Start" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "Ende" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "Dauer (Stunden)" - -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Aufgabe" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Notizen" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -msgid "Billed" -msgstr "Abgerechnet" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Kunde" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Benutzer" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "Ja" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "NEIN" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "Sie haben keine Berechtigung, auf diese Seite zuzugreifen." - -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "Der Filter konnte aufgrund eines Datenbankfehlers nicht gelöscht werden" - -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "Fehler beim Laden geplanter Berichte. Bitte überprüfen Sie die Protokolle." - -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "Bitte füllen Sie alle erforderlichen Felder aus." - -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "Bitte geben Sie einen benutzerdefinierten Feldnamen an, wenn Sie die Berichtsiteration aktivieren." - -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "Geplanter Bericht erfolgreich erstellt." - -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "Geplanter Bericht erfolgreich gelöscht." - -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "Zugriff verweigert" - -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "Sie haben keine Berechtigung, diesen Zeitplan zu korrigieren." - -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "Geplanter Bericht gelöscht: Gespeicherte Ansicht existiert nicht mehr." - -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "Geplanter Bericht deaktiviert: Ungültige Konfiguration." - -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "Geplanter Bericht deaktiviert: Konfiguration konnte nicht geparst werden." - -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "Geplanter Bericht validiert und reaktiviert." - -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "Gespeicherte Berichtsansicht nicht gefunden" - -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "Ihre Einstellungen werden auf der Haupteinstellungsseite verwaltet." - -#: app/routes/setup.py:107 -msgid "Could not save settings. Please check server logs." -msgstr "Einstellungen konnten nicht gespeichert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "Einrichtung abgeschlossen! Vielen Dank, dass Sie uns dabei geholfen haben, TimeTracker zu verbessern." - -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "Einrichtung abgeschlossen! Detaillierte Analysen sind deaktiviert; anonyme Basis-Telemetrie bleibt aktiv." - -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "Google Calendar OAuth-Anmeldedaten wurden konfiguriert." - -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "Projekt- und Aufgabenname sind erforderlich" - -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "Ungültiger Aufgabenname: %(error)s" - -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "Das ausgewählte Projekt existiert nicht" - -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "Aufgabe nicht gefunden" - -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "Sie haben keinen Zugriff auf diese Aufgabe" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Sie können nur Aufgaben bearbeiten, die Sie erstellt haben" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "Der Aufgabenname ist erforderlich" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "Projekt ist erforderlich" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "Der Status konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "Die Aufgabe konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "Sie sind nicht berechtigt, diese Aufgabe zu aktualisieren" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "Sie können nur Aufgaben aktualisieren, die Sie erstellt haben" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "Sie können nur von Ihnen erstellte Aufgaben zuweisen" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "Der ausgewählte Benutzer existiert nicht" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Aufgabe nicht zugewiesen" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Sie können nur Aufgaben löschen, die Sie erstellt haben" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "Aufgabe mit vorhandenen Zeiteinträgen kann nicht gelöscht werden" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "Die Aufgabe konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "Keine Aufgaben zum Löschen ausgewählt" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnten Aufgaben nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "Keine Aufgaben ausgewählt" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "Aufgrund eines Datenbankfehlers konnten Aufgaben nicht aktualisiert werden" - -#: app/routes/tasks.py:995 -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Fälligkeitsdatum ist erforderlich (JJJJ-MM-TT)" - -#: app/routes/tasks.py:996 -msgid "Due date is required" -msgstr "Fälligkeitsdatum ist erforderlich" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Ungültiges Datumsformat. Verwenden Sie JJJJ-MM-TT" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -msgid "Database error" -msgstr "Datenbankfehler" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -msgid "Updated %(count)s task(s)" -msgstr "%(count)s Aufgabe(n) aktualisiert" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -msgid "No tasks updated" -msgstr "Keine Aufgaben aktualisiert" - -#: app/routes/tasks.py:1046 -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "Fälligkeitsdatum von %(count)s Aufgabe(n) erfolgreich auf %(date)s aktualisiert" - -#: app/routes/tasks.py:1050 -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "%(count)s Aufgabe(n) übersprungen (keine Berechtigung)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Ungültiger Prioritätswert" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Kein Benutzer für die Zuweisung ausgewählt" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Ungültiger Benutzer ausgewählt" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "Aufgrund eines Datenbankfehlers konnten keine Aufgaben zugewiesen werden" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Kein Projekt ausgewählt" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Ungültiges Projekt ausgewählt" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "Aufgaben konnten aufgrund eines Datenbankfehlers nicht verschoben werden" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Nur Administratoren können alle überfälligen Aufgaben anzeigen" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "Sie haben keinen Zugriff auf diesen Kanal" +#~ msgid "Comparison Results" +#~ msgstr "Vergleichsergebnisse" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "Nachricht darf nicht leer sein" +#~ msgid "Export Reports" +#~ msgstr "Berichte exportieren" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "Anhangsdaten waren ungültig; Nachricht ohne Anhang gesendet." - -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "Ungültige Nachricht" - -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "Kein Anhang gefunden" - -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "Ungültiger Dateiname" - -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "Serverfehler: Upload-Verzeichnis konnte nicht erstellt werden" - -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "Serverfehler: Datei konnte nicht gespeichert werden" - -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "Direktnachricht an sich selbst kann nicht erstellt werden" - -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "Benutzer ist nicht aktiv" - -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "Zeiteintrag genehmigt" - -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "Zeiteintrag abgelehnt" - -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "Genehmigung angefordert" - -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "Genehmigung abgebrochen" - -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "Die Vorlage konnte aufgrund eines Datenbankfehlers nicht erstellt werden" - -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "Die Vorlage konnte aufgrund eines Datenbankfehlers nicht aktualisiert werden" - -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "Die Vorlage konnte aufgrund eines Datenbankfehlers nicht gelöscht werden" - -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "Entweder ein Projekt oder ein Kunde ist erforderlich" - -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "Der Timer für ein archiviertes Projekt kann nicht gestartet werden. Bitte dearchivieren Sie zunächst das Projekt." - -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "Der Timer für ein inaktives Projekt kann nicht gestartet werden" - -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "Die ausgewählte Aufgabe ist für das ausgewählte Projekt ungültig" - -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "Ungültiger Kunde ausgewählt" - -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "Aufgaben können nur für projektbasierte Timer ausgewählt werden" - -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -msgid "You do not have access to this project" -msgstr "Sie haben keinen Zugriff auf dieses Projekt" - -#: app/routes/timer.py:171 -msgid "You do not have access to this client" -msgstr "Sie haben keinen Zugriff auf diesen Kunden" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Sie haben bereits einen aktiven Timer. Stoppen Sie es, bevor Sie ein neues beginnen." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "Der Timer konnte aufgrund eines Datenbankfehlers nicht gestartet werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Unbekannt" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "Timer gestartet" - -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "Die Vorlage muss über ein Projekt verfügen, um einen Timer zu starten" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "Der Timer für dieses Projekt kann nicht gestartet werden" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "Kein aktiver Timer zum Stoppen" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Kein Projekt" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "Timer kann nicht gestoppt werden: %(error)s" - -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "Timer konnte aufgrund eines Fehlers nicht gestoppt werden. Bitte versuchen Sie es erneut oder wenden Sie sich an den Support, wenn das Problem anhält." - -#: app/routes/timer.py:651 -msgid "No active timer to pause" -msgstr "Kein aktiver Timer zum Pausieren" - -#: app/routes/timer.py:655 -msgid "Timer paused" -msgstr "Timer pausiert" - -#: app/routes/timer.py:660 -msgid "Could not pause timer. Please try again." -msgstr "Timer konnte nicht pausiert werden. Bitte versuchen Sie es erneut." - -#: app/routes/timer.py:676 -msgid "No active timer to resume" -msgstr "Kein aktiver Timer zum Fortsetzen" - -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "Timer fortgesetzt" - -#: app/routes/timer.py:685 -msgid "Could not resume timer. Please try again." -msgstr "Timer konnte nicht fortgesetzt werden. Bitte versuchen Sie es erneut." - -#: app/routes/timer.py:701 -msgid "No active timer to adjust" -msgstr "Kein aktiver Timer zum Anpassen" - -#: app/routes/timer.py:707 -msgid "Invalid adjustment value" -msgstr "Ungültiger Anpassungswert" - -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "Sie können nur Ihre eigenen Timer bearbeiten" - -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Ungültige Aufgabe für das ausgewählte Projekt ausgewählt" - -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "Die Startzeit darf nicht in der Zukunft liegen" - -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Ungültiges Format für Startdatum/-uhrzeit" - -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "Die Endzeit muss nach der Startzeit liegen" - -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Ungültiges Format für Enddatum/-uhrzeit" - -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Timer erfolgreich aktualisiert" - -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "Sie haben keine Berechtigung, diesen Zeiteintrag anzuzeigen" - -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Sie können nur Ihre eigenen Timer löschen" - -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "Ein aktiver Timer kann nicht gelöscht werden" - -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "Der Timer konnte aufgrund eines Datenbankfehlers nicht gelöscht werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "Keine Zeiteinträge ausgewählt" - -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "Ungültige Eintrags-IDs" - -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "Keine Zeiteinträge gefunden" - -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "%(count)d Zeiteintrag/Zeiteinträge erfolgreich gelöscht" - -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "%(count)d Zeiteintrag/Zeiteinträge übersprungen (keine Berechtigung oder aktiver Timer)" - -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "Bitte geben Sie entweder Start-/Endzeit oder eine Arbeitsdauer (HH:MM) an." - -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "Entweder ein Projekt oder ein Kunde muss ausgewählt werden" - -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Ungültiges Datums-/Uhrzeitformat" - -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "Manueller Eintrag erstellt für %(project)s - %(task)s" - -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "Manueller Eintrag erstellt für %(target)s" - -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Alle Felder sind Pflichtfelder" - -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "Für ein archiviertes Projekt können keine Zeiteinträge erstellt werden. Bitte dearchivieren Sie zunächst das Projekt." - -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "Für ein inaktives Projekt können keine Zeiteinträge erstellt werden" - -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Ungültige Aufgabe ausgewählt" - -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "Das Enddatum muss nach oder gleich dem Startdatum liegen" - -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "Der Datumsbereich darf 31 Tage nicht überschreiten" - -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Ungültiges Zeitformat" - -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "Im ausgewählten Bereich wurden keine gültigen Daten gefunden" - -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnten keine Masseneinträge erstellt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "Beim Erstellen von Masseneinträgen ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut." - -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Sie können nur Ihre eigenen Timer duplizieren" - -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "Sie können nur Ihre eigenen Timer fortsetzen" - -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "Projekt existiert nicht mehr" - -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "Kunde existiert nicht mehr oder ist inaktiv" - -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "Timer ist nicht mit einem Projekt oder Kunden verknüpft" - -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "Aufgrund eines Datenbankfehlers konnte der Timer nicht fortgesetzt werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "Timer fortgesetzt" - -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "Ungültiger Zahlungsstatus" - -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "Zeiteinträge konnten aufgrund eines Datenbankfehlers nicht aktualisiert werden. Bitte überprüfen Sie die Serverprotokolle." - -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "%(count)d Zeiteintrag/Zeiteinträge erfolgreich als %(status)s markiert" - -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "bezahlt" - -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "unbezahlt" - -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Ungültige Zeitzone ausgewählt" - -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "Die Standardstunden pro Tag müssen zwischen 0,5 und 24 liegen" - -#: app/routes/user.py:182 -msgid "Standard hours per week must be between 1 and 168" -msgstr "Standardstunden pro Woche müssen zwischen 1 und 168 liegen" - -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Einstellungen erfolgreich gespeichert" - -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Fehler beim Speichern der Einstellungen: %(error)s" - -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "Diese Instanz ist bereits lizenziert." - -#: app/routes/user.py:265 -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "Lizenz aktiviert. Vielen Dank für Ihre Unterstützung von TimeTracker!" - -#: app/routes/user.py:267 -msgid "Error saving settings." -msgstr "Fehler beim Speichern der Einstellungen." - -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Einstellungen aktualisiert" - -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Sprache erfolgreich aktualisiert" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Ungültige Sprache" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "Sprache auf %(language)s aktualisiert" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "Webhook-Name ist erforderlich" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "Webhook-URL ist erforderlich" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "Es muss mindestens ein Ereignis ausgewählt werden" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook erfolgreich erstellt" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Fehler beim Erstellen des Webhooks" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "Fehler beim Erstellen des Webhooks: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook wurde erfolgreich aktualisiert" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "Fehler beim Aktualisieren des Webhooks: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook erfolgreich gelöscht" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "Fehler beim Löschen des Webhooks: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Bitte geben Sie eine gültige Zielstundenzahl ein (größer als 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "Für diese Woche existiert bereits ein Ziel. Bitte bearbeiten Sie stattdessen das vorhandene Ziel." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "Wöchentliches Zeitziel erfolgreich erstellt!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "Ziel konnte nicht erstellt werden. Bitte versuchen Sie es erneut." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "Sie haben keine Berechtigung, dieses Ziel anzuzeigen" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "Sie sind nicht berechtigt, dieses Ziel zu bearbeiten" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "Wöchentliches Zeitziel erfolgreich aktualisiert!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "Das Ziel konnte nicht aktualisiert werden. Bitte versuchen Sie es erneut." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "Sie sind nicht berechtigt, dieses Ziel zu löschen" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "Wöchentliches Zeitziel erfolgreich gelöscht" - -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "Ziel konnte nicht gelöscht werden. Bitte versuchen Sie es erneut." - -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "Workflow erfolgreich erstellt" - -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "Aufgabenstatusänderungen" - -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "Aufgabe erstellt" - -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "Aufgabe abgeschlossen" - -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "Zeit erfasst" - -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "Frist nähert sich" - -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "Budgetschwelle erreicht" - -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "Rechnung erstellt" - -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "Rechnung bezahlt" - -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "Zeiteintrag protokollieren" - -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "Benachrichtigung senden" - -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Aktualisierungsstatus" - -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "Aufgabe zuweisen" - -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Aufgabe erstellen" - -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "Projekt aktualisieren" - -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "E-Mail senden" - -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "Webhook auslösen" - -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "Workflow erfolgreich aktualisiert" - -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "Workflow erfolgreich gelöscht" - -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "Stundenzettelzeitraum bereit: %(start)s bis %(end)s" - -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "Stundenzettelzeitraum eingereicht" - -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "Stundenzettelzeitraum genehmigt" - -#: app/routes/workforce.py:180 -msgid "Timesheet period rejected" -msgstr "Stundenzeitraum abgelehnt" - -#: app/routes/workforce.py:191 -msgid "Only admins can close periods" -msgstr "Nur Administratoren können Zeiträume schließen" - -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "Stundenzettelzeitraum geschlossen" - -#: app/routes/workforce.py:243 -msgid "Timesheet policy updated" -msgstr "Stundenblatt-Richtlinie aktualisiert" - -#: app/routes/workforce.py:257 -msgid "Name and code are required" -msgstr "Name und Code sind erforderlich" - -#: app/routes/workforce.py:270 -msgid "Leave type created" -msgstr "Abwesenheitstyp erstellt" - -#: app/routes/workforce.py:303 -msgid "Leave type and date range are required" -msgstr "Abwesenheitstyp und Datumsbereich sind erforderlich" - -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "Abwesenheitsantrag eingereicht" - -#: app/routes/workforce.py:344 -msgid "Time-off request approved" -msgstr "Urlaubsantrag genehmigt" - -#: app/routes/workforce.py:368 -msgid "Time-off request rejected" -msgstr "Urlaubsantrag abgelehnt" - -#: app/routes/workforce.py:405 -msgid "Name and date range are required" -msgstr "Name und Datumsbereich sind erforderlich" - -#: app/routes/workforce.py:411 -msgid "Holiday created" -msgstr "Feiertag erstellt" - -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "Start- und Enddatum sind für den Lohnexport erforderlich" - -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "Start- und Enddatum sind für den Kapazitätsexport erforderlich" - -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "übrig" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Erfolg" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Fehler" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Warnung" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Information" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Laden..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Sparen..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "Löschen..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Stornieren" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Bestätigen" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Schließen" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Speichern" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Löschen" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Bearbeiten" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Hinzufügen" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Entfernen" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "OK" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "Sind Sie sicher, dass Sie dies löschen möchten?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "Sie haben nicht gespeicherte Änderungen. Sind Sie sicher, dass Sie gehen möchten?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "Der Vorgang ist fehlgeschlagen" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Der Vorgang wurde erfolgreich abgeschlossen" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "Keine Elemente ausgewählt" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Ungültige Eingabe" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Dieses Feld ist erforderlich" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Kein aktiver Timer" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Timer gestoppt" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "Timer konnte nicht gestoppt werden" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Fehler beim Stoppen des Timers" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "Kein Formular zum Speichern" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "Kein Timer gefunden" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Der Timer wurde aufgrund von Inaktivität gestoppt" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "Bitte wählen Sie entweder ein Projekt oder einen Kunden aus" - -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Zum Inhalt springen" - -#: app/templates/base.html:480 -msgid "Main navigation" -msgstr "Hauptnavigation" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navigation" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -msgid "Open command palette" -msgstr "Befehlspalette öffnen" - -#: app/templates/base.html:512 -msgid "Commands" -msgstr "Befehle" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Seitenleiste umschalten" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Armaturenbrett" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Timer" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -msgid "Time entries" -msgstr "Zeiteinträge" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Berichte" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Kalender" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Kalenderansicht" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "Integrationen" - -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Zeiterfassung" - -#: app/templates/base.html:596 -msgid "Time Approvals" -msgstr "Zeitgenehmigungen" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "Projektvorlagen" - -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "Gantt-Diagramm" - -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Aufgaben" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "Probleme" - -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Kanban-Board" - -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Wöchentliche Ziele" - -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "Belegschaft" - -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Zeiteintragsvorlagen" - -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" - -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Kunden" - -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "Kontakte" - -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "über Kunden" - -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "Deals" - -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "Leads" - -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Zitate" - -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Finanzen und Ausgaben" - -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "Alle Berichte" - -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "Berichtsgenerator" - -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "Gespeicherte Ansichten" - -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Geplante Berichte" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Rechnungen" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "Rechnungsgenehmigungen" - -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "Zahlungsanbieter" - -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Wiederkehrende Rechnungen" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Zahlungen" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Kosten" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Kilometerstand" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Pro Tag" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Budgetwarnungen" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Inventar" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Lagerartikel" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Lagerhäuser" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Lieferanten" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Bestellungen" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Lagerbestände" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Lagerbewegungen" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Überweisungen" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Anpassungen" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Reservierungen" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Warnungen bei niedrigem Lagerbestand" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Analytik" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Tools & Daten" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Importieren / Exportieren" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Gespeicherte Filter" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Admin" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Admin-Dashboard" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Benutzerverwaltung" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "Benutzer verwalten" - -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Rollen und Berechtigungen" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "PDF-Vorlagen" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "Rechnungs-PDF" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Angebots-PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Systemeinstellungen" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Einstellungen" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "Modulverwaltung" - -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "E-Mail-Konfiguration" - -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "E-Mail-Vorlagen" - -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "OIDC-Einstellungen" - -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "Sicherheit & Zugriff" - -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "API-Tokens" - -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Audit-Protokolle" - -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "Datenverwaltung" - -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Ausgabenkategorien" - -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Tagessätze" - -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "Benutzerdefinierte Felder" - -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "Link-Vorlagen" - -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "Systemwartung" - -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Systeminformationen" - -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Backups" - -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "Datenerfassung" - -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "Über" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Helfen" - -#: app/templates/base.html:1189 -msgid "Open support options" -msgstr "Support-Optionen öffnen" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Unterstützen Sie TimeTracker" - -#: app/templates/base.html:1211 -msgid "Open sidebar" -msgstr "Seitenleiste öffnen" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Suchen" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Thema" - -#: app/templates/base.html:1234 -msgid "Theme options" -msgstr "Designoptionen" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Licht" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Dunkel" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "System" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "Chat öffnen" - -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Timer starten" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -msgid "Stop" -msgstr "Stopp" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -msgid "AI Helper" -msgstr "KI-Assistent" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Sprache ändern" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Sprache" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Benutzermenü" - -#: app/templates/base.html:1308 -msgid "Supporter" -msgstr "Unterstützer" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Gast" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Mein Profil" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Meine Einstellungen" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Lizenz" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "Spenden oder Supporter-Lizenz erwerben" - -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Abmelden" - -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "Genießen Sie TimeTracker?" - -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "Unabhängige Entwicklung unterstützen – Lizenzen sind Supporter-Abzeichen, keine Bezahlschranken." - -#: app/templates/base.html:1374 app/templates/main/about.html:212 -msgid "Support / Get key" -msgstr "Support / Schlüssel erhalten" - -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "Buy Me a Coffee" - -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" - -#: app/templates/base.html:1391 -msgid "Support / License" -msgstr "Support / Lizenz" - -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Zurückweisen" - -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "Von einem unabhängigen Entwickler erstellt" - -#: app/templates/base.html:1417 -msgid "Software update" -msgstr "Software-Update" - -#: app/templates/base.html:1425 -msgid "Read more" -msgstr "Mehr lesen" - -#: app/templates/base.html:1430 -msgid "View Release" -msgstr "Release anzeigen" - -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "Für diese Version nicht mehr anzeigen" - -#: app/templates/base.html:1447 -msgid "Quick actions dock" -msgstr "Schnellaktionen-Leiste" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Aktionen" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Protokollzeit" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Neue Aufgabe" - -#: app/templates/base.html:1471 -msgid "New Project" -msgstr "Neues Projekt" - -#: app/templates/base.html:1475 -msgid "New Client" -msgstr "Neuer Kunde" - -#: app/templates/base.html:1491 -msgid "Open AI Helper" -msgstr "KI-Assistent öffnen" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "Fragen Sie zu Ihrer erfassten Arbeit, Zusammenfassungen, Lücken und nächsten Aktionen." - -#: app/templates/base.html:1508 -msgid "Context included" -msgstr "Kontext enthalten" - -#: app/templates/base.html:1509 -msgid "Loading context preview..." -msgstr "Kontext-Vorschau wird geladen..." - -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "Fragen Sie: Woran habe ich diese Woche gearbeitet? Erstellen Sie einen Zeiteintrag aus diesen Notizen..." - -#: app/templates/base.html:1518 -msgid "Send" -msgstr "Senden" - -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "Fantastisch! Sie haben über 100 Stunden erfasst" - -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "Updates und neue Funktionen unterstützen – oder Hinweise mit einem Schlüssel entfernen" - -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "Toller Fortschritt! Sie haben 50+ Einträge protokolliert" - -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "Danke, dass Sie TimeTracker verwenden!" - -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "Erstellen Sie ein API-Token" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "Ihr API-Token" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Anwendungsbeispiele" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "Sind Sie sicher, dass Sie das möchten?" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "deaktivieren" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "aktivieren" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "dieses Token?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Token deaktivieren" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Token aktivieren" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Deaktivieren" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Aktivieren" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "Sind Sie sicher, dass Sie dieses Token löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Token löschen" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Backup erstellen" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Sicherung wiederherstellen" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Vorhandene Backups" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Wichtige Informationen" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Bestätigen Sie den Löschvorgang" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Cache leeren" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "ServiceWorker-Status" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Alle Caches löschen" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "ServiceWorker-Aktionen" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Manuelle harte Aktualisierung" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "Gesamtbenutzer" - -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Alle Zeiten" - -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "Aktive Benutzer" - -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "Derzeit aktiv" - -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Gesamtprojekte" - -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Aktive Projekte" - -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "Gesamteinträge" - -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "Zeiteinträge protokolliert" - -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "Aktive Timer" - -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "Läuft gerade" - -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "Gesamt erfasste Zeit" - -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "Abrechenbare Zeit" - -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "Benutzeraktivität (30 Tage)" - -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "Projektstatus" - -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "Zeiteintrag-Trends (30 Tage)" - -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "Systemzustand" - -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Datenbank" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "Verbunden" - -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "OIDC-Authentifizierung" - -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "Konfiguriert" - -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "Nicht konfiguriert" - -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "OIDC-Benutzer" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "Benutzer" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Admin-Bereiche" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Letzte Aktivität" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Dauer" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "N / A" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "E-Mail-Konfiguration und -Tests" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Konfigurieren und testen Sie die E-Mail-Zustellung" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Zurück zum Admin" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "Konfigurieren Sie hier E-Mail-Einstellungen, um sie in der Datenbank zu speichern." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Aktivieren Sie die Datenbank-E-Mail-Konfiguration" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "Mailserver" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Mail-Port" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Verwenden Sie TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Verwenden Sie SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Benutzername" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Passwort" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "Lassen Sie es leer, um auf dem neuesten Stand zu bleiben" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Standardabsender" - -#: app/templates/admin/email_support.html:82 -msgid "Test recipient email" -msgstr "Test-Empfänger-E-Mail" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "Wird verwendet, um „Test-E-Mail senden“ und Rechnungsvorlagen-Testsendungen vorauszufüllen." - -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Konfiguration speichern" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Zurücksetzen" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "E-Mail-Konfigurationsstatus" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Aktualisieren" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "E-Mail ist konfiguriert!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "Ihre E-Mail-Einstellungen sind ordnungsgemäß eingerichtet." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "E-Mail ist nicht konfiguriert" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "Bitte konfigurieren Sie die E-Mail-Einstellungen mit dem Formular oben." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Konfigurationsfehler" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Konfigurationswarnungen" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Aktuelle E-Mail-Einstellungen" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Hafen" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Passwort festgelegt" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Test-E-Mail senden" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "E-Mail-Adresse des Empfängers" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Konfigurationshandbuch" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Gängige SMTP-Anbieter" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Erfordert App-Passwort" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Wichtige Hinweise" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail erfordert ein App-Passwort, wenn 2FA aktiviert ist" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Starten Sie die Anwendung neu, nachdem Sie die E-Mail-Einstellungen geändert haben" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Überprüfen Sie die Firewall-Regeln, wenn E-Mails nicht gesendet werden" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "Verwenden Sie für die Produktion einen dedizierten E-Mail-Dienst wie SendGrid oder Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "Das Passwort ist festgelegt" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "kein Passwort festgelegt" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "Die Konfiguration konnte nicht gespeichert werden. Bitte versuchen Sie es erneut." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "Erfolg!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "Der Status konnte nicht aktualisiert werden. Bitte versuchen Sie es erneut." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "Bitte geben Sie eine gültige E-Mail-Adresse ein" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Senden..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "Test-E-Mail konnte nicht gesendet werden. Bitte überprüfen Sie Ihre Konfiguration." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "LDAP-Einrichtungsassistent" - -#: app/templates/admin/ldap_setup_wizard.html:16 -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Geführte Konfiguration für LDAP-Authentifizierung (Umgebungsvariablen)" - -#: app/templates/admin/ldap_setup_wizard.html:31 -msgid "Server" -msgstr "Server" - -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "Binden" - -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Benutzer" - -#: app/templates/admin/ldap_setup_wizard.html:46 -msgid "Groups" -msgstr "Gruppen" - -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "Abschließen" - -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "Schritt 1: Server und TLS" - -#: app/templates/admin/ldap_setup_wizard.html:60 -msgid "LDAP host" -msgstr "LDAP-Host" - -#: app/templates/admin/ldap_setup_wizard.html:73 -msgid "Use SSL (LDAPS)" -msgstr "SSL verwenden (LDAPS)" - -#: app/templates/admin/ldap_setup_wizard.html:77 -msgid "StartTLS" -msgstr "StartTLS" - -#: app/templates/admin/ldap_setup_wizard.html:81 -msgid "Connection timeout (seconds)" -msgstr "Verbindungs-Timeout (Sekunden)" - -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "TLS-CA-Zertifikatsdatei" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "optional" - -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "Schritt 2: Dienst-Bindekonto" - -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "Bind-DN" - -#: app/templates/admin/ldap_setup_wizard.html:104 -msgid "Bind password" -msgstr "Bind-Passwort" - -#: app/templates/admin/ldap_setup_wizard.html:107 -msgid "Enter bind password" -msgstr "Bind-Passwort eingeben" - -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "Ein Bind-Passwort ist bereits in der Umgebung gesetzt. Geben Sie es hier erneut ein, um die Konfiguration zu testen oder zu generieren." - -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "Schritt 3: Benutzerverzeichnis und Attribute" - -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -msgid "Base DN" -msgstr "Basis-DN" - -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "Benutzer-Teilbaum (relativ zur Basis)" - -#: app/templates/admin/ldap_setup_wizard.html:133 -msgid "User object class" -msgstr "Benutzerobjektklasse" - -#: app/templates/admin/ldap_setup_wizard.html:140 -msgid "Login attribute" -msgstr "Anmeldeattribut" - -#: app/templates/admin/ldap_setup_wizard.html:145 -msgid "Email attribute" -msgstr "E-Mail-Attribut" - -#: app/templates/admin/ldap_setup_wizard.html:150 -msgid "First name attribute" -msgstr "Vorname-Attribut" - -#: app/templates/admin/ldap_setup_wizard.html:155 -msgid "Last name attribute" -msgstr "Nachname-Attribut" - -#: app/templates/admin/ldap_setup_wizard.html:164 -msgid "Step 4: Groups and authentication mode" -msgstr "Schritt 4: Gruppen und Authentifizierungsmodus" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "Gruppen-Teilbaum (relativ zur Basis)" - -#: app/templates/admin/ldap_setup_wizard.html:173 -msgid "Group object class" -msgstr "Gruppenobjektklasse" - -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -msgid "Admin group (CN)" -msgstr "Admingruppe (CN)" - -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "Erforderliche Gruppe (CN)" - -#: app/templates/admin/ldap_setup_wizard.html:190 -msgid "AUTH_METHOD" -msgstr "AUTH_METHOD" - -#: app/templates/admin/ldap_setup_wizard.html:193 -msgid "LDAP only" -msgstr "Nur LDAP" - -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "Alle (lokal + OIDC + LDAP)" - -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "Verwenden Sie „All“ nur, wenn Sie auch lokale und OIDC-Anmeldung konfigurieren; AUTH_METHOD=all aktiviert jede Methode." - -#: app/templates/admin/ldap_setup_wizard.html:204 -msgid "Step 5: Test and generate configuration" -msgstr "Schritt 5: Konfiguration testen und generieren" - -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "Testen Sie das Dienst-Binden und die Benutzersuche, dann generieren Sie .env-Snippets zum Kopieren in Ihre Bereitstellung." - -#: app/templates/admin/ldap_setup_wizard.html:214 -msgid "Test connection" -msgstr "Verbindung testen" - -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "Generieren Sie Umgebungsvariablenzeilen für Ihre .env-Datei oder Docker Compose." - -#: app/templates/admin/ldap_setup_wizard.html:225 -msgid "Generate configuration" -msgstr "Konfiguration generieren" - -#: app/templates/admin/ldap_setup_wizard.html:230 -msgid "Environment variables (.env)" -msgstr "Umgebungsvariablen (.env)" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "Kopieren" - -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "Docker Compose" - -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "Fügen Sie diese Variablen zu Ihrer Umgebung oder Compose-Datei hinzu, starten Sie die Anwendung neu und bestätigen Sie unter Einstellungen → LDAP." - -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Vorherige" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Nächste" - -#: app/templates/admin/modules.html:39 -msgid "Feature Module Load Status" -msgstr "Ladestatus der Funktionsmodule" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "Dies zeigt, welche optionalen Funktionsmodule beim Serverstart erfolgreich geladen wurden." - -#: app/templates/admin/modules.html:45 -msgid "Optional loaded:" -msgstr "Optional geladen:" - -#: app/templates/admin/modules.html:47 -msgid "Attention needed" -msgstr "Aufmerksamkeit erforderlich" - -#: app/templates/admin/modules.html:56 -msgid "Module" -msgstr "Modul" - -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "Blueprint" - -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Status" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Einzelheiten" - -#: app/templates/admin/modules.html:70 -msgid "Loaded" -msgstr "Geladen" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Fehlgeschlagen" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "—" - -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "Kundensperre (optional)" - -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "Wenn gesetzt, wählen alle Kundenauswahlen in der App automatisch diesen Kunden aus und verhindern Änderungen." - -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "Gesperrter Kunde" - -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "Keine (keine Sperre)" - -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "Modulsichtbarkeit" - -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "Deaktivieren Sie Module, um sie vor allen Benutzern zu verbergen. Deaktivierte Module erscheinen nicht in der Seitenleiste. Kernmodule (Dashboard, Projekte, Timer usw.) sind immer aktiviert und können nicht deaktiviert werden." - -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "Alle aktivieren" - -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "Alle deaktivieren" - -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "Module gesamt:" - -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "Aktiviert:" - -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "Deaktiviert:" - -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "Module suchen..." - -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Alle Kategorien" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Projektmanagement" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "Nur deaktivierte anzeigen" - -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "Mit Abhängigkeiten anzeigen" - -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "Warnung: Das Deaktivieren dieser Module betrifft auch abhängige Module:" - -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Ermöglicht" - -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Deaktiviert" - -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "Hängt ab von:" - -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "Das Deaktivieren von „Berichte“ blendet das gesamte Berichte-Untermenü einschließlich Berichtsgenerator und geplante Berichte aus." - -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Änderungen speichern" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "Keine Module verfügbar." - -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Notiz" - -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "Alle Module sind standardmäßig aktiviert." - -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "Kernmodule können nicht deaktiviert werden, da sie für die Funktion der Anwendung erforderlich sind." - -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "Das Deaktivieren eines Moduls betrifft alle Benutzer systemweit. Deaktivierte Module erscheinen nicht in der Navigationsleiste." - -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "Alle Module aktivieren?" - -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "Alle Module deaktivieren? Dies kann die Funktionalität beeinträchtigen." - -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "Deaktivieren" - -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "Modul(e) in dieser Kategorie?" - -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "Validierungsfehler:" - -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "OIDC-Debug-Dashboard" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "Überprüfen Sie die Konfiguration, Anbietermetadaten und OIDC-Benutzer" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "Einrichtungsassistent" - -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Testkonfiguration" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "OIDC-Konfiguration" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Authentifizierungsmethode" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Emittent" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "Nicht konfiguriert" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "Kunden-ID" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Client-Geheimnis" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Satz" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "Nicht festgelegt" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "Umleitungs-URI" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Automatisch generiert" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Bereiche" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Anspruchszuordnung" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Anspruch auf Benutzernamen" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "E-Mail-Anspruch" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Vollständiger Namensanspruch" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Gruppenanspruch" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Admin-Gruppe" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "Admin-E-Mails" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "Post-Logout-URI" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Anbieter-Metadaten" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Fehler beim Laden der Metadaten:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Discovery-Endpunkt:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Anbietermetadaten wurden erfolgreich geladen" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Endpunkte" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Genehmigung" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Token" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Benutzerinfo" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Sitzung beenden" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS-URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Unterstützte Funktionen" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Antworttypen" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Zuschussarten" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Authentifizierungsmethoden" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Ansprüche" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "Anbietermetadaten wurden nicht geladen. Klicken Sie zum Abrufen auf „Konfiguration testen“." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "E-Mail" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Vollständiger Name" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Rolle" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Letzte Anmeldung" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "OIDC-Betreff" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Inaktiv" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Niemals" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Es haben sich noch keine Benutzer über OIDC angemeldet." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Referenz zu Umgebungsvariablen" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Konfigurieren Sie OIDC mit diesen Umgebungsvariablen:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Variable" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Beschreibung" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "Beispiel" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Authentifizierungsmethode" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "URL des Ausstellers des OIDC-Anbieters" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "Client-ID vom OIDC-Anbieter" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Client-Geheimnis vom OIDC-Anbieter" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "Rückruf-URL (optional, automatisch generiert)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Angeforderte Bereiche" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Anspruch, der den Benutzernamen enthält" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Anspruch mit E-Mail" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Anspruch mit vollständigem Namen" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Anspruch, der Gruppen enthält" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Gruppenname für Administratorrolle (optional)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "Durch Kommas getrennte Administrator-E-Mails (optional)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "OIDC-Einrichtungsassistent" - -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "Geführte Schritt-für-Schritt-Konfiguration für OpenID Connect-Authentifizierung" - -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "Grundkonfiguration" - -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "Verbindung testen" - -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "Schritt 1: Grundkonfiguration" - -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "OIDC-Aussteller-URL" - -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "Die Basis-URL Ihres OIDC-Anbieters (z. B. https://auth.example.com oder https://login.microsoftonline.com/tenant-id/v2.0)" - -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "Die Client-ID von Ihrem OIDC-Anbieter" - -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "Client-Secret eingeben" - -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "Das Client-Secret von Ihrem OIDC-Anbieter" - -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Authentifizierungsmethode" - -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "Nur OIDC" - -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "Nur SSO-Anmeldung, keine lokalen Passwörter" - -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "Beides" - -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "SSO und lokale Passwortauthentifizierung" - -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "Wählen Sie, ob nur OIDC-Anmeldung oder sowohl OIDC als auch lokale Passwortauthentifizierung erlaubt sein soll" - -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "Schritt 2: Verbindung testen" - -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "Klicken Sie auf „Verbindung testen“, um DNS-Auflösung und Metadaten-Endpunkt-Zugänglichkeit zu überprüfen." - -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "Schritt 3: Claim-Zuordnung" - -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "Claim-Name mit dem Benutzernamen (Standard: preferred_username)" - -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "Claim-Name mit der E-Mail-Adresse (Standard: email)" - -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "Claim-Name mit dem vollständigen Namen (Standard: name)" - -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "Claim-Name mit Benutzergruppen (Standard: groups, optional)" - -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "Gruppenname, der Admin-Zugriff gewährt (optional)" - -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "Kommagetrennte Liste von E-Mail-Adressen, die Admin-Zugriff gewähren (optional)" - -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "Schritt 4: Erweiterte Einstellungen" - -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "Leerzeichen-getrennte Liste von OIDC-Scopes (Standard: openid profile email)" - -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "OAuth-Callback-URL (normalerweise automatisch generiert, kann aber angepasst werden)" - -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "Post-Logout-Weiterleitungs-URI" - -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "URL für die Weiterleitung nach dem Abmelden (optional, nur wenn Ihr Anbieter end_session_endpoint unterstützt)" - -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "Schritt 5: Konfiguration generieren" - -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "Klicken Sie auf „Konfiguration generieren“, um die Umgebungsvariablenkonfiguration zu erstellen." - -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "Konfiguration generieren" - -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "Umgebungsvariablen (.env-Datei)" - -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "Kopieren Sie die obige Konfiguration und fügen Sie sie zu Ihren Umgebungsvariablen oder der Docker Compose-Datei hinzu, dann starten Sie die Anwendung neu." - -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "OIDC-Benutzerdetails" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Profil und OIDC-Identität für diesen Benutzer" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Zurück zum OIDC-Debug" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Benutzerprofil" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Aktiv" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Bevorzugte Sprache" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Erstellt am" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "OIDC-Informationen" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "OIDC-Emittent" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "OIDC-Betreff (Untertitel)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Lokal" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "Dieser Benutzer wurde über OIDC erstellt oder verknüpft. Der Aussteller und der Betreff werden verwendet, um den Benutzer über alle Anmeldesitzungen hinweg eindeutig zu identifizieren." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "Dieser Benutzer verfügt über keine OIDC-Informationen. Sie wurden möglicherweise manuell oder durch Selbstregistrierung ohne OIDC erstellt." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Aktivitätsstatistik" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Zeiteinträge" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Keiner" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Aktiver Timer" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Aufgaben erstellt" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Benutzer bearbeiten" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Alle Benutzer anzeigen" - -#: app/templates/admin/pdf_layout.html:3 -msgid "PDF Invoice Designer" -msgstr "PDF-Rechnungsdesigner" - -#: app/templates/admin/pdf_layout.html:1649 -msgid "Visual Invoice Designer" -msgstr "Visueller Rechnungsdesigner" - -#: app/templates/admin/pdf_layout.html:1652 -msgid "Drag and drop elements to design your invoice layout" -msgstr "Elemente per Drag-and-Drop verschieben, um das Rechnungslayout zu gestalten" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Anwendung:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "Klicken Sie in der linken Seitenleiste auf Elemente, um sie der Leinwand hinzuzufügen. Klicken Sie auf Elemente, um sie im Eigenschaftenfenster auszuwählen und anzupassen. Verwenden Sie die Ausrichtungswerkzeuge und Tastaturkürzel für eine schnellere Bearbeitung." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Tastaturkürzel:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "Hilfe: Artikeltabelle, Ausgabentabelle & Speichern" - -#: app/templates/admin/pdf_layout.html:1679 -msgid "Items Table:" -msgstr "Artikeltabelle:" - -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "Zeigt Zeiteinträge, Zusätzliches und Ausgaben an. Aus Rechnungsdaten in der Seitenleiste hinzufügen. Verwendet" - -#: app/templates/admin/pdf_layout.html:1680 -msgid "Expenses Table:" -msgstr "Ausgabentabelle:" - -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "Optionale separate Tabelle für Ausgaben. Aus Rechnungsdaten in der Seitenleiste hinzufügen." - -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Saving:" -msgstr "Speichern:" - -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "Klicken Sie auf „Design speichern“, um zu speichern. Wenn Tabellen nach dem Speichern verschwinden, versuchen Sie Zurücksetzen, um die Standardwerte wiederherzustellen, und fügen Sie dann die Tabellen erneut hinzu." - -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "Vorschau:" - -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "Verwenden Sie „Vorschau generieren“, um zu sehen, wie die PDF mit echten Rechnungsdaten aussehen wird." - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -msgid "See" -msgstr "Siehe" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -msgid "for full documentation." -msgstr "für vollständige Dokumentation." - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Klare Leinwand" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Vorschau generieren" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Design speichern" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Code anzeigen" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "JSON exportieren" - -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "JSON importieren" - -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Am Raster ausrichten (10 Pixel)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Werkzeugkasten" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Suchelemente und Variablen..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Elemente" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "Variablen" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Grundelemente" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Benutzerdefinierter Text" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Text" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Überschrift" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Linie" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Rechteck" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Kreis" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Firmeninformationen" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Firmenlogo" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "Name der Firma" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Firmendetails" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "Adresse" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Telefon" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Webseite" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "Steuer-ID" - -#: app/templates/admin/pdf_layout.html:1813 -msgid "Invoice Data" -msgstr "Rechnungsdaten" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Rechnungsnummer" - -#: app/templates/admin/pdf_layout.html:1820 -msgid "Invoice Date" -msgstr "Rechnungsdatum" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Fälligkeitsdatum" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Kundeninformationen" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Kundenname" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Kundenadresse" - -#: app/templates/admin/pdf_layout.html:1844 -msgid "Items Table" -msgstr "Artikeltabelle" - -#: app/templates/admin/pdf_layout.html:1848 -msgid "Expenses Table" -msgstr "Ausgabentabelle" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Zwischensumme" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Steuer" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Gesamtbetrag" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Bedingungen" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "Zahlung & Projekt" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Zahlungsdatum" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Zahlungsmethode" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Zahlungsstatus" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Bezahlter Betrag" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Projektname" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "Kunden-E-Mail" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Kundentelefon" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "QR-Code" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Barcode" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Seitenzahl" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Aktuelles Datum" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Wasserzeichen" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Bankinformationen" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Währung" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "Dekoratives Bild" - -#: app/templates/admin/pdf_layout.html:1948 -msgid "Invoice Fields" -msgstr "Rechnungsfelder" - -#: app/templates/admin/pdf_layout.html:1951 -msgid "Invoice number" -msgstr "Rechnungsnummer" - -#: app/templates/admin/pdf_layout.html:1955 -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Rechnungsstatus (Entwurf/gesendet/bezahlt/überfällig)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Ausgabedatum" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Fälligkeitsdatum" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Zwischensummenbetrag" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Steuersatz (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Steuerbetrag" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Gesamtbetrag" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Währungscode (EUR, USD usw.)" - -#: app/templates/admin/pdf_layout.html:1987 -msgid "Invoice notes" -msgstr "Rechnungsnotizen" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Allgemeine Geschäftsbedingungen" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Kundenfelder" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Name des Kundenunternehmens" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "E-Mail-Adresse des Kunden" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "Vollständige Adresse des Kunden" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Ansprechpartner des Kunden" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Telefonnummer des Kunden" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Zahlungsfelder" - -#: app/templates/admin/pdf_layout.html:2023 -msgid "Payment status" -msgstr "Zahlungsstatus" - -#: app/templates/admin/pdf_layout.html:2027 -msgid "Payment date" -msgstr "Zahlungsdatum" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Zahlungsart" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Zahlungsreferenznummer" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Gezahlter Betrag" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Ausstehender Betrag" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Zahlungshinweise" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Projektfelder" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Projektname" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "Projektcode" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Projektbeschreibung" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Referenz zur Projektabrechnung" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Firmen-/Einstellungsfelder" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "Ihr Firmenname" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "Ihre Firmenadresse" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "Ihre Firmen-E-Mail" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Ihr Firmentelefon" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Ihre Unternehmenswebsite" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "Ihre Steueridentifikationsnummer" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "Ihre Bankkontodaten" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Standard-Rechnungsbedingungen" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Standard-Rechnungsnotizen" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Datums-/Uhrzeitfelder" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "Aktuelles Datum" - -#: app/templates/admin/pdf_layout.html:2119 -msgid "Invoice creation date" -msgstr "Rechnungserstellungsdatum" - -#: app/templates/admin/pdf_layout.html:2123 -msgid "Invoice last update date" -msgstr "Datum der letzten Rechnungsaktualisierung" - -#: app/templates/admin/pdf_layout.html:2128 -msgid "Invoice Items Loop" -msgstr "Schleife über Rechnungspositionen" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "Alle Artikel (Zeit + Zusatzwaren + Ausgaben)" - -#: app/templates/admin/pdf_layout.html:2135 -msgid "Time-based items only" -msgstr "Nur zeitbasierte Artikel" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Artikelbeschreibung" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Artikelmenge" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Stückpreis des Artikels" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Gesamtbetrag des Artikels" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Schleife beenden" - -#: app/templates/admin/pdf_layout.html:2159 -msgid "Extra Goods Loop" -msgstr "Schleife über zusätzliche Waren" - -#: app/templates/admin/pdf_layout.html:2162 -msgid "Loop through extra goods only" -msgstr "Nur durch zusätzliche Waren iterieren" - -#: app/templates/admin/pdf_layout.html:2166 -msgid "Good name" -msgstr "Warenname" - -#: app/templates/admin/pdf_layout.html:2170 -msgid "Good total amount" -msgstr "Gesamtbetrag der Ware" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Design-Leinwand" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Seitengröße:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Vergrößern" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Herauszoomen" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Ausgewählte löschen" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Eigenschaften" - -#: app/templates/admin/pdf_layout.html:2235 -msgid "Warnings" -msgstr "Warnungen" - -#: app/templates/admin/pdf_layout.html:2237 -msgid "Refresh warnings" -msgstr "Warnungen aktualisieren" - -#: app/templates/admin/pdf_layout.html:2242 -msgid "No warnings" -msgstr "Keine Warnungen" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "Vorlageneinstellungen" - -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Datumsformat" - -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "strftime-Format verwenden (z. B. %d.%m.%Y für 12.09.2025)" - -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Wählen Sie ein Element aus, um seine Eigenschaften zu bearbeiten" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "PDF-Vorschau" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "Seitengröße" - -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "Vorschau aktualisieren" - -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "Vollbild umschalten" - -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "Vorschau schließen" - -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "Zoomstufe" - -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "Zoom zurücksetzen" - -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "Breite anpassen" - -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "Breite anpassen" - -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "Höhe anpassen" - -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "Höhe anpassen" - -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "Tatsächliche Größe" - -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "Vorschau wird generiert..." - -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "Vorschaufehler" - -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "Wiederholen" - -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Generierter Code" - -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "Bild ändern" - -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "Bild hochladen" - -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "Bild entfernen" - -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "Nur Bilddateien (PNG, JPG, JPEG, GIF, WEBP) sind erlaubt" - -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "Dateigröße muss weniger als 5 MB betragen" - -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "Wird hochgeladen..." - -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "Fehler: Bildaktualisierungsfunktion nicht gefunden" - -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "Bild konnte nicht hochgeladen werden" - -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "Sind Sie sicher, dass Sie dieses Bild entfernen möchten?" - -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "Alle Elemente löschen?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Klar" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "Vollbild beenden" - -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "Vorschau konnte nicht geladen werden. Bitte versuchen Sie es erneut." - -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "Die Änderung der Seitengröße lädt die Vorschau mit der Vorlage für diese Größe neu. Fortfahren?" - -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "Die Vorschaufunktion ist derzeit nicht verfügbar. Bitte überprüfen Sie die Browser-Konsole auf Fehler." - -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "Auf Standardeinstellungen zurücksetzen?" - -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "PDF-Layout zurücksetzen" - -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "Fehler beim Importieren der Vorlage" - -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "PDF-Angebotsdesigner" - -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Visueller Zitat-Designer" - -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Ziehen Sie Elemente per Drag-and-Drop, um Ihr Angebotslayout zu entwerfen" - -#: app/templates/admin/quote_pdf_layout.html:1487 -msgid "Help: Quote Items Table & Saving" -msgstr "Hilfe: Angebotspositionstabelle & Speichern" - -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Quote Items Table:" -msgstr "Angebotspositionstabelle:" - -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "Zeigt Angebotspositionen an. Aus Rechnungsdaten in der Seitenleiste hinzufügen." - -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "Klicken Sie auf „Design speichern“, um zu speichern. Wenn die Tabelle nach dem Speichern verschwindet, versuchen Sie Zurücksetzen, um die Standardwerte wiederherzustellen, und fügen Sie dann die Artikeltabelle erneut hinzu." - -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "Verwenden Sie „Vorschau generieren“, um zu sehen, wie die PDF mit echten Angebotsdaten aussehen wird." - -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Angebotsdaten" - -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Angebotsnummer" - -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Angebotsdatum" - -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Angebotspositionstabelle" - -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Angebotsfelder" - -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Angebotsnummer" - -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Angebotsstatus (Entwurf/gesendet/bezahlt/überfällig)" - -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Zitatnotizen" - -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Angebotsstatus" - -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Datum der Annahme des Angebots" - -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Datum der Angebotserstellung" - -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Geben Sie das Datum der letzten Aktualisierung an" - -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Angebotselemente-Schleife" - -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Durchlaufen Sie Rechnungspositionen" - -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Links ausrichten" - -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Horizontal zentrieren" - -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Rechts ausrichten" - -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Oben ausrichten" - -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Vertikal zentrieren" - -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Unten ausrichten" - -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "Vertriebsmitarbeiter-E-Mail-Zuordnungen" - -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "E-Mail-Zuordnungen" - -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "Zuordnung hinzufügen" - -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "Kürzel des Vertriebsmitarbeiters" - -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "E-Mail-Adresse" - -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "Muster/Domain" - -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "E-Mail-Zuordnung hinzufügen" - -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "Nur 1–20 Buchstaben" - -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "Das Kürzel des Vertriebsmitarbeiters aus benutzerdefinierten Kundenfeldern (z. B. MM für Max Mustermann)" - -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "Direkte E-Mail-Adresse" - -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "Muster (z. B. {value}@test.de)" - -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "Domain (z. B. test.de)" - -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "Wird generiert: {initial}@domain" - -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "Zusätzliche Notizen zu dieser Zuordnung" - -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "Keine Zuordnungen konfiguriert. Klicken Sie auf „Zuordnung hinzufügen“, um eine zu erstellen." - -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "E-Mail-Zuordnung bearbeiten" - -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "Fehler beim Speichern der Zuordnung" - -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "Sind Sie sicher, dass Sie diese Zuordnung löschen möchten?" - -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "Fehler beim Löschen der Zuordnung" - -#: app/templates/admin/settings.html:117 -msgid "Time Entry Requirements" -msgstr "Zeiteintragsanforderungen" - -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "Optional können Benutzer beim Erfassen der Arbeitszeit aufgefordert werden, Aufgabe und Beschreibung anzugeben. Gilt für Web, Mobil und Desktop." - -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "Aufgabenauswahl beim Zeiterfassen erforderlich (nur projektbasierte Einträge)" - -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "Beschreibung beim Zeiterfassen erforderlich" - -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "Mindestbeschreibungslänge (Zeichen)" - -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "Mindestanzahl der im Beschreibungsfeld erforderlichen Zeichen." - -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "Standard-Tagesarbeitszeit (für neue Benutzer)" - -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "Wird als Standard-Stunden pro Tag für die Überstundenberechnung bei der Erstellung neuer Benutzer verwendet. Bestehende Benutzer behalten ihre eigene Einstellung." - -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "Support-Sichtbarkeit" - -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "Spendenhinweise und Support-Aufforderungen für alle Benutzer mit einem Einmalschlüssel entfernen (25 €, ein Schlüssel pro Instanz)." - -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "Kopieren Sie Ihre System-ID unten und verwenden Sie sie beim Kauf des Schlüssels." - -#: app/templates/admin/settings.html:165 -msgid "Buy key" -msgstr "Schlüssel kaufen" - -#: app/templates/admin/settings.html:165 -msgid "— key sent by email." -msgstr "— Schlüssel per E-Mail gesendet." - -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "Fügen Sie den Code unten ein und klicken Sie auf Verifizieren." - -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -msgid "Get key" -msgstr "Schlüssel erhalten" - -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "Schritt 1: System-ID" - -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "Verwenden Sie diese ID beim Kauf Ihres Schlüssels." - -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "Supporter-Instanz: Hinweise werden minimiert; Support-Einstiegspunkte bleiben verfügbar." - -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "Schritt 3: Code einfügen" - -#: app/templates/admin/settings.html:196 -msgid "Enter code from email" -msgstr "Code aus E-Mail eingeben" - -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "Verifizieren und für alle ausblenden" - -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Firmenbranding" - -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Rechnungsvorgaben" - -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Sicherungseinstellungen" - -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "LDAP" - -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "LDAP-Authentifizierung wird mit Umgebungsvariablen konfiguriert. Die Werte unten sind schreibgeschützt." - -#: app/templates/admin/settings.html:412 -msgid "Enabled for auth" -msgstr "Für Authentifizierung aktiviert" - -#: app/templates/admin/settings.html:416 -msgid "Host" -msgstr "Host" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -msgid "SSL" -msgstr "SSL" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -msgid "TLS" -msgstr "TLS" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "An" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -msgid "off" -msgstr "aus" - -#: app/templates/admin/settings.html:429 -msgid "User DN" -msgstr "Benutzer-DN" - -#: app/templates/admin/settings.html:433 -msgid "User login attribute" -msgstr "Benutzeranmeldeattribut" - -#: app/templates/admin/settings.html:447 -msgid "Test LDAP Connection" -msgstr "LDAP-Verbindung testen" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Exporteinstellungen" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "Kiosk-Modus" - -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "Kiosk-Modus aktivieren" - -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "Der Kiosk-Modus bietet eine vereinfachte Oberfläche für Lagerbetrieb mit Barcode-Scannen und Zeiterfassung. Zugang unter" - -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "Automatische Abmeldung (Minuten)" - -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "Standard-Bewegungstyp" - -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Einstellung" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Überweisen" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Verkauf" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Miete" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Kaufen" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "Kamerabasiertes Barcode-Scannen erlauben" - -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "Grund für Lagerkorrekturen erforderlich" - -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "Den gemeinsamen serverseitigen KI-Helfer für Web-App, Desktop-App und API-Clients konfigurieren. Schlüssel für gehostete Anbieter verbleiben auf dem Server." - -#: app/templates/admin/settings.html:522 -msgid "Availability" -msgstr "Verfügbarkeit" - -#: app/templates/admin/settings.html:524 -msgid "Use environment default" -msgstr "Umgebungsstandard verwenden" - -#: app/templates/admin/settings.html:524 -msgid "currently" -msgstr "aktuell" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "Anbieter" - -#: app/templates/admin/settings.html:537 -msgid "Base URL" -msgstr "Basis-URL" - -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "Für Ollama ist dies die URL vom Flask-Server zu Ollama." - -#: app/templates/admin/settings.html:542 -msgid "Model" -msgstr "Modell" - -#: app/templates/admin/settings.html:546 -msgid "Hosted API key" -msgstr "Gehosteter API-Schlüssel" - -#: app/templates/admin/settings.html:547 -msgid "Stored; leave blank to keep" -msgstr "Gespeichert; leer lassen zum Beibehalten" - -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "Nur für gehostete Anbieter erforderlich" - -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "Gespeicherten API-Schlüssel löschen" - -#: app/templates/admin/settings.html:557 -msgid "Timeout seconds" -msgstr "Timeout-Sekunden" - -#: app/templates/admin/settings.html:561 -msgid "Context limit" -msgstr "Kontextlimit" - -#: app/templates/admin/settings.html:566 -msgid "System prompt" -msgstr "Systemaufforderung" - -#: app/templates/admin/settings.html:571 -msgid "Test AI connection" -msgstr "KI-Verbindung testen" - -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Datenschutz und Analyse" - -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Einstellungen speichern" - -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Laden Sie ein neues Logo hoch" - -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Logo-Vorschau" - -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "Möchten Sie das Firmenlogo wirklich entfernen?" - -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Logo entfernen" - -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "Kopiert" - -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "Bitte geben Sie einen Code ein." - -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "Erfolgreich. Die Spendenoberfläche ist jetzt für alle ausgeblendet. Laden Sie die Seite neu, um die Änderung zu sehen." - -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -msgid "Request failed." -msgstr "Anfrage fehlgeschlagen." - -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -msgid "Testing connection..." -msgstr "Verbindung wird getestet..." - -#: app/templates/admin/settings.html:831 -msgid "Connection failed." -msgstr "Verbindung fehlgeschlagen." - -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "KI-Verbindung erfolgreich." - -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -msgid "AI connection failed." -msgstr "KI-Verbindung fehlgeschlagen." - -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Telemetrie- und Analyse-Dashboard" - -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Admin → Einstellungen" - -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "Passwort zurücksetzen" - -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "Lassen Sie das Feld leer, um das aktuelle Passwort beizubehalten" - -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Zugriff auf das Kundenportal" - -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "Zugewiesene Kunden (Subunternehmer)" - -#: app/templates/admin/user_form.html:112 -msgid "Assigned clients" -msgstr "Zugewiesene Kunden" - -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "Halten Sie Strg/Cmd gedrückt, um mehrere Kunden auszuwählen." - -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Admin-Zugriff" - -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Auf neues Rollensystem migrieren" - -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Wandern" - -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Rollen" - -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "Keine Benutzer gefunden." - -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "Benutzer „{name}“ kann nicht gelöscht werden, da er über {count} Zeiteinträge verfügt. Benutzer mit bestehenden Zeiteinträgen können nicht gelöscht werden." - -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "Benutzer kann nicht gelöscht werden" - -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "Sind Sie sicher, dass Sie den Benutzer „{name}“ löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." - -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Benutzer löschen" - -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "Benutzerdefinierte Felddefinitionen" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "Erstellen" - -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "Benutzerdefinierte Felddefinition bearbeiten" - -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "Benutzerdefinierte Felddefinition erstellen" - -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "Ein globales benutzerdefiniertes Feld definieren, das für alle Kunden verwendet werden kann" - -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "Feldschlüssel" - -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "z. B. debtor_number" - -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "Eindeutiger Bezeichner für dieses Feld (nur Buchstaben, Zahlen und Unterstriche). Kann nach der Erstellung nicht geändert werden." - -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Etikett" - -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "z. B. Debitorennummer" - -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "Anzeigename in Kundenformularen" - -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "Optionaler Hilfetext für dieses Feld" - -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "Anzeigereihenfolge" - -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "Niedrigere Zahlen erscheinen zuerst" - -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "Pflichtfeld" - -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "Pflichtfeld – Kunden müssen dieses ausfüllen" - -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "Nur aktive Felder werden in Kundenformularen angezeigt" - -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "Globale benutzerdefinierte Felddefinitionen für Kunden verwalten" - -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "Benutzerdefiniertes Feld erstellen" - -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "Reihenfolge" - -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "Erforderlich" - -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Optional" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "Keine benutzerdefinierten Felddefinitionen gefunden." - -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "Wie benutzerdefinierte Felddefinitionen funktionieren" - -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "Benutzerdefinierte Felddefinitionen ermöglichen es Ihnen, globale Felder zu erstellen, die für alle Kunden verwendet werden können. Dies beseitigt die Notwendigkeit, dieselben benutzerdefinierten Felder für jeden Kunden neu zu erstellen." - -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "Funktionen:" - -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "Benutzerdefinierte Felder einmal definieren und für alle Kunden verwenden" - -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "Felder als Pflichtfelder markieren, um sicherzustellen, dass sie immer ausgefüllt werden" - -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "Feldreihenfolge und Sichtbarkeit steuern" - -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "Link-Vorlagen können zugewiesen werden, um Feldwerte anklickbar zu machen" - -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "Beispiel:" - -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "Erstellen Sie eine Felddefinition mit dem Schlüssel „debtor_number\" und der Bezeichnung „Debitorennummer\"" - -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "Als Pflichtfeld markieren, wenn erforderlich" - -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "Beim Erstellen oder Bearbeiten eines Kunden erscheint dieses Feld automatisch" - -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "Eine Link-Vorlage erstellen, um den Wert anklickbar zu machen (z. B. https://erp.example.com/customer/%value%)" - -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "Warnung: %(count)d Kunde(n) haben einen Wert für dieses benutzerdefinierte Feld. Das Löschen dieser Felddefinition entfernt den Feldwert von allen %(count)d Kunde(n). Sind Sie sicher, dass Sie die benutzerdefinierte Felddefinition „%(label)s“ löschen möchten?" - -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "Sind Sie sicher, dass Sie diese benutzerdefinierte Felddefinition löschen möchten?" - -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Als Standardvorlage festlegen" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "HTML-Vorlage" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Benutzerdefinierte Nachricht" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Weitere Variablen" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Vorlage erstellen" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Verfügbare Variablen" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Rechnungsvariablen" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Andere Variablen" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -msgid "Send test email" -msgstr "Test-E-Mail senden" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "Sendet die gespeicherte Vorlage (zuerst Änderungen speichern). Verwendet dieselbe Darstellung wie eine echte Rechnungs-E-Mail. Standardempfänger kann unter Admin → E-Mail-Konfiguration festgelegt werden." - -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -msgid "Recipient" -msgstr "Empfänger" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -msgid "Invoice ID" -msgstr "Rechnungs-ID" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Vorlage aktualisieren" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -msgid "Failed to send test email." -msgstr "Test-E-Mail konnte nicht gesendet werden." - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "Keine E-Mail-Vorlagen gefunden." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "Erstellen Sie Ihre erste E-Mail-Vorlage, um Rechnungs-E-Mails anzupassen." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "E-Mail-Vorlage erstellen" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "E-Mail-Vorlage löschen" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "Sind Sie sicher, dass Sie löschen möchten?" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Diese Aktion kann nicht rückgängig gemacht werden." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "Verwendet dieselbe Darstellung wie eine echte Rechnungs-E-Mail. Legen Sie eine Standardadresse unter Admin → E-Mail-Konfiguration (Test-Empfänger-E-Mail) fest." - -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Informationen zur Vorlage" - -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "Integrationseinrichtung" - -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "OAuth-Anmeldedaten für jede Integration konfigurieren. Globale Integrationen werden von allen Benutzern gemeinsam genutzt." - -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "Global" - -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "Pro Benutzer" - -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "Einrichtung" - -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "Trello API-Schlüssel" - -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "Beziehen von https://trello.com/app-key" - -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "Holen Sie sich Ihren API-Schlüssel von" - -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "Trello API-Secret" - -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "Leer lassen, um den aktuellen Wert beizubehalten" - -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "Holen Sie sich Ihr API-Secret von" - -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "(wird nach der Generierung des API-Schlüssels angezeigt)" - -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "Nach dem Speichern von API-Schlüssel und Secret können Sie Trello über den OAuth-Ablauf verbinden. Das Token wird automatisch während der Verbindung generiert." - -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "OAuth Client-ID" - -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "OAuth Client-Secret" - -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "Für die neue Einrichtung erforderlich. Leer lassen, um das vorhandene Secret beizubehalten." - -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "Leer lassen für „common“ (Mehrinstanzen)" - -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "Leer lassen für „common“ (Mehrinstanzen). Geben Sie Ihre Azure AD Mandanten-ID für Einzelinstanzen-Apps ein." - -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "GitLab-Instanz-URL" - -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "URL Ihrer GitLab-Instanz. Verwenden Sie „https://gitlab.com“ für GitLab.com oder Ihre selbst gehostete GitLab-URL." - -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "OAuth-Weiterleitungs-URI" - -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "Fügen Sie diese URL als autorisierte Weiterleitungs-URI in Ihren OAuth-App-Einstellungen hinzu:" - -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "Automatischer Verbindungsablauf" - -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "Nachdem Sie diese Anmeldedaten gespeichert haben, können Benutzer auf „Google Kalender verbinden\" klicken" - -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "Sie werden automatisch zu Google OAuth weitergeleitet" - -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "Keine manuelle Eingabe von Anmeldedaten erforderlich – vollständig automatisch!" - -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "Jeder Benutzer verbindet sein eigenes Google Calendar-Konto" - -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "Anmeldedaten speichern" - -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "Wie Google Calendar funktioniert" - -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "Nachdem Sie die obigen OAuth-Anmeldedaten gespeichert haben, können Benutzer ihren Google Kalender verbinden, indem sie auf der Integrationsseite auf „Google Kalender verbinden“ klicken." - -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "Sie werden automatisch zu Google weitergeleitet, um den Zugriff zu autorisieren – keine manuelle Eingabe von Anmeldedaten erforderlich!" - -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "Jeder Benutzer verbindet sein eigenes Google Calendar-Konto (benutzerbezogene Integration)." - -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "Verbindungsstatus" - -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "Integration anzeigen" - -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "Nächste Schritte" - -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "Nach dem Speichern der Anmeldedaten die Integration verbinden:" - -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "Integration verbinden" - -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "Link-Vorlage bearbeiten" - -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "Link-Vorlage erstellen" - -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "URL-Vorlage für benutzerdefinierte Kundenfelder konfigurieren" - -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "Vorlagenname" - -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "z. B. ERP-System-Link" - -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "Ein beschreibender Name für diese Link-Vorlage" - -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "Optionale Beschreibung" - -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "URL-Vorlage" - -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "https://example.com/customer/%value%" - -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "URL mit {value} oder %value% Platzhalter. Beispiele: https://erp.example.com/customer/{value} oder https://erp.example.com/customer/%value%" - -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "Der Schlüssel im client custom_fields JSON" - -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Symbol" - -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "fas fa-link" - -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "Font Awesome Icon-Klasse (z. B. fas fa-link)" - -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "Nur aktive Vorlagen werden auf Kundenseiten angezeigt" - -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "URL-Vorlagen für benutzerdefinierte Kundenfelder verwalten" - -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Name" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "Sind Sie sicher, dass Sie diese Link-Vorlage löschen möchten?" - -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "Keine Link-Vorlagen gefunden." - -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "Wie Link-Vorlagen funktionieren" - -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "Link-Vorlagen ermöglichen es Ihnen, Schnelllinks zu externen Systemen (wie ERP-Systemen) mithilfe von Werten aus benutzerdefinierten Kundenfeldern zu erstellen." - -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "Erstellen Sie ein benutzerdefiniertes Feld namens „debtor_number“ für einen Kunden" - -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "Eine Link-Vorlage mit URL erstellen:" - -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "Den Feldschlüssel auf „debtor_number\" setzen" - -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "Beim Anzeigen des Kunden erscheint ein Link, der das ERP-System mit der richtigen Kunden-ID öffnet" - -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "URL-Vorlagenformat:" - -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "Verwenden Sie {value} als Platzhalter für den benutzerdefinierten Feldwert." - -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Systemberechtigungen" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Alle verfügbaren Berechtigungen im System" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Zurück zu Rollen" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "Berechtigungen" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "Keine Beschreibung verfügbar" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "Über Berechtigungen" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "Berechtigungen legen fest, welche Aktionen Benutzer im System ausführen können. Diese Berechtigungen werden Rollen zugewiesen, und Rollen werden Benutzern zugewiesen. Dies bietet ein flexibles und granulares Zugangskontrollsystem." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Rolle bearbeiten" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Neue Rolle erstellen" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Rollenname" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Ein eindeutiger Name für diese Rolle" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Optionale Beschreibung dieser Rolle" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Berechtigungen" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Wählen Sie die Berechtigungen aus, die diese Rolle haben soll:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Alle umschalten" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "Modulsichtbarkeit" - -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "Wählen Sie, welche Module für diese Rolle ausgeblendet werden sollen. Ausgeblendete Module erscheinen nicht in der Navigation und sind nicht direkt zugänglich." - -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "Ausblenden" - -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Rolle aktualisieren" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Rolle erstellen" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Verwalten Sie Rollen und ihre Berechtigungen" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Berechtigungen anzeigen" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Gesamtrollen" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Systemrollen" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Benutzerdefinierte Rollen" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Zugewiesene Benutzer" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Typ" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Standardrolle" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "Benutzer" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Keine Benutzer" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Brauch" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Sicht" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Berechtigungen für" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "Keine Berechtigungen zugewiesen." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "Keine Rollen gefunden." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "Über Rollen und Berechtigungen" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "Rollen sind Sammlungen von Berechtigungen, die Benutzern zugewiesen werden können. Systemrollen sind vordefiniert und können nicht gelöscht oder umbenannt werden. Es können jedoch benutzerdefinierte Rollen für Ihre spezifischen Anforderungen erstellt werden." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "Sind Sie sicher, dass Sie die Rolle löschen möchten?" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Rolle löschen" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Keine Beschreibung" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Rolleninformationen" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Systemrolle" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Benutzerdefinierte Rolle" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Gesamtberechtigungen" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Erstellt" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Benutzer mit dieser Rolle" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Dieser Rolle sind noch keine Benutzer zugewiesen." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "Dieser Rolle sind keine Berechtigungen zugewiesen." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Zurück zum Benutzer" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Rollen verwalten für" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Rollen zuweisen" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "Wählen Sie die Rollen aus, die dieser Benutzer haben soll. Benutzer erben alle Berechtigungen von ihren zugewiesenen Rollen." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Rollen aktualisieren" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Aktuelle effektive Berechtigungen" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "Dies sind alle Berechtigungen, die der Benutzer derzeit durch seine Rollen hat:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Keine Berechtigungen (Rollen zuweisen, um Berechtigungen zu erteilen)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Erstellen Sie einen Webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Webhook bearbeiten" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Webhook für Integrationen konfigurieren" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "Webhook-URL" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "Die URL, an die Webhook-Ereignisse gesendet werden" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Veranstaltungen" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Wählen Sie aus, welche Ereignisse diesen Webhook auslösen sollen" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "HTTP-Methode" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Inhaltstyp" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Max. Wiederholungsversuche" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Wiederholungsverzögerung (Sekunden)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Timeout (Sekunden)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Geheimnis regenerieren" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Warnung: Durch die Neugenerierung des Geheimnisses wird das aktuelle Geheimnis ungültig" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Verwalten Sie Webhook-Integrationen" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Statistiken" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Gesamt" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "Keine Webhooks konfiguriert" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Erstellen Sie Ihren ersten Webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Webhook-Details" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Prüfen" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Geheimnis" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(gekürzt)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Gesamtlieferungen" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Erfolgreich" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Letzte Lieferung" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Aktuelle Lieferungen" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Ereignis" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Versuchen" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Antwort" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Zeit" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Erneuter Versuch" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Noch keine Lieferungen" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "Ein Test-Webhook-Ereignis senden?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "Test-Webhook erfolgreich gesendet!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Fehler:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Unbekannter Fehler" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Fehler beim Senden des Test-Webhooks:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Analytics-Dashboard" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "Letzte 7 Tage" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "Letzte 30 Tage" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "Letzte 90 Tage" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "Letztes Jahr" - -#: app/templates/analytics/dashboard.html:22 -msgid "Export all charts as PNG" -msgstr "Alle Diagramme als PNG exportieren" - -#: app/templates/analytics/dashboard.html:23 -msgid "Export Charts" -msgstr "Diagramme exportieren" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Wichtige Kennzahlen und Erkenntnisse zu Ihrer Zeiterfassung" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Durchschnittliche tägliche Stunden" - -#: app/templates/analytics/dashboard.html:63 -msgid "Regular" -msgstr "Regulär" - -#: app/templates/analytics/dashboard.html:63 -msgid "Overtime" -msgstr "Überstunden" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Täglicher Stundentrend" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Abrechenbar vs. nicht abrechenbar" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Wöchentliche Trends" - -#: app/templates/analytics/dashboard.html:129 -msgid "Hours Forecast" -msgstr "Stunden-Prognose" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "Nächste 7 Tage basierend auf dem 7-Tage-Durchschnitt" - -#: app/templates/analytics/dashboard.html:146 -msgid "Daily Regular vs Overtime" -msgstr "Tägliche reguläre vs. Überstunden" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Stunden nach Tageszeit" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Projekteffizienz" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Benutzerleistung" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "Diagramme konnten nicht geladen werden. Bitte versuchen Sie es erneut." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "Diagramme konnten nicht aktualisiert werden. Bitte versuchen Sie es erneut." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Stunde des Tages" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Einnahmen" - -#: app/templates/analytics/dashboard.html:499 -msgid "Forecast" -msgstr "Prognose" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "Diagramme exportiert. Überprüfen Sie Ihre Downloads." - -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Export" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Wichtige Kennzahlen und umsetzbare Erkenntnisse" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "im Vergleich zur Vorperiode" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "insgesamt" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Potenzielle Einnahmen" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Durchschnittspreis:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "Trend" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "aktive Projekte" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Einblicke und Empfehlungen" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Kumulativ" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Abrechnungsfähige Verteilung" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Übersicht über den Aufgabenstatus" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Aufgaben abgeschlossen" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "Im Gange" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Zu tun" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Umsatz nach Projekt" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Zahlungen im Laufe der Zeit" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Zahlungsmethoden" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Einnahmen vs. Zahlungen" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Sammelquote" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Projektabschlussrate" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "Abrechnungsfähig" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "Nicht abrechenbar" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Vollendet" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Abgesagt" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Abschlussrate (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Übersicht über mobile Erkenntnisse" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Täglicher Durchschn" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Tägliche Öffnungszeiten" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "Top-Projekte" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "Zeiteintragsgenehmigungen" - -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "Zeiteinträge prüfen und genehmigen" - -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "Ausstehende Genehmigungen" - -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Zeiteintrag" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "Angefordert von" - -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "Std." - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "Direkt" - -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Genehmigen" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Ablehnen" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "Keine ausstehenden Genehmigungen" - -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "Alle Zeiteinträge wurden geprüft." - -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "Meine Anfragen" - -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "Keine ausstehenden Anfragen" - -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "Sie haben keine Zeiteintragsgenehmigungsanfragen." - -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "Zeiteintrag ablehnen" - -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "Ablehnungsgrund" - -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "Genehmigungsdetails" - -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "Zeiteintragsgenehmigungsanfrage prüfen" - -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "Zeiteintragdetails" - -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "Eintrags-ID" - -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "Genehmigungsinformationen" - -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "Angefordert am" - -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Genehmigt von" - -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "Genehmigt am" - -#: app/templates/approvals/view.html:107 -msgid "Request comment" -msgstr "Anfrage-Kommentar" - -#: app/templates/approvals/view.html:113 -msgid "Approval comment" -msgstr "Genehmigungskommentar" - -#: app/templates/approvals/view.html:119 -msgid "Rejection reason" -msgstr "Ablehnungsgrund" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Verfolgen Sie, wer wann was geändert hat" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Filter" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Entitätstyp" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Alle Typen" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "Entitäts-ID" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Alle Benutzer" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Aktion" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Alle Aktionen" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Aktualisiert" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Gelöscht" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Zeitbereich" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Filter" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Zeitstempel" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Juristische Person" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "Feld" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Ändern" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Grund" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Informationen ändern" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "Entitätskontext" - -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "Zeiteintrag erstellt" - -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "Eintragsinhaber" - -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "Details zur Feldänderung" - -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "Vollständiger Entitätszustand" - -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "Vor der Änderung" - -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "Nach der Änderung" - -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Informationen anfordern" - -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "Aktualisieren Sie Ihr Passwort." - -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "Aktuelles Passwort" - -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "Neues Passwort" - -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "Neues Passwort bestätigen" - -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "Passwort ändern" - -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Sicherheit" - -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "Zwei-Faktor-Authentifizierung für Ihr Konto verwalten." - -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -msgid "Two-factor authentication" -msgstr "Zwei-Faktor-Authentifizierung" - -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "Bitte füllen Sie beide Passwortfelder aus oder lassen Sie beide leer" - -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "Das Passwort muss mindestens 8 Zeichen lang sein" - -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "Passwörter stimmen nicht überein" - -#: app/templates/auth/forgot_password.html:6 -msgid "Forgot password" -msgstr "Passwort vergessen" - -#: app/templates/auth/forgot_password.html:19 -msgid "Reset your password" -msgstr "Passwort zurücksetzen" - -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "Geben Sie Ihren Benutzernamen oder Ihre E-Mail-Adresse ein. Wenn ein Konto übereinstimmt und E-Mail konfiguriert ist, senden wir Ihnen einen Zurücksetzungslink." - -#: app/templates/auth/forgot_password.html:27 -msgid "Username or email" -msgstr "Benutzername oder E-Mail" - -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "ihr-benutzername oder sie@beispiel.de" - -#: app/templates/auth/forgot_password.html:32 -msgid "Send reset link" -msgstr "Zurücksetzungslink senden" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -msgid "Back to sign in" -msgstr "Zurück zur Anmeldung" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Login" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Verfolgen Sie die Zeit. Bleiben Sie organisiert." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Melden Sie sich bei Ihrem Konto an" - -#: app/templates/auth/login.html:50 -msgid "Demo credentials" -msgstr "Demo-Anmeldedaten" - -#: app/templates/auth/login.html:72 -msgid "Forgot your password?" -msgstr "Passwort vergessen?" - -#: app/templates/auth/login.html:79 -msgid "LDAP authentication is enabled" -msgstr "LDAP-Authentifizierung ist aktiviert" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "anmelden" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "Verwenden Sie die obigen Demo-Anmeldedaten." - -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Tipp: Geben Sie einen neuen Benutzernamen ein, um Ihr Konto zu erstellen." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "Oder fahren Sie fort mit" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Single Sign-On" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Profil bearbeiten" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Mitglied seit" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -msgid "Reset password" -msgstr "Passwort zurücksetzen" - -#: app/templates/auth/reset_password.html:19 -msgid "Choose a new password" -msgstr "Neues Passwort wählen" - -#: app/templates/auth/reset_password.html:21 -msgid "Enter a new password for your account." -msgstr "Geben Sie ein neues Passwort für Ihr Konto ein." - -#: app/templates/auth/reset_password.html:27 -msgid "New password" -msgstr "Neues Passwort" - -#: app/templates/auth/reset_password.html:30 -msgid "At least 8 characters" -msgstr "Mindestens 8 Zeichen" - -#: app/templates/auth/reset_password.html:32 -msgid "Confirm password" -msgstr "Passwort bestätigen" - -#: app/templates/auth/reset_password.html:35 -msgid "Repeat your new password" -msgstr "Neues Passwort wiederholen" - -#: app/templates/auth/reset_password.html:37 -msgid "Update password" -msgstr "Passwort aktualisieren" - -#: app/templates/auth/two_factor.html:19 -msgid "Enter authentication code" -msgstr "Authentifizierungscode eingeben" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "Öffnen Sie Ihre Authentifizierungs-App und geben Sie den 6-stelligen Code ein." - -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Code" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "Verifizieren" - -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "Fügen Sie Ihrem Konto eine zusätzliche Sicherheitsebene mit einer TOTP-Authentifizierungs-App hinzu (Google Authenticator, Authy, 1Password usw.)." - -#: app/templates/auth/two_factor_setup.html:18 -msgid "Two-factor authentication is enabled for your account." -msgstr "Zwei-Faktor-Authentifizierung ist für Ihr Konto aktiviert." - -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "Geben Sie einen aktuellen Code ein, um zu deaktivieren" - -#: app/templates/auth/two_factor_setup.html:29 -msgid "Disable 2FA" -msgstr "2FA deaktivieren" - -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "Zwei-Faktor-Authentifizierung ist derzeit deaktiviert." - -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "Ein Secret wird generiert, wenn Sie die 2FA aktivieren." - -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "1) Zu Ihrer Authentifizierungs-App hinzufügen" - -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "Wenn Sie keinen QR-Code scannen können, können Sie dieses Secret manuell eingeben:" - -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "Bereitstellungs-URI:" - -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "2) Verifizieren und aktivieren" - -#: app/templates/auth/two_factor_setup.html:64 -msgid "Enter the 6-digit code" -msgstr "Den 6-stelligen Code eingeben" - -#: app/templates/auth/two_factor_setup.html:67 -msgid "Enable 2FA" -msgstr "2FA aktivieren" - -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "Für Ihr TimeTracker-Konto wurde eine Passwort-Zurücksetzung angefordert." - -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "Wenn die Schaltfläche nicht funktioniert, kopieren Sie diesen Link und fügen Sie ihn in Ihren Browser ein:" - -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "Wenn Sie dies nicht angefordert haben, können Sie diese E-Mail ignorieren." - -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Budgetwarnungen und -prognosen" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Überwachen Sie Projektbudgets und prognostizieren Sie den Abschluss" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Unbestätigte Warnungen" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Kritische Warnungen" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Projekte mit Budgets" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Warnmeldungen" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Aktive Warnungen" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Anerkennen" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Projektbudgetstatus" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Budget" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Verbraucht" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Übrig" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Fortschritt" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "über" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Über dem Budget" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Kritisch" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "Gesund" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "Keine Projekte mit Budgets gefunden" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Warnung erfolgreich bestätigt" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "Warnung konnte nicht bestätigt werden" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Budgetanalyse und -prognose" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Zurück zum Dashboard" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Projekt anzeigen" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Gesamtbudget" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Analyse der Verbrennungsrate" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Tägliche Brennrate" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Wöchentliche Brennrate" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Monatliche Brennrate" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Periodensumme" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Basierend auf dem letzten" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "Tage" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "Es sind keine Daten zur Brennrate verfügbar" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Kostenvoranschlag für die Fertigstellung" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Voraussichtliches Fertigstellungsdatum" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "verbleibende Tage" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Vertrauensniveau" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "Keine Fertigstellungsschätzung verfügbar" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Kostentrendanalyse" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Durchschnitt" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Ressourcenzuteilung" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Gesamtkosten" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Stundensatz" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Teammitglied" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Kosten" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Std %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Kosten %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "Einträge" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Datum und Uhrzeit" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Standort" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Erinnerung" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "Minuten vorher" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "Stunden vorher" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "Tage vorher" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Wiederkehrend" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Bis" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Zuletzt aktualisiert" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Zurück zum Kalender" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Ereignis löschen" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "Sind Sie sicher, dass Sie dieses Ereignis löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Ereignis bearbeiten" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Neue Veranstaltung" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Titel" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Startdatum" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Startzeit" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Enddatum" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Endzeit" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Ganztägige Veranstaltung" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Ereignistyp" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Treffen" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Termin" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Frist" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- Keine --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Keine Erinnerung" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 Minuten vorher" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 Minuten vorher" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 Minuten vorher" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 Stunde vorher" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 Tag vorher" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Farbe" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Wählen Sie eine Farbe für dieses Ereignis" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Private Veranstaltung" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Private Veranstaltungen sind nur für Sie sichtbar" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Wiederkehrendes Ereignis" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "Dies ist ein wiederkehrendes Ereignis" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Wiederholungsmuster" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Verwenden Sie das RRULE-Format (z. B. FREQ=WEEKLY;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Enddatum der Wiederholung" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Ereignis aktualisieren" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Ereignis erstellen" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "Kalenderintegrationen" - -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "Zuletzt synchronisiert" - -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "Integration verwalten" - -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "Sind Sie sicher, dass Sie diese Integration trennen möchten?" - -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "Trennen" - -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "Keine Kalenderintegrationen" - -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "Verbinden Sie Ihren Kalender, um Zeiteinträge und Ereignisse automatisch zu synchronisieren." - -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "Google Calendar verbinden" - -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "Wie die Kalenderintegration funktioniert" - -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "Zeiteinträge werden automatisch mit Ihrem Kalender synchronisiert" - -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "Kalenderereignisse können in Zeiteinträge umgewandelt werden" - -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "Bidirektionale Synchronisierung hält alles synchron" - -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Sehen und verwalten Sie Ihre Ereignisse, Aufgaben und Zeiteinträge" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Tag" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Woche" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Monat" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "Heute" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "Kalenderfarben" - -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "Legende" - -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Kalender wird geladen..." - -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Veranstaltungsdetails" - -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "Alle Details anzeigen" - -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "Team-Chat" - -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "Team-Chat-Kanal" - -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "Nachricht eingeben..." - -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "Kanalinformationen" - -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "Mitglieder" - -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "Kanaleinstellungen" - -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "Anhang hochladen" - -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "Datei auswählen" - -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "Maximale Dateigröße: 10 MB" - -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "Ausgewählt:" - -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "Hochladen" - -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "Bitte wählen Sie eine Datei aus" - -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "Dateigröße überschreitet das 10-MB-Limit" - -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "Anhang konnte nicht hochgeladen werden" - -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "Mit Ihrem Team kommunizieren" - -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "Kanäle" - -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "Direktnachrichten" - -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "Wählen Sie einen Kanal aus, um zu chatten" - -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "Kanal erstellen" - -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "Kanalname" - -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "Privater Kanal" - -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Kundennotiz bearbeiten" - -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Zurück zum Kunden" - -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Kunde:" - -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Erstellt am" - -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Zuletzt bearbeitet am" - -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Inhalt beachten" - -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Interne Notiz, nur für Ihr Team sichtbar." - -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Als wichtig markieren" - -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "Aktivitätsfeed" - -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Kundenportal" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "Aktuelle Projektaktivitäten" - -#: app/templates/client_portal/activity_feed.html:69 -msgid "View details" -msgstr "Details anzeigen" - -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "Keine Aktivität" - -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "Keine aktuelle Aktivität anzuzeigen. Aktivität erscheint hier, wenn Projekte aktualisiert und Zeiteinträge protokolliert werden." - -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "Genehmigungen" - -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "Ausstehend" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Genehmigt" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Abgelehnt" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Alle" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "Angefordert am" - -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "Anfrage-Kommentar" - -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Details anzeigen" - -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "Keine Genehmigungen" - -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "Sie haben keine ausstehenden Zeiteintragsgenehmigungen. Alles auf dem neuesten Stand!" - -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "Keine Genehmigungen für diesen Status gefunden." - -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "Benachrichtigungen" - -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "Mehr" - -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "Dokumente" - -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "Aktivität" - -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "Menü umschalten" - -#: app/templates/client_portal/base.html:418 -msgid "Approval update" -msgstr "Genehmigungsaktualisierung" - -#: app/templates/client_portal/base.html:418 -msgid "A time entry approval was requested." -msgstr "Eine Zeiteintrags-Genehmigung wurde angefordert." - -#: app/templates/client_portal/base.html:418 -msgid "An approval was updated." -msgstr "Eine Genehmigung wurde aktualisiert." - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "Willkommen, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -msgid "Customize dashboard" -msgstr "Dashboard anpassen" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "Wählen Sie, welche Widgets angezeigt werden sollen und in welcher Reihenfolge." - -#: app/templates/client_portal/dashboard.html:74 -msgid "Statistics cards" -msgstr "Statistik-Karten" - -#: app/templates/client_portal/dashboard.html:75 -msgid "Pending actions" -msgstr "Ausstehende Aktionen" - -#: app/templates/client_portal/dashboard.html:77 -msgid "Recent invoices" -msgstr "Aktuelle Rechnungen" - -#: app/templates/client_portal/dashboard.html:78 -msgid "Recent time entries" -msgstr "Aktuelle Zeiteinträge" - -#: app/templates/client_portal/dashboard.html:127 -msgid "Select at least one widget." -msgstr "Mindestens ein Widget auswählen." - -#: app/templates/client_portal/dashboard.html:147 -msgid "Failed to save." -msgstr "Speichern fehlgeschlagen." - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "Projektdokumente anzeigen und herunterladen" - -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "Kundendokument" - -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "Herunterladen" - -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "Keine Dokumente" - -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "Es wurden noch keine Dokumente mit Ihnen geteilt. Dokumente erscheinen hier, sobald sie hochgeladen und für Kunden sichtbar gemacht werden." - -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "Ein Fehler ist aufgetreten" - -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Gehen Sie zum Dashboard" - -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "Im Kundenportal anmelden" - -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Geh zurück" - -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "Wenn Sie der Meinung sind, Zugang zum Kundenportal haben zu sollen, wenden Sie sich bitte an Ihren Administrator oder verwenden Sie den obigen Anmeldelink." - -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Rechnungsdetails" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Ausgabedatum" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "Diese Rechnung ist %(days)d Tage überfällig." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Rechnungspositionen" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Menge" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Stückpreis" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "Rechnung bezahlen" - -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Zurück zu Rechnungen" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "Rechnungen für %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "Unbezahlt" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "Überfällig" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Menge" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "Tage überfällig" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "Keine Rechnungen gefunden" - -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "Keine bezahlten Rechnungen" - -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "Keine unbezahlten Rechnungen" - -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "Keine übcfälligen Rechnungen" - -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "Derzeit sind keine Rechnungen verfügbar. Rechnungen erscheinen hier, sobald sie erstellt werden." - -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "Es gibt keine Rechnungen, die diesem Filter entsprechen. Versuchen Sie, einen anderen Status auszuwählen." - -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "Alle Rechnungen anzeigen" - -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "Problem #%(id)s" - -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "Keine Beschreibung angegeben." - -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Priorität" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "Verknüpfte Aufgabe" - -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "Zugewiesen an" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "Gelöst" - -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "Zurück zu Problemen" - -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "Problemberichte" - -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "Probleme für %(client_name)s melden und verfolgen" - -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Offen" - -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "Geschlossen" - -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "Neues Problem melden" - -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "Keine Probleme gefunden." - -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Anmeldung im Kundenportal" - -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Sehen Sie sich Ihre Projekte und Rechnungen an" - -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Melden Sie sich beim Kundenportal an" - -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "Geben Sie Ihre Portal-Zugangsdaten ein, um auf Ihre Projekte und Rechnungen zuzugreifen" - -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "portal_benutzername" - -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Geben Sie Ihr Passwort ein" - -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "Einen Fehler oder ein Problem melden, das Sie festgestellt haben" - -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "Kurze Beschreibung des Problems" - -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "Detaillierte Beschreibung des Problems, Schritte zur Reproduktion usw." - -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "Projekt auswählen (optional)" - -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Niedrig" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Medium" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Hoch" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Dringend" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "Ihr Name" - -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "Ihr Name (optional)" - -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "Ihre E-Mail" - -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "Ihre E-Mail (optional)" - -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "Problem einreichen" - -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "Bleiben Sie über Ihre Projekte und Rechnungen auf dem Laufenden" - -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "Ungelesen" - -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "Alle als gelesen markieren" - -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "Als gelesen markieren" - -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "Keine Benachrichtigungen" - -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "Sie haben keine ungelesenen Benachrichtigungen. Alles auf dem neuesten Stand!" - -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "Sie haben noch keine Benachrichtigungen. Benachrichtigungen erscheinen hier, wenn es Aktualisierungen zu Ihren Projekten oder Rechnungen gibt." - -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "Projektkommentare" - -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Kommentare" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Kommentar hinzufügen" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Ihr Kommentar" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "Kommentar eingeben..." - -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Kommentar posten" - -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "Keine Kommentare" - -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "Schreiben Sie den ersten Kommentar zu diesem Projekt." - -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Zurück zu Projekten" - -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "Projekte für %(client_name)s" - -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "Zeiteinträge anzeigen" - -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "Keine Projekte gefunden" - -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "Derzeit sind keine Projekte verfügbar. Projekte erscheinen hier, sobald sie erstellt und Ihrem Konto zugewiesen werden." - -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Angebotsdetails" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Gültig bis" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Dieses Angebot ist abgelaufen." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Angebotsartikel" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "Artikelnummer" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Allgemeine Geschäftsbedingungen" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "Sind Sie sicher, dass Sie dieses Angebot akzeptieren möchten?" - -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Angebot annehmen" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Angebot ablehnen" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Zurück zu Zitaten" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "Grund (optional)" - -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "Bitte geben Sie einen Grund für die Ablehnung dieses Angebots an..." - -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "Angebote für %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Abgelaufen" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "Keine Zitate gefunden." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "Projekt- und Rechnungszusammenfassungen" - -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "Erfasste Stunden" - -#: app/templates/client_portal/reports.html:81 -msgid "Project progress" -msgstr "Projektfortschritt" - -#: app/templates/client_portal/reports.html:93 -msgid "Est. / Budget" -msgstr "Geschätzt / Budget" - -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "Keine Projektstundendaten verfügbar." - -#: app/templates/client_portal/reports.html:149 -msgid "Task summary" -msgstr "Aufgabenzusammenfassung" - -#: app/templates/client_portal/reports.html:153 -msgid "Total tasks: %(count)s" -msgstr "Aufgaben gesamt: %(count)s" - -#: app/templates/client_portal/reports.html:164 -msgid "No tasks yet." -msgstr "Noch keine Aufgaben." - -#: app/templates/client_portal/reports.html:178 -msgid "Time by date (last 30 days)" -msgstr "Zeit nach Datum (letzte 30 Tage)" - -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "Aktuelle Zeiteinträge (letzte 30 Tage)" - -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "Keine aktuellen Zeiteinträge." - -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Passwort festlegen" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Legen Sie Ihr Passwort fest, um loszulegen" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Legen Sie Ihr Passwort fest" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Legen Sie ein Passwort für Ihr Kundenportalkonto fest" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "Passwort bestätigen" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Bestätigen Sie Ihr Passwort" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "Zeiteinträge für %(client_name)s Projekte" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Alle Projekte" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "Von Datum" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "Miteinander ausgehen" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Gesamteinträge" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Gesamtstunden" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "Keine Zeiteinträge entsprechen Ihren aktuellen Filtern. Versuchen Sie, Ihre Filterkriterien anzupassen." - -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "Derzeit sind keine Zeiteinträge verfügbar. Zeiteinträge erscheinen hier, sobald sie für Ihre Projekte protokolliert werden." - -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "Filter zurücksetzen" - -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Aktuelle Rechnungen" - -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Alle anzeigen" - -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "Rechnungen erscheinen hier, sobald sie erstellt werden" - -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "Handlung erforderlich" - -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "Zeiteinträge warten auf Ihre Überprüfung" - -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "Jetzt überprüfen" - -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "Neue Aktualisierungen" - -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "Benachrichtigungen warten auf Sie" - -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "Projekte erscheinen hier, sobald sie erstellt werden" - -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "Gesamt aktiv" - -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Gesamtrechnungen" - -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "Alle Rechnungen" - -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Aktuelle Zeiteinträge" - -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "Zeiteinträge erscheinen hier, sobald sie protokolliert werden" - -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Als CSV exportieren" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Client erstellen" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Zurück zu Kunden" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "Fügen Sie einen neuen Kunden hinzu, um zugehörige Projekte und Abrechnungen zu verwalten." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Geben Sie den Kundennamen ein" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Standardstundensatz" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "z.B. 75,00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "Dieser Satz wird automatisch ausgefüllt, wenn Projekte für diesen Kunden erstellt werden" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Unterstützt Markdown" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Kurze Beschreibung des Kunden- oder Projektumfangs" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Ansprechpartner" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Name des primären Kontakts" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@client.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Monatliche Prepaid-Stunden" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "z.B. 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "Leer lassen, wenn dieser Kunde kein Prepaid-Kontingent hat." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Prepaid-Reset-Tag" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Tag des Monats, an dem die Prepaid-Stunden zurückgesetzt werden (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Kundenadresse" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "Diese benutzerdefinierten Felder sind global definiert und für alle Kunden verfügbar." - -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "Wert eingeben" - -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Wählen Sie einen klaren, aussagekräftigen Namen für die Kundenorganisation." - -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "Legen Sie den Standardstundensatz für diesen Kunden fest. Dies wird beim Erstellen neuer Projekte automatisch ausgefüllt." - -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Kontaktinformationen" - -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "Fügen Sie Kontaktdaten hinzu, um die Kommunikation und das Führen von Aufzeichnungen zu erleichtern." - -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Prepaid-Stunden" - -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "Konfigurieren Sie monatliche Inklusivstunden und den Rücksetztag, wenn dieser Kunde über ein Retainer- oder Prepaid-Paket verfügt." - -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "Geben Sie Kontext zur Kundenbeziehung oder zu typischen Projekttypen an." - -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "Client bearbeiten" - -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "Aktivieren Sie den Portalzugriff für diesen Kunden. Kunden können sich mit ihren eigenen Zugangsdaten anmelden, um Projekte, Rechnungen und Zeiteinträge anzuzeigen." - -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Aktivieren Sie das Kundenportal" - -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "Problemberichterstattung aktivieren" - -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "Kunden erlauben, Fehler und Probleme über das Portal zu melden" - -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Portal-Benutzername" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Eindeutiger Benutzername für die Portalanmeldung" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Portal-Passwort" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "Lassen Sie das Feld leer, um das aktuelle Passwort beizubehalten" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Legen Sie ein neues Passwort fest oder lassen Sie es leer, um das aktuelle Passwort zu behalten" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Aktueller Portal-Benutzername" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Client aktualisieren" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Senden Sie eine E-Mail zur Passworteinrichtung" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "Senden Sie eine E-Mail an %(email)s mit einem Link zum Festlegen ihres Portalkennworts." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "Zum Versenden einer E-Mail zur Passworteinrichtung ist eine E-Mail-Adresse erforderlich. Bitte geben Sie oben die E-Mail-Adresse des Kunden ein." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Kundenstatistiken" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "Schätzung: Gesamtkosten" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Kunden filtern" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Filter umschalten" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Filter ausblenden" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Filter anzeigen" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "Ein Projekt zuweisen, um Zeiteinträge vor der Rechnungsstellung zu leiten." - -#: app/templates/clients/view.html:24 -msgid "No billable unbilled time for this client." -msgstr "Keine abrechenbaren, nicht abgerechneten Zeiten für diesen Kunden." - -#: app/templates/clients/view.html:25 -msgid "No unbilled time" -msgstr "Keine nicht abgerechnete Zeit" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -msgid "Invoice unbilled time" -msgstr "Nicht abgerechnete Zeit in Rechnung stellen" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "Client als inaktiv markieren?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Kundenstatus ändern" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Als inaktiv markieren" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "Client aktivieren?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Client aktivieren" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Client löschen" - -#: app/templates/clients/view.html:53 -msgid "Client details and associated projects." -msgstr "Kundendetails und zugehörige Projekte." - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Verwalten" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Primär" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "weitere Kontakt(e)" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Noch keine Kontakte" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Kontakt hinzufügen" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Legacy-Kontaktinformationen" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "Der Plan umfasst %(hours)s Stunden pro Zyklus. Wird am Tag %(day)s zurückgesetzt." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Aktueller Zyklusstart" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Verbleibende Stunden" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "H" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "In diesem Zyklus verbraucht" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "Anhänge" - -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "Datei" - -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "Maximale Größe: 10 MB. Erlaubt: Bilder, PDFs, Dokumente, Tabellenkalkulationen, Archive" - -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "Beschreibung (optional)" - -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "z. B. Vertrag, Vereinbarung usw." - -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "Im Portal für Kunden sichtbar" - -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Kunde sichtbar" - -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "Sind Sie sicher, dass Sie diesen Anhang löschen möchten?" - -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "Anhang löschen" - -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "Noch keine Anhänge" - -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Archiviert" - -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "Aktuelle Stundenhistorie" - -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "Zeigt die letzten %(count)s Einträge" - -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "Keine aktuellen Zeiteinträge gefunden." - -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Interne Notizen" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Notiz hinzufügen" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Fügen Sie eine interne Notiz zu diesem Kunden hinzu..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Notiz speichern" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "bearbeitet" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Wichtig" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Markierung aufheben" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Markieren Sie „Wichtig“." - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "Noch keine Notizen. Fügen Sie eine Notiz hinzu, um wichtige Informationen zu diesem Kunden im Auge zu behalten." - -#: app/templates/clients/view.html:590 -msgid "Estimated total" -msgstr "Geschätzter Gesamtbetrag" - -#: app/templates/clients/view.html:594 -msgid "Create a draft invoice?" -msgstr "Rechnungsentwurf erstellen?" - -#: app/templates/clients/view.html:597 -msgid "Create invoice" -msgstr "Rechnung erstellen" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -msgid "Could not create invoice." -msgstr "Rechnung konnte nicht erstellt werden." - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "Möchten Sie diese Notiz wirklich löschen?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Notiz löschen" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Bearbeitet am" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Antwort" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "Anhang hinzufügen" - -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "Maximal 10 MB. Bilder, PDFs, Dokumente, Tabellenkalkulationen, Archive" - -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Schreiben Sie Ihre Antwort..." - -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "Antworten sind zu tief verschachtelt, um angezeigt zu werden." - -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "Kommentarverschachtelung zu tief zum Anzeigen." - -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Teilen Sie Ihre Gedanken, Aktualisierungen oder Fragen mit ..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "Sie können Zeilenumbrüche verwenden, um Ihren Kommentar zu formatieren." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Bild hinzufügen" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Noch keine Kommentare" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Beginnen Sie die Konversation, indem Sie den ersten Kommentar hinzufügen." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Erster Kommentar hinzufügen" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Kommentar bearbeiten" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Zurück" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "Bearbeitungskommentar zu:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Ursprünglich gepostet am" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Kommentarinhalt" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Alle Aktivitäten" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Zeitvorlagen" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Keine aktuelle Aktivität" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "Während Sie arbeiten, wird hier eine Aktivität angezeigt" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Mehr laden" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "Aktivitäten konnten nicht geladen werden" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "Chat starten" - -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "Benutzer suchen..." - -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "Benutzer werden geladen..." - -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "Benutzer konnten nicht geladen werden" - -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "Keine Benutzer gefunden" - -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "Chat wird gestartet..." - -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "Chat konnte nicht gestartet werden" - -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "Kunde (automatisch ausgewählt)" - -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Wählen Sie einen Kunden aus..." - -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "Kunden auswählen (optional)" - -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "Ausgewählt" - -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "Suchen..." - -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "Alle auswählen" - -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "Keine Elemente verfügbar" - -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "Anwenden" - -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "Jetzt synchronisieren" - -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "Ausstehende Synchronisierung" - -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "Keine ausstehenden Elemente" - -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "Alle synchronisieren" - -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "Fehler beim Laden der Warteschlange" - -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "Chat umschalten" - -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "Chat" - -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "Neuen Chat starten" - -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "Chat minimieren" - -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "Vollansicht" - -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "Nachrichten konnten nicht geladen werden" - -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "Noch keine Nachrichten" - -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "Nachricht konnte nicht gesendet werden" - -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "Vielen Dank, dass Sie ein Supporter sind. Das Teilen der App hilft anderen, sie ebenfalls zu entdecken." - -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "TimeTracker ist kostenlos und wird unabhängig entwickelt. Wenn es Ihnen hilft, erwägen Sie, seine Entwicklung zu unterstützen." - -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "Vertraut von Teams und Freiberuflern, die eine einfache, zuverlässige Zeiterfassung wünschen." - -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -msgid "Donate" -msgstr "Spenden" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "Lizenz kaufen (25 €)" - -#: app/templates/components/support_modal.html:48 -msgid "Love TimeTracker? Share it" -msgstr "TimeTracker mögen? Teilen Sie es" - -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "Eine Lizenz ist ein Supporter-Abzeichen – sie sperrt keine Funktionen. Sie behalten in jedem Fall vollen Zugriff." - -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Heim" - -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -msgid "Pagination" -msgstr "Seitennavigation" - -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "Zeigt %(start)s bis %(end)s von %(total)s Einträgen" - -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "Zum Hochladen klicken oder per Drag & Drop ablegen" - -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Anruf" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Nachricht" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Richtung" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "Ausgehend" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "Eingehend" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Thema" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Geplant" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Folgetermin" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Inhalt/Notizen" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Kommunikation speichern" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Vorname" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Nachname" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "Mobile" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "Abteilung" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Kontakt" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Abrechnung" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Technisch" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Als Hauptkontakt festlegen" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Schlagworte" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Kontakt speichern" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Legen Sie „Primär“ fest" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "Keine Kontakte gefunden" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Erster Kontakt hinzufügen" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Hauptkontakt" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Kommunikationsgeschichte" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Kommunikation hinzufügen" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "Keine Kommunikation aufgezeichnet" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "Aktivität hinzufügen" - -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -msgid "Activity Date" -msgstr "Aktivitätsdatum" - -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "Kurzes Thema oder Titel" - -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Deal-Name" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Wählen Sie Kunde aus" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Wählen Sie Kontakt aus" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Bühne" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Deal-Wert" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Gewinnwahrscheinlichkeit" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Voraussichtliches Abschlussdatum" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Verwandtes Zitat" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Wählen Sie Angebot aus" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Sparangebot" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Won" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Verloren" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Alle Stufen" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Wert" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Wahrscheinlichkeit" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Erwarteter Abschluss" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "Keine Angebote gefunden" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Erstellen Sie den ersten Deal" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "Pipeline" - -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "Deal-Informationen" - -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "Tatsächlicher Abschluss" - -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "Inhaber" - -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "Zugehöriger Lead" - -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "Verlustgrund" - -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Verwandtes Projekt" - -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "von" - -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "Noch keine Aktivitäten erfasst" - -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "Erste Aktivität hinzufügen" - -#: app/templates/deals/view.html:180 -msgid "History" -msgstr "Verlauf" - -#: app/templates/deals/view.html:183 -msgid "View full history" -msgstr "Vollständigen Verlauf anzeigen" - -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "Noch keine Änderungshistorie" - -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Sie wurden erwähnt" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Aufgabe und Antwort anzeigen" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Rechnung" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Rechnung überfällig" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Rechnung anzeigen" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Zitat" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Angebotsgenehmigung abgelehnt" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Angebot ansehen" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Genehmigung beantragt" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Bewertungsangebot" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Angebot genehmigt" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "Angebot abgelaufen" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "Angebot läuft bald ab" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Angebot gesendet" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Aufgabenzuweisung" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Aufgabe anzeigen" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Testdetails" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "Ihre wöchentliche Zusammenfassung" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 Ungültige Anfrage" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Ungültige Anfrage" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "Die von Ihnen gestellte Anfrage ist ungültig oder enthält Fehler. Dies könnte folgende Ursachen haben:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Fehlende oder ungültige Formulardaten" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Fehlerhafte Anforderungsparameter" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "Sie haben keine Berechtigung, auf diese Ressource zuzugreifen. Dies könnte folgende Ursachen haben:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Unzureichende Berechtigungen" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "Nicht angemeldet" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Einschränkungen des Ressourcenzugriffs" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Bei uns ist etwas schief gelaufen. Bitte versuchen Sie es später noch einmal." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Versuchen Sie es erneut" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Bei der Bearbeitung Ihrer Anfrage ist ein Fehler aufgetreten." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Seite aktualisieren" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Gehen Sie zu Anmelden" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "z. B. Reisen, Mahlzeiten, Bürobedarf" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "z. B. REISEN, MAHLZEITEN" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Kurze Beschreibung dieser Kategorie..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "z. B. Fa-Flugzeug, Fa-Utensilien" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "z.B. 19.00 Uhr" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Kategorie" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Grundlegende Informationen" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "z.B. Flug nach Berlin" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Weitere Details zu den Kosten..." - -#: app/templates/expenses/form.html:52 -msgid "Select Category" -msgstr "Kategorie auswählen" - -#: app/templates/expenses/form.html:75 -msgid "Amount Details" -msgstr "Betragsdetails" - -#: app/templates/expenses/form.html:124 -msgid "Association" -msgstr "Zuordnung" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Zahlungsdetails" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "z.B. Lufthansa" - -#: app/templates/expenses/form.html:201 -msgid "Receipt & Additional Information" -msgstr "Quittung & Zusätzliche Informationen" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Quittungs-/Rechnungsnummer" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "z. B. INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "z. B. Konferenz, Kundenbesprechung, dringend" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Zusätzliche Hinweise..." - -#: app/templates/expenses/form.html:254 -msgid "Options" -msgstr "Optionen" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Ausgaben filtern" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Ausgewählte Ausgaben löschen" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Status für ausgewählte Ausgaben ändern" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Verbunden mit" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Kosten ablehnen" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Erklären Sie, warum diese Ausgabe abgelehnt wird ..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "Sind Sie sicher, dass Sie diese Ausgabe löschen möchten?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Ausgabe löschen" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "Aufgabe hinzufügen" - -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Daten importieren/exportieren" - -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Import/Export" - -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "Importieren Sie Daten aus anderen Zeiterfassungsgeräten oder exportieren Sie Ihre Daten zur Einhaltung der DSGVO und für Backups" - -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Daten importieren" - -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "CSV-Import – Zeiteinträge" - -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Zeiteinträge aus einer CSV-Datei importieren" - -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Wählen Sie CSV-Datei" - -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Vorlage herunterladen" - -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "CSV-Import – Kunden" - -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "Kunden mit benutzerdefinierten Feldern und mehreren Kontakten aus einer CSV-Datei importieren" - -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "Doppelte Kunden überspringen" - -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "Diese Felder zur Duplikaterkennung verwenden:" - -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "Benutzerdefinierte Felder (kommagetrennt):" - -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "z. B. debtor_number, erp_id" - -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "Beispiel: Geben Sie „debtor_number“ ein, um Duplikate nur nach Debitorennummer zu erkennen (nicht nach Name)" - -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Von Toggl Track importieren" - -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Zeiteinträge aus Toggl Track importieren" - -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Aus Toggl importieren" - -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Import aus Harvest" - -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Importieren Sie Zeiteinträge aus Harvest" - -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Aus Backup wiederherstellen" - -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "Daten aus einer JSON- oder ZIP-Sicherungsdatei wiederherstellen" - -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Historie importieren" - -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Daten exportieren" - -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Vollständiger Datenexport (DSGVO)" - -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Exportieren Sie alle Ihre persönlichen Daten" - -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Als JSON exportieren" - -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Als ZIP exportieren" - -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Gefilterter Export" - -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Exportieren Sie spezifische Daten mit Filtern" - -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Mit Filtern exportieren" - -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "Kunden exportieren" - -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "Alle Kunden mit benutzerdefinierten Feldern und Kontakten in CSV exportieren" - -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "Kunden als CSV exportieren" - -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Erstellen Sie eine vollständige Datenbanksicherung" - -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Verlauf exportieren" - -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "API-Token" - -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "Arbeitsbereichs-ID" - -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Import" - -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "Konto-ID" - -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "ActivityWatch-Einrichtung" - -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "Fenster- und Webaktivitäten aus ActivityWatch (aw-server) als automatische Zeiteinträge importieren" - -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "Serververbindung" - -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "ActivityWatch-Server-URL" - -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "Basis-URL Ihres aw-Servers (kein abschließender Schrägstrich). aw-server muss laufen und von diesem Server erreichbar sein." - -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "Verwenden Sie http://localhost:5600, wenn TimeTracker auf demselben Rechner läuft." - -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "Importeinstellungen" - -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "Standardprojekt" - -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "Kein Projekt (ohne Projekt importieren)" - -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "Importierte Aktivitätsereignisse diesem Projekt zuweisen. Leer lassen, um ohne Projekt zu importieren." - -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "Keine aktiven Projekte gefunden. Ereignisse werden ohne Projekt importiert." - -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "Sie können später ein Projekt erstellen und Ereignisse dazu zuweisen." - -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "Projekt erstellen" - -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "Rückblicktage" - -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "Wie viele Tage zurück beim vollständigen Sync importiert werden sollen (1–90, Standard: 7)." - -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "Bucket-IDs" - -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "Kommagetrennt oder JSON-Array. Leer lassen, um alle aw-watcher-window_*- und aw-watcher-web_*-Buckets zu verwenden." - -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "Automatische Synchronisierung aktivieren" - -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "Aktivität nach einem Zeitplan automatisch synchronisieren. Sie können auch manuelle Synchronisierungen auslösen." - -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "Synchronisierungszeitplan" - -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "Nur manuell" - -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "Jede Stunde" - -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "Täglich" - -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "Testen & Synchronisieren" - -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "Nach dem Speichern können Sie die Verbindung testen und eine Synchronisierung von der Integrationsseite starten." - -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "CalDAV-Kalendereinrichtung" - -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "Mit einem CalDAV-Server verbinden (z. B. Zimbra), um Kalenderereignisse als Zeiteinträge zu importieren" - -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "CalDAV-Server-URL" - -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "optional, wenn Kalender-URL angegeben wird" - -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "Basis-URL Ihres CalDAV-Servers. Wird zur Kalenderentdeckung verwendet." - -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "Beispiel: https://mail.example.com/dav für Zimbra" - -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "Kalender-URL" - -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "optional, wenn Server-URL angegeben wird" - -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "Direkte URL zu Ihrer Kalendersammlung. Wenn angegeben, wird die Server-URL nur zur Entdeckung verwendet." - -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "Kalendername" - -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "Mein Kalender" - -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "Authentifizierung" - -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "Ihr CalDAV-Benutzername (normalerweise Ihre E-Mail-Adresse)." - -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "Ihr CalDAV-Passwort oder App-spezifisches Passwort." - -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "Leer lassen, um Ihr aktuelles Passwort beizubehalten." - -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "SSL-Zertifikat verifizieren" - -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "Nur deaktivieren, wenn Sie ein selbstsigniertes Zertifikat verwenden." - -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "Kalenderereignisse werden als Zeiteinträge importiert. Wenn ein Projekt ausgewählt ist, werden Ereignisse diesem Projekt zugewiesen." - -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "Wenn ein Ereignistitel einen Projektnamen enthält, wird dieses Projekt stattdessen verwendet." - -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "Wenn kein Projekt ausgewählt ist, werden Ereignisse ohne Projekt importiert." - -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "Wie viele Tage zurück Ereignisse importiert werden sollen (Standard: 90)." - -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "Kalenderereignisse stündlich automatisch synchronisieren. Sie können weiterhin manuelle Synchronisierungen auslösen." - -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "Nach dem Speichern können Sie die Verbindung testen und verfügbare Kalender entdecken." - -#: app/templates/integrations/health.html:4 -msgid "Integration Health" -msgstr "Integrationsstatus" - -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "Geltungsbereich" - -#: app/templates/integrations/health.html:25 -msgid "Last sync" -msgstr "Letzte Synchronisierung" - -#: app/templates/integrations/health.html:26 -msgid "Last status" -msgstr "Letzter Status" - -#: app/templates/integrations/health.html:27 -msgid "Credentials" -msgstr "Anmeldedaten" - -#: app/templates/integrations/health.html:28 -msgid "Last error" -msgstr "Letzter Fehler" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Teilweise" - -#: app/templates/integrations/health.html:76 -msgid "Needs refresh" -msgstr "Aktualisierung erforderlich" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "Läuft ab" - -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "Diese Integration zurücksetzen? Dadurch werden gespeicherte OAuth-Token entfernt." - -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "Verbinden Sie Ihren Time Tracker mit externen Diensten. Konfigurieren Sie Integrationen unten, um Daten zu synchronisieren, Workflows zu automatisieren und die Produktivität zu steigern." - -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "OIDC / Single Sign-On" - -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "OpenID Connect-Authentifizierung für Single Sign-On (SSO) mit Ihrem Identitätsanbieter konfigurieren" - -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "Verzeichnisauthentifizierung über Umgebungsvariablen konfigurieren; verwenden Sie den Assistenten, um ein funktionsfähiges .env-Snippet zu erstellen und die Konnektivität zu testen." - -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "Nicht verbunden" - -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "Synchronisiert" - -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "Nicht eingerichtet" - -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "Verbinden" - -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "Integration" - -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "Geführter Einrichtungsassistent" - -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "Verwenden Sie unseren schrittweisen Assistenten, um diese Integration einfach zu konfigurieren." - -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "Einrichtungsassistenten starten" - -#: app/templates/integrations/manage.html:43 -msgid "Linear API Key" -msgstr "Linear API-Schlüssel" - -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "Persönlicher API-Schlüssel" - -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "Erstellen unter linear.app/settings/api" - -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "Von Linear: Einstellungen → API → Persönliche API-Schlüssel" - -#: app/templates/integrations/manage.html:60 -msgid "Save API Key" -msgstr "API-Schlüssel speichern" - -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "OAuth-Anmeldedaten-Einrichtung" - -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -msgid "Stored; leave empty to keep" -msgstr "Gespeichert; leer lassen zum Beibehalten" - -#: app/templates/integrations/manage.html:101 -msgid "Enter API secret" -msgstr "API-Secret eingeben" - -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "Nach dem Speichern von API-Schlüssel und Secret können Sie Trello über den OAuth-Ablauf verbinden." - -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "Verwenden Sie „common“ für Mehrinstanzen oder lassen Sie das Feld leer" - -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "CalDAV-Authentifizierung" - -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "CalDAV verwendet Benutzernamen- und Passwortauthentifizierung (nicht OAuth). Aktualisieren Sie Ihre Anmeldedaten unten." - -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "Integrationskonfiguration" - -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "Synchronisierungseinstellungen, Datenzuordnungen und andere Integrationsoptionen konfigurieren." - -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "Verbindungsverwaltung" - -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "Connector-Fehler" - -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "Sync OK" - -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "Sync-Fehler" - -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "Kein Ablaufdatum" - -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "Nicht verbunden" - -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "Letzte Synchronisierung" - -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "Letzter Fehler" - -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "CalDAV verwendet Benutzernamen/Passwort-Authentifizierung. Klicken Sie unten, um Ihre CalDAV-Verbindung einzurichten." - -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "CalDAV-Integration einrichten" - -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "ActivityWatch importiert Fenster- und Webaktivitäten von Ihrem lokalen aw-Server. Klicken Sie unten, um es zu konfigurieren." - -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "ActivityWatch-Integration einrichten" - -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "OAuth-Anmeldedaten sind konfiguriert. Sie können jetzt Trello verbinden." - -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "Trello verbinden" - -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "Bitte konfigurieren Sie den Trello API-Schlüssel und das Token im Abschnitt OAuth-Anmeldedaten-Einrichtung oben." - -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "Bitte konfigurieren Sie OAuth-Anmeldedaten im obigen Abschnitt, bevor Sie eine Verbindung herstellen." - -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "OAuth-Anmeldedaten müssen zuerst von einem Administrator konfiguriert werden." - -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "Verbinden Sie Ihr Google Calendar-Konto. Sie werden zur Autorisierung zu Google weitergeleitet." - -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "Diese Integration verbinden. Sie werden zur Autorisierung zum Anbieter weitergeleitet." - -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "Zurück zu Integrationen" - -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "Integrationsstatus" - -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "Token läuft ab" - -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "Synchronisierungshistorie" - -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "Noch keine Synchronisierungsereignisse" - -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "CalDAV-Integration konfigurieren" - -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "ActivityWatch konfigurieren" - -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "Sind Sie sicher, dass Sie diese Integration zurücksetzen möchten? Dadurch werden alle Anmeldedaten und Konfigurationen entfernt." - -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "Sind Sie sicher, dass Sie diese Integration löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." - -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "Konfiguration bearbeiten" - -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "Schritt 1: OAuth einrichten" - -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "Erstellen Sie eine Asana-App unter Einstellungen → Apps → Entwickler-Apps verwalten." - -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "Asana OAuth Client-ID" - -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "OAuth Client-ID eingeben" - -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "Asana OAuth Client-Secret" - -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "OAuth Client-Secret eingeben" - -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "Schritt 2: Arbeitsbereichsauswahl" - -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "Arbeitsbereich-GID" - -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "Finden Sie Ihre Arbeitsbereich-GID in den Asana-Arbeitsbereichseinstellungen oder der API" - -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "Schritt 3: Projektauswahl" - -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "Projekt-GIDs" - -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "Kommagetrennte Liste der zu synchronisierenden Projekt-GIDs. Leer lassen, um alle Projekte im Arbeitsbereich zu synchronisieren." - -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "Schritt 4: Synchronisierungskonfiguration" - -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "Synchronisierungsrichtung" - -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "Asana → TimeTracker (nur Import)" - -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "TimeTracker → Asana (nur Export)" - -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "Bidirektional (Zwei-Wege-Synchronisierung)" - -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "Zu synchronisierende Elemente" - -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "Unteraufgaben" - -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "Automatische Synchronisierung" - -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "Abgeschlossene Aufgaben synchronisieren" - -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "Schritt 5: Überprüfen & Speichern" - -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "Überprüfen Sie Ihre Konfiguration und klicken Sie auf „Fertigstellen“, um zu speichern." - -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "Fertigstellen" - -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "Schritt" - -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "Erstellen Sie eine GitHub OAuth App unter Einstellungen → Entwicklereinstellungen → OAuth Apps." - -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "GitHub OAuth Client-ID" - -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "GitHub OAuth Client-Secret" - -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "Schritt 2: Repository-Auswahl" - -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "Kommagetrennte Liste von Repositories (z. B. „octocat/Hello-World“). Leer lassen, um alle zugänglichen Repositories zu synchronisieren." - -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "Projekte erstellen" - -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "Schritt 3: Synchronisierungskonfiguration" - -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "GitHub → TimeTracker (nur Import)" - -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "TimeTracker → GitHub (nur Export)" - -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "Pull-Requests" - -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "Projekte (Repositories)" - -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "Zu synchronisierende Problemstatus" - -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "Offene Probleme" - -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "Geschlossene Probleme" - -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "Schritt 4: Webhook einrichten" - -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "Webhook-Secret" - -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "Webhook-Secret eingeben" - -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "Geheimes Token zur Verifizierung von Webhook-Signaturen. Konfigurieren Sie dies in Ihren GitHub-Repository-Webhook-Einstellungen." - -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "Wöchentlich" - -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "Automatisch synchronisieren, wenn Webhooks von GitHub empfangen werden" - -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "Fügen Sie diese URL als Webhook in Ihren GitHub-Repository-Einstellungen hinzu:" - -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "Alle Repositories" - -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "Schritt 1: Instanzkonfiguration" - -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "Sie können GitLab.com oder Ihre selbst gehostete GitLab-Instanz verwenden." - -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "Schritt 2: OAuth einrichten" - -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "OAuth-Anmeldedaten konfigurieren. Erstellen Sie eine Anwendung unter GitLab-Einstellungen → Anwendungen." - -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "GitLab OAuth Client-ID" - -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "GitLab OAuth Client-Secret" - -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "Fügen Sie diese URL als autorisierte Weiterleitungs-URI in Ihren GitLab-Anwendungseinstellungen hinzu:" - -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "Schritt 3: Repository-Auswahl" - -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "Repository-IDs" - -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "Kommagetrennte Liste der zu synchronisierenden GitLab-Projekt-IDs. Leer lassen, um alle zugänglichen Projekte zu synchronisieren." - -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "Projekte in TimeTracker automatisch aus GitLab-Projekten erstellen" - -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "Schritt 4: Synchronisierungseinstellungen" - -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "GitLab → TimeTracker (nur Import)" - -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "TimeTracker → GitLab (nur Export)" - -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "Merge-Anfragen" - -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "Automatisch synchronisieren, wenn Webhooks von GitLab empfangen werden" - -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "Geheimes Token zur Verifizierung von Webhook-Signaturen" - -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "Instanz-URL" - -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "Schritt 1: OAuth einrichten & Grundkonfiguration" - -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "Konfigurieren Sie zunächst die OAuth-Anmeldedaten für Jira. Diese erhalten Sie aus der Atlassian Developer Console." - -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "Jira OAuth Client-ID" - -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "Dies aus der Atlassian Developer Console beziehen" - -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "Jira OAuth Client-Secret" - -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "Jira-Instanz-URL" - -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "Ihre Jira Cloud- oder Server-URL (z. B. https://your-domain.atlassian.net)" - -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "Fügen Sie diese URL als autorisierte Weiterleitungs-URI in Ihren Jira-OAuth-App-Einstellungen hinzu:" - -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "Klicken Sie auf „Verbindung testen“, um sicherzustellen, dass Jira erreichbar ist und die OAuth-Anmeldedaten korrekt sind." - -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "JQL-Abfrage" - -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "JQL-Abfrage zum Filtern der zu synchronisierenden Probleme. Leer lassen, um alle zugewiesenen Probleme zu synchronisieren." - -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "Jira → TimeTracker (nur Import)" - -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "TimeTracker → Jira (nur Export)" - -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "Wählen Sie, wie Daten zwischen Jira und TimeTracker fließen" - -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "Probleme (Aufgaben)" - -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "Automatisch synchronisieren, wenn Webhooks von Jira empfangen werden" - -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "Projekte in TimeTracker automatisch aus Jira-Projekten erstellen" - -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "Überprüfen Sie Ihre Konfiguration unten. Klicken Sie auf „Fertigstellen“, um zu speichern und die Einrichtung abzuschließen." - -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "Jira-URL" - -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "Bitte testen Sie die Verbindung, bevor Sie fortfahren." - -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "Bitte geben Sie zuerst die Jira-URL ein." - -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "Schritt 1: Mandanten-ID-Konfiguration" - -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "Geben Sie Ihre Azure AD Mandanten-ID ein. Verwenden Sie „common“ für Mehrinstanzen-Apps oder lassen Sie das Feld für den Standard leer." - -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "OAuth-Anmeldedaten aus Azure AD App-Registrierungen konfigurieren." - -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "Microsoft Teams OAuth Client-ID" - -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "Microsoft Teams OAuth Client-Secret" - -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "Schritt 3: Überprüfen & Speichern" - -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "Outlook Kalender OAuth Client-ID" - -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "Outlook Kalender OAuth Client-Secret" - -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "Überprüfen Sie Ihre Konfiguration und klicken Sie auf „Fertigstellen“, um zu speichern. Nach dem Speichern können Benutzer ihre Outlook-Kalender-Konten verbinden." - -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "Schritt 1: OAuth-Verbindung" - -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "OAuth-Anmeldedaten aus dem Intuit Developer Dashboard konfigurieren." - -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "QuickBooks OAuth Client-ID" - -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "QuickBooks OAuth Client-Secret" - -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "Nach dem Speichern der OAuth-Anmeldedaten müssen Sie Ihr QuickBooks-Konto über OAuth verbinden." - -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "Schritt 2: Unternehmensauswahl" - -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "Firmen-ID (Realm-ID)" - -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "Finden Sie Ihre Firmen-ID (Realm-ID) in QuickBooks nach der Verbindung über OAuth." - -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "Sandbox verwenden" - -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "QuickBooks-Sandbox-Umgebung zum Testen verwenden" - -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "QuickBooks → TimeTracker (nur Import)" - -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "TimeTracker → QuickBooks (nur Export)" - -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "Kunden" - -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "Schritt 4: Kontenzuordnungen" - -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "Standard-Ausgabenkonto-ID" - -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "QuickBooks-Konto-ID für Ausgaben, wenn keine Zuordnung konfiguriert ist" - -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "Kundenzuordnungen" - -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "JSON" - -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "TimeTracker-Kunden-IDs QuickBooks-Kunden-IDs zuordnen (JSON-Format)" - -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "Kontenzuordnungen" - -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "TimeTracker-Ausgabenkategorie-IDs QuickBooks-Konto-IDs zuordnen (JSON-Format)" - -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "Firmen-ID" - -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "Schritt 1: API-Schlüssel einrichten" - -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "API-Schlüssel und Secret erhalten von" - -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "API-Schlüssel eingeben" - -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "API-Secret eingeben" - -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "Generieren Sie ein Token nach dem Erstellen des API-Schlüssels" - -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "Klicken Sie auf „Verbindung testen“, um zu überprüfen, ob Ihre Trello-API-Anmeldedaten korrekt sind." - -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "API-Schlüssel" - -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "Nicht getestet" - -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "Verbindung fehlgeschlagen" - -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "OAuth-Anmeldedaten aus dem Xero Developer Portal konfigurieren." - -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "Xero OAuth Client-ID" - -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "Xero OAuth Client-Secret" - -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "Schritt 2: Mandantenauswahl" - -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "Finden Sie Ihre Mandanten-ID (Organisations-ID) in Xero nach der Verbindung über OAuth." - -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "Xero → TimeTracker (nur Import)" - -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "TimeTracker → Xero (nur Export)" - -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "Standard-Ausgabenkonto-Code" - -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "Xero-Kontocode für Ausgaben, wenn keine Zuordnung konfiguriert ist" - -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "Kontaktzuordnungen" - -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "TimeTracker-Kunden-IDs Xero-Kontakt-IDs zuordnen (JSON-Format)" - -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "TimeTracker-Ausgabenkategorie-IDs Xero-Kontocodes zuordnen (JSON-Format)" - -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Lagerartikel" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Wählen Sie Artikel aus" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Lager" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Wählen Sie Lager" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Anpassungsmenge" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "Verwenden Sie positive Werte, um den Lagerbestand zu erhöhen, negative Werte, um ihn zu verringern" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "z. B. Korrektur der physischen Anzahl, Schäden, gefundene Gegenstände" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Weitere Details zu dieser Anpassung" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Datensatzanpassung" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Alle Lager" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Alle Artikel" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Stammen aus" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Datum bis" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Artikel" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "Keine Anpassungen gefunden." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "Zur Hand" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Nachbestellpunkt" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Fehlbetrag" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Menge nachbestellen" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "Keine Warnungen bei niedrigem Lagerbestand. Alle Artikel liegen über dem Mindestbestellwert." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "Positive Menge verwenden (zurückkommende Artikel)" - -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "Negative Menge verwenden (abgeschriebene Artikel)" - -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "Neuzubewertende Menge (positiv)" - -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Verwenden Sie positive Werte für Hinzufügungen, negative für Entfernungen" - -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "Rückgabe erfordert eine positive Menge." - -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "Ausschuss erfordert eine negative Menge." - -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "Für die Abwertung ist ein nachverfolgbarer Artikel mit Standardkosten erforderlich." - -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Bewegungsart" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Zurückkehren" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Abfall" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "Abwertung" - -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "Sie können unten eine Abwertung anwenden, um zurückgegebene oder verschwendete Artikel zu reduzierten Kosten zu erfassen." - -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "Artikel abwerten, ohne einen neuen Lagerartikel zu erstellen" - -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "Abwertung anwenden" - -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "Methode" - -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "Prozent Rabatt auf Standardkosten" - -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "Neuer Stückpreis (fest)" - -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "Prozent" - -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "Beispiel: 30 = Kosten um 30 % reduzieren" - -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "Neuer Stückpreis" - -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "z. B. Korrektur der physischen Anzahl" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Bewegung aufzeichnen" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Referenztyp" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Handbuch" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Stückkosten" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Referenz" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "Abgewertet" - -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "Keine Lagerbewegungen gefunden." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Anbieter" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Wählen Sie Lieferant aus" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Bestelldatum" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Voraussichtlicher Liefertermin" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Hinweise für den Lieferanten sichtbar" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Interne Notizen (für den Lieferanten nicht sichtbar)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Artikel" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Artikel hinzufügen" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Menge" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "Lieferanten-SKU" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Bestellung erstellen" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Entwurf" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Gesendet" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Bestätigt" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Erhalten" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Alle Lieferanten" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "Bestellnummer" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Lieferung voraussichtlich" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "Keine Bestellungen gefunden." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "Möchten Sie diese Bestellung wirklich stornieren?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "Sind Sie sicher, dass Sie diese Bestellung löschen möchten?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Bestelldetails" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Empfangsdatum" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Bestellte Menge" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Erhaltene Menge" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Zeilensumme" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Versand" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Bestellung erhalten" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Als erhalten markieren" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "Keine Artikel in dieser Bestellung." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Gesamtzahl der Artikel" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Gesamtlager" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Gesamtbestandswert" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Artikel mit geringem Lagerbestand" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Verfügbare Berichte" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Aktienbewertung" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Lagerwert nach Lager anzeigen" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Bewegungsgeschichte" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Detailliertes Bewegungsprotokoll" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Umsatzanalyse" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Lagerumschlagsraten" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Bericht über niedrige Lagerbestände" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Artikel unterhalb des Bestellpunktes" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "%(count)s Artikel unterhalb ihres Bestellpunktes gefunden." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Verfügbare Menge" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Menge nachbestellen" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "Bestellung erstellen" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Alle Lagerbestände sind gut" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Derzeit liegen keine Artikel unter ihrem Bestellpunkt." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "Keine Bewegungen gefunden." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "Die Umschlagshäufigkeit gibt an, wie oft Lagerbestände in einem Jahr verkauft und ersetzt werden. Höhere Raten weisen auf sich schneller bewegende Artikel hin." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Insgesamt verkauft" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Durchschnittlicher Lagerbestand" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Fluktuationsrate" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Schnelllebig" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normal" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "Langsame Bewegung" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "Sehr langsam" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "Für den ausgewählten Zeitraum wurden keine Verkaufsdaten gefunden." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Bestandsbewertung" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Gesamtwert" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "Es wurden keine Artikel mit Kosteninformationen gefunden." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Reserviert" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Erfüllt" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Reserviert unter" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Läuft ab um" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "Diese Reservierung erfüllen?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "Diese Reservierung stornieren?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "Keine Reservierungen gefunden." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Einheit" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Standardkosten" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Standardpreis" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "Bild-URL" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Verfolgen Sie den Lagerbestand" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Verwalten Sie mehrere Lieferanten für diesen Artikel mit unterschiedlichen Preisen." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "Mindestbestellmenge" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Vorlaufzeit (Tage)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Bevorzugt" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Lieferant hinzufügen" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "Für diesen Artikel wurde kein Bewegungsverlauf gefunden." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "Artikelnummer, Name, Barcode..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Nur aktiv" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Gesamtmenge" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Verfügbar" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Geringer Lagerbestand" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "Keine Lagerartikel gefunden." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Artikeldetails" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Nachverfolgbar" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Lagerbestände nach Lager" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "Lagerbestandsaufschlüsselung nach Bewertung" - -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "Detaillierte Aufschlüsselung des verbleibenden Bestands mit verschiedenen Abwertungsraten" - -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "Keine Abwertung" - -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Aktuelle Aktienbewegungen" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Insgesamt verfügbar" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Insgesamt reserviert" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Insgesamt verfügbar" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Warnung bei niedrigem Lagerbestand" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Dieser Artikel ist nicht verfolgbar." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Aktive Reservierungen" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Menge reserviert" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Zuletzt gezählt" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "Für diesen Artikel wurde in keinem Lager ein Lagerbestand gefunden." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "Keine Lagerbestände gefunden." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Nur geringe Lagerbestände" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "Überverkauft" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "In diesem Lager wurden keine Lagerartikel gefunden." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Lieferantenkodex" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Eindeutiger Code für diesen Lieferanten (z. B. SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Zahlungsbedingungen" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "z. B. Netto 30, Netto 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Code, Name, E-Mail" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "Keine Lieferanten gefunden." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Lieferantendetails" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Lagerartikel dieses Lieferanten" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Vorlaufzeit" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "Mit diesem Lieferanten sind keine Lagerartikel verknüpft." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Bevorzugte Artikel" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Ab Lager" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Wählen Sie Quelllager aus" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Zum Lager" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Wählen Sie Ziellager" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Optionale Hinweise zu dieser Übertragung" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Übertragung erstellen" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "Keine Überweisungen gefunden." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Lagercode" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Eindeutiger Code für dieses Lager (z. B. WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "Kontakt-E-Mail" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Kontakttelefon" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "Keine Lager gefunden." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Lagerdetails" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "In diesem Lager sind keine Lagerartikel vorhanden." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Gesamtmenge" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "Aktueller Genehmiger" - -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "Sie" - -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "Keine ausstehenden Genehmigungen" - -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "Sie haben keine Rechnungen, die auf Ihre Genehmigung warten." - -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "Rechnungsgenehmigung ablehnen" - -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "Ablehnungsgrund" - -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "Bitte geben Sie einen Grund für die Ablehnung dieser Rechnung an..." - -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "Rechnungsgenehmigung anfordern" - -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "Zurück zur Rechnung" - -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "Genehmiger auswählen" - -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "Wählen Sie einen oder mehrere Benutzer aus, die diese Rechnung genehmigen müssen. Genehmigungen werden der Reihe nach bearbeitet." - -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Genehmigung anfordern" - -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Genehmigungsstatus" - -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "Angefordert von" - -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "Angefordert am" - -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "Genehmigt von" - -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "Abgelehnt von" - -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Ablehnungsgrund" - -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "Genehmigungsstufen" - -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Schnelle Aktionen" - -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "Warte auf Genehmigung von einem anderen Benutzer." - -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Export nach Excel" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Teilweise bezahlt" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Vollständig bezahlt" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Rechnung erstellen" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Erstellen Sie eine neue Rechnung für ein Projekt und einen Kunden" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Wählen Sie ein Projekt aus" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "Wenn Sie ein Projekt auswählen, werden die Kundendaten automatisch ausgefüllt" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "Käuferreferenz (PEPPOL BT-10)" - -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "Optional; wird in PEPPOL UBL verwendet" - -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Steuersatz (%)" - -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Tipps" - -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "Wählen Sie das richtige Projekt aus, um die Kundendaten automatisch auszufüllen." - -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "Sie können Notizen und Bedingungen anpassen, bevor Sie die Rechnung senden." - -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Rechnung bearbeiten" - -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Aktualisieren Sie Rechnungsdetails, Artikel und Bedingungen" - -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Zeitbasierte Dienstleistungen und Stundenarbeit" - -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "Projekt / Lagerartikel" - -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "Aufgabe / Lager" - -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "Projektstunden" - -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Wählen Sie Lagerartikel aus" - -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "z. B. Webentwicklungsdienste" - -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "Menge stammt aus erfassten Stunden und kann nicht bearbeitet werden" - -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Artikel entfernen" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Zwischensumme der Artikel" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Abzurechnende Ausgaben wie Reisen, Verpflegung und Material" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Kosten hinzufügen" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "z. B. Reisen zum Kundentreffen" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Verknüpfte Ausgabe – Titel kann nicht bearbeitet werden" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Verknüpfte Ausgabe – Beschreibung kann nicht bearbeitet werden" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Verknüpfte Ausgabe – Kategorie kann nicht bearbeitet werden" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Reisen" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Mahlzeiten" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Unterkunft" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Lieferungen" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Software" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Ausrüstung" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Dienstleistungen" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Marketing" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Ausbildung" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Andere" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Verknüpfte Ausgabe – Betrag kann nicht bearbeitet werden" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Verknüpfte Ausgabe – Datum kann nicht bearbeitet werden" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Verknüpfung der Ausgaben mit der Rechnung aufheben" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Zwischensumme der Ausgaben" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Zusätzliche Waren" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Produkte, Materialien, Lizenzen und andere Waren" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Gut hinzufügen" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Preis" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "z. B. Softwarelizenz" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Produkt" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Service" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Material" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "Gut entfernen" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Warenzwischensumme" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Live-Vorschau" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Zahlung" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Waren" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Aus Zeit/Kosten generieren" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Zahlung aufzeichnen" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "PDF exportieren" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "CSV exportieren" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Doppelte Rechnung" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "Sind Sie sicher, dass Sie die Verknüpfung dieser Ausgabe mit der Rechnung aufheben möchten?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Verknüpfung der Ausgaben aufheben" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Verknüpfung aufheben" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "Bitte fügen Sie der Rechnung mindestens einen Artikel, eine Ausgabe oder eine zusätzliche Ware hinzu" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Generieren Sie aus Zeit, Kosten und Waren" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "Wählen Sie nicht abgerechnete Zeiteinträge, Projektkosten und zusätzliche Waren aus, die dieser Rechnung hinzugefügt werden sollen" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Zurück zu Bearbeiten" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Nicht abgerechnete Zeiteinträge" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "Einträge" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "Für dieses Projekt wurden keine nicht abgerechneten Zeiteinträge gefunden." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Nicht in Rechnung gestellte Projektkosten" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "Für dieses Projekt wurden keine nicht in Rechnung gestellten Kosten gefunden." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Nicht in Rechnung gestellte abrechenbare Ausgaben" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Verkäufer" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "Für dieses Projekt wurden keine nicht in Rechnung gestellten abrechenbaren Ausgaben gefunden." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Projektzusatzgüter" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "Für dieses Projekt wurden keine zusätzlichen Waren gefunden." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Ausgewählte zur Rechnung hinzufügen" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Zusammenfassung der Auswahl" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Insgesamt verfügbare Stunden" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Gesamte verfügbare Kosten" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Gesamte verfügbare Ausgaben" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Insgesamt verfügbare Waren" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Übersicht über die Prepaid-Stunden" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "Der Plan umfasst %(hours)s Stunden pro Zyklus (wird am Tag %(day)s zurückgesetzt)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "Verbraucht: %(consumed)s h • Verbleibend: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Für den ausgewählten Zeitraum wurde noch keine Prepaid-Nutzung erfasst." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "Sie können mehrere Zeiteinträge, Kosten, Ausgaben und Zusatzgüter auswählen." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "Zeiteinträge werden bei der Elementerstellung nach Aufgabe oder Projekt gruppiert." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "Kosten und Zusatzgüter werden als einzelne Rechnungspositionen addiert." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "Ausgaben sind mit der Rechnung verknüpft und erscheinen in einem separaten Abschnitt." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "Bitte wählen Sie mindestens einen Zeiteintrag, Kosten, Ausgaben oder ein Extragut aus" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Rechnungen filtern" - -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Rechnungsnummer oder Kunde" - -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Ausgewählte Rechnungen löschen" - -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Status für ausgewählte Rechnungen ändern" - -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "Status auswählen" - -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "Rechnungsreferenz" - -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "z. B. Zahlungsbestätigungsnummer" - -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Rechnung löschen" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Warnung:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "Sind Sie sicher, dass Sie die Rechnung löschen möchten?" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "Alle mit dieser Rechnung verbundenen Rechnungspositionen, zusätzlichen Waren und Zahlungsaufzeichnungen werden dauerhaft gelöscht." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "RECHNUNG" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Rechnung #" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Gesetzesentwurf für" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Menge (Stunden)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "Erstellt aus %(num)d Zeiteinträgen" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Kosten" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Zwischensumme:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "Steuer (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Gesamtbetrag:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Hinweise:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Bedingungen:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Zahlungsinformationen:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Allgemeine Geschäftsbedingungen:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "UBL herunterladen" - -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "Online bezahlen" - -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "Zahlungsreferenz" - -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "PEPPOL-Konformität: Die folgenden Angaben fehlen" - -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "Rechnungsgenehmigung" - -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "Genehmigung anfordern, bevor diese Rechnung an den Kunden gesendet wird." - -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Zahlungshistorie" - -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Rechnung per E-Mail senden" - -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "Problem bearbeiten" - -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "Nicht zugewiesen" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "Problem erstellen" - -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "Probleme filtern" - -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "Nach Titel oder Beschreibung suchen" - -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "Filter anwenden" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Seite" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "von" - -#: app/templates/issues/list.html:169 -msgid "No issues found" -msgstr "Keine Probleme gefunden" - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "Keine Probleme entsprechen Ihren Filtern. Erstellen Sie ein Problem oder passen Sie Ihre Filter an." - -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "Neues Problem erstellen" - -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "Möchten Sie dieses Problem wirklich löschen?" - -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "Problem löschen" - -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Aufgabenverwaltung" - -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "Mit vorhandener Aufgabe verknüpfen" - -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "Aufgabe auswählen" - -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "Link" - -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "Neue Aufgabe aus diesem Problem erstellen" - -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "Eingereicht von" - -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" - -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Spalten verwalten" - -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Ziehen Sie Aufgaben zwischen Spalten, um ihren Status zu aktualisieren" - -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "Kanban-Board" - -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "umgezogen" - -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "Keine Aufgaben in dieser Spalte." - -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Kanban-Spalten verwalten" - -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Passen Sie die Spalten und Aufgabenstatus Ihrer Kanban-Tafel an" - -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Projekt:" - -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Globale Spalten" - -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Spalte hinzufügen" - -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Liste der Kanban-Spalten" - -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Schlüssel" - -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "Vollständig?" - -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Zum Neuanordnen ziehen" - -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Spalte bearbeiten" - -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Aktiven Status umschalten" - -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "Keine Kanban-Spalten gefunden. Erstellen Sie Ihre erste Spalte, um loszulegen." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Tipps:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Ziehen Sie Zeilen per Drag-and-Drop, um die Spalten neu anzuordnen" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "Systemspalten (todo, in_progress, done) können nicht gelöscht, aber angepasst werden" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "Als „Abgeschlossen“ markierte Spalten markieren Aufgaben als abgeschlossen, wenn sie in diese Spalte gezogen werden" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "Inaktive Spalten werden auf dem Kanban-Board ausgeblendet, Aufgaben mit diesem Status bleiben jedoch zugänglich" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Kanban-Spalte löschen" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "Sind Sie sicher, dass Sie die Spalte löschen möchten?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Schlüssel:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "Hinweis: Auf Aufgaben mit diesem Status kann weiterhin zugegriffen werden, die Spalte wird jedoch nicht mehr auf dem Kanban-Board angezeigt." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Spalte löschen" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Die Spalten wurden erfolgreich neu angeordnet" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "Spalten konnten nicht neu angeordnet werden. Bitte versuchen Sie es erneut." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Erstellen Sie eine Kanban-Spalte" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Fügen Sie Ihrem Kanban-Board eine neue Spalte hinzu" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Erstellen Sie ein Kanban-Spaltenformular" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Spaltenbeschriftung" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "z. B. „In Überprüfung“, „Blockiert“, „Testet“." - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "Der auf der Kanban-Tafel angezeigte Anzeigename" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Spaltenschlüssel" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "z. B. in_review, blockiert, testen" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "Eindeutiger Bezeichner (Kleinbuchstaben, keine Leerzeichen, Unterstriche verwenden). Wird automatisch aus dem Etikett generiert, wenn es leer ist." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Global (für alle Projekte)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "Wählen Sie ein Projekt aus, um projektspezifische Spalten zu erstellen, oder belassen Sie die Spalte „Global“ für alle Projekte" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Icon-Klasse" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Font Awesome-Icon-Klasse" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Durchsuchen Sie Symbole" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Primär (Blau)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Sekundär (Grau)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Erfolg (Grün)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Gefahr (Rot)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Warnung (Gelb)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Info (Cyan)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Bootstrap-Farbklasse für das Styling" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Als abgeschlossen markieren" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "In diese Spalte verschobene Aufgaben werden als erledigt markiert" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Spalte erstellen" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Notiz:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "Die Spalte wird am Ende der Tafel hinzugefügt. Sie können die Spalten später auf der Verwaltungsseite neu anordnen." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Kanban-Spalte bearbeiten" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Spalteneinstellungen ändern" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Kanban-Spaltenformular bearbeiten" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "Der Schlüssel kann nach der Erstellung nicht mehr geändert werden" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Dies ist eine projektspezifische Spalte" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Dies ist eine globale Spalte (für alle Projekte)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Vorschau" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Inaktive Spalten werden auf dem Kanban-Board ausgeblendet" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Systemspalte:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "Dies ist eine Systemspalte. Sie können das Erscheinungsbild anpassen, es jedoch nicht löschen." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "Tastenkürzel (? drücken)" - -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "Tastenkürzel anzeigen" - -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Schalten Sie den Dunkelmodus um" - -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "Vom Kiosk-Modus abmelden" - -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "Scannen" - -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "Lagerbestand anpassen" - -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "Tastenkürzel schließen" - -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "Barcode scannen oder SKU eingeben" - -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "Verwenden Sie einen Barcode-Scanner oder geben Sie die SKU manuell ein" - -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "Barcode scannen oder SKU eingeben..." - -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "Barcode- oder SKU-Eingabe" - -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "Kamera zum Scannen verwenden" - -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "Kamera-Scanner öffnen" - -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "Kamera-Scanner schließen" - -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "Kamera schließen" - -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "Menge verringern" - -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "Anpassungsmenge" - -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "Menge erhöhen" - -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "Kiosk-Anpassung" - -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "Physische Zählung" - -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "Gefunden" - -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "Beschädigt" - -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "Lagerbestandsanpassung anwenden" - -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "Anpassung anwenden" - -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "Letzte Anpassung rückgängig machen" - -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "Letzte Anpassung rückgängig machen" - -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "Übertragungsmenge" - -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "Lagerbestand übertragen" - -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "Lagerbestand übertragen" - -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "Timer stoppen" - -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Timer stoppen" - -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "Projekt auswählen..." - -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "Keine Projekte verfügbar" - -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "Keine aktiven Projekte gefunden. Bitte erstellen Sie zuerst ein Projekt." - -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Keine Aufgabe" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "Aufgaben werden nach der Projektauswahl geladen" - -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "Woran arbeitest du?" - -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "Timer starten" - -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "Aktuelle Elemente" - -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "Kiosk-Anmeldung" - -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "Schnellzugriff für Lageroperationen" - -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "Barcode-Scannen" - -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "Lagerverwaltung" - -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "Zeiterfassung" - -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "Im Kiosk-Modus anmelden" - -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "Benutzernamen auswählen, um fortzufahren" - -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "Design umschalten" - -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "Benutzer auswählen" - -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "Ihr-Benutzername" - -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "Standard-Anmeldung" - -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "In Kunden umwandeln" - -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "Dies erstellt einen neuen Kunden und primären Kontakt aus diesem Lead und markiert den Lead dann als konvertiert." - -#: app/templates/leads/convert_to_client.html:23 -msgid "Lead summary" -msgstr "Lead-Zusammenfassung" - -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "In Geschäft umwandeln" - -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Quelle" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Website, Empfehlung, Anzeige..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Lead-Score" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Schätzwert" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Lead speichern" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Name, Firma, E-Mail..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Alle Status" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Website, Empfehlung..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Punktzahl" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "Keine Leads gefunden" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Erstellen Sie den ersten Lead" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "Diesen Lead als verloren markieren?" - -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "Als verloren markieren" - -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "Lead" - -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "Noch keine Kontaktdetails" - -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "Lead-Details" - -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Professionelle Zeiterfassung und Projektmanagement" - -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "Eine umfassende webbasierte Zeiterfassungsanwendung, die mit Flask erstellt wurde und Projektmanagement, Kundenorganisation, Aufgabenverwaltung, Rechnungsstellung und erweiterte Analysen bietet." - -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Fakturierung" - -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "TimeTracker ist kostenlos und Open Source. Sie können spenden oder eine Supporter-Lizenz kaufen — Funktionen sind nie gesperrt." - -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Intelligente Timer" - -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "Echtzeit-Tracking mit Leerlauferkennung und Live-Updates" - -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Kundenmanagement" - -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Organisieren Sie Kunden mit Kontakten, Tarifen und Projektbeziehungen" - -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Aufgabensystem" +#~ msgid "Export Format" +#~ msgstr "Exportformat" -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Teilen Sie Projekte mit Fortschrittsverfolgung in Aufgaben auf" +#~ msgid "Export Report" +#~ msgstr "Bericht exportieren" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "PDF-Rechnungen" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Geplante Berichte verwalten" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Erstellen Sie professionelle Rechnungen aus erfasster Zeit" +#~ msgid "CSV Export" +#~ msgstr "CSV-Export" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Kernfunktionen" +#~ msgid "Excel Export" +#~ msgstr "Excel-Export" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Timer mit Projekt- und Aufgabenzuordnung starten/stoppen" +#~ msgid "Report Types" +#~ msgstr "Berichtstypen" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Manuelle Zeiteingabe mit Notizen und Tags" +#~ msgid "Project Report" +#~ msgstr "Projektbericht" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Kunden- und Projektorganisation" +#~ msgid "User Report" +#~ msgstr "Benutzerbericht" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Rollenbasierter Zugriff und Benutzerprofile" +#~ msgid "Summary Report" +#~ msgstr "Zusammenfassender Bericht" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Erweiterte Funktionen" +#~ msgid "Task Report" +#~ msgstr "Aufgabenbericht" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Gebrandete PDF-Rechnung mit Steuer- und Zahlungsverfolgung" +#~ msgid "Time Entries Report" +#~ msgstr "Zeiteinträge-Bericht" -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Visuelle Analysen und detaillierte Berichte" +#~ msgid "Unpaid Hours Report" +#~ msgstr "Bericht über unbezahlte Stunden" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "REST-API für Integrationen" +#~ msgid "Report Management" +#~ msgstr "Berichtsverwaltung" -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "PWA-Funktionen und mobilfreundliche Benutzeroberfläche" +#~ msgid "Saved Report Views" +#~ msgstr "Gespeicherte Berichtsansichten" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Plattformunterstützung" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "Gespeicherte Berichtskonfigurationen anzeigen und verwalten" -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Webanwendung" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "Automatisierte Berichtslieferung per E-Mail verwalten" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Desktop-Browser (Chrome, Firefox, Safari, Edge)" +#~ msgid "No recent entries." +#~ msgstr "Keine aktuellen Einträge." -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Mobiles responsives Design" +#~ msgid "No scheduled reports yet." +#~ msgstr "Noch keine geplanten Berichte." -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "Progressive Web-App (PWA)" +#~ msgid "Add Scheduled Report" +#~ msgstr "Geplanten Bericht hinzufügen" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Touch-freundliche Tablet-Oberfläche" +#~ msgid "Please set a date range" +#~ msgstr "Bitte Datumsbereich festlegen" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Betriebssysteme" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" +#~ "Sie müssen zuerst eine gespeicherte " +#~ "Berichtsansicht erstellen. Bitte erstellen Sie" +#~ " eine von der Berichtsseite." -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "Schedule Report" +#~ msgstr "Bericht planen" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android und iOS (Browser)" +#~ msgid "Report View" +#~ msgstr "Berichtsansicht" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Raspberry Pi-Unterstützung" +#~ msgid "Select a report view..." +#~ msgstr "Berichtsansicht auswählen..." -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Dockerisierte Bereitstellung" +#~ msgid "Recipients" +#~ msgstr "Empfänger" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Datenbankunterstützung" +#~ msgid "Comma-separated email addresses" +#~ msgstr "Kommagetrennte E-Mail-Adressen" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (empfohlen)" +#~ msgid "Create Schedule" +#~ msgstr "Zeitplan erstellen" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (Entwicklung/Test)" +#~ msgid "Failed to load report views" +#~ msgstr "Berichtsansichten konnten nicht geladen werden" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Automatische Migrationen mit Flask-Migrate" +#~ msgid "Scheduled report created successfully" +#~ msgstr "Geplanter Bericht erfolgreich erstellt" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Backup- und Wiederherstellungstools" +#~ msgid "Failed to create scheduled report" +#~ msgstr "Geplanter Bericht konnte nicht erstellt werden" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Technische Spezifikationen" +#~ msgid "Failed to update schedule" +#~ msgstr "Zeitplan konnte nicht aktualisiert werden" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Technologie-Stack" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "Möchten Sie diesen geplanten Bericht wirklich löschen?" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "Backend" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "Geplanter Bericht erfolgreich gelöscht" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "Frontend" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "Geplanter Bericht konnte nicht gelöscht werden" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Einsatz" +#~ msgid "Iterative Report" +#~ msgstr "Iterativer Bericht" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Schlüsselfunktionen" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "Iterativer Bericht – Ein Bericht pro %(field_name)s-Wert" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "Echtzeit" +#~ msgid "Summary by Client" +#~ msgstr "Zusammenfassung nach Kunden" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "Keine Daten für diesen %(field_name)s-Wert gefunden" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "Open Source und Community" +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" +#~ "Keine eindeutigen Werte für das " +#~ "benutzerdefinierte Feld „%(field_name)s\" gefunden" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Vorteile von Open Source" +#~ msgid "No data for the selected period." +#~ msgstr "Keine Daten für den ausgewählten Zeitraum." -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Vollständiger Quellcode auf GitHub verfügbar" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" +#~ "Versuchen Sie einen anderen Datumsbereich " +#~ "oder stellen Sie sicher, dass Zeit " +#~ "für Projekte erfasst wurde." -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Lizenziert unter GPL v3.0" +#~ msgid "Features" +#~ msgstr "Funktionen" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Community-getriebene Entwicklung" +#~ msgid "Iterative" +#~ msgstr "Iterativ" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Transparente Problemverfolgung und Fehlerberichte" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "Möchten Sie diese Berichtsansicht wirklich löschen?" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Bereitstellungsoptionen" +#~ msgid "No Saved Report Views" +#~ msgstr "Keine gespeicherten Berichtsansichten" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Docker-Images (GHCR)" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" +#~ "Berichtskonfigurationen erstellen und speichern, " +#~ "um sie in geplanten Berichten zu " +#~ "verwenden." -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Selbstgehostete Bereitstellung mit voller Kontrolle" +#~ msgid "Create Report" +#~ msgstr "Bericht erstellen" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Cloud-fähig mit Compose-Konfigurationen" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "Automatische E-Mail-Zustellung für Berichte einrichten" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Auf GitHub ansehen" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "Zurück zu geplanten Berichten" + +#~ msgid "Select a saved report view..." +#~ msgstr "Gespeicherte Berichtsansicht auswählen..." -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -msgid "Support updates" -msgstr "Support-Updates" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "Gespeicherte Berichtsansicht zum Planen auswählen" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "TimeTracker-Entwicklung unterstützen" +#~ msgid "Email Recipients" +#~ msgstr "E-Mail-Empfänger" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "TimeTracker ist kostenlos und Open Source. Unterstützen Sie Updates und neue Funktionen — oder entfernen Sie Hinweise mit einem einmaligen Schlüssel." +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "email1@example.com, email2@example.com" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "Hinweise mit einem einmaligen Schlüssel entfernen." +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" +#~ "Geben Sie eine oder mehrere durch " +#~ "Kommas getrennte E-Mail-Adressen ein. " +#~ "Diese Empfänger erhalten den geplanten " +#~ "Bericht per E-Mail." -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Hilfe und Ressourcen erhalten" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" +#~ "Bei Verwendung von Zuordnung oder " +#~ "Vorlage werden diese als Fallback " +#~ "verwendet, wenn keine Adresse für einen" +#~ " Wert gefunden wird." -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Dokumentation" +#~ msgid "Select frequency..." +#~ msgstr "Häufigkeit auswählen..." -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Schritt-für-Schritt-Anleitungen für alle Funktionen." +#~ msgid "Custom (Cron)" +#~ msgstr "Benutzerdefiniert (Cron)" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Hilfe anzeigen" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "Vorherigen Kalendermonat als Datumsbereich verwenden" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Systeminformationen" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" +#~ "Für monatliche Ausführungen: Der Bericht " +#~ "verwendet den ersten und letzten Tag " +#~ "des Vormonats." + +#~ msgid "Cron Expression" +#~ msgstr "Cron-Ausdruck" + +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "Cron-Format: Minute Stunde Tag Monat Wochentag" + +#~ msgid "Report Iteration (Optional)" +#~ msgstr "Berichtsiteration (Optional)" + +#~ msgid "Split report by custom field value" +#~ msgstr "Bericht nach benutzerdefiniertem Feldwert aufteilen" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Status, Versionen und Konfigurationsdetails." - -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "Administratorzugriff erforderlich" - -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Community-Unterstützung" - -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Melden Sie Probleme, fordern Sie Funktionen an und leisten Sie einen Beitrag." - -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "GitHub-Probleme" - -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "%(duration)s auf %(project)s erfasst" - -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -msgid "View time entries" -msgstr "Zeiteinträge anzeigen" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "Hier erhalten Sie einen kurzen Überblick über Ihre Arbeit." - -#: app/templates/main/dashboard.html:43 -msgid "Start timer with same project, task and notes as last entry" -msgstr "Timer mit demselben Projekt, Aufgabe und Notizen wie beim letzten Eintrag starten" - -#: app/templates/main/dashboard.html:44 -msgid "Repeat last" -msgstr "Letzten wiederholen" - -#: app/templates/main/dashboard.html:46 -msgid "Start timer with last project and notes?" -msgstr "Timer mit letztem Projekt und Notizen starten?" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "Schnellstart" - -#: app/templates/main/dashboard.html:70 -msgid "Paused" -msgstr "Pausiert" - -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -msgid "Break" -msgstr "Pause" - -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "Läuft" - -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "Pause bisher" - -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Begonnen um" - -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "Abgelaufen" - -#: app/templates/main/dashboard.html:102 -msgid "Adjust time" -msgstr "Zeit anpassen" - -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "15 Min. abziehen" - -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "5 Min. abziehen" - -#: app/templates/main/dashboard.html:108 -msgid "Add 5 min" -msgstr "+5 Min" - -#: app/templates/main/dashboard.html:109 -msgid "Add 15 min" -msgstr "+15 Min" - -#: app/templates/main/dashboard.html:118 -msgid "Resume timer" -msgstr "Timer fortsetzen" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -msgid "Resume" -msgstr "Fortsetzen" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "Timer pausieren (Pausenzeit wird bei Fortsetzung gezählt)" - -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Pause" - -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "Aktuelle Zeit stoppen und speichern" - -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "Stoppen & speichern" - -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Kein aktiver Timer." - -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "Setzen Sie Ihre letzte Sitzung fort oder verwenden Sie die Schaltflächen oben, um die letzte zu wiederholen / einen neuen Timer zu starten." - -#: app/templates/main/dashboard.html:144 -msgid "Resume last session" -msgstr "Letzte Sitzung fortsetzen" - -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "Klicken Sie oben auf „Timer starten“, um Ihre Zeit zu erfassen." - -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "Heutige Stunden" - -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -msgid "overtime" -msgstr "Überstunden" - -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "Wochenstunden" - -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "Monatsstunden" - -#: app/templates/main/dashboard.html:214 -msgid "Overtime (YTD)" -msgstr "Überstunden (laufendes Jahr)" - -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "Wenn dies Ihnen auch nur 1 Stunde gespart hat, erwägen Sie eine Unterstützung ❤️" - -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "Beginnen Sie mit der Erfassung, um Ihre Produktivitätserkenntnisse hier zu sehen." - -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "Erkenntnisse werden geladen…" - -#: app/templates/main/dashboard.html:233 -msgid "Value insights" -msgstr "Wertanalyse" - -#: app/templates/main/dashboard.html:234 -msgid "Your tracked time at a glance" -msgstr "Ihre erfasste Zeit auf einen Blick" - -#: app/templates/main/dashboard.html:246 -msgid "Total hours tracked" -msgstr "Gesamte erfasste Stunden" - -#: app/templates/main/dashboard.html:254 -msgid "Active days" -msgstr "Aktive Tage" - -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "Stunden pro Tag (letzte 7 Tage)" - -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "Stunden pro Tag letzte sieben Tage" - -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "Produktivster Tag" - -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "Durchschnittliche Sitzungsdauer" - -#: app/templates/main/dashboard.html:273 -msgid "Estimated value tracked" -msgstr "Geschätzter erfasster Wert" - -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "Diese Woche vs. letzte Woche" - -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "Stunden pro Tag (Mo–heute vs. gleiche Tage letzte Woche)" - -#: app/templates/main/dashboard.html:285 -msgid "hrs this week" -msgstr "Std. diese Woche" - -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "vs. letzte Woche" - -#: app/templates/main/dashboard.html:287 -msgid "This week" -msgstr "Diese Woche" - -#: app/templates/main/dashboard.html:288 -msgid "Last week" -msgstr "Letzte Woche" - -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "Vergleich konnte nicht geladen werden." - -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "Diese und letzte Woche Stunden pro Tag" - -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Aktuelle Einträge" - -#: app/templates/main/dashboard.html:329 -msgid "View all" -msgstr "Alle anzeigen" - -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Fortsetzen – Starten Sie einen neuen Timer mit denselben Eigenschaften" - -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Eintrag bearbeiten" - -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Doppelter Eintrag" - -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Eintrag löschen" - -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "Keine aktuellen Einträge gefunden." - -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "Beginnen Sie mit der Zeiterfassung, um Einträge hier zu sehen." - -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Wöchentliches Ziel" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Tage übrig" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Brauchen" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "Ziel erreichen" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Kein wöchentliches Ziel" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Legen Sie ein wöchentliches Zeitziel fest, um Ihren Fortschritt zu verfolgen" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Ziel erstellen" - -#: app/templates/main/dashboard.html:480 -msgid "Time by project (last 7 days)" -msgstr "Zeit nach Projekt (letzte 7 Tage)" - -#: app/templates/main/dashboard.html:482 -msgid "View report" -msgstr "Bericht anzeigen" - -#: app/templates/main/dashboard.html:486 -msgid "Time distribution by project for the last 7 days" -msgstr "Zeitverteilung nach Projekt für die letzten 7 Tage" - -#: app/templates/main/dashboard.html:525 -msgid "No time logged in the last 7 days." -msgstr "Keine Zeit in den letzten 7 Tagen erfasst." - -#: app/templates/main/dashboard.html:526 -msgid "Start tracking to see distribution here." -msgstr "Beginnen Sie mit der Zeiterfassung, um die Verteilung hier zu sehen." - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Top-Projekte (30 Tage)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Keine Aktivität in den letzten 30 Tagen." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "Beginnen Sie mit der Zeiterfassung für Projekte, um sie hier zu sehen." - -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "Live" - -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "Sie haben %(hours)s Stunden erfasst" - -#: app/templates/main/dashboard.html:639 -msgid "You have created %(count)s entries" -msgstr "Sie haben %(count)s Einträge erstellt" - -#: app/templates/main/dashboard.html:641 -msgid "Reports generated: %(n)s" -msgstr "Generierte Berichte: %(n)s" - -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "Vielen Dank für Ihre Unterstützung der Entwicklung. Das Teilen von TimeTracker hilft immer noch sehr." - -#: app/templates/main/dashboard.html:647 -msgid "Share & support" -msgstr "Teilen & Unterstützen" - -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "Wenn dies Ihnen Zeit spart, erwägen Sie die Unterstützung der Entwicklung — alles bleibt kostenlos und offen." - -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "Lizenz kaufen (€25)" - -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "Neue Aufgabe erstellen..." - -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "Aufgaben werden geladen..." - -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "Neuen Aufgabennamen eingeben:" - -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "Aufgabe konnte nicht erstellt werden: " - -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "Bitte schließen Sie die Aufgabenerstellung ab oder wählen Sie eine vorhandene Aufgabe aus" - -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "Eine Aufgabe muss ausgewählt werden, wenn Zeit für ein Projekt erfasst wird" - -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "Eine Beschreibung ist erforderlich, wenn Zeit erfasst wird" - -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -msgid "Description must be at least %(min)s characters" -msgstr "Die Beschreibung muss mindestens %(min)s Zeichen lang sein" - -#: app/templates/main/dashboard.html:715 -msgid "Quick start with a template" -msgstr "Schnellstart mit einer Vorlage" - -#: app/templates/main/dashboard.html:726 -msgid "All templates" -msgstr "Alle Vorlagen" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "Entweder ein Projekt oder einen Kunden auswählen" - -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Aufgabe (optional)" - -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "Wählen Sie zuerst ein Projekt aus, um Aufgaben zu laden, oder wählen Sie „Neue Aufgabe erstellen...“, um eine hinzuzufügen" - -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Notizen (optional)" - -#: app/templates/main/dashboard.html:767 -msgid "Tags (optional)" -msgstr "Tags (optional)" - -#: app/templates/main/dashboard.html:768 -msgid "e.g. meeting, dev, admin" -msgstr "z. B. Besprechung, Entwicklung, Verwaltung" - -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "Kommagetrennt; zuletzt verwendete Tags werden als Vorschläge angezeigt." - -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "Geben Sie einen Namen für die neue Aufgabe ein." - -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "Aufgabenname" - -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "Aufgabe erstellen" - -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "Aufgabenname ist erforderlich." - -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "Keine gültigen Bilddateien ausgewählt. Bitte wählen Sie PNG-, JPG-, GIF- oder WebP-Bilder." - -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "Wird hochgeladen" - -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "Bilder" - -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "Bild wird hochgeladen" - -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "Erfolgreich hochgeladen" - -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "Bild(er) konnten nicht hochgeladen werden" - -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "Bilder konnten nicht hochgeladen werden. Bitte versuchen Sie es erneut." - -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "Bilder konnten nicht hochgeladen werden. Bitte überprüfen Sie Ihre Verbindung und versuchen Sie es erneut." - -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Unterstützen Sie die Entwicklung" - -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "Spenden Sie zur Unterstützung der Entwicklung — oder erwerben Sie einen Schlüssel, um Hinweise zu entfernen" - -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "Updates unterstützen und TimeTracker für alle kostenlos halten" - -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "Hinweise mit Schlüssel entfernen" - -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "Warum Ihre Unterstützung wichtig ist" - -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "TimeTracker ist ein kostenloses Open-Source-Projekt, das mit Leidenschaft und Hingabe entwickelt wurde. Ihre Spenden unterstützen direkt:" - -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "Serverinfrastruktur" - -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "Hosting-, Datenbank- und CDN-Kosten, um TimeTracker schnell und zuverlässig zu halten" - -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "Funktionsentwicklung" - -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "Neue Funktionen, Verbesserungen und Fehlerbehebungen basierend auf Ihrem Feedback" - -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "Sicherheit & Wartung" - -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "Regelmäßige Sicherheitsupdates, Abhängigkeitspflege und Leistungsoptimierung" - -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "Internationalisierung" - -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "Übersetzungsunterstützung, Lokalisierung und weltweite Zugänglichkeit von TimeTracker" - -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "Ein Schlüssel pro Instanz; Schlüssel wird nach der Zahlung per E-Mail gesendet (€25 einmalig). Kein Abonnement." - -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "Kopieren Sie Ihre System-ID aus Admin → Einstellungen → Support-Sichtbarkeit." - -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "Kaufen Sie einen Schlüssel über den folgenden Link; Sie erhalten ihn per E-Mail." - -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "Fügen Sie den Code in Admin → Einstellungen → Support-Sichtbarkeit ein und verifizieren Sie ihn." - -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "Ihre TimeTracker-Reise" - -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "Tage mit TimeTracker" - -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "Erfasste Zeiteinträge" - -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "Vielen Dank, dass Sie Teil der TimeTracker-Community sind!" - -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "Wie man unterstützt" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" +#~ "Der Name des benutzerdefinierten Feldes, " +#~ "über das iteriert werden soll (z. " +#~ "B. „salesman“). Für jeden eindeutigen " +#~ "Wert wird ein separater Bericht " +#~ "generiert." -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "Jeder Beitrag, egal wie groß, macht einen Unterschied. Ihre Unterstützung hilft sicherzustellen, dass TimeTracker kostenlos bleibt und sich weiterentwickelt." +#~ msgid "Email distribution" +#~ msgstr "E-Mail-Verteilung" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "Sie werden zu Buy Me a Coffee weitergeleitet, wo Sie Ihren Beitragsbetrag wählen können" +#~ msgid "All reports to recipients below" +#~ msgstr "Alle Berichte an die folgenden Empfänger" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "Die Auswirkung Ihrer Unterstützung" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "Pro Wert: SalesmanEmailMapping-Tabelle" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "Ermöglicht schnellere Entwicklungszyklen und schnellere Funktionsveröffentlichungen" +#~ msgid "Per value: email from template" +#~ msgstr "Pro Wert: E-Mail aus Vorlage" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "Unterstützt bessere Dokumentation und Benutzeranleitungen" +#~ msgid "Recipient email template" +#~ msgstr "Empfänger-E-Mail-Vorlage" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "Hilft dabei, hohe Code- und Sicherheitsstandards aufrechtzuerhalten" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" +#~ "Verwenden Sie {value} für den Wert " +#~ "(z. B. KF); {value}@test.de ergibt " +#~ "KF@test.de. Verwenden Sie {value_lower} für" +#~ " Kleinbuchstaben, z. B. {value_lower}@test.de " +#~ "ergibt kf@test.de." -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "Hält TimeTracker kostenlos und für alle zugänglich" +#~ msgid "Report" +#~ msgstr "Bericht" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "Andere Möglichkeiten zu helfen" +#~ msgid "Split by" +#~ msgstr "Aufteilen nach" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "Auf GitHub beitragen" +#~ msgid "Distribution" +#~ msgstr "Verteilung" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "Fehler melden, Funktionen vorschlagen oder Code einreichen" +#~ msgid "Template" +#~ msgstr "Vorlage" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "Anderen helfen" +#~ msgid "Invalid: saved view not found" +#~ msgstr "Ungültig: Gespeicherte Ansicht nicht gefunden" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "Teilen Sie Ihr Wissen in der Community" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "Bericht jetzt auslösen (zum Testen)" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "Einmaliger Schlüssel pro Instanz; kein Abonnement" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "Ungültigen Zeitplan korrigieren oder entfernen" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Vollständige Dokumentation und Bedienungsanleitung" +#~ msgid "No Scheduled Reports" +#~ msgstr "Keine geplanten Berichte" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Schnelle Navigation" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" +#~ "Geplante Berichte erstellen, um Berichte " +#~ "automatisch per E-Mail zu erhalten." -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Abschnitte filtern..." +#~ msgid "Report triggered successfully!" +#~ msgstr "Bericht erfolgreich ausgelöst!" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Schnellstart" +#~ msgid "Report sent to recipients." +#~ msgstr "Bericht an Empfänger gesendet." -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Berichte und Analysen" +#~ msgid "Error triggering report:" +#~ msgstr "Fehler beim Auslösen des Berichts:" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Produktivitätsfunktionen" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" +#~ "Fehler beim Auslösen des Berichts. Bitte" +#~ " überprüfen Sie die Konsole für " +#~ "Details." -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Admin-Funktionen" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Zeit nach Projekt (letzte 30 Tage)" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Mobile Nutzung" +#~ msgid "Time distribution by project" +#~ msgstr "Zeitverteilung nach Projekt" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -msgid "API Documentation" -msgstr "API-Dokumentation" +#~ msgid "No project data for the last 30 days." +#~ msgstr "Keine Projektdaten für die letzten 30 Tage." -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Fehlerbehebung" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "Tagestrend (letzte 14 Tage)" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "TimeTracker-Hilfecenter" +#~ msgid "Daily hours trend" +#~ msgstr "Täglicher Stundentrend" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "Alles, was Sie wissen müssen, um TimeTracker optimal zu nutzen" +#~ msgid "No trend data." +#~ msgstr "Keine Trenddaten." -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Beginnen Sie mit der Zeiterfassung" +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Top-Projekte (letzte 30 Tage)" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Projekte anzeigen" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "Keine Aufgaben mit erfasster Zeit für den ausgewählten Zeitraum." -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Berichte erstellen" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" +#~ "Versuchen Sie einen anderen Datumsbereich " +#~ "oder erfassen Sie Zeit für Aufgaben." -#: app/templates/main/help.html:69 -msgid "API Docs" -msgstr "API-Dokumentation" +#~ msgid "All Clients" +#~ msgstr "Alle Kunden" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "Produkttour neu starten" +#~ msgid "All Tasks" +#~ msgstr "Alle Aufgaben" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Kurzanleitung" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "Keine Zeiteinträge für die ausgewählten Filter gefunden." -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "Für neue Benutzer" +#~ msgid "Total Unpaid Hours" +#~ msgstr "Gesamte unbezahlte Stunden" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Melden Sie sich mit Ihrem Benutzernamen an (kein Passwort erforderlich)" +#~ msgid "Estimated Amount" +#~ msgstr "Geschätzter Betrag" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Erkunden Sie das Dashboard, um einen Überblick zu erhalten" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "Kunden mit unbezahlten Stunden" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Starten Sie Ihren ersten Timer für ein bestehendes Projekt" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "Unbezahlte Stunden nach Kunden" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Sehen Sie sich Ihre Zeiteinträge in Berichten an" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "Keine unbezahlten Stunden für den ausgewählten Zeitraum gefunden." -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "Für Administratoren" +#~ msgid "Export entries (Excel)" +#~ msgstr "Einträge exportieren (Excel)" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Richten Sie Kunden im Bereich „Kundenverwaltung“ ein" +#~ msgid "Select columns:" +#~ msgstr "Spalten auswählen:" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Erstellen Sie Projekte und weisen Sie sie Kunden zu" +#~ msgid "Duration (formatted)" +#~ msgstr "Dauer (formatiert)" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Systemeinstellungen konfigurieren (Zeitzone, Währung usw.)" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "" +#~ "Versuchen Sie einen anderen Datumsbereich " +#~ "oder stellen Sie sicher, dass Zeit " +#~ "erfasst wurde." -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Verwalten Sie Benutzer und Berechtigungen" +#~ msgid "About Overtime Tracking" +#~ msgstr "Informationen zur Überstundenverfolgung" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Profi-Tipp:" +#~ msgid "This week's time summary and top projects" +#~ msgstr "Zeitübersicht dieser Woche und Top-Projekte" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "Nutzen Sie die mobilfreundliche Oberfläche, um die Zeit unterwegs zu erfassen. Der Timer läuft auch dann weiter, wenn Sie Ihren Browser schließen!" +#~ msgid "Back to Reports" +#~ msgstr "Zurück zu Berichten" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "Echtzeit-Tracking mit automatischer Leerlauferkennung und WebSocket-Updates" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "%(count)s Zeiteinträge diese Woche erfasst." -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Manuelle Eingabe" +#~ msgid "Top projects this week" +#~ msgstr "Top-Projekte diese Woche" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "Protokollieren Sie die Zeit manuell mit benutzerdefinierten Start- und Endzeiten" +#~ msgid "No time logged this week yet." +#~ msgstr "Diese Woche noch keine Zeit erfasst." -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Starten eines Timers" +#~ msgid "Apply filter" +#~ msgstr "Filter anwenden" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "Klicken Sie auf das Timer-Symbol in der Kopfzeile (runder Button), um von jeder Seite aus zu starten oder zu stoppen" +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "Möchten Sie diesen Filter wirklich löschen?" -#: app/templates/main/help.html:124 -msgid "Or navigate to the Timer page or dashboard" -msgstr "Oder zur Timer-Seite oder zum Dashboard navigieren" +#~ msgid "Delete Filter" +#~ msgstr "Filter löschen" -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Wählen Sie ein Projekt aus der Dropdown-Liste aus" +#~ msgid "Go to Reports" +#~ msgstr "Zu Berichten gehen" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "Wählen Sie optional eine Aufgabe für eine detailliertere Nachverfolgung aus" +#~ msgid "No saved filters yet" +#~ msgstr "Noch keine gespeicherten Filter" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Fügen Sie Notizen zu dem hinzu, woran Sie gerade arbeiten (optional)" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" +#~ "Filter von den Seiten Berichte oder " +#~ "Aufgaben für den Schnellzugriff speichern." -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Durch Kommas getrennte Tags hinzufügen (optional)" +#~ msgid "Customize Shortcuts" +#~ msgstr "Passen Sie Verknüpfungen an" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Klicken Sie auf „Timer starten“" +#~ msgid "Search shortcuts..." +#~ msgstr "Suchverknüpfungen..." -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Timer-Funktionen" +#~ msgid "Save changes" +#~ msgstr "Änderungen speichern" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Anzeige der Dauer in Echtzeit" +#~ msgid "Press keys..." +#~ msgstr "Tasten drücken..." -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "Pause und Stopp auf dem Dashboard — Pause speichert Ihre Zeit, damit Sie später fortfahren können" +#~ msgid "Click then press a key combination" +#~ msgstr "Klicken und dann eine Tastenkombination drücken" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "Letzte Sitzung mit einem Klick fortsetzen (gleiches Projekt/Aufgabe/Notizen)" +#~ msgid "Click to record" +#~ msgstr "Zum Aufzeichnen klicken" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "Schnelle Zeitanpassung (−15 / −5 / +5 / +15 Min.) während der Timer läuft" +#~ msgid "Revert" +#~ msgstr "Zurücksetzen" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Läuft weiter, wenn der Browser geschlossen wird" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "Konflikt: Derselbe Schlüssel ist mehreren Aktionen zugewiesen." -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Automatische Leerlauferkennung (konfigurierbar)" +#~ msgid "Failed to save" +#~ msgstr "Speichern fehlgeschlagen" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Ein aktiver Timer pro Benutzer (konfigurierbar)" +#~ msgid "Shortcuts saved." +#~ msgstr "Tastenkürzel gespeichert." -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "WebSocket-Live-Updates" +#~ msgid "Failed to save shortcuts." +#~ msgstr "Shortcuts konnten nicht gespeichert werden." -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Manuelle Zeiteingabe" - -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "Erstellen Sie Zeiteinträge manuell, wenn Sie die Zeit erfassen müssen, die Sie nicht am Computer verbracht haben, oder passen Sie vorhandene Einträge an." - -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Erforderliche Informationen" - -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Projektauswahl" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "Dadurch werden alle Tastaturkürzel auf " +#~ "ihre Standardwerte zurückgesetzt. Weitermachen?" -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Startdatum und -uhrzeit" +#~ msgid "Reset to Defaults" +#~ msgstr "Auf Standardeinstellungen zurücksetzen" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Enddatum und -uhrzeit" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "Alle Shortcuts auf Standard zurücksetzen?" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Optionale Informationen" +#~ msgid "Failed to reset" +#~ msgstr "Zurücksetzen fehlgeschlagen" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Aufgabenzuweisung" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Shortcuts auf Standard zurückgesetzt." -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Beschreibung/Anmerkungen" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "Shortcuts konnten nicht zurückgesetzt werden." -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Tags zur Kategorisierung" +#~ msgid "Failed to load shortcuts." +#~ msgstr "Shortcuts konnten nicht geladen werden." -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Überschreibung des abrechenbaren Status" +#~ msgid "Welcome" +#~ msgstr "Willkommen" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Erweiterte Zeiteingabefunktionen" +#~ msgid "Privacy First" +#~ msgstr "Datenschutz zuerst" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Masseneintrag" +#~ msgid "Self-hosted on your server" +#~ msgstr "Selbstgehostet auf Ihrem Server" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "Erstellen Sie mehrere Zeiteinträge für aufeinanderfolgende Tage mit demselben Projekt und derselben Dauer. Perfekt für regelmäßige Arbeitsabläufe." +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Anonyme Telemetrie (Opt-in)" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Vorlagen" +#~ msgid "No PII collected ever" +#~ msgstr "Es wurden nie personenbezogene Daten erfasst" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "Speichern Sie häufig verwendete Zeiteinträge als Vorlagen zur schnellen Wiederverwendung. Speichert Projekte, Aufgaben und Notizen." +#~ msgid "Open source & transparent" +#~ msgstr "Open Source und transparent" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "Visualisieren Sie Ihre Zeiteinträge in einem Kalender. Per Drag-and-Drop können Sie einen neuen Termin festlegen oder auf Daten klicken, um Einträge hinzuzufügen." +#~ msgid "Step 1 of 6" +#~ msgstr "Schritt 1 von 6" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Projektinformationen" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Willkommen bei TimeTracker" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Beschreibender Projektname" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "Lassen Sie uns in wenigen Augenblicken für die Einrichtung sorgen" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Zugehörige Kundenorganisation" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Vielen Dank, dass Sie sich für TimeTracker entschieden haben!" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Projektdetails und Umfang" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "" +#~ "Ihre Daten bleiben auf Ihrem Server " +#~ "und Sie haben die vollständige " +#~ "Kontrolle." -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Aktiv, abgeschlossen oder archiviert" +#~ msgid "Region & time" +#~ msgstr "Region & Zeit" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Abrechnungsdaten" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "Standard-Zeitzone, Datums- und Zeitformat sowie Währung festlegen." -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Ob die Zeit für die Abrechnung erfasst werden soll" +#~ msgid "Timezone" +#~ msgstr "Zeitzone" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Tarif für abrechnungsfähige Zeitberechnungen" +#~ msgid "Date format" +#~ msgstr "Datumsformat" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Rechnungsreferenz" +#~ msgid "Time format" +#~ msgstr "Zeitformat" -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "Bestellnummer oder Rechnungscode" +#~ msgid "24-hour" +#~ msgstr "24-Stunden" -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Projektbetrieb" +#~ msgid "12-hour" +#~ msgstr "12-Stunden" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Erstellen Sie neue Projekte mit Kundenbeziehungen" +#~ msgid "Company details for invoices and branding." +#~ msgstr "Firmendaten für Rechnungen und Markenauftritt." -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Bearbeiten Sie vorhandene Projekte, um Details zu aktualisieren" +#~ msgid "Company name" +#~ msgstr "Firmenname" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Projekte archivieren, um sie vor Timern zu verbergen (Daten bleiben erhalten)" +#~ msgid "Your Company Name" +#~ msgstr "Ihr Firmenname" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Projekte löschen (entfernt alle zugehörigen Zeiteinträge)" +#~ msgid "Your Company Address" +#~ msgstr "Ihre Firmenadresse" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Best Practices" +#~ msgid "App behavior and timer settings." +#~ msgstr "App-Verhalten und Timer-Einstellungen." -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Verwenden Sie beschreibende Projektnamen" +#~ msgid "Allow self-registration" +#~ msgstr "Selbstregistrierung erlauben" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Legen Sie genaue Stundensätze für die Abrechnung fest" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "Benutzer können von der Anmeldeseite aus Konten erstellen" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Archivieren statt löschen, wenn möglich" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Zeitrundung (Minuten)" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Verwenden Sie Rechnungsreferenzen für die externe Nachverfolgung" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Zeiteinträge auf die nächsten N Minuten runden." -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "Das Kundenverwaltungssystem hilft Ihnen, Ihre Arbeit nach Kundenorganisationen zu organisieren, Fehler zu vermeiden und die Projekterstellung zu optimieren." +#~ msgid "Single active timer per user" +#~ msgstr "Einzelner aktiver Timer pro Benutzer" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Kundeninformationen" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "Nur ein laufender Timer pro Benutzer gleichzeitig" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Name der Organisation" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Leerlauf-Timeout (Minuten)" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Firmen- oder Kundenname" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "Timer nach dieser Anzahl von Inaktivitätsminuten pausieren." -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Hauptkontaktdaten" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" +#~ "Kalender-OAuth jetzt oder später unter" +#~ " Admin → Einstellungen konfigurieren." -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "E-Mail und Telefon" +#~ msgid "Google Calendar OAuth" +#~ msgstr "Google Kalender OAuth" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Kontaktinformationen" +#~ msgid "Client ID (optional)" +#~ msgstr "Client-ID (optional)" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Geschäftsadresse" +#~ msgid "Client Secret (optional)" +#~ msgstr "Client-Secret (optional)" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Vorteile" +#~ msgid "Get these from" +#~ msgstr "Diese erhalten von" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "Die Dropdown-Auswahl verhindert Tippfehler" +#~ msgid "Google Cloud Console" +#~ msgstr "Google Cloud Console" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Standardtarife füllen Projekte automatisch aus" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "Wie erhalte ich Google Kalender OAuth-Anmeldedaten?" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Konsistente Kundenbenennung" +#~ msgid "Go to" +#~ msgstr "Gehen zu" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Einfachere Projektorganisation" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "Ein neues Projekt erstellen oder ein vorhandenes auswählen" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Projektanzahl" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "Google Kalender API aktivieren" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Insgesamt und aktive Projekte" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "Zu Anmeldedaten → Anmeldedaten erstellen → OAuth 2.0 Client-ID gehen" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Gesamtarbeitsstunden" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "Anwendungstyp auf „Webanwendung\" setzen" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Kostenschätzung" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "Autorisierte Weiterleitungs-URI hinzufügen:" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Geschätzte Rechnungsbeträge" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "Client-ID und Client-Secret kopieren" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "Unterteilen Sie Projekte in überschaubare Aufgaben mit detaillierter Nachverfolgung und Fortschrittsüberwachung." +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" +#~ "Sie können diesen Schritt überspringen " +#~ "und Integrationen später konfigurieren." -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Aufgabeneigenschaften" +#~ msgid "Privacy & finish" +#~ msgstr "Datenschutz & Abschluss" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Name und Beschreibung" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" +#~ "Wählen Sie, ob Sie zur Verbesserung " +#~ "von TimeTracker mit anonymen Nutzungsdaten " +#~ "beitragen möchten." -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Klare Aufgabenidentifikation" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Aktivieren Sie anonyme Telemetrie" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Prioritätsstufen" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "" +#~ "Helfen Sie uns, Nutzungsmuster zu " +#~ "verstehen, um TimeTracker zu verbessern" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Niedrig, Mittel, Hoch, Dringend" +#~ msgid "What data is collected?" +#~ msgstr "Welche Daten werden erhoben?" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Fälligkeitstermine" +#~ msgid "What we collect:" +#~ msgstr "Was wir sammeln:" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Terminverfolgung" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Anonymer Installations-Fingerabdruck (gehasht)" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Abtretung" +#~ msgid "Application version & platform info" +#~ msgstr "Informationen zur Anwendungsversion und Plattform" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Aufgabeneigentum" +#~ msgid "Feature usage statistics" +#~ msgstr "Statistiken zur Funktionsnutzung" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Statusverfolgung" +#~ msgid "What we DON'T collect:" +#~ msgstr "Was wir NICHT sammeln:" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "Zu erledigen – Nicht gestartet" +#~ msgid "No usernames or emails" +#~ msgstr "Keine Benutzernamen oder E-Mails" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "In Bearbeitung – Derzeit in Arbeit" +#~ msgid "No time entry data or notes" +#~ msgstr "Keine Zeiterfassungsdaten oder Notizen" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Überprüfung – Bereit zur Überprüfung" +#~ msgid "No client or business data" +#~ msgstr "Keine Kunden- oder Geschäftsdaten" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Fertig – Abgeschlossen" +#~ msgid "You can change this anytime in" +#~ msgstr "Sie können dies jederzeit ändern" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Abgebrochen – Nicht erforderlich" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "" +#~ "Indem Sie fortfahren, stimmen Sie der" +#~ " Nutzung von TimeTracker gemäß den " +#~ "folgenden Bestimmungen zu" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Zeiterfassungsfunktionen" +#~ msgid "GPL-3.0 License" +#~ msgstr "GPL-3.0-Lizenz" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Starten Sie Timer direkt aus Aufgaben" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Schließen Sie die Einrichtung ab und fahren Sie fort" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Verknüpfen Sie Zeiteinträge mit bestimmten Aufgaben" +#~ msgid "Edit Task" +#~ msgstr "Aufgabe bearbeiten" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Verfolgen Sie geschätzte und tatsächliche Stunden" +#~ msgid "Failed to update status" +#~ msgstr "Status konnte nicht aktualisiert werden" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Überwachen Sie den Aufgabenfortschritt automatisch" +#~ msgid "Failed to update task status" +#~ msgstr "Der Aufgabenstatus konnte nicht aktualisiert werden" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Aufgabenansichten" +#~ msgid "Kanban column created" +#~ msgstr "Kanban-Spalte erstellt" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Meine Aufgaben – Ihre zugewiesenen Aufgaben" +#~ msgid "Kanban column deleted" +#~ msgstr "Kanban-Spalte gelöscht" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Alle Aufgaben – Vollständige Aufgabenliste" +#~ msgid "Kanban columns reordered" +#~ msgstr "Kanban-Spalten neu angeordnet" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Überfällige Aufgaben – Überfällige Elemente" +#~ msgid "Kanban column visibility changed" +#~ msgstr "Die Sichtbarkeit der Kanban-Spalte wurde geändert" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Projektaufgaben – Aufgaben innerhalb von Projekten" +#~ msgid "Kanban columns updated" +#~ msgstr "Kanban-Spalten aktualisiert" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Funktionen für die Zusammenarbeit" +#~ msgid "Update" +#~ msgstr "Aktualisieren" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Aufgabenkommentare – Thread-Diskussionen zu Aufgaben" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "Kanban-Spalten konnten nicht aktualisiert werden" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Markdown-Unterstützung – Umfangreiche Formatierung in Beschreibungen" +#~ msgid "Loading task details..." +#~ msgstr "Aufgabendetails werden geladen..." -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Benutzererwähnungen – Tag-Teammitglieder (falls aktiviert)" +#~ msgid "Tracked" +#~ msgstr "Verfolgt" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Dateianhänge – Dateien an Aufgaben anhängen (falls aktiviert)" +#~ msgid "View Full Details" +#~ msgstr "Vollständige Details anzeigen" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Markdown-Formatierung" +#~ msgid "Back to Tasks" +#~ msgstr "Zurück zu Aufgaben" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "Aufgaben- und Projektbeschreibungen unterstützen Markdown:" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" +#~ "Fügen Sie Ihrem Projekt eine neue " +#~ "Aufgabe hinzu, um die Arbeit in " +#~ "überschaubare Komponenten aufzuteilen" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Fett**, *Kursiv*, ~~Durchgestrichen~~" +#~ msgid "Enter a descriptive task name" +#~ msgstr "Geben Sie einen beschreibenden Aufgabennamen ein" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# Überschriften, - Listen, [Links](url)" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "" +#~ "Wählen Sie einen klaren, beschreibenden " +#~ "Namen, der erklärt, was zu tun ist" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "„Codeblöcke“, Tabellen, Bilder" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Geben Sie detaillierte Informationen über " +#~ "die Aufgabe, Anforderungen und spezifische " +#~ "Anweisungen an ..." -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "Visualisieren Sie Ihren Arbeitsablauf mit einem Drag-and-Drop-Kanban-Board für eine intuitive Aufgabenverwaltung." +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" +#~ "Optional: Fügen Sie Kontext, Anforderungen " +#~ "oder spezifische Anweisungen für die " +#~ "Aufgabe hinzu" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Board-Funktionen" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Wählen Sie das Projekt aus, zu dem diese Aufgabe gehört" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Anpassbare Spalten passend zum Aufgabenstatus" +#~ msgid "Initial Status" +#~ msgstr "Ausgangsstatus" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Drag-and-Drop-Aufgaben zwischen Spalten" +#~ msgid "Done" +#~ msgstr "Erledigt" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Filtern Sie nach Projekt, Benutzer oder Priorität" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Optional: Legen Sie eine Frist für diese Aufgabe fest" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Schnelle Suche über alle Aufgaben hinweg" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Optional: Schätzen Sie, wie lange diese Aufgabe dauern wird" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Verwendung des Kanban-Boards" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Optional: Weisen Sie diese Aufgabe einem Teammitglied zu" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Zugriff über das Aufgabenmenü oder die Projektseite" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "z. B. Fehler, Frontend, dringend" -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Ziehen Sie Aufgaben in verschiedene Spalten, um den Status zu ändern" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Kommagetrennte Tags zur Kategorisierung" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Klicken Sie auf eine Aufgabenkarte, um Details anzuzeigen/zu bearbeiten" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" +#~ "Optional: Farbe für diese Aufgabe im " +#~ "Gantt-Diagramm. Wenn nicht festgelegt, " +#~ "wird die Projektfarbe verwendet. Wählen " +#~ "oder geben Sie einen Hex-Code ein" +#~ " (z. B. #3b82f6)." -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Verwenden Sie Filter, um sich auf bestimmte Arbeiten zu konzentrieren" +#~ msgid "Task Creation Tips" +#~ msgstr "Tipps zur Aufgabenerstellung" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "Das Kanban-Board eignet sich perfekt für die Sprintplanung und tägliche Standups. Jede Spalte repräsentiert eine Phase in Ihrem Workflow!" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "" +#~ "Verwenden Sie Aktionsverben und geben " +#~ "Sie genau an, was getan werden " +#~ "muss" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Kostenverfolgung" +#~ msgid "Realistic Estimates" +#~ msgstr "Realistische Schätzungen" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "Verfolgen Sie Geschäftsausgaben, verwalten Sie Belege und wickeln Sie Rückerstattungen effizient ab." +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "" +#~ "Berücksichtigen Sie bei der Schätzung " +#~ "der Zeit Komplexität und Abhängigkeiten" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Spesenfunktionen" +#~ msgid "Set Deadlines" +#~ msgstr "Legen Sie Fristen fest" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Kategorisieren Sie Ausgaben (Reisen, Mahlzeiten, Vorräte usw.)" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" +#~ "Fälligkeitstermine helfen dabei, Arbeit zu " +#~ "priorisieren und den Fortschritt zu " +#~ "verfolgen" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Fügen Sie Belegbilder und Dokumente bei" +#~ msgid "Priority Matters" +#~ msgstr "Prioritätsangelegenheiten" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Verfolgen Sie Beträge, Steuern und Zahlungsmethoden" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Nutzen Sie Prioritätsstufen, um den " +#~ "Teammitgliedern zu helfen, sich auf das" +#~ " Wichtigste zu konzentrieren" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Genehmigungsworkflow für Spesenanträge" +#~ msgid "Back to Task" +#~ msgstr "Zurück zur Aufgabe" -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Abrechnung und Rückerstattung" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "Aufgabendetails und Einstellungen für „%(task)s“ aktualisieren" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Markieren Sie Ausgaben als für Kunden abrechenbar" +#~ msgid "Task Information" +#~ msgstr "Aufgabeninformationen" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Beziehen Sie Ausgaben in Kundenrechnungen ein" +#~ msgid "Update Task" +#~ msgstr "Update-Aufgabe" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Verfolgen Sie den Erstattungsstatus" +#~ msgid "Estimate used" +#~ msgstr "Schätzung verwendet" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Verknüpfen Sie Ausgaben mit bestimmten Projekten" +#~ msgid "Actual" +#~ msgstr "Tatsächlich" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Ausgaben erfassen" +#~ msgid "Current Task Info" +#~ msgstr "Aktuelle Aufgabeninformationen" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Geben Sie die Details ein und laden Sie die Quittung hoch" +#~ msgid "Current Status" +#~ msgstr "Aktueller Status" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Zur Genehmigung einreichen" +#~ msgid "Current Priority" +#~ msgstr "Aktuelle Priorität" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "Der Administrator überprüft und genehmigt" +#~ msgid "Currently Assigned To" +#~ msgstr "Derzeit zugewiesen an" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Rechnung/Rückerstattung" +#~ msgid "Current Due Date" +#~ msgstr "Aktuelles Fälligkeitsdatum" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Zur Rechnung hinzufügen oder erstatten" +#~ msgid "Current Estimate" +#~ msgstr "Aktuelle Schätzung" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Verfolgen Sie die Zahlung" +#~ msgid "Actual Hours" +#~ msgstr "Tatsächliche Stunden" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Überwachen Sie den Erstattungsstatus" +#~ msgid "Started" +#~ msgstr "Begonnen" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Professionelle Rechnungsstellung" +#~ msgid "Edit Tips" +#~ msgstr "Tipps bearbeiten" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Professionelle PDF-Generierung" +#~ msgid "Status Changes" +#~ msgstr "Statusänderungen" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Firmenbranding und Logos" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "" +#~ "Eine Statusänderung kann sich auf die" +#~ " Zeiterfassung und Fortschrittsberechnungen " +#~ "auswirken" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Automatische Rechnungsnummerierung" +#~ msgid "Due Date Updates" +#~ msgstr "Fälligkeitsaktualisierungen" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Steuerberechnungen" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "" +#~ "Berücksichtigen Sie bei der Anpassung " +#~ "der Fristen die Arbeitsbelastung des " +#~ "Teams" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Zeitintegration" +#~ msgid "Assignment Changes" +#~ msgstr "Aufgabenänderungen" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Aus Zeiteinträgen generieren" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "Benachrichtigen Sie Teammitglieder, wenn Sie Aufgaben neu zuweisen" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Intelligente Gruppierung nach Aufgabe/Projekt" +#~ msgid "Updating..." +#~ msgstr "Aktualisierung..." -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Vermeiden Sie Doppelabrechnungen" +#~ msgid "Filter Tasks" +#~ msgstr "Aufgaben filtern" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Verwenden Sie Projektstundensätze" +#~ msgid "e.g. bug, frontend" +#~ msgstr "z. B. Bug, Frontend" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Kunden- und Projektdetails einrichten" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Ausgewählte Aufgaben löschen" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Elemente hinzufügen" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Status für ausgewählte Aufgaben ändern" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Aus Zeitgründen generieren oder manuell hinzufügen" +#~ msgid "Assign Selected Tasks" +#~ msgstr "Ausgewählte Aufgaben zuweisen" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Überprüfen und senden" +#~ msgid "Assign Tasks" +#~ msgstr "Aufgaben zuweisen" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "PDF exportieren und Status aktualisieren" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Ausgewählte Aufgaben in das Projekt verschieben" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Überwachen Sie Status und Zahlungen" +#~ msgid "Select Project" +#~ msgstr "Wählen Sie Projekt aus" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Standardberichte" +#~ msgid "Move Tasks" +#~ msgstr "Aufgaben verschieben" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Projektbericht – Zeitaufschlüsselung nach Projekt" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "Sind Sie sicher, dass Sie die Aufgabe „{name}“ löschen möchten?" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Benutzerbericht – Individuelle Leistungsmetriken" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "Die Aufgabe „{name}“ kann nicht gelöscht" +#~ " werden, da sie Zeiteinträge enthält. " +#~ "Bitte löschen Sie zunächst die " +#~ "Zeiteinträge." -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Zusammenfassender Bericht – Wichtige Kennzahlen und Trends" +#~ msgid "Delete Task" +#~ msgstr "Aufgabe löschen" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Zeiteintragsbericht – Detaillierte Zeitprotokolle" +#~ msgid "My Tasks" +#~ msgstr "Meine Aufgaben" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Exportoptionen" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Von Ihnen zugewiesene oder von Ihnen erstellte Aufgaben" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "CSV-Export – Für externe Analyse" +#~ msgid "total" +#~ msgstr "gesamt" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Konfigurierbare Trennzeichen" +#~ msgid "Filter My Tasks" +#~ msgstr "Meine Aufgaben filtern" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Benutzerdefinierte Datumsbereiche" +#~ msgid "Task name or description" +#~ msgstr "Aufgabenname oder Beschreibung" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Gefilterter Datenexport" +#~ msgid "All Priorities" +#~ msgstr "Alle Prioritäten" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Filteroptionen" +#~ msgid "Task Type" +#~ msgstr "Aufgabentyp" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Datumsbereich – Benutzerdefiniertes Start- und Enddatum" +#~ msgid "Assigned to Me" +#~ msgstr "Mir zugewiesen" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Projekt – Filtern Sie nach bestimmten Projekten" +#~ msgid "Created by Me" +#~ msgstr "Von mir erstellt" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Benutzer – Filtern Sie nach Teammitgliedern" +#~ msgid "Show overdue only" +#~ msgstr "Nur überfällig anzeigen" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Kunde – Filtern Sie nach Kundenorganisation" +#~ msgid "Created by me" +#~ msgstr "Von mir erstellt" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Gespeicherte Filter – Speichern Sie häufig verwendete Filter" +#~ msgid "My tasks pagination" +#~ msgstr "Paginierung meiner Aufgaben" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Visuelle Analyse" +#~ msgid "..." +#~ msgstr "..." -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Interaktive Balkendiagramme" +#~ msgid "No tasks found" +#~ msgstr "Keine Aufgaben gefunden" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Zeitverteilungs-Kreisdiagramme" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Ihnen sind noch keine Aufgaben zugewiesen oder von Ihnen erstellt." -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Trendanalyse im Zeitverlauf" +#~ msgid "Create Your First Task" +#~ msgstr "Erstellen Sie Ihre erste Aufgabe" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Für Mobilgeräte optimierte Diagramme" +#~ msgid "View All Tasks" +#~ msgstr "Alle Aufgaben anzeigen" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "Verwenden Sie gespeicherte Filter, um schnell auf Ihre häufigsten Berichtsansichten zuzugreifen. Speichern Sie Filter für wöchentliche Überprüfungen, monatliche Abrechnung oder spezifische Projektverfolgung!" +#~ msgid "Overdue Tasks" +#~ msgstr "Überfällige Aufgaben" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "Steigern Sie Ihre Effizienz mit Tastaturkürzeln, Befehlspalette und Automatisierungsfunktionen." +#~ msgid "Requires immediate attention" +#~ msgstr "Erfordert sofortige Aufmerksamkeit" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Befehlspalette" +#~ msgid "items" +#~ msgstr "Artikel" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Greifen Sie sofort auf alle Funktionen zu, ohne die Tastatur zu verlassen" +#~ msgid "There are" +#~ msgstr "Es gibt" -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Öffnen der Befehlspalette" +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "" +#~ "überfällige Aufgaben, die sofortige " +#~ "Aufmerksamkeit erfordern. Bitte überprüfen und" +#~ " aktualisieren Sie diese Aufgaben, um " +#~ "weitere Verzögerungen zu vermeiden." -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Drücken Sie die Fragezeichen-Taste" +#~ msgid "Due:" +#~ msgstr "Fällig:" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "Schnellsuche" +#~ msgid "Est:" +#~ msgstr "Schätzung:" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Gehen Sie zu Projekte" +#~ msgid "Actual:" +#~ msgstr "Tatsächlich:" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Gehen Sie zu Aufgaben" +#~ msgid "Bulk Actions" +#~ msgstr "Massenaktionen" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Neuer Zeiteintrag" +#~ msgid "Update Due Dates" +#~ msgstr "Fälligkeitsdaten aktualisieren" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Tastaturkürzel" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "Fälligkeitsdaten für mehrere Aufgaben gleichzeitig verlängern" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "Navigieren Sie schneller mit tastaturgesteuerten Befehlen. Umschalt+ drücken? um alle Verknüpfungen anzuzeigen." +#~ msgid "Extend Due Dates" +#~ msgstr "Fälligkeitsdaten verlängern" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Globale Suche" +#~ msgid "Priority Management" +#~ msgstr "Prioritätsverwaltung" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "Finden Sie schnell Projekte, Aufgaben, Kunden und Zeiteinträge von überall in der App." +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "Prioritäten für überfällige Aufgaben anpassen" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "E-Mail-Benachrichtigungen" +#~ msgid "Adjust Priorities" +#~ msgstr "Prioritäten anpassen" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "Lassen Sie sich per E-Mail über Aufgabenzuweisungen, überfällige Rechnungen und wöchentliche Zusammenfassungen benachrichtigen." +#~ msgid "No Overdue Tasks!" +#~ msgstr "Keine überfälligen Aufgaben!" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Administratorfunktionen" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "Tolle Arbeit! Alle Aufgaben liegen derzeit im Zeitplan." -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Erstellen Sie neue Benutzer mit flexibler Authentifizierung" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Geben Sie ein neues Fälligkeitsdatum ein (JJJJ-MM-TT):" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Weisen Sie benutzerdefinierte Rollen mit spezifischen Berechtigungen zu" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Sind Sie sicher, dass Sie das Fälligkeitsdatum auf verlängern möchten?" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Benutzerkonten aktivieren/deaktivieren" +#~ msgid "for all overdue tasks?" +#~ msgstr "für alle überfälligen Aufgaben?" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Sehen Sie sich Benutzerstatistiken und -aktivitäten an" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "Geben Sie eine neue Priorität ein (niedrig/mittel/hoch/dringend):" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Generieren Sie API-Tokens für Benutzer" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Sind Sie sicher, dass Sie die Priorität festlegen möchten?" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Zugangskontrolle" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "" +#~ "Ungültige Priorität. Bitte verwenden Sie: " +#~ "niedrig, mittel, hoch oder dringend" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Granulares rollenbasiertes Berechtigungssystem" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "%(count)s Aufgabe(n) aktualisiert. Wird neu geladen..." -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Benutzerdefinierte Rollen mit fein abgestuftem Zugriff" +#~ msgid "Update failed. Please try again." +#~ msgstr "Aktualisierung fehlgeschlagen. Bitte versuchen Sie es erneut." -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Zugriffskontrollen für Benutzerdaten" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "Aufgabe starten und als „In Bearbeitung“ markieren?" -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "OIDC/SSO-Integration (Azure AD, Authelia usw.)" +#~ msgid "Change Task Status" +#~ msgstr "Aufgabenstatus ändern" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "API-Token-Verwaltung für Integrationen" +#~ msgid "Mark task as To Do?" +#~ msgstr "Aufgabe als Zu erledigen markieren?" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Authentifizierungsmethoden" +#~ msgid "Mark task as Done?" +#~ msgstr "Aufgabe als erledigt markieren?" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Nur Benutzername (einfache interne Verwendung)" +#~ msgid "Complete Task" +#~ msgstr "Aufgabe abschließen" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (Unternehmensauthentifizierung)" +#~ msgid "Complete" +#~ msgstr "Vollständig" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Beide Methoden gleichzeitig" +#~ msgid "Reopen task to Review?" +#~ msgstr "Aufgabe zur Überprüfung erneut öffnen?" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Automatische Rollenzuweisung über Gruppen" +#~ msgid "Reopen Task" +#~ msgstr "Aufgabe erneut öffnen" -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Rollen- und Berechtigungsverwaltung" +#~ msgid "Reopen" +#~ msgstr "Wieder öffnen" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Erstellen Sie benutzerdefinierte Rollen über Admin/Benutzer hinaus" +#~ msgid "Task details and history." +#~ msgstr "Aufgabendetails und Verlauf." -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Legen Sie detaillierte Berechtigungen pro Funktion fest" +#~ msgid "Create Time Entry Template" +#~ msgstr "Erstellen Sie eine Zeiteintragsvorlage" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Weisen Sie Benutzern mehrere Rollen zu" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "z. B. Daily Standup, Kundenbesprechung" -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Alle Berechtigungen anzeigen und verwalten" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "z. B. 1,0, 0,5" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Allgemeine Einstellungen" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Füllen Sie Notizen für diese Art von Zeiteintrag vorab aus" -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Zeitzonen- und Gebietsschemaeinstellungen" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "z. B. Besprechung, Entwicklung, Verwaltung" -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Währungskonfiguration" +#~ msgid "Edit Template" +#~ msgstr "Vorlage bearbeiten" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Zeitrundungsregeln" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Sind Sie sicher, dass Sie diese Vorlage löschen möchten?" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Einstellungen zur Selbstregistrierung" +#~ msgid "Delete Template" +#~ msgstr "Vorlage löschen" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Timer-Einstellungen" +#~ msgid "Create Your First Template" +#~ msgstr "Erste Vorlage erstellen" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Konfiguration des Leerlauf-Timeouts" +#~ msgid "No templates yet" +#~ msgstr "Noch keine Vorlagen" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Einzelaktiver Timer-Modus" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" +#~ "Erstellen Sie Ihre erste Zeiteintragsvorlage," +#~ " um Ihren Workflow zu beschleunigen." -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Einstellungen für die Timer-Anzeige" +#~ msgid "Usage Statistics" +#~ msgstr "Nutzungsstatistik" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Benachrichtigungseinstellungen" +#~ msgid "Select All" +#~ msgstr "Alle auswählen" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Datenbankverwaltung" +#~ msgid "selected" +#~ msgstr "ausgewählt" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Erstellen Sie manuelle Datenbanksicherungen" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "Als bezahlt/unbezahlt markieren" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Status der Datenbankmigration anzeigen" +#~ msgid "Project/Client" +#~ msgstr "Projekt/Kunde" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Überwachen Sie die Datenbankleistung" +#~ msgid "Invoice Ref" +#~ msgstr "Rechnungsreferenz" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Bereinigen Sie alte Daten und Protokolle" +#~ msgid "Click to edit" +#~ msgstr "Zum Bearbeiten klicken" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Systemüberwachung" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "Timer stoppen, um die Dauer zu bearbeiten" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Systeminformationen und -zustand anzeigen" +#~ msgid "Request approval" +#~ msgstr "Genehmigung anfordern" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Überwachen Sie die Anwendungsleistung" +#~ msgid "Clear filters" +#~ msgstr "Filter löschen" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Überprüfen Sie Systemprotokolle und Fehler" +#~ msgid "No time entries match your filters" +#~ msgstr "Keine Zeiteinträge entsprechen Ihren Filtern" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Mobilfreundliche Funktionen" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" +#~ "Versuchen Sie, Ihre Filter anzupassen " +#~ "oder zu löschen, um alle Einträge " +#~ "zu sehen. Sie können auch einen " +#~ "neuen Zeiteintrag erfassen." -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Optimiert für Telefone und Tablets" +#~ msgid "No time entries yet" +#~ msgstr "Noch keine Zeiteinträge" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Touch-freundliche Oberfläche" +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" +#~ "Erfassen Sie Zeit, um Ihre Einträge " +#~ "hier zu sehen. Verwenden Sie den " +#~ "Timer auf dem Dashboard oder erfassen" +#~ " Sie Zeit manuell." -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "Adaptive Layouts für alle Bildschirmgrößen" +#~ msgid "Time entries pagination" +#~ msgstr "Zeiteinträge-Seitennavigation" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Hoher Kontrast für Sichtbarkeit im Freien" +#~ msgid "Bulk Time Entry" +#~ msgstr "Massen-Zeiteintrag" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Mobile Navigation" +#~ msgid "Single Entry" +#~ msgstr "Einzeleintrag" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Untere Tab-Leiste für einfachen Zugriff" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "Mehrere Zeiteinträge für aufeinanderfolgende Tage erstellen" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Schneller Zugriff auf das Dashboard" +#~ msgid "Bulk Entry Form" +#~ msgstr "Masseneintrag-Formular" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Zeiterfassung mit nur einem Tastendruck" +#~ msgid "Select the project to log time for" +#~ msgstr "Projekt auswählen, für das Zeit erfasst werden soll" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Für Mobilgeräte optimierte Berichte" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Aufgaben werden geladen, nachdem ein Projekt ausgewählt wurde" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Installation" +#~ msgid "Date Range" +#~ msgstr "Datumsbereich" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Öffnen Sie TimeTracker in Ihrem mobilen Browser" +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "Wochenenden überspringen (Samstag & Sonntag)" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Suchen Sie nach der Option „Zum Startbildschirm hinzufügen“." +#~ msgid "Entries will be created for these dates" +#~ msgstr "Einträge werden für diese Daten erstellt" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Befolgen Sie die browserspezifischen Installationsanweisungen" +#~ msgid "Same start time for all days" +#~ msgstr "Gleiche Startzeit für alle Tage" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Starten Sie von Ihrem Startbildschirm aus wie eine native App" +#~ msgid "Same end time for all days" +#~ msgstr "Gleiche Endzeit für alle Tage" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "PWA-Vorteile" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "Woran haben Sie gearbeitet? (gleiche Notizen für alle Einträge)" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Offline-Fähigkeit für Grundfunktionen" +#~ msgid "tag1, tag2, tag3" +#~ msgstr "tag1, tag2, tag3" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Schnellere Ladezeiten" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "Tags mit Kommas trennen (gleich für alle Einträge)" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Natives App-ähnliches Erlebnis" +#~ msgid "Include in invoices" +#~ msgstr "In Rechnungen einschließen" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Push-Benachrichtigungen (sofern unterstützt)" +#~ msgid "Create Entries" +#~ msgstr "Einträge erstellen" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "TimeTracker bietet eine REST-API für die Integration mit anderen Tools, mobilen Apps und benutzerdefinierten Workflows." +#~ msgid "Bulk Entry Tips" +#~ msgstr "Tipps für Masseneinträge" -#: app/templates/main/help.html:701 -msgid "Interactive Swagger UI at" -msgstr "Interaktive Swagger-UI unter" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" +#~ "Start- und Enddatum auswählen. Für jeden" +#~ " Tag im Bereich werden Einträge " +#~ "erstellt." -#: app/templates/main/help.html:702 -msgid "OpenAPI 3.0 specification at" -msgstr "OpenAPI 3.0-Spezifikation unter" +#~ msgid "Skip Weekends" +#~ msgstr "Wochenenden überspringen" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "Bearer-Token- oder X-API-Key-Authentifizierung" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" +#~ "Aktivieren, um Samstage und Sonntage " +#~ "automatisch aus dem Datumsbereich " +#~ "auszuschließen." -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "Projekte, Zeiteinträge, Aufgaben, Kunden, Rechnungen und mehr" +#~ msgid "Same Time Daily" +#~ msgstr "Täglich gleiche Zeit" -#: app/templates/main/help.html:707 -msgid "Open API Documentation" -msgstr "API-Dokumentation öffnen" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "Alle Einträge verwenden täglich dieselbe Start- und Endzeit." -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Fehlerbehebung und FAQ" +#~ msgid "Conflict Check" +#~ msgstr "Konfliktprüfung" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "Was passiert, wenn ich vergesse, meinen Timer zu stoppen?" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" +#~ "Das System prüft auf vorhandene " +#~ "Zeiteinträge und verhindert Überlappungen." -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "Der Timer läuft weiter, bis Sie ihn manuell stoppen. Sie können Ihren aktiven Timer auf dem Dashboard und der Timer-Seite sehen. Der Timer bleibt bestehen, auch wenn Sie Ihren Browser schließen oder Ihr Gerät neu starten. Wenn die Leerlauferkennung aktiviert ist, kann der Timer nach dem konfigurierten Timeout-Zeitraum automatisch pausieren." +#~ msgid "Failed to load tasks" +#~ msgstr "Aufgaben konnten nicht geladen werden" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "Kann ich Zeiteinträge bearbeiten, nachdem sie erstellt wurden?" +#~ msgid "Total days" +#~ msgstr "Gesamttage" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "Ja, Sie können jeden Zeiteintrag bearbeiten, indem Sie in der Zeiteintragsliste auf die Schaltfläche „Bearbeiten“ klicken. Sie können das Projekt, die Start-/Endzeiten, Notizen, Tags, den Abrechnungsstatus und die Aufgabenzuweisung ändern. Administratoren können alle Zeiteinträge bearbeiten, während normale Benutzer nur ihre eigenen Einträge bearbeiten können." +#~ msgid "Weekdays only" +#~ msgstr "Nur Werktage" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "Wie erfasse ich die Zeit für mehrere Projekte?" +#~ msgid "Entries will be created for" +#~ msgstr "Einträge werden erstellt für" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "Standardmäßig können Sie jeweils nur einen aktiven Timer haben. Um Projekte zu wechseln, stoppen Sie Ihren aktuellen Timer und starten Sie einen neuen für das andere Projekt. Alternativ können Sie manuelle Zeiteinträge für vergangene Arbeiten erstellen oder das System so konfigurieren, dass mehrere aktive Timer zugelassen sind (Administratoreinstellung)." +#~ msgid "Agenda" +#~ msgstr "Tagesordnung" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "Wie exportiere ich meine Zeitdaten?" +#~ msgid "iCal Format" +#~ msgstr "iCal-Format" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "Gehen Sie zur Seite „Berichte“ und verwenden Sie die Funktion „CSV exportieren“. Sie können Filter anwenden, um bestimmte Daten zu exportieren, oder alle Zeiteinträge exportieren. Die CSV-Datei enthält alle Details zu den Zeiteinträgen und kann in Excel oder anderen Tabellenkalkulationsprogrammen geöffnet werden. Sie können das Trennzeichen auch für verschiedene regionale Standards konfigurieren." +#~ msgid "CSV Format" +#~ msgstr "CSV-Format" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "Was ist der Unterschied zwischen abrechenbarer und nicht abrechenbarer Zeit?" +#~ msgid "Filter by tags..." +#~ msgstr "Nach Tags filtern..." -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "Die abrechenbare Zeit wird zu Abrechnungszwecken für Kunden erfasst und kann mit einem Stundensatz verknüpft sein. Nicht abrechenbare Zeit gilt für interne Arbeit, die den Kunden nicht in Rechnung gestellt wird. Sie können einzelne Zeiteinträge als abrechenbar oder nicht abrechenbar markieren und Projekte können standardmäßige abrechenbare Einstellungen haben. Diese Unterscheidung ist für eine genaue Rechnungsstellung und Rentabilitätsanalyse von entscheidender Bedeutung." +#~ msgid "Show billable entries only" +#~ msgstr "Nur abrechnungsfähige Einträge anzeigen" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "Wie erstelle ich aus meinen Zeiteinträgen eine Rechnung?" +#~ msgid "Billable Only" +#~ msgstr "Nur Abrechnungsfähige" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "Navigieren Sie zu Rechnungen → Rechnung erstellen, richten Sie die Kunden- und Projektdetails ein und verwenden Sie dann „Aus Zeiteinträgen generieren“, um automatisch Rechnungspositionen aus Ihrer erfassten Zeit zu erstellen. Sie können nach Datumsbereich und Projekt filtern und das System gruppiert Zeiteinträge intelligent. Überprüfen Sie die generierten Elemente und exportieren Sie sie als professionelles PDF." +#~ msgid "Assign to project for new events..." +#~ msgstr "Neuen Ereignissen einem Projekt zuweisen..." -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "Kann ich TimeTracker auf meinem Mobilgerät verwenden?" +#~ msgid "Total Hours:" +#~ msgstr "Gesamtstunden:" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "Ja! TimeTracker reagiert vollständig und funktioniert hervorragend auf Mobilgeräten. Sie können es als Progressive Web App (PWA) für ein natives Erlebnis installieren. Die mobile Benutzeroberfläche umfasst eine untere Tab-Leiste für einfache Navigation und berührungsoptimierte Steuerelemente für die Zeiterfassung unterwegs." +#~ msgid "Colors assigned by project" +#~ msgstr "Farben nach Projekt zugewiesen" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "Wie verwende ich die Befehlspalette und Tastaturkürzel?" +#~ msgid "Create Time Entry" +#~ msgstr "Zeiteintrag erstellen" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "Drücken Sie die Fragezeichentaste (?), um die Befehlspalette zu öffnen. Von dort aus können Sie eingeben, um nach einer Aktion oder einem Navigationsziel zu suchen. Verwenden Sie Tastatursequenzen wie „g d“ für Dashboard, „g p“ für Projekte oder „n e“ für Neuer Eintrag. Umschalt+ drücken? um alle verfügbaren Verknüpfungen anzuzeigen. Drücken Sie Strg+K (oder Befehl+K auf dem Mac) für eine schnelle Suche." +#~ msgid "Select a project..." +#~ msgstr "Wählen Sie ein Projekt aus..." -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "Wie erstelle ich Massenzeiteinträge für mehrere Tage?" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Wiederkehrende Zeitblöcke" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "Navigieren Sie zu Arbeit → Massenzeiteintrag. Wählen Sie Ihr Projekt aus, wählen Sie einen Datumsbereich, legen Sie Ihre täglichen Start- und Endzeiten fest und überspringen Sie optional Wochenenden. Das System erstellt für jeden Tag im Bereich identische Zeiteinträge. Dies eignet sich perfekt zum Protokollieren regelmäßiger Arbeitsmuster oder zum Ausfüllen vergangener Zeiten, in denen Sie regelmäßig gearbeitet haben." +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Wiederkehrende Zeiteintragsvorlagen verwalten." -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "Was sind Zeiterfassungsvorlagen und wie verwende ich sie?" +#~ msgid "New Recurring Block" +#~ msgstr "Neuer wiederkehrender Block" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "Mit Zeiteintragsvorlagen können Sie häufig verwendete Zeiteintragskonfigurationen speichern. Wenn Sie einen manuellen Zeiteintrag erstellen, aktivieren Sie „Als Vorlage speichern“, um das Projekt, die Aufgabe und die Notizen zu speichern. Später, wenn Sie neue Einträge erstellen, können Sie eine Vorlage auswählen, um diese Details schnell einzugeben. Vorlagen sind persönlich und nur für Sie sichtbar." +#~ msgid "Jump to Today" +#~ msgstr "Zu heute springen" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "Wie verfolge ich Ausgaben und füge sie zu Rechnungen hinzu?" +#~ msgid "Next Week/Month" +#~ msgstr "Nächste Woche/Monat" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "Gehen Sie zu Ausgaben → Neue Ausgabe, um Geschäftsausgaben zu erfassen. Laden Sie Belegbilder hoch, kategorisieren Sie die Ausgabe und markieren Sie sie bei Bedarf als abrechenbar. Bei der Rechnungserstellung können Sie diese Ausgaben als Einzelposten einbeziehen. Ausgaben unterstützen Genehmigungsworkflows und die Nachverfolgung von Erstattungen und können mit bestimmten Projekten verknüpft werden." +#~ msgid "Previous Week/Month" +#~ msgstr "Vorherige Woche/Monat" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "Kann ich Markdown in Beschreibungen verwenden?" +#~ msgid "Navigate Days" +#~ msgstr "Tage navigieren" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "Ja! Projekt- und Aufgabenbeschreibungen unterstützen die vollständige Markdown-Formatierung. Sie können Fettschrift, Kursivschrift, Überschriften, Listen, Links, Codeblöcke, Tabellen und Bilder verwenden. Dadurch können Sie direkt in Ihren Projekten und Aufgaben umfangreiche, gut formatierte Dokumentationen erstellen. Der Markdown-Editor verfügt über einen Vorschaumodus und unterstützt dunkle Themen." +#~ msgid "Views" +#~ msgstr "Ansichten" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "Wo bekomme ich zusätzliche Hilfe?" +#~ msgid "Day View" +#~ msgstr "Tagesansicht" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "Diese Hilfeseite behandelt die häufigsten Fragen und Funktionen. Für die vollständige Dokumentation:" +#~ msgid "Week View" +#~ msgstr "Wochenansicht" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "Vollständiger Dokumentationsindex" +#~ msgid "Month View" +#~ msgstr "Monatsansicht" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "Erste-Schritte-Anleitung" +#~ msgid "Agenda View" +#~ msgstr "Tagesordnungsansicht" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "Produktübersicht & Funktionen" +#~ msgid "Create New Entry" +#~ msgstr "Neuen Eintrag erstellen" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "Änderungsprotokoll" +#~ msgid "Focus Filter" +#~ msgstr "Fokus-Filter" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Melden Sie Probleme und fordern Sie Funktionen an" +#~ msgid "Clear All Filters" +#~ msgstr "Alle Filter löschen" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "Als Administrator können Sie auf zusätzliche Systeminformationen und Diagnosen zugreifen" +#~ msgid "Close Modal" +#~ msgstr "Modal schließen" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "Abschnitt." +#~ msgid "Show This Help" +#~ msgstr "Diese Hilfe anzeigen" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "Admin-Dokumentation:" +#~ msgid "Got it!" +#~ msgstr "Verstanden!" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "Administratorhandbuch" +#~ msgid "Failed to load events" +#~ msgstr "Ereignisse konnten nicht geladen werden" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "Brauchen Sie noch Hilfe?" +#~ msgid "Please select a project for new entries" +#~ msgstr "Bitte Projekt für neue Einträge auswählen" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "Sie können nicht finden, was Sie suchen? Hier sind zusätzliche Ressourcen:" +#~ msgid "Please select a project first" +#~ msgstr "Bitte zuerst ein Projekt auswählen" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "Vollständige Dokumentation" +#~ msgid "Showing billable entries only" +#~ msgstr "Nur abrechenbare Einträge werden angezeigt" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "Dokumentationsindex" +#~ msgid "Entry created successfully" +#~ msgstr "Eintrag erfolgreich erstellt" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "Erste Schritte" +#~ msgid "Failed to create entry" +#~ msgstr "Eintrag konnte nicht erstellt werden" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "Funktionsanleitungen" +#~ msgid "Entry updated" +#~ msgstr "Eintrag aktualisiert" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "Admin-Dokumentation" +#~ msgid "Failed to update entry" +#~ msgstr "Eintrag konnte nicht aktualisiert werden" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "GitHub-Repository" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Möchten Sie diesen Eintrag wirklich löschen?" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Problem melden" +#~ msgid "Delete Entry" +#~ msgstr "Eintrag löschen" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "Spenden und Lizenzen finanzieren die Entwicklung; nichts ist hinter einer Bezahlschranke." +#~ msgid "Automatic Timer" +#~ msgstr "Automatischer Timer" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -msgid "Open support" -msgstr "Support öffnen" +#~ msgid "Entry deleted" +#~ msgstr "Eintrag gelöscht" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Suchergebnisse" +#~ msgid "Failed to delete entry" +#~ msgstr "Eintrag konnte nicht gelöscht werden" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Suchen Sie nach Notizen oder Tags" +#~ msgid "Export started" +#~ msgstr "Export gestartet" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Ergebnisse" +#~ msgid "No recurring blocks yet" +#~ msgstr "Noch keine wiederkehrenden Blöcke" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "Sind Sie sicher, dass Sie diesen Zeiteintrag löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." +#~ msgid "Unknown Project" +#~ msgstr "Unbekanntes Projekt" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "Keine Ergebnisse gefunden" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "Wiederkehrende Blöcke konnten nicht geladen werden" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Versuchen Sie es mit einer anderen Abfrage oder überprüfen Sie Ihre Rechtschreibung." +#~ msgid "No events in this period" +#~ msgstr "Keine Ereignisse in diesem Zeitraum" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "z. B. Kundenbesprechung, Besuch vor Ort" +#~ msgid "Failed to load agenda view" +#~ msgstr "Tagesordnungsansicht konnte nicht geladen werden" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Weitere Details..." +#~ msgid "Failed to load event details" +#~ msgstr "Ereignisdetails konnten nicht geladen werden" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "z. B. Büro, Zuhause" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Möchten Sie diesen wiederkehrenden Block wirklich löschen?" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "z. B. Kundenstandort, Flughafen" +#~ msgid "Delete Recurring Block" +#~ msgstr "Wiederkehrenden Block löschen" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "z. B. 12345" +#~ msgid "Recurring block deleted" +#~ msgstr "Wiederkehrender Block gelöscht" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "z. B. 12400" +#~ msgid "Failed to delete recurring block" +#~ msgstr "Wiederkehrender Block konnte nicht gelöscht werden" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "z.B. VW Golf" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Neue Startzeit eingeben (JJJJ-MM-TT SS:MM):" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "z. B. ABC-123" +#~ msgid "Entry duplicated successfully" +#~ msgstr "Eintrag erfolgreich dupliziert" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -msgid "GPS Mileage Tracking" -msgstr "GPS-Kilometererfassung" +#~ msgid "Failed to duplicate entry" +#~ msgstr "Eintrag konnte nicht dupliziert werden" -#: app/templates/mileage/gps.html:8 -msgid "Back to Mileage" -msgstr "Zurück zur Kilometererfassung" +#~ msgid "Jumped to today" +#~ msgstr "Zu heute gesprungen" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "Verwenden Sie Ihr Geräte-GPS, um Routenpunkte aufzuzeichnen, Entfernungen zu berechnen und die Strecke in eine Ausgabe umzuwandeln." +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "💡 Drücken Sie ? für Tastaturkürzel" -#: app/templates/mileage/gps.html:27 -msgid "Rate per km" -msgstr "Satz pro km" +#~ msgid "Edit Time Entry" +#~ msgstr "Zeiteintrag bearbeiten" -#: app/templates/mileage/gps.html:37 -msgid "Add Point" -msgstr "Punkt hinzufügen" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "Diese Aktualisierungen ändern diesen Zeiteintrag dauerhaft." -#: app/templates/mileage/gps.html:38 -msgid "Create Expense from Track" -msgstr "Ausgabe aus Strecke erstellen" +#~ msgid "Confirm Changes" +#~ msgstr "Änderungen bestätigen" -#: app/templates/mileage/gps.html:43 -msgid "Track ID" -msgstr "Strecken-ID" +#~ msgid "Confirm & Save" +#~ msgstr "Bestätigen & Speichern" -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -msgid "Idle" -msgstr "Inaktiv" +#~ msgid "Admin Mode" +#~ msgstr "Admin-Modus" -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "Entfernung (km)" +#~ msgid "Admin Mode:" +#~ msgstr "Admin-Modus:" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "Entfernung (Meilen)" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" +#~ "Sie können alle Felder dieses " +#~ "Zeiteintrags bearbeiten, einschließlich Projekt, " +#~ "Aufgabe, Start-/Endzeiten und Quelle." -#: app/templates/mileage/gps.html:82 -msgid "Tracking" -msgstr "Wird erfasst" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" +#~ "Sie können das Projekt, die Aufgabe, " +#~ "die Start- und Endzeiten sowie die " +#~ "Pause dieses Eintrags bearbeiten." -#: app/templates/mileage/gps.html:125 -msgid "GPS tracking started" -msgstr "GPS-Erfassung gestartet" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Projekt auswählen, zu dem dieser Zeiteintrag gehört" -#: app/templates/mileage/gps.html:136 -msgid "Track point added" -msgstr "Streckenpunkt hinzugefügt" +#~ msgid "Task (Optional)" +#~ msgstr "Aufgabe (optional)" -#: app/templates/mileage/gps.html:151 -msgid "GPS tracking stopped" -msgstr "GPS-Erfassung gestoppt" +#~ msgid "Select a specific task within the project" +#~ msgstr "Bestimmte Aufgabe innerhalb des Projekts auswählen" -#: app/templates/mileage/gps.html:165 -msgid "Expense created" -msgstr "Ausgabe erstellt" +#~ msgid "When the work started" +#~ msgstr "Wann die Arbeit begann" -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Kilometerstand filtern" +#~ msgid "Time the work started" +#~ msgstr "Zeitpunkt, zu dem die Arbeit begann" -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "Exporte verwenden aktuelle Filter" - -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Zweck, Ort..." - -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Optionale Genehmigungshinweise..." - -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Ablehnungsgrund (erforderlich)" - -#: app/templates/partials/_bottom_nav.html:24 -msgid "More navigation" -msgstr "Weitere Navigation" - -#: app/templates/partials/_bottom_nav.html:59 -msgid "Main" -msgstr "Haupt" - -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Geben Sie einen Befehl ein oder suchen Sie..." - -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "Zahlungsgateway konfigurieren" - -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "Zahlungsabwicklung für Online-Rechnungszahlungen einrichten" - -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "Zurück zu Gateways" - -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "Gateway-Name" - -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "z. B. Stripe Produktion" - -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "Ein beschreibender Name für diese Gateway-Konfiguration" - -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "Anbieter auswählen..." - -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "Stripe-Konfiguration" - -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "Ihr Stripe-Secret-Schlüssel" - -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "Veröffentlichbarer Schlüssel" - -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "Ihr Stripe-veröffentlichbarer Schlüssel" - -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "Webhook-Signing-Secret zur Verifizierung von Webhook-Ereignissen" - -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "PayPal-Konfiguration" - -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "Testmodus" - -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "Testmodus für Entwicklung und Tests aktivieren" - -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "Gateway speichern" - -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "Modus" - -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "Produktion" - -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "Gateway hinzufügen" - -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "Keine Zahlungsgateways" - -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "Konfigurieren Sie ein Zahlungsgateway, um Online-Rechnungszahlungen zu ermöglichen." - -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "Fälliger Betrag" - -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "Sie werden auf eine sichere Zahlungsseite weitergeleitet, um Ihre Zahlung abzuschließen." - -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "Weiter zur Zahlung" - -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "Zahlungsgateway noch nicht unterstützt. Bitte wenden Sie sich an den Support." - -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Neue Zahlung erfassen" - -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Gesamtzahlungen" - -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Gateway-Gebühren" - -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Zahlungen filtern" - -#: app/templates/payments/list.html:141 -msgid "ID" -msgstr "ID" - -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Ausgewählte Zahlungen löschen" - -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Status für ausgewählte Zahlungen ändern" - -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Zugehörige Rechnung" - -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "z.B. Geschäftsreise nach Berlin" - -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "z. B. DE, US, GB" - -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "z.B. Berlin" - -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Ansprüche filtern" - -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Ausgewählte Ansprüche löschen" - -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Status für ausgewählte Ansprüche ändern" - -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Zusätzliche Hinweise zu diesem Tarif..." - -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "Sind Sie sicher, dass Sie diesen Tagessatz löschen möchten?" - -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Tagessatz löschen" - -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "Projektvorlage erstellen" - -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "Eine wiederverwendbare Vorlage für die schnelle Projekteinrichtung erstellen" - -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "Zurück zu Vorlagen" - -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "z. B. Webentwicklungsprojekt" - -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "Beschreiben Sie, wofür diese Vorlage verwendet wird..." - -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "z. B. Webentwicklung, Marketing" - -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "Kommagetrennte Tags" - -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "Projektkonfiguration" - -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Abrechenbares Projekt" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Geschätzte Stunden" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Budgetbetrag" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "Vorlagenaufgaben" - -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "Aufgaben werden erstellt, wenn ein Projekt aus dieser Vorlage erstellt wird" - -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "Aufgabenname" - -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "Aufgabe hinzufügen" - -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "Diese Vorlage öffentlich machen (für alle Benutzer sichtbar)" - -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "Projekt aus Vorlage erstellen" - -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "Vorlage wird verwendet:" - -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "Zurück zur Vorlage" - -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "Leer lassen, um den Vorlagennamen zu verwenden" - -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "Einstellungen überschreiben (Optional)" - -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Projektcode" - -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "Die folgenden Aufgaben werden erstellt:" - -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Projekt erstellen" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "Projektvorlage bearbeiten" - -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "Aufgabe entfernen" - -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "Öffentliche Vorlagen anzeigen" - -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "verwendet" - -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "Öffentlich" - -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "Keine Vorlagen gefunden" - -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "Erstellen Sie Ihre erste Projektvorlage, um neue Projekte schnell mit vorkonfigurierten Einstellungen und Aufgaben einzurichten." - -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "Projektvorlage" - -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "Vorlageninformationen" - -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "Verwendungsanzahl" - -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "Zuletzt verwendet" - -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Kanban-Board-Spalten" - -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "Aufgabe zu dieser Spalte hinzufügen" - -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Swimlane bearbeiten" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Spalte" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Listenansicht" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Rasteransicht" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -msgid "Rate" -msgstr "Satz" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Projekt bearbeiten" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -msgid "Add Cost" -msgstr "Kosten hinzufügen" - -#: app/templates/projects/add_cost.html:20 -msgid "Add Cost to Project" -msgstr "Kosten zum Projekt hinzufügen" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -msgid "e.g., Travel expenses to client site" -msgstr "z. B. Reisekosten zum Kundensitz" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -msgid "Brief description of the cost" -msgstr "Kurze Beschreibung der Kosten" - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -msgid "Select category" -msgstr "Kategorie auswählen" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -msgid "Materials" -msgstr "Materialien" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -msgid "Software/Licenses" -msgstr "Software/Lizenzen" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -msgid "Additional details about this cost" -msgstr "Weitere Details zu diesen Kosten" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -msgid "Billable to client" -msgstr "Dem Kunden berechenbar" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "Wenn aktiviert, werden diese Kosten in Rechnungen einbezogen" - -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Fügen Sie Extragut hinzu" - -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Fügen Sie ein Produkt oder eine Dienstleistung hinzu" - -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Zurück zum Projekt" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "SKU/Produktcode" - -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "Was passiert, wenn Sie ein Projekt archivieren?" - -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "Das Projekt wird aus den aktiven Projektlisten ausgeblendet" - -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "Zu diesem Projekt können keine neuen Zeiteinträge hinzugefügt werden" - -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "Vorhandene Daten- und Zeiteinträge bleiben erhalten" - -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Sie können das Projekt später bei Bedarf aus der Archivierung entfernen" - -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Grund für die Archivierung" - -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "z. B. Projekt abgeschlossen, Kundenvertrag beendet, Projekt abgebrochen usw." - -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "Das Hinzufügen einer Begründung hilft bei der Projektorganisation und bei der späteren Referenzierung." - -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Schnellauswahl" - -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Projekt erfolgreich abgeschlossen" - -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Projekt abgeschlossen" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Kundenvertrag beendet" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Vertrag beendet" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Projekt vom Kunden abgebrochen" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Projekt auf unbestimmte Zeit ausgesetzt" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "In der Warteschleife" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Der Wartungszeitraum ist beendet" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Wartung beendet" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Archivprojekt" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "Richten Sie ein neues Projekt ein, um Ihre Arbeit zu organisieren und die Zeit effektiv zu erfassen" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Geben Sie einen beschreibenden Projektnamen ein" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Wählen Sie einen klaren, beschreibenden Namen, der den Projektumfang erläutert" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Kurzcode, z. B. ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Optional: Kurzes Tag, das auf Kanban-Karten angezeigt wird" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Neuen Kunden erstellen" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "Wann die Arbeit endete (leer lassen, wenn noch laufend)" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "Geben Sie detaillierte Informationen über das Projekt, die Ziele und die zu erbringenden Leistungen an ..." +#~ msgid "Time the work ended" +#~ msgstr "Zeitpunkt der Arbeitsbeendigung" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "Optional: Fügen Sie Kontext, Ziele oder spezifische Anforderungen für das Projekt hinzu" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" +#~ "Pausendauer (HH:MM). Wird vom Gesamtwert " +#~ "abgezogen, um die gearbeitete Dauer zu" +#~ " erhalten." -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Aktivieren Sie die Abrechnung für dieses Projekt" +#~ msgid "Automatic" +#~ msgstr "Automatisch" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "Für nicht abrechenbare Projekte leer lassen" +#~ msgid "How this entry was created" +#~ msgstr "Wie dieser Eintrag erstellt wurde" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "Bestellnummer, Vertragsreferenz usw." +#~ msgid "Duration:" +#~ msgstr "Dauer:" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "Optional: Fügen Sie zu Abrechnungszwecken eine Referenznummer oder Kennung hinzu" +#~ msgid "Describe what you worked on" +#~ msgstr "Woran haben Sie gearbeitet?" -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "z.B. 10000,00" +#~ msgid "tag1, tag2" +#~ msgstr "tag1, tag2" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "Optional: Legen Sie ein Gesamtprojektbudget fest, um die Ausgaben zu überwachen" +#~ msgid "Separate tags with commas" +#~ msgstr "Tags mit Kommas trennen" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Alarmschwelle (%)" +#~ msgid "Internal invoice reference" +#~ msgstr "Interne Rechnungsreferenz" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Benachrichtigen, wenn das verbrauchte Budget diesen Schwellenwert überschreitet" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Referenz zur internen Rechnungsnummer" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "Gantt-Farbe" - -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "Optional: Farbe für dieses Projekt im Gantt-Diagramm. Wählen oder geben Sie einen Hex-Code ein (z. B. #3b82f6)." - -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "Diese benutzerdefinierten Felder sind global definiert und für alle Projekte verfügbar." - -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Tipps zur Projekterstellung" - -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Klare Benennung" - -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Verwenden Sie beschreibende Namen, die den Zweck des Projekts klar angeben" - -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Abrechnungseinrichtung" - -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "Legen Sie angemessene Stundensätze basierend auf der Projektkomplexität und dem Kundenbudget fest" - -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Detaillierte Beschreibung" - -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "Beziehen Sie Projektziele, Ergebnisse und Schlüsselanforderungen ein" - -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Kundenauswahl" - -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "Wählen Sie den richtigen Kunden, um eine ordnungsgemäße Projektorganisation sicherzustellen" - -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Erstellen..." - -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "Client konnte nicht erstellt werden. Bitte versuchen Sie es erneut." - -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Kunde erstellt" - -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Netzwerkfehler beim Erstellen des Clients" - -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "Projekt-Dashboard und -Analyse" - -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "Übersicht der Einträge" - -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Budgetanalyse" - -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Alle Zeit" - -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "Letzte 7 Tage" - -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "Letzte 30 Tage" - -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "Letzte 3 Monate" - -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "Letztes Jahr" - -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "geschätzt" - -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Verwendetes Budget" - -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "des Budgets" - -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Aufgaben abgeschlossen" - -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "Fertigstellung" - -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Teammitglieder" - -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "beitragen" - -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Budget vs. Ist" - -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "Für dieses Projekt ist kein Budget festgelegt" - -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Verteilung des Aufgabenstatus" - -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Es wurden noch keine Aufgaben erstellt" - -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Beiträge der Teammitglieder" - -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Es wurden noch keine Zeiteinträge erfasst" - -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Zeiterfassungs-Zeitleiste" - -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Wählen Sie einen Zeitraum aus, um die Zeitleiste anzuzeigen" - -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Details zu den Teammitgliedern" - -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "Aufgaben" - -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Es hat noch kein Teammitglied Zeit protokolliert" - -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Aufmerksamkeit erforderlich" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "Aufgabe(n) sind überfällig" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -msgid "Edit Cost" -msgstr "Kosten bearbeiten" - -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "Diese Kosten wurden bereits in Rechnung gestellt. Änderungen können bestehende Rechnungen beeinflussen." - -#: app/templates/projects/edit_cost.html:108 -msgid "Update Cost" -msgstr "Kosten aktualisieren" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Besonders gut bearbeiten" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Verwalten Sie Produkte und Dienstleistungen für dieses Projekt" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Gesamtwaren" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Abrechnungsfähiger Betrag" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Kategorien" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "In Rechnung gestellt" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "Nicht abrechenbar" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "Sind Sie sicher, dass Sie dieses Extragut löschen möchten?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Extra Good löschen" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "Für dieses Projekt wurden keine zusätzlichen Waren gefunden" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Fügen Sie Ihr erstes Gut hinzu" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Aufschlüsselung nach Kategorie" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "Artikel)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Projekte filtern" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "Übersicht der Zeiteinträge" - -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "Tage" - -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "Keine Zeiteinträge für dieses Projekt im ausgewählten Zeitraum gefunden." - -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "Projekt als inaktiv markieren?" - -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Projektstatus ändern" - -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "Projekt aktivieren?" - -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Projekt aktivieren" - -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Archiv" - -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "Projekt dearchivieren?" - -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Projekt dearchivieren" - -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Dearchivieren" - -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Projekt löschen" - -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Archivinformationen" - -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Archiviert am:" - -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Archiviert von:" - -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Grund:" - -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "Schnelllinks" - -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Budgetübersicht" - -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Über" - -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Vollständige Budgetanalyse anzeigen" - -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "z. B. Vertrag, Spezifikation usw." - -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Aufgaben für dieses Projekt" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Fällig" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Geschätzt" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "Keine Aufgaben für dieses Projekt." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -msgid "Move up" -msgstr "Nach oben" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -msgid "Move down" -msgstr "Nach unten" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -msgid "Manual entry" -msgstr "Manuelle Eingabe" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -msgid "From stock" -msgstr "Aus Lagerbestand" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Duplikat" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Als gesendet markieren" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Akzeptiert" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Erstellen Sie Ihr erstes Angebot" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Erfahren Sie mehr" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Zurück zum Angebot" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "Wenn Sie dieses Angebot annehmen, wird ein neues Projekt mit dem Budget aus dem Angebot erstellt." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "Das Projekt wird mit dem Budget aus dem Angebot erstellt" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Angebot annehmen und Projekt erstellen" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Angebot erstellen" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Titel des Zitats" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Angebotsbeschreibung" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -msgid "Quote line items" -msgstr "Angebotspositionen" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "Dienstleistungen, Arbeit und Katalogpositionen" - -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -msgid "Add line" -msgstr "Zeile hinzufügen" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -msgid "Line type" -msgstr "Zeilentyp" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -msgid "Stock" -msgstr "Lagerbestand" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -msgid "Line items subtotal" -msgstr "Zwischensumme der Positionen" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -msgid "Costs" -msgstr "Kosten" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -msgid "One-off costs (e.g. travel, materials)" -msgstr "Einmalige Kosten (z. B. Reise, Materialien)" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -msgid "Add cost" -msgstr "Kosten hinzufügen" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -msgid "Costs subtotal" -msgstr "Kostenzwischensumme" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -msgid "Extra goods" -msgstr "Zusätzliche Waren" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -msgid "Products, licenses, hardware" -msgstr "Produkte, Lizenzen, Hardware" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -msgid "Add good" -msgstr "Ware hinzufügen" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -msgid "Goods subtotal" -msgstr "Warenzwischensumme" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -msgid "Subtotal (all quote lines)" -msgstr "Zwischensumme (alle Angebotspositionen)" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Finanzielle Details" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Zahlungsbedingungen auswählen" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "Fällig bei Erhalt" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "Oder geben Sie benutzerdefinierte Zahlungsbedingungen ein" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Verwenden Sie benutzerdefinierte Begriffe" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Rabatt" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Rabattart" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Kein Rabatt" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "Prozentsatz (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Fester Betrag" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Rabattbetrag" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0,00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Gutscheincode" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Optionaler Gutscheincode" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Rabattgrund" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Grund für den Rabatt" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Genehmigungsworkflow" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Erfordert eine Genehmigung vor dem Senden" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "Weitere Informationen" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Interne Notizen (für den Kunden nicht sichtbar)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Diese Notizen sind nur für Ihr Team sichtbar" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Geschäftsbedingungen" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Geschäftsbedingungen" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Diese Bedingungen sind für den Kunden sichtbar" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Angebot bearbeiten" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "Der Kunde kann nicht geändert werden" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Angebot aktualisieren" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Gesamtquoten" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Akzeptanzrate" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Durchschnittlicher Angebotswert" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Zitate nach Status" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Top-Kunden nach Zitaten" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Angebote filtern" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Zitate suchen..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "Sind Sie sicher, dass Sie duplizieren möchten?" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "Zitate)?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "Sind Sie sicher, dass Sie markieren möchten?" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "Angebot(e) wie gesendet?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "ZITAT" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Zitat #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Angebot für" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Zwischensumme nach Rabatt:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Beschreibung:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Zwischensumme nach Rabatt" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Genehmigung noch nicht beantragt" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "Genehmigung ausstehend" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Abgelehnt von" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Bitten Sie erneut um Genehmigung" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Angebot senden" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "Möchten Sie dieses Angebot wirklich ablehnen?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Angebot löschen" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Interner Kommentar (für den Kunden nicht sichtbar)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Intern" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "Sind Sie sicher, dass Sie diesen Kommentar löschen möchten?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Schreibe eine Antwort..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "Noch keine Kommentare. Beginnen Sie die Konversation, indem Sie den ersten Kommentar hinzufügen." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Gesendet an" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Akzeptiert bei" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Angebot per E-Mail senden" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "Empfänger-E-Mail" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "Zitat %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Benutzerdefinierte Nachricht (optional)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Fügen Sie der E-Mail eine benutzerdefinierte Nachricht hinzu..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "PDF anhängen" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Angebot genehmigen" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Notizen (optional)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Genehmigungsnotizen hinzufügen..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Angebotsgenehmigung ablehnen" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Bitte geben Sie einen Grund für die Ablehnung an..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "Sind Sie sicher, dass Sie dieses Zitat löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Erstellen Sie eine wiederkehrende Rechnung" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "Wiederkehrende Rechnung aktualisieren" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Automatisieren Sie die Rechnungserstellung für die abonnementbasierte Abrechnung" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Frequenz" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Nächster Lauf" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Jetzt generieren" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Vorlagendetails" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Rechnungseinstellungen" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Kürzlich erstellte Rechnungen" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "Wiederkehrende Aufgabe" - -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "Wiederkehrende Aufgaben" - -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "Wiederkehrende Aufgabe erstellen" - -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "Wiederkehrende Aufgabe bearbeiten" - -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "Automatische Aufgabenerstellung einrichten" - -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "Aufgabennamen-Vorlage" - -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "z. B. Wöchentliches Teammeeting" - -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "Dies wird als Basisname für erstellte Aufgaben verwendet" - -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "Zeitplan" - -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "Monatlich" - -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "Jährlich" - -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "Intervall" - -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "Alle N Zeiträume wiederholen (z. B. alle 2 Wochen)" - -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "Nächstes Ausführungsdatum" - -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "Optional: Aufgabenerstellung nach diesem Datum beenden" - -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "Aufgabeneinstellungen" - -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Zuordnen zu" - -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "Automatisch dem Ersteller zuweisen" - -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "Vorlagen zur automatischen Aufgabenerstellung" - -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "Nicht geplant" - -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "Möchten Sie diese wiederkehrende Aufgabe wirklich löschen?" - -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "Keine wiederkehrenden Aufgaben" - -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "Wiederkehrende Aufgabenvorlagen erstellen, um Aufgaben automatisch nach einem Zeitplan zu generieren." - -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "Bericht bearbeiten" - -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "Benutzerdefinierter Berichtsgenerator" - -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "Unbezahlte Zeiteinträge" - -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "Zeiteinträge, nur unbezahlte, letzte 30 Tage" - -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "Datenquellen" - -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "Komponenten" - -#: app/templates/reports/builder.html:40 -msgid "Add table to report" -msgstr "Tabelle zum Bericht hinzufügen" - -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "Tabelle" - -#: app/templates/reports/builder.html:43 -msgid "Add chart to report" -msgstr "Diagramm zum Bericht hinzufügen" - -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "Diagramm" - -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "Ringdiagramm zum Bericht hinzufügen" - -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "Ringdiagramm" - -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "Balkendiagramm zum Bericht hinzufügen" - -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "Balkendiagramm" - -#: app/templates/reports/builder.html:52 -msgid "Add summary to report" -msgstr "Zusammenfassung zum Bericht hinzufügen" - -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "Berichtsleinwand" - -#: app/templates/reports/builder.html:74 -msgid "Report canvas" -msgstr "Bericht-Leinwand" - -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "Ziehen Sie Datenquellen und Komponenten hierher, um Ihren Bericht zu erstellen" - -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "Erweiterte Filter" - -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "Nur unbezahlte Stunden" - -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "Unbezahlt = abrechenbar, noch auf keiner Rechnung." - -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "Benutzerdefiniertes Feld" - -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "Kein Filter" - -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "Feldwert" - -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "z. B. MM, PB" - -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "Geben Sie den Filterwert ein (z. B. Verkäuferkürzel)" - -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "Berichtsvorschau" - -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "Vorschau wird geladen..." - -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "Bericht speichern" - -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "Berichtsname" - -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "Mein benutzerdefinierter Bericht" - -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "Privat" - -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "Team" - -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "Iterative Berichtsgenerierung" - -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "Einen Bericht pro benutzerdefiniertem Feldwert generieren (z. B. einen Bericht pro Verkäufer)" - -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "Name des benutzerdefinierten Feldes" - -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "Feld auswählen" - -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "Das benutzerdefinierte Feld auswählen, über das iteriert werden soll (z. B. „salesman“)" - -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "Bitte wählen Sie zuerst eine Datenquelle aus" - -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "Vorschau konnte nicht generiert werden" - -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "Unbekannter Fehler aufgetreten" - -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "Fehler beim Laden der Vorschau" - -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "Keine Daten für die ausgewählten Filter gefunden" - -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "Bitte geben Sie einen Berichtsnamen ein" - -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "Bericht erfolgreich erstellt!" - -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "Bericht erfolgreich aktualisiert!" - -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "Bericht konnte nicht gespeichert werden" - -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "Fehler beim Speichern des Berichts" - -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "Benutzerdefinierter Bericht" - -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "Datentabelle" - -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "Keine Daten gefunden" - -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "Dieser Bericht hat keine Daten, die den aktuellen Filtern entsprechen. Versuchen Sie, Ihren Datumsbereich oder Ihre Filter anzupassen." - -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "Keine Zusammenfassungsdaten verfügbar." - -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "Keine Daten für das Diagramm verfügbar." - -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "Keine Komponenten konfiguriert" - -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "Für diesen Bericht sind keine Komponenten konfiguriert. Bitte bearbeiten Sie den Bericht, um Komponenten hinzuzufügen." - -#: app/templates/reports/export_form.html:9 -msgid "Export Time Entries" -msgstr "Zeiteinträge exportieren" - -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "Verwenden Sie die folgenden Filter, um Ihren Export anzupassen. Wählen Sie CSV- oder Excel-Format. Alle Filter sind optional - lassen Sie das Feld leer, um alle Einträge im Datumsbereich einzuschließen." - -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -msgid "Export format" -msgstr "Exportformat" - -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "z. B. Entwicklung, Besprechung, dringend" - -#: app/templates/reports/export_form.html:191 -msgid "Reset Filters" -msgstr "Filter zurücksetzen" - -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "CSV / Excel" - -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "Die Datei wird mit einem Dateinamen heruntergeladen, der den Datumsbereich und die angewandten Filter angibt." - -#: app/templates/reports/export_form.html:341 -msgid "Please select both start and end dates." -msgstr "Bitte Start- und Enddatum auswählen." - -#: app/templates/reports/export_form.html:347 -msgid "Start date must be before or equal to end date." -msgstr "Das Startdatum muss vor oder gleich dem Enddatum sein." - -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "Umfassende Berichte und Analysen für Ihre Zeiterfassungsdaten anzeigen" - -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "Unterstützen Sie die Entwicklung oder erwerben Sie eine Supporter-Lizenz — die App bleibt für alle kostenlos." - -#: app/templates/reports/index.html:46 -msgid "Payments Received" -msgstr "Erhaltene Zahlungen" - -#: app/templates/reports/index.html:62 -msgid "Net Received" -msgstr "Netto erhalten" - -#: app/templates/reports/index.html:63 -msgid "After fees" -msgstr "Nach Gebühren" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Datumsbereich und Vergleich" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Schnelle Datumsbereiche" - -#: app/templates/reports/index.html:79 -msgid "This Week" -msgstr "Diese Woche" - -#: app/templates/reports/index.html:82 -msgid "This Month" -msgstr "Dieser Monat" - -#: app/templates/reports/index.html:85 -msgid "This Year" -msgstr "Dieses Jahr" - -#: app/templates/reports/index.html:89 -msgid "Custom Range" -msgstr "Benutzerdefinierter Zeitraum" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "Vergleichsansicht" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -msgid "Week in Review" -msgstr "Rückblick der Woche" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "Stunden dieser Woche, Top-Projekte, abrechenbar vs. nicht abrechenbar" - -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "Dieser Monat vs. letzter Monat" - -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "Aktuellen Monat mit dem Vormonat vergleichen" - -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "Dieses Jahr vs. letztes Jahr" - -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "Aktuelles Jahr mit dem Vorjahr vergleichen" - -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Vergleichsergebnisse" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Berichte exportieren" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Exportformat" - -#: app/templates/reports/index.html:155 -msgid "Export Report" -msgstr "Bericht exportieren" - -#: app/templates/reports/index.html:162 -msgid "Manage Scheduled Reports" -msgstr "Geplante Berichte verwalten" - -#: app/templates/reports/index.html:169 -msgid "CSV Export" -msgstr "CSV-Export" - -#: app/templates/reports/index.html:172 -msgid "Excel Export" -msgstr "Excel-Export" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "Berichtstypen" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "Projektbericht" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Benutzerbericht" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Zusammenfassender Bericht" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Aufgabenbericht" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -msgid "Time Entries Report" -msgstr "Zeiteinträge-Bericht" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "Bericht über unbezahlte Stunden" - -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "Berichtsverwaltung" - -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "Gespeicherte Berichtsansichten" - -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "Gespeicherte Berichtskonfigurationen anzeigen und verwalten" - -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "Automatisierte Berichtslieferung per E-Mail verwalten" - -#: app/templates/reports/index.html:244 -msgid "No recent entries." -msgstr "Keine aktuellen Einträge." - -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -msgid "No scheduled reports yet." -msgstr "Noch keine geplanten Berichte." - -#: app/templates/reports/index.html:273 -msgid "Add Scheduled Report" -msgstr "Geplanten Bericht hinzufügen" - -#: app/templates/reports/index.html:366 -msgid "Please set a date range" -msgstr "Bitte Datumsbereich festlegen" - -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "Sie müssen zuerst eine gespeicherte Berichtsansicht erstellen. Bitte erstellen Sie eine von der Berichtsseite." - -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "Bericht planen" - -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "Berichtsansicht" - -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "Berichtsansicht auswählen..." - -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "Empfänger" - -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "Kommagetrennte E-Mail-Adressen" - -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "Zeitplan erstellen" - -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "Berichtsansichten konnten nicht geladen werden" - -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "Geplanter Bericht erfolgreich erstellt" - -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "Geplanter Bericht konnte nicht erstellt werden" - -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "Zeitplan konnte nicht aktualisiert werden" - -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "Möchten Sie diesen geplanten Bericht wirklich löschen?" - -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "Geplanter Bericht erfolgreich gelöscht" - -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "Geplanter Bericht konnte nicht gelöscht werden" - -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "Iterativer Bericht" - -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "Iterativer Bericht – Ein Bericht pro %(field_name)s-Wert" - -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "Zusammenfassung nach Kunden" - -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "Keine Daten für diesen %(field_name)s-Wert gefunden" - -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "Keine eindeutigen Werte für das benutzerdefinierte Feld „%(field_name)s\" gefunden" - -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -msgid "No data for the selected period." -msgstr "Keine Daten für den ausgewählten Zeitraum." - -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "Versuchen Sie einen anderen Datumsbereich oder stellen Sie sicher, dass Zeit für Projekte erfasst wurde." - -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "Funktionen" - -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "Iterativ" - -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "Möchten Sie diese Berichtsansicht wirklich löschen?" - -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "Keine gespeicherten Berichtsansichten" - -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "Berichtskonfigurationen erstellen und speichern, um sie in geplanten Berichten zu verwenden." - -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "Bericht erstellen" - -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "Automatische E-Mail-Zustellung für Berichte einrichten" - -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "Zurück zu geplanten Berichten" - -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "Gespeicherte Berichtsansicht auswählen..." - -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "Gespeicherte Berichtsansicht zum Planen auswählen" - -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "E-Mail-Empfänger" - -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "email1@example.com, email2@example.com" - -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "Geben Sie eine oder mehrere durch Kommas getrennte E-Mail-Adressen ein. Diese Empfänger erhalten den geplanten Bericht per E-Mail." - -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "Bei Verwendung von Zuordnung oder Vorlage werden diese als Fallback verwendet, wenn keine Adresse für einen Wert gefunden wird." - -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "Häufigkeit auswählen..." - -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "Benutzerdefiniert (Cron)" - -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "Vorherigen Kalendermonat als Datumsbereich verwenden" - -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "Für monatliche Ausführungen: Der Bericht verwendet den ersten und letzten Tag des Vormonats." - -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "Cron-Ausdruck" - -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "Cron-Format: Minute Stunde Tag Monat Wochentag" - -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "Berichtsiteration (Optional)" - -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "Bericht nach benutzerdefiniertem Feldwert aufteilen" - -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "Der Name des benutzerdefinierten Feldes, über das iteriert werden soll (z. B. „salesman“). Für jeden eindeutigen Wert wird ein separater Bericht generiert." - -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "E-Mail-Verteilung" - -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "Alle Berichte an die folgenden Empfänger" - -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "Pro Wert: SalesmanEmailMapping-Tabelle" +#~ msgid "Reason for Change" +#~ msgstr "Grund für die Änderung" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "Pro Wert: E-Mail aus Vorlage" +#~ msgid "Optional but recommended" +#~ msgstr "Optional, aber empfohlen" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "Empfänger-E-Mail-Vorlage" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "z. B. Korrigierte Dauer, aktualisierte Projektzuweisung usw." -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "Verwenden Sie {value} für den Wert (z. B. KF); {value}@test.de ergibt KF@test.de. Verwenden Sie {value_lower} für Kleinbuchstaben, z. B. {value_lower}@test.de ergibt kf@test.de." - -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "Bericht" - -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "Aufteilen nach" - -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "Verteilung" - -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "Vorlage" - -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "Ungültig: Gespeicherte Ansicht nicht gefunden" - -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "Bericht jetzt auslösen (zum Testen)" - -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "Ungültigen Zeitplan korrigieren oder entfernen" - -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "Keine geplanten Berichte" - -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "Geplante Berichte erstellen, um Berichte automatisch per E-Mail zu erhalten." - -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "Bericht erfolgreich ausgelöst!" - -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "Bericht an Empfänger gesendet." - -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "Fehler beim Auslösen des Berichts:" - -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "Fehler beim Auslösen des Berichts. Bitte überprüfen Sie die Konsole für Details." - -#: app/templates/reports/summary.html:27 -msgid "Time by project (last 30 days)" -msgstr "Zeit nach Projekt (letzte 30 Tage)" - -#: app/templates/reports/summary.html:30 -msgid "Time distribution by project" -msgstr "Zeitverteilung nach Projekt" - -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -msgid "No project data for the last 30 days." -msgstr "Keine Projektdaten für die letzten 30 Tage." - -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "Tagestrend (letzte 14 Tage)" - -#: app/templates/reports/summary.html:73 -msgid "Daily hours trend" -msgstr "Täglicher Stundentrend" - -#: app/templates/reports/summary.html:108 -msgid "No trend data." -msgstr "Keine Trenddaten." - -#: app/templates/reports/summary.html:114 -msgid "Top Projects (Last 30 Days)" -msgstr "Top-Projekte (letzte 30 Tage)" - -#: app/templates/reports/task_report.html:102 -msgid "No tasks with logged time for the selected period." -msgstr "Keine Aufgaben mit erfasster Zeit für den ausgewählten Zeitraum." - -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "Versuchen Sie einen anderen Datumsbereich oder erfassen Sie Zeit für Aufgaben." - -#: app/templates/reports/time_entries_report.html:49 -msgid "All Clients" -msgstr "Alle Kunden" - -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -msgid "All Tasks" -msgstr "Alle Aufgaben" - -#: app/templates/reports/time_entries_report.html:136 -msgid "No time entries found for the selected filters." -msgstr "Keine Zeiteinträge für die ausgewählten Filter gefunden." - -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "Gesamte unbezahlte Stunden" - -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "Geschätzter Betrag" - -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "Kunden mit unbezahlten Stunden" - -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "Unbezahlte Stunden nach Kunden" - -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "Keine unbezahlten Stunden für den ausgewählten Zeitraum gefunden." - -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "Einträge exportieren (Excel)" +#~ msgid "Explain why you are making these changes" +#~ msgstr "Erklären Sie, warum Sie diese Änderungen vornehmen" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "Spalten auswählen:" +#~ msgid "Task:" +#~ msgstr "Aufgabe:" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "Dauer (formatiert)" +#~ msgid "Start:" +#~ msgstr "Start:" -#: app/templates/reports/user_report.html:158 -msgid "Try a different date range or ensure time has been logged." -msgstr "Versuchen Sie einen anderen Datumsbereich oder stellen Sie sicher, dass Zeit erfasst wurde." +#~ msgid "End:" +#~ msgstr "Ende:" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "Informationen zur Überstundenverfolgung" +#~ msgid "Entry Details" +#~ msgstr "Eintragsdetails" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "Zeitübersicht dieser Woche und Top-Projekte" +#~ msgid "Admin Notice" +#~ msgstr "Admin-Hinweis" -#: app/templates/reports/week_in_review.html:17 -msgid "Back to Reports" -msgstr "Zurück zu Berichten" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" +#~ "Als Administrator haben Sie volle " +#~ "Bearbeitungsrechte für diesen Zeiteintrag. " +#~ "Änderungen werden zu Prüfzwecken " +#~ "protokolliert." -#: app/templates/reports/week_in_review.html:38 -msgid "%(count)s time entries logged this week." -msgstr "%(count)s Zeiteinträge diese Woche erfasst." +#~ msgid "Duplicate Entry" +#~ msgstr "Doppelter Eintrag" -#: app/templates/reports/week_in_review.html:43 -msgid "Top projects this week" -msgstr "Top-Projekte diese Woche" +#~ msgid "Duplicate Time Entry" +#~ msgstr "Doppelter Zeiteintrag" -#: app/templates/reports/week_in_review.html:54 -msgid "No time logged this week yet." -msgstr "Diese Woche noch keine Zeit erfasst." +#~ msgid "Log Time Manually" +#~ msgstr "Zeit manuell protokollieren" -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Filter anwenden" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Erstellen Sie eine Kopie eines vorherigen Eintrags mit neuen Zeiten" -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "Möchten Sie diesen Filter wirklich löschen?" +#~ msgid "Create a new time entry" +#~ msgstr "Erstellen Sie einen neuen Zeiteintrag" -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Filter löschen" +#~ msgid "Duplicating entry:" +#~ msgstr "Eintrag duplizieren:" -#: app/templates/saved_filters/list.html:93 -msgid "Go to Reports" -msgstr "Zu Berichten gehen" +#~ msgid "Original:" +#~ msgstr "Original:" -#: app/templates/saved_filters/list.html:96 -msgid "No saved filters yet" -msgstr "Noch keine gespeicherten Filter" +#~ msgid "to" +#~ msgstr "Zu" -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "Filter von den Seiten Berichte oder Aufgaben für den Schnellzugriff speichern." +#~ msgid "Project & task" +#~ msgstr "Projekt & Aufgabe" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Passen Sie Verknüpfungen an" +#~ msgid "Date & time" +#~ msgstr "Datum & Uhrzeit" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Suchverknüpfungen..." +#~ msgid "Worked Time" +#~ msgstr "Gearbeitete Zeit" -#: app/templates/settings/keyboard_shortcuts.html:246 -msgid "Save changes" -msgstr "Änderungen speichern" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" +#~ "Optional: HH:MM für die Dauer eingeben." +#~ " Sie können dies mit Startdatum/-uhrzeit" +#~ " kombinieren, um Zeit an einem " +#~ "bestimmten Tag zu erfassen." -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "Tasten drücken..." +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" +#~ "Pause basierend auf der Dauer " +#~ "vorschlagen (z. B. >6h: 30 Min., " +#~ ">9h: 45 Min.)" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "Klicken und dann eine Tastenkombination drücken" +#~ msgid "Suggest" +#~ msgstr "Vorschlagen" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click to record" -msgstr "Zum Aufzeichnen klicken" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" +#~ "Optional: Pausendauer (HH:MM). Wird von " +#~ "der Gesamtzeit abgezogen, um die " +#~ "gearbeitete Dauer zu erhalten." -#: app/templates/settings/keyboard_shortcuts.html:445 -msgid "Revert" -msgstr "Zurücksetzen" - -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "Konflikt: Derselbe Schlüssel ist mehreren Aktionen zugewiesen." - -#: app/templates/settings/keyboard_shortcuts.html:473 -msgid "Failed to save" -msgstr "Speichern fehlgeschlagen" - -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "Tastenkürzel gespeichert." +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" +#~ "Sitzung ist möglicherweise abgelaufen. Bitte" +#~ " aktualisieren Sie die Seite und " +#~ "versuchen Sie es erneut." -#: app/templates/settings/keyboard_shortcuts.html:478 -msgid "Failed to save shortcuts." -msgstr "Shortcuts konnten nicht gespeichert werden." +#~ msgid "Project not found or inactive" +#~ msgstr "Projekt nicht gefunden oder inaktiv" -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "Dadurch werden alle Tastaturkürzel auf ihre Standardwerte zurückgesetzt. Weitermachen?" +#~ msgid "What did you work on?" +#~ msgstr "Woran haben Sie gearbeitet?" -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Auf Standardeinstellungen zurücksetzen" +#~ msgid "Time Entries Export" +#~ msgstr "Zeiteinträge exportieren" -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset all shortcuts to defaults?" -msgstr "Alle Shortcuts auf Standard zurücksetzen?" +#~ msgid "Generated at" +#~ msgstr "Generiert am" -#: app/templates/settings/keyboard_shortcuts.html:489 -msgid "Failed to reset" -msgstr "Zurücksetzen fehlgeschlagen" +#~ msgid "View and manage all time entries" +#~ msgstr "Alle Zeiteinträge anzeigen und verwalten" -#: app/templates/settings/keyboard_shortcuts.html:493 -msgid "Shortcuts reset to defaults." -msgstr "Shortcuts auf Standard zurückgesetzt." +#~ msgid "Paid Hours" +#~ msgstr "Bezahlte Stunden" -#: app/templates/settings/keyboard_shortcuts.html:494 -msgid "Failed to reset shortcuts." -msgstr "Shortcuts konnten nicht zurückgesetzt werden." +#~ msgid "Apply filters" +#~ msgstr "Filter anwenden" -#: app/templates/settings/keyboard_shortcuts.html:511 -msgid "Failed to load shortcuts." -msgstr "Shortcuts konnten nicht geladen werden." +#~ msgid "Toggle filters" +#~ msgstr "Filter ein-/ausblenden" -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Willkommen" +#~ msgid "Paid Status" +#~ msgstr "Zahlungsstatus" -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "Datenschutz zuerst" +#~ msgid "Billable Status" +#~ msgstr "Abrechnungsstatus" -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Selbstgehostet auf Ihrem Server" +#~ msgid "Search in notes and tags..." +#~ msgstr "In Notizen und Tags suchen..." -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Anonyme Telemetrie (Opt-in)" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "Ausgewählte Zeiteinträge löschen" -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "Es wurden nie personenbezogene Daten erfasst" +#~ msgid "Reason for Deletion" +#~ msgstr "Löschgrund" -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Open Source und transparent" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "z. B. Doppelter Eintrag, falsche Zeit usw." -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "Schritt 1 von 6" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "Ausgewählte Einträge als bezahlt/unbezahlt markieren" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Willkommen bei TimeTracker" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "z. B. Rechnungsnummer oder Zahlungsreferenz" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "Lassen Sie uns in wenigen Augenblicken für die Einrichtung sorgen" +#~ msgid "Please select at least one time entry" +#~ msgstr "Bitte wählen Sie mindestens einen Zeiteintrag aus" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "Vielen Dank, dass Sie sich für TimeTracker entschieden haben!" +#~ msgid "time entry/entries" +#~ msgstr "Zeiteintrag/Zeiteinträge" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "Ihre Daten bleiben auf Ihrem Server und Sie haben die vollständige Kontrolle." +#~ msgid "Track your time with a visual timer" +#~ msgstr "Verfolgen Sie Ihre Zeit mit einem visuellen Timer" -#: app/templates/setup/initial_setup.html:97 -msgid "Region & time" -msgstr "Region & Zeit" +#~ msgid "Estimated Completion" +#~ msgstr "Voraussichtliche Fertigstellung" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "Standard-Zeitzone, Datums- und Zeitformat sowie Währung festlegen." +#~ msgid "Calculating..." +#~ msgstr "Berechnen..." -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Zeitzone" - -#: app/templates/setup/initial_setup.html:110 -msgid "Date format" -msgstr "Datumsformat" - -#: app/templates/setup/initial_setup.html:119 -msgid "Time format" -msgstr "Zeitformat" - -#: app/templates/setup/initial_setup.html:121 -msgid "24-hour" -msgstr "24-Stunden" - -#: app/templates/setup/initial_setup.html:122 -msgid "12-hour" -msgstr "12-Stunden" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "Firmendaten für Rechnungen und Markenauftritt." - -#: app/templates/setup/initial_setup.html:139 -msgid "Company name" -msgstr "Firmenname" - -#: app/templates/setup/initial_setup.html:140 -msgid "Your Company Name" -msgstr "Ihr Firmenname" - -#: app/templates/setup/initial_setup.html:144 -msgid "Your Company Address" -msgstr "Ihre Firmenadresse" - -#: app/templates/setup/initial_setup.html:166 -msgid "App behavior and timer settings." -msgstr "App-Verhalten und Timer-Einstellungen." - -#: app/templates/setup/initial_setup.html:171 -msgid "Allow self-registration" -msgstr "Selbstregistrierung erlauben" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "Benutzer können von der Anmeldeseite aus Konten erstellen" - -#: app/templates/setup/initial_setup.html:176 -msgid "Time rounding (minutes)" -msgstr "Zeitrundung (Minuten)" - -#: app/templates/setup/initial_setup.html:183 -msgid "Round time entries to the nearest N minutes." -msgstr "Zeiteinträge auf die nächsten N Minuten runden." - -#: app/templates/setup/initial_setup.html:188 -msgid "Single active timer per user" -msgstr "Einzelner aktiver Timer pro Benutzer" - -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "Nur ein laufender Timer pro Benutzer gleichzeitig" - -#: app/templates/setup/initial_setup.html:193 -msgid "Idle timeout (minutes)" -msgstr "Leerlauf-Timeout (Minuten)" - -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "Timer nach dieser Anzahl von Inaktivitätsminuten pausieren." - -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "Kalender-OAuth jetzt oder später unter Admin → Einstellungen konfigurieren." - -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "Google Kalender OAuth" - -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "Client-ID (optional)" - -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "Client-Secret (optional)" - -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "Diese erhalten von" - -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "Google Cloud Console" +#~ msgid "Based on average session duration" +#~ msgstr "Basierend auf der durchschnittlichen Sitzungsdauer" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "Wie erhalte ich Google Kalender OAuth-Anmeldedaten?" - -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "Gehen zu" - -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "Ein neues Projekt erstellen oder ein vorhandenes auswählen" - -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "Google Kalender API aktivieren" - -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "Zu Anmeldedaten → Anmeldedaten erstellen → OAuth 2.0 Client-ID gehen" - -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "Anwendungstyp auf „Webanwendung\" setzen" - -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "Autorisierte Weiterleitungs-URI hinzufügen:" - -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "Client-ID und Client-Secret kopieren" - -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "Sie können diesen Schritt überspringen und Integrationen später konfigurieren." - -#: app/templates/setup/initial_setup.html:237 -msgid "Privacy & finish" -msgstr "Datenschutz & Abschluss" - -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "Wählen Sie, ob Sie zur Verbesserung von TimeTracker mit anonymen Nutzungsdaten beitragen möchten." - -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Aktivieren Sie anonyme Telemetrie" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Helfen Sie uns, Nutzungsmuster zu verstehen, um TimeTracker zu verbessern" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "Welche Daten werden erhoben?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "Was wir sammeln:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "Anonymer Installations-Fingerabdruck (gehasht)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "Informationen zur Anwendungsversion und Plattform" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Statistiken zur Funktionsnutzung" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "Was wir NICHT sammeln:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Keine Benutzernamen oder E-Mails" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Keine Zeiterfassungsdaten oder Notizen" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Keine Kunden- oder Geschäftsdaten" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "Sie können dies jederzeit ändern" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "Indem Sie fortfahren, stimmen Sie der Nutzung von TimeTracker gemäß den folgenden Bestimmungen zu" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "GPL-3.0-Lizenz" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Schließen Sie die Einrichtung ab und fahren Sie fort" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Aufgabe bearbeiten" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "Status konnte nicht aktualisiert werden" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "Der Aufgabenstatus konnte nicht aktualisiert werden" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Kanban-Spalte erstellt" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Kanban-Spalte gelöscht" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Kanban-Spalten neu angeordnet" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "Die Sichtbarkeit der Kanban-Spalte wurde geändert" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Kanban-Spalten aktualisiert" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Aktualisieren" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "Kanban-Spalten konnten nicht aktualisiert werden" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Aufgabendetails werden geladen..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Verfolgt" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Vollständige Details anzeigen" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Zurück zu Aufgaben" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "Fügen Sie Ihrem Projekt eine neue Aufgabe hinzu, um die Arbeit in überschaubare Komponenten aufzuteilen" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Geben Sie einen beschreibenden Aufgabennamen ein" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "Wählen Sie einen klaren, beschreibenden Namen, der erklärt, was zu tun ist" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "Geben Sie detaillierte Informationen über die Aufgabe, Anforderungen und spezifische Anweisungen an ..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "Optional: Fügen Sie Kontext, Anforderungen oder spezifische Anweisungen für die Aufgabe hinzu" - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Wählen Sie das Projekt aus, zu dem diese Aufgabe gehört" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Ausgangsstatus" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Erledigt" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Optional: Legen Sie eine Frist für diese Aufgabe fest" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Optional: Schätzen Sie, wie lange diese Aufgabe dauern wird" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Optional: Weisen Sie diese Aufgabe einem Teammitglied zu" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "z. B. Fehler, Frontend, dringend" - -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -msgid "Comma-separated tags for categorization" -msgstr "Kommagetrennte Tags zur Kategorisierung" - -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "Optional: Farbe für diese Aufgabe im Gantt-Diagramm. Wenn nicht festgelegt, wird die Projektfarbe verwendet. Wählen oder geben Sie einen Hex-Code ein (z. B. #3b82f6)." - -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Tipps zur Aufgabenerstellung" - -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Verwenden Sie Aktionsverben und geben Sie genau an, was getan werden muss" - -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Realistische Schätzungen" - -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Berücksichtigen Sie bei der Schätzung der Zeit Komplexität und Abhängigkeiten" - -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Legen Sie Fristen fest" - -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Fälligkeitstermine helfen dabei, Arbeit zu priorisieren und den Fortschritt zu verfolgen" - -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Prioritätsangelegenheiten" - -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "Nutzen Sie Prioritätsstufen, um den Teammitgliedern zu helfen, sich auf das Wichtigste zu konzentrieren" - -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Zurück zur Aufgabe" - -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Aufgabendetails und Einstellungen für „%(task)s“ aktualisieren" - -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Aufgabeninformationen" - -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Update-Aufgabe" - -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Schätzung verwendet" - -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Tatsächlich" - -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Aktuelle Aufgabeninformationen" - -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "Aktueller Status" - -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Aktuelle Priorität" - -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "Derzeit zugewiesen an" - -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Aktuelles Fälligkeitsdatum" - -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Aktuelle Schätzung" - -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Tatsächliche Stunden" - -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Begonnen" - -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Tipps bearbeiten" - -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Statusänderungen" - -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "Eine Statusänderung kann sich auf die Zeiterfassung und Fortschrittsberechnungen auswirken" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Fälligkeitsaktualisierungen" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Berücksichtigen Sie bei der Anpassung der Fristen die Arbeitsbelastung des Teams" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Aufgabenänderungen" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "Benachrichtigen Sie Teammitglieder, wenn Sie Aufgaben neu zuweisen" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Aktualisierung..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Aufgaben filtern" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -msgid "e.g. bug, frontend" -msgstr "z. B. Bug, Frontend" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Ausgewählte Aufgaben löschen" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Status für ausgewählte Aufgaben ändern" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Ausgewählte Aufgaben zuweisen" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Aufgaben zuweisen" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Ausgewählte Aufgaben in das Projekt verschieben" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Wählen Sie Projekt aus" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Aufgaben verschieben" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "Sind Sie sicher, dass Sie die Aufgabe „{name}“ löschen möchten?" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "Die Aufgabe „{name}“ kann nicht gelöscht werden, da sie Zeiteinträge enthält. Bitte löschen Sie zunächst die Zeiteinträge." - -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Aufgabe löschen" - -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "Meine Aufgaben" - -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Von Ihnen zugewiesene oder von Ihnen erstellte Aufgaben" - -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "gesamt" - -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "Meine Aufgaben filtern" - -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Aufgabenname oder Beschreibung" - -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Alle Prioritäten" - -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Aufgabentyp" - -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "Mir zugewiesen" - -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Von mir erstellt" - -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Nur überfällig anzeigen" - -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Von mir erstellt" - -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "Paginierung meiner Aufgaben" - -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "..." - -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "Keine Aufgaben gefunden" - -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "Ihnen sind noch keine Aufgaben zugewiesen oder von Ihnen erstellt." - -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Erstellen Sie Ihre erste Aufgabe" - -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Alle Aufgaben anzeigen" - -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Überfällige Aufgaben" - -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Erfordert sofortige Aufmerksamkeit" - -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "Artikel" - -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "Es gibt" - -#: app/templates/tasks/overdue.html:26 -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "überfällige Aufgaben, die sofortige Aufmerksamkeit erfordern. Bitte überprüfen und aktualisieren Sie diese Aufgaben, um weitere Verzögerungen zu vermeiden." - -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "Fällig:" - -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "Schätzung:" - -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Tatsächlich:" - -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "Massenaktionen" - -#: app/templates/tasks/overdue.html:89 -msgid "Update Due Dates" -msgstr "Fälligkeitsdaten aktualisieren" - -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "Fälligkeitsdaten für mehrere Aufgaben gleichzeitig verlängern" - -#: app/templates/tasks/overdue.html:91 -msgid "Extend Due Dates" -msgstr "Fälligkeitsdaten verlängern" - -#: app/templates/tasks/overdue.html:94 -msgid "Priority Management" -msgstr "Prioritätsverwaltung" - -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "Prioritäten für überfällige Aufgaben anpassen" - -#: app/templates/tasks/overdue.html:96 -msgid "Adjust Priorities" -msgstr "Prioritäten anpassen" - -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "Keine überfälligen Aufgaben!" - -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "Tolle Arbeit! Alle Aufgaben liegen derzeit im Zeitplan." - -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Geben Sie ein neues Fälligkeitsdatum ein (JJJJ-MM-TT):" - -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "Sind Sie sicher, dass Sie das Fälligkeitsdatum auf verlängern möchten?" - -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "für alle überfälligen Aufgaben?" - -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "Geben Sie eine neue Priorität ein (niedrig/mittel/hoch/dringend):" - -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "Sind Sie sicher, dass Sie die Priorität festlegen möchten?" - -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Ungültige Priorität. Bitte verwenden Sie: niedrig, mittel, hoch oder dringend" - -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "%(count)s Aufgabe(n) aktualisiert. Wird neu geladen..." - -#: app/templates/tasks/overdue.html:117 -msgid "Update failed. Please try again." -msgstr "Aktualisierung fehlgeschlagen. Bitte versuchen Sie es erneut." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "Aufgabe starten und als „In Bearbeitung“ markieren?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Aufgabenstatus ändern" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "Aufgabe als Zu erledigen markieren?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "Aufgabe als erledigt markieren?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Aufgabe abschließen" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Vollständig" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "Aufgabe zur Überprüfung erneut öffnen?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Aufgabe erneut öffnen" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Wieder öffnen" - -#: app/templates/tasks/view.html:47 -msgid "Task details and history." -msgstr "Aufgabendetails und Verlauf." - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Erstellen Sie eine Zeiteintragsvorlage" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "z. B. Daily Standup, Kundenbesprechung" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "z. B. 1,0, 0,5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Füllen Sie Notizen für diese Art von Zeiteintrag vorab aus" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "z. B. Besprechung, Entwicklung, Verwaltung" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Vorlage bearbeiten" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "Sind Sie sicher, dass Sie diese Vorlage löschen möchten?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Vorlage löschen" - -#: app/templates/time_entry_templates/list.html:111 -msgid "Create Your First Template" -msgstr "Erste Vorlage erstellen" - -#: app/templates/time_entry_templates/list.html:114 -msgid "No templates yet" -msgstr "Noch keine Vorlagen" - -#: app/templates/time_entry_templates/list.html:115 -msgid "Create your first time entry template to speed up your workflow." -msgstr "Erstellen Sie Ihre erste Zeiteintragsvorlage, um Ihren Workflow zu beschleunigen." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Nutzungsstatistik" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "Alle auswählen" - -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "ausgewählt" - -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "Als bezahlt/unbezahlt markieren" - -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "Projekt/Kunde" - -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "Rechnungsreferenz" - -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -msgid "Click to edit" -msgstr "Zum Bearbeiten klicken" - -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "Timer stoppen, um die Dauer zu bearbeiten" - -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -msgid "Request approval" -msgstr "Genehmigung anfordern" - -#: app/templates/timer/_time_entries_list.html:201 -msgid "Clear filters" -msgstr "Filter löschen" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "No time entries match your filters" -msgstr "Keine Zeiteinträge entsprechen Ihren Filtern" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "Versuchen Sie, Ihre Filter anzupassen oder zu löschen, um alle Einträge zu sehen. Sie können auch einen neuen Zeiteintrag erfassen." - -#: app/templates/timer/_time_entries_list.html:211 -msgid "No time entries yet" -msgstr "Noch keine Zeiteinträge" - -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "Erfassen Sie Zeit, um Ihre Einträge hier zu sehen. Verwenden Sie den Timer auf dem Dashboard oder erfassen Sie Zeit manuell." - -#: app/templates/timer/_time_entries_list.html:222 -msgid "Time entries pagination" -msgstr "Zeiteinträge-Seitennavigation" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -msgid "Bulk Time Entry" -msgstr "Massen-Zeiteintrag" - -#: app/templates/timer/bulk_entry.html:74 -msgid "Single Entry" -msgstr "Einzeleintrag" - -#: app/templates/timer/bulk_entry.html:77 -msgid "Create multiple time entries for consecutive days" -msgstr "Mehrere Zeiteinträge für aufeinanderfolgende Tage erstellen" - -#: app/templates/timer/bulk_entry.html:86 -msgid "Bulk Entry Form" -msgstr "Masseneintrag-Formular" - -#: app/templates/timer/bulk_entry.html:110 -msgid "Select the project to log time for" -msgstr "Projekt auswählen, für das Zeit erfasst werden soll" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Aufgaben werden geladen, nachdem ein Projekt ausgewählt wurde" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -msgid "Date Range" -msgstr "Datumsbereich" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "Wochenenden überspringen (Samstag & Sonntag)" - -#: app/templates/timer/bulk_entry.html:155 -msgid "Entries will be created for these dates" -msgstr "Einträge werden für diese Daten erstellt" - -#: app/templates/timer/bulk_entry.html:172 -msgid "Same start time for all days" -msgstr "Gleiche Startzeit für alle Tage" - -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "Gleiche Endzeit für alle Tage" - -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "Woran haben Sie gearbeitet? (gleiche Notizen für alle Einträge)" - -#: app/templates/timer/bulk_entry.html:200 -msgid "tag1, tag2, tag3" -msgstr "tag1, tag2, tag3" - -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "Tags mit Kommas trennen (gleich für alle Einträge)" - -#: app/templates/timer/bulk_entry.html:211 -msgid "Include in invoices" -msgstr "In Rechnungen einschließen" - -#: app/templates/timer/bulk_entry.html:223 -msgid "Create Entries" -msgstr "Einträge erstellen" - -#: app/templates/timer/bulk_entry.html:239 -msgid "Bulk Entry Tips" -msgstr "Tipps für Masseneinträge" - -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "Start- und Enddatum auswählen. Für jeden Tag im Bereich werden Einträge erstellt." - -#: app/templates/timer/bulk_entry.html:253 -msgid "Skip Weekends" -msgstr "Wochenenden überspringen" - -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "Aktivieren, um Samstage und Sonntage automatisch aus dem Datumsbereich auszuschließen." - -#: app/templates/timer/bulk_entry.html:260 -msgid "Same Time Daily" -msgstr "Täglich gleiche Zeit" - -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "Alle Einträge verwenden täglich dieselbe Start- und Endzeit." - -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "Konfliktprüfung" - -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "Das System prüft auf vorhandene Zeiteinträge und verhindert Überlappungen." - -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "Aufgaben konnten nicht geladen werden" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Kein aktiver Timer. Beginnen Sie unten mit einem!" -#: app/templates/timer/bulk_entry.html:335 -msgid "Total days" -msgstr "Gesamttage" +#~ msgid "Start New Timer" +#~ msgstr "Neuen Timer starten" -#: app/templates/timer/bulk_entry.html:336 -msgid "Weekdays only" -msgstr "Nur Werktage" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Fügen Sie Notizen zu dem hinzu, woran Sie gerade arbeiten ..." -#: app/templates/timer/bulk_entry.html:338 -msgid "Entries will be created for" -msgstr "Einträge werden erstellt für" +#~ msgid "Or use a template" +#~ msgstr "Oder verwenden Sie eine Vorlage" -#: app/templates/timer/calendar.html:35 -msgid "Agenda" -msgstr "Tagesordnung" +#~ msgid "Recent Projects" +#~ msgstr "Aktuelle Projekte" -#: app/templates/timer/calendar.html:52 -msgid "iCal Format" -msgstr "iCal-Format" +#~ msgid "Today's Stats" +#~ msgstr "Heutige Statistiken" -#: app/templates/timer/calendar.html:53 -msgid "CSV Format" -msgstr "CSV-Format" +#~ msgid "View Entry" +#~ msgstr "Eintrag anzeigen" -#: app/templates/timer/calendar.html:72 -msgid "Filter by tags..." -msgstr "Nach Tags filtern..." +#~ msgid "View time entry details" +#~ msgstr "Zeiteintragsdetails anzeigen" -#: app/templates/timer/calendar.html:75 -msgid "Show billable entries only" -msgstr "Nur abrechnungsfähige Einträge anzeigen" +#~ msgid "Project & Client" +#~ msgstr "Projekt & Kunde" -#: app/templates/timer/calendar.html:76 -msgid "Billable Only" -msgstr "Nur Abrechnungsfähige" +#~ msgid "Approval" +#~ msgstr "Genehmigung" -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "Neuen Ereignissen einem Projekt zuweisen..." +#~ msgid "Status & Billing" +#~ msgstr "Status & Abrechnung" -#: app/templates/timer/calendar.html:92 -msgid "Total Hours:" -msgstr "Gesamtstunden:" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" +#~ "Supporter-Abzeichen: Bestätigen Sie Ihren " +#~ "Schlüssel und vielen Dank für die " +#~ "Finanzierung der Entwicklung." -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -msgid "Colors assigned by project" -msgstr "Farben nach Projekt zugewiesen" +#~ msgid "License status" +#~ msgstr "Lizenzstatus" -#: app/templates/timer/calendar.html:142 -msgid "Create Time Entry" -msgstr "Zeiteintrag erstellen" +#~ msgid "Supporter license active" +#~ msgstr "Supporter-Lizenz aktiv" -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Wählen Sie ein Projekt aus..." +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" +#~ "Vielen Dank für Ihre Unterstützung von" +#~ " TimeTracker. Ihr Abzeichen bestätigt diese" +#~ " Instanz als Supporter — keine " +#~ "Funktionen sind gesperrt." -#: app/templates/timer/calendar.html:249 -msgid "Recurring Time Blocks" -msgstr "Wiederkehrende Zeitblöcke" +#~ msgid "Not activated" +#~ msgstr "Nicht aktiviert" -#: app/templates/timer/calendar.html:253 -msgid "Manage your recurring time entry templates." -msgstr "Wiederkehrende Zeiteintragsvorlagen verwalten." +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" +#~ "Erwerben Sie eine Supporter-Lizenz " +#~ "(€25), um das Supporter-Abzeichen für" +#~ " diese Instanz freizuschalten. Die App " +#~ "bleibt in jedem Fall vollständig " +#~ "kostenlos." -#: app/templates/timer/calendar.html:261 -msgid "New Recurring Block" -msgstr "Neuer wiederkehrender Block" +#~ msgid "Enter license key" +#~ msgstr "Lizenzschlüssel eingeben" -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "Zu heute springen" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" +#~ "Fügen Sie den Lizenzschlüssel ein, den" +#~ " Sie nach dem Kauf per E-Mail " +#~ "erhalten haben." -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "Nächste Woche/Monat" +#~ msgid "License key" +#~ msgstr "Lizenzschlüssel" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "Vorherige Woche/Monat" +#~ msgid "Paste your key here" +#~ msgstr "Schlüssel hier einfügen" -#: app/templates/timer/calendar.html:292 -msgid "Navigate Days" -msgstr "Tage navigieren" +#~ msgid "Validate" +#~ msgstr "Validieren" -#: app/templates/timer/calendar.html:297 -msgid "Views" -msgstr "Ansichten" +#~ msgid "Need a key?" +#~ msgstr "Benötigen Sie einen Schlüssel?" -#: app/templates/timer/calendar.html:300 -msgid "Day View" -msgstr "Tagesansicht" +#~ msgid "Purchase a license key" +#~ msgstr "Einen Lizenzschlüssel kaufen" -#: app/templates/timer/calendar.html:304 -msgid "Week View" -msgstr "Wochenansicht" +#~ msgid "Back to Settings" +#~ msgstr "Zurück zu Einstellungen" -#: app/templates/timer/calendar.html:308 -msgid "Month View" -msgstr "Monatsansicht" +#~ msgid "Profile" +#~ msgstr "Profil" -#: app/templates/timer/calendar.html:312 -msgid "Agenda View" -msgstr "Tagesordnungsansicht" +#~ msgid "In progress" +#~ msgstr "Im Gange" + +#~ msgid "View all time entries" +#~ msgstr "Alle Zeiteinträge anzeigen" + +#~ msgid "No recent time entries" +#~ msgstr "Keine aktuellen Zeiteinträge" + +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Verwalten Sie Ihre Kontoeinstellungen und -präferenzen" + +#~ msgid "Support & Community" +#~ msgstr "Support & Community" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" +#~ "TimeTracker ist kostenlos und Open " +#~ "Source. Die Finanzierung kommt aus " +#~ "freiwilligen Spenden und Supporter-Lizenzen" +#~ " — nie durch das Sperren von " +#~ "Funktionen." + +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" +#~ "Diese Instanz hat bereits eine " +#~ "Supporter-Lizenz. Vielen Dank — Sie " +#~ "können jederzeit noch spenden oder die" +#~ " App teilen." + +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" +#~ "Wenn die App Ihnen Zeit spart, " +#~ "können Sie spenden oder eine " +#~ "Supporter-Lizenz erwerben (€25). Eine " +#~ "Lizenz zeigt ein Supporter-Abzeichen; " +#~ "sie ändert nichts an dem, was Sie" +#~ " nutzen können." + +#~ msgid "License & supporter key" +#~ msgstr "Lizenz & Supporter-Schlüssel" + +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "Kaufabschluss auf timetracker.drytrix.com" + +#~ msgid "Profile Information" +#~ msgstr "Profilinformationen" + +#~ msgid "Username cannot be changed" +#~ msgstr "Der Benutzername kann nicht geändert werden" -#: app/templates/timer/calendar.html:320 -msgid "Create New Entry" -msgstr "Neuen Eintrag erstellen" +#~ msgid "Required for email notifications" +#~ msgstr "Erforderlich für E-Mail-Benachrichtigungen" -#: app/templates/timer/calendar.html:324 -msgid "Focus Filter" -msgstr "Fokus-Filter" +#~ msgid "Notification Preferences" +#~ msgstr "Benachrichtigungseinstellungen" -#: app/templates/timer/calendar.html:328 -msgid "Clear All Filters" -msgstr "Alle Filter löschen" +#~ msgid "Enable Email Notifications" +#~ msgstr "Aktivieren Sie E-Mail-Benachrichtigungen" + +#~ msgid "Master switch for all email notifications" +#~ msgstr "Hauptschalter für alle E-Mail-Benachrichtigungen" + +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Benachrichtigungen über überfällige Rechnungen" -#: app/templates/timer/calendar.html:332 -msgid "Close Modal" -msgstr "Modal schließen" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Benachrichtigungen über Aufgabenzuweisungen" -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "Diese Hilfe anzeigen" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Kommentar- und Erwähnungsbenachrichtigungen" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "Verstanden!" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "Wöchentliche Zeitübersicht per E-Mail" -#: app/templates/timer/calendar.html:422 -msgid "Failed to load events" -msgstr "Ereignisse konnten nicht geladen werden" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "Erinnerung, am Ende des Tages Zeit zu erfassen" -#: app/templates/timer/calendar.html:436 -msgid "Please select a project for new entries" -msgstr "Bitte Projekt für neue Einträge auswählen" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "Erinnerungszeit (Ihre Zeitzone)" -#: app/templates/timer/calendar.html:529 -msgid "Please select a project first" -msgstr "Bitte zuerst ein Projekt auswählen" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "In-App-Erinnerungen (Benachrichtigungen)" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "Nur abrechenbare Einträge werden angezeigt" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Intelligente Benachrichtigungen auf diesem Gerät aktivieren" -#: app/templates/timer/calendar.html:734 -msgid "Entry created successfully" -msgstr "Eintrag erfolgreich erstellt" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" +#~ "Erinnerung, wenn heute keine Zeit " +#~ "erfasst wurde (verwendet die Stunde aus" +#~ " den App-Einstellungen oder die unten" +#~ " angegebene Überschreibung)" + +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" +#~ "Benachrichtigung, wenn ein Timer länger " +#~ "als der konfigurierte Schwellenwert läuft" + +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "Tagesabschluss-Zusammenfassung (heute erfasste Stunden)" + +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "Browser-Benachrichtigungen verwenden, wenn Berechtigung erteilt wurde" + +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "Kein-Erfassungs-Erinnerungsstunde (optionale Überschreibung, HH:MM)" + +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "Zusammenfassungsstunde (optionale Überschreibung, HH:MM)" + +#~ msgid "Display Preferences" +#~ msgstr "Anzeigeeinstellungen" + +#~ msgid "System Default" +#~ msgstr "Systemstandard" + +#~ msgid "Time Rounding Preferences" +#~ msgstr "Zeitrundungseinstellungen" + +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Konfigurieren Sie, wie Ihre Zeiteinträge " +#~ "gerundet werden. Dies wirkt sich darauf" +#~ " aus, wie die Dauer berechnet wird," +#~ " wenn Sie Timer stoppen." -#: app/templates/timer/calendar.html:744 -msgid "Failed to create entry" -msgstr "Eintrag konnte nicht erstellt werden" +#~ msgid "Enable Time Rounding" +#~ msgstr "Aktivieren Sie die Zeitrundung" -#: app/templates/timer/calendar.html:767 -msgid "Entry updated" -msgstr "Eintrag aktualisiert" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Runden Sie Zeiteinträge auf konfigurierte Intervalle" -#: app/templates/timer/calendar.html:771 -msgid "Failed to update entry" -msgstr "Eintrag konnte nicht aktualisiert werden" +#~ msgid "Rounding Interval" +#~ msgstr "Rundungsintervall" -#: app/templates/timer/calendar.html:828 -msgid "Are you sure you want to delete this entry?" -msgstr "Möchten Sie diesen Eintrag wirklich löschen?" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "Zeiteinträge werden auf dieses Intervall gerundet" -#: app/templates/timer/calendar.html:829 -msgid "Delete Entry" -msgstr "Eintrag löschen" +#~ msgid "Rounding Method" +#~ msgstr "Rundungsmethode" -#: app/templates/timer/calendar.html:890 -msgid "Automatic Timer" -msgstr "Automatischer Timer" +#~ msgid "Overtime Settings" +#~ msgstr "Überstundeneinstellungen" -#: app/templates/timer/calendar.html:931 -msgid "Entry deleted" -msgstr "Eintrag gelöscht" +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" +#~ "Wählen Sie, ob Überstunden täglich oder" +#~ " wöchentlich berechnet werden, und legen" +#~ " Sie Ihre Standardstunden entsprechend " +#~ "fest." + +#~ msgid "Calculate overtime by" +#~ msgstr "Überstunden berechnen nach" + +#~ msgid "Daily hours" +#~ msgstr "Tägliche Stunden" + +#~ msgid "Weekly hours" +#~ msgstr "Wöchentliche Stunden" + +#~ msgid "Standard Hours Per Day" +#~ msgstr "Standardstunden pro Tag" + +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Normalerweise 8 Stunden für einen Vollzeitjob" + +#~ msgid "Standard Hours Per Week" +#~ msgstr "Standardstunden pro Woche" + +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "z. B. 20 für eine Teilzeitwoche, 40 für Vollzeit" + +#~ msgid "How it works" +#~ msgstr "Wie es funktioniert" + +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "Wenn Sie mehr als Ihre Standardstunden" +#~ " pro Tag arbeiten, wird die " +#~ "zusätzliche Zeit in Berichten und " +#~ "Analysen als Überstunden erfasst." + +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" +#~ "Überstunden werden wöchentlich berechnet: Alle" +#~ " Stunden über Ihre Wochenarbeitsstunden " +#~ "hinaus gelten als Überstunden. Geeignet " +#~ "für Verträge auf Basis wöchentlicher " +#~ "Stunden." + +#~ msgid "Count weekend hours in overtime" +#~ msgstr "Wochenentstunden als Überstunden zählen" + +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" +#~ "Wenn deaktiviert, werden alle am Samstag" +#~ " oder Sonntag geleisteten Stunden immer " +#~ "als Überstunden gezählt." + +#~ msgid "Regional Settings" +#~ msgstr "Regionale Einstellungen" + +#~ msgid "Use system default" +#~ msgstr "Systemstandard verwenden" + +#~ msgid "Time Format" +#~ msgstr "Zeitformat" + +#~ msgid "Week Starts On" +#~ msgstr "Die Woche beginnt am" + +#~ msgid "Sunday" +#~ msgstr "Sonntag" + +#~ msgid "Monday" +#~ msgstr "Montag" + +#~ msgid "Saturday" +#~ msgstr "Samstag" + +#~ msgid "Calendar default view" +#~ msgstr "Kalender-Standardansicht" + +#~ msgid "Remember last view" +#~ msgstr "Letzte Ansicht merken" + +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" +#~ "Die Support-Sichtbarkeit (Ausblenden der " +#~ "Spenden-/Support-Benutzeroberfläche) wird systemweit" +#~ " von Administratoren unter Admin → " +#~ "Einstellungen konfiguriert." + +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" +#~ "Administratoren können einen Schlüssel kaufen," +#~ " um diese Hinweise auszublenden:" + +#~ msgid "Support & Purchase Key" +#~ msgstr "Support & Lizenzschlüssel kaufen" + +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "Die Zeitrundung ist deaktiviert. Alle " +#~ "Zeiten werden genau so aufgezeichnet, " +#~ "wie sie verfolgt wurden." + +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "" +#~ "Keine Rundung – Zeiten werden genau " +#~ "so aufgezeichnet, wie sie verfolgt " +#~ "wurden." + +#~ msgid "Actual time:" +#~ msgstr "Tatsächliche Zeit:" + +#~ msgid "Rounded:" +#~ msgstr "Gerundet:" + +#~ msgid "With " +#~ msgstr "Mit" + +#~ msgid " minute intervals" +#~ msgstr "Minutenintervalle" + +#~ msgid "Create Weekly Goal" +#~ msgstr "Erstellen Sie ein wöchentliches Ziel" + +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Erstellen Sie ein wöchentliches Zeitziel" + +#~ msgid "Set a target for hours to work this week" +#~ msgstr "Setzen Sie sich für diese Woche ein Ziel für die Arbeitsstunden" + +#~ msgid "Target Hours" +#~ msgstr "Zielstunden" -#: app/templates/timer/calendar.html:937 -msgid "Failed to delete entry" -msgstr "Eintrag konnte nicht gelöscht werden" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "Wie viele Stunden möchten Sie diese Woche arbeiten?" -#: app/templates/timer/calendar.html:955 -msgid "Export started" -msgstr "Export gestartet" +#~ msgid "Week Start Date" +#~ msgstr "Startdatum der Woche" -#: app/templates/timer/calendar.html:966 -msgid "No recurring blocks yet" -msgstr "Noch keine wiederkehrenden Blöcke" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "" +#~ "Lassen Sie das Feld leer, um die" +#~ " aktuelle Woche zu verwenden (beginnend " +#~ "am Montag)." -#: app/templates/timer/calendar.html:979 -msgid "Unknown Project" -msgstr "Unbekanntes Projekt" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "Wochenenden ausschließen (5-Tage-Arbeitswoche)" -#: app/templates/timer/calendar.html:997 -msgid "Failed to load recurring blocks" -msgstr "Wiederkehrende Blöcke konnten nicht geladen werden" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" +#~ "Wenn aktiviert, zählt das Ziel nur " +#~ "Montag bis Freitag. Die Woche endet " +#~ "am Freitag statt am Sonntag." -#: app/templates/timer/calendar.html:1039 -msgid "No events in this period" -msgstr "Keine Ereignisse in diesem Zeitraum" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Optionale Notizen zu Ihrem Ziel..." -#: app/templates/timer/calendar.html:1072 -msgid "Failed to load agenda view" -msgstr "Tagesordnungsansicht konnte nicht geladen werden" +#~ msgid "Quick Presets" +#~ msgstr "Schnelle Voreinstellungen" -#: app/templates/timer/calendar.html:1104 -msgid "Failed to load event details" -msgstr "Ereignisdetails konnten nicht geladen werden" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Tipps zum Setzen von Zielen" -#: app/templates/timer/calendar.html:1115 -msgid "Are you sure you want to delete this recurring block?" -msgstr "Möchten Sie diesen wiederkehrenden Block wirklich löschen?" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "" +#~ "Seien Sie realistisch: Denken Sie an " +#~ "Feiertage, Besprechungen und andere " +#~ "Verpflichtungen" -#: app/templates/timer/calendar.html:1117 -msgid "Delete Recurring Block" -msgstr "Wiederkehrenden Block löschen" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "Beginnen Sie konservativ: Sie können Ihr Ziel später jederzeit anpassen" -#: app/templates/timer/calendar.html:1133 -msgid "Recurring block deleted" -msgstr "Wiederkehrender Block gelöscht" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" +#~ "Verfolgen Sie den Fortschritt: Überprüfen " +#~ "Sie regelmäßig Ihr Dashboard, um auf " +#~ "dem Laufenden zu bleiben" -#: app/templates/timer/calendar.html:1136 -msgid "Failed to delete recurring block" -msgstr "Wiederkehrender Block konnte nicht gelöscht werden" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "" +#~ "Typische Vollzeitbeschäftigung: 40 Stunden pro" +#~ " Woche (8 Stunden/Tag, 5 Tage)" -#: app/templates/timer/calendar.html:1147 -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Neue Startzeit eingeben (JJJJ-MM-TT SS:MM):" - -#: app/templates/timer/calendar.html:1180 -msgid "Entry duplicated successfully" -msgstr "Eintrag erfolgreich dupliziert" - -#: app/templates/timer/calendar.html:1186 -msgid "Failed to duplicate entry" -msgstr "Eintrag konnte nicht dupliziert werden" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "Zu heute gesprungen" - -#: app/templates/timer/calendar.html:1413 -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "💡 Drücken Sie ? für Tastaturkürzel" - -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -msgid "Edit Time Entry" -msgstr "Zeiteintrag bearbeiten" - -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "Diese Aktualisierungen ändern diesen Zeiteintrag dauerhaft." - -#: app/templates/timer/edit_timer.html:106 -msgid "Confirm Changes" -msgstr "Änderungen bestätigen" - -#: app/templates/timer/edit_timer.html:107 -msgid "Confirm & Save" -msgstr "Bestätigen & Speichern" - -#: app/templates/timer/edit_timer.html:188 -msgid "Admin Mode" -msgstr "Admin-Modus" - -#: app/templates/timer/edit_timer.html:204 -msgid "Admin Mode:" -msgstr "Admin-Modus:" - -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "Sie können alle Felder dieses Zeiteintrags bearbeiten, einschließlich Projekt, Aufgabe, Start-/Endzeiten und Quelle." - -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "Sie können das Projekt, die Aufgabe, die Start- und Endzeiten sowie die Pause dieses Eintrags bearbeiten." - -#: app/templates/timer/edit_timer.html:238 -msgid "Select the project this time entry belongs to" -msgstr "Projekt auswählen, zu dem dieser Zeiteintrag gehört" - -#: app/templates/timer/edit_timer.html:242 -msgid "Task (Optional)" -msgstr "Aufgabe (optional)" - -#: app/templates/timer/edit_timer.html:252 -msgid "Select a specific task within the project" -msgstr "Bestimmte Aufgabe innerhalb des Projekts auswählen" - -#: app/templates/timer/edit_timer.html:264 -msgid "When the work started" -msgstr "Wann die Arbeit begann" - -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "Zeitpunkt, zu dem die Arbeit begann" - -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "Wann die Arbeit endete (leer lassen, wenn noch laufend)" - -#: app/templates/timer/edit_timer.html:292 -msgid "Time the work ended" -msgstr "Zeitpunkt der Arbeitsbeendigung" - -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "Pausendauer (HH:MM). Wird vom Gesamtwert abgezogen, um die gearbeitete Dauer zu erhalten." - -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -msgid "Automatic" -msgstr "Automatisch" - -#: app/templates/timer/edit_timer.html:315 -msgid "How this entry was created" -msgstr "Wie dieser Eintrag erstellt wurde" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -msgid "Duration:" -msgstr "Dauer:" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -msgid "Describe what you worked on" -msgstr "Woran haben Sie gearbeitet?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "tag1, tag2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "Tags mit Kommas trennen" - -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -msgid "Internal invoice reference" -msgstr "Interne Rechnungsreferenz" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -msgid "Reference to internal invoice number" -msgstr "Referenz zur internen Rechnungsnummer" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -msgid "Reason for Change" -msgstr "Grund für die Änderung" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "Optional, aber empfohlen" - -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "z. B. Korrigierte Dauer, aktualisierte Projektzuweisung usw." - -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "Erklären Sie, warum Sie diese Änderungen vornehmen" - -#: app/templates/timer/edit_timer.html:412 -msgid "Task:" -msgstr "Aufgabe:" - -#: app/templates/timer/edit_timer.html:417 -msgid "Start:" -msgstr "Start:" - -#: app/templates/timer/edit_timer.html:421 -msgid "End:" -msgstr "Ende:" - -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "Eintragsdetails" - -#: app/templates/timer/edit_timer.html:547 -msgid "Admin Notice" -msgstr "Admin-Hinweis" - -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "Als Administrator haben Sie volle Bearbeitungsrechte für diesen Zeiteintrag. Änderungen werden zu Prüfzwecken protokolliert." - -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Doppelter Eintrag" - -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Doppelter Zeiteintrag" - -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Zeit manuell protokollieren" - -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Erstellen Sie eine Kopie eines vorherigen Eintrags mit neuen Zeiten" - -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Erstellen Sie einen neuen Zeiteintrag" - -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Eintrag duplizieren:" - -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Original:" - -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "Zu" - -#: app/templates/timer/manual_entry.html:57 -msgid "Project & task" -msgstr "Projekt & Aufgabe" - -#: app/templates/timer/manual_entry.html:92 -msgid "Date & time" -msgstr "Datum & Uhrzeit" - -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "Gearbeitete Zeit" - -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "Optional: HH:MM für die Dauer eingeben. Sie können dies mit Startdatum/-uhrzeit kombinieren, um Zeit an einem bestimmten Tag zu erfassen." - -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "Pause basierend auf der Dauer vorschlagen (z. B. >6h: 30 Min., >9h: 45 Min.)" - -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest" -msgstr "Vorschlagen" - -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "Optional: Pausendauer (HH:MM). Wird von der Gesamtzeit abgezogen, um die gearbeitete Dauer zu erhalten." - -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "Sitzung ist möglicherweise abgelaufen. Bitte aktualisieren Sie die Seite und versuchen Sie es erneut." - -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "Projekt nicht gefunden oder inaktiv" - -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "Woran haben Sie gearbeitet?" - -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "Zeiteinträge exportieren" - -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "Generiert am" - -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "Alle Zeiteinträge anzeigen und verwalten" - -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "Bezahlte Stunden" - -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -msgid "Apply filters" -msgstr "Filter anwenden" - -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "Filter ein-/ausblenden" - -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "Zahlungsstatus" - -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "Abrechnungsstatus" - -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "In Notizen und Tags suchen..." - -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "Ausgewählte Zeiteinträge löschen" - -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "Löschgrund" - -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "z. B. Doppelter Eintrag, falsche Zeit usw." - -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "Ausgewählte Einträge als bezahlt/unbezahlt markieren" - -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "z. B. Rechnungsnummer oder Zahlungsreferenz" - -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "Bitte wählen Sie mindestens einen Zeiteintrag aus" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" +#~ "Verwenden Sie „Wochenenden ausschließen“ für" +#~ " eine 5-Tage-Arbeitswoche (Montag-Freitag)" +#~ " statt 7 Tage" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "Zeiteintrag/Zeiteinträge" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Wöchentliches Ziel bearbeiten" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Verfolgen Sie Ihre Zeit mit einem visuellen Timer" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Wöchentliches Zeitziel bearbeiten" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Voraussichtliche Fertigstellung" +#~ msgid "Week Period" +#~ msgstr "Wochenzeitraum" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Berechnen..." +#~ msgid "Current Progress" +#~ msgstr "Aktueller Fortschritt" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "Basierend auf der durchschnittlichen Sitzungsdauer" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Möchten Sie dieses Ziel wirklich löschen?" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Kein aktiver Timer. Beginnen Sie unten mit einem!" +#~ msgid "Delete Goal" +#~ msgstr "Ziel löschen" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Neuen Timer starten" +#~ msgid "Weekly Time Goals" +#~ msgstr "Wöchentliche Zeitziele" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Fügen Sie Notizen zu dem hinzu, woran Sie gerade arbeiten ..." +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Legen Sie Ihre wöchentlichen Stundenziele fest und verfolgen Sie diese" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "Oder verwenden Sie eine Vorlage" +#~ msgid "New Goal" +#~ msgstr "Neues Ziel" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "Aktuelle Projekte" +#~ msgid "Total Goals" +#~ msgstr "Gesamtziele" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "Heutige Statistiken" +#~ msgid "Success Rate" +#~ msgstr "Erfolgsquote" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "Eintrag anzeigen" +#~ msgid "Current Week Goal" +#~ msgstr "Aktuelles Wochenziel" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "Zeiteintragsdetails anzeigen" +#~ msgid "Remaining Hours" +#~ msgstr "Verbleibende Stunden" -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "Projekt & Kunde" +#~ msgid "Days Remaining" +#~ msgstr "Verbleibende Tage" -#: app/templates/timer/view_timer.html:104 -msgid "Approval" -msgstr "Genehmigung" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Durchschnittlich benötigte Stunden/Tag" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "Status & Abrechnung" +#~ msgid "Edit Goal" +#~ msgstr "Ziel bearbeiten" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "Supporter-Abzeichen: Bestätigen Sie Ihren Schlüssel und vielen Dank für die Finanzierung der Entwicklung." +#~ msgid "No goal set for this week" +#~ msgstr "Für diese Woche ist kein Ziel festgelegt" -#: app/templates/user/license.html:12 -msgid "License status" -msgstr "Lizenzstatus" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "" +#~ "Erstellen Sie ein wöchentliches Zeitziel, " +#~ "um Ihren Fortschritt zu verfolgen" -#: app/templates/user/license.html:16 -msgid "Supporter license active" -msgstr "Supporter-Lizenz aktiv" +#~ msgid "Goal History" +#~ msgstr "Torverlauf" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "Vielen Dank für Ihre Unterstützung von TimeTracker. Ihr Abzeichen bestätigt diese Instanz als Supporter — keine Funktionen sind gesperrt." +#~ msgid "Target" +#~ msgstr "Ziel" -#: app/templates/user/license.html:22 -msgid "Not activated" -msgstr "Nicht aktiviert" +#~ msgid "Weekly Goal Details" +#~ msgstr "Wöchentliche Zieldetails" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "Erwerben Sie eine Supporter-Lizenz (€25), um das Supporter-Abzeichen für diese Instanz freizuschalten. Die App bleibt in jedem Fall vollständig kostenlos." +#~ msgid "5-day work week" +#~ msgstr "5-Tage-Arbeitswoche" -#: app/templates/user/license.html:35 -msgid "Enter license key" -msgstr "Lizenzschlüssel eingeben" +#~ msgid "Daily Breakdown" +#~ msgstr "Tägliche Aufschlüsselung" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "Fügen Sie den Lizenzschlüssel ein, den Sie nach dem Kauf per E-Mail erhalten haben." +#~ msgid "excluded" +#~ msgstr "ausgeschlossen" -#: app/templates/user/license.html:40 -msgid "License key" -msgstr "Lizenzschlüssel" +#~ msgid "Time Entries This Week" +#~ msgstr "Zeiteinträge diese Woche" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "Schlüssel hier einfügen" +#~ msgid "No Project" +#~ msgstr "Kein Projekt" -#: app/templates/user/license.html:46 -msgid "Validate" -msgstr "Validieren" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Für diese Woche wurden noch keine Zeiteinträge erfasst" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "Benötigen Sie einen Schlüssel?" +#~ msgid "Workforce Governance" +#~ msgstr "Belegschaftssteuerung" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "Einen Lizenzschlüssel kaufen" +#~ msgid "Reference date" +#~ msgstr "Referenzdatum" -#: app/templates/user/license.html:57 -msgid "Back to Settings" -msgstr "Zurück zu Einstellungen" +#~ msgid "Create/Get Period" +#~ msgstr "Zeitraum erstellen/abrufen" -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Profil" +#~ msgid "Start date" +#~ msgstr "Startdatum" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "Im Gange" +#~ msgid "End date" +#~ msgstr "Enddatum" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Alle Zeiteinträge anzeigen" +#~ msgid "Exports" +#~ msgstr "Exporte" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "Keine aktuellen Zeiteinträge" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "Gehaltsabrechnung, Kapazitäts- und Compliance-Exporte herunterladen" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Verwalten Sie Ihre Kontoeinstellungen und -präferenzen" +#~ msgid "Payroll CSV" +#~ msgstr "Gehaltsabrechnungs-CSV" -#: app/templates/user/settings.html:14 -msgid "Support & Community" -msgstr "Support & Community" +#~ msgid "Capacity CSV" +#~ msgstr "Kapazitäts-CSV" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "TimeTracker ist kostenlos und Open Source. Die Finanzierung kommt aus freiwilligen Spenden und Supporter-Lizenzen — nie durch das Sperren von Funktionen." +#~ msgid "Locked Periods CSV" +#~ msgstr "Gesperrte Zeiträume CSV" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "Diese Instanz hat bereits eine Supporter-Lizenz. Vielen Dank — Sie können jederzeit noch spenden oder die App teilen." +#~ msgid "Audit Events CSV" +#~ msgstr "Audit-Ereignisse CSV" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "Wenn die App Ihnen Zeit spart, können Sie spenden oder eine Supporter-Lizenz erwerben (€25). Eine Lizenz zeigt ein Supporter-Abzeichen; sie ändert nichts an dem, was Sie nutzen können." +#~ msgid "Timesheet Periods" +#~ msgstr "Stundenzeiträume" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "Lizenz & Supporter-Schlüssel" +#~ msgid "Submit" +#~ msgstr "Einreichen" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "Kaufabschluss auf timetracker.drytrix.com" +#~ msgid "No timesheet periods yet." +#~ msgstr "Noch keine Stundenzeiträume." -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Profilinformationen" +#~ msgid "Leave Balances" +#~ msgstr "Urlaubsguthaben" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "Der Benutzername kann nicht geändert werden" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "Angesammelte Überstunden (laufendes Jahr)" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Erforderlich für E-Mail-Benachrichtigungen" +#~ msgid "Take as paid leave" +#~ msgstr "Als bezahlten Urlaub nehmen" -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Benachrichtigungseinstellungen" +#~ msgid "Allowance" +#~ msgstr "Zulage" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Aktivieren Sie E-Mail-Benachrichtigungen" +#~ msgid "Used" +#~ msgstr "Verwendet" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Hauptschalter für alle E-Mail-Benachrichtigungen" +#~ msgid "No leave types configured." +#~ msgstr "Keine Abwesenheitstypen konfiguriert." -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Benachrichtigungen über überfällige Rechnungen" +#~ msgid "Time-Off Requests" +#~ msgstr "Urlaubsanträge" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Benachrichtigungen über Aufgabenzuweisungen" +#~ msgid "Select leave type" +#~ msgstr "Abwesenheitstyp auswählen" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Kommentar- und Erwähnungsbenachrichtigungen" +#~ msgid "Requested hours" +#~ msgstr "Angeforderte Stunden" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "Wöchentliche Zeitübersicht per E-Mail" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Verfügbare Überstunden (laufendes Jahr)" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "Erinnerung, am Ende des Tages Zeit zu erfassen" +#~ msgid "Comment" +#~ msgstr "Kommentar" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "Erinnerungszeit (Ihre Zeitzone)" +#~ msgid "Submit time-off request" +#~ msgstr "Urlaubsantrag einreichen" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "In-App-Erinnerungen (Benachrichtigungen)" +#~ msgid "Capacity" +#~ msgstr "Kapazität" -#: app/templates/user/settings.html:155 -msgid "Enable smart notifications on this device" -msgstr "Intelligente Benachrichtigungen auf diesem Gerät aktivieren" +#~ msgid "Expected" +#~ msgstr "Erwartet" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "Erinnerung, wenn heute keine Zeit erfasst wurde (verwendet die Stunde aus den App-Einstellungen oder die unten angegebene Überschreibung)" +#~ msgid "Allocated" +#~ msgstr "Zugewiesen" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "Benachrichtigung, wenn ein Timer länger als der konfigurierte Schwellenwert läuft" +#~ msgid "Time Off" +#~ msgstr "Freizeit" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "Tagesabschluss-Zusammenfassung (heute erfasste Stunden)" +#~ msgid "Utilization %" +#~ msgstr "Auslastung %" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "Browser-Benachrichtigungen verwenden, wenn Berechtigung erteilt wurde" +#~ msgid "No capacity data available." +#~ msgstr "Keine Kapazitätsdaten verfügbar." -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "Kein-Erfassungs-Erinnerungsstunde (optionale Überschreibung, HH:MM)" +#~ msgid "Timesheet Policy" +#~ msgstr "Zeiterfassungsrichtlinie" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "Zusammenfassungsstunde (optionale Überschreibung, HH:MM)" +#~ msgid "Auto lock days" +#~ msgstr "Automatische Sperrtage" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Anzeigeeinstellungen" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "Benutzer-IDs der Genehmiger (kommagetrennt)" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "Systemstandard" +#~ msgid "Enable multi-level approval" +#~ msgstr "Mehrstufige Genehmigung aktivieren" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Zeitrundungseinstellungen" +#~ msgid "Require rejection comment" +#~ msgstr "Ablehnungskommentar erforderlich" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "Konfigurieren Sie, wie Ihre Zeiteinträge gerundet werden. Dies wirkt sich darauf aus, wie die Dauer berechnet wird, wenn Sie Timer stoppen." +#~ msgid "Enable admin override" +#~ msgstr "Admin-Überschreibung aktivieren" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Aktivieren Sie die Zeitrundung" +#~ msgid "Save policy" +#~ msgstr "Richtlinie speichern" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Runden Sie Zeiteinträge auf konfigurierte Intervalle" +#~ msgid "Leave Types" +#~ msgstr "Abwesenheitstypen" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Rundungsintervall" +#~ msgid "Annual allowance (hours)" +#~ msgstr "Jahresurlaub (Stunden)" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "Zeiteinträge werden auf dieses Intervall gerundet" +#~ msgid "Accrual hours per month" +#~ msgstr "Angesammelte Stunden pro Monat" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Rundungsmethode" +#~ msgid "Paid leave" +#~ msgstr "Bezahlter Urlaub" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Überstundeneinstellungen" +#~ msgid "Add leave type" +#~ msgstr "Abwesenheitstyp hinzufügen" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "Wählen Sie, ob Überstunden täglich oder wöchentlich berechnet werden, und legen Sie Ihre Standardstunden entsprechend fest." +#~ msgid "disabled" +#~ msgstr "deaktiviert" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "Überstunden berechnen nach" +#~ msgid "Company Holidays" +#~ msgstr "Unternehmens-Feiertage" -#: app/templates/user/settings.html:328 -msgid "Daily hours" -msgstr "Tägliche Stunden" +#~ msgid "Holiday name" +#~ msgstr "Feiertagsname" -#: app/templates/user/settings.html:334 -msgid "Weekly hours" -msgstr "Wöchentliche Stunden" +#~ msgid "Region (optional)" +#~ msgstr "Region (optional)" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Standardstunden pro Tag" +#~ msgid "Add holiday" +#~ msgstr "Feiertag hinzufügen" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Normalerweise 8 Stunden für einen Vollzeitjob" +#~ msgid "No holidays configured." +#~ msgstr "Keine Feiertage konfiguriert." -#: app/templates/user/settings.html:357 -msgid "Standard Hours Per Week" -msgstr "Standardstunden pro Woche" +#~ msgid "hours (max from overtime)" +#~ msgstr "Stunden (Maximum aus Überstunden)" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "z. B. 20 für eine Teilzeitwoche, 40 für Vollzeit" +#~ msgid "Support" +#~ msgstr "Unterstützung" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "Wie es funktioniert" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" +#~ "Dieser Bericht wurde schnell generiert. " +#~ "Wenn TimeTracker Ihnen Zeit spart, " +#~ "erwägen Sie die Unterstützung seiner " +#~ "Entwicklung." -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "Wenn Sie mehr als Ihre Standardstunden pro Tag arbeiten, wird die zusätzliche Zeit in Berichten und Analysen als Überstunden erfasst." - -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "Überstunden werden wöchentlich berechnet: Alle Stunden über Ihre Wochenarbeitsstunden hinaus gelten als Überstunden. Geeignet für Verträge auf Basis wöchentlicher Stunden." - -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "Wochenentstunden als Überstunden zählen" - -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "Wenn deaktiviert, werden alle am Samstag oder Sonntag geleisteten Stunden immer als Überstunden gezählt." - -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "Regionale Einstellungen" - -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "Systemstandard verwenden" - -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Zeitformat" - -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "Die Woche beginnt am" - -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "Sonntag" - -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "Montag" - -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "Samstag" - -#: app/templates/user/settings.html:470 -msgid "Calendar default view" -msgstr "Kalender-Standardansicht" - -#: app/templates/user/settings.html:474 -msgid "Remember last view" -msgstr "Letzte Ansicht merken" - -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "Die Support-Sichtbarkeit (Ausblenden der Spenden-/Support-Benutzeroberfläche) wird systemweit von Administratoren unter Admin → Einstellungen konfiguriert." - -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "Administratoren können einen Schlüssel kaufen, um diese Hinweise auszublenden:" - -#: app/templates/user/settings.html:487 -msgid "Support & Purchase Key" -msgstr "Support & Lizenzschlüssel kaufen" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "Die Zeitrundung ist deaktiviert. Alle Zeiten werden genau so aufgezeichnet, wie sie verfolgt wurden." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "Keine Rundung – Zeiten werden genau so aufgezeichnet, wie sie verfolgt wurden." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Tatsächliche Zeit:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Gerundet:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Mit" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "Minutenintervalle" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Erstellen Sie ein wöchentliches Ziel" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Erstellen Sie ein wöchentliches Zeitziel" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "Setzen Sie sich für diese Woche ein Ziel für die Arbeitsstunden" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Zielstunden" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "Wie viele Stunden möchten Sie diese Woche arbeiten?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Startdatum der Woche" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "Lassen Sie das Feld leer, um die aktuelle Woche zu verwenden (beginnend am Montag)." - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "Wochenenden ausschließen (5-Tage-Arbeitswoche)" - -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "Wenn aktiviert, zählt das Ziel nur Montag bis Freitag. Die Woche endet am Freitag statt am Sonntag." - -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Optionale Notizen zu Ihrem Ziel..." - -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "Schnelle Voreinstellungen" - -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Tipps zum Setzen von Zielen" - -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Seien Sie realistisch: Denken Sie an Feiertage, Besprechungen und andere Verpflichtungen" - -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Beginnen Sie konservativ: Sie können Ihr Ziel später jederzeit anpassen" - -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "Verfolgen Sie den Fortschritt: Überprüfen Sie regelmäßig Ihr Dashboard, um auf dem Laufenden zu bleiben" - -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Typische Vollzeitbeschäftigung: 40 Stunden pro Woche (8 Stunden/Tag, 5 Tage)" - -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "Verwenden Sie „Wochenenden ausschließen“ für eine 5-Tage-Arbeitswoche (Montag-Freitag) statt 7 Tage" - -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Wöchentliches Ziel bearbeiten" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Wöchentliches Zeitziel bearbeiten" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Wochenzeitraum" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Aktueller Fortschritt" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "Möchten Sie dieses Ziel wirklich löschen?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Ziel löschen" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Wöchentliche Zeitziele" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Legen Sie Ihre wöchentlichen Stundenziele fest und verfolgen Sie diese" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Neues Ziel" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Gesamtziele" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Erfolgsquote" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Aktuelles Wochenziel" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Verbleibende Stunden" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Verbleibende Tage" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Durchschnittlich benötigte Stunden/Tag" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Ziel bearbeiten" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "Für diese Woche ist kein Ziel festgelegt" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "Erstellen Sie ein wöchentliches Zeitziel, um Ihren Fortschritt zu verfolgen" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Torverlauf" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Ziel" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Wöchentliche Zieldetails" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "5-Tage-Arbeitswoche" - -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Tägliche Aufschlüsselung" - -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "ausgeschlossen" - -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Zeiteinträge diese Woche" - -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Kein Projekt" - -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Für diese Woche wurden noch keine Zeiteinträge erfasst" - -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "Belegschaftssteuerung" - -#: app/templates/workforce/dashboard.html:11 -msgid "Reference date" -msgstr "Referenzdatum" - -#: app/templates/workforce/dashboard.html:14 -msgid "Create/Get Period" -msgstr "Zeitraum erstellen/abrufen" - -#: app/templates/workforce/dashboard.html:29 -msgid "Start date" -msgstr "Startdatum" - -#: app/templates/workforce/dashboard.html:33 -msgid "End date" -msgstr "Enddatum" - -#: app/templates/workforce/dashboard.html:42 -msgid "Exports" -msgstr "Exporte" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "Gehaltsabrechnung, Kapazitäts- und Compliance-Exporte herunterladen" - -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "Gehaltsabrechnungs-CSV" - -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "Kapazitäts-CSV" - -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "Gesperrte Zeiträume CSV" - -#: app/templates/workforce/dashboard.html:50 -msgid "Audit Events CSV" -msgstr "Audit-Ereignisse CSV" - -#: app/templates/workforce/dashboard.html:57 -msgid "Timesheet Periods" -msgstr "Stundenzeiträume" - -#: app/templates/workforce/dashboard.html:70 -msgid "Submit" -msgstr "Einreichen" - -#: app/templates/workforce/dashboard.html:101 -msgid "No timesheet periods yet." -msgstr "Noch keine Stundenzeiträume." - -#: app/templates/workforce/dashboard.html:107 -msgid "Leave Balances" -msgstr "Urlaubsguthaben" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "Angesammelte Überstunden (laufendes Jahr)" - -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "Als bezahlten Urlaub nehmen" - -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "Zulage" - -#: app/templates/workforce/dashboard.html:122 -msgid "Used" -msgstr "Verwendet" - -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -msgid "No leave types configured." -msgstr "Keine Abwesenheitstypen konfiguriert." - -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "Urlaubsanträge" - -#: app/templates/workforce/dashboard.html:149 -msgid "Select leave type" -msgstr "Abwesenheitstyp auswählen" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -msgid "Requested hours" -msgstr "Angeforderte Stunden" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" +#~ "Sie scheinen offline zu sein. Stellen" +#~ " Sie die Verbindung wieder her, um" +#~ " Spenden- oder Checkout-Links zu " +#~ "öffnen." -#: app/templates/workforce/dashboard.html:159 -msgid "Available overtime (YTD)" -msgstr "Verfügbare Überstunden (laufendes Jahr)" +#~ msgid "Link copied to clipboard" +#~ msgstr "Link in die Zwischenablage kopiert" -#: app/templates/workforce/dashboard.html:164 -msgid "Comment" -msgstr "Kommentar" +#~ msgid "Could not copy link" +#~ msgstr "Link konnte nicht kopiert werden" -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "Urlaubsantrag einreichen" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" +#~ "Sie verwenden TimeTracker schon eine " +#~ "Weile aktiv. Wenn es Ihre Arbeit " +#~ "unterstützt, erwägen Sie, seine Entwicklung" +#~ " zu unterstützen." -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "Kapazität" +#~ msgid "Overpaid" +#~ msgstr "Überbezahlt" -#: app/templates/workforce/dashboard.html:209 -msgid "Expected" -msgstr "Erwartet" +#~ msgid "Cash" +#~ msgstr "Kasse" -#: app/templates/workforce/dashboard.html:210 -msgid "Allocated" -msgstr "Zugewiesen" +#~ msgid "Check" +#~ msgstr "Überprüfen" -#: app/templates/workforce/dashboard.html:211 -msgid "Time Off" -msgstr "Freizeit" +#~ msgid "Bank Transfer" +#~ msgstr "Banküberweisung" -#: app/templates/workforce/dashboard.html:213 -msgid "Utilization %" -msgstr "Auslastung %" +#~ msgid "Credit Card" +#~ msgstr "Kreditkarte" -#: app/templates/workforce/dashboard.html:227 -msgid "No capacity data available." -msgstr "Keine Kapazitätsdaten verfügbar." +#~ msgid "Debit Card" +#~ msgstr "Debitkarte" -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "Zeiterfassungsrichtlinie" +#~ msgid "Stripe" +#~ msgstr "Streifen" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "Automatische Sperrtage" +#~ msgid "Company Card" +#~ msgstr "Firmenkarte" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "Benutzer-IDs der Genehmiger (kommagetrennt)" +#~ msgid "Reimbursed" +#~ msgstr "Erstattet" -#: app/templates/workforce/dashboard.html:243 -msgid "Enable multi-level approval" -msgstr "Mehrstufige Genehmigung aktivieren" +#~ msgid "Processing" +#~ msgstr "Verarbeitung" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "Ablehnungskommentar erforderlich" +#~ msgid "80% Budget Warning" +#~ msgstr "80 % Budgetwarnung" -#: app/templates/workforce/dashboard.html:245 -msgid "Enable admin override" -msgstr "Admin-Überschreibung aktivieren" +#~ msgid "Budget Limit Reached" +#~ msgstr "Budgetlimit erreicht" -#: app/templates/workforce/dashboard.html:246 -msgid "Save policy" -msgstr "Richtlinie speichern" +#~ msgid "Info" +#~ msgstr "Info" -#: app/templates/workforce/dashboard.html:251 -msgid "Leave Types" -msgstr "Abwesenheitstypen" +#~ msgid "Authentication required." +#~ msgstr "Authentifizierung erforderlich." -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "Jahresurlaub (Stunden)" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "Modul '%(module)s' ist deaktiviert." -#: app/templates/workforce/dashboard.html:257 -msgid "Accrual hours per month" -msgstr "Angesammelte Stunden pro Monat" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" +#~ "Modul '%(module)s' ist deaktiviert. Aktivieren" +#~ " Sie es in den Einstellungen." -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "Bezahlter Urlaub" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Rechnungsnummer: %(num)s" -#: app/templates/workforce/dashboard.html:259 -msgid "Add leave type" -msgstr "Abwesenheitstyp hinzufügen" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "Ausgabedatum: %(date)s" -#: app/templates/workforce/dashboard.html:264 -msgid "disabled" -msgstr "deaktiviert" +#~ msgid "Due Date: %(date)s" +#~ msgstr "Fälligkeitsdatum: %(date)s" -#: app/templates/workforce/dashboard.html:277 -msgid "Company Holidays" -msgstr "Unternehmens-Feiertage" +#~ msgid "Quote For:" +#~ msgstr "Zitat für:" -#: app/templates/workforce/dashboard.html:280 -msgid "Holiday name" -msgstr "Feiertagsname" - -#: app/templates/workforce/dashboard.html:283 -msgid "Region (optional)" -msgstr "Region (optional)" +#~ msgid "Quote Details:" +#~ msgstr "Angebotsdetails:" -#: app/templates/workforce/dashboard.html:284 -msgid "Add holiday" -msgstr "Feiertag hinzufügen" +#~ msgid "Items:" +#~ msgstr "Artikel:" -#: app/templates/workforce/dashboard.html:296 -msgid "No holidays configured." -msgstr "Keine Feiertage konfiguriert." +#~ msgid "Total:" +#~ msgstr "Gesamt:" -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "Stunden (Maximum aus Überstunden)" - -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Unterstützung" - -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "Dieser Bericht wurde schnell generiert. Wenn TimeTracker Ihnen Zeit spart, erwägen Sie die Unterstützung seiner Entwicklung." - -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "Sie scheinen offline zu sein. Stellen Sie die Verbindung wieder her, um Spenden- oder Checkout-Links zu öffnen." - -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "Link in die Zwischenablage kopiert" - -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "Link konnte nicht kopiert werden" - -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "Sie verwenden TimeTracker schon eine Weile aktiv. Wenn es Ihre Arbeit unterstützt, erwägen Sie, seine Entwicklung zu unterstützen." - -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "Überbezahlt" - -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "Kasse" - -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Überprüfen" - -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Banküberweisung" - -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Kreditkarte" - -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Debitkarte" - -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Streifen" - -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Firmenkarte" - -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Erstattet" - -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Verarbeitung" - -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "80 % Budgetwarnung" - -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Budgetlimit erreicht" - -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Info" - -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "Authentifizierung erforderlich." - -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "Modul '%(module)s' ist deaktiviert." - -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "Modul '%(module)s' ist deaktiviert. Aktivieren Sie es in den Einstellungen." - -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "Rechnungsnummer: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "Ausgabedatum: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "Fälligkeitsdatum: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Zitat für:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Angebotsdetails:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Artikel:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Gesamt:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Bitte melden Sie sich an, um auf diese Seite zuzugreifen" +#~ msgid "Please log in to access this page" +#~ msgstr "Bitte melden Sie sich an, um auf diese Seite zuzugreifen" diff --git a/translations/en/LC_MESSAGES/messages.po b/translations/en/LC_MESSAGES/messages.po index 70b6cb9f..c9931232 100644 --- a/translations/en/LC_MESSAGES/messages.po +++ b/translations/en/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: en\n" @@ -14,26053 +14,17799 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 -msgid "Your session expired or the page was open too long. Please try again." +#: app/__init__.py:509 +msgid "Please log in to access the client portal." msgstr "" -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" +#: app/__init__.py:1056 app/__init__.py:1088 +msgid "Your session expired or the page was open too long. Please try again." msgstr "" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "Administrator access required" +#~ msgstr "" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "" +#~ msgid "Username is required" +#~ msgstr "" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "User already exists" +#~ msgstr "" -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "" +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "" +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "" -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "" +#~ msgid "Username already exists" +#~ msgstr "" -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "" +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "" -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "" +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "" -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "" +#~ msgid "Passwords do not match." +#~ msgstr "" -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "" -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "" +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "" -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "" +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "" +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "" -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "Settings updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "" +#~ msgid "Invalid code." +#~ msgstr "" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "Error saving settings" +#~ msgstr "" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "" +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "" +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "PDF layout updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "" +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "" +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "" -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "PDF layout reset to defaults" +#~ msgstr "" -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "Invalid page size" +#~ msgstr "" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Template not found for this page size" +#~ msgstr "" -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "" +#~ msgid "No file uploaded" +#~ msgstr "" -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "No file selected" +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "Could not import template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Template imported successfully" +#~ msgstr "" -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "Invoice not found" +#~ msgstr "" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "" +#~ msgid "Quote not found" +#~ msgstr "" -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "" +#~ msgid "No logo file selected" +#~ msgstr "" -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "" +#~ msgid "Invalid image file." +#~ msgstr "" -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "" +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "" -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "" -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "" +#~ msgid "Backup failed: archive not created" +#~ msgstr "" -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "" +#~ msgid "Invalid file type" +#~ msgstr "" -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "" -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "" -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "" +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "" +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "" -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "" +#~ msgid "Backup file not found." +#~ msgstr "" -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "" -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "" +#~ msgid "No backup file provided" +#~ msgstr "" -#: app/routes/admin.py:4362 -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "" -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "" +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "" -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "" +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "" +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "" +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "" +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "" +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "" -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "" +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "" -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "" -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "" -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "" +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "" -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "" +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "" +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "" -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "" -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "" +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "" +#~ msgid "OIDC configuration test completed" +#~ msgstr "" -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -msgid "HTML template content is required" -msgstr "" +#~ msgid "Template name is required" +#~ msgstr "" -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "" +#~ msgid "HTML template content is required" +#~ msgstr "" -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "" +#~ msgid "A template with this name already exists" +#~ msgstr "" -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "" +#~ msgid "Could not create email template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "" +#~ msgid "Email template created successfully" +#~ msgstr "" -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "" +#~ msgid "Email template updated successfully" +#~ msgstr "" -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "" +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "" +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "" -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "" -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "" +#~ msgid "Task name and project are required" +#~ msgstr "" -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "" +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "" -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "message" +#~ msgstr "" -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "" +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "You must change your password before continuing." +#~ msgstr "" -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "" +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "" -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" -#: app/routes/auth.py:213 -msgid "Reset your TimeTracker password" -msgstr "" +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Reset your TimeTracker password" +#~ msgstr "" -#: app/routes/auth.py:246 -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "" +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" -#: app/routes/auth.py:250 -msgid "Password reset is not available for this account." -msgstr "" +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "" -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "Password reset is not available for this account." +#~ msgstr "" -#: app/routes/auth.py:274 -msgid "Could not reset password due to a database error." -msgstr "" +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "Could not reset password due to a database error." +#~ msgstr "" -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "Invalid username format" +#~ msgstr "" -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "" +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "" +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "" +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "" +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "" +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" -#: app/routes/auth.py:551 app/routes/auth.py:558 -msgid "Your login session expired. Please sign in again." -msgstr "" +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -msgid "Invalid authentication code." -msgstr "" +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "" -#: app/routes/auth.py:625 -msgid "Two-factor authentication enabled." -msgstr "" +#~ msgid "Invalid authentication code." +#~ msgstr "" -#: app/routes/auth.py:628 -msgid "Could not enable two-factor authentication due to a database error." -msgstr "" +#~ msgid "Two-factor authentication enabled." +#~ msgstr "" -#: app/routes/auth.py:654 -msgid "Two-factor authentication disabled." -msgstr "" +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "" -#: app/routes/auth.py:657 -msgid "Could not disable two-factor authentication due to a database error." -msgstr "" +#~ msgid "Two-factor authentication disabled." +#~ msgstr "" -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "" +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "" -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "" +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "" -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "" +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "" -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "" +#~ msgid "Failed to save avatar on server." +#~ msgstr "" -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "" +#~ msgid "Profile updated successfully" +#~ msgstr "" -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "" -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "New password is required" +#~ msgstr "" -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "Current password is required" +#~ msgstr "" -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "Current password is incorrect" +#~ msgstr "" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "" +#~ msgid "Could not update password due to a database error." +#~ msgstr "" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "" +#~ msgid "Avatar removed" +#~ msgstr "" -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "" -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "" +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "" -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "" +#~ msgid "Event created successfully" +#~ msgstr "" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "" +#~ msgid "Failed to delete event" +#~ msgstr "" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "" +#~ msgid "Event deleted successfully" +#~ msgstr "" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "" -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "" -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "" +#~ msgid "Event resized successfully" +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "" -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "" -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "" +#~ msgid "Note added successfully" +#~ msgstr "" -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "" +#~ msgid "Error adding note" +#~ msgstr "" -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "" -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "" +#~ msgid "Note does not belong to this client" +#~ msgstr "" -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "" +#~ msgid "You do not have permission to edit this note" +#~ msgstr "" -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "" +#~ msgid "Error updating note" +#~ msgstr "" -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "" +#~ msgid "Note updated successfully" +#~ msgstr "" -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "" +#~ msgid "Error updating note: %(error)s" +#~ msgstr "" -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "" +#~ msgid "You do not have permission to delete this note" +#~ msgstr "" -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "" +#~ msgid "Error deleting note" +#~ msgstr "" -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "" +#~ msgid "Note deleted successfully" +#~ msgstr "" -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "" +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "" +#~ msgid "Access Denied" +#~ msgstr "" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "" +#~ msgid "403 Forbidden" +#~ msgstr "" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "" +#~ msgid "Page Not Found" +#~ msgstr "" -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "" -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "" +#~ msgid "Server Error" +#~ msgstr "" -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "" -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "" +#~ msgid "Your client account is inactive." +#~ msgstr "" -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "" +#~ msgid "Username and password are required." +#~ msgstr "" -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "" +#~ msgid "Invalid username or password." +#~ msgstr "" -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "" -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "" +#~ msgid "You have been logged out." +#~ msgstr "" -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "" +#~ msgid "Password is required." +#~ msgstr "" -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "" +#~ msgid "Could not set password due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "" -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "" +#~ msgid "Invoice not found." +#~ msgstr "" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "" +#~ msgid "Quote not found." +#~ msgstr "" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/client_portal.py:1382 -msgid "Unable to load report data." -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "" -#: app/routes/client_portal.py:1415 -msgid "Client Report" -msgstr "" +#~ msgid "Client Report" +#~ msgstr "" -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, python-format -msgid "Last %(days)s days" -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "" -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "" +#~ msgid "Summary" +#~ msgstr "" -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "" -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "" +#~ msgid "Paid" +#~ msgstr "" -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "" -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "" -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "" +#~ msgid "Project" +#~ msgstr "" -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "" +#~ msgid "Hours" +#~ msgstr "" -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "" +#~ msgid "Billable Hours" +#~ msgstr "" -#: app/routes/client_portal.py:1431 -msgid "Time by Date" -msgstr "" +#~ msgid "Time by Date" +#~ msgstr "" -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "" +#~ msgid "Date" +#~ msgstr "" -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "" +#~ msgid "Access denied" +#~ msgstr "" -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "" -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "" -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "" -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/clients.py:439 app/routes/clients.py:580 -msgid "You do not have access to this client." -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "" -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "" +#~ msgid "This portal username is already in use by another client." +#~ msgstr "" -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "" +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "" +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "" +#~ msgid "Portal username is not set for this client." +#~ msgstr "" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "" +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "" +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "" +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "" -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "" +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "" +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "" +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "" +#~ msgid "You do not have permission to archive clients" +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "" +#~ msgid "Client is already inactive" +#~ msgstr "" -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "" +#~ msgid "You do not have permission to activate clients" +#~ msgstr "" -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "" +#~ msgid "Client is already active" +#~ msgstr "" -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "" +#~ msgid "You do not have permission to delete clients" +#~ msgstr "" -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "" +#~ msgid "No clients selected for deletion" +#~ msgstr "" -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "" +#~ msgid "No clients were deleted" +#~ msgstr "" -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "" +#~ msgid "You do not have permission to change client status" +#~ msgstr "" -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "" +#~ msgid "No clients selected" +#~ msgstr "" -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "" +#~ msgid "Invalid status" +#~ msgstr "" -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "" +#~ msgid "No clients were updated" +#~ msgstr "" -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "" +#~ msgid "No file provided" +#~ msgstr "" -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "" +#~ msgid "File type not allowed" +#~ msgstr "" -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "" +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "" -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "" -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "" +#~ msgid "File not found" +#~ msgstr "" -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "" -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "" -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "" -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "" -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "" -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "" -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "" -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "" -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "" -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "" +#~ msgid "Comment updated successfully" +#~ msgstr "" -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "" -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "" -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "" -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "" -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "" -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "" -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "" -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "" -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "" -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "" -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "" -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "" +#~ msgid "Contact set as primary" +#~ msgstr "" -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "" -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "" -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" - -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "" - -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" - -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" - -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" - -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" - -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Label is required" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" - -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" - -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" - -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" - -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "" -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "" -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "" -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "" -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "" -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "" -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "" -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "" -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "" -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "" -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "" -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "" +#~ msgid "Expense category created successfully" +#~ msgstr "" -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "" -#: app/routes/expenses.py:824 -#, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "" -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "" +#~ msgid "Error updating expense category" +#~ msgstr "" -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "" -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "" +#~ msgid "Error deactivating expense category" +#~ msgstr "" -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "" +#~ msgid "Title is required" +#~ msgstr "" -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "" +#~ msgid "Category is required" +#~ msgstr "" -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "" +#~ msgid "Amount is required" +#~ msgstr "" -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "" +#~ msgid "Expense date is required" +#~ msgstr "" -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "" -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "" -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "" -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "" -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "" -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "" -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "" -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "" +#~ msgid "Please fill in all required fields" +#~ msgstr "" -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "" +#~ msgid "Expense updated successfully" +#~ msgstr "" -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "" +#~ msgid "Error updating expense" +#~ msgstr "" -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "" +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "" -#: app/routes/integrations.py:67 -msgid "Permission denied." -msgstr "" +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "" -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "Expense deleted successfully" +#~ msgstr "" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "Invalid status value" +#~ msgstr "" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "" -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "" -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "" -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "Error approving expense" +#~ msgstr "" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Rejection reason is required" +#~ msgstr "" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "" -#: app/routes/integrations.py:506 -msgid "Invalid action for this integration." -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "" -#: app/routes/integrations.py:513 -msgid "Linear API key is required." -msgstr "" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "Permission denied." +#~ msgstr "" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "Linear API key is required." +#~ msgstr "" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "" +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "" +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "" +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "" +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "" +#~ msgid "Advanced" +#~ msgstr "" -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "" +#~ msgid "Review" +#~ msgstr "" -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "Company" +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Webhooks" +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Projects" +#~ msgstr "" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Stock item created successfully." +#~ msgstr "" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Stock item updated successfully." +#~ msgstr "" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "" +#~ msgid "Stock item deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "" +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "" +#~ msgid "Warehouse created successfully." +#~ msgstr "" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "" +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/inventory.py:1817 -msgid "Supplier is required." -msgstr "" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/inventory.py:1822 -msgid "Supplier not found." -msgstr "" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/inventory.py:1827 -msgid "Order date is required." -msgstr "" +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/inventory.py:1908 -msgid "Could not create purchase order due to a database error." -msgstr "" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/inventory.py:2038 -msgid "Could not update purchase order due to a database error." -msgstr "" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "" -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "" +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:2079 -msgid "Could not update purchase order status due to a database error." -msgstr "" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "" -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "" -#: app/routes/inventory.py:2103 -msgid "Could not cancel purchase order due to a database error." -msgstr "" +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "" +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "" +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "" -#: app/routes/inventory.py:2131 -msgid "Could not delete purchase order due to a database error." -msgstr "" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "" +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "" -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:2175 -msgid "Could not receive purchase order due to a database error." -msgstr "" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "" -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "" +#~ msgid "Reservation cancelled successfully." +#~ msgstr "" -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Supplier created successfully." +#~ msgstr "" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Supplier updated successfully." +#~ msgstr "" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "" +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "" +#~ msgid "Supplier deleted successfully." +#~ msgstr "" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "" +#~ msgid "Supplier is required." +#~ msgstr "" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "" +#~ msgid "Supplier not found." +#~ msgstr "" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Order date is required." +#~ msgstr "" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Purchase order created successfully." +#~ msgstr "" -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "Purchase order updated successfully." +#~ msgstr "" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "" -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "" +#~ msgid "Purchase order marked as sent." +#~ msgstr "" -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "" -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "" +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "" -#: app/routes/invoices.py:749 -msgid "Only draft invoices can be deleted." -msgstr "" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "" -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "" +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "" -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "" -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "" +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "" -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "" -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "" +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "Invalid due date format" +#~ msgstr "" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Invalid tax rate format" +#~ msgstr "" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Selected project not found" +#~ msgstr "" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "" +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "" +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "" +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "" +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "" +#~ msgid "Invoice updated successfully" +#~ msgstr "" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "" +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "" -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "" -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "No invoices selected for deletion" +#~ msgstr "" -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "No invoices selected" +#~ msgstr "" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "" +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "Invoice marked as sent" +#~ msgstr "" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Invoice marked as paid" +#~ msgstr "" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "" +#~ msgid "Client is required." +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "" +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "" +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "" +#~ msgid "Project must belong to the same client." +#~ msgstr "" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "" +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "" +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "" +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Key and label are required" +#~ msgstr "" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "" +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "" +#~ msgid "System columns cannot be deleted" +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "Timer stopped successfully" +#~ msgstr "" -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "" +#~ msgid "Lead created successfully" +#~ msgstr "" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "" +#~ msgid "Lead updated successfully" +#~ msgstr "" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "" +#~ msgid "Lead has already been converted" +#~ msgstr "" -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "" +#~ msgid "Lead converted to client successfully" +#~ msgstr "" -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "" +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "" -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "" +#~ msgid "Lead marked as lost" +#~ msgstr "" -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "" +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "" +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "" +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "" +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "" +#~ msgid "Mileage entry created successfully" +#~ msgstr "" -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "" +#~ msgid "Error creating mileage entry" +#~ msgstr "" -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "" -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "" -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "" -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "" -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "" +#~ msgid "Error updating mileage entry" +#~ msgstr "" -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "" +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "" -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "" -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "" +#~ msgid "Error deleting mileage entry" +#~ msgstr "" -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "" -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "" -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "" -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "" +#~ msgid "No mileage entries selected" +#~ msgstr "" -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Error approving mileage entry" +#~ msgstr "" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "Mileage entry rejected" +#~ msgstr "" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "" +#~ msgid "Quote title and client are required" +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "" +#~ msgid "Selected client not found" +#~ msgstr "" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "" +#~ msgid "Invalid total amount format" +#~ msgstr "" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "" +#~ msgid "Invalid estimated hours format" +#~ msgstr "" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "" +#~ msgid "Invalid date format for valid until" +#~ msgstr "" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "" +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "" +#~ msgid "Quote created successfully" +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "" +#~ msgid "Only draft quotes can be edited" +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "" +#~ msgid "Quote updated successfully" +#~ msgstr "" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "" +#~ msgid "Quote sent successfully" +#~ msgstr "" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "" +#~ msgid "This quote cannot be accepted" +#~ msgstr "" -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "" +#~ msgid "This quote cannot be rejected" +#~ msgstr "" -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "" +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "" +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "" +#~ msgid "Quote rejected" +#~ msgstr "" -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "" +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "" +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "" +#~ msgid "Quote deleted successfully" +#~ msgstr "" -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "" +#~ msgid "Payment gateway created successfully." +#~ msgstr "" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "" +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "" +#~ msgid "Stripe API key not configured." +#~ msgstr "" -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "" +#~ msgid "Payment processed successfully." +#~ msgstr "" -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "" +#~ msgid "Invalid from date format" +#~ msgstr "" -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "" +#~ msgid "Invalid to date format" +#~ msgstr "" -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "" +#~ msgid "You do not have permission to view this payment" +#~ msgstr "" -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "" +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "" -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "" +#~ msgid "Selected invoice not found" +#~ msgstr "" -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "" +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "" -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "" +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "" -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "" +#~ msgid "Invalid payment amount" +#~ msgstr "" -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "" +#~ msgid "Invalid payment date format" +#~ msgstr "" -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "" +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "" -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "" +#~ msgid "Invalid gateway fee amount" +#~ msgstr "" -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "" +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "" +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "" -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "" +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "" +#~ msgid "Payment updated successfully" +#~ msgstr "" -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "" +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "" -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "" +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "" +#~ msgid "Payment deleted successfully" +#~ msgstr "" -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "" +#~ msgid "No payments selected for deletion" +#~ msgstr "" -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "" +#~ msgid "No payments selected" +#~ msgstr "" -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "" -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "" +#~ msgid "Start date must be before end date" +#~ msgstr "" -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "" +#~ msgid "Per diem claim created successfully" +#~ msgstr "" -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "" +#~ msgid "Error creating per diem claim" +#~ msgstr "" -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "" -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "" -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "" -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "" -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "" +#~ msgid "Error updating per diem claim" +#~ msgstr "" -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "" -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "" -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "" +#~ msgid "Error deleting per diem claim" +#~ msgstr "" -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "" -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "" -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "No per diem claims selected" +#~ msgstr "" -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "Error approving per diem claim" +#~ msgstr "" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Per diem claim rejected" +#~ msgstr "" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "" +#~ msgid "Per diem rate created successfully" +#~ msgstr "" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "" +#~ msgid "Error creating per diem rate" +#~ msgstr "" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "Error updating per diem rate" +#~ msgstr "" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "" +#~ msgid "Error deleting per diem rate" +#~ msgstr "" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "" +#~ msgid "You do not have permission to access this page" +#~ msgstr "" -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "" +#~ msgid "Role name is required" +#~ msgstr "" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "" +#~ msgid "A role with this name already exists" +#~ msgstr "" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "" +#~ msgid "Could not create role due to a database error" +#~ msgstr "" -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "" +#~ msgid "Role created successfully" +#~ msgstr "" -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "" +#~ msgid "Could not update role due to a database error" +#~ msgstr "" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "" +#~ msgid "Role updated successfully" +#~ msgstr "" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "" -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "" -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "" -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "" +#~ msgid "User roles updated successfully" +#~ msgstr "" -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "" +#~ msgid "Template not found." +#~ msgstr "" -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "" -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "" +#~ msgid "Invalid budget amount" +#~ msgstr "" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "" +#~ msgid "Project not found" +#~ msgstr "" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "" +#~ msgid "Project is already archived" +#~ msgstr "" -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "" +#~ msgid "Project is already active" +#~ msgstr "" -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "" -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "" +#~ msgid "Project is already inactive" +#~ msgstr "" -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "" -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "" -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "" -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "" +#~ msgid "No projects selected for deletion" +#~ msgstr "" -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "" +#~ msgid "No projects were deleted" +#~ msgstr "" -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "" +#~ msgid "You do not have permission to change project status" +#~ msgstr "" -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "" +#~ msgid "No projects selected" +#~ msgstr "" -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "" +#~ msgid "No projects were updated" +#~ msgstr "" -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "" +#~ msgid "Project is already in favorites" +#~ msgstr "" -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "" +#~ msgid "Project added to favorites" +#~ msgstr "" -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "" +#~ msgid "Failed to add project to favorites" +#~ msgstr "" -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "" +#~ msgid "Project is not in favorites" +#~ msgstr "" -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "" +#~ msgid "Project removed from favorites" +#~ msgstr "" -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "" +#~ msgid "Failed to remove project from favorites" +#~ msgstr "" -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "" +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "" -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "" +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "Cost added successfully" +#~ msgstr "" -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "" +#~ msgid "Cost not found" +#~ msgstr "" -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "" +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "" -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "" +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "" +#~ msgid "Cost updated successfully" +#~ msgstr "" -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "" +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "" -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "" +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "" +#~ msgid "Name and unit price are required" +#~ msgstr "" -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "" +#~ msgid "Invalid quantity format" +#~ msgstr "" -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "" +#~ msgid "Invalid unit price format" +#~ msgstr "" -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "" +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "" +#~ msgid "Extra good added successfully" +#~ msgstr "" -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "" +#~ msgid "Extra good not found" +#~ msgstr "" -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "" +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "" -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "" +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "" +#~ msgid "Extra good updated successfully" +#~ msgstr "" -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "" -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "" +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "" -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "" +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "" +#~ msgid "Project created successfully" +#~ msgstr "" -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "" +#~ msgid "Invalid discount amount format" +#~ msgstr "" -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "" +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "" -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "" +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "" -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "" +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "" -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "" +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "" -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "" +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "" -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "" +#~ msgid "This quote does not require approval" +#~ msgstr "" -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "" +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "" -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "" +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "" +#~ msgid "Approval requested successfully" +#~ msgstr "" -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "" +#~ msgid "This quote is not pending approval" +#~ msgstr "" -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "" +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "" -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "Quote approved successfully" +#~ msgstr "" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "" +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "" -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "" +#~ msgid "Quote approval rejected" +#~ msgstr "" -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "" +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "" +#~ msgid "Template created successfully" +#~ msgstr "" -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "" -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "" -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "" +#~ msgid "Recipient email address is required" +#~ msgstr "" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "" -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "" -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "" +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "" -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "" +#~ msgid "Please select an action and at least one quote" +#~ msgstr "" -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -msgid "Billed" -msgstr "" +#~ msgid "Invalid quote IDs" +#~ msgstr "" -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "" +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "" -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "" +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "" -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "" +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "" -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "" +#~ msgid "Error duplicating quotes" +#~ msgstr "" -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Error updating quotes" +#~ msgstr "" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "Error deleting quotes" +#~ msgstr "" -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "Invalid next run date format" +#~ msgstr "" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "Invalid end date format" +#~ msgstr "" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "Selected project or client not found" +#~ msgstr "" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "" -#: app/routes/setup.py:107 -msgid "Could not save settings. Please check server logs." -msgstr "" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "" -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "" +#~ msgid "Start" +#~ msgstr "" -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "" +#~ msgid "End" +#~ msgstr "" -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "" +#~ msgid "Task" +#~ msgstr "" -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "" +#~ msgid "Notes" +#~ msgstr "" -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "" +#~ msgid "Billed" +#~ msgstr "" -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "" +#~ msgid "Client" +#~ msgstr "" -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "" +#~ msgid "User" +#~ msgstr "" -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "" +#~ msgid "Yes" +#~ msgstr "" -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "" +#~ msgid "No" +#~ msgstr "" -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "" -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/routes/tasks.py:995 -msgid "Due date is required (YYYY-MM-DD)" -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/routes/tasks.py:996 -msgid "Due date is required" -msgstr "" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -msgid "Database error" -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, python-format -msgid "Updated %(count)s task(s)" -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -msgid "No tasks updated" -msgstr "" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/routes/tasks.py:1046 -#, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/routes/tasks.py:1050 -#, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "" -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "" +#~ msgid "Project and task name are required" +#~ msgstr "" -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "" +#~ msgid "Selected project does not exist" +#~ msgstr "" -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "" +#~ msgid "Task not found" +#~ msgstr "" -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "" +#~ msgid "You do not have access to this task" +#~ msgstr "" -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "You can only edit tasks you created" +#~ msgstr "" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "Task name is required" +#~ msgstr "" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "Project is required" +#~ msgstr "" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "You do not have permission to update this task" +#~ msgstr "" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "You can only update tasks you created" +#~ msgstr "" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "You can only assign tasks you created" +#~ msgstr "" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "Selected user does not exist" +#~ msgstr "" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Task unassigned" +#~ msgstr "" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "You can only delete tasks you created" +#~ msgstr "" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "" +#~ msgid "Due date is required" +#~ msgstr "" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "" -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "" +#~ msgid "Database error" +#~ msgstr "" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "No tasks updated" +#~ msgstr "" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -msgid "You do not have access to this project" -msgstr "" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "" -#: app/routes/timer.py:171 -msgid "You do not have access to this client" -msgstr "" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "" -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "" +#~ msgid "Invalid priority value" +#~ msgstr "" -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "" +#~ msgid "No user selected for assignment" +#~ msgstr "" -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "" -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "" +#~ msgid "No project selected" +#~ msgstr "" -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "" -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "" -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "" -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/routes/timer.py:651 -msgid "No active timer to pause" -msgstr "" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/routes/timer.py:655 -msgid "Timer paused" -msgstr "" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/routes/timer.py:660 -msgid "Could not pause timer. Please try again." -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/routes/timer.py:676 -msgid "No active timer to resume" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/routes/timer.py:685 -msgid "Could not resume timer. Please try again." -msgstr "" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/routes/timer.py:701 -msgid "No active timer to adjust" -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/routes/timer.py:707 -msgid "Invalid adjustment value" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "" +#~ msgid "Could not create template due to a database error" +#~ msgstr "" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "" +#~ msgid "Could not update template due to a database error" +#~ msgstr "" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "You do not have access to this project" +#~ msgstr "" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "You do not have access to this client" +#~ msgstr "" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Unknown" +#~ msgstr "" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "" +#~ msgid "Timer started" +#~ msgstr "" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Cannot start timer for this project" +#~ msgstr "" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "" +#~ msgid "No active timer to stop" +#~ msgstr "" -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "" +#~ msgid "No project" +#~ msgstr "" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "" +#~ msgid "No active timer to pause" +#~ msgstr "" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "" +#~ msgid "Timer paused" +#~ msgstr "" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "" +#~ msgid "No active timer to resume" +#~ msgstr "" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "" +#~ msgid "No active timer to adjust" +#~ msgstr "" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "" +#~ msgid "Invalid adjustment value" +#~ msgstr "" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "" +#~ msgid "You can only edit your own timers" +#~ msgstr "" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "Start time cannot be in the future" +#~ msgstr "" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "" +#~ msgid "Invalid start date/time format" +#~ msgstr "" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "End time must be after start time" +#~ msgstr "" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "Timer updated successfully" +#~ msgstr "" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "You can only delete your own timers" +#~ msgstr "" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "Cannot delete an active timer" +#~ msgstr "" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/routes/user.py:182 -msgid "Standard hours per week must be between 1 and 168" -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/routes/user.py:265 -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/routes/user.py:267 -msgid "Error saving settings." -msgstr "" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "" +#~ msgid "Invalid date/time format" +#~ msgstr "" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "" +#~ msgid "All fields are required" +#~ msgstr "" -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "" -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "" +#~ msgid "Invalid task selected" +#~ msgstr "" -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "" -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "" -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "" +#~ msgid "Invalid time format" +#~ msgstr "" -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "" -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "" -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "" -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "" +#~ msgid "You can only resume your own timers" +#~ msgstr "" -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "" +#~ msgid "Project no longer exists" +#~ msgstr "" -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "" +#~ msgid "unpaid" +#~ msgstr "" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "Invalid timezone selected" +#~ msgstr "" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "" -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "Settings saved successfully" +#~ msgstr "" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "" -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "Preferences updated" +#~ msgstr "" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "Language updated successfully" +#~ msgstr "" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Invalid language" +#~ msgstr "" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "" -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "" +#~ msgid "Webhook URL is required" +#~ msgstr "" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "" -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "" +#~ msgid "Webhook created successfully" +#~ msgstr "" -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Error creating webhook" +#~ msgstr "" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "" -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "Webhook updated successfully" +#~ msgstr "" -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Webhook deleted successfully" +#~ msgstr "" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "" -#: app/routes/workforce.py:180 -msgid "Timesheet period rejected" -msgstr "" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "" -#: app/routes/workforce.py:191 -msgid "Only admins can close periods" -msgstr "" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "" -#: app/routes/workforce.py:243 -msgid "Timesheet policy updated" -msgstr "" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "" -#: app/routes/workforce.py:257 -msgid "Name and code are required" -msgstr "" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "" -#: app/routes/workforce.py:270 -msgid "Leave type created" -msgstr "" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "" -#: app/routes/workforce.py:303 -msgid "Leave type and date range are required" -msgstr "" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "" -#: app/routes/workforce.py:344 -msgid "Time-off request approved" -msgstr "" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "" -#: app/routes/workforce.py:368 -msgid "Time-off request rejected" -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "" -#: app/routes/workforce.py:405 -msgid "Name and date range are required" -msgstr "" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "" -#: app/routes/workforce.py:411 -msgid "Holiday created" -msgstr "" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "" +#~ msgid "Update Status" +#~ msgstr "" -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "" +#~ msgid "Create Task" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "" +#~ msgid "Send Email" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/base.html:393 -msgid "Add" -msgstr "" +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "" +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "" +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "" +#~ msgid "Timesheet period rejected" +#~ msgstr "" -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "" +#~ msgid "Only admins can close periods" +#~ msgstr "" -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "" -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "" -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "" -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "" -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "" +#~ msgid "Time-off request approved" +#~ msgstr "" -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "" +#~ msgid "Time-off request rejected" +#~ msgstr "" -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "" +#~ msgid "Name and date range are required" +#~ msgstr "" -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "" +#~ msgid "Holiday created" +#~ msgstr "" -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/base.html:480 -msgid "Main navigation" -msgstr "" +#~ msgid "remaining" +#~ msgstr "" -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "" +#~ msgid "Success" +#~ msgstr "" -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -msgid "Open command palette" -msgstr "" +#~ msgid "Error" +#~ msgstr "" -#: app/templates/base.html:512 -msgid "Commands" -msgstr "" +#~ msgid "Warning" +#~ msgstr "" -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "" +#~ msgid "Information" +#~ msgstr "" -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "" -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "" +#~ msgid "Saving..." +#~ msgstr "" -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -msgid "Time entries" -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "" -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "" +#~ msgid "Cancel" +#~ msgstr "" -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "" +#~ msgid "Confirm" +#~ msgstr "" -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "" +#~ msgid "Close" +#~ msgstr "" -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "Save" +#~ msgstr "" -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "" +#~ msgid "Delete" +#~ msgstr "" -#: app/templates/base.html:596 -msgid "Time Approvals" -msgstr "" +#~ msgid "Edit" +#~ msgstr "" -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "Add" +#~ msgstr "" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "Remove" +#~ msgstr "" -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "" +#~ msgid "OK" +#~ msgstr "" -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "" -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "" -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "" +#~ msgid "No items selected" +#~ msgstr "" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "" +#~ msgid "Invalid input" +#~ msgstr "" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "" +#~ msgid "This field is required" +#~ msgstr "" -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "No active timer" +#~ msgstr "" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "" -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "Error stopping timer" +#~ msgstr "" -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "" +#~ msgid "No form to save" +#~ msgstr "" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "" +#~ msgid "No timer found" +#~ msgstr "" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "" -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "" -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "Commands" +#~ msgstr "" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "" -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "" +#~ msgid "Dashboard" +#~ msgstr "" -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "" +#~ msgid "Timer" +#~ msgstr "" -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "" +#~ msgid "Time entries" +#~ msgstr "" -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "" +#~ msgid "Reports" +#~ msgstr "" -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "" +#~ msgid "Calendar" +#~ msgstr "" -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "" -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "" -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "" -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "" -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "" -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "" -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "" -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "" +#~ msgid "CRM" +#~ msgstr "" -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "" +#~ msgid "Clients" +#~ msgstr "" -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "" -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "" -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "" +#~ msgid "Invoices" +#~ msgstr "" -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "" +#~ msgid "Payments" +#~ msgstr "" -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Expenses" +#~ msgstr "" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "" +#~ msgid "Mileage" +#~ msgstr "" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "" +#~ msgid "Inventory" +#~ msgstr "" -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Warehouses" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "" -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "" +#~ msgid "Reservations" +#~ msgstr "" -#: app/templates/base.html:1189 -msgid "Open support options" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "" -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "" +#~ msgid "Analytics" +#~ msgstr "" -#: app/templates/base.html:1211 -msgid "Open sidebar" -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "" -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "" -#: app/templates/base.html:1234 -msgid "Theme options" -msgstr "" +#~ msgid "Admin" +#~ msgstr "" -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "" -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "" +#~ msgid "User Management" +#~ msgstr "" -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "" +#~ msgid "PDF Templates" +#~ msgstr "" -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -msgid "Stop" -msgstr "" +#~ msgid "Invoice PDF" +#~ msgstr "" -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -msgid "AI Helper" -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "" -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "" +#~ msgid "System Settings" +#~ msgstr "" -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "" +#~ msgid "Settings" +#~ msgstr "" -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/base.html:1308 -msgid "Supporter" -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "" -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "" -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "" +#~ msgid "OIDC Settings" +#~ msgstr "" -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "" -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "" +#~ msgid "Expense Categories" +#~ msgstr "" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "" -#: app/templates/base.html:1374 app/templates/main/about.html:212 -msgid "Support / Get key" -msgstr "" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/base.html:1391 -msgid "Support / License" -msgstr "" +#~ msgid "System Info" +#~ msgstr "" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "" +#~ msgid "Backups" +#~ msgstr "" -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/base.html:1417 -msgid "Software update" -msgstr "" +#~ msgid "About" +#~ msgstr "" -#: app/templates/base.html:1425 -msgid "Read more" -msgstr "" +#~ msgid "Help" +#~ msgstr "" -#: app/templates/base.html:1430 -msgid "View Release" -msgstr "" +#~ msgid "Open support options" +#~ msgstr "" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "Support TimeTracker" +#~ msgstr "" -#: app/templates/base.html:1447 -msgid "Quick actions dock" -msgstr "" +#~ msgid "Open sidebar" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "" +#~ msgid "Search" +#~ msgstr "" -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "" +#~ msgid "Theme" +#~ msgstr "" -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "" +#~ msgid "Theme options" +#~ msgstr "" -#: app/templates/base.html:1471 -msgid "New Project" -msgstr "" +#~ msgid "Light" +#~ msgstr "" -#: app/templates/base.html:1475 -msgid "New Client" -msgstr "" +#~ msgid "Dark" +#~ msgstr "" -#: app/templates/base.html:1491 -msgid "Open AI Helper" -msgstr "" +#~ msgid "System" +#~ msgstr "" -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/base.html:1508 -msgid "Context included" -msgstr "" +#~ msgid "Start Timer" +#~ msgstr "" -#: app/templates/base.html:1509 -msgid "Loading context preview..." -msgstr "" +#~ msgid "Stop" +#~ msgstr "" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "AI Helper" +#~ msgstr "" -#: app/templates/base.html:1518 -msgid "Send" -msgstr "" +#~ msgid "Change language" +#~ msgstr "" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "Language" +#~ msgstr "" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "User menu" +#~ msgstr "" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "Supporter" +#~ msgstr "" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Guest" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "" +#~ msgid "My Profile" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "" +#~ msgid "My Settings" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "" +#~ msgid "License" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "" +#~ msgid "Logout" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "" +#~ msgid "Support / Get key" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "" +#~ msgid "Support / License" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "" +#~ msgid "Software update" +#~ msgstr "" -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "" +#~ msgid "Read more" +#~ msgstr "" -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "" +#~ msgid "View Release" +#~ msgstr "" -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "" +#~ msgid "Quick actions dock" +#~ msgstr "" -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "" +#~ msgid "Actions" +#~ msgstr "" -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "" +#~ msgid "Log Time" +#~ msgstr "" -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "" +#~ msgid "New Task" +#~ msgstr "" -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "" +#~ msgid "New Project" +#~ msgstr "" -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "" +#~ msgid "New Client" +#~ msgstr "" -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "Context included" +#~ msgstr "" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "" +#~ msgid "Send" +#~ msgstr "" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Create API Token" +#~ msgstr "" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Your API Token" +#~ msgstr "" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Usage Examples" +#~ msgstr "" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "Are you sure you want to" +#~ msgstr "" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "deactivate" +#~ msgstr "" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "activate" +#~ msgstr "" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "" +#~ msgid "this token?" +#~ msgstr "" -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "Deactivate Token" +#~ msgstr "" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "Activate Token" +#~ msgstr "" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Deactivate" +#~ msgstr "" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "Activate" +#~ msgstr "" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "" -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "" -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "" -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "" -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "" +#~ msgid "Important Information" +#~ msgstr "" -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "" -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "" +#~ msgid "Clear Cache" +#~ msgstr "" -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "" -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "" -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "" -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "" -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "" +#~ msgid "All time" +#~ msgstr "" -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "" +#~ msgid "Total Projects" +#~ msgstr "" -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "" +#~ msgid "Active Projects" +#~ msgstr "" -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "" +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/admin/email_support.html:82 -msgid "Test recipient email" -msgstr "" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "" +#~ msgid "Database" +#~ msgstr "" -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "" +#~ msgid "OIDC Users" +#~ msgstr "" -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "" +#~ msgid "users" +#~ msgstr "" -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "" -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "" +#~ msgid "Recent Activity" +#~ msgstr "" -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "" +#~ msgid "Duration" +#~ msgstr "" -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "" +#~ msgid "N/A" +#~ msgstr "" -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "" -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "" -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "" -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "" -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "" -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "" +#~ msgid "Mail Server" +#~ msgstr "" -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "" -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "" +#~ msgid "Use TLS" +#~ msgstr "" -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "" +#~ msgid "Use SSL" +#~ msgstr "" -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "" +#~ msgid "Username" +#~ msgstr "" -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "" +#~ msgid "Password" +#~ msgstr "" -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "" +#~ msgid "Leave empty to keep current" +#~ msgstr "" -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:16 -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:31 -msgid "Server" -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "Reset" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:46 -msgid "Groups" -msgstr "" +#~ msgid "Refresh" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "Your email settings are properly set up." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:60 -msgid "LDAP host" -msgstr "" +#~ msgid "Email is not configured" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:73 -msgid "Use SSL (LDAPS)" -msgstr "" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:77 -msgid "StartTLS" -msgstr "" +#~ msgid "Configuration Errors" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:81 -msgid "Connection timeout (seconds)" -msgstr "" +#~ msgid "Configuration Warnings" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "Current Email Settings" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "Port" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "Password Set" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "Send Test Email" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:104 -msgid "Bind password" -msgstr "" +#~ msgid "Recipient Email Address" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:107 -msgid "Enter bind password" -msgstr "" +#~ msgid "Configuration Guide" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Common SMTP Providers" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "Requires app password" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -msgid "Base DN" -msgstr "" +#~ msgid "Important Notes" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:133 -msgid "User object class" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:140 -msgid "Login attribute" -msgstr "" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:145 -msgid "Email attribute" -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:150 -msgid "First name attribute" -msgstr "" +#~ msgid "password is set" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:155 -msgid "Last name attribute" -msgstr "" +#~ msgid "no password set" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:164 -msgid "Step 4: Groups and authentication mode" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "Success!" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:173 -msgid "Group object class" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -msgid "Admin group (CN)" -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:190 -msgid "AUTH_METHOD" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:193 -msgid "LDAP only" -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "Server" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:204 -msgid "Step 5: Test and generate configuration" -msgstr "" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "Users" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:214 -msgid "Test connection" -msgstr "" +#~ msgid "Groups" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:225 -msgid "Generate configuration" -msgstr "" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:230 -msgid "Environment variables (.env)" -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "StartTLS" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/admin/modules.html:39 -msgid "Feature Module Load Status" -msgstr "" +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/admin/modules.html:45 -msgid "Optional loaded:" -msgstr "" +#~ msgid "Bind password" +#~ msgstr "" -#: app/templates/admin/modules.html:47 -msgid "Attention needed" -msgstr "" +#~ msgid "Enter bind password" +#~ msgstr "" -#: app/templates/admin/modules.html:56 -msgid "Module" -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "" +#~ msgid "Base DN" +#~ msgstr "" -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/admin/modules.html:70 -msgid "Loaded" -msgstr "" +#~ msgid "User object class" +#~ msgstr "" -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "" +#~ msgid "Login attribute" +#~ msgstr "" -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Email attribute" +#~ msgstr "" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "First name attribute" +#~ msgstr "" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "Group object class" +#~ msgstr "" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "AUTH_METHOD" +#~ msgstr "" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "" -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "" +#~ msgid "Test connection" +#~ msgstr "" -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "Generate configuration" +#~ msgstr "" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Environment variables (.env)" +#~ msgstr "" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "Previous" +#~ msgstr "" -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "" +#~ msgid "Next" +#~ msgstr "" -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "Feature Module Load Status" +#~ msgstr "" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "" +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "Optional loaded:" +#~ msgstr "" -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "Attention needed" +#~ msgstr "" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "Module" +#~ msgstr "" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "Status" +#~ msgstr "" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "Details" +#~ msgstr "" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "Loaded" +#~ msgstr "" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "Failed" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "" +#~ msgid "—" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "" +#~ msgid "All Categories" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "" +#~ msgid "Project Management" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "" +#~ msgid "Disabled" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "" +#~ msgid "Save Changes" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "" +#~ msgid "Note" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "" +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "" +#~ msgid "Test Configuration" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "" +#~ msgid "OIDC Configuration" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "" +#~ msgid "Auth Method" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "" +#~ msgid "Issuer" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "" +#~ msgid "Not configured" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "" +#~ msgid "Client ID" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "" +#~ msgid "Client Secret" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "" +#~ msgid "Set" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "" +#~ msgid "Not set" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "" +#~ msgid "Scopes" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "" +#~ msgid "Email Claim" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "" +#~ msgid "Full Name Claim" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "" +#~ msgid "Groups Claim" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "" +#~ msgid "Admin Group" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "" +#~ msgid "Admin Emails" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "" +#~ msgid "Post-Logout URI" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "" +#~ msgid "Provider Metadata" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "" +#~ msgid "Error loading metadata:" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "" +#~ msgid "Discovery endpoint:" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "" +#~ msgid "Endpoints" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "" +#~ msgid "Authorization" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "" +#~ msgid "Token" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "" +#~ msgid "UserInfo" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "End Session" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "JWKS URI" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "Supported Features" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "Response Types" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "Auth Methods" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "Claims" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "Email" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "Full Name" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "" +#~ msgid "Role" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Last Login" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "OIDC Subject" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "Inactive" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "Never" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "Environment Variables Reference" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Variable" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Description" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "Example" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Authentication method" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "OIDC provider issuer URL" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Client ID from OIDC provider" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "Client secret from OIDC provider" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "Requested scopes" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Claim containing username" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "Claim containing email" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "Claim containing full name" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "Claim containing groups" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "Group name for admin role (optional)" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "" +#~ msgid "Basic Config" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "" +#~ msgid "Test Connection" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "" +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "" +#~ msgid "OIDC Issuer URL" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "" +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "" +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "" +#~ msgid "Enter client secret" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "" +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "" +#~ msgid "Authentication Method" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "" +#~ msgid "OIDC Only" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "" +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "" +#~ msgid "Both" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "" +#~ msgid "SSO and local password authentication" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "" +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "" +#~ msgid "Step 2: Test Connection" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "" +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "" +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "" +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "" +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "" +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3 -msgid "PDF Invoice Designer" -msgstr "" +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1649 -msgid "Visual Invoice Designer" -msgstr "" +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1652 -msgid "Drag and drop elements to design your invoice layout" -msgstr "" +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "" +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "" +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "" +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1679 -msgid "Items Table:" -msgstr "" +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Expenses Table:" -msgstr "" +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Generate Configuration" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Saving:" -msgstr "" +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "OIDC User Details" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -msgid "See" -msgstr "" +#~ msgid "Back to OIDC Debug" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -msgid "for full documentation." -msgstr "" +#~ msgid "User Profile" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "" +#~ msgid "Active" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "" +#~ msgid "Preferred Language" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "" +#~ msgid "Created At" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "" +#~ msgid "OIDC Information" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "OIDC Issuer" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "OIDC Subject (sub)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "" +#~ msgid "Local" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "" +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "" +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "" +#~ msgid "Activity Statistics" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "" +#~ msgid "Time Entries" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "" +#~ msgid "None" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "" +#~ msgid "Active Timer" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "" +#~ msgid "Tasks Created" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "" +#~ msgid "Edit User" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "" +#~ msgid "View All Users" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "" +#~ msgid "PDF Invoice Designer" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "" +#~ msgid "Visual Invoice Designer" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "" +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "" +#~ msgid "How to use:" +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "" +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "" +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "" +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "" +#~ msgid "Items Table:" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "" +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "" +#~ msgid "Expenses Table:" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1813 -msgid "Invoice Data" -msgstr "" +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "" +#~ msgid "Saving:" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1820 -msgid "Invoice Date" -msgstr "" +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "" +#~ msgid "Preview:" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "" +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "" +#~ msgid "See" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "" +#~ msgid "for full documentation." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1844 -msgid "Items Table" -msgstr "" +#~ msgid "Clear Canvas" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1848 -msgid "Expenses Table" -msgstr "" +#~ msgid "Generate Preview" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "" +#~ msgid "Save Design" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "" +#~ msgid "View Code" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "" +#~ msgid "Export JSON" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "" +#~ msgid "Import JSON" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "" +#~ msgid "Snap to Grid (10px)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "" +#~ msgid "Toolbox" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "" +#~ msgid "Search elements & variables..." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "" +#~ msgid "Elements" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "" +#~ msgid "Variables" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "" +#~ msgid "Basic Elements" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "" +#~ msgid "Custom Text" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "" +#~ msgid "Text" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "" +#~ msgid "Heading" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "" +#~ msgid "Line" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "" +#~ msgid "Rectangle" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "" +#~ msgid "Circle" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "" +#~ msgid "Company Info" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "" +#~ msgid "Company Logo" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "" +#~ msgid "Company Name" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "Company Details" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1948 -msgid "Invoice Fields" -msgstr "" +#~ msgid "Address" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1951 -msgid "Invoice number" -msgstr "" +#~ msgid "Phone" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1955 -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "" +#~ msgid "Website" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "" +#~ msgid "Tax ID" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "" +#~ msgid "Invoice Data" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "" +#~ msgid "Invoice Number" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "" +#~ msgid "Invoice Date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "" +#~ msgid "Due Date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "" +#~ msgid "Client Info" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "" +#~ msgid "Client Name" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1987 -msgid "Invoice notes" -msgstr "" +#~ msgid "Client Address" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "" +#~ msgid "Items Table" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "" +#~ msgid "Expenses Table" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "" +#~ msgid "Subtotal" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "" +#~ msgid "Tax" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "" +#~ msgid "Total Amount" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "" +#~ msgid "Terms" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "" +#~ msgid "Payment & Project" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "" +#~ msgid "Payment Date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2023 -msgid "Payment status" -msgstr "" +#~ msgid "Payment Method" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2027 -msgid "Payment date" -msgstr "" +#~ msgid "Payment Status" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "" +#~ msgid "Amount Paid" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "" +#~ msgid "Project Name" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "" +#~ msgid "Client Email" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "" +#~ msgid "Client Phone" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "" +#~ msgid "QR Code" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "" +#~ msgid "Barcode" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "" +#~ msgid "Page Number" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "" +#~ msgid "Current Date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "" +#~ msgid "Watermark" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "" +#~ msgid "Bank Info" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "" +#~ msgid "Currency" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "" +#~ msgid "Decorative Image" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "" +#~ msgid "Invoice Fields" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "" +#~ msgid "Invoice number" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "" +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "" +#~ msgid "Issue date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "" +#~ msgid "Due date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "" +#~ msgid "Subtotal amount" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "" +#~ msgid "Tax rate (%)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "" +#~ msgid "Tax amount" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "" +#~ msgid "Total amount" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "" +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2119 -msgid "Invoice creation date" -msgstr "" +#~ msgid "Invoice notes" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2123 -msgid "Invoice last update date" -msgstr "" +#~ msgid "Terms & conditions" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2128 -msgid "Invoice Items Loop" -msgstr "" +#~ msgid "Client Fields" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "Client company name" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2135 -msgid "Time-based items only" -msgstr "" +#~ msgid "Client email address" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "" +#~ msgid "Client full address" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "" +#~ msgid "Client contact person" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "" +#~ msgid "Client phone number" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "" +#~ msgid "Payment Fields" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "" +#~ msgid "Payment status" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2159 -msgid "Extra Goods Loop" -msgstr "" +#~ msgid "Payment date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2162 -msgid "Loop through extra goods only" -msgstr "" +#~ msgid "Payment method" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2166 -msgid "Good name" -msgstr "" +#~ msgid "Payment reference number" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2170 -msgid "Good total amount" -msgstr "" +#~ msgid "Amount paid" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "" +#~ msgid "Outstanding amount" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "" +#~ msgid "Payment notes" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "" +#~ msgid "Project Fields" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "" +#~ msgid "Project name" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "" +#~ msgid "Project code" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "" +#~ msgid "Project description" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2235 -msgid "Warnings" -msgstr "" +#~ msgid "Project billing reference" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2237 -msgid "Refresh warnings" -msgstr "" +#~ msgid "Company/Settings Fields" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2242 -msgid "No warnings" -msgstr "" +#~ msgid "Your company name" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Your company address" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "" +#~ msgid "Your company email" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Your company phone" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "" +#~ msgid "Your company website" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "" +#~ msgid "Your tax ID number" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "Your bank account info" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "Default invoice terms" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Default invoice notes" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "Date/Time Fields" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "Current date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Invoice creation date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Invoice last update date" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "Invoice Items Loop" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Time-based items only" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "Item description" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "Item quantity" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "Item unit price" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "Item total amount" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "" +#~ msgid "End loop" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "Extra Goods Loop" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "Loop through extra goods only" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Good name" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "Good total amount" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "Design Canvas" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "Page Size:" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "Zoom In" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Zoom Out" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "Delete Selected" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "" +#~ msgid "Properties" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "" +#~ msgid "Warnings" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Refresh warnings" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "No warnings" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "Template Settings" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "Date Format" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "" +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "" +#~ msgid "Select an element to edit its properties" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "PDF Preview" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "" +#~ msgid "Page Size" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "" +#~ msgid "Refresh Preview" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "" +#~ msgid "Toggle Fullscreen" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1487 -msgid "Help: Quote Items Table & Saving" -msgstr "" +#~ msgid "Close Preview" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Quote Items Table:" -msgstr "" +#~ msgid "Zoom Level" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Reset Zoom" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "Fit to Width" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "Fit Width" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "" +#~ msgid "Fit to Height" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "" +#~ msgid "Fit Height" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "" +#~ msgid "Actual Size" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "" +#~ msgid "Generating preview..." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "" +#~ msgid "Preview Error" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "" +#~ msgid "Retry" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "" +#~ msgid "Generated Code" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "" +#~ msgid "Change Image" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "" +#~ msgid "Upload Image" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "" +#~ msgid "Remove Image" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "" +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "" +#~ msgid "File size must be less than 5MB" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "" +#~ msgid "Uploading..." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "" +#~ msgid "Error: Image update function not found" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "" +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "" +#~ msgid "Clear all elements?" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "" +#~ msgid "Clear" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "" +#~ msgid "Exit Fullscreen" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "" +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "Reset to defaults?" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "Reset PDF Layout" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "" +#~ msgid "Error importing template" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "PDF Quote Designer" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "Visual Quote Designer" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "Quote Items Table:" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "Quote Data" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "Quote Number" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "Quote Date" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "Quote Items Table" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "Quote Fields" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "Quote number" +#~ msgstr "" -#: app/templates/admin/settings.html:117 -msgid "Time Entry Requirements" -msgstr "" +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "Quote notes" +#~ msgstr "" -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "Quote status" +#~ msgstr "" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "Quote accepted date" +#~ msgstr "" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "Quote creation date" +#~ msgstr "" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "Quote last update date" +#~ msgstr "" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "Quote Items Loop" +#~ msgstr "" -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "Loop through invoice items" +#~ msgstr "" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "Align Left" +#~ msgstr "" -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "Center Horizontally" +#~ msgstr "" -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "Align Right" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -msgid "Buy key" -msgstr "" +#~ msgid "Align Top" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -msgid "— key sent by email." -msgstr "" +#~ msgid "Center Vertically" +#~ msgstr "" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "Align Bottom" +#~ msgstr "" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -msgid "Get key" -msgstr "" +#~ msgid "Salesman Email Mappings" +#~ msgstr "" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "Email Mappings" +#~ msgstr "" -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "Add Mapping" +#~ msgstr "" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "Salesman Initial" +#~ msgstr "" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "Email Address" +#~ msgstr "" -#: app/templates/admin/settings.html:196 -msgid "Enter code from email" -msgstr "" +#~ msgid "Pattern/Domain" +#~ msgstr "" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "Add Email Mapping" +#~ msgstr "" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "" +#~ msgid "1-20 letters only" +#~ msgstr "" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "" +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "" +#~ msgid "Direct Email Address" +#~ msgstr "" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" -#: app/templates/admin/settings.html:412 -msgid "Enabled for auth" -msgstr "" +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" -#: app/templates/admin/settings.html:416 -msgid "Host" -msgstr "" +#~ msgid "Additional notes about this mapping" +#~ msgstr "" -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -msgid "SSL" -msgstr "" +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -msgid "TLS" -msgstr "" +#~ msgid "Edit Email Mapping" +#~ msgstr "" -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "" +#~ msgid "Error saving mapping" +#~ msgstr "" -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -msgid "off" -msgstr "" +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" -#: app/templates/admin/settings.html:429 -msgid "User DN" -msgstr "" +#~ msgid "Error deleting mapping" +#~ msgstr "" -#: app/templates/admin/settings.html:433 -msgid "User login attribute" -msgstr "" +#~ msgid "Time Entry Requirements" +#~ msgstr "" -#: app/templates/admin/settings.html:447 -msgid "Test LDAP Connection" -msgstr "" +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "" +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Require description when logging time" +#~ msgstr "" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "Minimum description length (characters)" +#~ msgstr "" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "" +#~ msgid "Support visibility" +#~ msgstr "" -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "" +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "" +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "" +#~ msgid "Buy key" +#~ msgstr "" -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "" +#~ msgid "— key sent by email." +#~ msgstr "" -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "Get key" +#~ msgstr "" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "Step 1: System ID" +#~ msgstr "" -#: app/templates/admin/settings.html:522 -msgid "Availability" -msgstr "" +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" -#: app/templates/admin/settings.html:524 -msgid "Use environment default" -msgstr "" +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" -#: app/templates/admin/settings.html:524 -msgid "currently" -msgstr "" +#~ msgid "Step 3: Paste code" +#~ msgstr "" -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "Enter code from email" +#~ msgstr "" -#: app/templates/admin/settings.html:537 -msgid "Base URL" -msgstr "" +#~ msgid "Verify and hide for everyone" +#~ msgstr "" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "Company Branding" +#~ msgstr "" -#: app/templates/admin/settings.html:542 -msgid "Model" -msgstr "" +#~ msgid "Invoice Defaults" +#~ msgstr "" -#: app/templates/admin/settings.html:546 -msgid "Hosted API key" -msgstr "" +#~ msgid "Backup Settings" +#~ msgstr "" -#: app/templates/admin/settings.html:547 -msgid "Stored; leave blank to keep" -msgstr "" +#~ msgid "LDAP" +#~ msgstr "" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Enabled for auth" +#~ msgstr "" -#: app/templates/admin/settings.html:557 -msgid "Timeout seconds" -msgstr "" +#~ msgid "Host" +#~ msgstr "" -#: app/templates/admin/settings.html:561 -msgid "Context limit" -msgstr "" +#~ msgid "SSL" +#~ msgstr "" -#: app/templates/admin/settings.html:566 -msgid "System prompt" -msgstr "" +#~ msgid "TLS" +#~ msgstr "" -#: app/templates/admin/settings.html:571 -msgid "Test AI connection" -msgstr "" +#~ msgid "on" +#~ msgstr "" -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "" +#~ msgid "off" +#~ msgstr "" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "" +#~ msgid "User DN" +#~ msgstr "" -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "" +#~ msgid "User login attribute" +#~ msgstr "" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "" +#~ msgid "Test LDAP Connection" +#~ msgstr "" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "" +#~ msgid "Export Settings" +#~ msgstr "" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "" +#~ msgid "Kiosk Mode" +#~ msgstr "" -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -msgid "Request failed." -msgstr "" +#~ msgid "Default Movement Type" +#~ msgstr "" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -msgid "Testing connection..." -msgstr "" +#~ msgid "Adjustment" +#~ msgstr "" -#: app/templates/admin/settings.html:831 -msgid "Connection failed." -msgstr "" +#~ msgid "Transfer" +#~ msgstr "" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Sale" +#~ msgstr "" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -msgid "AI connection failed." -msgstr "" +#~ msgid "Rent" +#~ msgstr "" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "" +#~ msgid "Purchase" +#~ msgstr "" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "" +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "" +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "" +#~ msgid "Availability" +#~ msgstr "" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Use environment default" +#~ msgstr "" -#: app/templates/admin/user_form.html:112 -msgid "Assigned clients" -msgstr "" +#~ msgid "currently" +#~ msgstr "" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Provider" +#~ msgstr "" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "" +#~ msgid "Base URL" +#~ msgstr "" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "" +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "" +#~ msgid "Model" +#~ msgstr "" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "" +#~ msgid "Hosted API key" +#~ msgstr "" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "" +#~ msgid "Stored; leave blank to keep" +#~ msgstr "" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "" +#~ msgid "Only required for hosted providers" +#~ msgstr "" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "" +#~ msgid "Clear stored API key" +#~ msgstr "" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "" +#~ msgid "Timeout seconds" +#~ msgstr "" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "" +#~ msgid "Context limit" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "System prompt" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "Test AI connection" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Privacy & Analytics" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "Save Settings" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Upload New Logo" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Logo Preview" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "Remove Logo" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "" +#~ msgid "Copied" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Please enter a code." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "Request failed." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Testing connection..." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Connection failed." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "AI connection succeeded." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "AI connection failed." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "Admin → Settings" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Password Reset" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Leave blank to keep current password" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Client Portal Access" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "" +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "Assigned clients" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "Admin Access" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "Migrate to new role system" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Migrate" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Roles" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "No users found." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Cannot Delete User" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Delete User" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "Custom Field Definitions" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Create" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "Create Custom Field Definition" +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "" +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "" +#~ msgid "Field Key" +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "" +#~ msgid "e.g., debtor_number" +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "" +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "" +#~ msgid "Label" +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "" +#~ msgid "e.g., Debtor Number" +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "" +#~ msgid "Display name shown in client forms" +#~ msgstr "" -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "" +#~ msgid "Optional help text for this field" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -msgid "Send test email" -msgstr "" +#~ msgid "Display Order" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Lower numbers appear first" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -msgid "Recipient" -msgstr "" +#~ msgid "Mandatory" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -msgid "Invoice ID" -msgstr "" +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "" +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -msgid "Failed to send test email." -msgstr "" +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "" +#~ msgid "Create Custom Field" +#~ msgstr "" -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "" +#~ msgid "Order" +#~ msgstr "" -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "" +#~ msgid "Required" +#~ msgstr "" -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "" +#~ msgid "Optional" +#~ msgstr "" -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "" +#~ msgid "No custom field definitions found." +#~ msgstr "" -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "" +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "" +#~ msgid "Features:" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "Control field order and visibility" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "Example:" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Set as default template" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "HTML Template" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Custom Message" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "More Variables" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Create Template" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Available Variables" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "Invoice Variables" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Other Variables" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Send test email" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Recipient" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Invoice ID" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Update Template" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Failed to send test email." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "No email templates found." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "Create Email Template" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Delete Email Template" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "Are you sure you want to delete" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "This action cannot be undone." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Template Information" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "Integration Setup" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "Global" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "Per User" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Setup" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "Trello API Key" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "Get your API key from" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Trello API Secret" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Leave empty to keep current value" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Get your API secret from" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "(shown after generating API key)" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "OAuth Client ID" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "OAuth Client Secret" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "" +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "GitLab Instance URL" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "" +#~ msgid "OAuth Redirect URI" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Automatic Connection Flow" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Save Credentials" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "How Google Calendar Works" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "" +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "" +#~ msgid "Connection Status" +#~ msgstr "" -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "" +#~ msgid "View Integration" +#~ msgstr "" -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "" +#~ msgid "Next Steps" +#~ msgstr "" -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "" +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "" +#~ msgid "Connect Integration" +#~ msgstr "" -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "" +#~ msgid "Edit Link Template" +#~ msgstr "" -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "" +#~ msgid "Create Link Template" +#~ msgstr "" -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "" +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "" +#~ msgid "Template Name" +#~ msgstr "" -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "" +#~ msgid "e.g., ERP System Link" +#~ msgstr "" -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "" +#~ msgid "A descriptive name for this link template" +#~ msgstr "" -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "" +#~ msgid "Optional description" +#~ msgstr "" -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "" +#~ msgid "URL Template" +#~ msgstr "" -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "" +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Icon" +#~ msgstr "" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "" +#~ msgid "fas fa-link" +#~ msgstr "" -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "" +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "" +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "" +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "" +#~ msgid "Name" +#~ msgstr "" -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "" +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "" +#~ msgid "No link templates found." +#~ msgstr "" -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "" +#~ msgid "How Link Templates Work" +#~ msgstr "" -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "" +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "" +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "" +#~ msgid "Create a link template with URL:" +#~ msgstr "" -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "" +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "" +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "" +#~ msgid "URL Template Format:" +#~ msgstr "" -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "" +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "" +#~ msgid "System Permissions" +#~ msgstr "" -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "" +#~ msgid "All available permissions in the system" +#~ msgstr "" -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "" +#~ msgid "Back to Roles" +#~ msgstr "" -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "" +#~ msgid "permissions" +#~ msgstr "" -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "" +#~ msgid "No description available" +#~ msgstr "" -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "" +#~ msgid "About Permissions" +#~ msgstr "" -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "" +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "" +#~ msgid "Edit Role" +#~ msgstr "" -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "" +#~ msgid "Create New Role" +#~ msgstr "" -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "" +#~ msgid "Role Name" +#~ msgstr "" -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "" +#~ msgid "A unique name for this role" +#~ msgstr "" -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "" +#~ msgid "Optional description of this role" +#~ msgstr "" -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "" +#~ msgid "Permissions" +#~ msgstr "" -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "" +#~ msgid "Select the permissions this role should have:" +#~ msgstr "" -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "" +#~ msgid "Toggle All" +#~ msgstr "" -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "" +#~ msgid "Module visibility" +#~ msgstr "" -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "" +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "" +#~ msgid "Hide" +#~ msgstr "" -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "" +#~ msgid "Update Role" +#~ msgstr "" -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "" +#~ msgid "Create Role" +#~ msgstr "" -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "" +#~ msgid "Manage roles and their permissions" +#~ msgstr "" -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "" +#~ msgid "View Permissions" +#~ msgstr "" -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "" +#~ msgid "Total Roles" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "" +#~ msgid "System Roles" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "" +#~ msgid "Custom Roles" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "" +#~ msgid "Assigned Users" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "" +#~ msgid "Type" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "" +#~ msgid "Default role" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "" +#~ msgid "user" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "" +#~ msgid "No users" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "" +#~ msgid "Custom" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "" +#~ msgid "View" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "" +#~ msgid "Permissions for" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "" +#~ msgid "No permissions assigned." +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "" +#~ msgid "No roles found." +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "" +#~ msgid "About Roles & Permissions" +#~ msgstr "" -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "" +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "" +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "" -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "" +#~ msgid "Delete Role" +#~ msgstr "" -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "" +#~ msgid "No description" +#~ msgstr "" -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "" +#~ msgid "Role Information" +#~ msgstr "" -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "" +#~ msgid "System Role" +#~ msgstr "" -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "" +#~ msgid "Custom Role" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "" +#~ msgid "Total Permissions" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "" +#~ msgid "Created" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "" +#~ msgid "Users with this Role" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "" +#~ msgid "No users assigned to this role yet." +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "" +#~ msgid "This role has no permissions assigned." +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "" +#~ msgid "Back to User" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "" +#~ msgid "Manage Roles for" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "" +#~ msgid "Assign Roles" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "" +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "" +#~ msgid "Update Roles" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "" +#~ msgid "Current Effective Permissions" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "" +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "" +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "" +#~ msgid "Create Webhook" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "" +#~ msgid "Edit Webhook" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "" +#~ msgid "Configure webhook for integrations" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "" +#~ msgid "Webhook URL" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "" +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "" -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "" +#~ msgid "Events" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "" +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "" +#~ msgid "HTTP Method" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "" +#~ msgid "Content Type" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "" +#~ msgid "Max Retries" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "" +#~ msgid "Retry Delay (seconds)" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:22 -msgid "Export all charts as PNG" -msgstr "" +#~ msgid "Timeout (seconds)" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:23 -msgid "Export Charts" -msgstr "" +#~ msgid "Regenerate Secret" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "" +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "" +#~ msgid "Manage webhook integrations" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:63 -msgid "Regular" -msgstr "" +#~ msgid "URL" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:63 -msgid "Overtime" -msgstr "" +#~ msgid "Statistics" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "" +#~ msgid "Total" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "" +#~ msgid "No webhooks configured" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "" +#~ msgid "Create Your First Webhook" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:129 -msgid "Hours Forecast" -msgstr "" +#~ msgid "Webhook details" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Test" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:146 -msgid "Daily Regular vs Overtime" -msgstr "" +#~ msgid "Secret" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "" +#~ msgid "(truncated)" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "" +#~ msgid "Total Deliveries" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "" +#~ msgid "Successful" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "" +#~ msgid "Last Delivery" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "" +#~ msgid "Recent Deliveries" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "" +#~ msgid "Event" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "" +#~ msgid "Attempt" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:499 -msgid "Forecast" -msgstr "" +#~ msgid "Response" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Time" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "" +#~ msgid "Retrying" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "" +#~ msgid "No deliveries yet" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "" +#~ msgid "Send a test webhook event?" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "" +#~ msgid "Test webhook sent successfully!" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "" +#~ msgid "Error:" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "" +#~ msgid "Unknown error" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "" +#~ msgid "Error sending test webhook:" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "" +#~ msgid "Analytics Dashboard" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "" +#~ msgid "Last 7 days" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "" +#~ msgid "Last 30 days" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "" +#~ msgid "Last 90 days" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "" +#~ msgid "Last year" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "" +#~ msgid "Export all charts as PNG" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "" +#~ msgid "Export Charts" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "" +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "" +#~ msgid "Avg Daily Hours" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "" +#~ msgid "Regular" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "" +#~ msgid "Overtime" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "" +#~ msgid "Daily Hours Trend" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "" +#~ msgid "Billable vs Non-Billable" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "" +#~ msgid "Weekly Trends" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "" +#~ msgid "Hours Forecast" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "" +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "" +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "" +#~ msgid "Hours by Time of Day" +#~ msgstr "" -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "" +#~ msgid "Project Efficiency" +#~ msgstr "" -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "" +#~ msgid "User Performance" +#~ msgstr "" -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "" +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "" -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "" +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "" -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "" +#~ msgid "Hour of Day" +#~ msgstr "" -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "Revenue" +#~ msgstr "" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "Forecast" +#~ msgstr "" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "" +#~ msgid "Export" +#~ msgstr "" -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "Key metrics and actionable insights" +#~ msgstr "" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "" +#~ msgid "vs previous period" +#~ msgstr "" -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "of total" +#~ msgstr "" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "" +#~ msgid "Potential Revenue" +#~ msgstr "" -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "" +#~ msgid "Avg rate:" +#~ msgstr "" -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Trend" +#~ msgstr "" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "active projects" +#~ msgstr "" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "Insights & Recommendations" +#~ msgstr "" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "Cumulative" +#~ msgstr "" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Billable Distribution" +#~ msgstr "" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "Task Status Overview" +#~ msgstr "" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "Tasks Completed" +#~ msgstr "" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "In Progress" +#~ msgstr "" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "To Do" +#~ msgstr "" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "Revenue by Project" +#~ msgstr "" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Payments Over Time" +#~ msgstr "" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Payment Methods" +#~ msgstr "" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Revenue vs Payments" +#~ msgstr "" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "" +#~ msgid "Collection Rate" +#~ msgstr "" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Project Completion Rate" +#~ msgstr "" -#: app/templates/approvals/view.html:107 -msgid "Request comment" -msgstr "" +#~ msgid "Billable" +#~ msgstr "" -#: app/templates/approvals/view.html:113 -msgid "Approval comment" -msgstr "" +#~ msgid "Non-Billable" +#~ msgstr "" -#: app/templates/approvals/view.html:119 -msgid "Rejection reason" -msgstr "" +#~ msgid "Completed" +#~ msgstr "" -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "" +#~ msgid "Cancelled" +#~ msgstr "" -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "" +#~ msgid "Completion Rate (%)" +#~ msgstr "" -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "" +#~ msgid "Mobile insights overview" +#~ msgstr "" -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "" +#~ msgid "Daily Avg" +#~ msgstr "" -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "" +#~ msgid "Daily Hours" +#~ msgstr "" -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "" +#~ msgid "Top Projects" +#~ msgstr "" -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "" +#~ msgid "Time Entry Approvals" +#~ msgstr "" -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "" +#~ msgid "Review and approve time entries" +#~ msgstr "" -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "" +#~ msgid "Pending Approvals" +#~ msgstr "" -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "" +#~ msgid "Time Entry" +#~ msgstr "" -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "" +#~ msgid "Requested by" +#~ msgstr "" -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "" +#~ msgid "hours" +#~ msgstr "" -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "" +#~ msgid "Direct" +#~ msgstr "" -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "" +#~ msgid "Approve" +#~ msgstr "" -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "" +#~ msgid "Reject" +#~ msgstr "" -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "" +#~ msgid "No pending approvals" +#~ msgstr "" -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "" +#~ msgid "All time entries have been reviewed." +#~ msgstr "" -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "" +#~ msgid "My Requests" +#~ msgstr "" -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "No pending requests" +#~ msgstr "" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "You have no time entry approval requests." +#~ msgstr "" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Reject Time Entry" +#~ msgstr "" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Reason for rejection" +#~ msgstr "" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "Approval Details" +#~ msgstr "" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Review time entry approval request" +#~ msgstr "" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Time Entry Details" +#~ msgstr "" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "" +#~ msgid "Entry ID" +#~ msgstr "" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Approval Information" +#~ msgstr "" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Requested at" +#~ msgstr "" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Approved by" +#~ msgstr "" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "Approved at" +#~ msgstr "" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Request comment" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "" +#~ msgid "Approval comment" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "Rejection reason" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -msgid "Two-factor authentication" -msgstr "" +#~ msgid "Track who changed what and when" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "Filters" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "" +#~ msgid "Entity Type" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "All Types" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:6 -msgid "Forgot password" -msgstr "" +#~ msgid "Entity ID" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:19 -msgid "Reset your password" -msgstr "" +#~ msgid "All Users" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "Action" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:27 -msgid "Username or email" -msgstr "" +#~ msgid "All Actions" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "Updated" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:32 -msgid "Send reset link" -msgstr "" +#~ msgid "Deleted" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -msgid "Back to sign in" -msgstr "" +#~ msgid "Time Range" +#~ msgstr "" -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "" +#~ msgid "Filter" +#~ msgstr "" -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "" +#~ msgid "Timestamp" +#~ msgstr "" -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "" +#~ msgid "Entity" +#~ msgstr "" -#: app/templates/auth/login.html:50 -msgid "Demo credentials" -msgstr "" +#~ msgid "Field" +#~ msgstr "" -#: app/templates/auth/login.html:72 -msgid "Forgot your password?" -msgstr "" +#~ msgid "Change" +#~ msgstr "" -#: app/templates/auth/login.html:79 -msgid "LDAP authentication is enabled" -msgstr "" +#~ msgid "Reason" +#~ msgstr "" -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "" +#~ msgid "Change Information" +#~ msgstr "" -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "Entity Context" +#~ msgstr "" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "" +#~ msgid "TimeEntry Created" +#~ msgstr "" -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "" +#~ msgid "Entry Owner" +#~ msgstr "" -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "" +#~ msgid "Field Change Details" +#~ msgstr "" -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "" +#~ msgid "Full Entity State" +#~ msgstr "" -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "" +#~ msgid "Before Change" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -msgid "Reset password" -msgstr "" +#~ msgid "After Change" +#~ msgstr "" -#: app/templates/auth/reset_password.html:19 -msgid "Choose a new password" -msgstr "" +#~ msgid "Request Information" +#~ msgstr "" -#: app/templates/auth/reset_password.html:21 -msgid "Enter a new password for your account." -msgstr "" +#~ msgid "Update your password." +#~ msgstr "" -#: app/templates/auth/reset_password.html:27 -msgid "New password" -msgstr "" +#~ msgid "Current Password" +#~ msgstr "" -#: app/templates/auth/reset_password.html:30 -msgid "At least 8 characters" -msgstr "" +#~ msgid "New Password" +#~ msgstr "" -#: app/templates/auth/reset_password.html:32 -msgid "Confirm password" -msgstr "" +#~ msgid "Confirm New Password" +#~ msgstr "" -#: app/templates/auth/reset_password.html:35 -msgid "Repeat your new password" -msgstr "" +#~ msgid "Change Password" +#~ msgstr "" -#: app/templates/auth/reset_password.html:37 -msgid "Update password" -msgstr "" +#~ msgid "Security" +#~ msgstr "" -#: app/templates/auth/two_factor.html:19 -msgid "Enter authentication code" -msgstr "" +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "Two-factor authentication" +#~ msgstr "" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "" +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Passwords do not match" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:18 -msgid "Two-factor authentication is enabled for your account." -msgstr "" +#~ msgid "Forgot password" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Reset your password" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:29 -msgid "Disable 2FA" -msgstr "" +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "Username or email" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "your-username or you@example.com" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "Send reset link" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Back to sign in" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "Login" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "Track time. Stay organized." +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:64 -msgid "Enter the 6-digit code" -msgstr "" +#~ msgid "Sign in to your account" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:67 -msgid "Enable 2FA" -msgstr "" +#~ msgid "Demo credentials" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "Forgot your password?" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "LDAP authentication is enabled" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Sign in" +#~ msgstr "" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "" +#~ msgid "Use the demo credentials above." +#~ msgstr "" -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "" +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "" -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "" +#~ msgid "Or continue with" +#~ msgstr "" -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "" +#~ msgid "Single Sign-On" +#~ msgstr "" -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "" +#~ msgid "Edit Profile" +#~ msgstr "" -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "" +#~ msgid "Member Since" +#~ msgstr "" -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "" +#~ msgid "Reset password" +#~ msgstr "" -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "" +#~ msgid "Choose a new password" +#~ msgstr "" -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "" +#~ msgid "Enter a new password for your account." +#~ msgstr "" -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "" +#~ msgid "New password" +#~ msgstr "" -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "" +#~ msgid "At least 8 characters" +#~ msgstr "" -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "" +#~ msgid "Confirm password" +#~ msgstr "" -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "" +#~ msgid "Repeat your new password" +#~ msgstr "" -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "" +#~ msgid "Update password" +#~ msgstr "" -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "" +#~ msgid "Enter authentication code" +#~ msgstr "" -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "" +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "" +#~ msgid "Code" +#~ msgstr "" -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "" +#~ msgid "Verify" +#~ msgstr "" -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "" +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "" +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "" -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "" +#~ msgid "Enter a current code to disable" +#~ msgstr "" -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "" +#~ msgid "Disable 2FA" +#~ msgstr "" -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "" +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "" +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "" +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "" +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "" +#~ msgid "Provisioning URI:" +#~ msgstr "" -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "" +#~ msgid "2) Verify and enable" +#~ msgstr "" -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "" +#~ msgid "Enter the 6-digit code" +#~ msgstr "" -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "" +#~ msgid "Enable 2FA" +#~ msgstr "" -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "" +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "" +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "" +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "" +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "" -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "" +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "" -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "" +#~ msgid "Unacknowledged Alerts" +#~ msgstr "" -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "" +#~ msgid "Critical Alerts" +#~ msgstr "" -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "" +#~ msgid "Projects with Budgets" +#~ msgstr "" -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "" +#~ msgid "Warning Alerts" +#~ msgstr "" -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "" +#~ msgid "Active Alerts" +#~ msgstr "" -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "" +#~ msgid "Acknowledge" +#~ msgstr "" -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "" +#~ msgid "Project Budget Status" +#~ msgstr "" -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "" +#~ msgid "Budget" +#~ msgstr "" -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "" +#~ msgid "Consumed" +#~ msgstr "" -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "" +#~ msgid "Remaining" +#~ msgstr "" -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "" +#~ msgid "Progress" +#~ msgstr "" -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "" +#~ msgid "over" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "" +#~ msgid "Over Budget" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "" +#~ msgid "Critical" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "" +#~ msgid "Healthy" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "" +#~ msgid "No projects with budgets found" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "" +#~ msgid "Alert acknowledged successfully" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "" +#~ msgid "Failed to acknowledge alert" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "" +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "" +#~ msgid "Back to Dashboard" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "" +#~ msgid "View Project" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "" +#~ msgid "Total Budget" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "" +#~ msgid "Burn Rate Analysis" +#~ msgstr "" -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "" +#~ msgid "Daily Burn Rate" +#~ msgstr "" -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "" +#~ msgid "Weekly Burn Rate" +#~ msgstr "" -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "" +#~ msgid "Monthly Burn Rate" +#~ msgstr "" -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "" +#~ msgid "Period Total" +#~ msgstr "" -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "" +#~ msgid "Based on last" +#~ msgstr "" -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "" +#~ msgid "days" +#~ msgstr "" -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "" +#~ msgid "No burn rate data available" +#~ msgstr "" -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "" +#~ msgid "Completion Estimate" +#~ msgstr "" -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "" +#~ msgid "Estimated Completion Date" +#~ msgstr "" -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "" +#~ msgid "days remaining" +#~ msgstr "" -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "" +#~ msgid "Confidence Level" +#~ msgstr "" -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "" +#~ msgid "No completion estimate available" +#~ msgstr "" -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "" +#~ msgid "Cost Trend Analysis" +#~ msgstr "" -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "" +#~ msgid "Average" +#~ msgstr "" -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "" +#~ msgid "Resource Allocation" +#~ msgstr "" -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "" +#~ msgid "Total Cost" +#~ msgstr "" -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "" +#~ msgid "Hourly Rate" +#~ msgstr "" -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "" +#~ msgid "Team Member" +#~ msgstr "" -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "" +#~ msgid "Cost" +#~ msgstr "" -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "" +#~ msgid "Hours %" +#~ msgstr "" -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "" +#~ msgid "Cost %" +#~ msgstr "" -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "" +#~ msgid "Entries" +#~ msgstr "" -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "" +#~ msgid "Date & Time" +#~ msgstr "" -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "" +#~ msgid "Location" +#~ msgstr "" -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "" +#~ msgid "Reminder" +#~ msgstr "" -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "" +#~ msgid "minutes before" +#~ msgstr "" -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "" +#~ msgid "hours before" +#~ msgstr "" -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "" +#~ msgid "days before" +#~ msgstr "" -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "" +#~ msgid "Recurring" +#~ msgstr "" -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "" +#~ msgid "Until" +#~ msgstr "" -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "" +#~ msgid "Last Updated" +#~ msgstr "" -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "Back to Calendar" +#~ msgstr "" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "Delete Event" +#~ msgstr "" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "Edit Event" +#~ msgstr "" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "New Event" +#~ msgstr "" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "Title" +#~ msgstr "" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Start Date" +#~ msgstr "" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Start Time" +#~ msgstr "" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "End Date" +#~ msgstr "" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "End Time" +#~ msgstr "" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "All Day Event" +#~ msgstr "" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "Event Type" +#~ msgstr "" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "" +#~ msgid "Meeting" +#~ msgstr "" -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "" +#~ msgid "Appointment" +#~ msgstr "" -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "" +#~ msgid "Deadline" +#~ msgstr "" -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "" +#~ msgid "-- None --" +#~ msgstr "" -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "" +#~ msgid "No reminder" +#~ msgstr "" -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "5 minutes before" +#~ msgstr "" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "15 minutes before" +#~ msgstr "" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "" +#~ msgid "30 minutes before" +#~ msgstr "" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "" +#~ msgid "1 hour before" +#~ msgstr "" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "1 day before" +#~ msgstr "" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "Color" +#~ msgstr "" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "Choose a color for this event" +#~ msgstr "" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "Private Event" +#~ msgstr "" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "Private events are only visible to you" +#~ msgstr "" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "Recurring Event" +#~ msgstr "" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "This is a recurring event" +#~ msgstr "" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "Recurrence Pattern" +#~ msgstr "" -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "Recurrence End Date" +#~ msgstr "" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "Update Event" +#~ msgstr "" -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "Create Event" +#~ msgstr "" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "Calendar Integrations" +#~ msgstr "" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Last synced" +#~ msgstr "" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "Manage Integration" +#~ msgstr "" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Disconnect" +#~ msgstr "" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "No Calendar Integrations" +#~ msgstr "" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Connect Google Calendar" +#~ msgstr "" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "How Calendar Integration Works" +#~ msgstr "" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "" +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "" +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "" +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "" +#~ msgid "Day" +#~ msgstr "" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "" +#~ msgid "Week" +#~ msgstr "" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "" +#~ msgid "Month" +#~ msgstr "" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "" +#~ msgid "Today" +#~ msgstr "" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "" +#~ msgid "Calendar colors" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "Legend" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "" +#~ msgid "Loading calendar..." +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "Event Details" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:69 -msgid "View details" -msgstr "" +#~ msgid "Go to all details" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "Team Chat" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "Team chat channel" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "Type a message..." +#~ msgstr "" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "" +#~ msgid "Channel Info" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "" +#~ msgid "Members" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "" +#~ msgid "Channel Settings" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "" +#~ msgid "Upload Attachment" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Select File" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "" +#~ msgid "Selected:" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "Upload" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "Please select a file" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "Failed to upload attachment" +#~ msgstr "" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "Communicate with your team" +#~ msgstr "" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "Channels" +#~ msgstr "" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "Direct Messages" +#~ msgstr "" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "Select a channel to start chatting" +#~ msgstr "" -#: app/templates/client_portal/base.html:418 -msgid "Approval update" -msgstr "" +#~ msgid "Create Channel" +#~ msgstr "" -#: app/templates/client_portal/base.html:418 -msgid "A time entry approval was requested." -msgstr "" +#~ msgid "Channel Name" +#~ msgstr "" -#: app/templates/client_portal/base.html:418 -msgid "An approval was updated." -msgstr "" +#~ msgid "Private channel" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "" +#~ msgid "Edit Client Note" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -msgid "Customize dashboard" -msgstr "" +#~ msgid "Back to Client" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "Client:" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:74 -msgid "Statistics cards" -msgstr "" +#~ msgid "Created on" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:75 -msgid "Pending actions" -msgstr "" +#~ msgid "Last edited on" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:77 -msgid "Recent invoices" -msgstr "" +#~ msgid "Note Content" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:78 -msgid "Recent time entries" -msgstr "" +#~ msgid "Internal note visible only to your team." +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:127 -msgid "Select at least one widget." -msgstr "" +#~ msgid "Mark as important" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:147 -msgid "Failed to save." -msgstr "" +#~ msgid "Activity Feed" +#~ msgstr "" -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "Client Portal" +#~ msgstr "" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Recent project activities" +#~ msgstr "" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "View details" +#~ msgstr "" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "No Activity" +#~ msgstr "" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Approvals" +#~ msgstr "" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "" +#~ msgid "Pending" +#~ msgstr "" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Approved" +#~ msgstr "" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "" +#~ msgid "Rejected" +#~ msgstr "" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "All" +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "" +#~ msgid "Requested on" +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "" +#~ msgid "Request Comment" +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "" +#~ msgid "View Details" +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "" +#~ msgid "No Approvals" +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "" +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "" +#~ msgid "No approvals found for this status." +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "Notifications" +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "" +#~ msgid "More" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "" +#~ msgid "Documents" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "" +#~ msgid "Activity" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "" +#~ msgid "Toggle menu" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "" +#~ msgid "Approval update" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "" +#~ msgid "A time entry approval was requested." +#~ msgstr "" -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "An approval was updated." +#~ msgstr "" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Customize dashboard" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Statistics cards" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Pending actions" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "Recent invoices" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "Recent time entries" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Select at least one widget." +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "" +#~ msgid "Failed to save." +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "View and download project documents" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "" +#~ msgid "Client Document" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Download" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "No Documents" +#~ msgstr "" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "An error occurred" +#~ msgstr "" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "" +#~ msgid "Go to Dashboard" +#~ msgstr "" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Login to Client Portal" +#~ msgstr "" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "Go Back" +#~ msgstr "" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "" +#~ msgid "Invoice Details" +#~ msgstr "" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "" +#~ msgid "Issue Date" +#~ msgstr "" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "" +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "" +#~ msgid "Invoice Items" +#~ msgstr "" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "" +#~ msgid "Quantity" +#~ msgstr "" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "" +#~ msgid "Unit Price" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "Pay Invoice" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "Back to Invoices" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "Unpaid" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "" +#~ msgid "Overdue" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "" +#~ msgid "Amount" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "" +#~ msgid "days overdue" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "" +#~ msgid "No invoices found" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "No paid invoices" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "No unpaid invoices" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "No overdue invoices" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "View All Invoices" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "Issue #%(id)s" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "No description provided." +#~ msgstr "" -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "Priority" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Linked Task" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Assigned To" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Resolved" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Back to Issues" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "" +#~ msgid "Issue Reports" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "" +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "" +#~ msgid "Open" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Closed" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "" +#~ msgid "Report New Issue" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "No issues found." +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "Client Portal Login" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "" +#~ msgid "View your projects and invoices" +#~ msgstr "" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "" +#~ msgid "Sign in to Client Portal" +#~ msgstr "" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "portal_username" +#~ msgstr "" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "Enter your password" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "" +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "" +#~ msgid "Brief description of the issue" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "" +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "" +#~ msgid "Select a project (optional)" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "" +#~ msgid "Low" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "" +#~ msgid "Medium" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "High" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "" +#~ msgid "Urgent" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "" +#~ msgid "Your Name" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "" +#~ msgid "Your name (optional)" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "Your Email" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "Your email (optional)" +#~ msgstr "" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "" +#~ msgid "Submit Issue" +#~ msgstr "" -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "" +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "" +#~ msgid "Unread" +#~ msgstr "" -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Mark All as Read" +#~ msgstr "" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "Mark as read" +#~ msgstr "" -#: app/templates/client_portal/reports.html:81 -msgid "Project progress" -msgstr "" +#~ msgid "No Notifications" +#~ msgstr "" -#: app/templates/client_portal/reports.html:93 -msgid "Est. / Budget" -msgstr "" +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" -#: app/templates/client_portal/reports.html:149 -msgid "Task summary" -msgstr "" +#~ msgid "Project Comments" +#~ msgstr "" -#: app/templates/client_portal/reports.html:153 -#, python-format -msgid "Total tasks: %(count)s" -msgstr "" +#~ msgid "Comments" +#~ msgstr "" -#: app/templates/client_portal/reports.html:164 -msgid "No tasks yet." -msgstr "" +#~ msgid "Add Comment" +#~ msgstr "" -#: app/templates/client_portal/reports.html:178 -msgid "Time by date (last 30 days)" -msgstr "" +#~ msgid "Your Comment" +#~ msgstr "" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Enter your comment..." +#~ msgstr "" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Post Comment" +#~ msgstr "" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "" +#~ msgid "No Comments" +#~ msgstr "" -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "" +#~ msgid "Be the first to comment on this project." +#~ msgstr "" -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "" +#~ msgid "Back to Projects" +#~ msgstr "" -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "" +#~ msgid "Projects for %(client_name)s" +#~ msgstr "" -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "" +#~ msgid "View Time Entries" +#~ msgstr "" -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "" +#~ msgid "No projects found" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "" +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "" +#~ msgid "Quote Details" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "" +#~ msgid "Valid Until" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "" +#~ msgid "This quote has expired." +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "" +#~ msgid "Quote Items" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "" +#~ msgid "SKU" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "Terms & Conditions" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Accept Quote" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "" +#~ msgid "Reject Quote" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "" +#~ msgid "Back to Quotes" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "Reason (optional)" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Expired" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "No quotes found." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "Project and invoice summaries" +#~ msgstr "" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "Hours tracked" +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Project progress" +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "" +#~ msgid "Est. / Budget" +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "No project hours data available." +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "" +#~ msgid "Task summary" +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "Total tasks: %(count)s" +#~ msgstr "" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "" +#~ msgid "No tasks yet." +#~ msgstr "" -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "" +#~ msgid "Time by date (last 30 days)" +#~ msgstr "" -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "" +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "" +#~ msgid "No recent time entries." +#~ msgstr "" -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "" +#~ msgid "Set Password" +#~ msgstr "" -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "" +#~ msgid "Set your password to get started" +#~ msgstr "" -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "" +#~ msgid "Set Your Password" +#~ msgstr "" -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "" +#~ msgid "Set a password for your client portal account" +#~ msgstr "" -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "" +#~ msgid "Confirm Password" +#~ msgstr "" -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "" +#~ msgid "Confirm your password" +#~ msgstr "" -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "" +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "" -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "" +#~ msgid "All Projects" +#~ msgstr "" -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "" +#~ msgid "From Date" +#~ msgstr "" -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "" +#~ msgid "To Date" +#~ msgstr "" -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "" +#~ msgid "Total entries" +#~ msgstr "" -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "" +#~ msgid "Total hours" +#~ msgstr "" -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "" +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "" +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "" +#~ msgid "Clear Filters" +#~ msgstr "" -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "" +#~ msgid "Recent Invoices" +#~ msgstr "" -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "View All" +#~ msgstr "" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "" +#~ msgid "Action Required" +#~ msgstr "" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "" +#~ msgid "Time entries awaiting your review" +#~ msgstr "" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "" +#~ msgid "Review Now" +#~ msgstr "" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "" +#~ msgid "New Updates" +#~ msgstr "" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "" +#~ msgid "Notifications waiting for you" +#~ msgstr "" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "" +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "" +#~ msgid "Total active" +#~ msgstr "" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "" +#~ msgid "Total Invoices" +#~ msgstr "" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "" +#~ msgid "All invoices" +#~ msgstr "" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "" +#~ msgid "Recent Time Entries" +#~ msgstr "" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Export to CSV" +#~ msgstr "" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "" +#~ msgid "Create Client" +#~ msgstr "" -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "" +#~ msgid "Back to Clients" +#~ msgstr "" -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "" +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "" +#~ msgid "Enter client name" +#~ msgstr "" -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "" +#~ msgid "Default Hourly Rate" +#~ msgstr "" -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "" +#~ msgid "e.g. 75.00" +#~ msgstr "" -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "" +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "" +#~ msgid "Supports Markdown" +#~ msgstr "" -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "" +#~ msgid "Brief description of the client or project scope" +#~ msgstr "" -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "" +#~ msgid "Contact Person" +#~ msgstr "" -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "" +#~ msgid "Primary contact name" +#~ msgstr "" -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "" +#~ msgid "contact@client.com" +#~ msgstr "" -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "" +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "" -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "" +#~ msgid "e.g. 50" +#~ msgstr "" -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "" +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "" -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "" +#~ msgid "Prepaid Reset Day" +#~ msgstr "" -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "" -#: app/templates/clients/view.html:24 -msgid "No billable unbilled time for this client." -msgstr "" +#~ msgid "+1 (555) 123-4567" +#~ msgstr "" -#: app/templates/clients/view.html:25 -msgid "No unbilled time" -msgstr "" +#~ msgid "Client address" +#~ msgstr "" -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -msgid "Invoice unbilled time" -msgstr "" +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "" +#~ msgid "Enter value" +#~ msgstr "" -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "" +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "" -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "" +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "" +#~ msgid "Contact Information" +#~ msgstr "" -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "" +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "" -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "" +#~ msgid "Prepaid Hours" +#~ msgstr "" -#: app/templates/clients/view.html:53 -msgid "Client details and associated projects." -msgstr "" +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "" +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "" -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "" +#~ msgid "Edit Client" +#~ msgstr "" -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "" +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "" +#~ msgid "Enable Client Portal" +#~ msgstr "" -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "" +#~ msgid "Enable Issue Reporting" +#~ msgstr "" -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "" +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "" +#~ msgid "Portal Username" +#~ msgstr "" -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "" +#~ msgid "Unique username for portal login" +#~ msgstr "" -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "" +#~ msgid "Portal Password" +#~ msgstr "" -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "" +#~ msgid "Leave empty to keep current password" +#~ msgstr "" -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "" +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "" -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Current portal username" +#~ msgstr "" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "Update Client" +#~ msgstr "" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Send Password Setup Email" +#~ msgstr "" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "Client Statistics" +#~ msgstr "" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "" +#~ msgid "Est. Total Cost" +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "Filter Clients" +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Toggle Filters" +#~ msgstr "" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Hide Filters" +#~ msgstr "" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "" +#~ msgid "Show Filters" +#~ msgstr "" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "No billable unbilled time for this client." +#~ msgstr "" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "No unbilled time" +#~ msgstr "" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "" +#~ msgid "Invoice unbilled time" +#~ msgstr "" -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "" +#~ msgid "Mark client as Inactive?" +#~ msgstr "" -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "" +#~ msgid "Change Client Status" +#~ msgstr "" -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "" +#~ msgid "Mark Inactive" +#~ msgstr "" -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "" +#~ msgid "Activate client?" +#~ msgstr "" -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "" +#~ msgid "Activate Client" +#~ msgstr "" -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "" +#~ msgid "Delete Client" +#~ msgstr "" -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "" +#~ msgid "Client details and associated projects." +#~ msgstr "" -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "" +#~ msgid "Manage" +#~ msgstr "" -#: app/templates/clients/view.html:590 -msgid "Estimated total" -msgstr "" +#~ msgid "Primary" +#~ msgstr "" -#: app/templates/clients/view.html:594 -msgid "Create a draft invoice?" -msgstr "" +#~ msgid "more contact(s)" +#~ msgstr "" -#: app/templates/clients/view.html:597 -msgid "Create invoice" -msgstr "" +#~ msgid "No contacts yet" +#~ msgstr "" -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -msgid "Could not create invoice." -msgstr "" +#~ msgid "Add Contact" +#~ msgstr "" -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "" +#~ msgid "Legacy Contact Info" +#~ msgstr "" -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "" +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "" +#~ msgid "Current cycle start" +#~ msgstr "" -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "" +#~ msgid "Remaining hours" +#~ msgstr "" -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "h" +#~ msgstr "" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Consumed this cycle" +#~ msgstr "" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "" +#~ msgid "Attachments" +#~ msgstr "" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "File" +#~ msgstr "" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "" +#~ msgid "Description (optional)" +#~ msgstr "" -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "" +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "" +#~ msgid "Visible to client in portal" +#~ msgstr "" -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "" +#~ msgid "Client Visible" +#~ msgstr "" -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "" +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "" +#~ msgid "Delete Attachment" +#~ msgstr "" -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "" +#~ msgid "No attachments yet" +#~ msgstr "" -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "" +#~ msgid "Archived" +#~ msgstr "" -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "" +#~ msgid "Recent Hours History" +#~ msgstr "" -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "" +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "" +#~ msgid "No recent time entries found." +#~ msgstr "" -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "" +#~ msgid "Internal Notes" +#~ msgstr "" -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "" +#~ msgid "Add Note" +#~ msgstr "" -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "" +#~ msgid "Add an internal note about this client..." +#~ msgstr "" -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "" +#~ msgid "Save Note" +#~ msgstr "" -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "" +#~ msgid "edited" +#~ msgstr "" -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "" +#~ msgid "Important" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Unmark" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "Mark Important" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "Estimated total" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "Create a draft invoice?" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "Create invoice" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "Could not create invoice." +#~ msgstr "" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "" +#~ msgid "Delete Note" +#~ msgstr "" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "Edited on" +#~ msgstr "" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "Reply" +#~ msgstr "" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "Add Attachment" +#~ msgstr "" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Write your reply..." +#~ msgstr "" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Add Image" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "No comments yet" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Add First Comment" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Edit Comment" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Back" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Editing comment on:" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Originally posted on" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Comment Content" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "All Activities" +#~ msgstr "" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Time Templates" +#~ msgstr "" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "No recent activity" +#~ msgstr "" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "Activity will appear here as you work" +#~ msgstr "" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -msgid "Donate" -msgstr "" +#~ msgid "Load More" +#~ msgstr "" -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Failed to load activities" +#~ msgstr "" -#: app/templates/components/support_modal.html:48 -msgid "Love TimeTracker? Share it" -msgstr "" +#~ msgid "Start a Chat" +#~ msgstr "" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Search users..." +#~ msgstr "" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "" +#~ msgid "Loading users..." +#~ msgstr "" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -msgid "Pagination" -msgstr "" +#~ msgid "Failed to load users" +#~ msgstr "" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "No users found" +#~ msgstr "" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Starting chat..." +#~ msgstr "" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "" +#~ msgid "Failed to start chat" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "" +#~ msgid "Client (auto-selected)" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "" +#~ msgid "Select a client..." +#~ msgstr "" -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "" +#~ msgid "Select a client (optional)" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "" +#~ msgid "Selected" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "" +#~ msgid "Search..." +#~ msgstr "" -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "" +#~ msgid "Select all" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "" +#~ msgid "No items available" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "" +#~ msgid "Apply" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "" +#~ msgid "Sync Now" +#~ msgstr "" -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "" +#~ msgid "Pending Sync" +#~ msgstr "" -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "" +#~ msgid "No pending items" +#~ msgstr "" -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "" +#~ msgid "Sync All" +#~ msgstr "" -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "" +#~ msgid "Error loading queue" +#~ msgstr "" -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "" +#~ msgid "Toggle chat" +#~ msgstr "" -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "" +#~ msgid "Chat" +#~ msgstr "" -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "" +#~ msgid "Start new chat" +#~ msgstr "" -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "" +#~ msgid "Minimize chat" +#~ msgstr "" -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "" +#~ msgid "View full" +#~ msgstr "" -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "" +#~ msgid "Failed to load messages" +#~ msgstr "" -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "" +#~ msgid "No messages yet" +#~ msgstr "" -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "" +#~ msgid "Failed to send message" +#~ msgstr "" -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "" +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "" +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "" +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "" +#~ msgid "Donate" +#~ msgstr "" -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "" +#~ msgid "Buy license (€25)" +#~ msgstr "" -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -msgid "Activity Date" -msgstr "" +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "Home" +#~ msgstr "" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "" +#~ msgid "Pagination" +#~ msgstr "" -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "" +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "" +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "" +#~ msgid "Call" +#~ msgstr "" -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "" +#~ msgid "Message" +#~ msgstr "" -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "" +#~ msgid "Direction" +#~ msgstr "" -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "" +#~ msgid "Outbound" +#~ msgstr "" -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "" +#~ msgid "Inbound" +#~ msgstr "" -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "" +#~ msgid "Subject" +#~ msgstr "" -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "" +#~ msgid "Scheduled" +#~ msgstr "" -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "" +#~ msgid "Follow-up Date" +#~ msgstr "" -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "" +#~ msgid "Content/Notes" +#~ msgstr "" -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "" +#~ msgid "Save Communication" +#~ msgstr "" -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "" +#~ msgid "First Name" +#~ msgstr "" -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "" +#~ msgid "Last Name" +#~ msgstr "" -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "" +#~ msgid "Mobile" +#~ msgstr "" -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "" +#~ msgid "Department" +#~ msgstr "" -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "" +#~ msgid "Contact" +#~ msgstr "" -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "Billing" +#~ msgstr "" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "Technical" +#~ msgstr "" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "Set as primary contact" +#~ msgstr "" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "Tags" +#~ msgstr "" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "Save Contact" +#~ msgstr "" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Set Primary" +#~ msgstr "" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "" +#~ msgid "No contacts found" +#~ msgstr "" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Add First Contact" +#~ msgstr "" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Primary Contact" +#~ msgstr "" -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "Communication History" +#~ msgstr "" -#: app/templates/deals/view.html:180 -msgid "History" -msgstr "" +#~ msgid "Add Communication" +#~ msgstr "" -#: app/templates/deals/view.html:183 -msgid "View full history" -msgstr "" +#~ msgid "No communications recorded" +#~ msgstr "" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Add Activity" +#~ msgstr "" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "" +#~ msgid "Activity Date" +#~ msgstr "" -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "" +#~ msgid "Brief subject or title" +#~ msgstr "" -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "" +#~ msgid "Deal Name" +#~ msgstr "" -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "" +#~ msgid "Select Client" +#~ msgstr "" -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "" +#~ msgid "Select Contact" +#~ msgstr "" -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "" +#~ msgid "Stage" +#~ msgstr "" -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "" +#~ msgid "Deal Value" +#~ msgstr "" -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "" +#~ msgid "Win Probability" +#~ msgstr "" -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "" +#~ msgid "Expected Close Date" +#~ msgstr "" -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "" +#~ msgid "Related Quote" +#~ msgstr "" -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "" +#~ msgid "Select Quote" +#~ msgstr "" -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "" +#~ msgid "Save Deal" +#~ msgstr "" -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "" +#~ msgid "Won" +#~ msgstr "" -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "" +#~ msgid "Lost" +#~ msgstr "" -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "" +#~ msgid "All Stages" +#~ msgstr "" -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "" +#~ msgid "Value" +#~ msgstr "" -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "" +#~ msgid "Probability" +#~ msgstr "" -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "" +#~ msgid "Expected Close" +#~ msgstr "" -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "" +#~ msgid "No deals found" +#~ msgstr "" -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "" +#~ msgid "Create First Deal" +#~ msgstr "" -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "" +#~ msgid "Pipeline" +#~ msgstr "" -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "" +#~ msgid "Deal Information" +#~ msgstr "" -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "" +#~ msgid "Actual Close" +#~ msgstr "" -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "" +#~ msgid "Owner" +#~ msgstr "" -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "" +#~ msgid "Related Lead" +#~ msgstr "" -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "" +#~ msgid "Loss Reason" +#~ msgstr "" -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "" +#~ msgid "Related Project" +#~ msgstr "" -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "" +#~ msgid "by" +#~ msgstr "" -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "" +#~ msgid "No activities recorded yet" +#~ msgstr "" -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "" +#~ msgid "Add first activity" +#~ msgstr "" -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "" +#~ msgid "History" +#~ msgstr "" -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "" +#~ msgid "View full history" +#~ msgstr "" -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "" +#~ msgid "No change history yet" +#~ msgstr "" -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "" +#~ msgid "You Were Mentioned" +#~ msgstr "" -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "" +#~ msgid "View Task & Reply" +#~ msgstr "" -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "" +#~ msgid "Invoice" +#~ msgstr "" -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "" +#~ msgid "Invoice Overdue" +#~ msgstr "" -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "" +#~ msgid "View Invoice" +#~ msgstr "" -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "" +#~ msgid "Quote" +#~ msgstr "" -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "" +#~ msgid "Quote Approval Rejected" +#~ msgstr "" -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "" +#~ msgid "View Quote" +#~ msgstr "" -#: app/templates/expenses/form.html:52 -msgid "Select Category" -msgstr "" +#~ msgid "Approval Requested" +#~ msgstr "" -#: app/templates/expenses/form.html:75 -msgid "Amount Details" -msgstr "" +#~ msgid "Review Quote" +#~ msgstr "" -#: app/templates/expenses/form.html:124 -msgid "Association" -msgstr "" +#~ msgid "Quote Approved" +#~ msgstr "" -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "" +#~ msgid "Quote Expired" +#~ msgstr "" -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "" +#~ msgid "Quote Expiring Soon" +#~ msgstr "" -#: app/templates/expenses/form.html:201 -msgid "Receipt & Additional Information" -msgstr "" +#~ msgid "Quote Sent" +#~ msgstr "" -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "" +#~ msgid "Task Assignment" +#~ msgstr "" -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "" +#~ msgid "View Task" +#~ msgstr "" -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "" +#~ msgid "Test Details" +#~ msgstr "" -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "" +#~ msgid "Your Weekly Summary" +#~ msgstr "" -#: app/templates/expenses/form.html:254 -msgid "Options" -msgstr "" +#~ msgid "400 Bad Request" +#~ msgstr "" -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "" +#~ msgid "Invalid Request" +#~ msgstr "" -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "" +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "" +#~ msgid "Missing or invalid form data" +#~ msgstr "" -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "" +#~ msgid "Malformed request parameters" +#~ msgstr "" -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "" +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "" -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "" +#~ msgid "Insufficient privileges" +#~ msgstr "" -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "" +#~ msgid "Not logged in" +#~ msgstr "" -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "" +#~ msgid "Resource access restrictions" +#~ msgstr "" -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "" +#~ msgid "Try Again" +#~ msgstr "" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "" +#~ msgid "An error occurred while processing your request." +#~ msgstr "" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "" +#~ msgid "Refresh Page" +#~ msgstr "" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "" +#~ msgid "Go to Login" +#~ msgstr "" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "" +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "" +#~ msgid "Brief description of this category..." +#~ msgstr "" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "" +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "e.g., 19.00" +#~ msgstr "" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "Category" +#~ msgstr "" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Basic Information" +#~ msgstr "" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Additional details about the expense..." +#~ msgstr "" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Select Category" +#~ msgstr "" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Amount Details" +#~ msgstr "" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "" +#~ msgid "Association" +#~ msgstr "" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "" +#~ msgid "Payment Details" +#~ msgstr "" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "" +#~ msgid "e.g., Lufthansa" +#~ msgstr "" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "" +#~ msgid "Receipt & Additional Information" +#~ msgstr "" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "" +#~ msgid "Receipt/Invoice Number" +#~ msgstr "" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "" +#~ msgid "e.g., INV-2024-001" +#~ msgstr "" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "" +#~ msgid "Additional notes..." +#~ msgstr "" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "" +#~ msgid "Options" +#~ msgstr "" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "" +#~ msgid "Filter Expenses" +#~ msgstr "" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "" +#~ msgid "Delete Selected Expenses" +#~ msgstr "" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "" +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "" +#~ msgid "Associated With" +#~ msgstr "" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "" +#~ msgid "Reject Expense" +#~ msgstr "" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "" +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "" +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "Delete Expense" +#~ msgstr "" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "Add task" +#~ msgstr "" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "Import/Export Data" +#~ msgstr "" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "" +#~ msgid "Import/Export" +#~ msgstr "" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "" +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "" +#~ msgid "Import Data" +#~ msgstr "" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "" +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "" +#~ msgid "Import time entries from a CSV file" +#~ msgstr "" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "" +#~ msgid "Choose CSV File" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Download Template" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "CSV Import - Clients" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "Skip duplicate clients" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Import from Toggl Track" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Import from Toggl" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Import from Harvest" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "Import time entries from Harvest" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "Restore from Backup" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Import History" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "Export Data" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Export all your personal data" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Export as JSON" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Export as ZIP" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Filtered Export" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Export specific data with filters" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "Export with Filters" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Export Clients" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "Export Clients to CSV" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Create a full database backup" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "Export History" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "API Token" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Workspace ID" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Import" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "Account ID" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "ActivityWatch Setup" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "Server Connection" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Import Settings" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "Default Project" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "No project (import without project)" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "Create a project" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "Lookback Days" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" -#: app/templates/integrations/health.html:4 -msgid "Integration Health" -msgstr "" +#~ msgid "Bucket IDs" +#~ msgstr "" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" -#: app/templates/integrations/health.html:25 -msgid "Last sync" -msgstr "" +#~ msgid "Enable automatic sync" +#~ msgstr "" -#: app/templates/integrations/health.html:26 -msgid "Last status" -msgstr "" +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" -#: app/templates/integrations/health.html:27 -msgid "Credentials" -msgstr "" +#~ msgid "Sync Schedule" +#~ msgstr "" -#: app/templates/integrations/health.html:28 -msgid "Last error" -msgstr "" +#~ msgid "Manual only" +#~ msgstr "" -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "" +#~ msgid "Every hour" +#~ msgstr "" -#: app/templates/integrations/health.html:76 -msgid "Needs refresh" -msgstr "" +#~ msgid "Daily" +#~ msgstr "" -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "Test & Sync" +#~ msgstr "" -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "CalDAV Server URL" +#~ msgstr "" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "Calendar URL" +#~ msgstr "" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "optional if server URL is provided" +#~ msgstr "" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "Calendar Name" +#~ msgstr "" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "My Calendar" +#~ msgstr "" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "Authentication" +#~ msgstr "" -#: app/templates/integrations/manage.html:43 -msgid "Linear API Key" -msgstr "" +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "Verify SSL certificate" +#~ msgstr "" -#: app/templates/integrations/manage.html:60 -msgid "Save API Key" -msgstr "" +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -msgid "Stored; leave empty to keep" -msgstr "" +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" -#: app/templates/integrations/manage.html:101 -msgid "Enter API secret" -msgstr "" +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Integration Health" +#~ msgstr "" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "Scope" +#~ msgstr "" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "Last sync" +#~ msgstr "" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "Last status" +#~ msgstr "" -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Credentials" +#~ msgstr "" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "Last error" +#~ msgstr "" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "Partial" +#~ msgstr "" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "Needs refresh" +#~ msgstr "" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "Expires" +#~ msgstr "" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Not Connected" +#~ msgstr "" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Synced" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Not Set Up" +#~ msgstr "" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Connect" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Integration" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Guided Setup Wizard" +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Launch Setup Wizard" +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Linear API Key" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Personal API Key" +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Save API Key" +#~ msgstr "" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "Stored; leave empty to keep" +#~ msgstr "" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Enter API secret" +#~ msgstr "" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "CalDAV Authentication" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "Integration Configuration" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "Connection Management" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "Connector Error" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "Sync OK" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "Sync Error" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "No expiration" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "Not connected" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Last Sync" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "Last Error" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Connect Trello" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "Back to Integrations" +#~ msgstr "" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "Integration Status" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "Token Expires" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "Sync History" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "No sync events yet" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "Configure ActivityWatch" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "Edit Configuration" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "Workspace GID" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Step 3: Project Selection" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "Project GIDs" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "Sync Direction" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "Items to Sync" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "Subtasks" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "Auto Sync" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "Sync Completed Tasks" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "Step 5: Review & Save" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "Finish" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "Step" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Create Projects" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "Pull Requests" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Projects (Repositories)" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "Issue States to Sync" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "Open Issues" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "Closed Issues" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "Webhook Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "Enter webhook secret" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Weekly" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "All repositories" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Repository IDs" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "Merge Requests" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Instance URL" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Jira Instance URL" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "JQL Query" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Issues (Tasks)" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "Jira URL" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "Please enter Jira URL first." +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "Step 3: Review & Save" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "Step 2: Company Selection" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Use Sandbox" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "" +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "" +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "" +#~ msgid "Customers" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "" +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "" +#~ msgid "Default Expense Account ID" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "" +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "" +#~ msgid "Customer Mappings" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "" +#~ msgid "JSON" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "" +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "" +#~ msgid "Account Mappings" +#~ msgstr "" -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "" +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "" +#~ msgid "Company ID" +#~ msgstr "" -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "" +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "" +#~ msgid "Get your API key and secret from" +#~ msgstr "" -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "" +#~ msgid "Enter API Key" +#~ msgstr "" -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "" +#~ msgid "Enter API Secret" +#~ msgstr "" -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "" +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "" +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "" +#~ msgid "API Key" +#~ msgstr "" -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "" +#~ msgid "Not tested" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Connection failed" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "" +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "" +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "" +#~ msgid "Default Expense Account Code" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "" +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "Contact Mappings" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Stock Item" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "Select Item" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Warehouse" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "Select Warehouse" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Adjustment Quantity" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "" +#~ msgid "Additional details about this adjustment" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "" +#~ msgid "Record Adjustment" +#~ msgstr "" -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "" +#~ msgid "All Warehouses" +#~ msgstr "" -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "" +#~ msgid "All Items" +#~ msgstr "" -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "" +#~ msgid "Date From" +#~ msgstr "" -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "" +#~ msgid "Date To" +#~ msgstr "" -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Item" +#~ msgstr "" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "" +#~ msgid "No adjustments found." +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "" +#~ msgid "On Hand" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "" +#~ msgid "Reorder Point" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "" +#~ msgid "Shortfall" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "" +#~ msgid "Reorder Qty" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "" +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "" +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "" +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "" +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "" +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "" +#~ msgid "Return requires a positive quantity." +#~ msgstr "" -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "" +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "" +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "" +#~ msgid "Movement Type" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "" +#~ msgid "Return" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "" +#~ msgid "Waste" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "" +#~ msgid "Devaluation" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "" +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "" +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "" +#~ msgid "Apply devaluation" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "" +#~ msgid "Method" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "" +#~ msgid "Percent off default cost" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "" +#~ msgid "Fixed new unit cost" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "" +#~ msgid "Percent" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "" +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "" +#~ msgid "New Unit Cost" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "" +#~ msgid "e.g., Physical count correction" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "" +#~ msgid "Record Movement" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "" +#~ msgid "Reference Type" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "" +#~ msgid "Manual" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "" +#~ msgid "Unit Cost" +#~ msgstr "" -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "" +#~ msgid "Reference" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "" +#~ msgid "Devalued" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "" +#~ msgid "No stock movements found." +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "" +#~ msgid "Supplier" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "" +#~ msgid "Select Supplier" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "" +#~ msgid "Order Date" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "" +#~ msgid "Expected Delivery Date" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "" +#~ msgid "Notes visible to supplier" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "" +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "" +#~ msgid "Items" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "" +#~ msgid "Add Item" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "" +#~ msgid "Qty" +#~ msgstr "" -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "" +#~ msgid "Supplier SKU" +#~ msgstr "" -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "" +#~ msgid "Create Purchase Order" +#~ msgstr "" -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "" +#~ msgid "Draft" +#~ msgstr "" -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "" +#~ msgid "Sent" +#~ msgstr "" -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "" +#~ msgid "Confirmed" +#~ msgstr "" -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "" +#~ msgid "Received" +#~ msgstr "" -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "" +#~ msgid "All Suppliers" +#~ msgstr "" -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "" +#~ msgid "PO Number" +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "" +#~ msgid "Expected Delivery" +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "" +#~ msgid "No purchase orders found." +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "" +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "" +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "" +#~ msgid "Purchase Order Details" +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "" +#~ msgid "Received Date" +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "" +#~ msgid "Quantity Ordered" +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "" +#~ msgid "Quantity Received" +#~ msgstr "" -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "" +#~ msgid "Line Total" +#~ msgstr "" -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "" +#~ msgid "Shipping" +#~ msgstr "" -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "" +#~ msgid "Receive Purchase Order" +#~ msgstr "" -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "" +#~ msgid "Mark as Received" +#~ msgstr "" -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "" +#~ msgid "No items in this purchase order." +#~ msgstr "" -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "" +#~ msgid "Total Items" +#~ msgstr "" -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "" +#~ msgid "Total Warehouses" +#~ msgstr "" -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "" +#~ msgid "Total Inventory Value" +#~ msgstr "" -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "" +#~ msgid "Low Stock Items" +#~ msgstr "" -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "" +#~ msgid "Available Reports" +#~ msgstr "" -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "" +#~ msgid "Stock Valuation" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "" +#~ msgid "View inventory value by warehouse" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "" +#~ msgid "Movement History" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "" +#~ msgid "Detailed movement log" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "" +#~ msgid "Turnover Analysis" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "" +#~ msgid "Inventory turnover rates" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "" +#~ msgid "Low Stock Report" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "" +#~ msgid "Items below reorder point" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "" +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "" +#~ msgid "Quantity On Hand" +#~ msgstr "" -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "" +#~ msgid "Reorder Quantity" +#~ msgstr "" -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "" +#~ msgid "Create PO" +#~ msgstr "" -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "" +#~ msgid "All Stock Levels are Good" +#~ msgstr "" -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "" +#~ msgid "No items are currently below their reorder point." +#~ msgstr "" -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "" +#~ msgid "No movements found." +#~ msgstr "" -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "" +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "" +#~ msgid "Total Sold" +#~ msgstr "" -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "" +#~ msgid "Avg Stock Level" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "" +#~ msgid "Turnover Rate" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "" +#~ msgid "Fast Moving" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "" +#~ msgid "Normal" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Slow Moving" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "Very Slow" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "No sales data found for the selected period." +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "" +#~ msgid "Inventory Valuation" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "" +#~ msgid "Total Value" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "" +#~ msgid "No items found with cost information." +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "" +#~ msgid "Reserved" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "" +#~ msgid "Fulfilled" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "" +#~ msgid "Reserved At" +#~ msgstr "" -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "" +#~ msgid "Expires At" +#~ msgstr "" -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "" +#~ msgid "Fulfill this reservation?" +#~ msgstr "" -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "" +#~ msgid "Cancel this reservation?" +#~ msgstr "" -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "" +#~ msgid "No reservations found." +#~ msgstr "" -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "" +#~ msgid "Unit" +#~ msgstr "" -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "" +#~ msgid "Default Cost" +#~ msgstr "" -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "" +#~ msgid "Default Price" +#~ msgstr "" -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "" +#~ msgid "Image URL" +#~ msgstr "" -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "" +#~ msgid "Track Inventory" +#~ msgstr "" -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "" +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "" -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "" +#~ msgid "MOQ" +#~ msgstr "" -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "" +#~ msgid "Lead Time (days)" +#~ msgstr "" -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "" +#~ msgid "Preferred" +#~ msgstr "" -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "" +#~ msgid "Add Supplier" +#~ msgstr "" -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "" +#~ msgid "No movement history found for this item." +#~ msgstr "" -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "" +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "" -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "" +#~ msgid "Active Only" +#~ msgstr "" -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "" +#~ msgid "Total Qty" +#~ msgstr "" -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "" +#~ msgid "Available" +#~ msgstr "" -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "" +#~ msgid "Low Stock" +#~ msgstr "" -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "" +#~ msgid "No stock items found." +#~ msgstr "" -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "" +#~ msgid "Item Details" +#~ msgstr "" -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "" +#~ msgid "Trackable" +#~ msgstr "" -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "" +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "" -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "" +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "" +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "" +#~ msgid "No devaluation" +#~ msgstr "" -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "" +#~ msgid "Recent Stock Movements" +#~ msgstr "" -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "" +#~ msgid "Total On Hand" +#~ msgstr "" -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "" +#~ msgid "Total Reserved" +#~ msgstr "" -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "" +#~ msgid "Total Available" +#~ msgstr "" -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "" +#~ msgid "Low Stock Alert" +#~ msgstr "" -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "" +#~ msgid "This item is not trackable." +#~ msgstr "" -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "" +#~ msgid "Active Reservations" +#~ msgstr "" -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "Quantity Reserved" +#~ msgstr "" -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Last Counted" +#~ msgstr "" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "" -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "No stock levels found." +#~ msgstr "" -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "Low Stock Only" +#~ msgstr "" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Oversold" +#~ msgstr "" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "No stock items found in this warehouse." +#~ msgstr "" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Supplier Code" +#~ msgstr "" -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "Payment Terms" +#~ msgstr "" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "" +#~ msgid "Code, name, email" +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "" +#~ msgid "No suppliers found." +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "Supplier Details" +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Stock Items from this Supplier" +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Lead Time" +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "No stock items associated with this supplier." +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "" +#~ msgid "Preferred Items" +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "From Warehouse" +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "" +#~ msgid "Select Source Warehouse" +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "To Warehouse" +#~ msgstr "" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "" +#~ msgid "Select Destination Warehouse" +#~ msgstr "" -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "" +#~ msgid "Optional notes about this transfer" +#~ msgstr "" -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "" +#~ msgid "Create Transfer" +#~ msgstr "" -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "" +#~ msgid "No transfers found." +#~ msgstr "" -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "" +#~ msgid "Warehouse Code" +#~ msgstr "" -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "" +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "" -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "" +#~ msgid "Contact Email" +#~ msgstr "" -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Contact Phone" +#~ msgstr "" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "No warehouses found." +#~ msgstr "" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "" +#~ msgid "Warehouse Details" +#~ msgstr "" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "" +#~ msgid "No stock items in this warehouse." +#~ msgstr "" -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "" +#~ msgid "Total Quantity" +#~ msgstr "" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "" +#~ msgid "Current Approver" +#~ msgstr "" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "" +#~ msgid "You" +#~ msgstr "" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "" +#~ msgid "No Pending Approvals" +#~ msgstr "" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "" +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Reject Invoice Approval" +#~ msgstr "" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Reason for Rejection" +#~ msgstr "" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "" +#~ msgid "Request Invoice Approval" +#~ msgstr "" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "" +#~ msgid "Back to Invoice" +#~ msgstr "" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Select Approvers" +#~ msgstr "" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "" +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "" +#~ msgid "Request Approval" +#~ msgstr "" -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "" +#~ msgid "Approval Status" +#~ msgstr "" -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "" +#~ msgid "Requested By" +#~ msgstr "" -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "" +#~ msgid "Requested At" +#~ msgstr "" -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "" +#~ msgid "Approved By" +#~ msgstr "" -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "" +#~ msgid "Rejected By" +#~ msgstr "" -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "" +#~ msgid "Rejection Reason" +#~ msgstr "" -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "" +#~ msgid "Approval Stages" +#~ msgstr "" -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "" +#~ msgid "Quick Actions" +#~ msgstr "" -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "" +#~ msgid "Waiting for approval from another user." +#~ msgstr "" -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "" +#~ msgid "Export to Excel" +#~ msgstr "" -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "" +#~ msgid "Partially Paid" +#~ msgstr "" -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "" +#~ msgid "Fully Paid" +#~ msgstr "" -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "" +#~ msgid "Create Invoice" +#~ msgstr "" -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "" +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "" -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "" +#~ msgid "Select a project" +#~ msgstr "" -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "" +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "" -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "" +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "" +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "" +#~ msgid "Tax Rate (%)" +#~ msgstr "" -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "" +#~ msgid "Tips" +#~ msgstr "" -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "" +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "" -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "" +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "" -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "" +#~ msgid "Edit Invoice" +#~ msgstr "" -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "" +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "" -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "" +#~ msgid "Time-based services and hourly work" +#~ msgstr "" -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "" +#~ msgid "Project / Stock Item" +#~ msgstr "" -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "" +#~ msgid "Task / Warehouse" +#~ msgstr "" -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "" +#~ msgid "Project hours" +#~ msgstr "" -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "" +#~ msgid "Select Stock Item" +#~ msgstr "" -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "" +#~ msgid "e.g., Web Development Services" +#~ msgstr "" -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "" +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "" +#~ msgid "Remove item" +#~ msgstr "" -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "" +#~ msgid "Items Subtotal" +#~ msgstr "" -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "" +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "" -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "" +#~ msgid "Add Expense" +#~ msgstr "" -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "" +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "" -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "" +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "" -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "" +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "" -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "" +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "" -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "" +#~ msgid "Travel" +#~ msgstr "" -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "" +#~ msgid "Meals" +#~ msgstr "" -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "" +#~ msgid "Accommodation" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "" +#~ msgid "Supplies" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "" +#~ msgid "Software" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "" +#~ msgid "Equipment" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "" +#~ msgid "Services" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "" +#~ msgid "Marketing" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "" +#~ msgid "Training" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "" +#~ msgid "Other" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "" +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "" +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "" +#~ msgid "Unlink expense from invoice" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "" +#~ msgid "Expenses Subtotal" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "" +#~ msgid "Extra Goods" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "" +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "" +#~ msgid "Add Good" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "" +#~ msgid "Price" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "" +#~ msgid "e.g., Software License" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "" +#~ msgid "Product" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "" +#~ msgid "Service" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "" +#~ msgid "Material" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "" +#~ msgid "Remove good" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "" +#~ msgid "Goods Subtotal" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "" +#~ msgid "Live Preview" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "" +#~ msgid "Payment" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "" +#~ msgid "Goods" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "" +#~ msgid "Generate from Time/Costs" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "" +#~ msgid "Record Payment" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "" +#~ msgid "Export PDF" +#~ msgstr "" -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "" +#~ msgid "Export CSV" +#~ msgstr "" -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "" +#~ msgid "Duplicate Invoice" +#~ msgstr "" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "" +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "" +#~ msgid "Unlink Expense" +#~ msgstr "" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "" +#~ msgid "Unlink" +#~ msgstr "" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "" +#~ msgid "Back to Edit" +#~ msgstr "" -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "" +#~ msgid "Unbilled Time Entries" +#~ msgstr "" -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "" +#~ msgid "entries" +#~ msgstr "" -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "" +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "" +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "" +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "" +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "" +#~ msgid "Vendor" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "" +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "" +#~ msgid "Project Extra Goods" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "" +#~ msgid "No extra goods found for this project." +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "" +#~ msgid "Add Selected to Invoice" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "" +#~ msgid "Selection Summary" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "" +#~ msgid "Total available hours" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "" +#~ msgid "Total available costs" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "" +#~ msgid "Total available expenses" +#~ msgstr "" -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "" +#~ msgid "Total available goods" +#~ msgstr "" -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Prepaid Hours Overview" +#~ msgstr "" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "" +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "" +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "" +#~ msgid "Filter Invoices" +#~ msgstr "" -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Invoice number or client" +#~ msgstr "" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "Delete Selected Invoices" +#~ msgstr "" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "" +#~ msgid "Select Status" +#~ msgstr "" -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "" +#~ msgid "Invoice Reference" +#~ msgstr "" -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "" +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" -#: app/templates/issues/list.html:169 -msgid "No issues found" -msgstr "" +#~ msgid "Delete Invoice" +#~ msgstr "" -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Warning:" +#~ msgstr "" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "INVOICE" +#~ msgstr "" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "" +#~ msgid "Invoice #" +#~ msgstr "" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "Bill To" +#~ msgstr "" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "Quantity (Hours)" +#~ msgstr "" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Expense" +#~ msgstr "" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "Subtotal:" +#~ msgstr "" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "" +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "" +#~ msgid "Total Amount:" +#~ msgstr "" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "" +#~ msgid "Notes:" +#~ msgstr "" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "" +#~ msgid "Terms:" +#~ msgstr "" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "" +#~ msgid "Payment Information:" +#~ msgstr "" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "" +#~ msgid "Terms & Conditions:" +#~ msgstr "" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "" +#~ msgid "Download UBL" +#~ msgstr "" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "" +#~ msgid "Pay Online" +#~ msgstr "" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "" +#~ msgid "Payment Reference" +#~ msgstr "" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "" +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "" +#~ msgid "Invoice Approval" +#~ msgstr "" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "" +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "" +#~ msgid "Payment History" +#~ msgstr "" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "" +#~ msgid "Send Invoice via Email" +#~ msgstr "" -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "" +#~ msgid "Edit Issue" +#~ msgstr "" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "" +#~ msgid "Unassigned" +#~ msgstr "" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "" +#~ msgid "Create Issue" +#~ msgstr "" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "" +#~ msgid "Filter Issues" +#~ msgstr "" -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "" +#~ msgid "Search by title or description" +#~ msgstr "" -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "" +#~ msgid "Apply Filters" +#~ msgstr "" -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "" +#~ msgid "Page" +#~ msgstr "" -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "" +#~ msgid "of" +#~ msgstr "" -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "" +#~ msgid "No issues found" +#~ msgstr "" -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "" +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "" +#~ msgid "Create New Issue" +#~ msgstr "" -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "" +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "" +#~ msgid "Delete Issue" +#~ msgstr "" -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "" +#~ msgid "Task Management" +#~ msgstr "" -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "" +#~ msgid "Link to existing task" +#~ msgstr "" -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "" +#~ msgid "Select a task" +#~ msgstr "" -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "" +#~ msgid "Link" +#~ msgstr "" -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "" +#~ msgid "Kanban" +#~ msgstr "" -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "" -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "" -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "" -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "" +#~ msgid "moved to" +#~ msgstr "" -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "" -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "" -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "" -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "" +#~ msgid "Project:" +#~ msgstr "" -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "" -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "" +#~ msgid "Add Column" +#~ msgstr "" -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "" -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "" +#~ msgid "Key" +#~ msgstr "" -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "" +#~ msgid "Complete?" +#~ msgstr "" -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "" -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "" +#~ msgid "Edit column" +#~ msgstr "" -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "" -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "" +#~ msgid "Tips:" +#~ msgstr "" -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "" -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "" -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "" -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "" +#~ msgid "Key:" +#~ msgstr "" -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "" -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "" -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "" -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "" -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "" -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "" -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "Column Label" +#~ msgstr "" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "Column Key" +#~ msgstr "" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Global (for all projects)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Icon Class" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Browse icons" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Secondary (Gray)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Danger (Red)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Info (Cyan)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Mark as Complete State" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Create Column" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Note:" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Edit Kanban Column form" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Preview" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "System Column:" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Decrease quantity" +#~ msgstr "" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "Adjustment quantity" +#~ msgstr "" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Increase quantity" +#~ msgstr "" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "Kiosk adjustment" +#~ msgstr "" -#: app/templates/leads/convert_to_client.html:23 -msgid "Lead summary" -msgstr "" +#~ msgid "Physical count" +#~ msgstr "" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "Found" +#~ msgstr "" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "" +#~ msgid "Damaged" +#~ msgstr "" -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "" +#~ msgid "Apply stock adjustment" +#~ msgstr "" -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "" +#~ msgid "Apply Adjustment" +#~ msgstr "" -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "" +#~ msgid "Undo last adjustment" +#~ msgstr "" -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "" +#~ msgid "Undo Last Adjustment" +#~ msgstr "" -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "" +#~ msgid "Transfer quantity" +#~ msgstr "" -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "" +#~ msgid "Transfer stock" +#~ msgstr "" -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "" +#~ msgid "Transfer Stock" +#~ msgstr "" -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "" +#~ msgid "Stop timer" +#~ msgstr "" -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "" +#~ msgid "Stop Timer" +#~ msgstr "" -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "" +#~ msgid "Select project..." +#~ msgstr "" -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "No projects available" +#~ msgstr "" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "No task" +#~ msgstr "" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "What are you working on?" +#~ msgstr "" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "" +#~ msgid "Start timer" +#~ msgstr "" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "" +#~ msgid "Recent Items" +#~ msgstr "" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "" +#~ msgid "Kiosk Login" +#~ msgstr "" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "" +#~ msgid "Barcode scanning" +#~ msgstr "" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "" +#~ msgid "Stock management" +#~ msgstr "" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "" +#~ msgid "Time tracking" +#~ msgstr "" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "" +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "" +#~ msgid "Select your username to continue" +#~ msgstr "" -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "" +#~ msgid "Toggle Theme" +#~ msgstr "" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "" +#~ msgid "Select User" +#~ msgstr "" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "" +#~ msgid "your-username" +#~ msgstr "" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "" +#~ msgid "Standard Login" +#~ msgstr "" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "" +#~ msgid "Convert to Client" +#~ msgstr "" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "" +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "" +#~ msgid "Lead summary" +#~ msgstr "" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "" +#~ msgid "Convert to Deal" +#~ msgstr "" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "" +#~ msgid "Source" +#~ msgstr "" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "" +#~ msgid "Website, referral, ad..." +#~ msgstr "" -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "" +#~ msgid "Lead Score" +#~ msgstr "" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "" +#~ msgid "Estimated Value" +#~ msgstr "" -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "" +#~ msgid "Save Lead" +#~ msgstr "" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "" +#~ msgid "Name, company, email..." +#~ msgstr "" -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "" +#~ msgid "All Statuses" +#~ msgstr "" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "" +#~ msgid "Website, referral..." +#~ msgstr "" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "" +#~ msgid "Score" +#~ msgstr "" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "" +#~ msgid "No leads found" +#~ msgstr "" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "" +#~ msgid "Create First Lead" +#~ msgstr "" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "" +#~ msgid "Mark this lead as lost?" +#~ msgstr "" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "" +#~ msgid "Mark Lost" +#~ msgstr "" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "" +#~ msgid "Lead" +#~ msgstr "" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "" +#~ msgid "No contact details yet" +#~ msgstr "" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "" +#~ msgid "Lead Details" +#~ msgstr "" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "" +#~ msgid "Professional time tracking and project management" +#~ msgstr "" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "" +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "" +#~ msgid "Invoicing" +#~ msgstr "" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "" +#~ msgid "Smart Timers" +#~ msgstr "" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "" +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "" +#~ msgid "Client Management" +#~ msgstr "" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "" +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "" +#~ msgid "Task System" +#~ msgstr "" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "" +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "" +#~ msgid "PDF Invoices" +#~ msgstr "" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "" +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "" +#~ msgid "Core Features" +#~ msgstr "" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "" +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "" +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "" +#~ msgid "Client and project organization" +#~ msgstr "" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "" +#~ msgid "Role-based access and user profiles" +#~ msgstr "" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "" +#~ msgid "Advanced Features" +#~ msgstr "" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "" +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "" +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "" +#~ msgid "REST API for integrations" +#~ msgstr "" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "" +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "" +#~ msgid "Platform Support" +#~ msgstr "" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "" +#~ msgid "Web Application" +#~ msgstr "" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -msgid "Support updates" -msgstr "" +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Mobile responsive design" +#~ msgstr "" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "" +#~ msgid "Operating Systems" +#~ msgstr "" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "" +#~ msgid "Windows, macOS, Linux" +#~ msgstr "" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "" +#~ msgid "Android and iOS (browser)" +#~ msgstr "" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "" +#~ msgid "Raspberry Pi support" +#~ msgstr "" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "" +#~ msgid "Dockerized deployment" +#~ msgstr "" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "" +#~ msgid "Database Support" +#~ msgstr "" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "" +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "" +#~ msgid "SQLite (dev/test)" +#~ msgstr "" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "" +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "" +#~ msgid "Backup and restoration tools" +#~ msgstr "" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Technical Specifications" +#~ msgstr "" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -msgid "View time entries" -msgstr "" +#~ msgid "Technology Stack" +#~ msgstr "" -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "" +#~ msgid "Backend" +#~ msgstr "" -#: app/templates/main/dashboard.html:43 -msgid "Start timer with same project, task and notes as last entry" -msgstr "" +#~ msgid "Frontend" +#~ msgstr "" -#: app/templates/main/dashboard.html:44 -msgid "Repeat last" -msgstr "" +#~ msgid "Deployment" +#~ msgstr "" -#: app/templates/main/dashboard.html:46 -msgid "Start timer with last project and notes?" -msgstr "" +#~ msgid "Key Capabilities" +#~ msgstr "" -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "Real-time" +#~ msgstr "" -#: app/templates/main/dashboard.html:70 -msgid "Paused" -msgstr "" +#~ msgid "i18n" +#~ msgstr "" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -msgid "Break" -msgstr "" +#~ msgid "Open Source & Community" +#~ msgstr "" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "Open Source Benefits" +#~ msgstr "" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Full source code available on GitHub" +#~ msgstr "" -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "" +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Community-driven development" +#~ msgstr "" -#: app/templates/main/dashboard.html:102 -msgid "Adjust time" -msgstr "" +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Deployment Options" +#~ msgstr "" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Docker images (GHCR)" +#~ msgstr "" -#: app/templates/main/dashboard.html:108 -msgid "Add 5 min" -msgstr "" +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "" -#: app/templates/main/dashboard.html:109 -msgid "Add 15 min" -msgstr "" +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "" -#: app/templates/main/dashboard.html:118 -msgid "Resume timer" -msgstr "" +#~ msgid "View on GitHub" +#~ msgstr "" -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -msgid "Resume" -msgstr "" +#~ msgid "Support updates" +#~ msgstr "" -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "Support TimeTracker Development" +#~ msgstr "" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "" +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Getting Help & Resources" +#~ msgstr "" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "" +#~ msgid "Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Step-by-step guides for all features." +#~ msgstr "" -#: app/templates/main/dashboard.html:144 -msgid "Resume last session" -msgstr "" +#~ msgid "View Help" +#~ msgstr "" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "System Information" +#~ msgstr "" -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "Status, versions, and configuration details." +#~ msgstr "" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -msgid "overtime" -msgstr "" +#~ msgid "Admin access required" +#~ msgstr "" -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "Community Support" +#~ msgstr "" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Report issues, request features, contribute." +#~ msgstr "" -#: app/templates/main/dashboard.html:214 -msgid "Overtime (YTD)" -msgstr "" +#~ msgid "GitHub Issues" +#~ msgstr "" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "View time entries" +#~ msgstr "" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "Here's a quick overview of your work." +#~ msgstr "" -#: app/templates/main/dashboard.html:233 -msgid "Value insights" -msgstr "" +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "" -#: app/templates/main/dashboard.html:234 -msgid "Your tracked time at a glance" -msgstr "" +#~ msgid "Repeat last" +#~ msgstr "" -#: app/templates/main/dashboard.html:246 -msgid "Total hours tracked" -msgstr "" +#~ msgid "Start timer with last project and notes?" +#~ msgstr "" -#: app/templates/main/dashboard.html:254 -msgid "Active days" -msgstr "" +#~ msgid "Quick start" +#~ msgstr "" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "Paused" +#~ msgstr "" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "Break" +#~ msgstr "" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "Running" +#~ msgstr "" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Break so far" +#~ msgstr "" -#: app/templates/main/dashboard.html:273 -msgid "Estimated value tracked" -msgstr "" +#~ msgid "Started at" +#~ msgstr "" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Elapsed" +#~ msgstr "" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Adjust time" +#~ msgstr "" -#: app/templates/main/dashboard.html:285 -msgid "hrs this week" -msgstr "" +#~ msgid "Subtract 15 min" +#~ msgstr "" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Subtract 5 min" +#~ msgstr "" -#: app/templates/main/dashboard.html:287 -msgid "This week" -msgstr "" +#~ msgid "Add 5 min" +#~ msgstr "" -#: app/templates/main/dashboard.html:288 -msgid "Last week" -msgstr "" +#~ msgid "Add 15 min" +#~ msgstr "" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "Resume timer" +#~ msgstr "" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Resume" +#~ msgstr "" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "" +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" -#: app/templates/main/dashboard.html:329 -msgid "View all" -msgstr "" +#~ msgid "Pause" +#~ msgstr "" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "" +#~ msgid "Stop and save current time" +#~ msgstr "" -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "" +#~ msgid "Stop & save" +#~ msgstr "" -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "" +#~ msgid "No active timer." +#~ msgstr "" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "" +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "" +#~ msgid "Resume last session" +#~ msgstr "" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "" +#~ msgid "Today's Hours" +#~ msgstr "" -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "" +#~ msgid "overtime" +#~ msgstr "" -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "" +#~ msgid "Week's Hours" +#~ msgstr "" -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "" +#~ msgid "Month's Hours" +#~ msgstr "" -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "" +#~ msgid "Overtime (YTD)" +#~ msgstr "" -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "" +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "" +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" -#: app/templates/main/dashboard.html:480 -msgid "Time by project (last 7 days)" -msgstr "" +#~ msgid "Loading insights…" +#~ msgstr "" -#: app/templates/main/dashboard.html:482 -msgid "View report" -msgstr "" +#~ msgid "Value insights" +#~ msgstr "" -#: app/templates/main/dashboard.html:486 -msgid "Time distribution by project for the last 7 days" -msgstr "" +#~ msgid "Your tracked time at a glance" +#~ msgstr "" -#: app/templates/main/dashboard.html:525 -msgid "No time logged in the last 7 days." -msgstr "" +#~ msgid "Total hours tracked" +#~ msgstr "" -#: app/templates/main/dashboard.html:526 -msgid "Start tracking to see distribution here." -msgstr "" +#~ msgid "Active days" +#~ msgstr "" -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "" +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "" +#~ msgid "Hours per day last seven days" +#~ msgstr "" -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Most productive day" +#~ msgstr "" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Avg session length" +#~ msgstr "" -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Estimated value tracked" +#~ msgstr "" -#: app/templates/main/dashboard.html:639 -#, python-format -msgid "You have created %(count)s entries" -msgstr "" +#~ msgid "This week vs last week" +#~ msgstr "" -#: app/templates/main/dashboard.html:641 -#, python-format -msgid "Reports generated: %(n)s" -msgstr "" +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "hrs this week" +#~ msgstr "" -#: app/templates/main/dashboard.html:647 -msgid "Share & support" -msgstr "" +#~ msgid "vs last week" +#~ msgstr "" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "This week" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Last week" +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "View all" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, python-format -msgid "Description must be at least %(min)s characters" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "" -#: app/templates/main/dashboard.html:715 -msgid "Quick start with a template" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "" -#: app/templates/main/dashboard.html:726 -msgid "All templates" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Need" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -msgid "Tags (optional)" -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -msgid "e.g. meeting, dev, admin" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "View report" +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "All templates" +#~ msgstr "" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -msgid "API Documentation" -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/main/help.html:69 -msgid "API Docs" -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "" -#: app/templates/main/help.html:124 -msgid "Or navigate to the Timer page or dashboard" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "" -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "" +#~ msgid "For New Users" +#~ msgstr "" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "" -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "" -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "" -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "" +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "" +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "" +#~ msgid "Continues running if browser closes" +#~ msgstr "" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "" +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "" +#~ msgid "One active timer per user (configurable)" +#~ msgstr "" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "" +#~ msgid "WebSocket live updates" +#~ msgstr "" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "" +#~ msgid "Manual Time Entry" +#~ msgstr "" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "" +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "" +#~ msgid "Required Information" +#~ msgstr "" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "" +#~ msgid "Project selection" +#~ msgstr "" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "" +#~ msgid "Templates" +#~ msgstr "" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "" +#~ msgid "Project Information" +#~ msgstr "" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "" +#~ msgid "Billing Information" +#~ msgstr "" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "" +#~ msgid "Rate for billable time calculations" +#~ msgstr "" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "" +#~ msgid "Billing Reference" +#~ msgstr "" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "" +#~ msgid "Create new projects with client relationships" +#~ msgstr "" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "" +#~ msgid "Edit existing projects to update details" +#~ msgstr "" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "" +#~ msgid "Best Practices" +#~ msgstr "" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "" +#~ msgid "Use descriptive project names" +#~ msgstr "" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "" +#~ msgid "Use billing references for external tracking" +#~ msgstr "" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "" +#~ msgid "Client Information" +#~ msgstr "" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "" +#~ msgid "Organization Name" +#~ msgstr "" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "" +#~ msgid "Company or client name" +#~ msgstr "" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "" +#~ msgid "Primary contact details" +#~ msgstr "" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "" +#~ msgid "Email & Phone" +#~ msgstr "" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "" +#~ msgid "Contact information" +#~ msgstr "" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "" +#~ msgid "Business address" +#~ msgstr "" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "" +#~ msgid "Benefits" +#~ msgstr "" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "" +#~ msgid "Easier project organization" +#~ msgstr "" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "" +#~ msgid "Project Count" +#~ msgstr "" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "" +#~ msgid "Total and active projects" +#~ msgstr "" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "" +#~ msgid "Total hours worked" +#~ msgstr "" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "" +#~ msgid "Estimated billing amounts" +#~ msgstr "" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "" +#~ msgid "Task Properties" +#~ msgstr "" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "" +#~ msgid "Deadline tracking" +#~ msgstr "" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "" +#~ msgid "Assignment" +#~ msgstr "" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "" -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "" +#~ msgid "In Progress - Currently working" +#~ msgstr "" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "" +#~ msgid "Start timers directly from tasks" +#~ msgstr "" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "" +#~ msgid "Task Views" +#~ msgstr "" -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "" +#~ msgid "Collaboration Features" +#~ msgstr "" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "" +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "" +#~ msgid "Markdown Formatting" +#~ msgstr "" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "" +#~ msgid "Board Features" +#~ msgstr "" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "" +#~ msgid "Quick search across all tasks" +#~ msgstr "" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "" +#~ msgid "Using the Kanban Board" +#~ msgstr "" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "" +#~ msgid "Admin reviews and approves" +#~ msgstr "" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "" +#~ msgid "Professional Invoicing" +#~ msgstr "" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "" +#~ msgid "Company branding and logos" +#~ msgstr "" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "" +#~ msgid "Time Integration" +#~ msgstr "" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "" +#~ msgid "Generate from time entries" +#~ msgstr "" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "" +#~ msgid "Smart grouping by task/project" +#~ msgstr "" -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "" +#~ msgid "Add Items" +#~ msgstr "" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "" +#~ msgid "Generate from time or add manually" +#~ msgstr "" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "" +#~ msgid "Standard Reports" +#~ msgstr "" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "" +#~ msgid "Export Options" +#~ msgstr "" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "" +#~ msgid "Configurable delimiters" +#~ msgstr "" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "" +#~ msgid "Custom date ranges" +#~ msgstr "" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "" +#~ msgid "Filtered data export" +#~ msgstr "" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "" -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "" +#~ msgid "User - Filter by team members" +#~ msgstr "" -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "" +#~ msgid "Client - Filter by client organization" +#~ msgstr "" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "" +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "" +#~ msgid "Visual Analytics" +#~ msgstr "" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "" +#~ msgid "Interactive bar charts" +#~ msgstr "" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "" +#~ msgid "Time distribution pie charts" +#~ msgstr "" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "" +#~ msgid "Trend analysis over time" +#~ msgstr "" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "" +#~ msgid "Mobile-optimized charts" +#~ msgstr "" -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "" +#~ msgid "Command Palette" +#~ msgstr "" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "" -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "" +#~ msgid "Opening the Command Palette" +#~ msgstr "" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "" +#~ msgid "Press the question mark key" +#~ msgstr "" -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "" +#~ msgid "Quick search" +#~ msgstr "" -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "" +#~ msgid "Go to Projects" +#~ msgstr "" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "" +#~ msgid "Go to Tasks" +#~ msgstr "" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "" +#~ msgid "New Time Entry" +#~ msgstr "" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "" +#~ msgid "Global Search" +#~ msgstr "" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "" +#~ msgid "Email Notifications" +#~ msgstr "" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "" +#~ msgid "Administrator Features" +#~ msgstr "" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "" +#~ msgid "View user statistics and activity" +#~ msgstr "" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "" +#~ msgid "Generate API tokens for users" +#~ msgstr "" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "" +#~ msgid "Access Control" +#~ msgstr "" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "" +#~ msgid "Granular role-based permissions system" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "" +#~ msgid "User data access controls" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "" +#~ msgid "API token management for integrations" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "" +#~ msgid "Authentication Methods" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "" +#~ msgid "Both methods simultaneously" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "" +#~ msgid "Role & Permission Management" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "" +#~ msgid "Set granular permissions per feature" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "" +#~ msgid "Assign users to multiple roles" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "" +#~ msgid "View and manage all permissions" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "" +#~ msgid "General Settings" +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "" +#~ msgid "Timezone and locale settings" +#~ msgstr "" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "" +#~ msgid "Currency configuration" +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "" +#~ msgid "Time rounding rules" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "" +#~ msgid "Self-registration settings" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "" +#~ msgid "Timer Settings" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Idle timeout configuration" +#~ msgstr "" -#: app/templates/main/help.html:701 -msgid "Interactive Swagger UI at" -msgstr "" +#~ msgid "Single active timer mode" +#~ msgstr "" -#: app/templates/main/help.html:702 -msgid "OpenAPI 3.0 specification at" -msgstr "" +#~ msgid "Timer display preferences" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Notification settings" +#~ msgstr "" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Database Management" +#~ msgstr "" -#: app/templates/main/help.html:707 -msgid "Open API Documentation" -msgstr "" +#~ msgid "Create manual database backups" +#~ msgstr "" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "" +#~ msgid "View database migration status" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "" +#~ msgid "Monitor database performance" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "" +#~ msgid "Clean up old data and logs" +#~ msgstr "" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "" +#~ msgid "System Monitoring" +#~ msgstr "" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "" +#~ msgid "View system information and health" +#~ msgstr "" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "" +#~ msgid "Monitor application performance" +#~ msgstr "" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "" +#~ msgid "Review system logs and errors" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "" +#~ msgid "Touch-friendly interface" +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "" +#~ msgid "Mobile Navigation" +#~ msgstr "" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "" +#~ msgid "Quick access to dashboard" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "" +#~ msgid "One-tap time logging" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "" +#~ msgid "Mobile-optimized reports" +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "" +#~ msgid "Installation" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "" +#~ msgid "PWA Benefits" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "" +#~ msgid "Faster loading times" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "" +#~ msgid "Native app-like experience" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Push notifications (where supported)" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Interactive Swagger UI at" +#~ msgstr "" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" + +#~ msgid "How do I export my time data?" +#~ msgstr "" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" + +#~ msgid "Where can I get additional help?" +#~ msgstr "" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" + +#~ msgid "section." +#~ msgstr "" + +#~ msgid "Admin documentation:" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Administrator Guide" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Still Need Help?" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "" +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "" +#~ msgid "Complete Documentation" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "" +#~ msgid "Documentation Index" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Getting Started" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Report Issue" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "Open support" +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "Search Results" +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "" +#~ msgid "Results" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "No results found" +#~ msgstr "" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -msgid "Open support" -msgstr "" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "" +#~ msgid "e.g., Office, Home" +#~ msgstr "" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "" +#~ msgid "e.g., VW Golf" +#~ msgstr "" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "" +#~ msgid "e.g., ABC-123" +#~ msgstr "" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "" +#~ msgid "Back to Mileage" +#~ msgstr "" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "" +#~ msgid "Add Point" +#~ msgstr "" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -msgid "GPS Mileage Tracking" -msgstr "" +#~ msgid "Track ID" +#~ msgstr "" -#: app/templates/mileage/gps.html:8 -msgid "Back to Mileage" -msgstr "" +#~ msgid "Idle" +#~ msgstr "" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/mileage/gps.html:27 -msgid "Rate per km" -msgstr "" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/mileage/gps.html:37 -msgid "Add Point" -msgstr "" +#~ msgid "Tracking" +#~ msgstr "" -#: app/templates/mileage/gps.html:38 -msgid "Create Expense from Track" -msgstr "" +#~ msgid "GPS tracking started" +#~ msgstr "" -#: app/templates/mileage/gps.html:43 -msgid "Track ID" -msgstr "" +#~ msgid "Track point added" +#~ msgstr "" -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -msgid "Idle" -msgstr "" +#~ msgid "GPS tracking stopped" +#~ msgstr "" -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Expense created" +#~ msgstr "" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "Filter Mileage" +#~ msgstr "" -#: app/templates/mileage/gps.html:82 -msgid "Tracking" -msgstr "" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/mileage/gps.html:125 -msgid "GPS tracking started" -msgstr "" +#~ msgid "Purpose, location..." +#~ msgstr "" -#: app/templates/mileage/gps.html:136 -msgid "Track point added" -msgstr "" +#~ msgid "Optional approval notes..." +#~ msgstr "" -#: app/templates/mileage/gps.html:151 -msgid "GPS tracking stopped" -msgstr "" +#~ msgid "Rejection reason (required)" +#~ msgstr "" -#: app/templates/mileage/gps.html:165 -msgid "Expense created" -msgstr "" +#~ msgid "More navigation" +#~ msgstr "" -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "" +#~ msgid "Main" +#~ msgstr "" -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -msgid "More navigation" -msgstr "" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -msgid "Main" -msgstr "" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Filter Payments" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "ID" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "" -#: app/templates/payments/list.html:141 -msgid "ID" -msgstr "" +#~ msgid "e.g., Berlin" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Create Project" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "" +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Kanban board columns" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Edit swimlane" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "Column" +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "List View" +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Grid View" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "" +#~ msgid "Rate" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Edit Project" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "" +#~ msgid "Add Cost" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "" +#~ msgid "Add Cost to Project" +#~ msgstr "" -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "" -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "" +#~ msgid "Brief description of the cost" +#~ msgstr "" -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -msgid "Rate" -msgstr "" +#~ msgid "Select category" +#~ msgstr "" -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "" +#~ msgid "Materials" +#~ msgstr "" -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -msgid "Add Cost" -msgstr "" +#~ msgid "Software/Licenses" +#~ msgstr "" -#: app/templates/projects/add_cost.html:20 -msgid "Add Cost to Project" -msgstr "" +#~ msgid "Additional details about this cost" +#~ msgstr "" -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -msgid "e.g., Travel expenses to client site" -msgstr "" +#~ msgid "Billable to client" +#~ msgstr "" -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -msgid "Brief description of the cost" -msgstr "" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -msgid "Select category" -msgstr "" +#~ msgid "Add Extra Good" +#~ msgstr "" -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -msgid "Materials" -msgstr "" +#~ msgid "Add a product or service to" +#~ msgstr "" -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -msgid "Software/Licenses" -msgstr "" +#~ msgid "Back to Project" +#~ msgstr "" -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -msgid "Additional details about this cost" -msgstr "" +#~ msgid "SKU/Product Code" +#~ msgstr "" -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -msgid "Billable to client" -msgstr "" +#~ msgid "What happens when you archive a project?" +#~ msgstr "" -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "" -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "" +#~ msgid "Reason for Archiving" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "" +#~ msgid "Quick Select" +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "" +#~ msgid "Project completed successfully" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "" +#~ msgid "Project Completed" +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "" +#~ msgid "Client contract ended" +#~ msgstr "" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "" +#~ msgid "Contract Ended" +#~ msgstr "" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "" +#~ msgid "Project cancelled by client" +#~ msgstr "" -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "" +#~ msgid "Project on hold indefinitely" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "" +#~ msgid "On Hold" +#~ msgstr "" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "" +#~ msgid "Maintenance period ended" +#~ msgstr "" -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "" +#~ msgid "Maintenance Ended" +#~ msgstr "" -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "" +#~ msgid "Archive Project" +#~ msgstr "" -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "" +#~ msgid "Enter a descriptive project name" +#~ msgstr "" -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "" -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "" -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "" +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "" -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "" +#~ msgid "Create new client" +#~ msgstr "" -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "" -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "" +#~ msgid "Enable billing for this project" +#~ msgstr "" -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "" -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "" -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "" +#~ msgid "e.g. 10000.00" +#~ msgstr "" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "" -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "" +#~ msgid "Alert Threshold (%)" +#~ msgstr "" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "" +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "" +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "" +#~ msgid "Project Creation Tips" +#~ msgstr "" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "" +#~ msgid "Clear Naming" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "Billing Setup" +#~ msgstr "" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "Detailed Description" +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "" +#~ msgid "Client Selection" +#~ msgstr "" -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "" +#~ msgid "Creating..." +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "" +#~ msgid "Could not create client. Please try again." +#~ msgstr "" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "" +#~ msgid "Client created" +#~ msgstr "" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "" +#~ msgid "Network error while creating client" +#~ msgstr "" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "" +#~ msgid "Budget Analysis" +#~ msgstr "" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "" +#~ msgid "All Time" +#~ msgstr "" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "" +#~ msgid "Last 7 Days" +#~ msgstr "" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "" +#~ msgid "Last 30 Days" +#~ msgstr "" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "" +#~ msgid "Last 3 Months" +#~ msgstr "" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "Last Year" +#~ msgstr "" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "" +#~ msgid "estimated" +#~ msgstr "" -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "" +#~ msgid "Budget Used" +#~ msgstr "" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "" +#~ msgid "of budget" +#~ msgstr "" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "" +#~ msgid "Tasks Complete" +#~ msgstr "" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "" +#~ msgid "completion" +#~ msgstr "" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "" +#~ msgid "Team Members" +#~ msgstr "" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "" +#~ msgid "contributing" +#~ msgstr "" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "" +#~ msgid "Budget vs. Actual" +#~ msgstr "" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "" +#~ msgid "No budget set for this project" +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "" +#~ msgid "Task Status Distribution" +#~ msgstr "" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "" +#~ msgid "No tasks created yet" +#~ msgstr "" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "" +#~ msgid "Team Member Contributions" +#~ msgstr "" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "" +#~ msgid "No time entries recorded yet" +#~ msgstr "" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "" +#~ msgid "Time Tracking Timeline" +#~ msgstr "" -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "" +#~ msgid "Select a time period to view timeline" +#~ msgstr "" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "" +#~ msgid "Team Member Details" +#~ msgstr "" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "" +#~ msgid "tasks" +#~ msgstr "" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "" +#~ msgid "No team members have logged time yet" +#~ msgstr "" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "" +#~ msgid "Attention Required" +#~ msgstr "" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "" +#~ msgid "task(s) are overdue" +#~ msgstr "" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "" +#~ msgid "Edit Cost" +#~ msgstr "" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "" +#~ msgid "Update Cost" +#~ msgstr "" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "" +#~ msgid "Edit Extra Good" +#~ msgstr "" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "" +#~ msgid "Manage products and services for this project" +#~ msgstr "" -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "" +#~ msgid "Total Goods" +#~ msgstr "" -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -msgid "Edit Cost" -msgstr "" +#~ msgid "Billable Amount" +#~ msgstr "" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Categories" +#~ msgstr "" -#: app/templates/projects/edit_cost.html:108 -msgid "Update Cost" -msgstr "" +#~ msgid "Invoiced" +#~ msgstr "" -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "" +#~ msgid "Non-billable" +#~ msgstr "" -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "" -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "" +#~ msgid "Delete Extra Good" +#~ msgstr "" -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "" +#~ msgid "No extra goods found for this project" +#~ msgstr "" -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "" +#~ msgid "Add Your First Good" +#~ msgstr "" -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "" +#~ msgid "Breakdown by Category" +#~ msgstr "" -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "" +#~ msgid "item(s)" +#~ msgstr "" -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "" +#~ msgid "Filter Projects" +#~ msgstr "" -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "" +#~ msgid "Mark project as Inactive?" +#~ msgstr "" -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "" +#~ msgid "Change Project Status" +#~ msgstr "" -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "" +#~ msgid "Activate project?" +#~ msgstr "" -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Activate Project" +#~ msgstr "" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Archive" +#~ msgstr "" -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "Unarchive project?" +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "" +#~ msgid "Unarchive Project" +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "" +#~ msgid "Unarchive" +#~ msgstr "" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "" +#~ msgid "Delete Project" +#~ msgstr "" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "" +#~ msgid "Archive Information" +#~ msgstr "" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "" +#~ msgid "Archived on:" +#~ msgstr "" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "" +#~ msgid "Archived by:" +#~ msgstr "" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "" +#~ msgid "Reason:" +#~ msgstr "" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "" +#~ msgid "Budget Overview" +#~ msgstr "" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "" +#~ msgid "Over" +#~ msgstr "" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "" +#~ msgid "View Full Budget Analysis" +#~ msgstr "" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "" +#~ msgid "Tasks for this project" +#~ msgstr "" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Due" +#~ msgstr "" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "" +#~ msgid "Estimated" +#~ msgstr "" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "" +#~ msgid "No tasks for this project." +#~ msgstr "" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "" +#~ msgid "Move up" +#~ msgstr "" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Move down" +#~ msgstr "" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "" +#~ msgid "Manual entry" +#~ msgstr "" -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "" +#~ msgid "From stock" +#~ msgstr "" -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "" +#~ msgid "Duplicate" +#~ msgstr "" -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "" +#~ msgid "Mark as Sent" +#~ msgstr "" -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -msgid "Move up" -msgstr "" +#~ msgid "Accepted" +#~ msgstr "" -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -msgid "Move down" -msgstr "" +#~ msgid "Create Your First Quote" +#~ msgstr "" -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -msgid "Manual entry" -msgstr "" +#~ msgid "Learn More" +#~ msgstr "" -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -msgid "From stock" -msgstr "" +#~ msgid "Back to Quote" +#~ msgstr "" -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "" -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "" -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "" +#~ msgid "Create Quote" +#~ msgstr "" -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "" +#~ msgid "Quote title" +#~ msgstr "" -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "" +#~ msgid "Quote description" +#~ msgstr "" -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "" +#~ msgid "Quote line items" +#~ msgstr "" -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "" +#~ msgid "Add line" +#~ msgstr "" -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "" +#~ msgid "Line type" +#~ msgstr "" -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "" +#~ msgid "Stock" +#~ msgstr "" -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "" +#~ msgid "Line items subtotal" +#~ msgstr "" -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -msgid "Quote line items" -msgstr "" +#~ msgid "Costs" +#~ msgstr "" -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -msgid "Add line" -msgstr "" +#~ msgid "Add cost" +#~ msgstr "" -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -msgid "Line type" -msgstr "" +#~ msgid "Costs subtotal" +#~ msgstr "" -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -msgid "Stock" -msgstr "" +#~ msgid "Extra goods" +#~ msgstr "" -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -msgid "Line items subtotal" -msgstr "" +#~ msgid "Products, licenses, hardware" +#~ msgstr "" -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -msgid "Costs" -msgstr "" +#~ msgid "Add good" +#~ msgstr "" -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -msgid "One-off costs (e.g. travel, materials)" -msgstr "" +#~ msgid "Goods subtotal" +#~ msgstr "" -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -msgid "Add cost" -msgstr "" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "" -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -msgid "Costs subtotal" -msgstr "" +#~ msgid "Financial Details" +#~ msgstr "" -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -msgid "Extra goods" -msgstr "" +#~ msgid "Select payment terms" +#~ msgstr "" -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -msgid "Products, licenses, hardware" -msgstr "" +#~ msgid "Due on Receipt" +#~ msgstr "" -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -msgid "Add good" -msgstr "" +#~ msgid "Or enter custom payment terms" +#~ msgstr "" -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -msgid "Goods subtotal" -msgstr "" +#~ msgid "Use custom terms" +#~ msgstr "" -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -msgid "Subtotal (all quote lines)" -msgstr "" +#~ msgid "Discount" +#~ msgstr "" -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "" +#~ msgid "Discount Type" +#~ msgstr "" -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "" +#~ msgid "No Discount" +#~ msgstr "" -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "" +#~ msgid "Percentage (%)" +#~ msgstr "" -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "" +#~ msgid "Fixed Amount" +#~ msgstr "" -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "" +#~ msgid "Discount Amount" +#~ msgstr "" -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "" +#~ msgid "0.00" +#~ msgstr "" -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "" +#~ msgid "Coupon Code" +#~ msgstr "" -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "" +#~ msgid "Optional coupon code" +#~ msgstr "" -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "" +#~ msgid "Discount Reason" +#~ msgstr "" -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "" +#~ msgid "Reason for discount" +#~ msgstr "" -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "" +#~ msgid "Approval Workflow" +#~ msgstr "" -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "" +#~ msgid "Requires approval before sending" +#~ msgstr "" -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "" +#~ msgid "Additional Information" +#~ msgstr "" -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "" -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "" +#~ msgid "These notes are only visible to your team" +#~ msgstr "" -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "" +#~ msgid "Terms and Conditions" +#~ msgstr "" -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "" +#~ msgid "Terms and conditions" +#~ msgstr "" -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "" +#~ msgid "These terms will be visible to the client" +#~ msgstr "" -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "" +#~ msgid "Edit Quote" +#~ msgstr "" -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "" +#~ msgid "Client cannot be changed" +#~ msgstr "" -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "" +#~ msgid "Update Quote" +#~ msgstr "" -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "" +#~ msgid "Total Quotes" +#~ msgstr "" -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "" +#~ msgid "Acceptance Rate" +#~ msgstr "" -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "" +#~ msgid "Avg Quote Value" +#~ msgstr "" -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "" +#~ msgid "Quotes by Status" +#~ msgstr "" -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "" +#~ msgid "Top Clients by Quotes" +#~ msgstr "" -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "" +#~ msgid "Filter Quotes" +#~ msgstr "" -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "" +#~ msgid "Search quotes..." +#~ msgstr "" -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "" -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "" +#~ msgid "quote(s)?" +#~ msgstr "" -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "" +#~ msgid "Are you sure you want to mark" +#~ msgstr "" -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "" +#~ msgid "quote(s) as sent?" +#~ msgstr "" -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "" +#~ msgid "QUOTE" +#~ msgstr "" -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "" +#~ msgid "Quote #" +#~ msgstr "" -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "" +#~ msgid "Quote For" +#~ msgstr "" -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "" +#~ msgid "Subtotal After Discount:" +#~ msgstr "" -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "" +#~ msgid "Description:" +#~ msgstr "" -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "" +#~ msgid "Subtotal After Discount" +#~ msgstr "" -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "" +#~ msgid "Approval not yet requested" +#~ msgstr "" -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "" +#~ msgid "Pending approval" +#~ msgstr "" -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "" +#~ msgid "Rejected by" +#~ msgstr "" -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "" +#~ msgid "Request Approval Again" +#~ msgstr "" -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "" +#~ msgid "Send Quote" +#~ msgstr "" -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "" -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "" +#~ msgid "Delete Quote" +#~ msgstr "" -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "" -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "" +#~ msgid "Internal" +#~ msgstr "" -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "" -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "" +#~ msgid "Write a reply..." +#~ msgstr "" -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "" +#~ msgid "Sent At" +#~ msgstr "" -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "" +#~ msgid "Accepted At" +#~ msgstr "" -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "" +#~ msgid "Send Quote via Email" +#~ msgstr "" -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "" +#~ msgid "Recipient Email" +#~ msgstr "" -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "" -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "" +#~ msgid "Custom Message (Optional)" +#~ msgstr "" -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "" +#~ msgid "Add a custom message to the email..." +#~ msgstr "" -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "" +#~ msgid "Attach PDF" +#~ msgstr "" -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "" +#~ msgid "Approve Quote" +#~ msgstr "" -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "" +#~ msgid "Notes (Optional)" +#~ msgstr "" -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "" +#~ msgid "Add approval notes..." +#~ msgstr "" -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "" +#~ msgid "Reject Quote Approval" +#~ msgstr "" -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "" -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "" +#~ msgid "Create Recurring Invoice" +#~ msgstr "" -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "" +#~ msgid "Update Recurring Invoice" +#~ msgstr "" -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "" -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "" +#~ msgid "Frequency" +#~ msgstr "" -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "" +#~ msgid "Next Run" +#~ msgstr "" -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "" +#~ msgid "Generate Now" +#~ msgstr "" -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "" +#~ msgid "Template Details" +#~ msgstr "" -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "" +#~ msgid "Invoice Settings" +#~ msgstr "" -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "" +#~ msgid "Recently Generated Invoices" +#~ msgstr "" -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Assign To" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Add table to report" +#~ msgstr "" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "Add chart to report" +#~ msgstr "" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/reports/builder.html:40 -msgid "Add table to report" -msgstr "" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/reports/builder.html:43 -msgid "Add chart to report" -msgstr "" +#~ msgid "Add summary to report" +#~ msgstr "" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "Report canvas" +#~ msgstr "" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/reports/builder.html:52 -msgid "Add summary to report" -msgstr "" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/reports/builder.html:74 -msgid "Report canvas" -msgstr "" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Private" +#~ msgstr "" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Export Time Entries" +#~ msgstr "" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Export format" +#~ msgstr "" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Reset Filters" +#~ msgstr "" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/reports/export_form.html:9 -msgid "Export Time Entries" -msgstr "" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Please select both start and end dates." +#~ msgstr "" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -msgid "Export format" -msgstr "" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "" +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/reports/export_form.html:191 -msgid "Reset Filters" -msgstr "" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Payments Received" +#~ msgstr "" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Net Received" +#~ msgstr "" -#: app/templates/reports/export_form.html:341 -msgid "Please select both start and end dates." -msgstr "" +#~ msgid "After fees" +#~ msgstr "" -#: app/templates/reports/export_form.html:347 -msgid "Start date must be before or equal to end date." -msgstr "" +#~ msgid "Date Range & Comparison" +#~ msgstr "" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Quick Date Ranges" +#~ msgstr "" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "This Week" +#~ msgstr "" -#: app/templates/reports/index.html:46 -msgid "Payments Received" -msgstr "" +#~ msgid "This Month" +#~ msgstr "" -#: app/templates/reports/index.html:62 -msgid "Net Received" -msgstr "" +#~ msgid "This Year" +#~ msgstr "" -#: app/templates/reports/index.html:63 -msgid "After fees" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "" -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "" +#~ msgid "Comparison View" +#~ msgstr "" -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "" -#: app/templates/reports/index.html:79 -msgid "This Week" -msgstr "" +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/reports/index.html:82 -msgid "This Month" -msgstr "" +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/reports/index.html:85 -msgid "This Year" -msgstr "" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/reports/index.html:89 -msgid "Custom Range" -msgstr "" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -msgid "Week in Review" -msgstr "" +#~ msgid "Comparison Results" +#~ msgstr "" -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "" -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "" +#~ msgid "Report Types" +#~ msgstr "" -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "" -#: app/templates/reports/index.html:155 -msgid "Export Report" -msgstr "" +#~ msgid "User Report" +#~ msgstr "" -#: app/templates/reports/index.html:162 -msgid "Manage Scheduled Reports" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "" -#: app/templates/reports/index.html:169 -msgid "CSV Export" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "" -#: app/templates/reports/index.html:172 -msgid "Excel Export" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "" -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -msgid "Time Entries Report" -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "" -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "No scheduled reports yet." +#~ msgstr "" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Add Scheduled Report" +#~ msgstr "" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Please set a date range" +#~ msgstr "" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/reports/index.html:244 -msgid "No recent entries." -msgstr "" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -msgid "No scheduled reports yet." -msgstr "" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/reports/index.html:273 -msgid "Add Scheduled Report" -msgstr "" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/reports/index.html:366 -msgid "Please set a date range" -msgstr "" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "No data for the selected period." +#~ msgstr "" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -msgid "No data for the selected period." -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "Time distribution by project" +#~ msgstr "" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "No project data for the last 30 days." +#~ msgstr "" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "Daily hours trend" +#~ msgstr "" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "No trend data." +#~ msgstr "" -#: app/templates/reports/summary.html:27 -msgid "Time by project (last 30 days)" -msgstr "" +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "" -#: app/templates/reports/summary.html:30 -msgid "Time distribution by project" -msgstr "" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -msgid "No project data for the last 30 days." -msgstr "" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "All Clients" +#~ msgstr "" -#: app/templates/reports/summary.html:73 -msgid "Daily hours trend" -msgstr "" +#~ msgid "All Tasks" +#~ msgstr "" -#: app/templates/reports/summary.html:108 -msgid "No trend data." -msgstr "" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "" -#: app/templates/reports/summary.html:114 -msgid "Top Projects (Last 30 Days)" -msgstr "" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/reports/task_report.html:102 -msgid "No tasks with logged time for the selected period." -msgstr "" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:49 -msgid "All Clients" -msgstr "" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -msgid "All Tasks" -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:136 -msgid "No time entries found for the selected filters." -msgstr "" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "About Overtime Tracking" +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Back to Reports" +#~ msgstr "" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Top projects this week" +#~ msgstr "" -#: app/templates/reports/user_report.html:158 -msgid "Try a different date range or ensure time has been logged." -msgstr "" +#~ msgid "No time logged this week yet." +#~ msgstr "" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "" +#~ msgid "Apply filter" +#~ msgstr "" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "" -#: app/templates/reports/week_in_review.html:17 -msgid "Back to Reports" -msgstr "" +#~ msgid "Delete Filter" +#~ msgstr "" -#: app/templates/reports/week_in_review.html:38 -#, python-format -msgid "%(count)s time entries logged this week." -msgstr "" +#~ msgid "Go to Reports" +#~ msgstr "" -#: app/templates/reports/week_in_review.html:43 -msgid "Top projects this week" -msgstr "" +#~ msgid "No saved filters yet" +#~ msgstr "" -#: app/templates/reports/week_in_review.html:54 -msgid "No time logged this week yet." -msgstr "" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "" +#~ msgid "Customize Shortcuts" +#~ msgstr "" -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "" +#~ msgid "Search shortcuts..." +#~ msgstr "" -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "" +#~ msgid "Save changes" +#~ msgstr "" -#: app/templates/saved_filters/list.html:93 -msgid "Go to Reports" -msgstr "" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/saved_filters/list.html:96 -msgid "No saved filters yet" -msgstr "" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Click to record" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "" +#~ msgid "Revert" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:246 -msgid "Save changes" -msgstr "" +#~ msgid "Failed to save" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Failed to save shortcuts." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click to record" -msgstr "" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:445 -msgid "Revert" -msgstr "" +#~ msgid "Reset to Defaults" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:473 -msgid "Failed to save" -msgstr "" +#~ msgid "Failed to reset" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:478 -msgid "Failed to save shortcuts." -msgstr "" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "" +#~ msgid "Failed to load shortcuts." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "" +#~ msgid "Welcome" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset all shortcuts to defaults?" -msgstr "" +#~ msgid "Privacy First" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:489 -msgid "Failed to reset" -msgstr "" +#~ msgid "Self-hosted on your server" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:493 -msgid "Shortcuts reset to defaults." -msgstr "" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:494 -msgid "Failed to reset shortcuts." -msgstr "" +#~ msgid "No PII collected ever" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:511 -msgid "Failed to load shortcuts." -msgstr "" +#~ msgid "Open source & transparent" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "" +#~ msgid "Region & time" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "" +#~ msgid "Timezone" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "" +#~ msgid "Date format" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "" +#~ msgid "Time format" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "" +#~ msgid "24-hour" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:97 -msgid "Region & time" -msgstr "" +#~ msgid "12-hour" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "" +#~ msgid "Company name" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:110 -msgid "Date format" -msgstr "" +#~ msgid "Your Company Name" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:119 -msgid "Time format" -msgstr "" +#~ msgid "Your Company Address" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:121 -msgid "24-hour" -msgstr "" +#~ msgid "App behavior and timer settings." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:122 -msgid "12-hour" -msgstr "" +#~ msgid "Allow self-registration" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:139 -msgid "Company name" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:140 -msgid "Your Company Name" -msgstr "" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:144 -msgid "Your Company Address" -msgstr "" +#~ msgid "Single active timer per user" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:166 -msgid "App behavior and timer settings." -msgstr "" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:171 -msgid "Allow self-registration" -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:176 -msgid "Time rounding (minutes)" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:183 -msgid "Round time entries to the nearest N minutes." -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:188 -msgid "Single active timer per user" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:193 -msgid "Idle timeout (minutes)" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:237 -msgid "Privacy & finish" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Application version & platform info" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "" +#~ msgid "Complete Setup & Continue" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "" +#~ msgid "Kanban columns reordered" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "" +#~ msgid "Kanban columns updated" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "" +#~ msgid "Update" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "" -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "" +#~ msgid "Tracked" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "" -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "" -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "" -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "" +#~ msgid "Done" +#~ msgstr "" -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "" -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "" -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "" -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "" -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "" -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "" -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "" -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -msgid "Comma-separated tags for categorization" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "" +#~ msgid "Actual" +#~ msgstr "" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "" +#~ msgid "Current Task Info" +#~ msgstr "" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "" +#~ msgid "Current Status" +#~ msgstr "" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "" +#~ msgid "Current Estimate" +#~ msgstr "" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "" +#~ msgid "Started" +#~ msgstr "" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "" +#~ msgid "Edit Tips" +#~ msgstr "" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "" +#~ msgid "Status Changes" +#~ msgstr "" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "" -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "" +#~ msgid "Assignment Changes" +#~ msgstr "" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "" +#~ msgid "Updating..." +#~ msgstr "" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "" -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "" -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "" -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "" -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "" -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "" -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "" -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -msgid "e.g. bug, frontend" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "" -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "" -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "" -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "" +#~ msgid "Delete Task" +#~ msgstr "" -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "" +#~ msgid "My Tasks" +#~ msgstr "" -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "" -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "" +#~ msgid "total" +#~ msgstr "" -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "" -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "" +#~ msgid "items" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "" +#~ msgid "There are" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "" +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "" +#~ msgid "Due:" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "" +#~ msgid "Est:" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "" +#~ msgid "Actual:" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -msgid "Update Due Dates" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "" -#: app/templates/tasks/overdue.html:91 -msgid "Extend Due Dates" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "" -#: app/templates/tasks/overdue.html:94 -msgid "Priority Management" -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -msgid "Adjust Priorities" -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "" -#: app/templates/tasks/overdue.html:117 -msgid "Update failed. Please try again." -msgstr "" +#~ msgid "Complete" +#~ msgstr "" -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "" -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "" -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "" -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "" -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "" -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "" -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "" -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "" -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "" -#: app/templates/tasks/view.html:47 -msgid "Task details and history." -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "" -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "" -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "" -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "" +#~ msgid "Create Your First Template" +#~ msgstr "" -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "" -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "" +#~ msgid "Usage Statistics" +#~ msgstr "" -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "" +#~ msgid "selected" +#~ msgstr "" -#: app/templates/time_entry_templates/list.html:111 -msgid "Create Your First Template" -msgstr "" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/time_entry_templates/list.html:114 -msgid "No templates yet" -msgstr "" +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/time_entry_templates/list.html:115 -msgid "Create your first time entry template to speed up your workflow." -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "" +#~ msgid "Click to edit" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Request approval" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Clear filters" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -msgid "Click to edit" -msgstr "" +#~ msgid "No time entries yet" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -msgid "Request approval" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:201 -msgid "Clear filters" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:204 -msgid "No time entries match your filters" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "No time entries yet" -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -msgid "Time entries pagination" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -msgid "Bulk Time Entry" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:74 -msgid "Single Entry" -msgstr "" +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:77 -msgid "Create multiple time entries for consecutive days" -msgstr "" +#~ msgid "Entries will be created for these dates" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:86 -msgid "Bulk Entry Form" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:110 -msgid "Select the project to log time for" -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -msgid "Date Range" -msgstr "" +#~ msgid "tag1, tag2, tag3" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:155 -msgid "Entries will be created for these dates" -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -msgid "Same start time for all days" -msgstr "" +#~ msgid "Create Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Bulk Entry Tips" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:200 -msgid "tag1, tag2, tag3" -msgstr "" +#~ msgid "Skip Weekends" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -msgid "Include in invoices" -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -msgid "Create Entries" -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -msgid "Bulk Entry Tips" -msgstr "" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -msgid "Skip Weekends" -msgstr "" +#~ msgid "Failed to load tasks" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Total days" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -msgid "Same Time Daily" -msgstr "" +#~ msgid "Weekdays only" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Agenda" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "" +#~ msgid "CSV Format" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:335 -msgid "Total days" -msgstr "" +#~ msgid "Filter by tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:336 -msgid "Weekdays only" -msgstr "" +#~ msgid "Show billable entries only" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:338 -msgid "Entries will be created for" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "" -#: app/templates/timer/calendar.html:35 -msgid "Agenda" -msgstr "" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/timer/calendar.html:52 -msgid "iCal Format" -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "" -#: app/templates/timer/calendar.html:53 -msgid "CSV Format" -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "" -#: app/templates/timer/calendar.html:72 -msgid "Filter by tags..." -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:75 -msgid "Show billable entries only" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "" -#: app/templates/timer/calendar.html:76 -msgid "Billable Only" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "" -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -msgid "Total Hours:" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "" -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -msgid "Colors assigned by project" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/timer/calendar.html:142 -msgid "Create Time Entry" -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/timer/calendar.html:249 -msgid "Recurring Time Blocks" -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "" -#: app/templates/timer/calendar.html:253 -msgid "Manage your recurring time entry templates." -msgstr "" +#~ msgid "Views" +#~ msgstr "" -#: app/templates/timer/calendar.html:261 -msgid "New Recurring Block" -msgstr "" +#~ msgid "Day View" +#~ msgstr "" -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "Week View" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Month View" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "Agenda View" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -msgid "Navigate Days" -msgstr "" +#~ msgid "Create New Entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:297 -msgid "Views" -msgstr "" +#~ msgid "Focus Filter" +#~ msgstr "" -#: app/templates/timer/calendar.html:300 -msgid "Day View" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "" -#: app/templates/timer/calendar.html:304 -msgid "Week View" -msgstr "" +#~ msgid "Close Modal" +#~ msgstr "" -#: app/templates/timer/calendar.html:308 -msgid "Month View" -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/timer/calendar.html:312 -msgid "Agenda View" -msgstr "" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/timer/calendar.html:320 -msgid "Create New Entry" -msgstr "" +#~ msgid "Failed to load events" +#~ msgstr "" -#: app/templates/timer/calendar.html:324 -msgid "Focus Filter" -msgstr "" +#~ msgid "Please select a project for new entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:328 -msgid "Clear All Filters" -msgstr "" +#~ msgid "Please select a project first" +#~ msgstr "" -#: app/templates/timer/calendar.html:332 -msgid "Close Modal" -msgstr "" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Entry created successfully" +#~ msgstr "" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Failed to create entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:422 -msgid "Failed to load events" -msgstr "" +#~ msgid "Entry updated" +#~ msgstr "" -#: app/templates/timer/calendar.html:436 -msgid "Please select a project for new entries" -msgstr "" +#~ msgid "Failed to update entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:529 -msgid "Please select a project first" -msgstr "" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Delete Entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:734 -msgid "Entry created successfully" -msgstr "" +#~ msgid "Automatic Timer" +#~ msgstr "" -#: app/templates/timer/calendar.html:744 -msgid "Failed to create entry" -msgstr "" +#~ msgid "Entry deleted" +#~ msgstr "" -#: app/templates/timer/calendar.html:767 -msgid "Entry updated" -msgstr "" +#~ msgid "Failed to delete entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:771 -msgid "Failed to update entry" -msgstr "" +#~ msgid "Export started" +#~ msgstr "" -#: app/templates/timer/calendar.html:828 -msgid "Are you sure you want to delete this entry?" -msgstr "" +#~ msgid "No recurring blocks yet" +#~ msgstr "" -#: app/templates/timer/calendar.html:829 -msgid "Delete Entry" -msgstr "" +#~ msgid "Unknown Project" +#~ msgstr "" -#: app/templates/timer/calendar.html:890 -msgid "Automatic Timer" -msgstr "" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "" -#: app/templates/timer/calendar.html:931 -msgid "Entry deleted" -msgstr "" +#~ msgid "No events in this period" +#~ msgstr "" -#: app/templates/timer/calendar.html:937 -msgid "Failed to delete entry" -msgstr "" +#~ msgid "Failed to load agenda view" +#~ msgstr "" -#: app/templates/timer/calendar.html:955 -msgid "Export started" -msgstr "" +#~ msgid "Failed to load event details" +#~ msgstr "" -#: app/templates/timer/calendar.html:966 -msgid "No recurring blocks yet" -msgstr "" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "" -#: app/templates/timer/calendar.html:979 -msgid "Unknown Project" -msgstr "" +#~ msgid "Delete Recurring Block" +#~ msgstr "" -#: app/templates/timer/calendar.html:997 -msgid "Failed to load recurring blocks" -msgstr "" +#~ msgid "Recurring block deleted" +#~ msgstr "" -#: app/templates/timer/calendar.html:1039 -msgid "No events in this period" -msgstr "" +#~ msgid "Failed to delete recurring block" +#~ msgstr "" -#: app/templates/timer/calendar.html:1072 -msgid "Failed to load agenda view" -msgstr "" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "" -#: app/templates/timer/calendar.html:1104 -msgid "Failed to load event details" -msgstr "" +#~ msgid "Entry duplicated successfully" +#~ msgstr "" -#: app/templates/timer/calendar.html:1115 -msgid "Are you sure you want to delete this recurring block?" -msgstr "" +#~ msgid "Failed to duplicate entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:1117 -msgid "Delete Recurring Block" -msgstr "" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/timer/calendar.html:1133 -msgid "Recurring block deleted" -msgstr "" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "" -#: app/templates/timer/calendar.html:1136 -msgid "Failed to delete recurring block" -msgstr "" +#~ msgid "Edit Time Entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:1147 -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/timer/calendar.html:1180 -msgid "Entry duplicated successfully" -msgstr "" +#~ msgid "Confirm Changes" +#~ msgstr "" -#: app/templates/timer/calendar.html:1186 -msgid "Failed to duplicate entry" -msgstr "" +#~ msgid "Confirm & Save" +#~ msgstr "" -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Admin Mode" +#~ msgstr "" -#: app/templates/timer/calendar.html:1413 -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "" +#~ msgid "Admin Mode:" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -msgid "Edit Time Entry" -msgstr "" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:106 -msgid "Confirm Changes" -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -msgid "Confirm & Save" -msgstr "" +#~ msgid "Task (Optional)" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -msgid "Admin Mode" -msgstr "" +#~ msgid "Select a specific task within the project" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -msgid "Admin Mode:" -msgstr "" +#~ msgid "When the work started" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -msgid "Select the project this time entry belongs to" -msgstr "" +#~ msgid "Time the work ended" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:242 -msgid "Task (Optional)" -msgstr "" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:252 -msgid "Select a specific task within the project" -msgstr "" +#~ msgid "Automatic" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -msgid "When the work started" -msgstr "" +#~ msgid "How this entry was created" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "Duration:" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Describe what you worked on" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:292 -msgid "Time the work ended" -msgstr "" +#~ msgid "tag1, tag2" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -msgid "Automatic" -msgstr "" +#~ msgid "Internal invoice reference" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:315 -msgid "How this entry was created" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -msgid "Duration:" -msgstr "" +#~ msgid "Reason for Change" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -msgid "Describe what you worked on" -msgstr "" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -msgid "Internal invoice reference" -msgstr "" +#~ msgid "Task:" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -msgid "Reference to internal invoice number" -msgstr "" +#~ msgid "Start:" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -msgid "Reason for Change" -msgstr "" +#~ msgid "End:" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Admin Notice" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -msgid "Task:" -msgstr "" +#~ msgid "Duplicate Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:417 -msgid "Start:" -msgstr "" +#~ msgid "Duplicate Time Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:421 -msgid "End:" -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:547 -msgid "Admin Notice" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "" +#~ msgid "Original:" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "" +#~ msgid "to" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "" +#~ msgid "Project & task" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:57 -msgid "Project & task" -msgstr "" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:92 -msgid "Date & time" -msgstr "" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Apply filters" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -msgid "Apply filters" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Calculating..." +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Based on average session duration" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "No active timer. Start one below!" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "" +#~ msgid "Or use a template" +#~ msgstr "" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "" +#~ msgid "Recent Projects" +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "" +#~ msgid "Approval" +#~ msgstr "" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "License status" +#~ msgstr "" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "Supporter license active" +#~ msgstr "" -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -msgid "Approval" -msgstr "" +#~ msgid "Not activated" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "" -#: app/templates/user/license.html:12 -msgid "License status" -msgstr "" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/user/license.html:16 -msgid "Supporter license active" -msgstr "" +#~ msgid "License key" +#~ msgstr "" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/user/license.html:22 -msgid "Not activated" -msgstr "" +#~ msgid "Validate" +#~ msgstr "" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/user/license.html:35 -msgid "Enter license key" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Back to Settings" +#~ msgstr "" -#: app/templates/user/license.html:40 -msgid "License key" -msgstr "" +#~ msgid "Profile" +#~ msgstr "" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "In progress" +#~ msgstr "" -#: app/templates/user/license.html:46 -msgid "Validate" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "No recent time entries" +#~ msgstr "" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "" -#: app/templates/user/license.html:57 -msgid "Back to Settings" -msgstr "" +#~ msgid "Support & Community" +#~ msgstr "" -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/user/settings.html:14 -msgid "Support & Community" -msgstr "" +#~ msgid "Profile Information" +#~ msgstr "" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Username cannot be changed" +#~ msgstr "" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Required for email notifications" +#~ msgstr "" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "Notification Preferences" +#~ msgstr "" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "" +#~ msgid "Task Assignment Notifications" +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "" -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/user/settings.html:155 -msgid "Enable smart notifications on this device" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "System Default" +#~ msgstr "" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "" +#~ msgid "Rounding Method" +#~ msgstr "" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "" +#~ msgid "Overtime Settings" +#~ msgstr "" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "" +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "" +#~ msgid "Daily hours" +#~ msgstr "" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "" +#~ msgid "Weekly hours" +#~ msgstr "" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "" +#~ msgid "Standard Hours Per Day" +#~ msgstr "" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Standard Hours Per Week" +#~ msgstr "" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/user/settings.html:328 -msgid "Daily hours" -msgstr "" +#~ msgid "How it works" +#~ msgstr "" -#: app/templates/user/settings.html:334 -msgid "Weekly hours" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/user/settings.html:357 -msgid "Standard Hours Per Week" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "" +#~ msgid "Time Format" +#~ msgstr "" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "Sunday" +#~ msgstr "" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Monday" +#~ msgstr "" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "" +#~ msgid "Saturday" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "" +#~ msgid "Remember last view" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" -#: app/templates/user/settings.html:470 -msgid "Calendar default view" -msgstr "" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "" -#: app/templates/user/settings.html:474 -msgid "Remember last view" -msgstr "" +#~ msgid "Actual time:" +#~ msgstr "" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Rounded:" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "With " +#~ msgstr "" -#: app/templates/user/settings.html:487 -msgid "Support & Purchase Key" -msgstr "" +#~ msgid " minute intervals" +#~ msgstr "" -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "" +#~ msgid "Create Weekly Goal" +#~ msgstr "" -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "" -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "" -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "" -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "" -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "" +#~ msgid "Optional notes about your goal..." +#~ msgstr "" -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "" +#~ msgid "Quick Presets" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "" +#~ msgid "Tips for Setting Goals" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "" +#~ msgid "Current Progress" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "" +#~ msgid "Success Rate" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "" +#~ msgid "Current Week Goal" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "" +#~ msgid "Remaining Hours" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "" +#~ msgid "Days Remaining" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "" +#~ msgid "Edit Goal" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "" +#~ msgid "No goal set for this week" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "" +#~ msgid "Goal History" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "" +#~ msgid "Target" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "" +#~ msgid "Daily Breakdown" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "" +#~ msgid "Time Entries This Week" +#~ msgstr "" -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "" +#~ msgid "No Project" +#~ msgstr "" -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "" -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "" +#~ msgid "Reference date" +#~ msgstr "" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Create/Get Period" +#~ msgstr "" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "" +#~ msgid "Start date" +#~ msgstr "" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "" +#~ msgid "End date" +#~ msgstr "" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "" +#~ msgid "Exports" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -msgid "Reference date" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:14 -msgid "Create/Get Period" -msgstr "" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:29 -msgid "Start date" -msgstr "" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:33 -msgid "End date" -msgstr "" +#~ msgid "Audit Events CSV" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:42 -msgid "Exports" -msgstr "" +#~ msgid "Timesheet Periods" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Submit" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "No timesheet periods yet." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Leave Balances" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:50 -msgid "Audit Events CSV" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:57 -msgid "Timesheet Periods" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:70 -msgid "Submit" -msgstr "" +#~ msgid "Used" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:101 -msgid "No timesheet periods yet." -msgstr "" +#~ msgid "No leave types configured." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:107 -msgid "Leave Balances" -msgstr "" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Select leave type" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Requested hours" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Available overtime (YTD)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -msgid "Used" -msgstr "" +#~ msgid "Comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -msgid "No leave types configured." -msgstr "" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:149 -msgid "Select leave type" -msgstr "" +#~ msgid "Expected" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -msgid "Requested hours" -msgstr "" +#~ msgid "Allocated" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:159 -msgid "Available overtime (YTD)" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:164 -msgid "Comment" -msgstr "" +#~ msgid "Utilization %" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "No capacity data available." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:209 -msgid "Expected" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:210 -msgid "Allocated" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:211 -msgid "Time Off" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:213 -msgid "Utilization %" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:227 -msgid "No capacity data available." -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:243 -msgid "Enable multi-level approval" -msgstr "" +#~ msgid "Accrual hours per month" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -msgid "Enable admin override" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:246 -msgid "Save policy" -msgstr "" +#~ msgid "disabled" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -msgid "Leave Types" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -msgid "Accrual hours per month" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -msgid "Add leave type" -msgstr "" +#~ msgid "No holidays configured." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:264 -msgid "disabled" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:277 -msgid "Company Holidays" -msgstr "" +#~ msgid "Support" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:280 -msgid "Holiday name" -msgstr "" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:283 -msgid "Region (optional)" -msgstr "" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:284 -msgid "Add holiday" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:296 -msgid "No holidays configured." -msgstr "" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Cash" +#~ msgstr "" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Check" +#~ msgstr "" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "" +#~ msgid "Stripe" +#~ msgstr "" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "" +#~ msgid "Company Card" +#~ msgstr "" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "" +#~ msgid "Reimbursed" +#~ msgstr "" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "" +#~ msgid "Processing" +#~ msgstr "" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "" +#~ msgid "80% Budget Warning" +#~ msgstr "" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "" +#~ msgid "Budget Limit Reached" +#~ msgstr "" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "" +#~ msgid "Info" +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "" +#~ msgid "Due Date: %(date)s" +#~ msgstr "" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote For:" +#~ msgstr "" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Items:" +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "" +#~ msgid "Total:" +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "" +#~ msgid "Please log in to access this page" +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "" +#~ msgid "" +#~ "After this much inactivity, clients ask" +#~ " \"Still working?\" with a 5-minute " +#~ "window to answer." +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "" +#~ msgid "When \"Still working?\" is not answered" +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "" +#~ msgid "Flag for review (timer keeps running)" +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "" +#~ msgid "Stop timer and keep the idle window" +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "" +#~ msgid "" +#~ "Review mode never silently truncates " +#~ "time. Auto-stop credits last activity" +#~ " plus the idle timeout (Issue #722)." +#~ msgstr "" -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "" +#~ msgid "" +#~ "Only applies in review mode: auto-" +#~ "stop a flagged timer after this " +#~ "many hours unanswered (credited to last" +#~ " activity, entry stays flagged). 0 " +#~ "disables the cap." +#~ msgstr "" diff --git a/translations/es/LC_MESSAGES/messages.po b/translations/es/LC_MESSAGES/messages.po index 1e3633c7..696a1eec 100644 --- a/translations/es/LC_MESSAGES/messages.po +++ b/translations/es/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: es\n" @@ -14,26619 +14,18760 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "Por favor inicie sesión para acceder al portal del cliente." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." -msgstr "Su sesión expiró o la página estuvo abierta por mucho tiempo. Por favor inténtalo de nuevo." +msgstr "" +"Su sesión expiró o la página estuvo abierta por mucho tiempo. Por favor " +"inténtalo de nuevo." + +#~ msgid "Administrator access required" +#~ msgstr "Se requiere acceso de administrador" -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "Se requiere acceso de administrador" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "Username is required" +#~ msgstr "El nombre de usuario es obligatorio" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "El nombre de usuario es obligatorio" +#~ msgid "User already exists" +#~ msgstr "El usuario ya existe" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "El usuario ya existe" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo crear el usuario debido" +#~ " a un error de la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." + +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "Usuario \"%(username)s\" creado exitosamente" + +#~ msgid "Username already exists" +#~ msgstr "El nombre de usuario ya existe" + +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "Seleccione un cliente al habilitar el acceso al portal del cliente." + +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "La contraseña debe tener al menos 8 caracteres." -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "Passwords do not match." +#~ msgstr "Las contraseñas no coinciden." -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "No se pudo crear el usuario debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "Usuario \"%(username)s\" creado exitosamente" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "El nombre de usuario ya existe" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Seleccione un cliente al habilitar el acceso al portal del cliente." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "La contraseña debe tener al menos 8 caracteres." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "Las contraseñas no coinciden." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "No se pudo actualizar el usuario debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar el usuario " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "Usuario \"%(username)s\" actualizado exitosamente" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "No se puede eliminar el último administrador" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "Usuario \"%(username)s\" actualizado exitosamente" -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "No se puede eliminar un usuario con entradas de tiempo existentes" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "No se puede eliminar el último administrador" + +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "No se puede eliminar un usuario con entradas de tiempo existentes" + +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar el usuario " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "No se pudo eliminar el usuario debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "Usuario \"%(username)s\" eliminado exitosamente" -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "Usuario \"%(username)s\" eliminado exitosamente" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "La telemetría ha sido habilitada. ¡Gracias por ayudarnos a mejorar!" -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "La telemetría ha sido habilitada. ¡Gracias por ayudarnos a mejorar!" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "Zona horaria no válida: %(timezone)s" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "Zona horaria no válida: %(timezone)s" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar la configuración" +#~ " debido a un error de la base" +#~ " de datos. Por favor verifique los" +#~ " registros del servidor." + +#~ msgid "Settings updated successfully" +#~ msgstr "Configuración actualizada exitosamente" + +#~ msgid "Invalid code." +#~ msgstr "" + +#~ msgid "Error saving settings" +#~ msgstr "Error al guardar la configuración" + +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "" +#~ "No se pudo actualizar el diseño " +#~ "del PDF debido a un error de " +#~ "la base de datos." + +#~ msgid "PDF layout updated successfully" +#~ msgstr "Diseño PDF actualizado correctamente" + +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" + +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "" +#~ "No se pudo restablecer el diseño " +#~ "del PDF debido a un error de " +#~ "la base de datos." + +#~ msgid "PDF layout reset to defaults" +#~ msgstr "Restablecimiento del diseño de PDF a los valores predeterminados" + +#~ msgid "Invalid page size" +#~ msgstr "" + +#~ msgid "Template not found for this page size" +#~ msgstr "" + +#~ msgid "No file uploaded" +#~ msgstr "" + +#~ msgid "No file selected" +#~ msgstr "Ningún archivo seleccionado" + +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" + +#~ msgid "Could not import template due to a database error." +#~ msgstr "" + +#~ msgid "Template imported successfully" +#~ msgstr "" + +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" + +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" + +#~ msgid "Invoice not found" +#~ msgstr "" + +#~ msgid "Quote not found" +#~ msgstr "" + +#~ msgid "No logo file selected" +#~ msgstr "No se seleccionó ningún archivo de logotipo" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "No se pudo actualizar la configuración debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Invalid image file." +#~ msgstr "Archivo de imagen no válido." -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Configuración actualizada exitosamente" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "No se pudo guardar el logotipo " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "¡El logotipo de la empresa se " +#~ "cargó correctamente! Puede verlo en la" +#~ " sección \"Logotipo actual de la " +#~ "empresa\" más arriba. Aparecerá en " +#~ "facturas y documentos PDF." -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "" +#~ "Tipo de archivo no válido. Tipos " +#~ "permitidos: PNG, JPG, JPEG, GIF, SVG," +#~ " WEBP" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Error al guardar la configuración" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar el logotipo " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "El logotipo de la empresa se " +#~ "eliminó correctamente. Cargue un nuevo " +#~ "logotipo en la sección siguiente si " +#~ "es necesario." -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "No hay logotipo para eliminar" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "Backup failed: archive not created" +#~ msgstr "Error de copia de seguridad: archivo no creado" -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "Error en la copia de seguridad: %(error)s" -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "No se pudo actualizar el diseño del PDF debido a un error de la base de datos." +#~ msgid "Invalid file type" +#~ msgstr "Tipo de archivo no válido" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "Diseño PDF actualizado correctamente" +#~ msgid "Backup file not found" +#~ msgstr "Archivo de copia de seguridad no encontrado" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "Copia de seguridad \"%(filename)s\" eliminada correctamente" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "No se pudo restablecer el diseño del PDF debido a un error de la base de datos." +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "No se pudo eliminar la copia de seguridad: %(error)s" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "Restablecimiento del diseño de PDF a los valores predeterminados" +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "" +#~ "Tipo de archivo no válido. Seleccione" +#~ " un archivo de copia de seguridad " +#~ ".zip." -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Backup file not found." +#~ msgstr "Archivo de copia de seguridad no encontrado." -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "" +#~ "Tipo de archivo no válido. Cargue " +#~ "un archivo de copia de seguridad " +#~ ".zip." -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "No backup file provided" +#~ msgstr "No se proporciona ningún archivo de respaldo" -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Ningún archivo seleccionado" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "Restauración iniciada. Puede monitorear el progreso en esta página." -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "OIDC no está habilitado. Establezca AUTH_METHOD en \"oidc\" o \"both\"." + +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER no está configurado" + +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" + +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" + +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" + +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" + +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" + +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ Documento de descubrimiento obtenido exitosamente de %(url)s" + +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ No se pudo recuperar el documento de descubrimiento: %(error)s" -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ Error inesperado: %(error)s" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ El cliente OAuth está registrado en la aplicación" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ El cliente OAuth no está registrado" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ Error al crear el cliente OAuth: %(error)s" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "No se seleccionó ningún archivo de logotipo" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "Archivo de imagen no válido." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "No se pudo guardar el logotipo debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "¡El logotipo de la empresa se cargó correctamente! Puede verlo en la sección \"Logotipo actual de la empresa\" más arriba. Aparecerá en facturas y documentos PDF." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "Tipo de archivo no válido. Tipos permitidos: PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "No se pudo eliminar el logotipo debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "El logotipo de la empresa se eliminó correctamente. Cargue un nuevo logotipo en la sección siguiente si es necesario." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "No hay logotipo para eliminar" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "Error de copia de seguridad: archivo no creado" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "Error en la copia de seguridad: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Tipo de archivo no válido" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "Archivo de copia de seguridad no encontrado" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "Copia de seguridad \"%(filename)s\" eliminada correctamente" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "No se pudo eliminar la copia de seguridad: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "Tipo de archivo no válido. Seleccione un archivo de copia de seguridad .zip." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "Archivo de copia de seguridad no encontrado." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "Tipo de archivo no válido. Cargue un archivo de copia de seguridad .zip." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "No se proporciona ningún archivo de respaldo" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "Restauración iniciada. Puede monitorear el progreso en esta página." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC no está habilitado. Establezca AUTH_METHOD en \"oidc\" o \"both\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER no está configurado" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(punto final): %(endpoint)s" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ Faltan %(puntos finales) en el documento de descubrimiento" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ El alcance \"%(scope)s\" es compatible con el proveedor" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ Es posible que el proveedor no" +#~ " admita el alcance \"%(scope)s\" " +#~ "(compatible: %(supported)s)" -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ Proveedor respalda reclamos: %(claims)s" -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ Documento de descubrimiento obtenido exitosamente de %(url)s" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "✓ Se admite el reclamo %(claim_type)s configurado \"%(claim_name)s\"" -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ El reclamo %(claim_type)s configurado " +#~ "\"%(claim_name)s\" no está en la lista" +#~ " de reclamos admitidos (puede que aún" +#~ " funcione)" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ No se pudo recuperar el documento de descubrimiento: %(error)s" +#~ msgid "OIDC configuration test completed" +#~ msgstr "Prueba de configuración OIDC completada" -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ Error inesperado: %(error)s" +#~ msgid "Template name is required" +#~ msgstr "El nombre de la plantilla es obligatorio" -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "HTML template content is required" +#~ msgstr "El nombre de la plantilla es obligatorio" -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ El cliente OAuth está registrado en la aplicación" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ El cliente OAuth no está registrado" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ Error al crear el cliente OAuth: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(punto final): %(endpoint)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ Faltan %(puntos finales) en el documento de descubrimiento" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ El alcance \"%(scope)s\" es compatible con el proveedor" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ Es posible que el proveedor no admita el alcance \"%(scope)s\" (compatible: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ Proveedor respalda reclamos: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ Se admite el reclamo %(claim_type)s configurado \"%(claim_name)s\"" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ El reclamo %(claim_type)s configurado \"%(claim_name)s\" no está en la lista de reclamos admitidos (puede que aún funcione)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "Prueba de configuración OIDC completada" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "El nombre de la plantilla es obligatorio" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "El nombre de la plantilla es obligatorio" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "Ya existe una plantilla con este nombre" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "No se pudo crear una plantilla de correo electrónico debido a un error de la base de datos." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "Plantilla de correo electrónico creada correctamente" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "No se pudo actualizar la plantilla de correo electrónico debido a un error de la base de datos." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "Plantilla de correo electrónico actualizada correctamente" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "No se puede eliminar la plantilla que está en uso en facturas o facturas recurrentes" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "No se pudo eliminar la plantilla de correo electrónico debido a un error de la base de datos." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "Plantilla de correo electrónico \"%(name)s\" eliminada correctamente" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "A template with this name already exists" +#~ msgstr "Ya existe una plantilla con este nombre" -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "El proyecto seleccionado no existe o está inactivo" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "mensaje" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Could not create email template due to a database error." +#~ msgstr "" +#~ "No se pudo crear una plantilla de" +#~ " correo electrónico debido a un error" +#~ " de la base de datos." -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "La tabla de registros de auditoría no existe. Ejecute: actualización de flask db" +#~ msgid "Email template created successfully" +#~ msgstr "Plantilla de correo electrónico creada correctamente" -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "" +#~ "No se pudo actualizar la plantilla " +#~ "de correo electrónico debido a un " +#~ "error de la base de datos." -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "Email template updated successfully" +#~ msgstr "Plantilla de correo electrónico actualizada correctamente" -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "¡Bienvenido de nuevo, %(username)s!" +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" +#~ "No se puede eliminar la plantilla " +#~ "que está en uso en facturas o " +#~ "facturas recurrentes" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "" +#~ "No se pudo eliminar la plantilla " +#~ "de correo electrónico debido a un " +#~ "error de la base de datos." -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "Plantilla de correo electrónico \"%(name)s\" eliminada correctamente" -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Task name and project are required" +#~ msgstr "" -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "Establece tu contraseña" +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "El proyecto seleccionado no existe o está inactivo" + +#~ msgid "message" +#~ msgstr "mensaje" + +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" + +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" +#~ "La tabla de registros de auditoría " +#~ "no existe. Ejecute: actualización de " +#~ "flask db" + +#~ msgid "You must change your password before continuing." +#~ msgstr "" + +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" + +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "¡Bienvenido de nuevo, %(username)s!" + +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" + +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" + +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" + +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Establece tu contraseña" + +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "" +#~ "Token de configuración de contraseña no" +#~ " válido o caducado. Por favor " +#~ "solicite uno nuevo." + +#~ msgid "Password reset is not available for this account." +#~ msgstr "El portal del cliente no está habilitado para este cliente." + +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" + +#~ msgid "Could not reset password due to a database error." +#~ msgstr "" +#~ "No se pudo establecer la contraseña " +#~ "debido a un error de la base " +#~ "de datos." + +#~ msgid "Invalid username format" +#~ msgstr "" + +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" + +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Token de configuración de contraseña no válido o caducado. Por favor solicite uno nuevo." +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "El portal del cliente no está habilitado para este cliente." +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "No se pudo crear su cuenta debido" +#~ " a un error en la base de " +#~ "datos. Inténtelo de nuevo más tarde." -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "¡Bienvenido! Su cuenta ha sido creada." -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "No se pudo establecer la contraseña debido a un error de la base de datos." +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Usuario no encontrado. Por favor contacte a un administrador." -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "" +#~ "No se pudo actualizar la función " +#~ "de su cuenta debido a un error " +#~ "de la base de datos." -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "La cuenta está deshabilitada. Por favor contacte a un administrador." + +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" + +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" + +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" + +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" +#~ "Error inesperado durante el inicio de" +#~ " sesión. Inténtalo de nuevo o " +#~ "comprueba los registros del servidor." + +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "" +#~ "Su sesión expiró o la página " +#~ "estuvo abierta por mucho tiempo. Por " +#~ "favor inténtalo de nuevo." + +#~ msgid "Invalid authentication code." +#~ msgstr "Método de autenticación" + +#~ msgid "Two-factor authentication enabled." +#~ msgstr "Método de autenticación" + +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "No se pudo crear su cuenta debido a un error en la base de datos." + +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Método de autenticación" + +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "" +#~ "No se pudo actualizar la función " +#~ "de su cuenta debido a un error " +#~ "de la base de datos." + +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "¡Adiós, %(username)s!" + +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "" +#~ "Tipo de archivo de avatar no " +#~ "válido. Permitido: PNG, JPG, JPEG, GIF," +#~ " WEBP" + +#~ msgid "Failed to save avatar on server." +#~ msgstr "No se pudo guardar el avatar en el servidor." + +#~ msgid "Profile updated successfully" +#~ msgstr "Perfil actualizado exitosamente" + +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "No se pudo actualizar su perfil debido a un error en la base de datos." + +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" + +#~ msgid "New password is required" +#~ msgstr "" + +#~ msgid "Current password is required" +#~ msgstr "" + +#~ msgid "Current password is incorrect" +#~ msgstr "" + +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" + +#~ msgid "Could not update password due to a database error." +#~ msgstr "" + +#~ msgid "Avatar removed" +#~ msgstr "Avatar eliminado" -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "No se pudo eliminar el avatar." -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "No se pudo crear su cuenta debido a un error en la base de datos. Inténtelo de nuevo más tarde." +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "¡Bienvenido! Su cuenta ha sido creada." +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" +#~ "El inicio de sesión único aún no" +#~ " está configurado. Por favor contacte " +#~ "a un administrador." -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Usuario no encontrado. Por favor contacte a un administrador." +#~ msgid "Single Sign-On is not configured." +#~ msgstr "El inicio de sesión único no está configurado." -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "No se pudo actualizar la función de su cuenta debido a un error de la base de datos." +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "La cuenta está deshabilitada. Por favor contacte a un administrador." +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "Error de autenticación: falta el reclamo" +#~ " del emisor o del sujeto. Verifique" +#~ " la configuración de OIDC." -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "" +#~ "La cuenta de usuario no existe y" +#~ " el registro automático está deshabilitado." -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "No se pudo crear su cuenta debido a un error en la base de datos." -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "Error inesperado durante el inicio de sesión. Inténtalo de nuevo o comprueba los registros del servidor." - -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "Su sesión expiró o la página estuvo abierta por mucho tiempo. Por favor inténtalo de nuevo." - -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "Método de autenticación" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "Método de autenticación" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "No se pudo crear su cuenta debido a un error en la base de datos." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "Método de autenticación" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "No se pudo actualizar la función de su cuenta debido a un error de la base de datos." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "¡Adiós, %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "Tipo de archivo de avatar no válido. Permitido: PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "No se pudo guardar el avatar en el servidor." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Perfil actualizado exitosamente" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "No se pudo actualizar su perfil debido a un error en la base de datos." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Error inesperado durante el inicio de" +#~ " sesión SSO. Inténtelo de nuevo o " +#~ "comuníquese con el soporte." -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "No tienes acceso a este proyecto." -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "Este proyecto no tiene un presupuesto fijado." -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "Event created successfully" +#~ msgstr "Evento creado exitosamente" -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "Evento actualizado exitosamente" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "No tienes permiso para eliminar este evento." -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar eliminado" +#~ msgid "Failed to delete event" +#~ msgstr "No se pudo eliminar el evento" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "No se pudo eliminar el avatar." +#~ msgid "Event deleted successfully" +#~ msgstr "Evento eliminado exitosamente" -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "Error al eliminar evento: %(error)s" -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "El evento se movió correctamente" -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Event resized successfully" +#~ msgstr "Evento redimensionado exitosamente" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "El inicio de sesión único aún no está configurado. Por favor contacte a un administrador." +#~ msgid "You do not have permission to view this event." +#~ msgstr "No tienes permiso para ver este evento." -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "El inicio de sesión único no está configurado." +#~ msgid "You do not have permission to edit this event." +#~ msgstr "No tienes permiso para editar este evento." -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "El contenido de la nota no puede estar vacío." -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "Error de autenticación: falta el reclamo del emisor o del sujeto. Verifique la configuración de OIDC." +#~ msgid "Note added successfully" +#~ msgstr "Nota agregada exitosamente" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "La cuenta de usuario no existe y el registro automático está deshabilitado." +#~ msgid "Error adding note" +#~ msgstr "Error al agregar la nota" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "No se pudo crear su cuenta debido a un error en la base de datos." +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Error al agregar nota: %(error)s" -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "Error inesperado durante el inicio de sesión SSO. Inténtelo de nuevo o comuníquese con el soporte." +#~ msgid "Note does not belong to this client" +#~ msgstr "La nota no pertenece a este cliente." -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "No tienes acceso a este proyecto." +#~ msgid "You do not have permission to edit this note" +#~ msgstr "No tienes permiso para editar esta nota." -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Este proyecto no tiene un presupuesto fijado." +#~ msgid "Error updating note" +#~ msgstr "Error al actualizar la nota" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Evento creado exitosamente" +#~ msgid "Note updated successfully" +#~ msgstr "Nota actualizada con éxito" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Evento actualizado exitosamente" +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Nota de actualización de error: %(error)s" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "No tienes permiso para eliminar este evento." +#~ msgid "You do not have permission to delete this note" +#~ msgstr "No tienes permiso para eliminar esta nota." -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "No se pudo eliminar el evento" +#~ msgid "Error deleting note" +#~ msgstr "Error al eliminar la nota" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Evento eliminado exitosamente" +#~ msgid "Note deleted successfully" +#~ msgstr "Nota eliminada exitosamente" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "Error al eliminar evento: %(error)s" +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "Error al eliminar la nota: %(error)s" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "El evento se movió correctamente" +#~ msgid "Access Denied" +#~ msgstr "Acceso denegado" -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "Evento redimensionado exitosamente" +#~ msgid "403 Forbidden" +#~ msgstr "403 Prohibido" -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "No tienes permiso para ver este evento." +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "No tienes permiso para editar este evento." +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "El contenido de la nota no puede estar vacío." - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Nota agregada exitosamente" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Error al agregar la nota" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Error al agregar nota: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "La nota no pertenece a este cliente." - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "No tienes permiso para editar esta nota." - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Error al actualizar la nota" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Nota actualizada con éxito" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Nota de actualización de error: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "No tienes permiso para eliminar esta nota." - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Error al eliminar la nota" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Nota eliminada exitosamente" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "Error al eliminar la nota: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "Por favor inicie sesión para acceder al portal del cliente." +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Acceso denegado" +#~ msgid "Page Not Found" +#~ msgstr "Página no encontrada" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Prohibido" +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "La página que estás buscando no existe o ha sido movida." -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "Server Error" +#~ msgstr "Error del servidor" -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Página no encontrada" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "El acceso al portal del cliente no está habilitado para su cuenta." -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "Your client account is inactive." +#~ msgstr "Su cuenta de cliente está inactiva." -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "La página que estás buscando no existe o ha sido movida." +#~ msgid "Username and password are required." +#~ msgstr "Se requiere nombre de usuario y contraseña." -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Error del servidor" +#~ msgid "Invalid username or password." +#~ msgstr "Nombre de usuario o contraseña no válidos." -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "¡Bienvenido, %(client_name)s!" -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "You have been logged out." +#~ msgstr "Se te ha cerrado la sesión." -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "El acceso al portal del cliente no está habilitado para su cuenta." +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Token de configuración de contraseña no válido o faltante." -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "Su cuenta de cliente está inactiva." +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "" +#~ "Token de configuración de contraseña no" +#~ " válido o caducado. Por favor " +#~ "solicite uno nuevo." -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Se requiere nombre de usuario y contraseña." +#~ msgid "Password is required." +#~ msgstr "Se requiere contraseña." -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Nombre de usuario o contraseña no válidos." +#~ msgid "Could not set password due to a database error." +#~ msgstr "" +#~ "No se pudo establecer la contraseña " +#~ "debido a un error de la base " +#~ "de datos." -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "¡Bienvenido, %(client_name)s!" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "" +#~ "¡Contraseña establecida exitosamente! Ahora " +#~ "puede iniciar sesión en el portal." -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "Se te ha cerrado la sesión." +#~ msgid "Unable to load client portal data." +#~ msgstr "No se pueden cargar los datos del portal del cliente." -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Token de configuración de contraseña no válido o faltante." +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "Token de configuración de contraseña no válido o caducado. Por favor solicite uno nuevo." +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "Se requiere contraseña." +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "No se pudo establecer la contraseña debido a un error de la base de datos." +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "¡Contraseña establecida exitosamente! Ahora puede iniciar sesión en el portal." +#~ msgid "Invoice not found." +#~ msgstr "Factura no encontrada." -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "No se pueden cargar los datos del portal del cliente." +#~ msgid "Quote not found." +#~ msgstr "Cita no encontrada." -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Factura no encontrada." +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Cita no encontrada." +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "No se pueden cargar los datos del portal del cliente." -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "Client Report" +#~ msgstr "Portal del cliente" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "Últimos 7 días" -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "Summary" +#~ msgstr "Resumen" -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "Horas totales" -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "No se pueden cargar los datos del portal del cliente." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "Portal del cliente" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "Últimos 7 días" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Resumen" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Horas totales" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Paid" +#~ msgstr "Pagado" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Pagado" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Pendiente" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Horas por proyecto" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Proyecto" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Horas" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Horas facturables" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "Rango de tiempo" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Fecha" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Acceso denegado" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "Pendiente" -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "Horas por proyecto" -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Project" +#~ msgstr "Proyecto" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "No tienes permiso para crear clientes." +#~ msgid "Hours" +#~ msgstr "Horas" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "El nombre del cliente es obligatorio." +#~ msgid "Billable Hours" +#~ msgstr "Horas facturables" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "Ya existe un cliente con este nombre" +#~ msgid "Time by Date" +#~ msgstr "Rango de tiempo" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Date" +#~ msgstr "Fecha" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Formato de tarifa por hora no válido" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "Las horas prepagas deben ser un número positivo." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "El día de reinicio prepago debe estar entre el 1 y el 28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "Access denied" +#~ msgstr "Acceso denegado" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "No se pudo crear el cliente debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "No tienes acceso a este proyecto." +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "No tienes permiso para editar clientes" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "Se requiere el nombre de usuario del portal al habilitar el acceso al portal." +#~ msgid "You do not have permission to create clients" +#~ msgstr "No tienes permiso para crear clientes." -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Este nombre de usuario del portal ya está siendo utilizado por otro cliente." +#~ msgid "Client name is required" +#~ msgstr "El nombre del cliente es obligatorio." -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "No se pudo actualizar el cliente debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "A client with this name already exists" +#~ msgstr "Ya existe un cliente con este nombre" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "No tienes permiso para enviar correos electrónicos del portal." +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "El portal del cliente no está habilitado para este cliente." +#~ msgid "Invalid hourly rate format" +#~ msgstr "Formato de tarifa por hora no válido" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "El nombre de usuario del portal no está configurado para este cliente." +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "Las horas prepagas deben ser un número positivo." -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "La dirección de correo electrónico del cliente no está configurada. No se puede enviar el correo electrónico de configuración de contraseña." +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "El día de reinicio prepago debe estar entre el 1 y el 28." -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "No se pudo generar el token de configuración de contraseña debido a un error de la base de datos." +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "Correo electrónico de configuración de contraseña enviado correctamente a %(email)s" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo crear el cliente debido" +#~ " a un error de la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "El servidor de correo electrónico no está configurado. Configure los ajustes de correo electrónico en Admin → Configuración de correo electrónico o establezca la variable de entorno MAIL_SERVER." +#~ msgid "You do not have access to this client." +#~ msgstr "No tienes acceso a este proyecto." -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "No se pudo enviar el correo electrónico de configuración de contraseña. Consulte la configuración del correo electrónico y los registros del servidor para obtener más detalles." +#~ msgid "You do not have permission to edit clients" +#~ msgstr "No tienes permiso para editar clientes" -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "Se produjo un error al enviar el correo electrónico: %(error)s" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "" +#~ "Se requiere el nombre de usuario " +#~ "del portal al habilitar el acceso " +#~ "al portal." + +#~ msgid "This portal username is already in use by another client." +#~ msgstr "" +#~ "Este nombre de usuario del portal " +#~ "ya está siendo utilizado por otro " +#~ "cliente." + +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar el cliente " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "No tienes permiso para enviar correos electrónicos del portal." + +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "El portal del cliente no está habilitado para este cliente." + +#~ msgid "Portal username is not set for this client." +#~ msgstr "El nombre de usuario del portal no está configurado para este cliente." + +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "La dirección de correo electrónico del" +#~ " cliente no está configurada. No se" +#~ " puede enviar el correo electrónico " +#~ "de configuración de contraseña." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "" +#~ "No se pudo generar el token de " +#~ "configuración de contraseña debido a un" +#~ " error de la base de datos." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "" +#~ "Correo electrónico de configuración de " +#~ "contraseña enviado correctamente a %(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "El servidor de correo electrónico no " +#~ "está configurado. Configure los ajustes " +#~ "de correo electrónico en Admin → " +#~ "Configuración de correo electrónico o " +#~ "establezca la variable de entorno " +#~ "MAIL_SERVER." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "No se pudo enviar el correo " +#~ "electrónico de configuración de contraseña." +#~ " Consulte la configuración del correo " +#~ "electrónico y los registros del servidor" +#~ " para obtener más detalles." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "Se produjo un error al enviar el correo electrónico: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "No tienes permiso para archivar clientes" + +#~ msgid "Client is already inactive" +#~ msgstr "El cliente ya está inactivo" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "No tienes permiso para activar clientes" + +#~ msgid "Client is already active" +#~ msgstr "El cliente ya está activo" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "No tienes permiso para eliminar clientes" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar el cliente " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "No clients selected for deletion" +#~ msgstr "No se han seleccionado clientes para su eliminación" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudieron eliminar clientes debido" +#~ " a un error de la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." + +#~ msgid "No clients were deleted" +#~ msgstr "No se eliminaron clientes" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "No tienes permiso para cambiar el estado del cliente" + +#~ msgid "No clients selected" +#~ msgstr "No hay clientes seleccionados" + +#~ msgid "Invalid status" +#~ msgstr "Estado no válido" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "No se pudo actualizar el estado " +#~ "del cliente debido a un error de" +#~ " la base de datos. Por favor " +#~ "verifique los registros del servidor." + +#~ msgid "No clients were updated" +#~ msgstr "No se actualizaron clientes" + +#~ msgid "No file provided" +#~ msgstr "No se proporcionó ningún archivo" + +#~ msgid "File type not allowed" +#~ msgstr "Tipo de archivo no permitido" + +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "El tamaño del archivo excede el tamaño máximo permitido (10 MB)" + +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "No se pudo cargar el archivo " +#~ "adjunto debido a un error de la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "No tienes permiso para archivar clientes" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "El cliente ya está inactivo" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "Adjunto cargado exitosamente" -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "No tienes permiso para activar clientes" +#~ msgid "File not found" +#~ msgstr "Archivo no encontrado" -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "El cliente ya está activo" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "No se pudo eliminar el archivo " +#~ "adjunto debido a un error de la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "No tienes permiso para eliminar clientes" +#~ msgid "Attachment deleted successfully" +#~ msgstr "Adjunto eliminado exitosamente" -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "El contenido del comentario no puede estar vacío." -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "El comentario debe estar asociado con un proyecto, tarea o cotización." -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "No se pudo eliminar el cliente debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "No se han seleccionado clientes para su eliminación" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "No se pudieron eliminar clientes debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "No se eliminaron clientes" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "No tienes permiso para cambiar el estado del cliente" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "No hay clientes seleccionados" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Estado no válido" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "No se pudo actualizar el estado del cliente debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "No se actualizaron clientes" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "No se proporcionó ningún archivo" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Tipo de archivo no permitido" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "El tamaño del archivo excede el tamaño máximo permitido (10 MB)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "No se pudo cargar el archivo adjunto debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "El comentario no se puede asociar con múltiples objetivos" -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "Adjunto cargado exitosamente" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "Archivo no encontrado" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "No se pudo eliminar el archivo adjunto debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "Adjunto eliminado exitosamente" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "El contenido del comentario no puede estar vacío." - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "El comentario debe estar asociado con un proyecto, tarea o cotización." - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "El comentario no se puede asociar con múltiples objetivos" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Comentario de padre no válido" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Comentario agregado exitosamente" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Error al agregar el comentario" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Error al agregar comentario: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "No tienes permiso para editar este comentario." - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Comentario actualizado exitosamente" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Error al actualizar el comentario: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "No tienes permiso para eliminar este comentario." - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Comentario eliminado con éxito" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Error al eliminar comentario: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "Comentario de padre no válido" -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "Comentario agregado exitosamente" -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "No tienes permiso para eliminar este archivo adjunto" +#~ msgid "Error adding comment" +#~ msgstr "Error al agregar el comentario" -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Error al agregar comentario: %(error)s" -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "No tienes permiso para editar este comentario." -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Contacto creado exitosamente" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Error al crear contacto: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Contacto actualizado exitosamente" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Error al actualizar el contacto: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Contacto eliminado exitosamente" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "Error al eliminar contacto: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Contacto establecido como principal" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "Error al configurar el contacto principal: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Comunicación grabada con éxito" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Error al grabar comunicación: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Comment updated successfully" +#~ msgstr "Comentario actualizado exitosamente" -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "Se requiere etiqueta" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Error al actualizar el comentario: %(error)s" -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "No tienes permiso para eliminar este comentario." -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "Comentario eliminado con éxito" -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Error al eliminar comentario: %(error)s" -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "No tienes permiso para eliminar este archivo adjunto" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "Contacto creado exitosamente" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Error al crear contacto: %(error)s" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "Contacto actualizado exitosamente" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Error al actualizar el contacto: %(error)s" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "Contacto eliminado exitosamente" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "Error al eliminar contacto: %(error)s" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Contact set as primary" +#~ msgstr "Contacto establecido como principal" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "Error al configurar el contacto principal: %(error)s" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "Comunicación grabada con éxito" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Valor de oferta no válido" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Oferta creada con éxito" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Error al crear la oferta: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Oferta actualizada con éxito" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Error al actualizar la oferta: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Trato cerrado como ganado" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Error al cerrar el trato: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Trato cerrado como perdido" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Actividad registrada exitosamente" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Error al registrar la actividad: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "El nombre de la categoría es obligatorio." - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Categoría de gastos creada correctamente" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Error al crear categoría de gastos" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Categoría de gastos actualizada correctamente" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Error al actualizar la categoría de gastos" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Categoría de gastos desactivada exitosamente" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Error al desactivar la categoría de gastos" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "Se requiere título" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "Se requiere categoría" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "Se requiere cantidad" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "Se requiere fecha de gasto" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Formato de fecha no válido" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Formato de importe no válido" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Error al grabar comunicación: %(error)s" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Label is required" +#~ msgstr "Se requiere etiqueta" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Gasto creado exitosamente" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Error al crear el gasto" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "No tienes permiso para ver este gasto" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "No tienes permiso para editar este gasto" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "No se pueden editar los gastos aprobados o reembolsados" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Por favor complete todos los campos requeridos" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Gasto actualizado exitosamente" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Error al actualizar el gasto" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "No tienes permiso para eliminar este gasto" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "No se pueden eliminar los gastos aprobados o facturados" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Gasto eliminado correctamente" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Error al eliminar el gasto" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "No se han seleccionado gastos para su eliminación" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "No se pudieron eliminar los gastos debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "%(count)d gastos eliminados correctamente" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "%(count)d gastos omitidos: %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "No se seleccionaron gastos" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Valor de estado no válido" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "No se pudieron actualizar los gastos debido a un error en la base de datos" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "%(count)d gasto(s) se actualizó correctamente a %(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "%(count)d gastos omitidos: %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "%(count)d gastos omitidos (sin permiso)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Sólo los administradores pueden aprobar gastos" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Sólo se pueden aprobar gastos pendientes" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Gasto aprobado exitosamente" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Error al aprobar el gasto" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Sólo los administradores pueden rechazar gastos" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Sólo se pueden rechazar gastos pendientes" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Se requiere motivo de rechazo" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Gasto rechazado" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Error al rechazar gasto" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Sólo los administradores pueden marcar los gastos como reembolsados" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Sólo los gastos aprobados pueden marcarse como reembolsados" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Este gasto no está marcado como reembolsable." - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Gasto marcado como reembolsado" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Error al marcar el gasto como reembolsado" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "El OCR no está disponible. Por favor contacte a su administrador." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Tipo de archivo no válido. Tipos permitidos: png, jpg, jpeg, gif, pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "¡Recibo escaneado exitosamente! Ahora puedes crear un gasto con los datos extraídos." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "Error al escanear el recibo. Inténtelo de nuevo o ingrese el gasto manualmente." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "No se encontraron datos del recibo escaneado. Primero escanee un recibo." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Gasto creado correctamente a partir del recibo escaneado" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "No hay permisos asignados." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "Valor de oferta no válido" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "Oferta creada con éxito" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Error al crear la oferta: %(error)s" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "Oferta actualizada con éxito" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Error al actualizar la oferta: %(error)s" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "Trato cerrado como ganado" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Error al cerrar el trato: %(error)s" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "Trato cerrado como perdido" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "API REST para integraciones" +#~ msgid "Activity recorded successfully" +#~ msgstr "Actividad registrada exitosamente" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "El nombre del cliente es obligatorio." +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Error al registrar la actividad: %(error)s" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "El nombre de la categoría es obligatorio." -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "Expense category created successfully" +#~ msgstr "Categoría de gastos creada correctamente" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "Error al crear categoría de gastos" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "Categoría de gastos actualizada correctamente" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "Error updating expense category" +#~ msgstr "Error al actualizar la categoría de gastos" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Categoría de gastos desactivada exitosamente" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Error deactivating expense category" +#~ msgstr "Error al desactivar la categoría de gastos" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Title is required" +#~ msgstr "Se requiere título" -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Category is required" +#~ msgstr "Se requiere categoría" -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Amount is required" +#~ msgstr "Se requiere cantidad" -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "Expense date is required" +#~ msgstr "Se requiere fecha de gasto" -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "Formato de fecha no válido" -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "Formato de importe no válido" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "Gasto creado exitosamente" -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "Error al crear el gasto" -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "No tienes permiso para ver este gasto" -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "No tienes permiso para editar este gasto" -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "No se pueden editar los gastos aprobados o reembolsados" -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "Please fill in all required fields" +#~ msgstr "Por favor complete todos los campos requeridos" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "Expense updated successfully" +#~ msgstr "Gasto actualizado exitosamente" -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "Error updating expense" +#~ msgstr "Error al actualizar el gasto" -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "No tienes permiso para eliminar este gasto" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "No se pueden eliminar los gastos aprobados o facturados" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "Expense deleted successfully" +#~ msgstr "Gasto eliminado correctamente" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "Error al eliminar el gasto" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "No se han seleccionado gastos para su eliminación" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudieron eliminar los gastos " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "%(count)d gastos eliminados correctamente" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "%(count)d gastos omitidos: %(errors)s" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "No se seleccionaron gastos" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "Invalid status value" +#~ msgstr "Valor de estado no válido" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "" +#~ "No se pudieron actualizar los gastos " +#~ "debido a un error en la base " +#~ "de datos" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "%(count)d gasto(s) se actualizó correctamente a %(status)s" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "%(count)d gastos omitidos: %(errors)s" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "%(count)d gastos omitidos (sin permiso)" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Sólo los administradores pueden aprobar gastos" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Sólo se pueden aprobar gastos pendientes" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "Gasto aprobado exitosamente" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "Error approving expense" +#~ msgstr "Error al aprobar el gasto" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Sólo los administradores pueden rechazar gastos" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Sólo se pueden rechazar gastos pendientes" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Rejection reason is required" +#~ msgstr "Se requiere motivo de rechazo" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Avanzado" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Revisar" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "Gasto rechazado" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "Error al rechazar gasto" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "Sólo los administradores pueden marcar los gastos como reembolsados" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Sólo los gastos aprobados pueden marcarse como reembolsados" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Compañía" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Este gasto no está marcado como reembolsable." -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Gasto marcado como reembolsado" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Error al marcar el gasto como reembolsado" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Ganchos web" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "El OCR no está disponible. Por favor contacte a su administrador." -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Tipo de archivo no válido. Tipos permitidos: png, jpg, jpeg, gif, pdf" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Proyectos" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "¡Recibo escaneado exitosamente! Ahora puedes" +#~ " crear un gasto con los datos " +#~ "extraídos." -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Error al escanear el recibo. Inténtelo" +#~ " de nuevo o ingrese el gasto " +#~ "manualmente." -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "No se encontraron datos del recibo " +#~ "escaneado. Primero escanee un recibo." -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Gasto creado correctamente a partir del recibo escaneado" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Permission denied." +#~ msgstr "No hay permisos asignados." -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "El SKU ya existe. Utilice un SKU diferente." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Artículo en stock creado correctamente." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "Error al crear artículo en stock: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Artículo en stock actualizado correctamente." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "Error al actualizar el artículo en stock: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "No se puede eliminar un artículo en stock con stock existente o historial de movimiento." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "Artículo en stock eliminado correctamente." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "Error al eliminar artículo en stock: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "El código de almacén ya existe. Utilice un código diferente." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Almacén creado exitosamente." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Error al crear almacén: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Almacén actualizado exitosamente." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "Error al actualizar el almacén: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "No se puede eliminar el almacén con stock existente. Primero transfiera o elimine todas las existencias." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Almacén eliminado correctamente." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Error al eliminar el almacén: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "API REST para integraciones" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Linear API key is required." +#~ msgstr "El nombre del cliente es obligatorio." -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "El movimiento de stock se registró con éxito." +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "Error al registrar el movimiento de stock: %(error)s" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "Los almacenes de origen y destino deben ser diferentes." +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Stock insuficiente disponible en el almacén de origen." +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "La transferencia de acciones se completó con éxito." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Error al crear la transferencia: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "El ajuste de existencias se registró con éxito." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Error de ajuste de grabación: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Reserva realizada con éxito." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Error al completar la reserva: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "Reserva cancelada exitosamente." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "Error al cancelar la reserva: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "Proveedor creado exitosamente." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Error al crear proveedor: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "El código de proveedor ya existe. Utilice un código diferente." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "Proveedor actualizado correctamente." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Error al actualizar proveedor: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "No se puede eliminar el proveedor con artículos en stock asociados. Retire los elementos primero." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "Proveedor eliminado exitosamente." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Error al eliminar proveedor: %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "Se requiere título" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "No se encontraron proveedores." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "El nombre del rol es obligatorio" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "No se pudo crear el rol debido a un error en la base de datos" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Orden de compra creada exitosamente." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Error al crear orden de compra: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "No se puede editar una orden de compra que se ha recibido." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "No se pudo actualizar la función debido a un error de la base de datos" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Orden de compra actualizada exitosamente." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Error al actualizar la orden de compra: %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "No se pudieron actualizar los roles de usuario debido a un error de la base de datos" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Orden de compra marcada como enviada." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Error al enviar la orden de compra: %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "No se pudo crear el rol debido a un error en la base de datos" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Orden de compra cancelada exitosamente." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Error al cancelar orden de compra: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "No se puede eliminar una orden de compra que se ha recibido. Cancélelo en su lugar." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "No se pudo eliminar el rol debido a un error de la base de datos" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Orden de compra eliminada exitosamente." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Error al eliminar orden de compra: %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "No se pudo crear el rol debido a un error en la base de datos" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Orden de compra marcada como recibida y stock actualizado." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Error al recibir la orden de compra: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "Se requieren proyecto, nombre del cliente y fecha de vencimiento." +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Formato de fecha de vencimiento no válido" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Formato de tasa impositiva no válido" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Proyecto seleccionado no encontrado" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "No se pudo crear la factura debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "No tienes permiso para ver esta factura" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "No tienes permiso para editar esta factura" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "Advertencia: No se pudo reservar stock para el artículo %(item)s: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "No se pudo actualizar la factura debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "Factura actualizada exitosamente" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "Advertencia: No se pudo reducir el stock del artículo %(item)s: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "No tienes permiso para eliminar esta factura" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "Sólo se pueden editar borradores de cotizaciones" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "No se pudo eliminar la factura debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "No se han seleccionado facturas para eliminar" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "No se pudieron eliminar facturas debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "No se seleccionaron facturas" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "No se pudieron actualizar las facturas debido a un error en la base de datos" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "No se seleccionaron entradas de tiempo, costos, gastos o bienes adicionales" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "No se pudieron generar elementos debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "Elementos de factura generados exitosamente a partir de entradas de tiempo y costos." - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "Se aplicaron %(hours)s horas prepagas para %(client)s antes de los excedentes de facturación." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "No tienes permiso para exportar esta factura" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "Error al generar el PDF: %(err)s. El respaldo también falló: %(fb)s" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "No tienes permiso para duplicar esta factura" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "No se pudo duplicar la factura debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "No se pudo finalizar la factura duplicada debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "Advanced" +#~ msgstr "Avanzado" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Review" +#~ msgstr "Revisar" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Factura marcada como enviada" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Factura marcada como pagada" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "Company" +#~ msgstr "Compañía" -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "Webhooks" +#~ msgstr "Ganchos web" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Projects" +#~ msgstr "Proyectos" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "El SKU ya existe. Utilice un SKU diferente." -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Stock item created successfully." +#~ msgstr "Artículo en stock creado correctamente." -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "Error al crear artículo en stock: %(error)s" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "Stock item updated successfully." +#~ msgstr "Artículo en stock actualizado correctamente." -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "Se requieren clave y etiqueta." +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "Error al actualizar el artículo en stock: %(error)s" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "No se pudo crear la columna debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "No se puede eliminar un artículo " +#~ "en stock con stock existente o " +#~ "historial de movimiento." -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "No se pudo actualizar la columna debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Stock item deleted successfully." +#~ msgstr "Artículo en stock eliminado correctamente." -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "Las columnas del sistema no se pueden eliminar" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "Error al eliminar artículo en stock: %(error)s" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "No se pudo eliminar la columna debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "El código de almacén ya existe. Utilice un código diferente." -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "No se pudo alternar la columna debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Warehouse created successfully." +#~ msgstr "Almacén creado exitosamente." -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Error al crear almacén: %(error)s" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "Almacén actualizado exitosamente." -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "Error al actualizar el almacén: %(error)s" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "No se puede eliminar el almacén " +#~ "con stock existente. Primero transfiera " +#~ "o elimine todas las existencias." -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Almacén eliminado correctamente." -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Error al eliminar el almacén: %(error)s" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "El temporizador se detuvo con éxito" +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Cliente potencial creado con éxito" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Error al crear cliente potencial: %(error)s" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Cliente potencial actualizado exitosamente" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Error al actualizar el cliente potencial: %(error)s" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "El cliente potencial ya se ha convertido" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Cliente potencial convertido en cliente exitosamente" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Error al convertir el cliente potencial: %(error)s" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Cliente potencial convertido para negociar con éxito" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Plomo marcado como perdido" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "Error al marcar el cliente potencial como perdido: %(error)s" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Entrada de millas creada exitosamente" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Error al crear la entrada de millas" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "El movimiento de stock se registró con éxito." -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "No tiene permiso para ver esta entrada de millas" +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "No tiene permiso para editar esta entrada de millas" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "Error al registrar el movimiento de stock: %(error)s" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "No se pueden editar las entradas de millas aprobadas o reembolsadas" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "Los almacenes de origen y destino deben ser diferentes." -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Entrada de millas actualizada exitosamente" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Stock insuficiente disponible en el almacén de origen." -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Error al actualizar la entrada de millas" +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "No tiene permiso para eliminar esta entrada de millas" +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "La entrada de millas se eliminó correctamente" +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Error al eliminar la entrada de millas" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "La transferencia de acciones se completó con éxito." -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "No se han seleccionado entradas de millas para eliminar" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "No se pudieron eliminar las entradas de kilometraje debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "%(count)d entradas de kilometraje eliminadas correctamente%(plural)s" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Error al crear la transferencia: %(error)s" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "%(count)d entradas de kilometraje omitidas%(plural)s: %(errors)s" +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "El ajuste de existencias se registró con éxito." -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "No se han seleccionado entradas de millas" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Error de ajuste de grabación: %(error)s" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "No se pudieron actualizar las entradas de millas debido a un error en la base de datos" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Reserva realizada con éxito." -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "Se actualizó correctamente %(count)d entradas de kilometraje%(plural)s a %(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "%(count)d %(plural)s de entradas de millas omitidas (sin permiso)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Sólo los administradores pueden aprobar entradas de millas" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Sólo se pueden aprobar entradas de millas pendientes" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Entrada de millas aprobada exitosamente" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Error al aprobar el ingreso de millas" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Sólo los administradores pueden rechazar entradas de millas" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "Sólo se pueden rechazar las entradas de millas pendientes" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Entrada de millas rechazada" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Error al rechazar la entrada de millas" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "Sólo los administradores pueden marcar las entradas de millas como reembolsadas" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "Sólo las entradas de millas aprobadas pueden marcarse como reembolsadas" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Entrada de millas marcada como reembolsada" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Error al marcar la entrada de kilometraje como reembolsado" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "El título de la cotización y el cliente son obligatorios." - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Cliente seleccionado no encontrado" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Formato de monto total no válido" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Formato de horas estimadas no válido" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Formato de fecha no válido para válido hasta" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "No se pudo crear la cotización debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Cotización creada exitosamente" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "Sólo se pueden editar borradores de cotizaciones" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "No se pudo actualizar la cotización debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "Cotización actualizada exitosamente" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "Sólo se pueden enviar borradores de cotizaciones." - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "No se pudo enviar la cotización debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Cotización enviada exitosamente" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Esta cotización no se puede aceptar." - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "No se pudo aceptar la cotización: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "No se pudo aceptar la cotización debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Cotización aceptada y proyecto creado exitosamente." - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Esta cotización no puede ser rechazada." - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "No se pudo rechazar la cotización: %(error)s" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Error al completar la reserva: %(error)s" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "No se pudo rechazar la cotización debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Reservation cancelled successfully." +#~ msgstr "Reserva cancelada exitosamente." -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Cotización rechazada" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "Error al cancelar la reserva: %(error)s" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "Sólo se pueden eliminar presupuestos borradores o rechazados." +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "No se pudo eliminar la cotización debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Supplier created successfully." +#~ msgstr "Proveedor creado exitosamente." -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Cotización eliminada exitosamente" +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Error al crear proveedor: %(error)s" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "El código de proveedor ya existe. Utilice un código diferente." -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Supplier updated successfully." +#~ msgstr "Proveedor actualizado correctamente." -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Error al actualizar proveedor: %(error)s" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "No se puede eliminar el proveedor " +#~ "con artículos en stock asociados. Retire" +#~ " los elementos primero." -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "No válido desde el formato de fecha" +#~ msgid "Supplier deleted successfully." +#~ msgstr "Proveedor eliminado exitosamente." -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Formato de fecha no válido" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Error al eliminar proveedor: %(error)s" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "No tienes permiso para ver este pago" +#~ msgid "Supplier is required." +#~ msgstr "Se requiere título" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "Se requiere factura, monto y fecha de pago." +#~ msgid "Supplier not found." +#~ msgstr "No se encontraron proveedores." -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "Factura seleccionada no encontrada" +#~ msgid "Order date is required." +#~ msgstr "El nombre del rol es obligatorio" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "No tienes permiso para agregar pagos a esta factura" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "No se pudo crear el rol debido a un error en la base de datos" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "El monto del pago debe ser mayor que cero" +#~ msgid "Purchase order created successfully." +#~ msgstr "Orden de compra creada exitosamente." -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Monto de pago no válido" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Error al crear orden de compra: %(error)s" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Formato de fecha de pago no válido" +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "No se puede editar una orden de compra que se ha recibido." -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "La tarifa de entrada no puede ser negativa" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "No se pudo actualizar la función debido a un error de la base de datos" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Importe de tarifa de puerta de enlace no válido" +#~ msgid "Purchase order updated successfully." +#~ msgstr "Orden de compra actualizada exitosamente." -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "No se pudo crear el pago debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Error al actualizar la orden de compra: %(error)s" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "No tienes permiso para editar este pago" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "" +#~ "No se pudieron actualizar los roles " +#~ "de usuario debido a un error de" +#~ " la base de datos" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "No se pudo actualizar el pago debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Purchase order marked as sent." +#~ msgstr "Orden de compra marcada como enviada." -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Pago actualizado exitosamente" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Error al enviar la orden de compra: %(error)s" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "No tienes permiso para eliminar este pago." +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "No se pudo crear el rol debido a un error en la base de datos" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "No se pudo eliminar el pago debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Orden de compra cancelada exitosamente." -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Pago eliminado exitosamente" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Error al cancelar orden de compra: %(error)s" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "No se han seleccionado pagos para su eliminación" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "" +#~ "No se puede eliminar una orden de" +#~ " compra que se ha recibido. Cancélelo" +#~ " en su lugar." -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "No se pudieron eliminar los pagos debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "No se pudo eliminar el rol debido a un error de la base de datos" -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "No se seleccionaron pagos" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Orden de compra eliminada exitosamente." -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "No se pudieron actualizar los pagos debido a un error en la base de datos" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Error al eliminar orden de compra: %(error)s" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "La fecha de inicio debe ser anterior a la fecha de finalización." +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "No se pudo crear el rol debido a un error en la base de datos" -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "No se encontró ninguna tarifa diaria para esta ubicación. Primero configure las tarifas." +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "Orden de compra marcada como recibida y stock actualizado." -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Reclamo de viáticos creado exitosamente" +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Error al recibir la orden de compra: %(error)s" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Error al crear el reclamo de viáticos" +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "No tiene permiso para ver este reclamo de viáticos" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "No tiene permiso para editar este reclamo de viáticos" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "No se pueden editar los reclamos de viáticos aprobados o reembolsados" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "Reclamo de viáticos actualizado exitosamente" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Error al actualizar el reclamo de viáticos" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "No tiene permiso para eliminar este reclamo de viáticos" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Reclamo de viáticos eliminado exitosamente" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Error al eliminar el reclamo de viáticos" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "No se han seleccionado reclamaciones de viáticos para su eliminación" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "No se pudieron eliminar los reclamos de viáticos debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "%(count)d reclamo(s) de viáticos se eliminó exitosamente" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "%(count)d reclamo(s) de viáticos omitidos: %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "No se han seleccionado reclamaciones de viáticos" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "No se pudieron actualizar los viáticos debido a un error en la base de datos" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "%(count)d reclamo(s) de viáticos se actualizó exitosamente a %(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "%(count)d reclamo(s) de viáticos omitidos (sin permiso)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Sólo los administradores pueden aprobar solicitudes de viáticos" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Sólo se pueden aprobar reclamaciones de viáticos pendientes" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Reclamo de viáticos aprobado exitosamente" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Error al aprobar el reclamo de viáticos" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Sólo los administradores pueden rechazar las solicitudes de viáticos" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Sólo se pueden rechazar las solicitudes de viáticos pendientes" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Reclamo de viáticos rechazado" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Error al rechazar el reclamo de viáticos" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Tarifa diaria creada exitosamente" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Error al crear la tarifa diaria" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Tarifa diaria actualizada con éxito" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Error al actualizar la tarifa diaria" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "No se puede eliminar la tarifa: está siendo utilizada por %(count)d reclamos de viáticos. Desactívelo en su lugar." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "La tarifa diaria se eliminó correctamente" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Error al eliminar la tarifa diaria" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "No tienes permiso para acceder a esta página." - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "El nombre del rol es obligatorio" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "Ya existe un rol con este nombre" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "No se pudo crear el rol debido a un error en la base de datos" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Rol creado exitosamente" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "No se pudo actualizar la función debido a un error de la base de datos" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "Se requieren proyecto, nombre del cliente y fecha de vencimiento." -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Función actualizada correctamente" +#~ msgid "Invalid due date format" +#~ msgstr "Formato de fecha de vencimiento no válido" -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "No tienes permiso para realizar esta acción" +#~ msgid "Invalid tax rate format" +#~ msgstr "Formato de tasa impositiva no válido" -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "Los roles del sistema no se pueden eliminar" +#~ msgid "Selected project not found" +#~ msgstr "Proyecto seleccionado no encontrado" -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "No se puede eliminar la función asignada a los usuarios. Primero reasigne los usuarios." +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo crear la factura debido" +#~ " a un error en la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." + +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "No tienes permiso para ver esta factura" + +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" + +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" + +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" + +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" + +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" + +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" + +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" + +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "No tienes permiso para editar esta factura" + +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Advertencia: No se pudo reservar stock" +#~ " para el artículo %(item)s: %(error)s" + +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar la factura " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Invoice updated successfully" +#~ msgstr "Factura actualizada exitosamente" + +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Advertencia: No se pudo reducir el " +#~ "stock del artículo %(item)s: %(error)s" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "No tienes permiso para eliminar esta factura" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "Sólo se pueden editar borradores de cotizaciones" + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar la factura " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "No se han seleccionado facturas para eliminar" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudieron eliminar facturas debido" +#~ " a un error en la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." + +#~ msgid "No invoices selected" +#~ msgstr "No se seleccionaron facturas" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "" +#~ "No se pudieron actualizar las facturas" +#~ " debido a un error en la base" +#~ " de datos" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "" +#~ "No se seleccionaron entradas de tiempo," +#~ " costos, gastos o bienes adicionales" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudieron generar elementos debido" +#~ " a un error de la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "" +#~ "Elementos de factura generados exitosamente" +#~ " a partir de entradas de tiempo " +#~ "y costos." + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "Se aplicaron %(hours)s horas prepagas " +#~ "para %(client)s antes de los excedentes" +#~ " de facturación." + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "No tienes permiso para exportar esta factura" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" + +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" + +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" + +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "Error al generar el PDF: %(err)s. El respaldo también falló: %(fb)s" + +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "No tienes permiso para duplicar esta factura" + +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "No se pudo duplicar la factura " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "No se pudo finalizar la factura " +#~ "duplicada debido a un error en la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "No se pudo eliminar el rol debido a un error de la base de datos" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "Rol \"%(name)s\" eliminado exitosamente" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "No se pudieron actualizar los roles de usuario debido a un error de la base de datos" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Roles de usuario actualizados exitosamente" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Invoice marked as sent" +#~ msgstr "Factura marcada como enviada" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Invoice marked as paid" +#~ msgstr "Factura marcada como pagada" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "Client is required." +#~ msgstr "" + +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" + +#~ msgid "Project must belong to the same client." +#~ msgstr "" + +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" + +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "El nombre del proyecto y el cliente son obligatorios." +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Monto de presupuesto no válido" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Porcentaje de umbral de presupuesto no válido (0-100)" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Proyecto no encontrado" +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "No tienes permiso para archivar proyectos." +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "El proyecto ya está archivado." +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "No tienes permiso para desarchivar proyectos" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "El proyecto ya está activo." +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "No tienes permiso para desactivar proyectos" +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "El proyecto ya está inactivo." +#~ msgid "Key and label are required" +#~ msgstr "Se requieren clave y etiqueta." -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "No tienes permiso para activar proyectos" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo crear la columna debido" +#~ " a un error de la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "No se puede eliminar el proyecto con entradas de tiempo existentes" +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar la columna " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "No se pudo eliminar el proyecto debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "System columns cannot be deleted" +#~ msgstr "Las columnas del sistema no se pueden eliminar" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "No tienes permiso para eliminar proyectos" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar la columna " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "No hay proyectos seleccionados para eliminar" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo alternar la columna " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "No se pudieron eliminar proyectos debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "No se eliminaron proyectos" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "No tienes permiso para cambiar el estado del proyecto" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "No hay proyectos seleccionados" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "No se pudo actualizar el estado del proyecto debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "No se actualizaron proyectos" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "El proyecto ya está en favoritos." +#~ msgid "Timer stopped successfully" +#~ msgstr "El temporizador se detuvo con éxito" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Proyecto agregado a favoritos" +#~ msgid "Lead created successfully" +#~ msgstr "Cliente potencial creado con éxito" -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "No se pudo agregar el proyecto a favoritos" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Error al crear cliente potencial: %(error)s" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "El proyecto no está en favoritos." +#~ msgid "Lead updated successfully" +#~ msgstr "Cliente potencial actualizado exitosamente" -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Proyecto eliminado de favoritos" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Error al actualizar el cliente potencial: %(error)s" -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "No se pudo eliminar el proyecto de favoritos" +#~ msgid "Lead has already been converted" +#~ msgstr "El cliente potencial ya se ha convertido" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "Se requiere descripción, categoría, monto y fecha." +#~ msgid "Lead converted to client successfully" +#~ msgstr "Cliente potencial convertido en cliente exitosamente" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "No se pudo agregar el costo debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Error al convertir el cliente potencial: %(error)s" -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Costo agregado exitosamente" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Cliente potencial convertido para negociar con éxito" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Costo no encontrado" +#~ msgid "Lead marked as lost" +#~ msgstr "Plomo marcado como perdido" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "No tienes permiso para editar este costo." +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "Error al marcar el cliente potencial como perdido: %(error)s" -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "No se pudo actualizar el costo debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Costo actualizado exitosamente" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "No tienes permiso para eliminar este costo." +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "No se puede eliminar el costo que se ha facturado" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "No se pudo eliminar el costo debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Se requiere nombre y precio unitario." +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Formato de cantidad no válido" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Formato de precio unitario no válido" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "No se pudo agregar material adicional debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Extra bueno agregado exitosamente" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Bien extra no encontrado" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "No tienes permiso para editar este bien extra." - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "No se pudo actualizar el bien adicional debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Extra bueno actualizado exitosamente" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "No tienes permiso para eliminar este bien extra." - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "No se puede eliminar el bien adicional que se ha agregado a una factura" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "No se pudo eliminar el bien adicional debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Proyecto creado exitosamente" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Formato de monto de descuento no válido" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "La cotización debe aprobarse antes de poder enviarse." - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "No se puede enviar la cotización: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "No tienes permiso para cargar archivos adjuntos a esta cita." - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "No tienes permiso para descargar este archivo adjunto." - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "No tiene permiso para solicitar la aprobación de esta cotización" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Esta cotización no requiere aprobación." - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "No se puede solicitar aprobación: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "No se pudo solicitar la aprobación debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Aprobación solicitada exitosamente" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Esta cotización no está pendiente de aprobación." - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "No se puede aprobar la cotización: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "No se pudo aprobar la cotización debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Cotización aprobada exitosamente" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "No se puede rechazar la cotización: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Aprobación de cotización rechazada" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "No se pudo crear la plantilla debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Plantilla creada exitosamente" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "No tienes permiso para crear una plantilla a partir de esta cotización." - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "No se pudo guardar la plantilla debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Plantilla guardada correctamente" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "No tienes permiso para exportar esta cotización" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Error al generar PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "Se requiere la dirección de correo electrónico del destinatario" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Cotización enviada exitosamente a %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "No se pudo enviar la cotización: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Error al enviar correo electrónico: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "No tienes permiso para duplicar esta cita." - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "No se pudo duplicar la cotización debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "No se pudo finalizar la cotización duplicada debido a un error en la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "Cita %(quote_number)s creada como duplicada" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Por favor seleccione una acción y al menos una cotización" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "ID de cotización no válidos" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "No se encontraron comillas o no tienes permiso" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "%(count)d cotizaciones duplicadas" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "No se pudieron duplicar %(count)d cotizaciones" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Error al duplicar cotizaciones" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "%(count)d cotizaciones marcadas como enviadas" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "No se pudieron marcar %(count)d cotizaciones como enviadas" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Error al actualizar cotizaciones" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "%(count)d cotizaciones eliminadas" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "No se pudo eliminar %(count)d cotizaciones (pueden estar en uso)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Error al eliminar cotizaciones" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Acción no válida" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "Se requieren nombre, proyecto, cliente, frecuencia y próxima fecha de ejecución." +#~ msgid "Mileage entry created successfully" +#~ msgstr "Entrada de millas creada exitosamente" -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Formato de fecha de próxima ejecución no válido" +#~ msgid "Error creating mileage entry" +#~ msgstr "Error al crear la entrada de millas" -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Formato de fecha de finalización no válido" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "No tiene permiso para ver esta entrada de millas" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Proyecto seleccionado o cliente no encontrado" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "No tiene permiso para editar esta entrada de millas" -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "No se pudo crear una factura recurrente debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "No se pueden editar las entradas de millas aprobadas o reembolsadas" -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "No tienes permiso para ver esta factura recurrente" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Entrada de millas actualizada exitosamente" -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "No tienes permiso para editar esta factura recurrente" +#~ msgid "Error updating mileage entry" +#~ msgstr "Error al actualizar la entrada de millas" -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "No se pudo actualizar la factura recurrente debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "No tiene permiso para eliminar esta entrada de millas" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Factura recurrente actualizada correctamente" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "La entrada de millas se eliminó correctamente" -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "No tienes permiso para eliminar esta factura recurrente" +#~ msgid "Error deleting mileage entry" +#~ msgstr "Error al eliminar la entrada de millas" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "No se pudo eliminar la factura recurrente debido a un error en la base de datos. Por favor verifique los registros del servidor." +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "No se han seleccionado entradas de millas para eliminar" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "No se pudieron eliminar las entradas " +#~ "de kilometraje debido a un error " +#~ "en la base de datos. Por favor " +#~ "verifique los registros del servidor." -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "%(count)d entradas de kilometraje eliminadas correctamente%(plural)s" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "%(count)d entradas de kilometraje omitidas%(plural)s: %(errors)s" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Comenzar" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "Fin" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "No mileage entries selected" +#~ msgstr "No se han seleccionado entradas de millas" -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Tarea" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Notas" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "facturable" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Cliente" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Usuario" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "Sí" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "No" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "" +#~ "No se pudieron actualizar las entradas" +#~ " de millas debido a un error en" +#~ " la base de datos" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "No se pudo eliminar el filtro debido a un error de la base de datos" +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "" +#~ "Se actualizó correctamente %(count)d entradas" +#~ " de kilometraje%(plural)s a %(status)s" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "%(count)d %(plural)s de entradas de millas omitidas (sin permiso)" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Sólo los administradores pueden aprobar entradas de millas" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Sólo se pueden aprobar entradas de millas pendientes" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Entrada de millas aprobada exitosamente" -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "Error approving mileage entry" +#~ msgstr "Error al aprobar el ingreso de millas" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Sólo los administradores pueden rechazar entradas de millas" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "Sólo se pueden rechazar las entradas de millas pendientes" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Mileage entry rejected" +#~ msgstr "Entrada de millas rechazada" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Error al rechazar la entrada de millas" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "" +#~ "Sólo los administradores pueden marcar " +#~ "las entradas de millas como reembolsadas" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "Sólo las entradas de millas aprobadas pueden marcarse como reembolsadas" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Entrada de millas marcada como reembolsada" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Error al marcar la entrada de kilometraje como reembolsado" -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "No se pudo actualizar la configuración debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Quote title and client are required" +#~ msgstr "El título de la cotización y el cliente son obligatorios." -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "¡Configuración completa! Gracias por ayudarnos a mejorar TimeTracker." +#~ msgid "Selected client not found" +#~ msgstr "Cliente seleccionado no encontrado" + +#~ msgid "Invalid total amount format" +#~ msgstr "Formato de monto total no válido" + +#~ msgid "Invalid estimated hours format" +#~ msgstr "Formato de horas estimadas no válido" + +#~ msgid "Invalid date format for valid until" +#~ msgstr "Formato de fecha no válido para válido hasta" + +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo crear la cotización " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Quote created successfully" +#~ msgstr "Cotización creada exitosamente" + +#~ msgid "Only draft quotes can be edited" +#~ msgstr "Sólo se pueden editar borradores de cotizaciones" + +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar la cotización " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "Quote updated successfully" +#~ msgstr "Cotización actualizada exitosamente" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "Sólo se pueden enviar borradores de cotizaciones." -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "El nombre del proyecto y la tarea son obligatorios." +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "No se pudo enviar la cotización " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "Quote sent successfully" +#~ msgstr "Cotización enviada exitosamente" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "El proyecto seleccionado no existe" +#~ msgid "This quote cannot be accepted" +#~ msgstr "Esta cotización no se puede aceptar." -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "No se pudo aceptar la cotización: %(error)s" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "No tienes acceso a esta tarea" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Solo puedes editar las tareas que hayas creado" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "El nombre de la tarea es obligatorio." - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "Se requiere proyecto" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "No se pudo actualizar el estado debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "No se pudo actualizar la tarea debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "No tienes permiso para actualizar esta tarea" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "Solo puedes actualizar las tareas que creaste" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "Solo puedes asignar tareas que hayas creado" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "El usuario seleccionado no existe" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Tarea no asignada" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Solo puedes eliminar tareas que hayas creado" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "No se puede eliminar la tarea con entradas de tiempo existentes" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "No se pudo eliminar la tarea debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "No hay tareas seleccionadas para eliminar" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "No se pudieron eliminar tareas debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "No hay tareas seleccionadas" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "No se pudieron actualizar las tareas debido a un error de la base de datos" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Ingrese la nueva fecha de vencimiento (AAAA-MM-DD):" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "Se requiere fecha de gasto" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Formato de fecha no válido" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "Soporte de base de datos" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "%(count)d cotizaciones duplicadas" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "No se encontraron tareas" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "%(count)d gasto(s) se actualizó correctamente a %(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "%(count)d gastos omitidos (sin permiso)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Valor de prioridad no válido" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Ningún usuario seleccionado para la asignación" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Usuario no válido seleccionado" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "No se pudieron asignar tareas debido a un error de la base de datos" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Ningún proyecto seleccionado" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Proyecto no válido seleccionado" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "No se pudieron mover tareas debido a un error de la base de datos" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Solo los administradores pueden ver todas las tareas vencidas" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo aceptar la cotización " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Cotización aceptada y proyecto creado exitosamente." + +#~ msgid "This quote cannot be rejected" +#~ msgstr "Esta cotización no puede ser rechazada." + +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "No se pudo rechazar la cotización: %(error)s" + +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo rechazar la cotización " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Quote rejected" +#~ msgstr "Cotización rechazada" + +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "Sólo se pueden eliminar presupuestos borradores o rechazados." + +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar la cotización " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Quote deleted successfully" +#~ msgstr "Cotización eliminada exitosamente" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "" + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Stripe API key not configured." +#~ msgstr "" + +#~ msgid "Payment processed successfully." +#~ msgstr "" + +#~ msgid "Invalid from date format" +#~ msgstr "No válido desde el formato de fecha" + +#~ msgid "Invalid to date format" +#~ msgstr "Formato de fecha no válido" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "No tienes permiso para ver este pago" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "Se requiere factura, monto y fecha de pago." + +#~ msgid "Selected invoice not found" +#~ msgstr "Factura seleccionada no encontrada" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "No tienes permiso para agregar pagos a esta factura" + +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "El monto del pago debe ser mayor que cero" + +#~ msgid "Invalid payment amount" +#~ msgstr "Monto de pago no válido" + +#~ msgid "Invalid payment date format" +#~ msgstr "Formato de fecha de pago no válido" + +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "La tarifa de entrada no puede ser negativa" + +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Importe de tarifa de puerta de enlace no válido" + +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo crear el pago debido" +#~ " a un error en la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." + +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "No tienes permiso para editar este pago" + +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar el pago " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Payment updated successfully" +#~ msgstr "Pago actualizado exitosamente" + +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "No tienes permiso para eliminar este pago." + +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar el pago debido" +#~ " a un error de la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "Payment deleted successfully" +#~ msgstr "Pago eliminado exitosamente" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "No payments selected for deletion" +#~ msgstr "No se han seleccionado pagos para su eliminación" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudieron eliminar los pagos " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "No payments selected" +#~ msgstr "No se seleccionaron pagos" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "" +#~ "No se pudieron actualizar los pagos " +#~ "debido a un error en la base " +#~ "de datos" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "Start date must be before end date" +#~ msgstr "La fecha de inicio debe ser anterior a la fecha de finalización." -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "No se encontró ninguna tarifa diaria " +#~ "para esta ubicación. Primero configure " +#~ "las tarifas." -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Per diem claim created successfully" +#~ msgstr "Reclamo de viáticos creado exitosamente" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "Error creating per diem claim" +#~ msgstr "Error al crear el reclamo de viáticos" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "No tiene permiso para ver este reclamo de viáticos" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "No tiene permiso para editar este reclamo de viáticos" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "No se pueden editar los reclamos de viáticos aprobados o reembolsados" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "No se pudo crear la plantilla debido a un error de la base de datos" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Reclamo de viáticos actualizado exitosamente" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "No se pudo actualizar la plantilla debido a un error de la base de datos" +#~ msgid "Error updating per diem claim" +#~ msgstr "Error al actualizar el reclamo de viáticos" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "No se pudo eliminar la plantilla debido a un error de la base de datos" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "No tiene permiso para eliminar este reclamo de viáticos" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Reclamo de viáticos eliminado exitosamente" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "No se puede iniciar el cronómetro para un proyecto archivado. Primero desarchive el proyecto." +#~ msgid "Error deleting per diem claim" +#~ msgstr "Error al eliminar el reclamo de viáticos" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "No se puede iniciar el temporizador para un proyecto inactivo" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "No se han seleccionado reclamaciones de viáticos para su eliminación" -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "La tarea seleccionada no es válida para el proyecto elegido" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "No se pudieron eliminar los reclamos " +#~ "de viáticos debido a un error en" +#~ " la base de datos. Por favor " +#~ "verifique los registros del servidor." -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "%(count)d reclamo(s) de viáticos se eliminó exitosamente" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "%(count)d reclamo(s) de viáticos omitidos: %(errors)s" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "No tienes acceso a este proyecto." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "No tienes acceso a esta tarea" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Ya tienes un temporizador activo. Deténgalo antes de comenzar uno nuevo." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "No se pudo iniciar el cronómetro debido a un error de la base de datos. Por favor verifique los registros del servidor." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Desconocido" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "No per diem claims selected" +#~ msgstr "No se han seleccionado reclamaciones de viáticos" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "La plantilla debe tener un proyecto para iniciar un temporizador." - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "No se puede iniciar el temporizador para este proyecto" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "No hay ningún temporizador activo para detener" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Ningún proyecto" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "" +#~ "No se pudieron actualizar los viáticos" +#~ " debido a un error en la base" +#~ " de datos" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "%(count)d reclamo(s) de viáticos se actualizó exitosamente a %(status)s" -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "No hay ningún temporizador activo para detener" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "%(count)d reclamo(s) de viáticos omitidos (sin permiso)" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "Temporizador detenido" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "Sólo los administradores pueden aprobar solicitudes de viáticos" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "No se pudo crear el cliente. Por favor inténtalo de nuevo." +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "Sólo se pueden aprobar reclamaciones de viáticos pendientes" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "No hay ningún temporizador activo para detener" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Reclamo de viáticos aprobado exitosamente" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "Error approving per diem claim" +#~ msgstr "Error al aprobar el reclamo de viáticos" -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "No se pudo crear el cliente. Por favor inténtalo de nuevo." +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "Sólo los administradores pueden rechazar las solicitudes de viáticos" -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "No hay ningún temporizador activo para detener" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "Sólo se pueden rechazar las solicitudes de viáticos pendientes" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "Valor de estado no válido" +#~ msgid "Per diem claim rejected" +#~ msgstr "Reclamo de viáticos rechazado" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "Sólo puedes editar tus propios temporizadores." +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Error al rechazar el reclamo de viáticos" -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Tarea no válida seleccionada para el proyecto elegido" +#~ msgid "Per diem rate created successfully" +#~ msgstr "Tarifa diaria creada exitosamente" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "La hora de inicio no puede ser en el futuro." +#~ msgid "Error creating per diem rate" +#~ msgstr "Error al crear la tarifa diaria" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Formato de fecha/hora de inicio no válido" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Tarifa diaria actualizada con éxito" -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "La hora de finalización debe ser posterior a la hora de inicio." +#~ msgid "Error updating per diem rate" +#~ msgstr "Error al actualizar la tarifa diaria" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Formato de fecha/hora de finalización no válido" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "No se puede eliminar la tarifa: " +#~ "está siendo utilizada por %(count)d " +#~ "reclamos de viáticos. Desactívelo en su" +#~ " lugar." -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Temporizador actualizado exitosamente" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "La tarifa diaria se eliminó correctamente" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "Error deleting per diem rate" +#~ msgstr "Error al eliminar la tarifa diaria" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Sólo puedes eliminar tus propios temporizadores." +#~ msgid "You do not have permission to access this page" +#~ msgstr "No tienes permiso para acceder a esta página." -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "No se puede eliminar un temporizador activo" +#~ msgid "Role name is required" +#~ msgstr "El nombre del rol es obligatorio" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "No se pudo eliminar el temporizador debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "A role with this name already exists" +#~ msgstr "Ya existe un rol con este nombre" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Could not create role due to a database error" +#~ msgstr "No se pudo crear el rol debido a un error en la base de datos" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Role created successfully" +#~ msgstr "Rol creado exitosamente" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Could not update role due to a database error" +#~ msgstr "No se pudo actualizar la función debido a un error de la base de datos" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Role updated successfully" +#~ msgstr "Función actualizada correctamente" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "No tienes permiso para realizar esta acción" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "Los roles del sistema no se pueden eliminar" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Formato de fecha/hora no válido" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "No se puede eliminar la función " +#~ "asignada a los usuarios. Primero " +#~ "reasigne los usuarios." -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "No se pudo eliminar el rol debido a un error de la base de datos" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Rol \"%(name)s\" eliminado exitosamente" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Todos los campos son obligatorios" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "No se pueden crear entradas de tiempo para un proyecto archivado. Primero desarchive el proyecto." +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "No se pueden crear entradas de tiempo para un proyecto inactivo" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Tarea no válida seleccionada" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "" +#~ "No se pudieron actualizar los roles " +#~ "de usuario debido a un error de" +#~ " la base de datos" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "La fecha de finalización debe ser posterior o igual a la fecha de inicio." +#~ msgid "User roles updated successfully" +#~ msgstr "Roles de usuario actualizados exitosamente" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "El intervalo de fechas no puede exceder los 31 días" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Formato de hora no válido" +#~ msgid "Template not found." +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "No se encontraron fechas válidas en el rango seleccionado" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "No se pudieron crear entradas masivas debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "Se produjo un error al crear entradas masivas. Por favor inténtalo de nuevo." +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Sólo puedes duplicar tus propios temporizadores." +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "Sólo puedes reanudar tus propios cronómetros." +#~ msgid "Please select a client." +#~ msgstr "" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "El proyecto ya no existe" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "El nombre del proyecto y el cliente son obligatorios." -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "Invalid budget amount" +#~ msgstr "Monto de presupuesto no válido" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "No se pudo reanudar el cronómetro debido a un error de la base de datos. Por favor verifique los registros del servidor." +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Porcentaje de umbral de presupuesto no válido (0-100)" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Project not found" +#~ msgstr "Proyecto no encontrado" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "No tienes permiso para archivar proyectos." -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "Project is already archived" +#~ msgstr "El proyecto ya está archivado." -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "No tienes permiso para desarchivar proyectos" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Zona horaria no válida seleccionada" +#~ msgid "Project is already active" +#~ msgstr "El proyecto ya está activo." -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "Las horas estándar por día deben estar entre 0,5 y 24" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "No tienes permiso para desactivar proyectos" -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "Las horas estándar por día deben estar entre 0,5 y 24" +#~ msgid "Project is already inactive" +#~ msgstr "El proyecto ya está inactivo." -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Configuración guardada exitosamente" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "No tienes permiso para activar proyectos" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Error al guardar la configuración: %(error)s" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "No se puede eliminar el proyecto con entradas de tiempo existentes" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar el proyecto " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "¡Gracias por elegir TimeTracker!" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "Error al guardar la configuración" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "No tienes permiso para eliminar proyectos" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Preferencias actualizadas" +#~ msgid "No projects selected for deletion" +#~ msgstr "No hay proyectos seleccionados para eliminar" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Idioma actualizado exitosamente" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Idioma no válido" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "Idioma actualizado a %(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "El nombre del webhook es obligatorio." - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "Se requiere la URL del webhook" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "Se debe seleccionar al menos un evento." - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook creado exitosamente" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Error al crear webhook" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "Error al crear webhook: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook actualizado correctamente" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "Error al actualizar el webhook: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook eliminado correctamente" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "Error al eliminar el webhook: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Ingrese un horario objetivo válido (mayor que 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "Ya existe un objetivo para esta semana. En su lugar, edite el objetivo existente." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "¡El objetivo de tiempo semanal se creó correctamente!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "No se pudo crear el objetivo. Por favor inténtalo de nuevo." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "No tienes permiso para ver este objetivo." - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "No tienes permiso para editar este objetivo." - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "¡El objetivo de tiempo semanal se actualizó correctamente!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "No se pudo actualizar el objetivo. Por favor inténtalo de nuevo." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "No tienes permiso para eliminar este objetivo." - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "El objetivo de tiempo semanal se eliminó correctamente" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudieron eliminar proyectos debido" +#~ " a un error de la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "No se pudo eliminar el objetivo. Por favor inténtalo de nuevo." +#~ msgid "No projects were deleted" +#~ msgstr "No se eliminaron proyectos" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "You do not have permission to change project status" +#~ msgstr "No tienes permiso para cambiar el estado del proyecto" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "No projects selected" +#~ msgstr "No hay proyectos seleccionados" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "No se pudo actualizar el estado " +#~ "del proyecto debido a un error de" +#~ " la base de datos. Por favor " +#~ "verifique los registros del servidor." -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "No projects were updated" +#~ msgstr "No se actualizaron proyectos" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Project is already in favorites" +#~ msgstr "El proyecto ya está en favoritos." + +#~ msgid "Project added to favorites" +#~ msgstr "Proyecto agregado a favoritos" + +#~ msgid "Failed to add project to favorites" +#~ msgstr "No se pudo agregar el proyecto a favoritos" + +#~ msgid "Project is not in favorites" +#~ msgstr "El proyecto no está en favoritos." + +#~ msgid "Project removed from favorites" +#~ msgstr "Proyecto eliminado de favoritos" + +#~ msgid "Failed to remove project from favorites" +#~ msgstr "No se pudo eliminar el proyecto de favoritos" + +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "Se requiere descripción, categoría, monto y fecha." + +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "No se pudo agregar el costo debido" +#~ " a un error en la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." + +#~ msgid "Cost added successfully" +#~ msgstr "Costo agregado exitosamente" + +#~ msgid "Cost not found" +#~ msgstr "Costo no encontrado" + +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "No tienes permiso para editar este costo." + +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar el costo " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Cost updated successfully" +#~ msgstr "Costo actualizado exitosamente" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "No tienes permiso para eliminar este costo." + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "No se puede eliminar el costo que se ha facturado" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar el costo " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Name and unit price are required" +#~ msgstr "Se requiere nombre y precio unitario." + +#~ msgid "Invalid quantity format" +#~ msgstr "Formato de cantidad no válido" + +#~ msgid "Invalid unit price format" +#~ msgstr "Formato de precio unitario no válido" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "No se pudo agregar material adicional" +#~ " debido a un error en la base" +#~ " de datos. Por favor verifique los" +#~ " registros del servidor." + +#~ msgid "Extra good added successfully" +#~ msgstr "Extra bueno agregado exitosamente" + +#~ msgid "Extra good not found" +#~ msgstr "Bien extra no encontrado" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "No tienes permiso para editar este bien extra." + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "No se pudo actualizar el bien " +#~ "adicional debido a un error en la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." + +#~ msgid "Extra good updated successfully" +#~ msgstr "Extra bueno actualizado exitosamente" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "No tienes permiso para eliminar este bien extra." + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "No se puede eliminar el bien adicional que se ha agregado a una factura" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "No se pudo eliminar el bien " +#~ "adicional debido a un error en la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." + +#~ msgid "Project created successfully" +#~ msgstr "Proyecto creado exitosamente" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Formato de monto de descuento no válido" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "La cotización debe aprobarse antes de poder enviarse." + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "No se puede enviar la cotización: %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "No tienes permiso para cargar archivos adjuntos a esta cita." + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "No tienes permiso para descargar este archivo adjunto." + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "No tiene permiso para solicitar la aprobación de esta cotización" + +#~ msgid "This quote does not require approval" +#~ msgstr "Esta cotización no requiere aprobación." + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "No se puede solicitar aprobación: %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "No se pudo solicitar la aprobación " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Approval requested successfully" +#~ msgstr "Aprobación solicitada exitosamente" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Esta cotización no está pendiente de aprobación." + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "No se puede aprobar la cotización: %(error)s" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo aprobar la cotización " +#~ "debido a un error en la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Quote approved successfully" +#~ msgstr "Cotización aprobada exitosamente" + +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "No se puede rechazar la cotización: %(error)s" + +#~ msgid "Quote approval rejected" +#~ msgstr "Aprobación de cotización rechazada" + +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo crear la plantilla " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "Template created successfully" +#~ msgstr "Plantilla creada exitosamente" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "No tienes permiso para crear una plantilla a partir de esta cotización." -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo guardar la plantilla " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "Plantilla guardada correctamente" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "No tienes permiso para exportar esta cotización" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Error al generar PDF: %(error)s" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Estado de actualización" +#~ msgid "Recipient email address is required" +#~ msgstr "Se requiere la dirección de correo electrónico del destinatario" -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Cotización enviada exitosamente a %(email)s" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Crear tarea" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "No se pudo enviar la cotización: %(error)s" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Error al enviar correo electrónico: %(error)s" -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "Enviar correo electrónico" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "No tienes permiso para duplicar esta cita." -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo duplicar la cotización " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." + +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "No se pudo finalizar la cotización " +#~ "duplicada debido a un error en la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." + +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "Cita %(quote_number)s creada como duplicada" + +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Por favor seleccione una acción y al menos una cotización" + +#~ msgid "Invalid quote IDs" +#~ msgstr "ID de cotización no válidos" + +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "No se encontraron comillas o no tienes permiso" + +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "%(count)d cotizaciones duplicadas" + +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "No se pudieron duplicar %(count)d cotizaciones" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "Error duplicating quotes" +#~ msgstr "Error al duplicar cotizaciones" -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "%(count)d cotizaciones marcadas como enviadas" -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "No se pudieron marcar %(count)d cotizaciones como enviadas" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Error updating quotes" +#~ msgstr "Error al actualizar cotizaciones" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "%(count)d cotizaciones eliminadas" -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "Seleccionar Proyecto" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "No se pudo eliminar %(count)d cotizaciones (pueden estar en uso)" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "Sólo los administradores pueden rechazar entradas de millas" +#~ msgid "Error deleting quotes" +#~ msgstr "Error al eliminar cotizaciones" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "Acción no válida" -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "Actualizaciones en vivo de WebSocket" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "Se requiere nombre y precio unitario." +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "Cliente creado" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "" +#~ "Se requieren nombre, proyecto, cliente, " +#~ "frecuencia y próxima fecha de ejecución." -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "Se requieren clave y etiqueta." +#~ msgid "Invalid next run date format" +#~ msgstr "Formato de fecha de próxima ejecución no válido" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Invalid end date format" +#~ msgstr "Formato de fecha de finalización no válido" -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "Solicitar aprobación" +#~ msgid "Selected project or client not found" +#~ msgstr "Proyecto seleccionado o cliente no encontrado" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "Cotización rechazada" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "No se pudo crear una factura " +#~ "recurrente debido a un error en la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "Se requiere nombre y precio unitario." +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "No tienes permiso para ver esta factura recurrente" -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "Tarifa por hora" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "No tienes permiso para editar esta factura recurrente" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "No se pudo actualizar la factura " +#~ "recurrente debido a un error en la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Factura recurrente actualizada correctamente" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "restante" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Éxito" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Error" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Advertencia" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Información" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Cargando..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Ahorro..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "Eliminando..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Cancelar" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Confirmar" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Cerca" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Ahorrar" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Borrar" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Editar" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Agregar" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Eliminar" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "DE ACUERDO" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "¿Estás seguro de que quieres eliminar esto?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "Tienes cambios sin guardar. ¿Estás seguro de que quieres irte?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "Operación fallida" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Operación completada con éxito" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "No hay elementos seleccionados" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Entrada no válida" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Este campo es obligatorio" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Sin temporizador activo" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Temporizador detenido" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "No se pudo detener el cronómetro" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Error al detener el temporizador" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "No hay formulario para guardar" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "No se encontró ningún temporizador" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Temporizador detenido por inactividad" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "No tienes permiso para eliminar esta factura recurrente" -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Saltar al contenido" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "Navegación móvil" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navegación" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "Paleta de comandos" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "Comentarios" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Alternar barra lateral" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Panel" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Minutero" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "Entradas de tiempo" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Informes" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Calendario" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Vista de calendario" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "No se pudo eliminar la factura " +#~ "recurrente debido a un error en la" +#~ " base de datos. Por favor verifique" +#~ " los registros del servidor." -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Seguimiento del tiempo" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "Solicitar aprobación" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Tareas" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Tablero Kanban" +#~ msgid "Start" +#~ msgstr "Comenzar" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Metas Semanales" +#~ msgid "End" +#~ msgstr "Fin" -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Plantillas de entrada de tiempo" +#~ msgid "Task" +#~ msgstr "Tarea" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" +#~ msgid "Notes" +#~ msgstr "Notas" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Clientela" +#~ msgid "Billed" +#~ msgstr "facturable" -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "Client" +#~ msgstr "Cliente" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "User" +#~ msgstr "Usuario" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "Yes" +#~ msgstr "Sí" -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "No" +#~ msgstr "No" -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Citas" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Finanzas y gastos" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "No se pudo eliminar el filtro debido a un error de la base de datos" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Informes programados" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Facturas" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Facturas recurrentes" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Pagos" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Gastos" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Kilometraje" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Dietas" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Alertas de presupuesto" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Inventario" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Artículos en stock" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Almacenes" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Proveedores" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Órdenes de compra" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Niveles de existencias" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Movimientos bursátiles" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Transferencias" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Ajustes" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Reservas" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Alertas de existencias bajas" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Analítica" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Herramientas y datos" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Importar / Exportar" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Filtros guardados" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Administración" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Panel de administración" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Gestión de usuarios" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Roles y permisos" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "Plantillas PDF" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "Factura PDF" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Cotización PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Configuración del sistema" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Ajustes" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "Configuración de correo electrónico" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "Plantillas de correo electrónico" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "Configuración de OIDC" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "Fichas API" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Registros de auditoría" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "No se pudo actualizar la configuración" +#~ " debido a un error de la base" +#~ " de datos. Por favor verifique los" +#~ " registros del servidor." -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Categorías de gastos" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "¡Configuración completa! Gracias por ayudarnos a mejorar TimeTracker." -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Tarifas diarias" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Project and task name are required" +#~ msgstr "El nombre del proyecto y la tarea son obligatorios." -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Información del sistema" +#~ msgid "Selected project does not exist" +#~ msgstr "El proyecto seleccionado no existe" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Copias de seguridad" +#~ msgid "Task not found" +#~ msgstr "" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "You do not have access to this task" +#~ msgstr "No tienes acceso a esta tarea" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "Acerca de" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Ayuda" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "Opciones de exportación" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Soporte TimeTracker" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "Alternar barra lateral" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Buscar" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Tema" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "Opciones de filtro" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Luz" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Oscuro" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "Sistema" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "You can only edit tasks you created" +#~ msgstr "Solo puedes editar las tareas que hayas creado" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Iniciar temporizador" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "a" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "Ver ayuda" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Cambiar idioma" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Idioma" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Menú de usuario" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "Apoyo" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Invitado" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Mi perfil" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Mi configuración" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Licencia" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "Task name is required" +#~ msgstr "El nombre de la tarea es obligatorio." -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Cerrar sesión" +#~ msgid "Project is required" +#~ msgstr "Se requiere proyecto" -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "¿Disfrutas de TimeTracker?" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar el estado " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo actualizar la tarea " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "Soporte TimeTracker" +#~ msgid "You do not have permission to update this task" +#~ msgstr "No tienes permiso para actualizar esta tarea" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "You can only update tasks you created" +#~ msgstr "Solo puedes actualizar las tareas que creaste" -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" +#~ msgid "You can only assign tasks you created" +#~ msgstr "Solo puedes asignar tareas que hayas creado" -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "Suministros" +#~ msgid "Selected user does not exist" +#~ msgstr "El usuario seleccionado no existe" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Despedir" +#~ msgid "Task unassigned" +#~ msgstr "Tarea no asignada" -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "You can only delete tasks you created" +#~ msgstr "Solo puedes eliminar tareas que hayas creado" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "Fecha de inicio" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "No se puede eliminar la tarea con entradas de tiempo existentes" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "Cargar más" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar la tarea " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "Ver tarea" +#~ msgid "No tasks selected for deletion" +#~ msgstr "No hay tareas seleccionadas para eliminar" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudieron eliminar tareas debido" +#~ " a un error de la base de " +#~ "datos. Por favor verifique los registros" +#~ " del servidor." -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "Acciones rápidas" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Comportamiento" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Tiempo de registro" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Nueva tarea" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "Ver proyecto" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "Editar cliente" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "Operación fallida" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "No hay tareas seleccionadas" -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "Contrato finalizado" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "" +#~ "No se pudieron actualizar las tareas " +#~ "debido a un error de la base " +#~ "de datos" -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "Vista previa del logotipo" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Ingrese la nueva fecha de vencimiento (AAAA-MM-DD):" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "Due date is required" +#~ msgstr "Se requiere fecha de gasto" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "Fin" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Formato de fecha no válido" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "Database error" +#~ msgstr "Soporte de base de datos" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "%(count)d cotizaciones duplicadas" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "No tasks updated" +#~ msgstr "No se encontraron tareas" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "%(count)d gasto(s) se actualizó correctamente a %(status)s" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "Crear token API" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "Su token API" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Ejemplos de uso" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "¿Estás seguro de que quieres" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "desactivar" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "activar" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "esta ficha?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Desactivar token" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Activar ficha" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Desactivar" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Activar" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "¿Está seguro de que desea eliminar este token? Esta acción no se puede deshacer." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Eliminar ficha" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Crear copia de seguridad" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Restaurar copia de seguridad" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Copias de seguridad existentes" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Información importante" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Confirmar eliminación" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Borrar caché" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "Estado del trabajador de servicio" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Borrar todos los cachés" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "Acciones del trabajador de servicio" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Actualización completa manual" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "%(count)d gastos omitidos (sin permiso)" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Todo el tiempo" +#~ msgid "Invalid priority value" +#~ msgstr "Valor de prioridad no válido" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "No user selected for assignment" +#~ msgstr "Ningún usuario seleccionado para la asignación" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "Usuario no válido seleccionado" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Proyectos totales" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "No se pudieron asignar tareas debido a un error de la base de datos" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Proyectos Activos" +#~ msgid "No project selected" +#~ msgstr "Ningún proyecto seleccionado" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "Proyecto no válido seleccionado" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "No se pudieron mover tareas debido a un error de la base de datos" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "Solo los administradores pueden ver todas las tareas vencidas" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Base de datos" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "Usuarios de OIDC" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "usuarios" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Secciones de administración" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Actividad reciente" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Duración" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "N / A" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "Configuración y prueba de correo electrónico" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Configurar y probar la entrega de correo electrónico" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Volver a administrador" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "Configure los ajustes de correo electrónico aquí para guardarlos en la base de datos." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Habilitar la configuración de correo electrónico de la base de datos" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "Servidor de correo" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Puerto de correo" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Usar TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Usar SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Nombre de usuario" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Contraseña" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "Dejar vacío para mantener actualizado" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Remitente predeterminado" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "Correo electrónico del destinatario" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Guardar configuración" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Reiniciar" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "Estado de configuración de correo electrónico" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Refrescar" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "¡El correo electrónico está configurado!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "La configuración de su correo electrónico está configurada correctamente." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "El correo electrónico no está configurado" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "Configure los ajustes de correo electrónico utilizando el formulario anterior." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Errores de configuración" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Advertencias de configuración" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Configuración de correo electrónico actual" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Puerto" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Establecer contraseña" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Enviar correo electrónico de prueba" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "Dirección de correo electrónico del destinatario" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Guía de configuración" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Proveedores SMTP comunes" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Requiere contraseña de la aplicación" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Notas importantes" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail requiere una contraseña de aplicación si 2FA está habilitado" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Reinicie la aplicación después de cambiar la configuración del correo electrónico" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Verifique las reglas del firewall si los correos electrónicos no se envían" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "Para producción, utilice un servicio de correo electrónico dedicado como SendGrid o Amazon SES." - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "la contraseña está establecida" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "sin contraseña establecida" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "No se pudo guardar la configuración. Por favor inténtalo de nuevo." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "¡Éxito!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "No se pudo actualizar el estado. Por favor inténtalo de nuevo." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "Por favor, introduce una dirección de correo electrónico válida" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Envío..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "No se pudo enviar el correo electrónico de prueba. Por favor verifique su configuración." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Configure OIDC utilizando estas variables de entorno:" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "Servicio" +#~ msgid "Could not create template due to a database error" +#~ msgstr "No se pudo crear la plantilla debido a un error de la base de datos" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "Could not update template due to a database error" +#~ msgstr "" +#~ "No se pudo actualizar la plantilla " +#~ "debido a un error de la base " +#~ "de datos" -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Usuarios" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "No se pudo eliminar la plantilla debido a un error de la base de datos" -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "Reclamación de grupos" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "No se puede iniciar el cronómetro " +#~ "para un proyecto archivado. Primero " +#~ "desarchive el proyecto." -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "No se puede iniciar el temporizador para un proyecto inactivo" -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "Perdido" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "La tarea seleccionada no es válida para el proyecto elegido" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "Usar SSL" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "Comenzar" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "Tiempo de espera (segundos)" +#~ msgid "You do not have access to this project" +#~ msgstr "No tienes acceso a este proyecto." -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "You do not have access to this client" +#~ msgstr "No tienes acceso a esta tarea" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "" +#~ "Ya tienes un temporizador activo. " +#~ "Deténgalo antes de comenzar uno nuevo." -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo iniciar el cronómetro " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "Unknown" +#~ msgstr "Desconocido" -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "Contraseña" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "Introduce tu contraseña" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "La plantilla debe tener un proyecto para iniciar un temporizador." -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Cannot start timer for this project" +#~ msgstr "No se puede iniciar el temporizador para este proyecto" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "No active timer to stop" +#~ msgstr "No hay ningún temporizador activo para detener" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "Basado en el último" +#~ msgid "No project" +#~ msgstr "Ningún proyecto" -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "Utilice tarifas por hora del proyecto" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "Tiempo de registro" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "Dirección de correo electrónico" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "Nombre de pila" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "Apellido" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "Método de autenticación" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "Proyectos principales" +#~ msgid "No active timer to pause" +#~ msgstr "No hay ningún temporizador activo para detener" -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "Grupo de administración" +#~ msgid "Timer paused" +#~ msgstr "Temporizador detenido" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "No se pudo crear el cliente. Por favor inténtalo de nuevo." -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "Método de autenticación" +#~ msgid "No active timer to resume" +#~ msgstr "No hay ningún temporizador activo para detener" -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "Sólo activo" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "No se pudo crear el cliente. Por favor inténtalo de nuevo." -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "No active timer to adjust" +#~ msgstr "No hay ningún temporizador activo para detener" -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "Configuración de prueba" +#~ msgid "Invalid adjustment value" +#~ msgstr "Valor de estado no válido" -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "You can only edit your own timers" +#~ msgstr "Sólo puedes editar tus propios temporizadores." -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "Configuración de prueba" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Tarea no válida seleccionada para el proyecto elegido" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "Start time cannot be in the future" +#~ msgstr "La hora de inicio no puede ser en el futuro." -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "Configuración de prueba" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "Referencia de variables de entorno" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Invalid start date/time format" +#~ msgstr "Formato de fecha/hora de inicio no válido" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "End time must be after start time" +#~ msgstr "La hora de finalización debe ser posterior a la hora de inicio." -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "Formato de fecha/hora de finalización no válido" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Anterior" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Próximo" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "Estadísticas de uso de funciones" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "Timer updated successfully" +#~ msgstr "Temporizador actualizado exitosamente" -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "Código de cupón opcional" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "Atención requerida" +#~ msgid "You can only delete your own timers" +#~ msgstr "Sólo puedes eliminar tus propios temporizadores." -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "Móvil" +#~ msgid "Cannot delete an active timer" +#~ msgstr "No se puede eliminar un temporizador activo" -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo eliminar el temporizador " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Estado" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Detalles" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "Cargar más" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Fallido" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Invalid date/time format" +#~ msgstr "Formato de fecha/hora no válido" -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "All fields are required" +#~ msgstr "Todos los campos son obligatorios" -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "No se pueden crear entradas de " +#~ "tiempo para un proyecto archivado. " +#~ "Primero desarchive el proyecto." -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "No se pueden crear entradas de tiempo para un proyecto inactivo" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Todas las categorías" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Gestión de proyectos" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "Invalid task selected" +#~ msgstr "Tarea no válida seleccionada" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "" +#~ "La fecha de finalización debe ser " +#~ "posterior o igual a la fecha de" +#~ " inicio." -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "El intervalo de fechas no puede exceder los 31 días" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Activado" +#~ msgid "Invalid time format" +#~ msgstr "Formato de hora no válido" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Desactivado" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "No se encontraron fechas válidas en el rango seleccionado" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "No se pudieron crear entradas masivas" +#~ " debido a un error de la base" +#~ " de datos. Por favor verifique los" +#~ " registros del servidor." -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "" +#~ "Se produjo un error al crear " +#~ "entradas masivas. Por favor inténtalo de" +#~ " nuevo." -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Guardar cambios" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Sólo puedes duplicar tus propios temporizadores." -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Nota" +#~ msgid "You can only resume your own timers" +#~ msgstr "Sólo puedes reanudar tus propios cronómetros." -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "Project no longer exists" +#~ msgstr "El proyecto ya no existe" -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "No se pudo reanudar el cronómetro " +#~ "debido a un error de la base " +#~ "de datos. Por favor verifique los " +#~ "registros del servidor." -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "Panel de depuración OIDC" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "Inspeccionar la configuración, los metadatos del proveedor y los usuarios de OIDC." - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Configuración de prueba" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "Configuración OIDC" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Método de autenticación" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Editor" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "No configurado" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "ID de cliente" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Secreto del cliente" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Colocar" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "No establecido" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "URI de redireccionamiento" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Generado automáticamente" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Alcances" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Mapeo de reclamos" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Reclamación de nombre de usuario" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "Reclamo por correo electrónico" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Reclamación de nombre completo" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Reclamación de grupos" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Grupo de administración" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "Correos electrónicos de administrador" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI posterior al cierre de sesión" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Metadatos del proveedor" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Error al cargar metadatos:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Punto final de descubrimiento:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Metadatos del proveedor cargados correctamente" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Puntos finales" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Autorización" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Simbólico" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Información de usuario" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Finalizar sesión" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Funciones admitidas" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Tipos de respuesta" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Tipos de subvenciones" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Métodos de autenticación" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Reclamos" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "Metadatos del proveedor no cargados. Haga clic en \"Probar configuración\" para buscar." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "Correo electrónico" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Nombre completo" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Role" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Último inicio de sesión" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "Asunto OIDC" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Inactivo" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Nunca" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Ningún usuario ha iniciado sesión a través de OIDC todavía." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Referencia de variables de entorno" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Configure OIDC utilizando estas variables de entorno:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Variable" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Descripción" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "Ejemplo" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Método de autenticación" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "URL del emisor del proveedor OIDC" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "ID de cliente del proveedor OIDC" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Secreto de cliente del proveedor OIDC" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "URL de devolución de llamada (opcional, generada automáticamente)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Alcances solicitados" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Reclamación que contiene nombre de usuario" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Reclamación que contiene correo electrónico" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Reclamación que contiene el nombre completo" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Reclamación que contiene grupos" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Nombre del grupo para la función de administrador (opcional)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "Correos electrónicos de administrador separados por comas (opcional)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "Invalid timezone selected" +#~ msgstr "Zona horaria no válida seleccionada" -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "Las horas estándar por día deben estar entre 0,5 y 24" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "Las horas estándar por día deben estar entre 0,5 y 24" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "Settings saved successfully" +#~ msgstr "Configuración guardada exitosamente" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Error al guardar la configuración: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "¡Gracias por elegir TimeTracker!" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "Error al guardar la configuración" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "Preferences updated" +#~ msgstr "Preferencias actualizadas" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Método de autenticación" +#~ msgid "Language updated successfully" +#~ msgstr "Idioma actualizado exitosamente" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Invalid language" +#~ msgstr "Idioma no válido" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "Idioma actualizado a %(language)s" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "El nombre del webhook es obligatorio." -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "Webhook URL is required" +#~ msgstr "Se requiere la URL del webhook" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "Se debe seleccionar al menos un evento." -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook creado exitosamente" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Error creating webhook" +#~ msgstr "Error al crear webhook" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "Error al crear webhook: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook actualizado correctamente" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "Error al actualizar el webhook: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook eliminado correctamente" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "Error al eliminar el webhook: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Ingrese un horario objetivo válido (mayor que 0)" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "Ya existe un objetivo para esta " +#~ "semana. En su lugar, edite el " +#~ "objetivo existente." -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "¡El objetivo de tiempo semanal se creó correctamente!" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "No se pudo crear el objetivo. Por favor inténtalo de nuevo." -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "No tienes permiso para ver este objetivo." -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "No tienes permiso para editar este objetivo." -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "¡El objetivo de tiempo semanal se actualizó correctamente!" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "No se pudo actualizar el objetivo. Por favor inténtalo de nuevo." -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "No tienes permiso para eliminar este objetivo." -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "El objetivo de tiempo semanal se eliminó correctamente" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "No se pudo eliminar el objetivo. Por favor inténtalo de nuevo." -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "Detalles del usuario OIDC" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Perfil e identidad OIDC para este usuario" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Volver a Depuración OIDC" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Perfil de usuario" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Activo" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Idioma preferido" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Creado en" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "Información OIDC" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "Emisor OIDC" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "Asunto OIDC (sub)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Local" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "Este usuario fue creado o vinculado a través de OIDC. El emisor y el asunto se utilizan para identificar de forma única al usuario en todas las sesiones de inicio de sesión." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "Este usuario no tiene información OIDC. Es posible que se hayan creado manualmente o mediante autorregistro sin OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Estadísticas de actividad" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Entradas de tiempo" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Ninguno" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Temporizador activo" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Tareas creadas" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Editar usuario" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Ver todos los usuarios" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "Diseñador de cotizaciones en PDF" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "Diseñador de cotizaciones visuales" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "Arrastre y suelte elementos para diseñar el diseño de su cotización" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Cómo utilizar:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "Haga clic en elementos de la barra lateral izquierda para agregarlos al lienzo. Haga clic en elementos para seleccionarlos y personalizarlos en el panel de propiedades. Utilice las herramientas de alineación y los atajos de teclado para una edición más rápida." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Atajos de teclado:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "Tabla de artículos de cotización" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "Subtotal de gastos" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "Ahorro..." +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "Colocar" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "Documentación" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Borrar lienzo" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Generar vista previa" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Guardar diseño" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Ver código" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "Update Status" +#~ msgstr "Estado de actualización" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Ajustar a cuadrícula (10px)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Caja de instrumento" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Buscar elementos y variables..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Elementos" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "variables" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Elementos básicos" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Texto personalizado" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Texto" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Título" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Línea" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Rectángulo" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Círculo" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Información de la empresa" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Logotipo de la empresa" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "nombre de empresa" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Detalles de la empresa" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "DIRECCIÓN" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Teléfono" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Sitio web" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "Identificación fiscal" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "Detalles de la factura" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Número de factura" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "Facturado" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Fecha de vencimiento" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Información del cliente" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Nombre del cliente" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Dirección del cliente" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "Tabla de artículos de cotización" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "Subtotal de gastos" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Total parcial" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Impuesto" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Monto total" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Términos" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "Pago y proyecto" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Fecha de pago" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Método de pago" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Estado de pago" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Monto pagado" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Nombre del proyecto" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "Correo electrónico del cliente" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Teléfono del cliente" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "Código QR" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Código de barras" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Número de página" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Fecha actual" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Filigrana" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Información bancaria" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Divisa" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "Artículos de factura" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "Número de factura" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Estado de la cotización (borrador/enviada/pagada/vencida)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Fecha de asunto" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Fecha de vencimiento" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Monto subtotal" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Tasa impositiva (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Monto del impuesto" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Monto total" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Código de moneda (EUR, USD, etc.)" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "Artículos de factura" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Términos y condiciones" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Campos de cliente" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Nombre de la empresa cliente" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "Dirección de correo electrónico del cliente" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "dirección completa del cliente" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Persona de contacto del cliente" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Número de teléfono del cliente" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Campos de pago" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "Estado de pago" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "Fecha de pago" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Método de pago" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Número de referencia de pago" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Monto pagado" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Monto pendiente" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Notas de pago" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Campos del proyecto" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Nombre del proyecto" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "código de proyecto" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Descripción del proyecto" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Referencia de facturación del proyecto" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Campos de empresa/configuración" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "El nombre de tu empresa" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "La dirección de tu empresa" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "El correo electrónico de tu empresa" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Teléfono de tu empresa" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Sitio web de su empresa" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "Su número de identificación fiscal" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "La información de tu cuenta bancaria" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Términos de factura predeterminados" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Notas de factura predeterminadas" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Campos de fecha/hora" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "fecha actual" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "Fecha de creación de la cotización" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "Cita última fecha de actualización" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "Artículos de factura" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "Create Task" +#~ msgstr "Crear tarea" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "Servicios basados ​​en el tiempo y trabajo por horas." - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Descripción del artículo" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Cantidad de artículo" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Precio unitario del artículo" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Importe total del artículo" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Finalizar bucle" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "Bienes adicionales" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "Proyecto de bienes adicionales" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "Nombre del rol" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "Monto total" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Lienzo de diseño" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Tamaño de página:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Dar un golpe de zoom" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Alejar" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Eliminar seleccionado" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Propiedades" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "Advertencia" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "Actualizar página" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "Advertencia" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Formato de fecha" +#~ msgid "Send Email" +#~ msgstr "Enviar correo electrónico" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Seleccione un elemento para editar sus propiedades" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "Vista previa de PDF" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Timesheet period rejected" +#~ msgstr "Seleccionar Proyecto" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Only admins can close periods" +#~ msgstr "Sólo los administradores pueden rechazar entradas de millas" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "Actualizaciones en vivo de WebSocket" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "Se requiere nombre y precio unitario." -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "Cliente creado" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "Se requieren clave y etiqueta." -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "Time-off request approved" +#~ msgstr "Solicitar aprobación" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Código generado" +#~ msgid "Time-off request rejected" +#~ msgstr "Cotización rechazada" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "Name and date range are required" +#~ msgstr "Se requiere nombre y precio unitario." -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "Holiday created" +#~ msgstr "Tarifa por hora" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "remaining" +#~ msgstr "restante" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "Success" +#~ msgstr "Éxito" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "Error" +#~ msgstr "Error" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Warning" +#~ msgstr "Advertencia" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "Information" +#~ msgstr "Información" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "¿Borrar todos los elementos?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Claro" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "Cargando..." -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "Saving..." +#~ msgstr "Ahorro..." -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "Eliminando..." -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "Cancel" +#~ msgstr "Cancelar" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "¿Restablecer los valores predeterminados?" +#~ msgid "Confirm" +#~ msgstr "Confirmar" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "Restablecer diseño de PDF" +#~ msgid "Close" +#~ msgstr "Cerca" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "Save" +#~ msgstr "Ahorrar" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "Diseñador de cotizaciones en PDF" +#~ msgid "Delete" +#~ msgstr "Borrar" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Diseñador de cotizaciones visuales" +#~ msgid "Edit" +#~ msgstr "Editar" -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Arrastre y suelte elementos para diseñar el diseño de su cotización" +#~ msgid "Add" +#~ msgstr "Agregar" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "Tabla de artículos de cotización" +#~ msgid "Remove" +#~ msgstr "Eliminar" -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "Tabla de artículos de cotización" +#~ msgid "OK" +#~ msgstr "DE ACUERDO" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "¿Estás seguro de que quieres eliminar esto?" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "Tienes cambios sin guardar. ¿Estás seguro de que quieres irte?" -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "Operación fallida" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Datos de cotización" +#~ msgid "Operation completed successfully" +#~ msgstr "Operación completada con éxito" -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Número de cotización" +#~ msgid "No items selected" +#~ msgstr "No hay elementos seleccionados" -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Fecha de cotización" +#~ msgid "Invalid input" +#~ msgstr "Entrada no válida" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Tabla de artículos de cotización" +#~ msgid "This field is required" +#~ msgstr "Este campo es obligatorio" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Campos de cotización" +#~ msgid "No active timer" +#~ msgstr "Sin temporizador activo" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Número de cotización" +#~ msgid "Timer stopped" +#~ msgstr "Temporizador detenido" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Estado de la cotización (borrador/enviada/pagada/vencida)" +#~ msgid "Failed to stop timer" +#~ msgstr "No se pudo detener el cronómetro" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Notas de cotización" +#~ msgid "Error stopping timer" +#~ msgstr "Error al detener el temporizador" -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Estado de la cotización" +#~ msgid "No form to save" +#~ msgstr "No hay formulario para guardar" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Fecha de aceptación de cotización" +#~ msgid "No timer found" +#~ msgstr "No se encontró ningún temporizador" -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Fecha de creación de la cotización" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Temporizador detenido por inactividad" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Cita última fecha de actualización" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Bucle de elementos de cotización" +#~ msgid "Skip to content" +#~ msgstr "Saltar al contenido" -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Recorrer los elementos de la factura" +#~ msgid "Main navigation" +#~ msgstr "Navegación móvil" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Alinear a la izquierda" +#~ msgid "Navigation" +#~ msgstr "Navegación" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Centrar horizontalmente" +#~ msgid "Open command palette" +#~ msgstr "Paleta de comandos" -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Alinear a la derecha" +#~ msgid "Commands" +#~ msgstr "Comentarios" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Alinear arriba" +#~ msgid "Toggle sidebar" +#~ msgstr "Alternar barra lateral" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Centrar verticalmente" +#~ msgid "Dashboard" +#~ msgstr "Panel" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Alinear abajo" +#~ msgid "Timer" +#~ msgstr "Minutero" -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "Time entries" +#~ msgstr "Entradas de tiempo" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "Reports" +#~ msgstr "Informes" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "Calendar" +#~ msgstr "Calendario" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "Vista de calendario" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "Dirección de correo electrónico" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "Seguimiento del tiempo" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "Solicitar aprobación" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "Tareas" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "Tablero Kanban" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "Metas Semanales" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "Plantillas de entrada de tiempo" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "CRM" +#~ msgstr "CRM" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "Clients" +#~ msgstr "Clientela" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "Plantillas de entrada de tiempo" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "Citas" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "Finanzas y gastos" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "Informes programados" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "Invoices" +#~ msgstr "Facturas" -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "Llave" +#~ msgid "Recurring Invoices" +#~ msgstr "Facturas recurrentes" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "Enviar correo electrónico" +#~ msgid "Payments" +#~ msgstr "Pagos" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "Expenses" +#~ msgstr "Gastos" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "Llave" +#~ msgid "Mileage" +#~ msgstr "Kilometraje" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "Dietas" -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "Alertas de presupuesto" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "Inventory" +#~ msgstr "Inventario" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "Artículos en stock" -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "Código, nombre, correo electrónico" +#~ msgid "Warehouses" +#~ msgstr "Almacenes" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "Proveedores" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Marca de la empresa" +#~ msgid "Purchase Orders" +#~ msgstr "Órdenes de compra" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Valores predeterminados de factura" +#~ msgid "Stock Levels" +#~ msgstr "Niveles de existencias" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Configuración de copia de seguridad" +#~ msgid "Stock Movements" +#~ msgstr "Movimientos bursátiles" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "Transferencias" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "Ajustes" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "Activado" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "Perdido" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "Usar SSL" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "Usar TLS" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "en" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "de" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "Menú de usuario" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "Tiempos de carga más rápidos" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "Términos y condiciones" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Configuración de exportación" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Reservations" +#~ msgstr "Reservas" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "Alertas de existencias bajas" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "Analytics" +#~ msgstr "Analítica" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "Herramientas y datos" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "Importar / Exportar" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Ajuste" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Transferir" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Venta" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Alquiler" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Compra" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "Filtros guardados" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "Admin" +#~ msgstr "Administración" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "Panel de administración" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "Disponible" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "Valores predeterminados de factura" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "Divisa" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "User Management" +#~ msgstr "Gestión de usuarios" -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "URL de la imagen" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "Roles y permisos" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "Código" +#~ msgid "PDF Templates" +#~ msgstr "Plantillas PDF" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "Crear token API" +#~ msgid "Invoice PDF" +#~ msgstr "Factura PDF" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "Déjelo en blanco para mantener la contraseña actual" +#~ msgid "Quote PDF" +#~ msgstr "Cotización PDF" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "System Settings" +#~ msgstr "Configuración del sistema" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Settings" +#~ msgstr "Ajustes" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "Tiempo de espera (segundos)" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "Tipo de contenido" +#~ msgid "Email Configuration" +#~ msgstr "Configuración de correo electrónico" -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "Rol del sistema" +#~ msgid "Email Templates" +#~ msgstr "Plantillas de correo electrónico" -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "Términos y condiciones" +#~ msgid "OIDC Settings" +#~ msgstr "Configuración de OIDC" -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Privacidad y análisis" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Guardar configuración" +#~ msgid "API Tokens" +#~ msgstr "Fichas API" -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Subir nuevo logotipo" +#~ msgid "Audit Logs" +#~ msgstr "Registros de auditoría" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Vista previa del logotipo" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "¿Está seguro de que desea eliminar el logotipo de la empresa?" +#~ msgid "Expense Categories" +#~ msgstr "Categorías de gastos" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Quitar logotipo" +#~ msgid "Per Diem Rates" +#~ msgstr "Tarifas diarias" -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "Solicitar aprobación" +#~ msgid "System Info" +#~ msgstr "Información del sistema" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "Configuración de prueba" +#~ msgid "Backups" +#~ msgstr "Copias de seguridad" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "Operación fallida" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "About" +#~ msgstr "Acerca de" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "Operación fallida" +#~ msgid "Help" +#~ msgstr "Ayuda" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Panel de telemetría y análisis" +#~ msgid "Open support options" +#~ msgstr "Opciones de exportación" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Administrador → Configuración" +#~ msgid "Support TimeTracker" +#~ msgstr "Soporte TimeTracker" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "Open sidebar" +#~ msgstr "Alternar barra lateral" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "Déjelo en blanco para mantener la contraseña actual" +#~ msgid "Search" +#~ msgstr "Buscar" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Acceso al portal del cliente" +#~ msgid "Theme" +#~ msgstr "Tema" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Theme options" +#~ msgstr "Opciones de filtro" -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "Asignado a" +#~ msgid "Light" +#~ msgstr "Luz" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Dark" +#~ msgstr "Oscuro" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Acceso de administrador" +#~ msgid "System" +#~ msgstr "Sistema" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Migrar al nuevo sistema de roles" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Emigrar" +#~ msgid "Start Timer" +#~ msgstr "Iniciar temporizador" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Roles" +#~ msgid "Stop" +#~ msgstr "a" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "No se encontraron usuarios." +#~ msgid "AI Helper" +#~ msgstr "Ver ayuda" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "No se puede eliminar el usuario \"{name}\" porque tiene {count} entradas de tiempo. Los usuarios con entradas de tiempo existentes no se pueden eliminar." +#~ msgid "Change language" +#~ msgstr "Cambiar idioma" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "No se puede eliminar usuario" +#~ msgid "Language" +#~ msgstr "Idioma" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "¿Está seguro de que desea eliminar el usuario \"{nombre}\"? Esta acción no se puede deshacer." +#~ msgid "User menu" +#~ msgstr "Menú de usuario" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Eliminar usuario" +#~ msgid "Supporter" +#~ msgstr "Apoyo" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "Guest" +#~ msgstr "Invitado" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "My Profile" +#~ msgstr "Mi perfil" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "My Settings" +#~ msgstr "Mi configuración" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "License" +#~ msgstr "Licencia" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Logout" +#~ msgstr "Cerrar sesión" -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "¿Disfrutas de TimeTracker?" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Etiqueta" +#~ msgid "Support / Get key" +#~ msgstr "Soporte TimeTracker" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "PayPal" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "Support / License" +#~ msgstr "Suministros" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "Despedir" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "Software update" +#~ msgstr "Fecha de inicio" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Read more" +#~ msgstr "Cargar más" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "View Release" +#~ msgstr "Ver tarea" -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Quick actions dock" +#~ msgstr "Acciones rápidas" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Actions" +#~ msgstr "Comportamiento" -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Log Time" +#~ msgstr "Tiempo de registro" -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Opcional" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "New Task" +#~ msgstr "Nueva tarea" -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "New Project" +#~ msgstr "Ver proyecto" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "New Client" +#~ msgstr "Editar cliente" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "Operación fallida" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Context included" +#~ msgstr "Contrato finalizado" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "Vista previa del logotipo" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Send" +#~ msgstr "Fin" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Create API Token" +#~ msgstr "Crear token API" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "Your API Token" +#~ msgstr "Su token API" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Establecer como plantilla predeterminada" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "Plantilla HTML" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Mensaje personalizado" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Más variables" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Crear plantilla" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Variables disponibles" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Variables de factura" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Otras variables" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "Enviar correo electrónico de prueba" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Usage Examples" +#~ msgstr "Ejemplos de uso" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "Correo electrónico del destinatario" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "Facturado" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Plantilla de actualización" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "Enviar correo electrónico de prueba" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "No se encontraron plantillas de correo electrónico." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "Cree su primera plantilla de correo electrónico para personalizar los correos electrónicos de facturas." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "Crear plantilla de correo electrónico" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "Eliminar plantilla de correo electrónico" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "¿Estás seguro de que quieres eliminar?" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Esta acción no se puede deshacer." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "Are you sure you want to" +#~ msgstr "¿Estás seguro de que quieres" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Información de la plantilla" +#~ msgid "deactivate" +#~ msgstr "desactivar" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "activate" +#~ msgstr "activar" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "this token?" +#~ msgstr "esta ficha?" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "Deactivate Token" +#~ msgstr "Desactivar token" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "Activate Token" +#~ msgstr "Activar ficha" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "Deactivate" +#~ msgstr "Desactivar" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "Activate" +#~ msgstr "Activar" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "¿Está seguro de que desea eliminar " +#~ "este token? Esta acción no se " +#~ "puede deshacer." -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "Eliminar ficha" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "Crear copia de seguridad" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "Restaurar copia de seguridad" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "Copias de seguridad existentes" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Important Information" +#~ msgstr "Información importante" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "Confirmar eliminación" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Clear Cache" +#~ msgstr "Borrar caché" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "Estado del trabajador de servicio" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "Borrar todos los cachés" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "Acciones del trabajador de servicio" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "Actualización completa manual" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "All time" +#~ msgstr "Todo el tiempo" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Total Projects" +#~ msgstr "Proyectos totales" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Active Projects" +#~ msgstr "Proyectos Activos" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "Database" +#~ msgstr "Base de datos" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "OIDC Users" +#~ msgstr "Usuarios de OIDC" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "users" +#~ msgstr "usuarios" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "Secciones de administración" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Recent Activity" +#~ msgstr "Actividad reciente" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Duration" +#~ msgstr "Duración" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "N/A" +#~ msgstr "N / A" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "Configuración y prueba de correo electrónico" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "Configurar y probar la entrega de correo electrónico" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "Volver a administrador" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Icono" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "" +#~ "Configure los ajustes de correo " +#~ "electrónico aquí para guardarlos en la" +#~ " base de datos." -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Habilitar la configuración de correo electrónico de la base de datos" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Mail Server" +#~ msgstr "Servidor de correo" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "Puerto de correo" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Use TLS" +#~ msgstr "Usar TLS" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Nombre" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Use SSL" +#~ msgstr "Usar SSL" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Username" +#~ msgstr "Nombre de usuario" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "Password" +#~ msgstr "Contraseña" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Leave empty to keep current" +#~ msgstr "Dejar vacío para mantener actualizado" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "Remitente predeterminado" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "Correo electrónico del destinatario" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "Guardar configuración" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "Reset" +#~ msgstr "Reiniciar" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "Estado de configuración de correo electrónico" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Permisos del sistema" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Todos los permisos disponibles en el sistema." - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Volver a roles" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "permisos" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "No hay descripción disponible" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "Acerca de los permisos" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "Los permisos definen qué acciones pueden realizar los usuarios en el sistema. Estos permisos se asignan a roles y los roles se asignan a usuarios. Esto proporciona un sistema de control de acceso flexible y granular." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Editar rol" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Crear nuevo rol" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Nombre del rol" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Un nombre único para este rol." - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Descripción opcional de este rol." - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Permisos" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Seleccione los permisos que debe tener este rol:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Alternar todo" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Refresh" +#~ msgstr "Refrescar" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "¡El correo electrónico está configurado!" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Your email settings are properly set up." +#~ msgstr "" +#~ "La configuración de su correo " +#~ "electrónico está configurada correctamente." -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Actualizar rol" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Crear rol" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Administrar roles y sus permisos" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Ver permisos" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Roles totales" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Roles del sistema" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Roles personalizados" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Usuarios asignados" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Tipo" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Rol predeterminado" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "usuario" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Sin usuarios" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Costumbre" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Vista" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Permisos para" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "No hay permisos asignados." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "No se encontraron roles." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "Acerca de las funciones y permisos" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "Los roles son conjuntos de permisos que se pueden asignar a los usuarios. Las funciones del sistema están predefinidas y no se pueden eliminar ni cambiar de nombre, pero se pueden crear funciones personalizadas para sus necesidades específicas." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "¿Estás seguro de que deseas eliminar el rol?" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Eliminar rol" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Sin descripción" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Información de rol" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Rol del sistema" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Rol personalizado" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Permisos totales" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Creado" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Usuarios con este rol" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Aún no hay usuarios asignados a este rol." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "Este rol no tiene permisos asignados." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Volver al usuario" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Administrar roles para" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Asignar roles" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "Seleccione los roles que este usuario debería tener. Los usuarios heredan todos los permisos de sus roles asignados." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Actualizar roles" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Permisos efectivos actuales" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "Estos son todos los permisos que tiene actualmente el usuario a través de sus roles:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Sin permisos (asigne roles para otorgar permisos)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Crear webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Editar webhook" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Configurar webhook para integraciones" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "URL de webhook" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "La URL donde se enviarán los eventos de webhook" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Eventos" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Seleccione qué eventos deberían activar este webhook" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "Método HTTP" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Tipo de contenido" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Reintentos máximos" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Retardo de reintento (segundos)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Tiempo de espera (segundos)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Secreto regenerado" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Advertencia: regenerar el secreto invalidará el secreto actual" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Administrar integraciones de webhooks" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Estadística" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Total" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "No hay webhooks configurados" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Crea tu primer webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Detalles del webhook" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Prueba" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Secreto" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(truncado)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Entregas Totales" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Exitoso" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Última entrega" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Entregas recientes" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Evento" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Intentar" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Respuesta" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Tiempo" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Reintentando" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Aún no hay entregas" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "¿Enviar un evento de webhook de prueba?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "¡El webhook de prueba se envió correctamente!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Error:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Error desconocido" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Error al enviar el webhook de prueba:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Panel de análisis" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "últimos 7 días" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "últimos 30 días" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "últimos 90 días" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "El año pasado" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "Exportar como JSON" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "Exportar CSV" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Métricas clave e información sobre el seguimiento de su tiempo" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Promedio de horas diarias" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "Devolver" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "Tiempo" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Tendencia de horas diarias" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Facturable versus no facturable" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Tendencias semanales" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "horas antes" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Email is not configured" +#~ msgstr "El correo electrónico no está configurado" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "Pagos a lo largo del tiempo" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Horas por hora del día" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Eficiencia del proyecto" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Rendimiento del usuario" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "No se pudieron cargar los gráficos. Por favor inténtalo de nuevo." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "No se pudieron actualizar los gráficos. Por favor inténtalo de nuevo." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Hora del día" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Ganancia" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "Reiniciar" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "" +#~ "Configure los ajustes de correo " +#~ "electrónico utilizando el formulario anterior." -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Exportar" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Métricas clave e información procesable" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "vs periodo anterior" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "del total" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Ingresos potenciales" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Tasa promedio:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "Tendencia" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "proyectos activos" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Perspectivas y recomendaciones" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Acumulativo" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Distribución facturable" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Descripción general del estado de la tarea" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Tareas completadas" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "En curso" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Hacer" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Ingresos por proyecto" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Pagos a lo largo del tiempo" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Métodos de pago" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Ingresos vs Pagos" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Tasa de recaudación" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Tasa de finalización del proyecto" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "facturable" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "No facturable" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Terminado" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Cancelado" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Tasa de finalización (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Descripción general de información móvil" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Promedio diario" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Horario diario" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "Proyectos principales" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "Configuration Errors" +#~ msgstr "Errores de configuración" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "Configuration Warnings" +#~ msgstr "Advertencias de configuración" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Current Email Settings" +#~ msgstr "Configuración de correo electrónico actual" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Entrada de tiempo" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "Port" +#~ msgstr "Puerto" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "horas" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "Password Set" +#~ msgstr "Establecer contraseña" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Aprobar" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Rechazar" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Send Test Email" +#~ msgstr "Enviar correo electrónico de prueba" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "Recipient Email Address" +#~ msgstr "Dirección de correo electrónico del destinatario" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "Configuration Guide" +#~ msgstr "Guía de configuración" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "Common SMTP Providers" +#~ msgstr "Proveedores SMTP comunes" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Requires app password" +#~ msgstr "Requiere contraseña de la aplicación" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "Important Notes" +#~ msgstr "Notas importantes" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail requiere una contraseña de aplicación si 2FA está habilitado" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "" +#~ "Reinicie la aplicación después de " +#~ "cambiar la configuración del correo " +#~ "electrónico" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "" +#~ "Verifique las reglas del firewall si " +#~ "los correos electrónicos no se envían" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "Para producción, utilice un servicio de" +#~ " correo electrónico dedicado como SendGrid" +#~ " o Amazon SES." -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "password is set" +#~ msgstr "la contraseña está establecida" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "no password set" +#~ msgstr "sin contraseña establecida" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "No se pudo guardar la configuración. Por favor inténtalo de nuevo." -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Aprobado por" +#~ msgid "Success!" +#~ msgstr "¡Éxito!" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "No se pudo actualizar el estado. Por favor inténtalo de nuevo." -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "Publicar comentario" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "Publicar comentario" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "Motivo del rechazo" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Seguimiento de quién cambió qué y cuándo" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Filtros" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Tipo de entidad" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Todos los tipos" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "ID de entidad" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Todos los usuarios" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Acción" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Todas las acciones" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Actualizado" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Eliminado" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Rango de tiempo" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Filtrar" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Marca de tiempo" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Entidad" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "Campo" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Cambiar" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Razón" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Cambiar información" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "Por favor, introduce una dirección de correo electrónico válida" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "Envío..." -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "" +#~ "No se pudo enviar el correo " +#~ "electrónico de prueba. Por favor " +#~ "verifique su configuración." -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Configure OIDC utilizando estas variables de entorno:" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Server" +#~ msgstr "Servicio" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Solicitar información" +#~ msgid "Users" +#~ msgstr "Usuarios" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Reclamación de grupos" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "Perdido" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "Usar SSL" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Seguridad" +#~ msgid "StartTLS" +#~ msgstr "Comenzar" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Tiempo de espera (segundos)" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (autenticación empresarial)" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "La contraseña debe tener al menos 8 caracteres" +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "Contraseña del portal" +#~ msgid "Bind password" +#~ msgstr "Contraseña" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "Establece tu contraseña" +#~ msgid "Enter bind password" +#~ msgstr "Introduce tu contraseña" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "Sin nombres de usuario ni correos electrónicos" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "Base DN" +#~ msgstr "Basado en el último" -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "Enviar correo electrónico de prueba" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "Volver a administrador" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Acceso" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Seguimiento del tiempo. Manténgase organizado." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Inicia sesión en tu cuenta" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "Detalles del artículo" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "Establece tu contraseña" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "Método de autenticación" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "Iniciar sesión" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Consejo: Ingrese un nuevo nombre de usuario para crear su cuenta." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "O continuar con" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Inicio de sesión único" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Editar perfil" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Miembro desde" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "Establecer contraseña" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "Establecer contraseña" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "Establezca una contraseña para su cuenta del portal del cliente" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "Establecer contraseña" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "La contraseña debe tener al menos 8 caracteres" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "confirmar Contraseña" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "Establece tu contraseña" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "Establecer contraseña" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "Método de autenticación" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "User object class" +#~ msgstr "Utilice tarifas por hora del proyecto" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Código" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "Login attribute" +#~ msgstr "Tiempo de registro" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Email attribute" +#~ msgstr "Dirección de correo electrónico" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "El acceso al portal del cliente no está habilitado para su cuenta." +#~ msgid "First name attribute" +#~ msgstr "Nombre de pila" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "Apellido" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "Desactivado" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Método de autenticación" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "Group object class" +#~ msgstr "Proyectos principales" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "Grupo de administración" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "AUTH_METHOD" +#~ msgstr "Método de autenticación" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "Sólo activo" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "Código generado" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "Activado" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Configuración de prueba" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Test connection" +#~ msgstr "Configuración de prueba" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Alertas y pronósticos de presupuesto" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Supervisar los presupuestos de los proyectos y pronosticar su finalización." - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Alertas no reconocidas" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Alertas críticas" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Proyectos con Presupuestos" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Alertas de advertencia" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Alertas activas" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Reconocer" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Estado del presupuesto del proyecto" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Presupuesto" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Consumado" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Restante" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Progreso" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "encima" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Por encima del presupuesto" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Crítico" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "Saludable" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "No se encontraron proyectos con presupuestos." - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Alerta reconocida exitosamente" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "No se pudo reconocer la alerta" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Análisis y previsión presupuestaria" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Volver al panel" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Ver proyecto" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Presupuesto total" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Análisis de tasa de quemado" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Tasa de quema diaria" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Tasa de quema semanal" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Tasa de quema mensual" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Total del período" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Basado en el último" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "días" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "No hay datos de tasa de grabación disponibles" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Estimación de finalización" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Fecha estimada de finalización" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "días restantes" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Nivel de confianza" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "No hay estimación de finalización disponible" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Análisis de tendencias de costos" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Promedio" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Asignación de recursos" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Costo total" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Tarifa por hora" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Miembro del equipo" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Costo" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Horas %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Costo %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "Entradas" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Fecha y hora" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Ubicación" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Recordatorio" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "minutos antes" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "horas antes" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "días antes" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Periódico" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Hasta" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Última actualización" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Volver al calendario" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Eliminar evento" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "¿Estás seguro de que deseas eliminar este evento? Esta acción no se puede deshacer." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Editar evento" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Nuevo evento" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Título" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Fecha de inicio" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Hora de inicio" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Fecha de finalización" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Hora de finalización" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Evento de todo el día" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Tipo de evento" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Reunión" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Cita" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Fecha límite" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- Ninguno --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Sin recordatorio" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 minutos antes" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 minutos antes" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 minutos antes" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 hora antes" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 dia antes" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Color" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Elige un color para este evento" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Evento Privado" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Los eventos privados solo son visibles para ti" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Evento recurrente" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "Este es un evento recurrente" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Patrón de recurrencia" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Utilice el formato RRULE (por ejemplo, FREQ=SEMANAL;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Fecha de finalización de la recurrencia" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Evento de actualización" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Crear evento" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "Generate configuration" +#~ msgstr "Configuración de prueba" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "Environment variables (.env)" +#~ msgstr "Referencia de variables de entorno" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Previous" +#~ msgstr "Anterior" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Next" +#~ msgstr "Próximo" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "Feature Module Load Status" +#~ msgstr "Estadísticas de uso de funciones" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "Optional loaded:" +#~ msgstr "Código de cupón opcional" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "Attention needed" +#~ msgstr "Atención requerida" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Ver y administrar sus eventos, tareas y entradas de tiempo" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Día" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Semana" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Mes" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "Hoy" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Module" +#~ msgstr "Móvil" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Cargando calendario..." +#~ msgid "Status" +#~ msgstr "Estado" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Detalles del evento" +#~ msgid "Details" +#~ msgstr "Detalles" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "Loaded" +#~ msgstr "Cargar más" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "Failed" +#~ msgstr "Fallido" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "—" +#~ msgstr "" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "All Categories" +#~ msgstr "Todas las categorías" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Project Management" +#~ msgstr "Gestión de proyectos" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "Activado" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Disabled" +#~ msgstr "Desactivado" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Editar nota del cliente" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Volver al Cliente" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Cliente:" +#~ msgid "Save Changes" +#~ msgstr "Guardar cambios" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Creado el" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Última edición el" +#~ msgid "Note" +#~ msgstr "Nota" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Contenido de la nota" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Nota interna visible solo para tu equipo." +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Marcar como importante" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Portal del cliente" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "Ver detalles" +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "Panel de depuración OIDC" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "Pendiente" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Aprobado" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Rechazado" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Todo" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "" +#~ "Inspeccionar la configuración, los metadatos" +#~ " del proveedor y los usuarios de " +#~ "OIDC." -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Ver detalles" +#~ msgid "Test Configuration" +#~ msgstr "Configuración de prueba" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "OIDC Configuration" +#~ msgstr "Configuración OIDC" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "Auth Method" +#~ msgstr "Método de autenticación" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "Issuer" +#~ msgstr "Editor" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "Not configured" +#~ msgstr "No configurado" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "Client ID" +#~ msgstr "ID de cliente" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "Client Secret" +#~ msgstr "Secreto del cliente" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "Set" +#~ msgstr "Colocar" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "Not set" +#~ msgstr "No establecido" -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "Estado de aprobación" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "Aprobación solicitada" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "No se actualizaron proyectos" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "Bienvenido, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "Personalizar atajos" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "URI de redireccionamiento" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "Estadística" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "Secciones de administración" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "Facturas recientes" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "Entradas de tiempo recientes" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "Seleccione un cliente..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "No se pudo detener el cronómetro" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "Generado automáticamente" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Scopes" +#~ msgstr "Alcances" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "Mapeo de reclamos" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "Reclamación de nombre de usuario" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "Email Claim" +#~ msgstr "Reclamo por correo electrónico" -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Full Name Claim" +#~ msgstr "Reclamación de nombre completo" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Ir al panel" +#~ msgid "Groups Claim" +#~ msgstr "Reclamación de grupos" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Admin Group" +#~ msgstr "Grupo de administración" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Volver" +#~ msgid "Admin Emails" +#~ msgstr "Correos electrónicos de administrador" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "Post-Logout URI" +#~ msgstr "URI posterior al cierre de sesión" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Detalles de la factura" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Fecha de asunto" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "Esta factura tiene %(days)d días de retraso." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Artículos de factura" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Cantidad" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Precio unitario" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "Provider Metadata" +#~ msgstr "Metadatos del proveedor" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Volver a Facturas" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "Facturas para %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "No pagado" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "Atrasado" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Cantidad" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "días de retraso" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "Error loading metadata:" +#~ msgstr "Error al cargar metadatos:" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "Discovery endpoint:" +#~ msgstr "Punto final de descubrimiento:" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Metadatos del proveedor cargados correctamente" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "Endpoints" +#~ msgstr "Puntos finales" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Authorization" +#~ msgstr "Autorización" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Token" +#~ msgstr "Simbólico" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "UserInfo" +#~ msgstr "Información de usuario" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "End Session" +#~ msgstr "Finalizar sesión" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "JWKS URI" +#~ msgstr "JWKS URI" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Prioridad" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "Supported Features" +#~ msgstr "Funciones admitidas" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "Asignado a" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Response Types" +#~ msgstr "Tipos de respuesta" -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "Tipos de subvenciones" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "Auth Methods" +#~ msgstr "Métodos de autenticación" -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Claims" +#~ msgstr "Reclamos" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Abierto" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Metadatos del proveedor no cargados. " +#~ "Haga clic en \"Probar configuración\" " +#~ "para buscar." -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Email" +#~ msgstr "Correo electrónico" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "Full Name" +#~ msgstr "Nombre completo" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "Role" +#~ msgstr "Role" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Iniciar sesión en el portal del cliente" +#~ msgid "Last Login" +#~ msgstr "Último inicio de sesión" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Ver tus proyectos y facturas" +#~ msgid "OIDC Subject" +#~ msgstr "Asunto OIDC" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Iniciar sesión en el Portal del Cliente" +#~ msgid "Inactive" +#~ msgstr "Inactivo" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "Introduce las credenciales de tu portal para acceder a tus proyectos y facturas" +#~ msgid "Never" +#~ msgstr "Nunca" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "nombre_usuario_portal" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Ningún usuario ha iniciado sesión a través de OIDC todavía." -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Introduce tu contraseña" +#~ msgid "Environment Variables Reference" +#~ msgstr "Referencia de variables de entorno" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Configure OIDC utilizando estas variables de entorno:" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "Variable" +#~ msgstr "Variable" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "Description" +#~ msgstr "Descripción" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "Example" +#~ msgstr "Ejemplo" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Bajo" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Medio" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Alto" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Urgente" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "Authentication method" +#~ msgstr "Método de autenticación" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "OIDC provider issuer URL" +#~ msgstr "URL del emisor del proveedor OIDC" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "Client ID from OIDC provider" +#~ msgstr "ID de cliente del proveedor OIDC" -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Secreto de cliente del proveedor OIDC" -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "URL de devolución de llamada (opcional, generada automáticamente)" -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "Requested scopes" +#~ msgstr "Alcances solicitados" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "Claim containing username" +#~ msgstr "Reclamación que contiene nombre de usuario" -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "Claim containing email" +#~ msgstr "Reclamación que contiene correo electrónico" -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "Claim containing full name" +#~ msgstr "Reclamación que contiene el nombre completo" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Claim containing groups" +#~ msgstr "Reclamación que contiene grupos" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Nombre del grupo para la función de administrador (opcional)" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "Correos electrónicos de administrador separados por comas (opcional)" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Comentarios" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Agregar comentario" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Tu comentario" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Publicar comentario" +#~ msgid "Basic Config" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "Test Connection" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Volver a Proyectos" +#~ msgid "OIDC Issuer URL" +#~ msgstr "" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "Proyectos para %(client_name)s" +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "Enter client secret" +#~ msgstr "" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Detalles de la cotización" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Válido hasta" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Esta cotización ha caducado." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Artículos de cotización" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "SKU" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Términos y condiciones" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "Authentication Method" +#~ msgstr "Método de autenticación" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Aceptar cotización" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Rechazar cotización" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Volver a Cotizaciones" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "OIDC Only" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "Cotizaciones para %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Venció" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "No se encontraron comillas." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Both" +#~ msgstr "" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "SSO and local password authentication" +#~ msgstr "" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "Código de proyecto" +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "Por encima del presupuesto" +#~ msgid "Step 2: Test Connection" +#~ msgstr "" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "Resumen" +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "Monto total" +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "No hay tareas seleccionadas" +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "Ninguna actividad en los últimos 30 días." +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Establecer contraseña" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Establece tu contraseña para comenzar" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Establece tu contraseña" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Establezca una contraseña para su cuenta del portal del cliente" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "confirmar Contraseña" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Confirma tu contraseña" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "Entradas de tiempo para %(client_name)s proyectos" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Todos los proyectos" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "Desde la fecha" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "Hasta la fecha" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Entradas totales" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Horas totales" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Facturas recientes" +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Ver todo" +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Generate Configuration" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "OIDC User Details" +#~ msgstr "Detalles del usuario OIDC" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Perfil e identidad OIDC para este usuario" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Facturas totales" +#~ msgid "Back to OIDC Debug" +#~ msgstr "Volver a Depuración OIDC" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "User Profile" +#~ msgstr "Perfil de usuario" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Entradas de tiempo recientes" +#~ msgid "Active" +#~ msgstr "Activo" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "Preferred Language" +#~ msgstr "Idioma preferido" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Exportar a CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Crear cliente" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Volver a Clientes" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "Agregue un nuevo cliente para gestionar proyectos y facturación relacionados." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Introduzca el nombre del cliente" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Tarifa por hora predeterminada" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "p.ej. 75.00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "Esta tarifa se completará automáticamente al crear proyectos para este cliente." - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Admite rebajas" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Breve descripción del cliente o alcance del proyecto." - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Persona de contacto" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Nombre del contacto principal" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contacto@cliente.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Horas Prepagas Mensuales" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "p.ej. 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "Déjelo en blanco si este cliente no tiene asignación prepago." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Día de reinicio prepago" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Día del mes en que se restablecen las horas prepagas (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Dirección del cliente" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "Created At" +#~ msgstr "Creado en" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "OIDC Information" +#~ msgstr "Información OIDC" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Elija un nombre claro y descriptivo para la organización cliente." +#~ msgid "OIDC Issuer" +#~ msgstr "Emisor OIDC" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "Establezca la tarifa por hora estándar para este cliente. Esto se completará automáticamente al crear nuevos proyectos." +#~ msgid "OIDC Subject (sub)" +#~ msgstr "Asunto OIDC (sub)" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Información del contacto" +#~ msgid "Local" +#~ msgstr "Local" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "Agregue detalles de contacto para facilitar la comunicación y el mantenimiento de registros." +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Este usuario fue creado o vinculado " +#~ "a través de OIDC. El emisor y " +#~ "el asunto se utilizan para identificar" +#~ " de forma única al usuario en " +#~ "todas las sesiones de inicio de " +#~ "sesión." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Este usuario no tiene información OIDC." +#~ " Es posible que se hayan creado " +#~ "manualmente o mediante autorregistro sin " +#~ "OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "Estadísticas de actividad" + +#~ msgid "Time Entries" +#~ msgstr "Entradas de tiempo" + +#~ msgid "None" +#~ msgstr "Ninguno" + +#~ msgid "Active Timer" +#~ msgstr "Temporizador activo" + +#~ msgid "Tasks Created" +#~ msgstr "Tareas creadas" + +#~ msgid "Edit User" +#~ msgstr "Editar usuario" + +#~ msgid "View All Users" +#~ msgstr "Ver todos los usuarios" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Horas prepagas" +#~ msgid "PDF Invoice Designer" +#~ msgstr "Diseñador de cotizaciones en PDF" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "Configure las horas incluidas mensuales y el día de reinicio si este cliente tiene un anticipo o un paquete prepago." +#~ msgid "Visual Invoice Designer" +#~ msgstr "Diseñador de cotizaciones visuales" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "Proporcione contexto sobre la relación con el cliente o los tipos de proyectos típicos." +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "Arrastre y suelte elementos para diseñar el diseño de su cotización" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "Editar cliente" +#~ msgid "How to use:" +#~ msgstr "Cómo utilizar:" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "Habilite el acceso al portal para este cliente. Los clientes pueden iniciar sesión con sus propias credenciales para ver proyectos, facturas y entradas de tiempo." +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Haga clic en elementos de la barra" +#~ " lateral izquierda para agregarlos al " +#~ "lienzo. Haga clic en elementos para " +#~ "seleccionarlos y personalizarlos en el " +#~ "panel de propiedades. Utilice las " +#~ "herramientas de alineación y los atajos" +#~ " de teclado para una edición más " +#~ "rápida." -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Habilitar el portal del cliente" +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Atajos de teclado:" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Items Table:" +#~ msgstr "Tabla de artículos de cotización" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Nombre de usuario del portal" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Nombre de usuario único para iniciar sesión en el portal" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Contraseña del portal" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "Déjelo vacío para mantener la contraseña actual" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Establezca una nueva contraseña o déjela vacía para mantenerla actualizada" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Nombre de usuario actual del portal" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Actualizar cliente" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Enviar correo electrónico de configuración de contraseña" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "Envíe un correo electrónico a %(email)s con un enlace para establecer su contraseña del portal." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "Se requiere una dirección de correo electrónico para enviar el correo electrónico de configuración de contraseña. Configure la dirección de correo electrónico del cliente arriba." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Estadísticas de clientes" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "Est. Costo Total" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Filtrar clientes" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Alternar filtros" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Ocultar filtros" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Mostrar filtros" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "No se encontraron entradas de tiempo no facturadas para este proyecto." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "Entradas de tiempo no facturadas" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "Artículos de factura" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "¿Marcar cliente como inactivo?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Cambiar el estado del cliente" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Marcar inactivo" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "¿Activar cliente?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Activar Cliente" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Eliminar cliente" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "Proyectos totales y activos" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Administrar" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Primario" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "más contacto(s)" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Aún no hay contactos" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Agregar contacto" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Información de contacto heredada" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "El plan incluye %(hours)s de horas por ciclo. Se reinicia el día %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Inicio del ciclo actual" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Horas restantes" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "h" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "Consumido este ciclo" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Expenses Table:" +#~ msgstr "Subtotal de gastos" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Saving:" +#~ msgstr "Ahorro..." -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "Preview:" +#~ msgstr "" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Cliente visible" +#~ msgid "See" +#~ msgstr "Colocar" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "for full documentation." +#~ msgstr "Documentación" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Clear Canvas" +#~ msgstr "Borrar lienzo" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Generate Preview" +#~ msgstr "Generar vista previa" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Archivado" +#~ msgid "Save Design" +#~ msgstr "Guardar diseño" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "View Code" +#~ msgstr "Ver código" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Export JSON" +#~ msgstr "" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "Import JSON" +#~ msgstr "" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Notas internas" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Agregar nota" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Añadir una nota interna sobre este cliente..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Guardar nota" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "editado" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Importante" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Desmarcar" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Marcar importante" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "Aún no hay notas. Agregue una nota para realizar un seguimiento de información importante sobre este cliente." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "Valor estimado" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "Crear factura" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "Crear factura" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "Crear factura" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "¿Estás seguro de que deseas eliminar esta nota?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Eliminar nota" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Editado el" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Responder" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Ajustar a cuadrícula (10px)" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Toolbox" +#~ msgstr "Caja de instrumento" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Escribe tu respuesta..." +#~ msgid "Search elements & variables..." +#~ msgstr "Buscar elementos y variables..." -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "Elements" +#~ msgstr "Elementos" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "Variables" +#~ msgstr "variables" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Comparta sus pensamientos, actualizaciones o preguntas..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "Puede utilizar saltos de línea para dar formato a su comentario." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Agregar imagen" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Aún no hay comentarios" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Inicie la conversación agregando el primer comentario." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Agregar primer comentario" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Editar comentario" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Atrás" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "Editando comentario sobre:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Publicado originalmente en" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Contenido del comentario" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Todas las actividades" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Plantillas de tiempo" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Ninguna actividad reciente" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "La actividad aparecerá aquí mientras trabajas." - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Cargar más" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "No se pudieron cargar las actividades" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Basic Elements" +#~ msgstr "Elementos básicos" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "Custom Text" +#~ msgstr "Texto personalizado" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "Text" +#~ msgstr "Texto" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "Heading" +#~ msgstr "Título" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "Line" +#~ msgstr "Línea" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "Rectangle" +#~ msgstr "Rectángulo" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "Circle" +#~ msgstr "Círculo" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Company Info" +#~ msgstr "Información de la empresa" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Seleccione un cliente..." +#~ msgid "Company Logo" +#~ msgstr "Logotipo de la empresa" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "Company Name" +#~ msgstr "nombre de empresa" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "Company Details" +#~ msgstr "Detalles de la empresa" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "Address" +#~ msgstr "DIRECCIÓN" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "Phone" +#~ msgstr "Teléfono" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Website" +#~ msgstr "Sitio web" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Tax ID" +#~ msgstr "Identificación fiscal" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "Invoice Data" +#~ msgstr "Detalles de la factura" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "Invoice Number" +#~ msgstr "Número de factura" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Invoice Date" +#~ msgstr "Facturado" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Due Date" +#~ msgstr "Fecha de vencimiento" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "Client Info" +#~ msgstr "Información del cliente" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Client Name" +#~ msgstr "Nombre del cliente" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Client Address" +#~ msgstr "Dirección del cliente" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Items Table" +#~ msgstr "Tabla de artículos de cotización" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Expenses Table" +#~ msgstr "Subtotal de gastos" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Subtotal" +#~ msgstr "Total parcial" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Tax" +#~ msgstr "Impuesto" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Total Amount" +#~ msgstr "Monto total" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "Terms" +#~ msgstr "Términos" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Payment & Project" +#~ msgstr "Pago y proyecto" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "Payment Date" +#~ msgstr "Fecha de pago" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "Payment Method" +#~ msgstr "Método de pago" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "Hecho" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Payment Status" +#~ msgstr "Estado de pago" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "Centro de ayuda de TimeTracker" +#~ msgid "Amount Paid" +#~ msgstr "Monto pagado" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Project Name" +#~ msgstr "Nombre del proyecto" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Hogar" +#~ msgid "Client Email" +#~ msgstr "Correo electrónico del cliente" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "Paginación de mis tareas." +#~ msgid "Client Phone" +#~ msgstr "Teléfono del cliente" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "QR Code" +#~ msgstr "Código QR" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Barcode" +#~ msgstr "Código de barras" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Llamar" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Mensaje" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Dirección" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "saliente" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "Entrante" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Sujeto" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Programado" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Fecha de seguimiento" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Contenido/Notas" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Guardar comunicación" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Nombre de pila" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Apellido" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "Móvil" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "Departamento" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Contacto" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Facturación" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Técnico" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Establecer como contacto principal" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Etiquetas" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Guardar contacto" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Establecer primario" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "No se encontraron contactos" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Agregar primer contacto" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Contacto principal" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Historia de la comunicación" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Agregar comunicación" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "No se registraron comunicaciones" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "Page Number" +#~ msgstr "Número de página" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "Activar" +#~ msgid "Current Date" +#~ msgstr "Fecha actual" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "Watermark" +#~ msgstr "Filigrana" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Nombre de la oferta" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Seleccionar Cliente" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Seleccione Contacto" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Escenario" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Valor de la oferta" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Probabilidad de ganar" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Fecha de cierre prevista" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Cita relacionada" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Seleccionar Cotización" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Guardar oferta" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Ganado" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Perdido" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Todas las etapas" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Valor" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Probabilidad" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Cierre esperado" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "No se encontraron ofertas" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Crear primer trato" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "Bank Info" +#~ msgstr "Información bancaria" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "Currency" +#~ msgstr "Divisa" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "Decorative Image" +#~ msgstr "" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "Invoice Fields" +#~ msgstr "Artículos de factura" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "Invoice number" +#~ msgstr "Número de factura" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Estado de la cotización (borrador/enviada/pagada/vencida)" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Proyecto relacionado" +#~ msgid "Issue date" +#~ msgstr "Fecha de asunto" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Due date" +#~ msgstr "Fecha de vencimiento" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Subtotal amount" +#~ msgstr "Monto subtotal" -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "Tax rate (%)" +#~ msgstr "Tasa impositiva (%)" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "Historial de goles" +#~ msgid "Tax amount" +#~ msgstr "Monto del impuesto" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "Ver todos los detalles" +#~ msgid "Total amount" +#~ msgstr "Monto total" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Código de moneda (EUR, USD, etc.)" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Fuiste mencionado" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Ver tarea y responder" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Factura" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Factura vencida" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Ver factura" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Cita" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Aprobación de cotización rechazada" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Ver cotización" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Aprobación solicitada" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Revisar cotización" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Cotización aprobada" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "Cotización caducada" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "La cotización vencerá pronto" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Cotización enviada" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Asignación de tareas" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Ver tarea" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Detalles de la prueba" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "Su resumen semanal" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 Solicitud incorrecta" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Solicitud no válida" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "La solicitud que realizó no es válida o contiene errores. Esto podría deberse a:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Datos de formulario faltantes o no válidos" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Parámetros de solicitud mal formados" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "No tienes permiso para acceder a este recurso. Esto podría deberse a:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Privilegios insuficientes" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "No iniciado sesión" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Restricciones de acceso a recursos" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Algo salió mal por nuestra parte. Inténtelo de nuevo más tarde." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Intentar otra vez" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Se produjo un error al procesar su solicitud." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Actualizar página" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Ir a Iniciar sesión" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "por ejemplo, viajes, comidas, material de oficina" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "por ejemplo, VIAJES, COMIDAS" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Breve descripción de esta categoría..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "por ejemplo, fa-avión, fa-utensilios" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "por ejemplo, 19.00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Categoría" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Información básica" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "por ejemplo, vuelo a Berlín" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Detalles adicionales sobre el gasto..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "Categoría" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "Detalles de pago" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "Ubicación" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Detalles de pago" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "por ejemplo, Lufthansa" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "información adicional" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Número de recibo/factura" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "por ejemplo, INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "por ejemplo, conferencia, reunión con clientes, urgente" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Notas adicionales..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "Opcional" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Filtrar gastos" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Eliminar gastos seleccionados" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Cambiar estado de gastos seleccionados" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Asociado con" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Rechazar Gasto" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Explique por qué se rechaza este gasto..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "¿Estás seguro de que deseas eliminar este gasto?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Eliminar Gasto" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "Invoice notes" +#~ msgstr "Artículos de factura" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Importar/exportar datos" +#~ msgid "Terms & conditions" +#~ msgstr "Términos y condiciones" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Importar/Exportar" +#~ msgid "Client Fields" +#~ msgstr "Campos de cliente" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "Importe datos de otros rastreadores de tiempo o exporte sus datos para cumplir con el RGPD y realizar copias de seguridad" +#~ msgid "Client company name" +#~ msgstr "Nombre de la empresa cliente" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Importar datos" +#~ msgid "Client email address" +#~ msgstr "Dirección de correo electrónico del cliente" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "Client full address" +#~ msgstr "dirección completa del cliente" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Importar entradas de tiempo desde un archivo CSV" +#~ msgid "Client contact person" +#~ msgstr "Persona de contacto del cliente" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Elija el archivo CSV" +#~ msgid "Client phone number" +#~ msgstr "Número de teléfono del cliente" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Descargar plantilla" +#~ msgid "Payment Fields" +#~ msgstr "Campos de pago" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Payment status" +#~ msgstr "Estado de pago" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "Payment date" +#~ msgstr "Fecha de pago" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Payment method" +#~ msgstr "Método de pago" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Payment reference number" +#~ msgstr "Número de referencia de pago" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Amount paid" +#~ msgstr "Monto pagado" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Outstanding amount" +#~ msgstr "Monto pendiente" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Payment notes" +#~ msgstr "Notas de pago" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Importar desde Toggl Track" +#~ msgid "Project Fields" +#~ msgstr "Campos del proyecto" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Importar entradas de tiempo desde Toggl Track" +#~ msgid "Project name" +#~ msgstr "Nombre del proyecto" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Importar desde Toggl" +#~ msgid "Project code" +#~ msgstr "código de proyecto" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Importar desde cosecha" +#~ msgid "Project description" +#~ msgstr "Descripción del proyecto" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Importar entradas de tiempo desde Harvest" +#~ msgid "Project billing reference" +#~ msgstr "Referencia de facturación del proyecto" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Restaurar desde copia de seguridad" +#~ msgid "Company/Settings Fields" +#~ msgstr "Campos de empresa/configuración" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "Your company name" +#~ msgstr "El nombre de tu empresa" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Historial de importación" +#~ msgid "Your company address" +#~ msgstr "La dirección de tu empresa" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Exportar datos" +#~ msgid "Your company email" +#~ msgstr "El correo electrónico de tu empresa" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Exportación completa de datos (GDPR)" +#~ msgid "Your company phone" +#~ msgstr "Teléfono de tu empresa" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Exporta todos tus datos personales" +#~ msgid "Your company website" +#~ msgstr "Sitio web de su empresa" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Exportar como JSON" +#~ msgid "Your tax ID number" +#~ msgstr "Su número de identificación fiscal" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Exportar como ZIP" +#~ msgid "Your bank account info" +#~ msgstr "La información de tu cuenta bancaria" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Exportación filtrada" +#~ msgid "Default invoice terms" +#~ msgstr "Términos de factura predeterminados" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Exportar datos específicos con filtros" +#~ msgid "Default invoice notes" +#~ msgstr "Notas de factura predeterminadas" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Exportar con filtros" +#~ msgid "Date/Time Fields" +#~ msgstr "Campos de fecha/hora" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "Current date" +#~ msgstr "fecha actual" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "Invoice creation date" +#~ msgstr "Fecha de creación de la cotización" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "Invoice last update date" +#~ msgstr "Cita última fecha de actualización" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Crear una copia de seguridad completa de la base de datos" +#~ msgid "Invoice Items Loop" +#~ msgstr "Artículos de factura" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Historial de exportación" +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "Ficha API" +#~ msgid "Time-based items only" +#~ msgstr "Servicios basados ​​en el tiempo y trabajo por horas." -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "ID del espacio de trabajo" +#~ msgid "Item description" +#~ msgstr "Descripción del artículo" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Importar" +#~ msgid "Item quantity" +#~ msgstr "Cantidad de artículo" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "ID de cuenta" +#~ msgid "Item unit price" +#~ msgstr "Precio unitario del artículo" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Item total amount" +#~ msgstr "Importe total del artículo" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "End loop" +#~ msgstr "Finalizar bucle" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Extra Goods Loop" +#~ msgstr "Bienes adicionales" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "Loop through extra goods only" +#~ msgstr "Proyecto de bienes adicionales" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "Good name" +#~ msgstr "Nombre del rol" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Good total amount" +#~ msgstr "Monto total" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "Design Canvas" +#~ msgstr "Lienzo de diseño" + +#~ msgid "Page Size:" +#~ msgstr "Tamaño de página:" + +#~ msgid "Zoom In" +#~ msgstr "Dar un golpe de zoom" + +#~ msgid "Zoom Out" +#~ msgstr "Alejar" + +#~ msgid "Delete Selected" +#~ msgstr "Eliminar seleccionado" + +#~ msgid "Properties" +#~ msgstr "Propiedades" + +#~ msgid "Warnings" +#~ msgstr "Advertencia" + +#~ msgid "Refresh warnings" +#~ msgstr "Actualizar página" + +#~ msgid "No warnings" +#~ msgstr "Advertencia" + +#~ msgid "Template Settings" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "Formato de fecha" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "Seleccione un elemento para editar sus propiedades" + +#~ msgid "PDF Preview" +#~ msgstr "Vista previa de PDF" + +#~ msgid "Page Size" +#~ msgstr "" + +#~ msgid "Refresh Preview" +#~ msgstr "" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "" + +#~ msgid "Close Preview" +#~ msgstr "" + +#~ msgid "Zoom Level" +#~ msgstr "" + +#~ msgid "Reset Zoom" +#~ msgstr "" + +#~ msgid "Fit to Width" +#~ msgstr "" + +#~ msgid "Fit Width" +#~ msgstr "" + +#~ msgid "Fit to Height" +#~ msgstr "" + +#~ msgid "Fit Height" +#~ msgstr "" + +#~ msgid "Actual Size" +#~ msgstr "" + +#~ msgid "Generating preview..." +#~ msgstr "" + +#~ msgid "Preview Error" +#~ msgstr "" + +#~ msgid "Retry" +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "Código generado" + +#~ msgid "Change Image" +#~ msgstr "" + +#~ msgid "Upload Image" +#~ msgstr "" + +#~ msgid "Remove Image" +#~ msgstr "" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "" + +#~ msgid "Uploading..." +#~ msgstr "" + +#~ msgid "Error: Image update function not found" +#~ msgstr "" + +#~ msgid "Failed to upload image" +#~ msgstr "" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "¿Borrar todos los elementos?" + +#~ msgid "Clear" +#~ msgstr "Claro" + +#~ msgid "Exit Fullscreen" +#~ msgstr "" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "¿Restablecer los valores predeterminados?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "Restablecer diseño de PDF" + +#~ msgid "Error importing template" +#~ msgstr "" + +#~ msgid "PDF Quote Designer" +#~ msgstr "Diseñador de cotizaciones en PDF" + +#~ msgid "Visual Quote Designer" +#~ msgstr "Diseñador de cotizaciones visuales" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "Arrastre y suelte elementos para diseñar el diseño de su cotización" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Tabla de artículos de cotización" + +#~ msgid "Quote Items Table:" +#~ msgstr "Tabla de artículos de cotización" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" + +#~ msgid "Quote Data" +#~ msgstr "Datos de cotización" + +#~ msgid "Quote Number" +#~ msgstr "Número de cotización" + +#~ msgid "Quote Date" +#~ msgstr "Fecha de cotización" + +#~ msgid "Quote Items Table" +#~ msgstr "Tabla de artículos de cotización" + +#~ msgid "Quote Fields" +#~ msgstr "Campos de cotización" + +#~ msgid "Quote number" +#~ msgstr "Número de cotización" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Estado de la cotización (borrador/enviada/pagada/vencida)" + +#~ msgid "Quote notes" +#~ msgstr "Notas de cotización" + +#~ msgid "Quote status" +#~ msgstr "Estado de la cotización" + +#~ msgid "Quote accepted date" +#~ msgstr "Fecha de aceptación de cotización" + +#~ msgid "Quote creation date" +#~ msgstr "Fecha de creación de la cotización" + +#~ msgid "Quote last update date" +#~ msgstr "Cita última fecha de actualización" + +#~ msgid "Quote Items Loop" +#~ msgstr "Bucle de elementos de cotización" + +#~ msgid "Loop through invoice items" +#~ msgstr "Recorrer los elementos de la factura" + +#~ msgid "Align Left" +#~ msgstr "Alinear a la izquierda" + +#~ msgid "Center Horizontally" +#~ msgstr "Centrar horizontalmente" + +#~ msgid "Align Right" +#~ msgstr "Alinear a la derecha" + +#~ msgid "Align Top" +#~ msgstr "Alinear arriba" + +#~ msgid "Center Vertically" +#~ msgstr "Centrar verticalmente" + +#~ msgid "Align Bottom" +#~ msgstr "Alinear abajo" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "" + +#~ msgid "Email Mappings" +#~ msgstr "" + +#~ msgid "Add Mapping" +#~ msgstr "" + +#~ msgid "Salesman Initial" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "Dirección de correo electrónico" + +#~ msgid "Pattern/Domain" +#~ msgstr "" + +#~ msgid "Add Email Mapping" +#~ msgstr "" + +#~ msgid "1-20 letters only" +#~ msgstr "" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" + +#~ msgid "Direct Email Address" +#~ msgstr "" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" + +#~ msgid "Edit Email Mapping" +#~ msgstr "" + +#~ msgid "Error saving mapping" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" + +#~ msgid "Error deleting mapping" +#~ msgstr "" + +#~ msgid "Time Entry Requirements" +#~ msgstr "Plantillas de entrada de tiempo" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" + +#~ msgid "Require description when logging time" +#~ msgstr "" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" + +#~ msgid "Support visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "Llave" + +#~ msgid "— key sent by email." +#~ msgstr "Enviar correo electrónico" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "Llave" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "Código, nombre, correo electrónico" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "Marca de la empresa" + +#~ msgid "Invoice Defaults" +#~ msgstr "Valores predeterminados de factura" + +#~ msgid "Backup Settings" +#~ msgstr "Configuración de copia de seguridad" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "Activado" + +#~ msgid "Host" +#~ msgstr "Perdido" + +#~ msgid "SSL" +#~ msgstr "Usar SSL" + +#~ msgid "TLS" +#~ msgstr "Usar TLS" + +#~ msgid "on" +#~ msgstr "en" + +#~ msgid "off" +#~ msgstr "de" + +#~ msgid "User DN" +#~ msgstr "Menú de usuario" + +#~ msgid "User login attribute" +#~ msgstr "Tiempos de carga más rápidos" + +#~ msgid "Test LDAP Connection" +#~ msgstr "Términos y condiciones" + +#~ msgid "Export Settings" +#~ msgstr "Configuración de exportación" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "Ajuste" + +#~ msgid "Transfer" +#~ msgstr "Transferir" + +#~ msgid "Sale" +#~ msgstr "Venta" + +#~ msgid "Rent" +#~ msgstr "Alquiler" + +#~ msgid "Purchase" +#~ msgstr "Compra" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "Disponible" + +#~ msgid "Use environment default" +#~ msgstr "Valores predeterminados de factura" + +#~ msgid "currently" +#~ msgstr "Divisa" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "URL de la imagen" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "Código" + +#~ msgid "Hosted API key" +#~ msgstr "Crear token API" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "Déjelo en blanco para mantener la contraseña actual" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "Tiempo de espera (segundos)" + +#~ msgid "Context limit" +#~ msgstr "Tipo de contenido" + +#~ msgid "System prompt" +#~ msgstr "Rol del sistema" + +#~ msgid "Test AI connection" +#~ msgstr "Términos y condiciones" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Privacidad y análisis" + +#~ msgid "Save Settings" +#~ msgstr "Guardar configuración" + +#~ msgid "Upload New Logo" +#~ msgstr "Subir nuevo logotipo" + +#~ msgid "Logo Preview" +#~ msgstr "Vista previa del logotipo" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "¿Está seguro de que desea eliminar el logotipo de la empresa?" + +#~ msgid "Remove Logo" +#~ msgstr "Quitar logotipo" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "Solicitar aprobación" + +#~ msgid "Testing connection..." +#~ msgstr "Configuración de prueba" + +#~ msgid "Connection failed." +#~ msgstr "Operación fallida" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "Operación fallida" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Panel de telemetría y análisis" + +#~ msgid "Admin → Settings" +#~ msgstr "Administrador → Configuración" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "Déjelo en blanco para mantener la contraseña actual" + +#~ msgid "Client Portal Access" +#~ msgstr "Acceso al portal del cliente" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "Asignado a" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "Acceso de administrador" + +#~ msgid "Migrate to new role system" +#~ msgstr "Migrar al nuevo sistema de roles" + +#~ msgid "Migrate" +#~ msgstr "Emigrar" + +#~ msgid "Roles" +#~ msgstr "Roles" + +#~ msgid "No users found." +#~ msgstr "No se encontraron usuarios." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "No se puede eliminar el usuario " +#~ "\"{name}\" porque tiene {count} entradas " +#~ "de tiempo. Los usuarios con entradas " +#~ "de tiempo existentes no se pueden " +#~ "eliminar." + +#~ msgid "Cannot Delete User" +#~ msgstr "No se puede eliminar usuario" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "¿Está seguro de que desea eliminar " +#~ "el usuario \"{nombre}\"? Esta acción no" +#~ " se puede deshacer." + +#~ msgid "Delete User" +#~ msgstr "Eliminar usuario" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "Etiqueta" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "Opcional" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "Establecer como plantilla predeterminada" + +#~ msgid "HTML Template" +#~ msgstr "Plantilla HTML" + +#~ msgid "Custom Message" +#~ msgstr "Mensaje personalizado" + +#~ msgid "More Variables" +#~ msgstr "Más variables" + +#~ msgid "Create Template" +#~ msgstr "Crear plantilla" + +#~ msgid "Available Variables" +#~ msgstr "Variables disponibles" + +#~ msgid "Invoice Variables" +#~ msgstr "Variables de factura" + +#~ msgid "Other Variables" +#~ msgstr "Otras variables" + +#~ msgid "Send test email" +#~ msgstr "Enviar correo electrónico de prueba" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "Correo electrónico del destinatario" + +#~ msgid "Invoice ID" +#~ msgstr "Facturado" + +#~ msgid "Update Template" +#~ msgstr "Plantilla de actualización" + +#~ msgid "Failed to send test email." +#~ msgstr "Enviar correo electrónico de prueba" + +#~ msgid "No email templates found." +#~ msgstr "No se encontraron plantillas de correo electrónico." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" +#~ "Cree su primera plantilla de correo " +#~ "electrónico para personalizar los correos " +#~ "electrónicos de facturas." + +#~ msgid "Create Email Template" +#~ msgstr "Crear plantilla de correo electrónico" + +#~ msgid "Delete Email Template" +#~ msgstr "Eliminar plantilla de correo electrónico" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "¿Estás seguro de que quieres eliminar?" + +#~ msgid "This action cannot be undone." +#~ msgstr "Esta acción no se puede deshacer." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "Información de la plantilla" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "Icono" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "Nombre" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "Permisos del sistema" + +#~ msgid "All available permissions in the system" +#~ msgstr "Todos los permisos disponibles en el sistema." + +#~ msgid "Back to Roles" +#~ msgstr "Volver a roles" + +#~ msgid "permissions" +#~ msgstr "permisos" + +#~ msgid "No description available" +#~ msgstr "No hay descripción disponible" + +#~ msgid "About Permissions" +#~ msgstr "Acerca de los permisos" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Los permisos definen qué acciones pueden" +#~ " realizar los usuarios en el sistema." +#~ " Estos permisos se asignan a roles" +#~ " y los roles se asignan a " +#~ "usuarios. Esto proporciona un sistema de" +#~ " control de acceso flexible y " +#~ "granular." + +#~ msgid "Edit Role" +#~ msgstr "Editar rol" + +#~ msgid "Create New Role" +#~ msgstr "Crear nuevo rol" + +#~ msgid "Role Name" +#~ msgstr "Nombre del rol" + +#~ msgid "A unique name for this role" +#~ msgstr "Un nombre único para este rol." + +#~ msgid "Optional description of this role" +#~ msgstr "Descripción opcional de este rol." + +#~ msgid "Permissions" +#~ msgstr "Permisos" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Seleccione los permisos que debe tener este rol:" + +#~ msgid "Toggle All" +#~ msgstr "Alternar todo" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "Actualizar rol" + +#~ msgid "Create Role" +#~ msgstr "Crear rol" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Administrar roles y sus permisos" + +#~ msgid "View Permissions" +#~ msgstr "Ver permisos" + +#~ msgid "Total Roles" +#~ msgstr "Roles totales" + +#~ msgid "System Roles" +#~ msgstr "Roles del sistema" + +#~ msgid "Custom Roles" +#~ msgstr "Roles personalizados" + +#~ msgid "Assigned Users" +#~ msgstr "Usuarios asignados" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Default role" +#~ msgstr "Rol predeterminado" + +#~ msgid "user" +#~ msgstr "usuario" + +#~ msgid "No users" +#~ msgstr "Sin usuarios" + +#~ msgid "Custom" +#~ msgstr "Costumbre" + +#~ msgid "View" +#~ msgstr "Vista" + +#~ msgid "Permissions for" +#~ msgstr "Permisos para" + +#~ msgid "No permissions assigned." +#~ msgstr "No hay permisos asignados." + +#~ msgid "No roles found." +#~ msgstr "No se encontraron roles." + +#~ msgid "About Roles & Permissions" +#~ msgstr "Acerca de las funciones y permisos" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "Los roles son conjuntos de permisos " +#~ "que se pueden asignar a los " +#~ "usuarios. Las funciones del sistema " +#~ "están predefinidas y no se pueden " +#~ "eliminar ni cambiar de nombre, pero " +#~ "se pueden crear funciones personalizadas " +#~ "para sus necesidades específicas." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "¿Estás seguro de que deseas eliminar el rol?" + +#~ msgid "Delete Role" +#~ msgstr "Eliminar rol" + +#~ msgid "No description" +#~ msgstr "Sin descripción" + +#~ msgid "Role Information" +#~ msgstr "Información de rol" + +#~ msgid "System Role" +#~ msgstr "Rol del sistema" + +#~ msgid "Custom Role" +#~ msgstr "Rol personalizado" + +#~ msgid "Total Permissions" +#~ msgstr "Permisos totales" + +#~ msgid "Created" +#~ msgstr "Creado" + +#~ msgid "Users with this Role" +#~ msgstr "Usuarios con este rol" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Aún no hay usuarios asignados a este rol." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "Este rol no tiene permisos asignados." + +#~ msgid "Back to User" +#~ msgstr "Volver al usuario" + +#~ msgid "Manage Roles for" +#~ msgstr "Administrar roles para" + +#~ msgid "Assign Roles" +#~ msgstr "Asignar roles" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Seleccione los roles que este usuario" +#~ " debería tener. Los usuarios heredan " +#~ "todos los permisos de sus roles " +#~ "asignados." + +#~ msgid "Update Roles" +#~ msgstr "Actualizar roles" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Permisos efectivos actuales" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "" +#~ "Estos son todos los permisos que " +#~ "tiene actualmente el usuario a través" +#~ " de sus roles:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "Sin permisos (asigne roles para otorgar permisos)" + +#~ msgid "Create Webhook" +#~ msgstr "Crear webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Editar webhook" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Configurar webhook para integraciones" + +#~ msgid "Webhook URL" +#~ msgstr "URL de webhook" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "La URL donde se enviarán los eventos de webhook" + +#~ msgid "Events" +#~ msgstr "Eventos" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Seleccione qué eventos deberían activar este webhook" + +#~ msgid "HTTP Method" +#~ msgstr "Método HTTP" + +#~ msgid "Content Type" +#~ msgstr "Tipo de contenido" + +#~ msgid "Max Retries" +#~ msgstr "Reintentos máximos" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Retardo de reintento (segundos)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Tiempo de espera (segundos)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Secreto regenerado" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "Advertencia: regenerar el secreto invalidará el secreto actual" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Administrar integraciones de webhooks" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "Statistics" +#~ msgstr "Estadística" + +#~ msgid "Total" +#~ msgstr "Total" + +#~ msgid "No webhooks configured" +#~ msgstr "No hay webhooks configurados" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Crea tu primer webhook" + +#~ msgid "Webhook details" +#~ msgstr "Detalles del webhook" + +#~ msgid "Test" +#~ msgstr "Prueba" + +#~ msgid "Secret" +#~ msgstr "Secreto" + +#~ msgid "(truncated)" +#~ msgstr "(truncado)" + +#~ msgid "Total Deliveries" +#~ msgstr "Entregas Totales" + +#~ msgid "Successful" +#~ msgstr "Exitoso" + +#~ msgid "Last Delivery" +#~ msgstr "Última entrega" + +#~ msgid "Recent Deliveries" +#~ msgstr "Entregas recientes" + +#~ msgid "Event" +#~ msgstr "Evento" + +#~ msgid "Attempt" +#~ msgstr "Intentar" + +#~ msgid "Response" +#~ msgstr "Respuesta" + +#~ msgid "Time" +#~ msgstr "Tiempo" + +#~ msgid "Retrying" +#~ msgstr "Reintentando" + +#~ msgid "No deliveries yet" +#~ msgstr "Aún no hay entregas" + +#~ msgid "Send a test webhook event?" +#~ msgstr "¿Enviar un evento de webhook de prueba?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "¡El webhook de prueba se envió correctamente!" + +#~ msgid "Error:" +#~ msgstr "Error:" + +#~ msgid "Unknown error" +#~ msgstr "Error desconocido" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Error al enviar el webhook de prueba:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Panel de análisis" + +#~ msgid "Last 7 days" +#~ msgstr "últimos 7 días" + +#~ msgid "Last 30 days" +#~ msgstr "últimos 30 días" + +#~ msgid "Last 90 days" +#~ msgstr "últimos 90 días" + +#~ msgid "Last year" +#~ msgstr "El año pasado" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Exportar como JSON" + +#~ msgid "Export Charts" +#~ msgstr "Exportar CSV" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Métricas clave e información sobre el seguimiento de su tiempo" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Promedio de horas diarias" + +#~ msgid "Regular" +#~ msgstr "Devolver" + +#~ msgid "Overtime" +#~ msgstr "Tiempo" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Tendencia de horas diarias" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Facturable versus no facturable" + +#~ msgid "Weekly Trends" +#~ msgstr "Tendencias semanales" + +#~ msgid "Hours Forecast" +#~ msgstr "horas antes" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Pagos a lo largo del tiempo" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Horas por hora del día" + +#~ msgid "Project Efficiency" +#~ msgstr "Eficiencia del proyecto" + +#~ msgid "User Performance" +#~ msgstr "Rendimiento del usuario" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "No se pudieron cargar los gráficos. Por favor inténtalo de nuevo." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "No se pudieron actualizar los gráficos. Por favor inténtalo de nuevo." + +#~ msgid "Hour of Day" +#~ msgstr "Hora del día" + +#~ msgid "Revenue" +#~ msgstr "Ganancia" + +#~ msgid "Forecast" +#~ msgstr "Reiniciar" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "Exportar" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Métricas clave e información procesable" + +#~ msgid "vs previous period" +#~ msgstr "vs periodo anterior" + +#~ msgid "of total" +#~ msgstr "del total" + +#~ msgid "Potential Revenue" +#~ msgstr "Ingresos potenciales" + +#~ msgid "Avg rate:" +#~ msgstr "Tasa promedio:" + +#~ msgid "Trend" +#~ msgstr "Tendencia" + +#~ msgid "active projects" +#~ msgstr "proyectos activos" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Perspectivas y recomendaciones" + +#~ msgid "Cumulative" +#~ msgstr "Acumulativo" + +#~ msgid "Billable Distribution" +#~ msgstr "Distribución facturable" + +#~ msgid "Task Status Overview" +#~ msgstr "Descripción general del estado de la tarea" + +#~ msgid "Tasks Completed" +#~ msgstr "Tareas completadas" + +#~ msgid "In Progress" +#~ msgstr "En curso" + +#~ msgid "To Do" +#~ msgstr "Hacer" + +#~ msgid "Revenue by Project" +#~ msgstr "Ingresos por proyecto" + +#~ msgid "Payments Over Time" +#~ msgstr "Pagos a lo largo del tiempo" + +#~ msgid "Payment Methods" +#~ msgstr "Métodos de pago" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Ingresos vs Pagos" + +#~ msgid "Collection Rate" +#~ msgstr "Tasa de recaudación" + +#~ msgid "Project Completion Rate" +#~ msgstr "Tasa de finalización del proyecto" + +#~ msgid "Billable" +#~ msgstr "facturable" + +#~ msgid "Non-Billable" +#~ msgstr "No facturable" + +#~ msgid "Completed" +#~ msgstr "Terminado" + +#~ msgid "Cancelled" +#~ msgstr "Cancelado" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Tasa de finalización (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Descripción general de información móvil" + +#~ msgid "Daily Avg" +#~ msgstr "Promedio diario" + +#~ msgid "Daily Hours" +#~ msgstr "Horario diario" + +#~ msgid "Top Projects" +#~ msgstr "Proyectos principales" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "Entrada de tiempo" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "horas" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "Aprobar" + +#~ msgid "Reject" +#~ msgstr "Rechazar" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "Aprobado por" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "Publicar comentario" + +#~ msgid "Approval comment" +#~ msgstr "Publicar comentario" + +#~ msgid "Rejection reason" +#~ msgstr "Motivo del rechazo" + +#~ msgid "Track who changed what and when" +#~ msgstr "Seguimiento de quién cambió qué y cuándo" + +#~ msgid "Filters" +#~ msgstr "Filtros" + +#~ msgid "Entity Type" +#~ msgstr "Tipo de entidad" + +#~ msgid "All Types" +#~ msgstr "Todos los tipos" + +#~ msgid "Entity ID" +#~ msgstr "ID de entidad" + +#~ msgid "All Users" +#~ msgstr "Todos los usuarios" + +#~ msgid "Action" +#~ msgstr "Acción" + +#~ msgid "All Actions" +#~ msgstr "Todas las acciones" + +#~ msgid "Updated" +#~ msgstr "Actualizado" + +#~ msgid "Deleted" +#~ msgstr "Eliminado" + +#~ msgid "Time Range" +#~ msgstr "Rango de tiempo" + +#~ msgid "Filter" +#~ msgstr "Filtrar" + +#~ msgid "Timestamp" +#~ msgstr "Marca de tiempo" + +#~ msgid "Entity" +#~ msgstr "Entidad" + +#~ msgid "Field" +#~ msgstr "Campo" + +#~ msgid "Change" +#~ msgstr "Cambiar" + +#~ msgid "Reason" +#~ msgstr "Razón" + +#~ msgid "Change Information" +#~ msgstr "Cambiar información" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "Solicitar información" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "Seguridad" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (autenticación empresarial)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "La contraseña debe tener al menos 8 caracteres" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "Contraseña del portal" + +#~ msgid "Reset your password" +#~ msgstr "Establece tu contraseña" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "Sin nombres de usuario ni correos electrónicos" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "Enviar correo electrónico de prueba" + +#~ msgid "Back to sign in" +#~ msgstr "Volver a administrador" + +#~ msgid "Login" +#~ msgstr "Acceso" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Seguimiento del tiempo. Manténgase organizado." + +#~ msgid "Sign in to your account" +#~ msgstr "Inicia sesión en tu cuenta" + +#~ msgid "Demo credentials" +#~ msgstr "Detalles del artículo" + +#~ msgid "Forgot your password?" +#~ msgstr "Establece tu contraseña" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "Método de autenticación" + +#~ msgid "Sign in" +#~ msgstr "Iniciar sesión" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "Consejo: Ingrese un nuevo nombre de usuario para crear su cuenta." + +#~ msgid "Or continue with" +#~ msgstr "O continuar con" + +#~ msgid "Single Sign-On" +#~ msgstr "Inicio de sesión único" + +#~ msgid "Edit Profile" +#~ msgstr "Editar perfil" + +#~ msgid "Member Since" +#~ msgstr "Miembro desde" + +#~ msgid "Reset password" +#~ msgstr "Establecer contraseña" + +#~ msgid "Choose a new password" +#~ msgstr "Establecer contraseña" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Establezca una contraseña para su cuenta del portal del cliente" + +#~ msgid "New password" +#~ msgstr "Establecer contraseña" + +#~ msgid "At least 8 characters" +#~ msgstr "La contraseña debe tener al menos 8 caracteres" + +#~ msgid "Confirm password" +#~ msgstr "confirmar Contraseña" + +#~ msgid "Repeat your new password" +#~ msgstr "Establece tu contraseña" + +#~ msgid "Update password" +#~ msgstr "Establecer contraseña" + +#~ msgid "Enter authentication code" +#~ msgstr "Método de autenticación" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "Código" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "El acceso al portal del cliente no está habilitado para su cuenta." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "Desactivado" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Código generado" + +#~ msgid "Enable 2FA" +#~ msgstr "Activado" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Alertas y pronósticos de presupuesto" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "" +#~ "Supervisar los presupuestos de los " +#~ "proyectos y pronosticar su finalización." + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Alertas no reconocidas" + +#~ msgid "Critical Alerts" +#~ msgstr "Alertas críticas" + +#~ msgid "Projects with Budgets" +#~ msgstr "Proyectos con Presupuestos" + +#~ msgid "Warning Alerts" +#~ msgstr "Alertas de advertencia" + +#~ msgid "Active Alerts" +#~ msgstr "Alertas activas" + +#~ msgid "Acknowledge" +#~ msgstr "Reconocer" + +#~ msgid "Project Budget Status" +#~ msgstr "Estado del presupuesto del proyecto" + +#~ msgid "Budget" +#~ msgstr "Presupuesto" + +#~ msgid "Consumed" +#~ msgstr "Consumado" + +#~ msgid "Remaining" +#~ msgstr "Restante" + +#~ msgid "Progress" +#~ msgstr "Progreso" + +#~ msgid "over" +#~ msgstr "encima" + +#~ msgid "Over Budget" +#~ msgstr "Por encima del presupuesto" + +#~ msgid "Critical" +#~ msgstr "Crítico" + +#~ msgid "Healthy" +#~ msgstr "Saludable" + +#~ msgid "No projects with budgets found" +#~ msgstr "No se encontraron proyectos con presupuestos." + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Alerta reconocida exitosamente" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "No se pudo reconocer la alerta" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Análisis y previsión presupuestaria" + +#~ msgid "Back to Dashboard" +#~ msgstr "Volver al panel" + +#~ msgid "View Project" +#~ msgstr "Ver proyecto" + +#~ msgid "Total Budget" +#~ msgstr "Presupuesto total" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Análisis de tasa de quemado" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Tasa de quema diaria" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Tasa de quema semanal" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Tasa de quema mensual" + +#~ msgid "Period Total" +#~ msgstr "Total del período" + +#~ msgid "Based on last" +#~ msgstr "Basado en el último" + +#~ msgid "days" +#~ msgstr "días" + +#~ msgid "No burn rate data available" +#~ msgstr "No hay datos de tasa de grabación disponibles" + +#~ msgid "Completion Estimate" +#~ msgstr "Estimación de finalización" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Fecha estimada de finalización" + +#~ msgid "days remaining" +#~ msgstr "días restantes" + +#~ msgid "Confidence Level" +#~ msgstr "Nivel de confianza" + +#~ msgid "No completion estimate available" +#~ msgstr "No hay estimación de finalización disponible" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Análisis de tendencias de costos" + +#~ msgid "Average" +#~ msgstr "Promedio" + +#~ msgid "Resource Allocation" +#~ msgstr "Asignación de recursos" + +#~ msgid "Total Cost" +#~ msgstr "Costo total" + +#~ msgid "Hourly Rate" +#~ msgstr "Tarifa por hora" + +#~ msgid "Team Member" +#~ msgstr "Miembro del equipo" + +#~ msgid "Cost" +#~ msgstr "Costo" + +#~ msgid "Hours %" +#~ msgstr "Horas %" + +#~ msgid "Cost %" +#~ msgstr "Costo %" + +#~ msgid "Entries" +#~ msgstr "Entradas" + +#~ msgid "Date & Time" +#~ msgstr "Fecha y hora" + +#~ msgid "Location" +#~ msgstr "Ubicación" + +#~ msgid "Reminder" +#~ msgstr "Recordatorio" + +#~ msgid "minutes before" +#~ msgstr "minutos antes" + +#~ msgid "hours before" +#~ msgstr "horas antes" + +#~ msgid "days before" +#~ msgstr "días antes" + +#~ msgid "Recurring" +#~ msgstr "Periódico" + +#~ msgid "Until" +#~ msgstr "Hasta" + +#~ msgid "Last Updated" +#~ msgstr "Última actualización" + +#~ msgid "Back to Calendar" +#~ msgstr "Volver al calendario" + +#~ msgid "Delete Event" +#~ msgstr "Eliminar evento" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "¿Estás seguro de que deseas eliminar " +#~ "este evento? Esta acción no se " +#~ "puede deshacer." + +#~ msgid "Edit Event" +#~ msgstr "Editar evento" + +#~ msgid "New Event" +#~ msgstr "Nuevo evento" + +#~ msgid "Title" +#~ msgstr "Título" + +#~ msgid "Start Date" +#~ msgstr "Fecha de inicio" + +#~ msgid "Start Time" +#~ msgstr "Hora de inicio" + +#~ msgid "End Date" +#~ msgstr "Fecha de finalización" + +#~ msgid "End Time" +#~ msgstr "Hora de finalización" + +#~ msgid "All Day Event" +#~ msgstr "Evento de todo el día" + +#~ msgid "Event Type" +#~ msgstr "Tipo de evento" + +#~ msgid "Meeting" +#~ msgstr "Reunión" + +#~ msgid "Appointment" +#~ msgstr "Cita" + +#~ msgid "Deadline" +#~ msgstr "Fecha límite" + +#~ msgid "-- None --" +#~ msgstr "-- Ninguno --" + +#~ msgid "No reminder" +#~ msgstr "Sin recordatorio" + +#~ msgid "5 minutes before" +#~ msgstr "5 minutos antes" + +#~ msgid "15 minutes before" +#~ msgstr "15 minutos antes" + +#~ msgid "30 minutes before" +#~ msgstr "30 minutos antes" + +#~ msgid "1 hour before" +#~ msgstr "1 hora antes" + +#~ msgid "1 day before" +#~ msgstr "1 dia antes" + +#~ msgid "Color" +#~ msgstr "Color" + +#~ msgid "Choose a color for this event" +#~ msgstr "Elige un color para este evento" + +#~ msgid "Private Event" +#~ msgstr "Evento Privado" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Los eventos privados solo son visibles para ti" + +#~ msgid "Recurring Event" +#~ msgstr "Evento recurrente" + +#~ msgid "This is a recurring event" +#~ msgstr "Este es un evento recurrente" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Patrón de recurrencia" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Utilice el formato RRULE (por ejemplo, FREQ=SEMANAL;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Fecha de finalización de la recurrencia" + +#~ msgid "Update Event" +#~ msgstr "Evento de actualización" + +#~ msgid "Create Event" +#~ msgstr "Crear evento" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Ver y administrar sus eventos, tareas y entradas de tiempo" + +#~ msgid "Day" +#~ msgstr "Día" + +#~ msgid "Week" +#~ msgstr "Semana" + +#~ msgid "Month" +#~ msgstr "Mes" + +#~ msgid "Today" +#~ msgstr "Hoy" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "Cargando calendario..." + +#~ msgid "Event Details" +#~ msgstr "Detalles del evento" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "Editar nota del cliente" + +#~ msgid "Back to Client" +#~ msgstr "Volver al Cliente" + +#~ msgid "Client:" +#~ msgstr "Cliente:" + +#~ msgid "Created on" +#~ msgstr "Creado el" + +#~ msgid "Last edited on" +#~ msgstr "Última edición el" + +#~ msgid "Note Content" +#~ msgstr "Contenido de la nota" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Nota interna visible solo para tu equipo." + +#~ msgid "Mark as important" +#~ msgstr "Marcar como importante" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "Portal del cliente" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "Ver detalles" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "Pendiente" + +#~ msgid "Approved" +#~ msgstr "Aprobado" + +#~ msgid "Rejected" +#~ msgstr "Rechazado" + +#~ msgid "All" +#~ msgstr "Todo" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "Ver detalles" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "Estado de aprobación" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Aprobación solicitada" + +#~ msgid "An approval was updated." +#~ msgstr "No se actualizaron proyectos" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "Bienvenido, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "Personalizar atajos" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "Estadística" + +#~ msgid "Pending actions" +#~ msgstr "Secciones de administración" + +#~ msgid "Recent invoices" +#~ msgstr "Facturas recientes" + +#~ msgid "Recent time entries" +#~ msgstr "Entradas de tiempo recientes" + +#~ msgid "Select at least one widget." +#~ msgstr "Seleccione un cliente..." + +#~ msgid "Failed to save." +#~ msgstr "No se pudo detener el cronómetro" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "Ir al panel" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "Volver" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "Detalles de la factura" + +#~ msgid "Issue Date" +#~ msgstr "Fecha de asunto" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "Esta factura tiene %(days)d días de retraso." + +#~ msgid "Invoice Items" +#~ msgstr "Artículos de factura" + +#~ msgid "Quantity" +#~ msgstr "Cantidad" + +#~ msgid "Unit Price" +#~ msgstr "Precio unitario" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "Volver a Facturas" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "Facturas para %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "No pagado" + +#~ msgid "Overdue" +#~ msgstr "Atrasado" + +#~ msgid "Amount" +#~ msgstr "Cantidad" + +#~ msgid "days overdue" +#~ msgstr "días de retraso" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "Prioridad" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "Asignado a" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "Abierto" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "Iniciar sesión en el portal del cliente" + +#~ msgid "View your projects and invoices" +#~ msgstr "Ver tus proyectos y facturas" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Iniciar sesión en el Portal del Cliente" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "Introduce las credenciales de tu portal" +#~ " para acceder a tus proyectos y " +#~ "facturas" + +#~ msgid "portal_username" +#~ msgstr "nombre_usuario_portal" + +#~ msgid "Enter your password" +#~ msgstr "Introduce tu contraseña" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "Bajo" + +#~ msgid "Medium" +#~ msgstr "Medio" + +#~ msgid "High" +#~ msgstr "Alto" + +#~ msgid "Urgent" +#~ msgstr "Urgente" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "Comentarios" + +#~ msgid "Add Comment" +#~ msgstr "Agregar comentario" + +#~ msgid "Your Comment" +#~ msgstr "Tu comentario" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "Publicar comentario" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "Volver a Proyectos" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "Proyectos para %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "Detalles de la cotización" + +#~ msgid "Valid Until" +#~ msgstr "Válido hasta" + +#~ msgid "This quote has expired." +#~ msgstr "Esta cotización ha caducado." + +#~ msgid "Quote Items" +#~ msgstr "Artículos de cotización" + +#~ msgid "SKU" +#~ msgstr "SKU" + +#~ msgid "Terms & Conditions" +#~ msgstr "Términos y condiciones" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "Aceptar cotización" + +#~ msgid "Reject Quote" +#~ msgstr "Rechazar cotización" + +#~ msgid "Back to Quotes" +#~ msgstr "Volver a Cotizaciones" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "Cotizaciones para %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "Venció" + +#~ msgid "No quotes found." +#~ msgstr "No se encontraron comillas." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "Código de proyecto" + +#~ msgid "Est. / Budget" +#~ msgstr "Por encima del presupuesto" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "Resumen" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "Monto total" + +#~ msgid "No tasks yet." +#~ msgstr "No hay tareas seleccionadas" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Ninguna actividad en los últimos 30 días." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "Establecer contraseña" + +#~ msgid "Set your password to get started" +#~ msgstr "Establece tu contraseña para comenzar" + +#~ msgid "Set Your Password" +#~ msgstr "Establece tu contraseña" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Establezca una contraseña para su cuenta del portal del cliente" + +#~ msgid "Confirm Password" +#~ msgstr "confirmar Contraseña" + +#~ msgid "Confirm your password" +#~ msgstr "Confirma tu contraseña" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "Entradas de tiempo para %(client_name)s proyectos" + +#~ msgid "All Projects" +#~ msgstr "Todos los proyectos" + +#~ msgid "From Date" +#~ msgstr "Desde la fecha" + +#~ msgid "To Date" +#~ msgstr "Hasta la fecha" + +#~ msgid "Total entries" +#~ msgstr "Entradas totales" + +#~ msgid "Total hours" +#~ msgstr "Horas totales" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "Facturas recientes" + +#~ msgid "View All" +#~ msgstr "Ver todo" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "Facturas totales" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "Entradas de tiempo recientes" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "Exportar a CSV" + +#~ msgid "Create Client" +#~ msgstr "Crear cliente" + +#~ msgid "Back to Clients" +#~ msgstr "Volver a Clientes" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" +#~ "Agregue un nuevo cliente para gestionar" +#~ " proyectos y facturación relacionados." + +#~ msgid "Enter client name" +#~ msgstr "Introduzca el nombre del cliente" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Tarifa por hora predeterminada" + +#~ msgid "e.g. 75.00" +#~ msgstr "p.ej. 75.00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Esta tarifa se completará automáticamente " +#~ "al crear proyectos para este cliente." + +#~ msgid "Supports Markdown" +#~ msgstr "Admite rebajas" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Breve descripción del cliente o alcance del proyecto." + +#~ msgid "Contact Person" +#~ msgstr "Persona de contacto" + +#~ msgid "Primary contact name" +#~ msgstr "Nombre del contacto principal" + +#~ msgid "contact@client.com" +#~ msgstr "contacto@cliente.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Horas Prepagas Mensuales" + +#~ msgid "e.g. 50" +#~ msgstr "p.ej. 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "Déjelo en blanco si este cliente no tiene asignación prepago." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Día de reinicio prepago" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Día del mes en que se restablecen las horas prepagas (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Dirección del cliente" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "Elija un nombre claro y descriptivo para la organización cliente." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Establezca la tarifa por hora estándar" +#~ " para este cliente. Esto se " +#~ "completará automáticamente al crear nuevos " +#~ "proyectos." + +#~ msgid "Contact Information" +#~ msgstr "Información del contacto" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "" +#~ "Agregue detalles de contacto para " +#~ "facilitar la comunicación y el " +#~ "mantenimiento de registros." + +#~ msgid "Prepaid Hours" +#~ msgstr "Horas prepagas" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Configure las horas incluidas mensuales " +#~ "y el día de reinicio si este " +#~ "cliente tiene un anticipo o un " +#~ "paquete prepago." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "" +#~ "Proporcione contexto sobre la relación " +#~ "con el cliente o los tipos de " +#~ "proyectos típicos." + +#~ msgid "Edit Client" +#~ msgstr "Editar cliente" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Habilite el acceso al portal para " +#~ "este cliente. Los clientes pueden " +#~ "iniciar sesión con sus propias " +#~ "credenciales para ver proyectos, facturas " +#~ "y entradas de tiempo." + +#~ msgid "Enable Client Portal" +#~ msgstr "Habilitar el portal del cliente" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "Nombre de usuario del portal" + +#~ msgid "Unique username for portal login" +#~ msgstr "Nombre de usuario único para iniciar sesión en el portal" + +#~ msgid "Portal Password" +#~ msgstr "Contraseña del portal" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "Déjelo vacío para mantener la contraseña actual" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "" +#~ "Establezca una nueva contraseña o déjela" +#~ " vacía para mantenerla actualizada" + +#~ msgid "Current portal username" +#~ msgstr "Nombre de usuario actual del portal" + +#~ msgid "Update Client" +#~ msgstr "Actualizar cliente" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Enviar correo electrónico de configuración de contraseña" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Envíe un correo electrónico a %(email)s" +#~ " con un enlace para establecer su " +#~ "contraseña del portal." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "Se requiere una dirección de correo " +#~ "electrónico para enviar el correo " +#~ "electrónico de configuración de contraseña." +#~ " Configure la dirección de correo " +#~ "electrónico del cliente arriba." + +#~ msgid "Client Statistics" +#~ msgstr "Estadísticas de clientes" + +#~ msgid "Est. Total Cost" +#~ msgstr "Est. Costo Total" + +#~ msgid "Filter Clients" +#~ msgstr "Filtrar clientes" + +#~ msgid "Toggle Filters" +#~ msgstr "Alternar filtros" + +#~ msgid "Hide Filters" +#~ msgstr "Ocultar filtros" + +#~ msgid "Show Filters" +#~ msgstr "Mostrar filtros" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "No se encontraron entradas de tiempo no facturadas para este proyecto." + +#~ msgid "No unbilled time" +#~ msgstr "Entradas de tiempo no facturadas" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Artículos de factura" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "¿Marcar cliente como inactivo?" + +#~ msgid "Change Client Status" +#~ msgstr "Cambiar el estado del cliente" + +#~ msgid "Mark Inactive" +#~ msgstr "Marcar inactivo" + +#~ msgid "Activate client?" +#~ msgstr "¿Activar cliente?" + +#~ msgid "Activate Client" +#~ msgstr "Activar Cliente" + +#~ msgid "Delete Client" +#~ msgstr "Eliminar cliente" + +#~ msgid "Client details and associated projects." +#~ msgstr "Proyectos totales y activos" + +#~ msgid "Manage" +#~ msgstr "Administrar" + +#~ msgid "Primary" +#~ msgstr "Primario" + +#~ msgid "more contact(s)" +#~ msgstr "más contacto(s)" + +#~ msgid "No contacts yet" +#~ msgstr "Aún no hay contactos" + +#~ msgid "Add Contact" +#~ msgstr "Agregar contacto" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Información de contacto heredada" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "El plan incluye %(hours)s de horas " +#~ "por ciclo. Se reinicia el día " +#~ "%(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "Inicio del ciclo actual" + +#~ msgid "Remaining hours" +#~ msgstr "Horas restantes" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "Consumed this cycle" +#~ msgstr "Consumido este ciclo" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "Cliente visible" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "Archivado" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "Notas internas" + +#~ msgid "Add Note" +#~ msgstr "Agregar nota" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Añadir una nota interna sobre este cliente..." + +#~ msgid "Save Note" +#~ msgstr "Guardar nota" + +#~ msgid "edited" +#~ msgstr "editado" + +#~ msgid "Important" +#~ msgstr "Importante" + +#~ msgid "Unmark" +#~ msgstr "Desmarcar" + +#~ msgid "Mark Important" +#~ msgstr "Marcar importante" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Aún no hay notas. Agregue una nota" +#~ " para realizar un seguimiento de " +#~ "información importante sobre este cliente." + +#~ msgid "Estimated total" +#~ msgstr "Valor estimado" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Crear factura" + +#~ msgid "Create invoice" +#~ msgstr "Crear factura" + +#~ msgid "Could not create invoice." +#~ msgstr "Crear factura" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "¿Estás seguro de que deseas eliminar esta nota?" + +#~ msgid "Delete Note" +#~ msgstr "Eliminar nota" + +#~ msgid "Edited on" +#~ msgstr "Editado el" + +#~ msgid "Reply" +#~ msgstr "Responder" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "Escribe tu respuesta..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Comparta sus pensamientos, actualizaciones o preguntas..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "Puede utilizar saltos de línea para dar formato a su comentario." + +#~ msgid "Add Image" +#~ msgstr "Agregar imagen" + +#~ msgid "No comments yet" +#~ msgstr "Aún no hay comentarios" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "Inicie la conversación agregando el primer comentario." + +#~ msgid "Add First Comment" +#~ msgstr "Agregar primer comentario" + +#~ msgid "Edit Comment" +#~ msgstr "Editar comentario" + +#~ msgid "Back" +#~ msgstr "Atrás" + +#~ msgid "Editing comment on:" +#~ msgstr "Editando comentario sobre:" + +#~ msgid "Originally posted on" +#~ msgstr "Publicado originalmente en" + +#~ msgid "Comment Content" +#~ msgstr "Contenido del comentario" + +#~ msgid "All Activities" +#~ msgstr "Todas las actividades" + +#~ msgid "Time Templates" +#~ msgstr "Plantillas de tiempo" + +#~ msgid "No recent activity" +#~ msgstr "Ninguna actividad reciente" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "La actividad aparecerá aquí mientras trabajas." + +#~ msgid "Load More" +#~ msgstr "Cargar más" + +#~ msgid "Failed to load activities" +#~ msgstr "No se pudieron cargar las actividades" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "Seleccione un cliente..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "Hecho" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "Centro de ayuda de TimeTracker" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "Hogar" + +#~ msgid "Pagination" +#~ msgstr "Paginación de mis tareas." + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "Llamar" + +#~ msgid "Message" +#~ msgstr "Mensaje" + +#~ msgid "Direction" +#~ msgstr "Dirección" + +#~ msgid "Outbound" +#~ msgstr "saliente" + +#~ msgid "Inbound" +#~ msgstr "Entrante" + +#~ msgid "Subject" +#~ msgstr "Sujeto" + +#~ msgid "Scheduled" +#~ msgstr "Programado" + +#~ msgid "Follow-up Date" +#~ msgstr "Fecha de seguimiento" + +#~ msgid "Content/Notes" +#~ msgstr "Contenido/Notas" + +#~ msgid "Save Communication" +#~ msgstr "Guardar comunicación" + +#~ msgid "First Name" +#~ msgstr "Nombre de pila" + +#~ msgid "Last Name" +#~ msgstr "Apellido" + +#~ msgid "Mobile" +#~ msgstr "Móvil" + +#~ msgid "Department" +#~ msgstr "Departamento" + +#~ msgid "Contact" +#~ msgstr "Contacto" + +#~ msgid "Billing" +#~ msgstr "Facturación" + +#~ msgid "Technical" +#~ msgstr "Técnico" + +#~ msgid "Set as primary contact" +#~ msgstr "Establecer como contacto principal" + +#~ msgid "Tags" +#~ msgstr "Etiquetas" + +#~ msgid "Save Contact" +#~ msgstr "Guardar contacto" + +#~ msgid "Set Primary" +#~ msgstr "Establecer primario" + +#~ msgid "No contacts found" +#~ msgstr "No se encontraron contactos" + +#~ msgid "Add First Contact" +#~ msgstr "Agregar primer contacto" + +#~ msgid "Primary Contact" +#~ msgstr "Contacto principal" + +#~ msgid "Communication History" +#~ msgstr "Historia de la comunicación" + +#~ msgid "Add Communication" +#~ msgstr "Agregar comunicación" + +#~ msgid "No communications recorded" +#~ msgstr "No se registraron comunicaciones" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "Activar" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "Nombre de la oferta" + +#~ msgid "Select Client" +#~ msgstr "Seleccionar Cliente" + +#~ msgid "Select Contact" +#~ msgstr "Seleccione Contacto" + +#~ msgid "Stage" +#~ msgstr "Escenario" + +#~ msgid "Deal Value" +#~ msgstr "Valor de la oferta" + +#~ msgid "Win Probability" +#~ msgstr "Probabilidad de ganar" + +#~ msgid "Expected Close Date" +#~ msgstr "Fecha de cierre prevista" + +#~ msgid "Related Quote" +#~ msgstr "Cita relacionada" + +#~ msgid "Select Quote" +#~ msgstr "Seleccionar Cotización" + +#~ msgid "Save Deal" +#~ msgstr "Guardar oferta" + +#~ msgid "Won" +#~ msgstr "Ganado" + +#~ msgid "Lost" +#~ msgstr "Perdido" + +#~ msgid "All Stages" +#~ msgstr "Todas las etapas" + +#~ msgid "Value" +#~ msgstr "Valor" + +#~ msgid "Probability" +#~ msgstr "Probabilidad" + +#~ msgid "Expected Close" +#~ msgstr "Cierre esperado" + +#~ msgid "No deals found" +#~ msgstr "No se encontraron ofertas" + +#~ msgid "Create First Deal" +#~ msgstr "Crear primer trato" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "Proyecto relacionado" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "Historial de goles" + +#~ msgid "View full history" +#~ msgstr "Ver todos los detalles" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "Fuiste mencionado" + +#~ msgid "View Task & Reply" +#~ msgstr "Ver tarea y responder" + +#~ msgid "Invoice" +#~ msgstr "Factura" + +#~ msgid "Invoice Overdue" +#~ msgstr "Factura vencida" + +#~ msgid "View Invoice" +#~ msgstr "Ver factura" + +#~ msgid "Quote" +#~ msgstr "Cita" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Aprobación de cotización rechazada" + +#~ msgid "View Quote" +#~ msgstr "Ver cotización" + +#~ msgid "Approval Requested" +#~ msgstr "Aprobación solicitada" + +#~ msgid "Review Quote" +#~ msgstr "Revisar cotización" + +#~ msgid "Quote Approved" +#~ msgstr "Cotización aprobada" + +#~ msgid "Quote Expired" +#~ msgstr "Cotización caducada" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "La cotización vencerá pronto" + +#~ msgid "Quote Sent" +#~ msgstr "Cotización enviada" + +#~ msgid "Task Assignment" +#~ msgstr "Asignación de tareas" + +#~ msgid "View Task" +#~ msgstr "Ver tarea" + +#~ msgid "Test Details" +#~ msgstr "Detalles de la prueba" + +#~ msgid "Your Weekly Summary" +#~ msgstr "Su resumen semanal" + +#~ msgid "400 Bad Request" +#~ msgstr "400 Solicitud incorrecta" + +#~ msgid "Invalid Request" +#~ msgstr "Solicitud no válida" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "La solicitud que realizó no es " +#~ "válida o contiene errores. Esto podría" +#~ " deberse a:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Datos de formulario faltantes o no válidos" + +#~ msgid "Malformed request parameters" +#~ msgstr "Parámetros de solicitud mal formados" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "No tienes permiso para acceder a este recurso. Esto podría deberse a:" + +#~ msgid "Insufficient privileges" +#~ msgstr "Privilegios insuficientes" + +#~ msgid "Not logged in" +#~ msgstr "No iniciado sesión" + +#~ msgid "Resource access restrictions" +#~ msgstr "Restricciones de acceso a recursos" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "Algo salió mal por nuestra parte. Inténtelo de nuevo más tarde." + +#~ msgid "Try Again" +#~ msgstr "Intentar otra vez" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Se produjo un error al procesar su solicitud." + +#~ msgid "Refresh Page" +#~ msgstr "Actualizar página" + +#~ msgid "Go to Login" +#~ msgstr "Ir a Iniciar sesión" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "por ejemplo, viajes, comidas, material de oficina" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "por ejemplo, VIAJES, COMIDAS" + +#~ msgid "Brief description of this category..." +#~ msgstr "Breve descripción de esta categoría..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "por ejemplo, fa-avión, fa-utensilios" + +#~ msgid "e.g., 19.00" +#~ msgstr "por ejemplo, 19.00" + +#~ msgid "Category" +#~ msgstr "Categoría" + +#~ msgid "Basic Information" +#~ msgstr "Información básica" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "por ejemplo, vuelo a Berlín" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Detalles adicionales sobre el gasto..." + +#~ msgid "Select Category" +#~ msgstr "Categoría" + +#~ msgid "Amount Details" +#~ msgstr "Detalles de pago" + +#~ msgid "Association" +#~ msgstr "Ubicación" + +#~ msgid "Payment Details" +#~ msgstr "Detalles de pago" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "por ejemplo, Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "información adicional" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Número de recibo/factura" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "por ejemplo, INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "por ejemplo, conferencia, reunión con clientes, urgente" + +#~ msgid "Additional notes..." +#~ msgstr "Notas adicionales..." + +#~ msgid "Options" +#~ msgstr "Opcional" + +#~ msgid "Filter Expenses" +#~ msgstr "Filtrar gastos" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Eliminar gastos seleccionados" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Cambiar estado de gastos seleccionados" + +#~ msgid "Associated With" +#~ msgstr "Asociado con" + +#~ msgid "Reject Expense" +#~ msgstr "Rechazar Gasto" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Explique por qué se rechaza este gasto..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "¿Estás seguro de que deseas eliminar este gasto?" + +#~ msgid "Delete Expense" +#~ msgstr "Eliminar Gasto" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "Importar/exportar datos" + +#~ msgid "Import/Export" +#~ msgstr "Importar/Exportar" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Importe datos de otros rastreadores de" +#~ " tiempo o exporte sus datos para " +#~ "cumplir con el RGPD y realizar " +#~ "copias de seguridad" + +#~ msgid "Import Data" +#~ msgstr "Importar datos" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Importar entradas de tiempo desde un archivo CSV" + +#~ msgid "Choose CSV File" +#~ msgstr "Elija el archivo CSV" + +#~ msgid "Download Template" +#~ msgstr "Descargar plantilla" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Importar desde Toggl Track" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Importar entradas de tiempo desde Toggl Track" + +#~ msgid "Import from Toggl" +#~ msgstr "Importar desde Toggl" + +#~ msgid "Import from Harvest" +#~ msgstr "Importar desde cosecha" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Importar entradas de tiempo desde Harvest" + +#~ msgid "Restore from Backup" +#~ msgstr "Restaurar desde copia de seguridad" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "Historial de importación" + +#~ msgid "Export Data" +#~ msgstr "Exportar datos" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Exportación completa de datos (GDPR)" + +#~ msgid "Export all your personal data" +#~ msgstr "Exporta todos tus datos personales" + +#~ msgid "Export as JSON" +#~ msgstr "Exportar como JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "Exportar como ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "Exportación filtrada" + +#~ msgid "Export specific data with filters" +#~ msgstr "Exportar datos específicos con filtros" + +#~ msgid "Export with Filters" +#~ msgstr "Exportar con filtros" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "Crear una copia de seguridad completa de la base de datos" + +#~ msgid "Export History" +#~ msgstr "Historial de exportación" + +#~ msgid "API Token" +#~ msgstr "Ficha API" + +#~ msgid "Workspace ID" +#~ msgstr "ID del espacio de trabajo" + +#~ msgid "Import" +#~ msgstr "Importar" + +#~ msgid "Account ID" +#~ msgstr "ID de cuenta" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "Integración horaria" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "El año pasado" + +#~ msgid "Last status" +#~ msgstr "Estado de actualización" + +#~ msgid "Credentials" +#~ msgstr "Detalles" + +#~ msgid "Last error" +#~ msgstr "El año pasado" + +#~ msgid "Partial" +#~ msgstr "Parcial" + +#~ msgid "Needs refresh" +#~ msgstr "Refrescar" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "Crear token API" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "Crear token API" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "Dejar vacío para mantener actualizado" + +#~ msgid "Enter API secret" +#~ msgstr "Secreto regenerado" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "Artículo en existencia" + +#~ msgid "Select Item" +#~ msgstr "Seleccionar artículo" + +#~ msgid "Warehouse" +#~ msgstr "Depósito" + +#~ msgid "Select Warehouse" +#~ msgstr "Seleccionar Almacén" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Cantidad de ajuste" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Utilice valores positivos para aumentar " +#~ "el stock, valores negativos para " +#~ "disminuir" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "" +#~ "por ejemplo, corrección del recuento " +#~ "físico, daños, elementos encontrados" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Detalles adicionales sobre este ajuste" + +#~ msgid "Record Adjustment" +#~ msgstr "Ajuste de registros" + +#~ msgid "All Warehouses" +#~ msgstr "Todos los almacenes" + +#~ msgid "All Items" +#~ msgstr "Todos los artículos" + +#~ msgid "Date From" +#~ msgstr "Fecha desde" + +#~ msgid "Date To" +#~ msgstr "Fecha hasta" + +#~ msgid "Item" +#~ msgstr "Artículo" + +#~ msgid "No adjustments found." +#~ msgstr "No se encontraron ajustes." + +#~ msgid "On Hand" +#~ msgstr "En mano" + +#~ msgid "Reorder Point" +#~ msgstr "Punto de reorden" + +#~ msgid "Shortfall" +#~ msgstr "Déficit" + +#~ msgid "Reorder Qty" +#~ msgstr "Cantidad de reorden" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "" +#~ "Sin alertas de stock bajo. Todos " +#~ "los artículos están por encima del " +#~ "punto de reorden." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "" +#~ "Utilice valores positivos para adiciones " +#~ "y negativos para eliminaciones." + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "Tipo de movimiento" + +#~ msgid "Return" +#~ msgstr "Devolver" + +#~ msgid "Waste" +#~ msgstr "Desperdiciar" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "por ejemplo, corrección del recuento físico" + +#~ msgid "Record Movement" +#~ msgstr "Movimiento récord" + +#~ msgid "Reference Type" +#~ msgstr "Tipo de referencia" + +#~ msgid "Manual" +#~ msgstr "Manual" + +#~ msgid "Unit Cost" +#~ msgstr "Costo unitario" + +#~ msgid "Reference" +#~ msgstr "Referencia" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "No se encontraron movimientos de acciones." + +#~ msgid "Supplier" +#~ msgstr "Proveedor" + +#~ msgid "Select Supplier" +#~ msgstr "Seleccionar Proveedor" + +#~ msgid "Order Date" +#~ msgstr "Fecha del pedido" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Fecha de entrega prevista" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Notas visibles para el proveedor" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Notas internas (no visibles para el proveedor)" + +#~ msgid "Items" +#~ msgstr "Elementos" + +#~ msgid "Add Item" +#~ msgstr "Agregar artículo" + +#~ msgid "Qty" +#~ msgstr "Cantidad" + +#~ msgid "Supplier SKU" +#~ msgstr "SKU del proveedor" + +#~ msgid "Create Purchase Order" +#~ msgstr "Crear orden de compra" + +#~ msgid "Draft" +#~ msgstr "Borrador" + +#~ msgid "Sent" +#~ msgstr "Enviado" + +#~ msgid "Confirmed" +#~ msgstr "Confirmado" + +#~ msgid "Received" +#~ msgstr "Recibió" + +#~ msgid "All Suppliers" +#~ msgstr "Todos los proveedores" + +#~ msgid "PO Number" +#~ msgstr "Número de orden de compra" + +#~ msgid "Expected Delivery" +#~ msgstr "Entrega esperada" + +#~ msgid "No purchase orders found." +#~ msgstr "No se encontraron órdenes de compra." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "¿Está seguro de que desea cancelar esta orden de compra?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "¿Está seguro de que desea eliminar esta orden de compra?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Detalles de la orden de compra" + +#~ msgid "Received Date" +#~ msgstr "Fecha de recepción" + +#~ msgid "Quantity Ordered" +#~ msgstr "Cantidad pedida" + +#~ msgid "Quantity Received" +#~ msgstr "Cantidad recibida" + +#~ msgid "Line Total" +#~ msgstr "Total de línea" + +#~ msgid "Shipping" +#~ msgstr "Envío" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Recibir orden de compra" + +#~ msgid "Mark as Received" +#~ msgstr "Marcar como recibido" + +#~ msgid "No items in this purchase order." +#~ msgstr "No hay artículos en esta orden de compra." + +#~ msgid "Total Items" +#~ msgstr "Artículos totales" + +#~ msgid "Total Warehouses" +#~ msgstr "Almacenes totales" + +#~ msgid "Total Inventory Value" +#~ msgstr "Valor total del inventario" + +#~ msgid "Low Stock Items" +#~ msgstr "Artículos con pocas existencias" + +#~ msgid "Available Reports" +#~ msgstr "Informes disponibles" + +#~ msgid "Stock Valuation" +#~ msgstr "Valoración de acciones" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Ver el valor del inventario por almacén" + +#~ msgid "Movement History" +#~ msgstr "Historia del movimiento" + +#~ msgid "Detailed movement log" +#~ msgstr "Registro de movimiento detallado" + +#~ msgid "Turnover Analysis" +#~ msgstr "Análisis de facturación" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Tasas de rotación de inventario" + +#~ msgid "Low Stock Report" +#~ msgstr "Informe de stock bajo" + +#~ msgid "Items below reorder point" +#~ msgstr "Artículos por debajo del punto de reorden" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "Se encontraron %(count)s artículos por debajo de su punto de reorden." + +#~ msgid "Quantity On Hand" +#~ msgstr "Cantidad disponible" + +#~ msgid "Reorder Quantity" +#~ msgstr "Cantidad de reorden" + +#~ msgid "Create PO" +#~ msgstr "Crear orden de compra" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Todos los niveles de existencias son buenos" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Ningún artículo está actualmente por debajo de su punto de reorden." + +#~ msgid "No movements found." +#~ msgstr "No se encontraron movimientos." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "La tasa de rotación indica cuántas " +#~ "veces se vende y reemplaza el " +#~ "inventario en un año. Las tasas " +#~ "más altas indican artículos que se " +#~ "mueven más rápido." + +#~ msgid "Total Sold" +#~ msgstr "Total vendido" + +#~ msgid "Avg Stock Level" +#~ msgstr "Nivel de existencias promedio" + +#~ msgid "Turnover Rate" +#~ msgstr "Tasa de rotación" + +#~ msgid "Fast Moving" +#~ msgstr "Movimiento rápido" + +#~ msgid "Normal" +#~ msgstr "Normal" + +#~ msgid "Slow Moving" +#~ msgstr "movimiento lento" + +#~ msgid "Very Slow" +#~ msgstr "muy lento" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "No se encontraron datos de ventas para el período seleccionado." + +#~ msgid "Inventory Valuation" +#~ msgstr "Valoración de inventario" + +#~ msgid "Total Value" +#~ msgstr "Valor Total" + +#~ msgid "No items found with cost information." +#~ msgstr "No se encontraron artículos con información de costos." + +#~ msgid "Reserved" +#~ msgstr "Reservado" + +#~ msgid "Fulfilled" +#~ msgstr "Cumplido" + +#~ msgid "Reserved At" +#~ msgstr "Reservado en" + +#~ msgid "Expires At" +#~ msgstr "Vence en" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "¿Cumplir con esta reserva?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "¿Cancelar esta reserva?" + +#~ msgid "No reservations found." +#~ msgstr "No se encontraron reservas." + +#~ msgid "Unit" +#~ msgstr "Unidad" + +#~ msgid "Default Cost" +#~ msgstr "Costo predeterminado" + +#~ msgid "Default Price" +#~ msgstr "Precio predeterminado" + +#~ msgid "Image URL" +#~ msgstr "URL de la imagen" + +#~ msgid "Track Inventory" +#~ msgstr "Seguimiento del inventario" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "" +#~ "Administre múltiples proveedores para este " +#~ "artículo con diferentes precios." + +#~ msgid "MOQ" +#~ msgstr "Cantidad mínima de pedido" + +#~ msgid "Lead Time (days)" +#~ msgstr "Plazo de entrega (días)" + +#~ msgid "Preferred" +#~ msgstr "Privilegiado" + +#~ msgid "Add Supplier" +#~ msgstr "Agregar proveedor" + +#~ msgid "No movement history found for this item." +#~ msgstr "No se encontró historial de movimientos para este artículo." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU, Nombre, Código de Barras..." + +#~ msgid "Active Only" +#~ msgstr "Sólo activo" + +#~ msgid "Total Qty" +#~ msgstr "Cantidad total" + +#~ msgid "Available" +#~ msgstr "Disponible" + +#~ msgid "Low Stock" +#~ msgstr "Existencias bajas" + +#~ msgid "No stock items found." +#~ msgstr "No se encontraron artículos en stock." + +#~ msgid "Item Details" +#~ msgstr "Detalles del artículo" + +#~ msgid "Trackable" +#~ msgstr "Rastreable" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Niveles de existencias por almacén" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Movimientos bursátiles recientes" + +#~ msgid "Total On Hand" +#~ msgstr "Total disponible" + +#~ msgid "Total Reserved" +#~ msgstr "Total reservado" + +#~ msgid "Total Available" +#~ msgstr "Total disponible" + +#~ msgid "Low Stock Alert" +#~ msgstr "Alerta de stock bajo" + +#~ msgid "This item is not trackable." +#~ msgstr "Este artículo no es rastreable." + +#~ msgid "Active Reservations" +#~ msgstr "Reservas Activas" + +#~ msgid "Quantity Reserved" +#~ msgstr "Cantidad reservada" + +#~ msgid "Last Counted" +#~ msgstr "Último contado" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "No se encontró stock para este artículo en ningún almacén." + +#~ msgid "No stock levels found." +#~ msgstr "No se encontraron niveles de existencias." + +#~ msgid "Low Stock Only" +#~ msgstr "Sólo existencias bajas" + +#~ msgid "Oversold" +#~ msgstr "sobrevendido" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "No se encontraron artículos en stock en este almacén." + +#~ msgid "Supplier Code" +#~ msgstr "Código de proveedor" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Código único para este proveedor (por ejemplo, SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Condiciones de pago" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "por ejemplo, neto 30, neto 60" + +#~ msgid "Code, name, email" +#~ msgstr "Código, nombre, correo electrónico" + +#~ msgid "No suppliers found." +#~ msgstr "No se encontraron proveedores." + +#~ msgid "Supplier Details" +#~ msgstr "Detalles del proveedor" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Artículos en stock de este proveedor" + +#~ msgid "Lead Time" +#~ msgstr "Plazo de entrega" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "No hay artículos en stock asociados con este proveedor." + +#~ msgid "Preferred Items" +#~ msgstr "Artículos preferidos" + +#~ msgid "From Warehouse" +#~ msgstr "Desde el almacén" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Seleccionar almacén de origen" + +#~ msgid "To Warehouse" +#~ msgstr "Al almacén" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Seleccione Almacén de Destino" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Notas opcionales sobre esta transferencia" + +#~ msgid "Create Transfer" +#~ msgstr "Crear transferencia" + +#~ msgid "No transfers found." +#~ msgstr "No se encontraron transferencias." + +#~ msgid "Warehouse Code" +#~ msgstr "Código de almacén" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Código único para este almacén (por ejemplo, WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "Correo electrónico de contacto" + +#~ msgid "Contact Phone" +#~ msgstr "Teléfono de contacto" + +#~ msgid "No warehouses found." +#~ msgstr "No se encontraron almacenes." + +#~ msgid "Warehouse Details" +#~ msgstr "Detalles del almacén" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "No hay artículos en stock en este almacén." + +#~ msgid "Total Quantity" +#~ msgstr "Cantidad total" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "Solicitar aprobación" + +#~ msgid "Approval Status" +#~ msgstr "Estado de aprobación" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "Motivo del rechazo" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "Acciones rápidas" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "Exportar a Excel" + +#~ msgid "Partially Paid" +#~ msgstr "Pagado parcialmente" + +#~ msgid "Fully Paid" +#~ msgstr "Totalmente pagado" + +#~ msgid "Create Invoice" +#~ msgstr "Crear factura" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Generar una nueva factura para un proyecto y cliente" + +#~ msgid "Select a project" +#~ msgstr "Seleccione un proyecto" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "" +#~ "Al seleccionar un proyecto, se " +#~ "completarán automáticamente los detalles del" +#~ " cliente." + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Tasa impositiva (%)" + +#~ msgid "Tips" +#~ msgstr "Consejos" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "" +#~ "Elija el proyecto correcto para " +#~ "completar automáticamente los detalles del " +#~ "cliente." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "Puede personalizar notas y términos antes de enviar la factura." + +#~ msgid "Edit Invoice" +#~ msgstr "Editar factura" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Actualizar detalles, artículos y términos de la factura" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Servicios basados ​​en el tiempo y trabajo por horas." + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "Seleccionar artículo en stock" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "por ejemplo, servicios de desarrollo web" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "Quitar elemento" + +#~ msgid "Items Subtotal" +#~ msgstr "Subtotal de artículos" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "Gastos facturables como viajes, comidas y materiales." + +#~ msgid "Add Expense" +#~ msgstr "Agregar gastos" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "por ejemplo, viajar a una reunión con el cliente" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Gasto vinculado: el título no se puede editar" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Gasto vinculado: la descripción no se puede editar" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Gasto vinculado: la categoría no se puede editar" + +#~ msgid "Travel" +#~ msgstr "Viajar" + +#~ msgid "Meals" +#~ msgstr "Comidas" + +#~ msgid "Accommodation" +#~ msgstr "Alojamiento" + +#~ msgid "Supplies" +#~ msgstr "Suministros" + +#~ msgid "Software" +#~ msgstr "Software" + +#~ msgid "Equipment" +#~ msgstr "Equipo" + +#~ msgid "Services" +#~ msgstr "Servicios" + +#~ msgid "Marketing" +#~ msgstr "Marketing" + +#~ msgid "Training" +#~ msgstr "Capacitación" + +#~ msgid "Other" +#~ msgstr "Otro" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Gasto vinculado: el importe no se puede editar" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Gasto vinculado: la fecha no se puede editar" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Desvincular gasto de factura" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Subtotal de gastos" + +#~ msgid "Extra Goods" +#~ msgstr "Bienes adicionales" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Productos, materiales, licencias y otros bienes." + +#~ msgid "Add Good" +#~ msgstr "Añadir bueno" + +#~ msgid "Price" +#~ msgstr "Precio" + +#~ msgid "e.g., Software License" +#~ msgstr "por ejemplo, licencia de software" + +#~ msgid "Product" +#~ msgstr "Producto" + +#~ msgid "Service" +#~ msgstr "Servicio" + +#~ msgid "Material" +#~ msgstr "Material" + +#~ msgid "Remove good" +#~ msgstr "quitar bueno" + +#~ msgid "Goods Subtotal" +#~ msgstr "Subtotal de mercancías" + +#~ msgid "Live Preview" +#~ msgstr "Vista previa en vivo" + +#~ msgid "Payment" +#~ msgstr "Pago" + +#~ msgid "Goods" +#~ msgstr "Bienes" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Generar a partir de Tiempo/Costos" + +#~ msgid "Record Payment" +#~ msgstr "Pago récord" + +#~ msgid "Export PDF" +#~ msgstr "Exportar PDF" + +#~ msgid "Export CSV" +#~ msgstr "Exportar CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Factura Duplicada" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "¿Estás seguro de que quieres desvincular este gasto de la factura?" + +#~ msgid "Unlink Expense" +#~ msgstr "Desvincular gastos" + +#~ msgid "Unlink" +#~ msgstr "Desconectar" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "" +#~ "Por favor agregue al menos un " +#~ "artículo, gasto o bien adicional a " +#~ "la factura" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Generar a partir de tiempo, costos y bienes" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Seleccione entradas de tiempo no " +#~ "facturadas, costos de proyecto y bienes" +#~ " adicionales para agregar a esta " +#~ "factura" + +#~ msgid "Back to Edit" +#~ msgstr "Volver a editar" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Entradas de tiempo no facturadas" + +#~ msgid "entries" +#~ msgstr "entradas" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "No se encontraron entradas de tiempo no facturadas para este proyecto." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Costos del proyecto no facturados" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "No se encontraron costos no facturados para este proyecto." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Gastos facturables no facturados" + +#~ msgid "Vendor" +#~ msgstr "Proveedor" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "No se encontraron gastos facturables no facturados para este proyecto." + +#~ msgid "Project Extra Goods" +#~ msgstr "Proyecto de bienes adicionales" + +#~ msgid "No extra goods found for this project." +#~ msgstr "No se encontraron productos adicionales para este proyecto." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Agregar seleccionados a la factura" + +#~ msgid "Selection Summary" +#~ msgstr "Resumen de selección" + +#~ msgid "Total available hours" +#~ msgstr "Total de horas disponibles" + +#~ msgid "Total available costs" +#~ msgstr "Costos totales disponibles" + +#~ msgid "Total available expenses" +#~ msgstr "Gastos totales disponibles" + +#~ msgid "Total available goods" +#~ msgstr "Total de bienes disponibles" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Resumen de horas prepagas" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "El plan incluye %(hours)s horas por ciclo (se reinicia el día %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "Consumido: %(consumed)s h • Restante: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "" +#~ "Aún no se ha registrado ningún uso" +#~ " de prepago para el período " +#~ "seleccionado." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" +#~ "Puede seleccionar múltiples entradas de " +#~ "tiempo, costos, gastos y bienes " +#~ "adicionales." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "Las entradas de tiempo se agrupan " +#~ "por tarea o proyecto en el momento" +#~ " de la creación del elemento." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "" +#~ "Los costos y bienes adicionales se " +#~ "agregan como artículos de factura " +#~ "individuales." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "" +#~ "Los gastos están vinculados a la " +#~ "factura y aparecen en una sección " +#~ "separada." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "" +#~ "Seleccione al menos una entrada de " +#~ "tiempo, costo, gasto o bien adicional" + +#~ msgid "Filter Invoices" +#~ msgstr "Filtrar facturas" + +#~ msgid "Invoice number or client" +#~ msgstr "Número de factura o cliente" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "Eliminar facturas seleccionadas" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Cambiar estado de facturas seleccionadas" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "Eliminar factura" + +#~ msgid "Warning:" +#~ msgstr "Advertencia:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "¿Estás seguro de que deseas eliminar la factura?" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Todos los artículos de la factura, " +#~ "bienes adicionales y registros de pago" +#~ " asociados con esta factura se " +#~ "eliminarán permanentemente." + +#~ msgid "INVOICE" +#~ msgstr "FACTURA" + +#~ msgid "Invoice #" +#~ msgstr "Factura #" + +#~ msgid "Bill To" +#~ msgstr "Cobrar a" + +#~ msgid "Quantity (Hours)" +#~ msgstr "Cantidad (horas)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "Generado a partir de %(num)d entradas de tiempo" + +#~ msgid "Expense" +#~ msgstr "Gastos" + +#~ msgid "Subtotal:" +#~ msgstr "Total parcial:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "Impuesto (%(rate).2f%%):" + +#~ msgid "Total Amount:" +#~ msgstr "Monto total:" + +#~ msgid "Notes:" +#~ msgstr "Notas:" + +#~ msgid "Terms:" +#~ msgstr "Términos:" + +#~ msgid "Payment Information:" +#~ msgstr "Información de pago:" + +#~ msgid "Terms & Conditions:" +#~ msgstr "Términos y condiciones:" + +#~ msgid "Download UBL" +#~ msgstr "" + +#~ msgid "Pay Online" +#~ msgstr "" + +#~ msgid "Payment Reference" +#~ msgstr "" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" + +#~ msgid "Invoice Approval" +#~ msgstr "" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" + +#~ msgid "Payment History" +#~ msgstr "Historial de pagos" + +#~ msgid "Send Invoice via Email" +#~ msgstr "Enviar factura por correo electrónico" + +#~ msgid "Edit Issue" +#~ msgstr "" + +#~ msgid "Unassigned" +#~ msgstr "No asignado" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "Create Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Filter Issues" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Search by title or description" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Apply Filters" +#~ msgstr "Aplicar filtros" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Page" +#~ msgstr "Página" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "of" +#~ msgstr "de" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "No issues found" +#~ msgstr "No se encontraron usuarios." -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Create New Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "Delete Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Task Management" +#~ msgstr "Gestión de tareas" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Link to existing task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Select a task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Link" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Kanban" +#~ msgstr "Kanban" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "Administrar columnas" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "Arrastre tareas entre columnas para actualizar su estado" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "tablero kanban" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "moved to" +#~ msgstr "se mudó a" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "No hay tareas en esta columna." -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "Administrar columnas Kanban" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "" +#~ "Personalice las columnas de su tablero" +#~ " kanban y los estados de las " +#~ "tareas" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "Project:" +#~ msgstr "Proyecto:" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "Columnas globales" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "Add Column" +#~ msgstr "Agregar columna" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "Lista de columnas Kanban" -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "Key" +#~ msgstr "Llave" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "Complete?" +#~ msgstr "¿Completo?" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "Arrastra para reordenar" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Edit column" +#~ msgstr "Editar columna" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "Alternar estado activo" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" +#~ "No se encontraron columnas kanban. Crea" +#~ " tu primera columna para comenzar." -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "Tips:" +#~ msgstr "Consejos:" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Arrastre y suelte filas para reordenar las columnas" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "Las columnas del sistema (todo, " +#~ "in_progress, done) no se pueden " +#~ "eliminar, pero se pueden personalizar" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "Las columnas marcadas como \"Completas\" " +#~ "marcarán las tareas como completadas " +#~ "cuando se arrastren a esa columna" -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Las columnas inactivas están ocultas en" +#~ " el tablero kanban, pero las tareas" +#~ " con ese estado permanecen accesibles" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "Eliminar columna Kanban" -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "Integración horaria" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "¿Está seguro de que desea eliminar la columna?" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "Key:" +#~ msgstr "Llave:" -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "El año pasado" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "Estado de actualización" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "Detalles" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "El año pasado" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Parcial" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "Refrescar" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Nota: Las tareas con este estado " +#~ "seguirán siendo accesibles, pero la " +#~ "columna ya no aparecerá en el " +#~ "tablero kanban." -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "Eliminar columna" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "Columnas reordenadas exitosamente" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "No se pudieron reordenar las columnas. Por favor inténtalo de nuevo." -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "Crear columna Kanban" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Agregue una nueva columna a su tablero kanban" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "Crear formulario de columna Kanban" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Column Label" +#~ msgstr "Etiqueta de columna" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "por ejemplo, En revisión, Bloqueado, Probando" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "El nombre para mostrar que se muestra en el tablero kanban." -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "Column Key" +#~ msgstr "Clave de columna" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "por ejemplo, en_revisión, bloqueado, probando" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Identificador único (minúsculas, sin espacios," +#~ " use guiones bajos). Generado " +#~ "automáticamente a partir de la etiqueta" +#~ " si está vacío." + +#~ msgid "Global (for all projects)" +#~ msgstr "Global (para todos los proyectos)" + +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Seleccione un proyecto para crear " +#~ "columnas específicas del proyecto o " +#~ "déjelo como Global para todos los " +#~ "proyectos" + +#~ msgid "Icon Class" +#~ msgstr "Clase de icono" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "Clase de icono Font Awesome" -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "Crear token API" +#~ msgid "Browse icons" +#~ msgstr "Explorar iconos" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "Primario (azul)" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "Secondary (Gray)" +#~ msgstr "Secundaria (gris)" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "Éxito (verde)" -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "Crear token API" +#~ msgid "Danger (Red)" +#~ msgstr "Peligro (rojo)" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "Advertencia (amarillo)" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "Dejar vacío para mantener actualizado" +#~ msgid "Info (Cyan)" +#~ msgstr "Información (cian)" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "Secreto regenerado" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Clase de color Bootstrap para estilo" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "Mark as Complete State" +#~ msgstr "Marcar como estado completo" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "Las tareas movidas a esta columna se marcarán como completadas" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "Create Column" +#~ msgstr "Crear columna" -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Note:" +#~ msgstr "Nota:" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "La columna se agregará al final " +#~ "del tablero. Puede reordenar las " +#~ "columnas más adelante desde la página" +#~ " de administración." -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "Editar columna Kanban" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "Modificar la configuración de la columna" -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Edit Kanban Column form" +#~ msgstr "Editar formulario de columna Kanban" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "La clave no se puede cambiar después de la creación." -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "Esta es una columna específica del proyecto." -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Esta es una columna global (para todos los proyectos)" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "Preview" +#~ msgstr "Avance" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Las columnas inactivas están ocultas del tablero kanban" -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "System Column:" +#~ msgstr "Columna del sistema:" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Esta es una columna del sistema. " +#~ "Puede personalizar su apariencia pero no" +#~ " eliminarla." -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "Alternar modo oscuro" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" + +#~ msgid "Decrease quantity" +#~ msgstr "" + +#~ msgid "Adjustment quantity" +#~ msgstr "" + +#~ msgid "Increase quantity" +#~ msgstr "" + +#~ msgid "Kiosk adjustment" +#~ msgstr "" + +#~ msgid "Physical count" +#~ msgstr "" + +#~ msgid "Found" +#~ msgstr "" + +#~ msgid "Damaged" +#~ msgstr "" + +#~ msgid "Apply stock adjustment" +#~ msgstr "" + +#~ msgid "Apply Adjustment" +#~ msgstr "" + +#~ msgid "Undo last adjustment" +#~ msgstr "" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "" + +#~ msgid "Transfer quantity" +#~ msgstr "" + +#~ msgid "Transfer stock" +#~ msgstr "" + +#~ msgid "Transfer Stock" +#~ msgstr "" + +#~ msgid "Stop timer" +#~ msgstr "" + +#~ msgid "Stop Timer" +#~ msgstr "Detener el temporizador" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "Ninguna tarea" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "¿En qué estás trabajando?" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "Resumen" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "Fuente" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Sitio web, referencia, anuncio..." + +#~ msgid "Lead Score" +#~ msgstr "Puntuación principal" + +#~ msgid "Estimated Value" +#~ msgstr "Valor estimado" + +#~ msgid "Save Lead" +#~ msgstr "Guardar cliente potencial" + +#~ msgid "Name, company, email..." +#~ msgstr "Nombre, empresa, correo electrónico..." + +#~ msgid "All Statuses" +#~ msgstr "Todos los estados" + +#~ msgid "Website, referral..." +#~ msgstr "Sitio web, referencia..." + +#~ msgid "Score" +#~ msgstr "Puntaje" + +#~ msgid "No leads found" +#~ msgstr "No se encontraron pistas" + +#~ msgid "Create First Lead" +#~ msgstr "Crear el primer cliente potencial" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Seguimiento profesional del tiempo y gestión de proyectos." + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "Una completa aplicación de seguimiento " +#~ "del tiempo basada en web creada " +#~ "con Flask, que incluye gestión de " +#~ "proyectos, organización de clientes, gestión" +#~ " de tareas, facturación y análisis " +#~ "avanzados." + +#~ msgid "Invoicing" +#~ msgstr "Facturación" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "Temporizadores inteligentes" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "" +#~ "Seguimiento en tiempo real con detección" +#~ " de inactividad y actualizaciones en " +#~ "vivo" + +#~ msgid "Client Management" +#~ msgstr "Gestión de Clientes" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "Organizar clientes con contactos, tarifas y relaciones de proyectos." + +#~ msgid "Task System" +#~ msgstr "Sistema de tareas" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Divida los proyectos en tareas con seguimiento del progreso" + +#~ msgid "PDF Invoices" +#~ msgstr "Facturas en PDF" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Genere facturas profesionales a partir del tiempo registrado" + +#~ msgid "Core Features" +#~ msgstr "Características principales" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Iniciar/detener temporizadores con asociación de proyectos y tareas" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Entrada manual de tiempo con notas y etiquetas." + +#~ msgid "Client and project organization" +#~ msgstr "Organización del cliente y del proyecto." + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Acceso basado en roles y perfiles de usuario" + +#~ msgid "Advanced Features" +#~ msgstr "Funciones avanzadas" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Facturación en PDF personalizada con seguimiento de impuestos y pagos" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Análisis visuales e informes detallados" + +#~ msgid "REST API for integrations" +#~ msgstr "API REST para integraciones" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "" +#~ "Capacidades de PWA y interfaz de " +#~ "usuario compatible con dispositivos móviles" + +#~ msgid "Platform Support" +#~ msgstr "Soporte de plataforma" + +#~ msgid "Web Application" +#~ msgstr "Aplicación web" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Navegadores de escritorio (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Diseño responsivo móvil" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "Aplicación web progresiva (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Interfaz de tableta táctil" + +#~ msgid "Operating Systems" +#~ msgstr "Sistemas operativos" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android e iOS (navegador)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Soporte para frambuesa pi" + +#~ msgid "Dockerized deployment" +#~ msgstr "Implementación dockerizada" + +#~ msgid "Database Support" +#~ msgstr "Soporte de base de datos" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (recomendado)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (desarrollo/prueba)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Migraciones automáticas con Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Herramientas de copia de seguridad y restauración" + +#~ msgid "Technical Specifications" +#~ msgstr "Especificaciones técnicas" + +#~ msgid "Technology Stack" +#~ msgstr "Pila de tecnología" + +#~ msgid "Backend" +#~ msgstr "backend" + +#~ msgid "Frontend" +#~ msgstr "Interfaz" + +#~ msgid "Deployment" +#~ msgstr "Despliegue" + +#~ msgid "Key Capabilities" +#~ msgstr "Capacidades clave" + +#~ msgid "Real-time" +#~ msgstr "en tiempo real" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "Código abierto y comunidad" + +#~ msgid "Open Source Benefits" +#~ msgstr "Beneficios del código abierto" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Código fuente completo disponible en GitHub" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Licenciado bajo GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "Desarrollo impulsado por la comunidad" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Seguimiento transparente de problemas e informes de errores" + +#~ msgid "Deployment Options" +#~ msgstr "Opciones de implementación" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Imágenes acoplables (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Implementación autohospedada con control total" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Listo para la nube con configuraciones de Compose" + +#~ msgid "View on GitHub" +#~ msgstr "Ver en GitHub" + +#~ msgid "Support updates" +#~ msgstr "Funciones admitidas" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "Obtener ayuda y recursos" + +#~ msgid "Documentation" +#~ msgstr "Documentación" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Guías paso a paso para todas las funciones." + +#~ msgid "View Help" +#~ msgstr "Ver ayuda" + +#~ msgid "System Information" +#~ msgstr "Información del sistema" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Estado, versiones y detalles de configuración." + +#~ msgid "Admin access required" +#~ msgstr "Se requiere acceso de administrador" + +#~ msgid "Community Support" +#~ msgstr "Apoyo comunitario" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "Informar problemas, solicitar funciones, contribuir." + +#~ msgid "GitHub Issues" +#~ msgstr "Problemas de GitHub" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "Ver todas las entradas de tiempo" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "A continuación se ofrece una descripción general rápida de su trabajo." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "Iniciar/detener temporizadores con asociación de proyectos y tareas" + +#~ msgid "Repeat last" +#~ msgstr "Creado en" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Iniciar/detener temporizadores con asociación de proyectos y tareas" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "Pausa" + +#~ msgid "Break" +#~ msgstr "Atrás" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "Comenzó en" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "Ajuste" + +#~ msgid "Subtract 15 min" +#~ msgstr "" + +#~ msgid "Subtract 5 min" +#~ msgstr "" + +#~ msgid "Add 5 min" +#~ msgstr "Administración" + +#~ msgid "Add 15 min" +#~ msgstr "Administración" + +#~ msgid "Resume timer" +#~ msgstr "Temporizadores inteligentes" + +#~ msgid "Resume" +#~ msgstr "Reiniciar" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "Pausa" + +#~ msgid "Stop and save current time" +#~ msgstr "" + +#~ msgid "Stop & save" +#~ msgstr "" + +#~ msgid "No active timer." +#~ msgstr "Sin temporizador activo." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" + +#~ msgid "Resume last session" +#~ msgstr "Finalizar sesión" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" + +#~ msgid "Today's Hours" +#~ msgstr "" + +#~ msgid "overtime" +#~ msgstr "Tiempo" + +#~ msgid "Week's Hours" +#~ msgstr "" + +#~ msgid "Month's Hours" +#~ msgstr "" + +#~ msgid "Overtime (YTD)" +#~ msgstr "Configuración de horas extras" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" + +#~ msgid "Loading insights…" +#~ msgstr "" + +#~ msgid "Value insights" +#~ msgstr "Alinear a la derecha" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "Seguimiento del tiempo. Manténgase organizado." + +#~ msgid "Total hours tracked" +#~ msgstr "Horas totales trabajadas" + +#~ msgid "Active days" +#~ msgstr "Alertas activas" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "Hours per day last seven days" +#~ msgstr "" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Most productive day" +#~ msgstr "" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "Avg session length" +#~ msgstr "" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "Estimated value tracked" +#~ msgstr "Valor estimado" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "This week vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "hrs this week" +#~ msgstr "Entradas de tiempo esta semana" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "This week" +#~ msgstr "Semana" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "Last week" +#~ msgstr "El año pasado" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "Entradas recientes" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "View all" +#~ msgstr "Ver todo" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Reanudar: iniciar un nuevo temporizador con las mismas propiedades" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "Editar entrada" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "Entrada duplicada" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "Eliminar entrada" -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "No se encontraron entradas recientes." -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "Meta Semanal" -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "Días restantes" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "Need" +#~ msgstr "Necesidad" -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "para alcanzar la meta" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "Sin objetivo semanal" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "Establece un objetivo de tiempo semanal para seguir tu progreso" -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "Crear objetivo" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Proyectos principales (30 días)" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "View report" +#~ msgstr "Informe de usuario" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Gráficos circulares de distribución del tiempo" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Ninguna actividad en los últimos 30 días." -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Iniciar el seguimiento del tiempo" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "Proyectos principales (30 días)" -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "Ninguna actividad en los últimos 30 días." -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "%(count)d cotizaciones duplicadas" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Error al generar PDF: %(error)s" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "Soporte de plataforma" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "La contraseña debe tener al menos 8 caracteres" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "Guía de inicio rápido" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "All templates" +#~ msgstr "Plantillas de correo electrónico" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "Tarea (opcional)" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "Notas (opcional)" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "Tarea (opcional)" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "por ejemplo, reunión, desarrollo, administración" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "Desarrollo de soporte" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "Documentación completa y guía de usuario." -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "Navegación rápida" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "Filtrar secciones..." -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "Inicio rápido" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "Informes y análisis" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "Funciones de productividad" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "Funciones de administración" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "Uso móvil" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "Documentación" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "Solución de problemas" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "Centro de ayuda de TimeTracker" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "" +#~ "Todo lo que necesitas saber para " +#~ "sacarle el máximo partido a TimeTracker" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "Iniciar el seguimiento del tiempo" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "Ver proyectos" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "Generar informes" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "Fichas API" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "Guía de inicio rápido" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "For New Users" +#~ msgstr "Para nuevos usuarios" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Inicie sesión con su nombre de usuario (no se requiere contraseña)" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Explore el panel para ver su descripción general" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Comience por primera vez en un proyecto existente" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "Ver sus entradas de tiempo en informes" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "Para administradores" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Configurar clientes en la sección Gestión de clientes" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Crear proyectos y asignarlos a clientes." -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Configurar los ajustes del sistema (zona horaria, moneda, etc.)" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "Administrar usuarios y permisos" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "Consejo profesional:" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Utilice la interfaz compatible con " +#~ "dispositivos móviles para realizar un " +#~ "seguimiento del tiempo mientras viaja. " +#~ "¡El cronómetro continúa funcionando incluso" +#~ " si cierras el navegador!" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Seguimiento en tiempo real con detección" +#~ " automática de inactividad y " +#~ "actualizaciones de WebSocket" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "Entrada manual" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "" +#~ "Registre el tiempo manualmente con horas" +#~ " de inicio y finalización personalizadas" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "Iniciar un temporizador" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Artículo en existencia" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Seleccionar artículo" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Depósito" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Seleccionar Almacén" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Cantidad de ajuste" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "Utilice valores positivos para aumentar el stock, valores negativos para disminuir" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "por ejemplo, corrección del recuento físico, daños, elementos encontrados" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Detalles adicionales sobre este ajuste" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Ajuste de registros" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Todos los almacenes" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Todos los artículos" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Fecha desde" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Fecha hasta" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Artículo" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "No se encontraron ajustes." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "En mano" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Punto de reorden" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Déficit" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Cantidad de reorden" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "Sin alertas de stock bajo. Todos los artículos están por encima del punto de reorden." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Navegue a la página o panel del Temporizador" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "Seleccione un proyecto del menú desplegable" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Utilice valores positivos para adiciones y negativos para eliminaciones." +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "Opcionalmente, seleccione una tarea para un seguimiento más detallado" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Añade notas sobre en qué estás trabajando (opcional)" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Agregar etiquetas separadas por comas (opcional)" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Haga clic en \"Iniciar temporizador\"" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Tipo de movimiento" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Devolver" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Desperdiciar" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "Funciones del temporizador" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "Visualización de la duración en tiempo real" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" + +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" + +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" + +#~ msgid "Continues running if browser closes" +#~ msgstr "Continúa ejecutándose si el navegador se cierra" + +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Detección automática de inactividad (configurable)" + +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Un temporizador activo por usuario (configurable)" + +#~ msgid "WebSocket live updates" +#~ msgstr "Actualizaciones en vivo de WebSocket" + +#~ msgid "Manual Time Entry" +#~ msgstr "Entrada manual de tiempo" + +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Cree entradas de tiempo manualmente " +#~ "cuando necesite registrar el tiempo " +#~ "pasado lejos de la computadora o " +#~ "ajustar las entradas existentes." -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Required Information" +#~ msgstr "Información requerida" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "Project selection" +#~ msgstr "Selección de proyectos" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "Fecha y hora de inicio" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "Fecha y hora de finalización" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "Información opcional" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "Asignación de tareas" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "Descripción/notas" -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "por ejemplo, corrección del recuento físico" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Movimiento récord" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Tipo de referencia" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Manual" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Costo unitario" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Referencia" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "Etiquetas para categorización" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "No se encontraron movimientos de acciones." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Proveedor" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Seleccionar Proveedor" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Fecha del pedido" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Fecha de entrega prevista" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Notas visibles para el proveedor" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Notas internas (no visibles para el proveedor)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Elementos" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Agregar artículo" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Cantidad" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "SKU del proveedor" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Crear orden de compra" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Borrador" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Enviado" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Confirmado" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Recibió" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Todos los proveedores" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "Número de orden de compra" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Entrega esperada" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "No se encontraron órdenes de compra." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "¿Está seguro de que desea cancelar esta orden de compra?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "¿Está seguro de que desea eliminar esta orden de compra?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Detalles de la orden de compra" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Fecha de recepción" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Cantidad pedida" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Cantidad recibida" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Total de línea" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Envío" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Recibir orden de compra" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Marcar como recibido" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "No hay artículos en esta orden de compra." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Artículos totales" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Almacenes totales" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Valor total del inventario" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Artículos con pocas existencias" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Informes disponibles" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Valoración de acciones" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Ver el valor del inventario por almacén" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Historia del movimiento" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Registro de movimiento detallado" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Análisis de facturación" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Tasas de rotación de inventario" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Informe de stock bajo" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Artículos por debajo del punto de reorden" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "Se encontraron %(count)s artículos por debajo de su punto de reorden." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Cantidad disponible" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Cantidad de reorden" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "Crear orden de compra" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Todos los niveles de existencias son buenos" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Ningún artículo está actualmente por debajo de su punto de reorden." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "No se encontraron movimientos." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "La tasa de rotación indica cuántas veces se vende y reemplaza el inventario en un año. Las tasas más altas indican artículos que se mueven más rápido." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Total vendido" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Nivel de existencias promedio" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Tasa de rotación" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Movimiento rápido" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normal" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "movimiento lento" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "muy lento" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "No se encontraron datos de ventas para el período seleccionado." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Valoración de inventario" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Valor Total" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "No se encontraron artículos con información de costos." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Reservado" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Cumplido" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Reservado en" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Vence en" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "¿Cumplir con esta reserva?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "¿Cancelar esta reserva?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "No se encontraron reservas." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Unidad" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Costo predeterminado" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Precio predeterminado" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "URL de la imagen" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Seguimiento del inventario" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Administre múltiples proveedores para este artículo con diferentes precios." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "Cantidad mínima de pedido" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Plazo de entrega (días)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Privilegiado" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Agregar proveedor" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "No se encontró historial de movimientos para este artículo." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU, Nombre, Código de Barras..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Sólo activo" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Cantidad total" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Disponible" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Existencias bajas" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "No se encontraron artículos en stock." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Detalles del artículo" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Rastreable" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Niveles de existencias por almacén" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "Anulación del estado facturable" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Funciones avanzadas de entrada de tiempo" -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "Entrada masiva" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Movimientos bursátiles recientes" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Total disponible" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Total reservado" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Total disponible" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Alerta de stock bajo" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Este artículo no es rastreable." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Reservas Activas" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Cantidad reservada" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Último contado" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "No se encontró stock para este artículo en ningún almacén." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "No se encontraron niveles de existencias." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Sólo existencias bajas" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "sobrevendido" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "No se encontraron artículos en stock en este almacén." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Código de proveedor" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Código único para este proveedor (por ejemplo, SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Condiciones de pago" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "por ejemplo, neto 30, neto 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Código, nombre, correo electrónico" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "No se encontraron proveedores." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Detalles del proveedor" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Artículos en stock de este proveedor" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Plazo de entrega" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "No hay artículos en stock asociados con este proveedor." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Artículos preferidos" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Desde el almacén" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Seleccionar almacén de origen" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Al almacén" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Seleccione Almacén de Destino" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Notas opcionales sobre esta transferencia" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Crear transferencia" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "No se encontraron transferencias." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Código de almacén" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Código único para este almacén (por ejemplo, WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "Correo electrónico de contacto" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Teléfono de contacto" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "No se encontraron almacenes." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Detalles del almacén" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "No hay artículos en stock en este almacén." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Cantidad total" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Cree múltiples entradas de tiempo para" +#~ " días consecutivos con el mismo " +#~ "proyecto y duración. Perfecto para " +#~ "patrones de trabajo habituales." -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Templates" +#~ msgstr "Plantillas" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Guarde las entradas de tiempo utilizadas" +#~ " con frecuencia como plantillas para " +#~ "una reutilización rápida. Guarda proyectos," +#~ " tareas y notas." -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualice sus entradas de tiempo en " +#~ "un calendario. Arrastre y suelte para" +#~ " reprogramar o haga clic en fechas" +#~ " para agregar entradas." -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "Project Information" +#~ msgstr "Información del proyecto" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "Nombre descriptivo del proyecto" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "Organización cliente asociada" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "Detalles y alcance del proyecto." -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "Activo, completado o archivado" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "Billing Information" +#~ msgstr "Información de facturación" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Si se debe realizar un seguimiento del tiempo para la facturación" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Solicitar aprobación" +#~ msgid "Rate for billable time calculations" +#~ msgstr "Tarifa para cálculos de tiempo facturable" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Estado de aprobación" +#~ msgid "Billing Reference" +#~ msgstr "Referencia de facturación" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "Número de orden de compra o código de facturación" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "Operaciones del proyecto" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Create new projects with client relationships" +#~ msgstr "Crear nuevos proyectos con relaciones con los clientes." -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Edit existing projects to update details" +#~ msgstr "Edite proyectos existentes para actualizar los detalles" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Motivo del rechazo" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "" +#~ "Archivar proyectos para ocultarlos de " +#~ "los temporizadores (conserva los datos)" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Eliminar proyectos (elimina todas las entradas de tiempo asociadas)" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Acciones rápidas" +#~ msgid "Best Practices" +#~ msgstr "Mejores prácticas" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "Use descriptive project names" +#~ msgstr "Utilice nombres de proyecto descriptivos" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Exportar a Excel" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Pagado parcialmente" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Totalmente pagado" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Crear factura" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Generar una nueva factura para un proyecto y cliente" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Seleccione un proyecto" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "Al seleccionar un proyecto, se completarán automáticamente los detalles del cliente." - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Establezca tarifas por hora precisas para la facturación" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Archivar en lugar de eliminar cuando sea posible" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Tasa impositiva (%)" +#~ msgid "Use billing references for external tracking" +#~ msgstr "Utilice referencias de facturación para seguimiento externo" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Consejos" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "El sistema de gestión de clientes " +#~ "ayuda a organizar su trabajo por " +#~ "organizaciones clientes, evitando errores y" +#~ " agilizando la creación de proyectos." -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "Elija el proyecto correcto para completar automáticamente los detalles del cliente." +#~ msgid "Client Information" +#~ msgstr "Información del cliente" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "Puede personalizar notas y términos antes de enviar la factura." +#~ msgid "Organization Name" +#~ msgstr "Nombre de la organización" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Editar factura" +#~ msgid "Company or client name" +#~ msgstr "Nombre de la empresa o cliente" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Actualizar detalles, artículos y términos de la factura" +#~ msgid "Primary contact details" +#~ msgstr "Detalles de contacto principal" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Servicios basados ​​en el tiempo y trabajo por horas." +#~ msgid "Email & Phone" +#~ msgstr "Correo electrónico y teléfono" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Contact information" +#~ msgstr "Información del contacto" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Business address" +#~ msgstr "Dirección comercial" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Benefits" +#~ msgstr "Beneficios" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Seleccionar artículo en stock" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "La selección desplegable evita errores tipográficos" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "por ejemplo, servicios de desarrollo web" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Las tarifas predeterminadas completan automáticamente los proyectos" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "Nomenclatura consistente de clientes" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Quitar elemento" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Subtotal de artículos" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Gastos facturables como viajes, comidas y materiales." - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Agregar gastos" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "por ejemplo, viajar a una reunión con el cliente" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Gasto vinculado: el título no se puede editar" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Gasto vinculado: la descripción no se puede editar" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Gasto vinculado: la categoría no se puede editar" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Viajar" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Comidas" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Alojamiento" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Suministros" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Software" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Equipo" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Servicios" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Marketing" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Capacitación" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Otro" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Gasto vinculado: el importe no se puede editar" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Gasto vinculado: la fecha no se puede editar" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Desvincular gasto de factura" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Subtotal de gastos" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Bienes adicionales" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Productos, materiales, licencias y otros bienes." - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Añadir bueno" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Precio" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "por ejemplo, licencia de software" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Producto" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Servicio" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Material" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "quitar bueno" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Subtotal de mercancías" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Vista previa en vivo" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Pago" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Bienes" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Generar a partir de Tiempo/Costos" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Pago récord" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "Exportar PDF" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "Exportar CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Factura Duplicada" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "¿Estás seguro de que quieres desvincular este gasto de la factura?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Desvincular gastos" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Desconectar" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "Por favor agregue al menos un artículo, gasto o bien adicional a la factura" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Generar a partir de tiempo, costos y bienes" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "Seleccione entradas de tiempo no facturadas, costos de proyecto y bienes adicionales para agregar a esta factura" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Volver a editar" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Entradas de tiempo no facturadas" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "entradas" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "No se encontraron entradas de tiempo no facturadas para este proyecto." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Costos del proyecto no facturados" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "No se encontraron costos no facturados para este proyecto." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Gastos facturables no facturados" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Proveedor" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "No se encontraron gastos facturables no facturados para este proyecto." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Proyecto de bienes adicionales" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "No se encontraron productos adicionales para este proyecto." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Agregar seleccionados a la factura" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Resumen de selección" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Total de horas disponibles" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Costos totales disponibles" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Gastos totales disponibles" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Total de bienes disponibles" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Resumen de horas prepagas" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "El plan incluye %(hours)s horas por ciclo (se reinicia el día %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "Consumido: %(consumed)s h • Restante: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Aún no se ha registrado ningún uso de prepago para el período seleccionado." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "Puede seleccionar múltiples entradas de tiempo, costos, gastos y bienes adicionales." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "Las entradas de tiempo se agrupan por tarea o proyecto en el momento de la creación del elemento." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "Los costos y bienes adicionales se agregan como artículos de factura individuales." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "Los gastos están vinculados a la factura y aparecen en una sección separada." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "Seleccione al menos una entrada de tiempo, costo, gasto o bien adicional" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Filtrar facturas" +#~ msgid "Easier project organization" +#~ msgstr "Organización de proyectos más sencilla" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Número de factura o cliente" +#~ msgid "Project Count" +#~ msgstr "Recuento de proyectos" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Eliminar facturas seleccionadas" +#~ msgid "Total and active projects" +#~ msgstr "Proyectos totales y activos" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Cambiar estado de facturas seleccionadas" +#~ msgid "Total hours worked" +#~ msgstr "Horas totales trabajadas" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "Estimación de costos" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Estimated billing amounts" +#~ msgstr "Montos de facturación estimados" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Divida los proyectos en tareas " +#~ "manejables con seguimiento detallado y " +#~ "monitoreo del progreso." -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Eliminar factura" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Advertencia:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "¿Estás seguro de que deseas eliminar la factura?" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "Todos los artículos de la factura, bienes adicionales y registros de pago asociados con esta factura se eliminarán permanentemente." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "FACTURA" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Factura #" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Cobrar a" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Cantidad (horas)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "Generado a partir de %(num)d entradas de tiempo" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Gastos" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Total parcial:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "Impuesto (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Monto total:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Notas:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Términos:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Información de pago:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Términos y condiciones:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Task Properties" +#~ msgstr "Propiedades de la tarea" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "Nombre y descripción" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "Identificación clara de tareas" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "Niveles de prioridad" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Bajo, Medio, Alto, Urgente" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "Fechas de vencimiento" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Historial de pagos" +#~ msgid "Deadline tracking" +#~ msgstr "Seguimiento de plazos" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Enviar factura por correo electrónico" +#~ msgid "Assignment" +#~ msgstr "Asignación" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "Propiedad de la tarea" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "No asignado" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "Seguimiento de estado" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "Tareas pendientes: no iniciadas" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "In Progress - Currently working" +#~ msgstr "En progreso - Actualmente trabajando" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "Aplicar filtros" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Página" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "de" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "No se encontraron usuarios." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "Revisión: listo para revisión" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "Hecho - Completado" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "Cancelado - No es necesario" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "Funciones de seguimiento del tiempo" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Gestión de tareas" +#~ msgid "Start timers directly from tasks" +#~ msgstr "Iniciar temporizadores directamente desde las tareas" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Vincular entradas de tiempo a tareas específicas" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Seguimiento de las horas estimadas frente a las reales" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "Monitorear el progreso de la tarea automáticamente" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Task Views" +#~ msgstr "Vistas de tareas" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Mis tareas: tus tareas asignadas" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Todas las tareas: lista completa de tareas" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Administrar columnas" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Tareas vencidas: elementos vencidos" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Arrastre tareas entre columnas para actualizar su estado" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Tareas del proyecto: tareas dentro de los proyectos" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "tablero kanban" +#~ msgid "Collaboration Features" +#~ msgstr "Funciones de colaboración" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "se mudó a" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Comentarios de tareas: debates enhebrados sobre tareas" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "No hay tareas en esta columna." +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Soporte de Markdown: formato enriquecido en descripciones" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Administrar columnas Kanban" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "" +#~ "Menciones de usuario: etiquetar a los" +#~ " miembros del equipo (si está " +#~ "habilitado)" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Personalice las columnas de su tablero kanban y los estados de las tareas" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Archivos adjuntos: adjunte archivos a las tareas (si está habilitado)" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Proyecto:" +#~ msgid "Markdown Formatting" +#~ msgstr "Formato de rebajas" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Columnas globales" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "Las descripciones de tareas y proyectos admiten Markdown:" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Agregar columna" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Negrita**, *Cursiva*, ~~Tachado~~" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Lista de columnas Kanban" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# Encabezados, - Listas, [Enlaces](url)" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Llave" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```bloques de código```, tablas, imágenes" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "¿Completo?" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualice su flujo de trabajo con " +#~ "un tablero Kanban de arrastrar y " +#~ "soltar para una gestión de tareas " +#~ "intuitiva." -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Arrastra para reordenar" +#~ msgid "Board Features" +#~ msgstr "Características del tablero" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Editar columna" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Columnas personalizables que coinciden con los estados de las tareas" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Alternar estado activo" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Arrastrar y soltar tareas entre columnas" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "No se encontraron columnas kanban. Crea tu primera columna para comenzar." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Consejos:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Arrastre y suelte filas para reordenar las columnas" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "Las columnas del sistema (todo, in_progress, done) no se pueden eliminar, pero se pueden personalizar" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "Las columnas marcadas como \"Completas\" marcarán las tareas como completadas cuando se arrastren a esa columna" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "Las columnas inactivas están ocultas en el tablero kanban, pero las tareas con ese estado permanecen accesibles" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Eliminar columna Kanban" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "¿Está seguro de que desea eliminar la columna?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Llave:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "Nota: Las tareas con este estado seguirán siendo accesibles, pero la columna ya no aparecerá en el tablero kanban." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Eliminar columna" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Columnas reordenadas exitosamente" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "No se pudieron reordenar las columnas. Por favor inténtalo de nuevo." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Crear columna Kanban" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Agregue una nueva columna a su tablero kanban" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Crear formulario de columna Kanban" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Etiqueta de columna" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "por ejemplo, En revisión, Bloqueado, Probando" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "El nombre para mostrar que se muestra en el tablero kanban." - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Clave de columna" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "por ejemplo, en_revisión, bloqueado, probando" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "Identificador único (minúsculas, sin espacios, use guiones bajos). Generado automáticamente a partir de la etiqueta si está vacío." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Global (para todos los proyectos)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "Seleccione un proyecto para crear columnas específicas del proyecto o déjelo como Global para todos los proyectos" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Clase de icono" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Clase de icono Font Awesome" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Explorar iconos" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Primario (azul)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Secundaria (gris)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Éxito (verde)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Peligro (rojo)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Advertencia (amarillo)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Información (cian)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Clase de color Bootstrap para estilo" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Marcar como estado completo" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "Las tareas movidas a esta columna se marcarán como completadas" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Crear columna" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Nota:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "La columna se agregará al final del tablero. Puede reordenar las columnas más adelante desde la página de administración." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Editar columna Kanban" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Modificar la configuración de la columna" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Editar formulario de columna Kanban" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "La clave no se puede cambiar después de la creación." - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Esta es una columna específica del proyecto." - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Esta es una columna global (para todos los proyectos)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Avance" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Las columnas inactivas están ocultas del tablero kanban" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Columna del sistema:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "Esta es una columna del sistema. Puede personalizar su apariencia pero no eliminarla." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Filtrar por proyecto, usuario o prioridad" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "Quick search across all tasks" +#~ msgstr "Búsqueda rápida en todas las tareas" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Alternar modo oscuro" +#~ msgid "Using the Kanban Board" +#~ msgstr "Usando el tablero Kanban" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Acceso desde el menú Tareas o página del proyecto" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "Arrastre tareas a diferentes columnas para cambiar el estado" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Haga clic en una tarjeta de tarea para ver/editar detalles" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Utilice filtros para centrarse en un trabajo específico" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "El tablero Kanban es perfecto para " +#~ "la planificación de sprints y las " +#~ "reuniones diarias. ¡Cada columna representa" +#~ " una etapa de su flujo de " +#~ "trabajo!" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "Seguimiento de gastos" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Realice un seguimiento de los gastos " +#~ "comerciales, administre recibos y administre" +#~ " reembolsos de manera eficiente." -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "Características de gastos" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Categorizar gastos (viajes, comidas, suministros, etc.)" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "Adjunte imágenes y documentos de recibos" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Seguimiento de montos, impuestos y métodos de pago" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Flujo de trabajo de aprobación para solicitudes de gastos" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "Facturación y reembolso" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Marcar gastos como facturables a los clientes" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "Incluir gastos en las facturas de los clientes." -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "Seguimiento del estado del reembolso" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "Vincular gastos a proyectos específicos" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "Gasto récord" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "Ingrese los detalles y cargue el recibo" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "Enviar para aprobación" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Admin reviews and approves" +#~ msgstr "El administrador revisa y aprueba" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "Factura/Reembolso" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Añadir a factura o reembolsar" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "Seguimiento del pago" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "Supervisar el estado del reembolso" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Professional Invoicing" +#~ msgstr "Facturación Profesional" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "Generación de PDF profesional" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Detener el temporizador" +#~ msgid "Company branding and logos" +#~ msgstr "Marca y logotipos de la empresa." -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "Numeración automática de facturas" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "Cálculos de impuestos" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Time Integration" +#~ msgstr "Integración horaria" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Ninguna tarea" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Generate from time entries" +#~ msgstr "Generar a partir de entradas de tiempo" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "¿En qué estás trabajando?" +#~ msgid "Smart grouping by task/project" +#~ msgstr "Agrupación inteligente por tarea/proyecto" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "Evite la doble facturación" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "Utilice tarifas por hora del proyecto" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "Configurar los detalles del cliente y del proyecto" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Add Items" +#~ msgstr "Agregar elementos" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Generate from time or add manually" +#~ msgstr "Generar a partir del tiempo o agregar manualmente" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "Revisar y enviar" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "Exportar PDF y actualizar estado" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "Monitorear el estado y los pagos" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Standard Reports" +#~ msgstr "Informes estándar" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Informe del proyecto: desglose del tiempo por proyecto" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Informe de usuario: métricas de rendimiento individuales" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Informe resumido: métricas y tendencias clave" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Informe de entrada de tiempo: registros de tiempo detallados" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Export Options" +#~ msgstr "Opciones de exportación" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "Exportación CSV: para análisis externo" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "Resumen" +#~ msgid "Configurable delimiters" +#~ msgstr "Delimitadores configurables" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "Custom date ranges" +#~ msgstr "Rangos de fechas personalizados" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Fuente" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Sitio web, referencia, anuncio..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Puntuación principal" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Valor estimado" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Guardar cliente potencial" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Nombre, empresa, correo electrónico..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Todos los estados" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Sitio web, referencia..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Puntaje" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "No se encontraron pistas" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Crear el primer cliente potencial" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "Filtered data export" +#~ msgstr "Exportación de datos filtrados" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "Opciones de filtro" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Intervalo de fechas: fechas de inicio y finalización personalizadas" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Proyecto - Filtrar por proyectos específicos" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "User - Filter by team members" +#~ msgstr "Usuario - Filtrar por miembros del equipo" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Seguimiento profesional del tiempo y gestión de proyectos." +#~ msgid "Client - Filter by client organization" +#~ msgstr "Cliente - Filtrar por organización cliente" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "Una completa aplicación de seguimiento del tiempo basada en web creada con Flask, que incluye gestión de proyectos, organización de clientes, gestión de tareas, facturación y análisis avanzados." +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Filtros guardados: guarde los filtros utilizados con frecuencia" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Facturación" +#~ msgid "Visual Analytics" +#~ msgstr "Análisis visuales" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "Interactive bar charts" +#~ msgstr "Gráficos de barras interactivos" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Temporizadores inteligentes" +#~ msgid "Time distribution pie charts" +#~ msgstr "Gráficos circulares de distribución del tiempo" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "Seguimiento en tiempo real con detección de inactividad y actualizaciones en vivo" +#~ msgid "Trend analysis over time" +#~ msgstr "Análisis de tendencias a lo largo del tiempo." -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Gestión de Clientes" +#~ msgid "Mobile-optimized charts" +#~ msgstr "Gráficos optimizados para dispositivos móviles" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Organizar clientes con contactos, tarifas y relaciones de proyectos." +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Utilice filtros guardados para acceder " +#~ "rápidamente a las vistas de informes " +#~ "más comunes. ¡Guarde filtros para " +#~ "revisiones semanales, facturación mensual o" +#~ " seguimiento de proyectos específicos!" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Sistema de tareas" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Aumente su eficiencia con atajos de " +#~ "teclado, paleta de comandos y funciones" +#~ " de automatización." -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Divida los proyectos en tareas con seguimiento del progreso" +#~ msgid "Command Palette" +#~ msgstr "Paleta de comandos" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "Facturas en PDF" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "Accede a cualquier función al instante sin abandonar el teclado" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Genere facturas profesionales a partir del tiempo registrado" +#~ msgid "Opening the Command Palette" +#~ msgstr "Abrir la paleta de comandos" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Características principales" +#~ msgid "Press the question mark key" +#~ msgstr "Presione la tecla del signo de interrogación" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Iniciar/detener temporizadores con asociación de proyectos y tareas" +#~ msgid "Quick search" +#~ msgstr "búsqueda rápida" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Entrada manual de tiempo con notas y etiquetas." +#~ msgid "Go to Projects" +#~ msgstr "Ir a Proyectos" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Organización del cliente y del proyecto." +#~ msgid "Go to Tasks" +#~ msgstr "Ir a Tareas" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Acceso basado en roles y perfiles de usuario" +#~ msgid "New Time Entry" +#~ msgstr "Nueva entrada de tiempo" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Funciones avanzadas" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Atajos de teclado" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Facturación en PDF personalizada con seguimiento de impuestos y pagos" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Navegue más rápido con comandos " +#~ "controlados por teclado. ¿Presionar Mayús+?" +#~ " para ver todos los atajos." -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Análisis visuales e informes detallados" +#~ msgid "Global Search" +#~ msgstr "Búsqueda global" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "API REST para integraciones" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "Encuentre rápidamente proyectos, tareas, " +#~ "clientes y entradas de tiempo desde " +#~ "cualquier lugar de la aplicación." -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "Capacidades de PWA y interfaz de usuario compatible con dispositivos móviles" +#~ msgid "Email Notifications" +#~ msgstr "Notificaciones por correo electrónico" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Soporte de plataforma" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Reciba notificaciones por correo electrónico" +#~ " sobre asignaciones de tareas, facturas " +#~ "vencidas y resúmenes semanales." -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Aplicación web" +#~ msgid "Administrator Features" +#~ msgstr "Funciones de administrador" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Navegadores de escritorio (Chrome, Firefox, Safari, Edge)" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Cree nuevos usuarios con autenticación flexible" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Diseño responsivo móvil" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Asignar roles personalizados con permisos específicos" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "Aplicación web progresiva (PWA)" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Activar/desactivar cuentas de usuario" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Interfaz de tableta táctil" +#~ msgid "View user statistics and activity" +#~ msgstr "Ver estadísticas y actividad del usuario" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Sistemas operativos" +#~ msgid "Generate API tokens for users" +#~ msgstr "Generar tokens API para los usuarios" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "Access Control" +#~ msgstr "Control de acceso" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android e iOS (navegador)" +#~ msgid "Granular role-based permissions system" +#~ msgstr "Sistema granular de permisos basado en roles" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Soporte para frambuesa pi" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Roles personalizados con acceso detallado" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Implementación dockerizada" +#~ msgid "User data access controls" +#~ msgstr "Controles de acceso a los datos del usuario" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Soporte de base de datos" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "Integración OIDC/SSO (Azure AD, Authelia, etc.)" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (recomendado)" +#~ msgid "API token management for integrations" +#~ msgstr "Gestión de tokens API para integraciones" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (desarrollo/prueba)" +#~ msgid "Authentication Methods" +#~ msgstr "Métodos de autenticación" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Migraciones automáticas con Flask-Migrate" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Solo nombre de usuario (uso interno simple)" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Herramientas de copia de seguridad y restauración" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (autenticación empresarial)" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Especificaciones técnicas" +#~ msgid "Both methods simultaneously" +#~ msgstr "Ambos métodos simultáneamente" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Pila de tecnología" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Asignación automática de roles a través de grupos" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "backend" +#~ msgid "Role & Permission Management" +#~ msgstr "Gestión de roles y permisos" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "Interfaz" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Cree roles personalizados más allá de Administrador/Usuario" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Despliegue" +#~ msgid "Set granular permissions per feature" +#~ msgstr "Establecer permisos granulares por función" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Capacidades clave" +#~ msgid "Assign users to multiple roles" +#~ msgstr "Asignar usuarios a múltiples roles" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "en tiempo real" +#~ msgid "View and manage all permissions" +#~ msgstr "Ver y administrar todos los permisos" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "General Settings" +#~ msgstr "Configuraciones generales" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "Código abierto y comunidad" +#~ msgid "Timezone and locale settings" +#~ msgstr "Configuración de zona horaria y localidad" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Beneficios del código abierto" +#~ msgid "Currency configuration" +#~ msgstr "Configuración de moneda" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Código fuente completo disponible en GitHub" +#~ msgid "Time rounding rules" +#~ msgstr "Reglas de redondeo de tiempo" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Licenciado bajo GPL v3.0" +#~ msgid "Self-registration settings" +#~ msgstr "Configuración de autorregistro" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Desarrollo impulsado por la comunidad" +#~ msgid "Timer Settings" +#~ msgstr "Configuración del temporizador" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Seguimiento transparente de problemas e informes de errores" +#~ msgid "Idle timeout configuration" +#~ msgstr "Configuración de tiempo de espera inactivo" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Opciones de implementación" +#~ msgid "Single active timer mode" +#~ msgstr "Modo de temporizador activo único" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Imágenes acoplables (GHCR)" +#~ msgid "Timer display preferences" +#~ msgstr "Preferencias de visualización del temporizador" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Implementación autohospedada con control total" +#~ msgid "Notification settings" +#~ msgstr "Configuración de notificaciones" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Listo para la nube con configuraciones de Compose" +#~ msgid "Database Management" +#~ msgstr "Gestión de bases de datos" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Ver en GitHub" +#~ msgid "Create manual database backups" +#~ msgstr "Crear copias de seguridad de bases de datos manuales" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "Funciones admitidas" +#~ msgid "View database migration status" +#~ msgstr "Ver el estado de migración de la base de datos" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Monitor database performance" +#~ msgstr "Monitorear el rendimiento de la base de datos" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Clean up old data and logs" +#~ msgstr "Limpiar datos y registros antiguos" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "System Monitoring" +#~ msgstr "Monitoreo del sistema" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Obtener ayuda y recursos" +#~ msgid "View system information and health" +#~ msgstr "Ver información y estado del sistema" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Documentación" +#~ msgid "Monitor application performance" +#~ msgstr "Supervisar el rendimiento de la aplicación" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Guías paso a paso para todas las funciones." +#~ msgid "Review system logs and errors" +#~ msgstr "Revisar los registros y errores del sistema" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Ver ayuda" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Funciones optimizadas para dispositivos móviles" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Información del sistema" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Optimizado para teléfonos y tabletas" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Estado, versiones y detalles de configuración." +#~ msgid "Touch-friendly interface" +#~ msgstr "Interfaz táctil" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "Se requiere acceso de administrador" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "Diseños adaptables para todos los tamaños de pantalla" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Apoyo comunitario" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Alto contraste para visibilidad en exteriores" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Informar problemas, solicitar funciones, contribuir." +#~ msgid "Mobile Navigation" +#~ msgstr "Navegación móvil" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "Problemas de GitHub" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Barra de pestañas inferior para fácil acceso" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Quick access to dashboard" +#~ msgstr "Acceso rápido al tablero" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "Ver todas las entradas de tiempo" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "A continuación se ofrece una descripción general rápida de su trabajo." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "Iniciar/detener temporizadores con asociación de proyectos y tareas" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "Creado en" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "Iniciar/detener temporizadores con asociación de proyectos y tareas" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "One-tap time logging" +#~ msgstr "Registro de tiempo con un solo toque" -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "Pausa" +#~ msgid "Mobile-optimized reports" +#~ msgstr "Informes optimizados para dispositivos móviles" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "Atrás" +#~ msgid "Installation" +#~ msgstr "Instalación" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Abra TimeTracker en su navegador móvil" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Busque la opción \"Agregar a la pantalla de inicio\"" -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Comenzó en" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Siga las instrucciones de instalación específicas del navegador" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Inicie desde su pantalla de inicio como una aplicación nativa" -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "Ajuste" +#~ msgid "PWA Benefits" +#~ msgstr "Beneficios de PWA" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "Capacidad sin conexión para funciones básicas" + +#~ msgid "Faster loading times" +#~ msgstr "Tiempos de carga más rápidos" + +#~ msgid "Native app-like experience" +#~ msgstr "Experiencia similar a una aplicación nativa" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Notificaciones push (donde sean compatibles)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "Gráficos de barras interactivos" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "Especificaciones técnicas" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "Documentación" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Solución de problemas y preguntas frecuentes" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "¿Qué sucede si olvido detener mi cronómetro?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "El cronómetro seguirá funcionando hasta " +#~ "que lo detenga manualmente. Puede ver" +#~ " su temporizador activo en el panel" +#~ " y en la página del temporizador. " +#~ "El temporizador persiste incluso si " +#~ "cierra su navegador o reinicia su " +#~ "dispositivo. Si la detección de " +#~ "inactividad está habilitada, el temporizador" +#~ " puede pausarse automáticamente después del" +#~ " período de tiempo de espera " +#~ "configurado." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "¿Puedo editar las entradas de tiempo después de crearlas?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Sí, puede editar cualquier entrada de" +#~ " tiempo haciendo clic en el botón " +#~ "editar en la lista de entradas de" +#~ " tiempo. Puede modificar el proyecto, " +#~ "las horas de inicio/finalización, las " +#~ "notas, las etiquetas, el estado " +#~ "facturable y la asignación de tareas." +#~ " Los administradores pueden editar todas" +#~ " las entradas de tiempo, mientras que" +#~ " los usuarios habituales sólo pueden " +#~ "editar sus propias entradas." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "¿Cómo hago un seguimiento del tiempo para varios proyectos?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "De forma predeterminada, sólo puedes " +#~ "tener un temporizador activo a la " +#~ "vez. Para cambiar de proyecto, detenga" +#~ " el cronómetro actual e inicie uno" +#~ " nuevo para el proyecto diferente. " +#~ "Alternativamente, puede crear entradas de " +#~ "tiempo manuales para trabajos anteriores " +#~ "o configurar el sistema para permitir" +#~ " múltiples temporizadores activos (configuración" +#~ " de administrador)." + +#~ msgid "How do I export my time data?" +#~ msgstr "¿Cómo exporto mis datos de tiempo?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Vaya a la página Informes y " +#~ "utilice la función \"Exportar CSV\". " +#~ "Puede aplicar filtros para exportar " +#~ "datos específicos o exportar todas las" +#~ " entradas de tiempo. El archivo CSV" +#~ " incluye todos los detalles de " +#~ "entrada de tiempo y se puede abrir" +#~ " en Excel u otras aplicaciones de " +#~ "hojas de cálculo. También puede " +#~ "configurar el delimitador para diferentes " +#~ "estándares regionales." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "¿Cuál es la diferencia entre tiempo facturable y no facturable?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "El tiempo facturable se realiza un " +#~ "seguimiento para fines de facturación " +#~ "del cliente y puede tener una " +#~ "tarifa por hora asociada. El tiempo " +#~ "no facturable es para trabajo interno" +#~ " que no se cobra a los " +#~ "clientes. Puede marcar entradas de " +#~ "tiempo individuales como facturables o " +#~ "no facturables, y los proyectos pueden" +#~ " tener configuraciones facturables " +#~ "predeterminadas. Esta distinción es crucial" +#~ " para un análisis preciso de la " +#~ "facturación y la rentabilidad." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "¿Cómo creo una factura a partir de mis entradas de tiempo?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Navegue a Facturas → Crear factura, " +#~ "configure los detalles del cliente y " +#~ "del proyecto, luego use \"Generar a " +#~ "partir de entradas de tiempo\" para " +#~ "crear automáticamente elementos de factura " +#~ "a partir de su tiempo registrado. " +#~ "Puede filtrar por rango de fechas " +#~ "y proyecto, y el sistema agrupará " +#~ "las entradas de tiempo de forma " +#~ "inteligente. Revise los elementos generados" +#~ " y expórtelos como un PDF " +#~ "profesional." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "¿Puedo usar TimeTracker en mi dispositivo móvil?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "¡Sí! TimeTracker responde completamente y " +#~ "funciona muy bien en dispositivos " +#~ "móviles. Puede instalarlo como una " +#~ "aplicación web progresiva (PWA) para " +#~ "disfrutar de una experiencia nativa. La" +#~ " interfaz móvil incluye una barra de" +#~ " pestañas inferior para facilitar la " +#~ "navegación y controles táctiles optimizados" +#~ " para realizar un seguimiento del " +#~ "tiempo mientras viaja." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "¿Cómo uso la paleta de comandos y los atajos de teclado?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Presione la tecla del signo de " +#~ "interrogación (?) para abrir la paleta" +#~ " de comandos. Desde allí, puede " +#~ "escribir para buscar cualquier acción u" +#~ " objetivo de navegación. Utilice secuencias" +#~ " de teclado como \"g d\" para " +#~ "Panel de control, \"g p\" para " +#~ "Proyectos o \"n e\" para Nueva " +#~ "entrada. ¿Presionar Mayús+? para ver " +#~ "todos los atajos disponibles. Presione " +#~ "Ctrl+K (o Cmd+K en Mac) para una" +#~ " búsqueda rápida." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "¿Cómo creo entradas de tiempo masivo para varios días?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Vaya a Trabajo → Entrada de tiempo" +#~ " masiva. Seleccione su proyecto, elija " +#~ "un rango de fechas, establezca sus " +#~ "horas de inicio y finalización diarias" +#~ " y, opcionalmente, omita los fines de" +#~ " semana. El sistema creará entradas " +#~ "de tiempo idénticas para cada día " +#~ "del rango. Esto es perfecto para " +#~ "registrar patrones de trabajo regulares " +#~ "o completar el tiempo pasado cuando " +#~ "trabajó horas constantes." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "¿Qué son las plantillas de entrada de tiempo y cómo las uso?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "Las plantillas de entrada de tiempo " +#~ "le permiten guardar configuraciones de " +#~ "entrada de tiempo utilizadas con " +#~ "frecuencia. Al crear una entrada de " +#~ "tiempo manual, marque \"Guardar como " +#~ "plantilla\" para guardar el proyecto, la" +#~ " tarea y las notas. Más adelante, " +#~ "al crear nuevas entradas, podrá " +#~ "seleccionar una plantilla para completar " +#~ "rápidamente estos detalles. Las plantillas " +#~ "son personales y sólo usted puede " +#~ "verlas." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "¿Cómo hago un seguimiento de los gastos y los agrego a las facturas?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Vaya a Gastos → Nuevo gasto para" +#~ " registrar los gastos comerciales. Cargue" +#~ " imágenes de recibos, categorice el " +#~ "gasto y márquelo como facturable si " +#~ "es necesario. Al crear facturas, puede" +#~ " incluir estos gastos como partidas " +#~ "individuales. Los gastos respaldan los " +#~ "flujos de trabajo de aprobación, el " +#~ "seguimiento de reembolsos y se pueden" +#~ " vincular a proyectos específicos." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "¿Puedo usar Markdown en las descripciones?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "¡Sí! Las descripciones de proyectos y" +#~ " tareas admiten el formato Markdown " +#~ "completo. Puede utilizar negrita, cursiva, " +#~ "títulos, listas, enlaces, bloques de " +#~ "código, tablas e imágenes. Esto le " +#~ "permite crear documentación rica y bien" +#~ " formateada directamente en sus proyectos" +#~ " y tareas. El editor Markdown incluye" +#~ " un modo de vista previa y " +#~ "admite temas oscuros." + +#~ msgid "Where can I get additional help?" +#~ msgstr "¿Dónde puedo obtener ayuda adicional?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "Informar problemas y solicitar funciones en" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "Como administrador, puede acceder a " +#~ "información y diagnósticos adicionales del " +#~ "sistema en la" + +#~ msgid "section." +#~ msgstr "sección." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "¿Aún necesitas ayuda?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "¿No encuentras lo que estás buscando? Aquí hay recursos adicionales:" + +#~ msgid "Complete Documentation" +#~ msgstr "" + +#~ msgid "Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started" +#~ msgstr "" + +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "Administración" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "Administración" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "Temporizadores inteligentes" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "Reiniciar" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "Repositorio GitHub" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Pausa" +#~ msgid "Report Issue" +#~ msgstr "Informar problema" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Open support" +#~ msgstr "Apoyo" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Sin temporizador activo." +#~ msgid "Search Results" +#~ msgstr "Resultados de la búsqueda" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "Buscar notas o etiquetas" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "Finalizar sesión" +#~ msgid "Results" +#~ msgstr "Resultados" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "¿Está seguro de que desea eliminar " +#~ "esta entrada de tiempo? Esta acción " +#~ "no se puede deshacer." -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "No results found" +#~ msgstr "No se encontraron resultados" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "Tiempo" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "Pruebe con una consulta diferente o revise su ortografía." -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "por ejemplo, reunión con el cliente, visita al sitio" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "Detalles adicionales..." -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "Configuración de horas extras" +#~ msgid "e.g., Office, Home" +#~ msgstr "por ejemplo, oficina, hogar" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "por ejemplo, sitio del cliente, aeropuerto" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "por ejemplo, 12345" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "por ejemplo, 12400" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "Alinear a la derecha" +#~ msgid "e.g., VW Golf" +#~ msgstr "por ejemplo, VW Golf" -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "Seguimiento del tiempo. Manténgase organizado." +#~ msgid "e.g., ABC-123" +#~ msgstr "por ejemplo, ABC-123" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "Horas totales trabajadas" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "Seguimiento del tiempo" -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "Alertas activas" +#~ msgid "Back to Mileage" +#~ msgstr "Volver a roles" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "Fecha desde" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "Add Point" +#~ msgstr "Agregar nota" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "Seguimiento de gastos" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "Valor estimado" +#~ msgid "Track ID" +#~ msgstr "Seguimiento" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Idle" +#~ msgstr "Título" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "Entradas de tiempo esta semana" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Tracking" +#~ msgstr "Seguimiento del tiempo" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "Semana" +#~ msgid "GPS tracking started" +#~ msgstr "Iniciar el seguimiento del tiempo" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "El año pasado" +#~ msgid "Track point added" +#~ msgstr "Seguimiento del pago" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "GPS tracking stopped" +#~ msgstr "Iniciar el seguimiento del tiempo" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Expense created" +#~ msgstr "Gasto rechazado" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Entradas recientes" +#~ msgid "Filter Mileage" +#~ msgstr "Filtrar kilometraje" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "Ver todo" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Reanudar: iniciar un nuevo temporizador con las mismas propiedades" +#~ msgid "Purpose, location..." +#~ msgstr "Finalidad, ubicación..." -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Editar entrada" +#~ msgid "Optional approval notes..." +#~ msgstr "Notas de aprobación opcionales..." -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Entrada duplicada" +#~ msgid "Rejection reason (required)" +#~ msgstr "Motivo del rechazo (obligatorio)" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Eliminar entrada" +#~ msgid "More navigation" +#~ msgstr "Navegación móvil" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "No se encontraron entradas recientes." +#~ msgid "Main" +#~ msgstr "Correo electrónico" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "Escribe un comando o busca..." -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Meta Semanal" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Días restantes" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Necesidad" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "para alcanzar la meta" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Sin objetivo semanal" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Establece un objetivo de tiempo semanal para seguir tu progreso" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Crear objetivo" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "Proyectos principales (30 días)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "Informe de usuario" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "Gráficos circulares de distribución del tiempo" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "Ninguna actividad en los últimos 30 días." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "Iniciar el seguimiento del tiempo" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Proyectos principales (30 días)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Ninguna actividad en los últimos 30 días." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "%(count)d cotizaciones duplicadas" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "Error al generar PDF: %(error)s" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "Soporte de plataforma" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "La contraseña debe tener al menos 8 caracteres" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "Guía de inicio rápido" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "Plantillas de correo electrónico" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Tarea (opcional)" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Notas (opcional)" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "Tarea (opcional)" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "por ejemplo, reunión, desarrollo, administración" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "Registrar nuevo pago" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "Pagos totales" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "Tarifas de entrada" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Filter Payments" +#~ msgstr "Filtrar pagos" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "ID" +#~ msgstr "Pagado" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "Eliminar pagos seleccionados" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Cambiar estado para pagos seleccionados" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "Factura relacionada" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "por ejemplo, viaje de negocios a Berlín" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "por ejemplo, DE, EE. UU., GB" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Desarrollo de soporte" +#~ msgid "e.g., Berlin" +#~ msgstr "por ejemplo, Berlín" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "Filtrar reclamaciones" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "Eliminar reclamaciones seleccionadas" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Cambiar estado para reclamos seleccionados" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "Notas adicionales sobre esta tarifa..." -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "¿Está seguro de que desea eliminar esta tarifa diaria?" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Eliminar tarifa diaria" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "Proyecto facturable" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "Horas estimadas" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "Monto del presupuesto" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "Nombre de la tarea" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "Código de proyecto" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "Create Project" +#~ msgstr "Crear proyecto" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Documentación completa y guía de usuario." +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Navegación rápida" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Filtrar secciones..." +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Inicio rápido" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Informes y análisis" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Funciones de productividad" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Funciones de administración" +#~ msgid "Kanban board columns" +#~ msgstr "Columnas del tablero Kanban" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Uso móvil" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "Documentación" +#~ msgid "Edit swimlane" +#~ msgstr "Editar carril" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Solución de problemas" +#~ msgid "Column" +#~ msgstr "Columna" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "Centro de ayuda de TimeTracker" +#~ msgid "List View" +#~ msgstr "Vista de lista" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "Todo lo que necesitas saber para sacarle el máximo partido a TimeTracker" +#~ msgid "Grid View" +#~ msgstr "Vista de cuadrícula" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Iniciar el seguimiento del tiempo" +#~ msgid "Rate" +#~ msgstr "Fecha" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Ver proyectos" +#~ msgid "Edit Project" +#~ msgstr "Editar proyecto" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Generar informes" +#~ msgid "Add Cost" +#~ msgstr "Agregar nota" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "Fichas API" +#~ msgid "Add Cost to Project" +#~ msgstr "Volver al proyecto" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "por ejemplo, viajar a una reunión con el cliente" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Guía de inicio rápido" +#~ msgid "Brief description of the cost" +#~ msgstr "Breve descripción de esta categoría..." -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "Para nuevos usuarios" +#~ msgid "Select category" +#~ msgstr "Categoría" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Inicie sesión con su nombre de usuario (no se requiere contraseña)" +#~ msgid "Materials" +#~ msgstr "Material" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Explore el panel para ver su descripción general" +#~ msgid "Software/Licenses" +#~ msgstr "por ejemplo, licencia de software" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Comience por primera vez en un proyecto existente" +#~ msgid "Additional details about this cost" +#~ msgstr "Detalles adicionales sobre este ajuste" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Ver sus entradas de tiempo en informes" +#~ msgid "Billable to client" +#~ msgstr "Volver al Cliente" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "Para administradores" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Configurar clientes en la sección Gestión de clientes" +#~ msgid "Add Extra Good" +#~ msgstr "Añadir extra bueno" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Crear proyectos y asignarlos a clientes." +#~ msgid "Add a product or service to" +#~ msgstr "Añadir un producto o servicio a" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Configurar los ajustes del sistema (zona horaria, moneda, etc.)" +#~ msgid "Back to Project" +#~ msgstr "Volver al proyecto" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Administrar usuarios y permisos" +#~ msgid "SKU/Product Code" +#~ msgstr "SKU/Código de producto" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Consejo profesional:" +#~ msgid "What happens when you archive a project?" +#~ msgstr "¿Qué sucede cuando archivas un proyecto?" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "Utilice la interfaz compatible con dispositivos móviles para realizar un seguimiento del tiempo mientras viaja. ¡El cronómetro continúa funcionando incluso si cierras el navegador!" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "El proyecto se ocultará de las listas de proyectos activos." -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "Seguimiento en tiempo real con detección automática de inactividad y actualizaciones de WebSocket" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "No se pueden agregar nuevas entradas de tiempo a este proyecto." -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Entrada manual" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "Se conservan los datos existentes y las entradas de tiempo." -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "Registre el tiempo manualmente con horas de inicio y finalización personalizadas" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "Puede desarchivar el proyecto más tarde si es necesario" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Iniciar un temporizador" +#~ msgid "Reason for Archiving" +#~ msgstr "Razón para archivar" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "por ejemplo, proyecto completado, contrato " +#~ "con el cliente finalizado, proyecto " +#~ "cancelado, etc." -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "Navegue a la página o panel del Temporizador" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "Agregar un motivo ayuda con la " +#~ "organización del proyecto y la " +#~ "referencia futura." -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Seleccione un proyecto del menú desplegable" +#~ msgid "Quick Select" +#~ msgstr "Selección rápida" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "Opcionalmente, seleccione una tarea para un seguimiento más detallado" +#~ msgid "Project completed successfully" +#~ msgstr "Proyecto completado con éxito" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Añade notas sobre en qué estás trabajando (opcional)" +#~ msgid "Project Completed" +#~ msgstr "Proyecto completado" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Agregar etiquetas separadas por comas (opcional)" +#~ msgid "Client contract ended" +#~ msgstr "Contrato de cliente finalizado" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Haga clic en \"Iniciar temporizador\"" +#~ msgid "Contract Ended" +#~ msgstr "Contrato finalizado" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Funciones del temporizador" +#~ msgid "Project cancelled by client" +#~ msgstr "Proyecto cancelado por cliente" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Visualización de la duración en tiempo real" +#~ msgid "Project on hold indefinitely" +#~ msgstr "Proyecto en suspenso indefinidamente" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "On Hold" +#~ msgstr "En espera" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Maintenance period ended" +#~ msgstr "Período de mantenimiento finalizado" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Maintenance Ended" +#~ msgstr "Mantenimiento finalizado" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Continúa ejecutándose si el navegador se cierra" +#~ msgid "Archive Project" +#~ msgstr "Proyecto de archivo" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Detección automática de inactividad (configurable)" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" +#~ "Configure un nuevo proyecto para " +#~ "organizar su trabajo y realizar un " +#~ "seguimiento del tiempo de forma eficaz" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Un temporizador activo por usuario (configurable)" +#~ msgid "Enter a descriptive project name" +#~ msgstr "Introduzca un nombre de proyecto descriptivo" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "Actualizaciones en vivo de WebSocket" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "" +#~ "Elija un nombre claro y descriptivo " +#~ "que explique el alcance del proyecto." -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Entrada manual de tiempo" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Código corto, por ejemplo, ABC" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "Cree entradas de tiempo manualmente cuando necesite registrar el tiempo pasado lejos de la computadora o ajustar las entradas existentes." +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Opcional: etiqueta corta que se muestra en las tarjetas Kanban" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Información requerida" +#~ msgid "Create new client" +#~ msgstr "Crear nuevo cliente" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Selección de proyectos" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "" +#~ "Proporcionar información detallada sobre el" +#~ " proyecto, objetivos y entregables..." -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Fecha y hora de inicio" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" +#~ "Opcional: agregue contexto, objetivos o " +#~ "requisitos específicos para el proyecto." -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Fecha y hora de finalización" +#~ msgid "Enable billing for this project" +#~ msgstr "Habilitar la facturación para este proyecto" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Información opcional" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "Dejar vacío para proyectos no facturables" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Asignación de tareas" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "Número de pedido, referencia del contrato, etc." -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Descripción/notas" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" +#~ "Opcional: agregue un número de " +#~ "referencia o identificador para fines de" +#~ " facturación." -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Etiquetas para categorización" +#~ msgid "e.g. 10000.00" +#~ msgstr "p.ej. 10000.00" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Anulación del estado facturable" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "" +#~ "Opcional: establezca un presupuesto total " +#~ "del proyecto para monitorear el gasto" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Funciones avanzadas de entrada de tiempo" +#~ msgid "Alert Threshold (%)" +#~ msgstr "Umbral de alerta (%)" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Entrada masiva" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "Notificar cuando el presupuesto consumido supere este umbral" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "Cree múltiples entradas de tiempo para días consecutivos con el mismo proyecto y duración. Perfecto para patrones de trabajo habituales." +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Plantillas" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "Guarde las entradas de tiempo utilizadas con frecuencia como plantillas para una reutilización rápida. Guarda proyectos, tareas y notas." +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "Visualice sus entradas de tiempo en un calendario. Arrastre y suelte para reprogramar o haga clic en fechas para agregar entradas." +#~ msgid "Project Creation Tips" +#~ msgstr "Consejos para la creación de proyectos" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Información del proyecto" +#~ msgid "Clear Naming" +#~ msgstr "Borrar nombres" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Nombre descriptivo del proyecto" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "" +#~ "Utilice nombres descriptivos que indiquen " +#~ "claramente el propósito del proyecto." -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Organización cliente asociada" +#~ msgid "Billing Setup" +#~ msgstr "Configuración de facturación" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Detalles y alcance del proyecto." +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Establezca tarifas por hora adecuadas " +#~ "según la complejidad del proyecto y " +#~ "el presupuesto del cliente." -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Activo, completado o archivado" +#~ msgid "Detailed Description" +#~ msgstr "Descripción detallada" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Información de facturación" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "Incluir objetivos del proyecto, entregables y requisitos clave." -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Si se debe realizar un seguimiento del tiempo para la facturación" +#~ msgid "Client Selection" +#~ msgstr "Selección de Cliente" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Tarifa para cálculos de tiempo facturable" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "" +#~ "Elija el cliente adecuado para " +#~ "garantizar una organización adecuada del " +#~ "proyecto" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Referencia de facturación" +#~ msgid "Creating..." +#~ msgstr "Creando..." -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "Número de orden de compra o código de facturación" +#~ msgid "Could not create client. Please try again." +#~ msgstr "No se pudo crear el cliente. Por favor inténtalo de nuevo." -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Operaciones del proyecto" +#~ msgid "Client created" +#~ msgstr "Cliente creado" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Crear nuevos proyectos con relaciones con los clientes." +#~ msgid "Network error while creating client" +#~ msgstr "Error de red al crear el cliente" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Edite proyectos existentes para actualizar los detalles" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "Panel de control y análisis del proyecto" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Archivar proyectos para ocultarlos de los temporizadores (conserva los datos)" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Eliminar proyectos (elimina todas las entradas de tiempo asociadas)" +#~ msgid "Budget Analysis" +#~ msgstr "Análisis de presupuesto" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Mejores prácticas" +#~ msgid "All Time" +#~ msgstr "Todo el tiempo" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Utilice nombres de proyecto descriptivos" +#~ msgid "Last 7 Days" +#~ msgstr "Últimos 7 días" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Establezca tarifas por hora precisas para la facturación" +#~ msgid "Last 30 Days" +#~ msgstr "Últimos 30 días" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Archivar en lugar de eliminar cuando sea posible" +#~ msgid "Last 3 Months" +#~ msgstr "Últimos 3 meses" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Utilice referencias de facturación para seguimiento externo" +#~ msgid "Last Year" +#~ msgstr "El año pasado" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "El sistema de gestión de clientes ayuda a organizar su trabajo por organizaciones clientes, evitando errores y agilizando la creación de proyectos." +#~ msgid "estimated" +#~ msgstr "estimado" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Información del cliente" +#~ msgid "Budget Used" +#~ msgstr "Presupuesto utilizado" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Nombre de la organización" +#~ msgid "of budget" +#~ msgstr "de presupuesto" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Nombre de la empresa o cliente" +#~ msgid "Tasks Complete" +#~ msgstr "Tareas completadas" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Detalles de contacto principal" +#~ msgid "completion" +#~ msgstr "terminación" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "Correo electrónico y teléfono" +#~ msgid "Team Members" +#~ msgstr "Miembros del equipo" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Información del contacto" +#~ msgid "contributing" +#~ msgstr "contribuyendo" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Dirección comercial" +#~ msgid "Budget vs. Actual" +#~ msgstr "Presupuesto versus real" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Beneficios" +#~ msgid "No budget set for this project" +#~ msgstr "No hay presupuesto establecido para este proyecto." -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "La selección desplegable evita errores tipográficos" +#~ msgid "Task Status Distribution" +#~ msgstr "Distribución del estado de la tarea" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Las tarifas predeterminadas completan automáticamente los proyectos" +#~ msgid "No tasks created yet" +#~ msgstr "Aún no se han creado tareas" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Nomenclatura consistente de clientes" +#~ msgid "Team Member Contributions" +#~ msgstr "Contribuciones de los miembros del equipo" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Organización de proyectos más sencilla" +#~ msgid "No time entries recorded yet" +#~ msgstr "Aún no se han registrado entradas de tiempo" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Recuento de proyectos" +#~ msgid "Time Tracking Timeline" +#~ msgstr "Línea de tiempo de seguimiento del tiempo" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Proyectos totales y activos" +#~ msgid "Select a time period to view timeline" +#~ msgstr "Seleccione un período de tiempo para ver la línea de tiempo" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Horas totales trabajadas" +#~ msgid "Team Member Details" +#~ msgstr "Detalles de los miembros del equipo" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Estimación de costos" +#~ msgid "tasks" +#~ msgstr "tareas" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Montos de facturación estimados" +#~ msgid "No team members have logged time yet" +#~ msgstr "Ningún miembro del equipo ha registrado tiempo todavía" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "Divida los proyectos en tareas manejables con seguimiento detallado y monitoreo del progreso." +#~ msgid "Attention Required" +#~ msgstr "Atención requerida" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Propiedades de la tarea" +#~ msgid "task(s) are overdue" +#~ msgstr "las tareas están atrasadas" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Nombre y descripción" +#~ msgid "Edit Cost" +#~ msgstr "Costo unitario" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Identificación clara de tareas" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Niveles de prioridad" +#~ msgid "Update Cost" +#~ msgstr "Actualizar roles" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Bajo, Medio, Alto, Urgente" +#~ msgid "Edit Extra Good" +#~ msgstr "Editar extra bueno" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Fechas de vencimiento" +#~ msgid "Manage products and services for this project" +#~ msgstr "Gestionar productos y servicios para este proyecto." -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Seguimiento de plazos" +#~ msgid "Total Goods" +#~ msgstr "Bienes totales" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Asignación" +#~ msgid "Billable Amount" +#~ msgstr "Monto facturable" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Propiedad de la tarea" +#~ msgid "Categories" +#~ msgstr "Categorías" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Seguimiento de estado" +#~ msgid "Invoiced" +#~ msgstr "Facturado" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "Tareas pendientes: no iniciadas" +#~ msgid "Non-billable" +#~ msgstr "No facturable" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "En progreso - Actualmente trabajando" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "¿Estás seguro de que quieres eliminar este bien extra?" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Revisión: listo para revisión" +#~ msgid "Delete Extra Good" +#~ msgstr "Eliminar extra bueno" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Hecho - Completado" +#~ msgid "No extra goods found for this project" +#~ msgstr "No se encontraron productos adicionales para este proyecto." -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Cancelado - No es necesario" +#~ msgid "Add Your First Good" +#~ msgstr "Añade tu primer bien" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Funciones de seguimiento del tiempo" +#~ msgid "Breakdown by Category" +#~ msgstr "Desglose por categoría" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Iniciar temporizadores directamente desde las tareas" +#~ msgid "item(s)" +#~ msgstr "elementos)" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Vincular entradas de tiempo a tareas específicas" +#~ msgid "Filter Projects" +#~ msgstr "Filtrar proyectos" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Seguimiento de las horas estimadas frente a las reales" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Monitorear el progreso de la tarea automáticamente" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Vistas de tareas" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Mis tareas: tus tareas asignadas" +#~ msgid "Mark project as Inactive?" +#~ msgstr "¿Marcar proyecto como inactivo?" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Todas las tareas: lista completa de tareas" +#~ msgid "Change Project Status" +#~ msgstr "Cambiar estado del proyecto" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Tareas vencidas: elementos vencidos" +#~ msgid "Activate project?" +#~ msgstr "¿Activar proyecto?" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Tareas del proyecto: tareas dentro de los proyectos" +#~ msgid "Activate Project" +#~ msgstr "Activar Proyecto" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Funciones de colaboración" +#~ msgid "Archive" +#~ msgstr "Archivo" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Comentarios de tareas: debates enhebrados sobre tareas" +#~ msgid "Unarchive project?" +#~ msgstr "¿Desarchivar proyecto?" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Soporte de Markdown: formato enriquecido en descripciones" +#~ msgid "Unarchive Project" +#~ msgstr "Desarchivar proyecto" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Menciones de usuario: etiquetar a los miembros del equipo (si está habilitado)" +#~ msgid "Unarchive" +#~ msgstr "Desarchivar" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Archivos adjuntos: adjunte archivos a las tareas (si está habilitado)" +#~ msgid "Delete Project" +#~ msgstr "Eliminar proyecto" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Formato de rebajas" +#~ msgid "Archive Information" +#~ msgstr "Archivar información" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "Las descripciones de tareas y proyectos admiten Markdown:" +#~ msgid "Archived on:" +#~ msgstr "Archivado en:" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Negrita**, *Cursiva*, ~~Tachado~~" +#~ msgid "Archived by:" +#~ msgstr "Archivado por:" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# Encabezados, - Listas, [Enlaces](url)" +#~ msgid "Reason:" +#~ msgstr "Razón:" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```bloques de código```, tablas, imágenes" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "Visualice su flujo de trabajo con un tablero Kanban de arrastrar y soltar para una gestión de tareas intuitiva." +#~ msgid "Budget Overview" +#~ msgstr "Resumen del presupuesto" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Características del tablero" +#~ msgid "Over" +#~ msgstr "Encima" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Columnas personalizables que coinciden con los estados de las tareas" +#~ msgid "View Full Budget Analysis" +#~ msgstr "Ver análisis presupuestario completo" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Arrastrar y soltar tareas entre columnas" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Filtrar por proyecto, usuario o prioridad" +#~ msgid "Tasks for this project" +#~ msgstr "Tareas para este proyecto." -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Búsqueda rápida en todas las tareas" +#~ msgid "Due" +#~ msgstr "Pendiente" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Usando el tablero Kanban" +#~ msgid "Estimated" +#~ msgstr "Estimado" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Acceso desde el menú Tareas o página del proyecto" +#~ msgid "No tasks for this project." +#~ msgstr "No hay tareas para este proyecto." -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Arrastre tareas a diferentes columnas para cambiar el estado" +#~ msgid "Move up" +#~ msgstr "se mudó a" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Haga clic en una tarjeta de tarea para ver/editar detalles" +#~ msgid "Move down" +#~ msgstr "se mudó a" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Utilice filtros para centrarse en un trabajo específico" +#~ msgid "Manual entry" +#~ msgstr "Entrada manual" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "El tablero Kanban es perfecto para la planificación de sprints y las reuniones diarias. ¡Cada columna representa una etapa de su flujo de trabajo!" +#~ msgid "From stock" +#~ msgstr "Existencias bajas" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Seguimiento de gastos" +#~ msgid "Duplicate" +#~ msgstr "Duplicado" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "Realice un seguimiento de los gastos comerciales, administre recibos y administre reembolsos de manera eficiente." +#~ msgid "Mark as Sent" +#~ msgstr "Marcar como enviado" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Características de gastos" +#~ msgid "Accepted" +#~ msgstr "Aceptado" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Categorizar gastos (viajes, comidas, suministros, etc.)" +#~ msgid "Create Your First Quote" +#~ msgstr "Crea tu primera cotización" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Adjunte imágenes y documentos de recibos" +#~ msgid "Learn More" +#~ msgstr "Más información" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Seguimiento de montos, impuestos y métodos de pago" +#~ msgid "Back to Quote" +#~ msgstr "Volver a Cotización" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Flujo de trabajo de aprobación para solicitudes de gastos" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" +#~ "Al aceptar esta cotización se creará " +#~ "un nuevo proyecto con el presupuesto " +#~ "de la cotización." -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Facturación y reembolso" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "El proyecto se creará con el presupuesto de la cotización." -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Marcar gastos como facturables a los clientes" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Aceptar cotización y crear proyecto" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Incluir gastos en las facturas de los clientes." +#~ msgid "Create Quote" +#~ msgstr "Crear cotización" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Seguimiento del estado del reembolso" +#~ msgid "Quote title" +#~ msgstr "Título de la cita" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Vincular gastos a proyectos específicos" +#~ msgid "Quote description" +#~ msgstr "Descripción de la cotización" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Gasto récord" +#~ msgid "Quote line items" +#~ msgstr "Artículos de cotización" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Ingrese los detalles y cargue el recibo" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Enviar para aprobación" +#~ msgid "Add line" +#~ msgstr "Fecha límite" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "El administrador revisa y aprueba" +#~ msgid "Line type" +#~ msgstr "Tipo de contenido" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Factura/Reembolso" +#~ msgid "Stock" +#~ msgstr "Existencias bajas" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Añadir a factura o reembolsar" +#~ msgid "Line items subtotal" +#~ msgstr "Subtotal de artículos" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Seguimiento del pago" +#~ msgid "Costs" +#~ msgstr "Costo" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Supervisar el estado del reembolso" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "por ejemplo, VIAJES, COMIDAS" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Facturación Profesional" +#~ msgid "Add cost" +#~ msgstr "Agregar nota" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Generación de PDF profesional" +#~ msgid "Costs subtotal" +#~ msgstr "Subtotal de artículos" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Marca y logotipos de la empresa." +#~ msgid "Extra goods" +#~ msgstr "Bienes adicionales" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Numeración automática de facturas" +#~ msgid "Products, licenses, hardware" +#~ msgstr "Productos, materiales, licencias y otros bienes." -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Cálculos de impuestos" +#~ msgid "Add good" +#~ msgstr "Añadir bueno" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Integración horaria" +#~ msgid "Goods subtotal" +#~ msgstr "Subtotal de mercancías" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Generar a partir de entradas de tiempo" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Cotizaciones totales" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Agrupación inteligente por tarea/proyecto" +#~ msgid "Financial Details" +#~ msgstr "Detalles financieros" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Evite la doble facturación" +#~ msgid "Select payment terms" +#~ msgstr "Seleccionar condiciones de pago" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Utilice tarifas por hora del proyecto" +#~ msgid "Due on Receipt" +#~ msgstr "Vencimiento al recibir" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Configurar los detalles del cliente y del proyecto" +#~ msgid "Or enter custom payment terms" +#~ msgstr "O ingrese condiciones de pago personalizadas" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Agregar elementos" +#~ msgid "Use custom terms" +#~ msgstr "Utilice términos personalizados" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Generar a partir del tiempo o agregar manualmente" +#~ msgid "Discount" +#~ msgstr "Descuento" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Revisar y enviar" +#~ msgid "Discount Type" +#~ msgstr "Tipo de descuento" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "Exportar PDF y actualizar estado" +#~ msgid "No Discount" +#~ msgstr "Sin descuento" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Monitorear el estado y los pagos" +#~ msgid "Percentage (%)" +#~ msgstr "Porcentaje (%)" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Informes estándar" +#~ msgid "Fixed Amount" +#~ msgstr "Monto Fijo" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Informe del proyecto: desglose del tiempo por proyecto" +#~ msgid "Discount Amount" +#~ msgstr "Cantidad de descuento" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Informe de usuario: métricas de rendimiento individuales" +#~ msgid "0.00" +#~ msgstr "0.00" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Informe resumido: métricas y tendencias clave" +#~ msgid "Coupon Code" +#~ msgstr "Código de cupón" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Informe de entrada de tiempo: registros de tiempo detallados" +#~ msgid "Optional coupon code" +#~ msgstr "Código de cupón opcional" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Opciones de exportación" +#~ msgid "Discount Reason" +#~ msgstr "Motivo del descuento" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "Exportación CSV: para análisis externo" +#~ msgid "Reason for discount" +#~ msgstr "Motivo del descuento" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Delimitadores configurables" +#~ msgid "Approval Workflow" +#~ msgstr "Flujo de trabajo de aprobación" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Rangos de fechas personalizados" +#~ msgid "Requires approval before sending" +#~ msgstr "Requiere aprobación antes de enviar" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Exportación de datos filtrados" +#~ msgid "Additional Information" +#~ msgstr "información adicional" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Opciones de filtro" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Notas internas (no visibles para el cliente)" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Intervalo de fechas: fechas de inicio y finalización personalizadas" +#~ msgid "These notes are only visible to your team" +#~ msgstr "Estas notas solo son visibles para tu equipo." -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Proyecto - Filtrar por proyectos específicos" +#~ msgid "Terms and Conditions" +#~ msgstr "Términos y condiciones" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Usuario - Filtrar por miembros del equipo" +#~ msgid "Terms and conditions" +#~ msgstr "Términos y condiciones" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Cliente - Filtrar por organización cliente" +#~ msgid "These terms will be visible to the client" +#~ msgstr "Estos términos serán visibles para el cliente." -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Filtros guardados: guarde los filtros utilizados con frecuencia" +#~ msgid "Edit Quote" +#~ msgstr "Editar cotización" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Análisis visuales" +#~ msgid "Client cannot be changed" +#~ msgstr "El cliente no se puede cambiar" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Gráficos de barras interactivos" +#~ msgid "Update Quote" +#~ msgstr "Actualizar cotización" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Gráficos circulares de distribución del tiempo" +#~ msgid "Total Quotes" +#~ msgstr "Cotizaciones totales" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Análisis de tendencias a lo largo del tiempo." +#~ msgid "Acceptance Rate" +#~ msgstr "Tasa de aceptación" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Gráficos optimizados para dispositivos móviles" +#~ msgid "Avg Quote Value" +#~ msgstr "Valor promedio de cotización" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "Utilice filtros guardados para acceder rápidamente a las vistas de informes más comunes. ¡Guarde filtros para revisiones semanales, facturación mensual o seguimiento de proyectos específicos!" +#~ msgid "Quotes by Status" +#~ msgstr "Cotizaciones por estado" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "Aumente su eficiencia con atajos de teclado, paleta de comandos y funciones de automatización." +#~ msgid "Top Clients by Quotes" +#~ msgstr "Principales clientes por cotizaciones" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Paleta de comandos" +#~ msgid "Filter Quotes" +#~ msgstr "Filtrar cotizaciones" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Accede a cualquier función al instante sin abandonar el teclado" +#~ msgid "Search quotes..." +#~ msgstr "Buscar cotizaciones..." -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Abrir la paleta de comandos" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "¿Estás seguro de que quieres duplicar?" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Presione la tecla del signo de interrogación" +#~ msgid "quote(s)?" +#~ msgstr "citas)?" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "búsqueda rápida" +#~ msgid "Are you sure you want to mark" +#~ msgstr "¿Estás seguro de que quieres marcar?" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Ir a Proyectos" +#~ msgid "quote(s) as sent?" +#~ msgstr "¿Cita(s) tal como se envió?" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Ir a Tareas" +#~ msgid "QUOTE" +#~ msgstr "CITA" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Nueva entrada de tiempo" +#~ msgid "Quote #" +#~ msgstr "Cita #" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Atajos de teclado" +#~ msgid "Quote For" +#~ msgstr "Cotización para" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "Navegue más rápido con comandos controlados por teclado. ¿Presionar Mayús+? para ver todos los atajos." +#~ msgid "Subtotal After Discount:" +#~ msgstr "Subtotal después del descuento:" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Búsqueda global" +#~ msgid "Description:" +#~ msgstr "Descripción:" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "Encuentre rápidamente proyectos, tareas, clientes y entradas de tiempo desde cualquier lugar de la aplicación." +#~ msgid "Subtotal After Discount" +#~ msgstr "Subtotal después del descuento" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "Notificaciones por correo electrónico" +#~ msgid "Approval not yet requested" +#~ msgstr "Aprobación aún no solicitada" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "Reciba notificaciones por correo electrónico sobre asignaciones de tareas, facturas vencidas y resúmenes semanales." +#~ msgid "Pending approval" +#~ msgstr "Pendiente de aprobación" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Funciones de administrador" +#~ msgid "Rejected by" +#~ msgstr "Rechazado por" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Cree nuevos usuarios con autenticación flexible" +#~ msgid "Request Approval Again" +#~ msgstr "Solicitar aprobación nuevamente" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Asignar roles personalizados con permisos específicos" +#~ msgid "Send Quote" +#~ msgstr "Enviar Cotización" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Activar/desactivar cuentas de usuario" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "¿Está seguro de que desea rechazar esta cotización?" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Ver estadísticas y actividad del usuario" +#~ msgid "Delete Quote" +#~ msgstr "Eliminar cotización" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Generar tokens API para los usuarios" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Comentario interno (no visible para el cliente)" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Control de acceso" +#~ msgid "Internal" +#~ msgstr "Interno" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Sistema granular de permisos basado en roles" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "¿Estás seguro de que quieres eliminar este comentario?" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Roles personalizados con acceso detallado" +#~ msgid "Write a reply..." +#~ msgstr "Escribe una respuesta..." -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Controles de acceso a los datos del usuario" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Aún no hay comentarios. Inicie la " +#~ "conversación agregando el primer comentario." -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "Integración OIDC/SSO (Azure AD, Authelia, etc.)" +#~ msgid "Sent At" +#~ msgstr "Enviado a" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "Gestión de tokens API para integraciones" +#~ msgid "Accepted At" +#~ msgstr "Aceptado en" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Métodos de autenticación" +#~ msgid "Send Quote via Email" +#~ msgstr "Enviar cotización por correo electrónico" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Solo nombre de usuario (uso interno simple)" +#~ msgid "Recipient Email" +#~ msgstr "Correo electrónico del destinatario" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (autenticación empresarial)" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "Cotización %(quote_number)s" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Ambos métodos simultáneamente" +#~ msgid "Custom Message (Optional)" +#~ msgstr "Mensaje personalizado (opcional)" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Asignación automática de roles a través de grupos" +#~ msgid "Add a custom message to the email..." +#~ msgstr "Añade un mensaje personalizado al correo electrónico..." -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Gestión de roles y permisos" +#~ msgid "Attach PDF" +#~ msgstr "Adjuntar PDF" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Cree roles personalizados más allá de Administrador/Usuario" +#~ msgid "Approve Quote" +#~ msgstr "Aprobar cotización" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Establecer permisos granulares por función" +#~ msgid "Notes (Optional)" +#~ msgstr "Notas (opcional)" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Asignar usuarios a múltiples roles" +#~ msgid "Add approval notes..." +#~ msgstr "Agregar notas de aprobación..." -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Ver y administrar todos los permisos" +#~ msgid "Reject Quote Approval" +#~ msgstr "Rechazar aprobación de cotización" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Configuraciones generales" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Indique el motivo del rechazo..." -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Configuración de zona horaria y localidad" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "¿Está seguro de que desea eliminar " +#~ "esta cita? Esta acción no se puede" +#~ " deshacer." -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Configuración de moneda" +#~ msgid "Create Recurring Invoice" +#~ msgstr "Crear factura recurrente" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Reglas de redondeo de tiempo" +#~ msgid "Update Recurring Invoice" +#~ msgstr "Actualizar factura recurrente" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Configuración de autorregistro" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "" +#~ "Automatice la generación de facturas " +#~ "para facturación basada en suscripción" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Configuración del temporizador" +#~ msgid "Frequency" +#~ msgstr "Frecuencia" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Configuración de tiempo de espera inactivo" +#~ msgid "Next Run" +#~ msgstr "Siguiente ejecución" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Modo de temporizador activo único" +#~ msgid "Generate Now" +#~ msgstr "Generar ahora" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Preferencias de visualización del temporizador" +#~ msgid "Template Details" +#~ msgstr "Detalles de la plantilla" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Configuración de notificaciones" +#~ msgid "Invoice Settings" +#~ msgstr "Configuración de factura" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Gestión de bases de datos" +#~ msgid "Recently Generated Invoices" +#~ msgstr "Facturas generadas recientemente" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Crear copias de seguridad de bases de datos manuales" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Ver el estado de migración de la base de datos" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Monitorear el rendimiento de la base de datos" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Limpiar datos y registros antiguos" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Monitoreo del sistema" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Ver información y estado del sistema" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Supervisar el rendimiento de la aplicación" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Revisar los registros y errores del sistema" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Funciones optimizadas para dispositivos móviles" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Optimizado para teléfonos y tabletas" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Interfaz táctil" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "Diseños adaptables para todos los tamaños de pantalla" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Alto contraste para visibilidad en exteriores" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Navegación móvil" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Barra de pestañas inferior para fácil acceso" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Acceso rápido al tablero" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Registro de tiempo con un solo toque" +#~ msgid "Assign To" +#~ msgstr "Asignar a" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Informes optimizados para dispositivos móviles" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Instalación" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Abra TimeTracker en su navegador móvil" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Busque la opción \"Agregar a la pantalla de inicio\"" +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Siga las instrucciones de instalación específicas del navegador" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Inicie desde su pantalla de inicio como una aplicación nativa" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "Beneficios de PWA" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Capacidad sin conexión para funciones básicas" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Tiempos de carga más rápidos" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Experiencia similar a una aplicación nativa" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Notificaciones push (donde sean compatibles)" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "Gráficos de barras interactivos" +#~ msgid "Add table to report" +#~ msgstr "Informes disponibles" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "Especificaciones técnicas" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Add chart to report" +#~ msgstr "Informes estándar" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "Documentación" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Solución de problemas y preguntas frecuentes" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "¿Qué sucede si olvido detener mi cronómetro?" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "El cronómetro seguirá funcionando hasta que lo detenga manualmente. Puede ver su temporizador activo en el panel y en la página del temporizador. El temporizador persiste incluso si cierra su navegador o reinicia su dispositivo. Si la detección de inactividad está habilitada, el temporizador puede pausarse automáticamente después del período de tiempo de espera configurado." +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "¿Puedo editar las entradas de tiempo después de crearlas?" +#~ msgid "Add summary to report" +#~ msgstr "Informe resumido" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "Sí, puede editar cualquier entrada de tiempo haciendo clic en el botón editar en la lista de entradas de tiempo. Puede modificar el proyecto, las horas de inicio/finalización, las notas, las etiquetas, el estado facturable y la asignación de tareas. Los administradores pueden editar todas las entradas de tiempo, mientras que los usuarios habituales sólo pueden editar sus propias entradas." +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "¿Cómo hago un seguimiento del tiempo para varios proyectos?" +#~ msgid "Report canvas" +#~ msgstr "Borrar lienzo" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "De forma predeterminada, sólo puedes tener un temporizador activo a la vez. Para cambiar de proyecto, detenga el cronómetro actual e inicie uno nuevo para el proyecto diferente. Alternativamente, puede crear entradas de tiempo manuales para trabajos anteriores o configurar el sistema para permitir múltiples temporizadores activos (configuración de administrador)." +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "¿Cómo exporto mis datos de tiempo?" +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "Vaya a la página Informes y utilice la función \"Exportar CSV\". Puede aplicar filtros para exportar datos específicos o exportar todas las entradas de tiempo. El archivo CSV incluye todos los detalles de entrada de tiempo y se puede abrir en Excel u otras aplicaciones de hojas de cálculo. También puede configurar el delimitador para diferentes estándares regionales." +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "¿Cuál es la diferencia entre tiempo facturable y no facturable?" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "El tiempo facturable se realiza un seguimiento para fines de facturación del cliente y puede tener una tarifa por hora asociada. El tiempo no facturable es para trabajo interno que no se cobra a los clientes. Puede marcar entradas de tiempo individuales como facturables o no facturables, y los proyectos pueden tener configuraciones facturables predeterminadas. Esta distinción es crucial para un análisis preciso de la facturación y la rentabilidad." +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "¿Cómo creo una factura a partir de mis entradas de tiempo?" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "Navegue a Facturas → Crear factura, configure los detalles del cliente y del proyecto, luego use \"Generar a partir de entradas de tiempo\" para crear automáticamente elementos de factura a partir de su tiempo registrado. Puede filtrar por rango de fechas y proyecto, y el sistema agrupará las entradas de tiempo de forma inteligente. Revise los elementos generados y expórtelos como un PDF profesional." +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "¿Puedo usar TimeTracker en mi dispositivo móvil?" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "¡Sí! TimeTracker responde completamente y funciona muy bien en dispositivos móviles. Puede instalarlo como una aplicación web progresiva (PWA) para disfrutar de una experiencia nativa. La interfaz móvil incluye una barra de pestañas inferior para facilitar la navegación y controles táctiles optimizados para realizar un seguimiento del tiempo mientras viaja." +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "¿Cómo uso la paleta de comandos y los atajos de teclado?" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "Presione la tecla del signo de interrogación (?) para abrir la paleta de comandos. Desde allí, puede escribir para buscar cualquier acción u objetivo de navegación. Utilice secuencias de teclado como \"g d\" para Panel de control, \"g p\" para Proyectos o \"n e\" para Nueva entrada. ¿Presionar Mayús+? para ver todos los atajos disponibles. Presione Ctrl+K (o Cmd+K en Mac) para una búsqueda rápida." +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "¿Cómo creo entradas de tiempo masivo para varios días?" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "Vaya a Trabajo → Entrada de tiempo masiva. Seleccione su proyecto, elija un rango de fechas, establezca sus horas de inicio y finalización diarias y, opcionalmente, omita los fines de semana. El sistema creará entradas de tiempo idénticas para cada día del rango. Esto es perfecto para registrar patrones de trabajo regulares o completar el tiempo pasado cuando trabajó horas constantes." +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "¿Qué son las plantillas de entrada de tiempo y cómo las uso?" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "Las plantillas de entrada de tiempo le permiten guardar configuraciones de entrada de tiempo utilizadas con frecuencia. Al crear una entrada de tiempo manual, marque \"Guardar como plantilla\" para guardar el proyecto, la tarea y las notas. Más adelante, al crear nuevas entradas, podrá seleccionar una plantilla para completar rápidamente estos detalles. Las plantillas son personales y sólo usted puede verlas." +#~ msgid "Private" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "¿Cómo hago un seguimiento de los gastos y los agrego a las facturas?" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "Vaya a Gastos → Nuevo gasto para registrar los gastos comerciales. Cargue imágenes de recibos, categorice el gasto y márquelo como facturable si es necesario. Al crear facturas, puede incluir estos gastos como partidas individuales. Los gastos respaldan los flujos de trabajo de aprobación, el seguimiento de reembolsos y se pueden vincular a proyectos específicos." +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "¿Puedo usar Markdown en las descripciones?" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "¡Sí! Las descripciones de proyectos y tareas admiten el formato Markdown completo. Puede utilizar negrita, cursiva, títulos, listas, enlaces, bloques de código, tablas e imágenes. Esto le permite crear documentación rica y bien formateada directamente en sus proyectos y tareas. El editor Markdown incluye un modo de vista previa y admite temas oscuros." +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "¿Dónde puedo obtener ayuda adicional?" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Informar problemas y solicitar funciones en" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "Como administrador, puede acceder a información y diagnósticos adicionales del sistema en la" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "sección." +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "¿Aún necesitas ayuda?" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "¿No encuentras lo que estás buscando? Aquí hay recursos adicionales:" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "Repositorio GitHub" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Informar problema" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "Export Time Entries" +#~ msgstr "Entradas de tiempo recientes" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "Apoyo" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Resultados de la búsqueda" +#~ msgid "Export format" +#~ msgstr "Formato de exportación" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Buscar notas o etiquetas" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "por ejemplo, desarrollo, reunión, urgente" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Resultados" +#~ msgid "Reset Filters" +#~ msgstr "Filtros guardados" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "¿Está seguro de que desea eliminar esta entrada de tiempo? Esta acción no se puede deshacer." +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "No se encontraron resultados" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Pruebe con una consulta diferente o revise su ortografía." +#~ msgid "Please select both start and end dates." +#~ msgstr "Intervalo de fechas: fechas de inicio y finalización personalizadas" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "por ejemplo, reunión con el cliente, visita al sitio" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "La fecha de inicio debe ser anterior a la fecha de finalización." -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Detalles adicionales..." +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "por ejemplo, oficina, hogar" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "por ejemplo, sitio del cliente, aeropuerto" +#~ msgid "Payments Received" +#~ msgstr "Campos de pago" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "por ejemplo, 12345" +#~ msgid "Net Received" +#~ msgstr "Recibió" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "por ejemplo, 12400" +#~ msgid "After fees" +#~ msgstr "Tarifas de entrada" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "por ejemplo, VW Golf" +#~ msgid "Date Range & Comparison" +#~ msgstr "Rango de fechas y comparación" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "por ejemplo, ABC-123" +#~ msgid "Quick Date Ranges" +#~ msgstr "Rangos de fechas rápidas" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "Seguimiento del tiempo" +#~ msgid "This Week" +#~ msgstr "Semana" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "Volver a roles" +#~ msgid "This Month" +#~ msgstr "Mes" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "This Year" +#~ msgstr "El año pasado" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "Fecha desde" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "Agregar nota" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "Seguimiento de gastos" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "Seguimiento" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "Título" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "Rangos de fechas personalizados" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "Comparison View" +#~ msgstr "Vista comparativa" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "Seguimiento del tiempo" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "Iniciar el seguimiento del tiempo" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "Seguimiento del pago" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "Iniciar el seguimiento del tiempo" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "Gasto rechazado" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Filtrar kilometraje" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "Vista previa en vivo" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Finalidad, ubicación..." +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Notas de aprobación opcionales..." +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Motivo del rechazo (obligatorio)" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "Navegación móvil" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "Correo electrónico" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Escribe un comando o busca..." +#~ msgid "Comparison Results" +#~ msgstr "Resultados de la comparación" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "Exportar informes" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "Formato de exportación" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "Exportar informes" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Informes programados" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "Importación CSV" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "Exportar" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "Report Types" +#~ msgstr "Tipos de informes" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "Informe del proyecto" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "User Report" +#~ msgstr "Informe de usuario" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "Informe resumido" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "Informe de tarea" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "Entradas de tiempo" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "Entradas recientes" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "No scheduled reports yet." +#~ msgstr "Informes programados" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Add Scheduled Report" +#~ msgstr "Informes programados" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Please set a date range" +#~ msgstr "Rangos de fechas personalizados" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Registrar nuevo pago" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Pagos totales" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Tarifas de entrada" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Filtrar pagos" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "Pagado" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Eliminar pagos seleccionados" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Cambiar estado para pagos seleccionados" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Factura relacionada" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "por ejemplo, viaje de negocios a Berlín" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "por ejemplo, DE, EE. UU., GB" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "por ejemplo, Berlín" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Filtrar reclamaciones" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Eliminar reclamaciones seleccionadas" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Cambiar estado para reclamos seleccionados" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Notas adicionales sobre esta tarifa..." +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "¿Está seguro de que desea eliminar esta tarifa diaria?" +#~ msgid "No data for the selected period." +#~ msgstr "No se encontraron datos de ventas para el período seleccionado." -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Eliminar tarifa diaria" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Proyecto facturable" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Horas estimadas" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Monto del presupuesto" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "Nombre de la tarea" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Código de proyecto" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Crear proyecto" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Columnas del tablero Kanban" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Editar carril" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Columna" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Vista de lista" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Vista de cuadrícula" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "Fecha" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Editar proyecto" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "Agregar nota" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "Volver al proyecto" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "por ejemplo, viajar a una reunión con el cliente" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "Breve descripción de esta categoría..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "Categoría" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "Material" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "por ejemplo, licencia de software" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "Detalles adicionales sobre este ajuste" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "Volver al Cliente" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Añadir extra bueno" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Añadir un producto o servicio a" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Volver al proyecto" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "SKU/Código de producto" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "¿Qué sucede cuando archivas un proyecto?" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "El proyecto se ocultará de las listas de proyectos activos." +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "No se pueden agregar nuevas entradas de tiempo a este proyecto." +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "Se conservan los datos existentes y las entradas de tiempo." +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Puede desarchivar el proyecto más tarde si es necesario" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Razón para archivar" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Proyectos principales (30 días)" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "por ejemplo, proyecto completado, contrato con el cliente finalizado, proyecto cancelado, etc." +#~ msgid "Time distribution by project" +#~ msgstr "Gráficos circulares de distribución del tiempo" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "Agregar un motivo ayuda con la organización del proyecto y la referencia futura." +#~ msgid "No project data for the last 30 days." +#~ msgstr "Ninguna actividad en los últimos 30 días." -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Selección rápida" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Proyecto completado con éxito" +#~ msgid "Daily hours trend" +#~ msgstr "Tendencia de horas diarias" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Proyecto completado" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Contrato de cliente finalizado" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Contrato finalizado" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Proyecto cancelado por cliente" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Proyecto en suspenso indefinidamente" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "En espera" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Período de mantenimiento finalizado" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Mantenimiento finalizado" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Proyecto de archivo" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "Configure un nuevo proyecto para organizar su trabajo y realizar un seguimiento del tiempo de forma eficaz" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Introduzca un nombre de proyecto descriptivo" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Elija un nombre claro y descriptivo que explique el alcance del proyecto." - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Código corto, por ejemplo, ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Opcional: etiqueta corta que se muestra en las tarjetas Kanban" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Crear nuevo cliente" +#~ msgid "No trend data." +#~ msgstr "Datos de cotización" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "Proporcionar información detallada sobre el proyecto, objetivos y entregables..." +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Proyectos principales (30 días)" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "Opcional: agregue contexto, objetivos o requisitos específicos para el proyecto." +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "No se encontraron datos de ventas para el período seleccionado." -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Habilitar la facturación para este proyecto" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "Dejar vacío para proyectos no facturables" +#~ msgid "All Clients" +#~ msgstr "Clientela" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "Número de pedido, referencia del contrato, etc." +#~ msgid "All Tasks" +#~ msgstr "Ver todas las tareas" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "Opcional: agregue un número de referencia o identificador para fines de facturación." +#~ msgid "No time entries found for the selected filters." +#~ msgstr "No se encontraron datos de ventas para el período seleccionado." -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "p.ej. 10000.00" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "Opcional: establezca un presupuesto total del proyecto para monitorear el gasto" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Umbral de alerta (%)" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Notificar cuando el presupuesto consumido supere este umbral" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Consejos para la creación de proyectos" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Borrar nombres" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "Pruebe con una consulta diferente o revise su ortografía." -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Utilice nombres descriptivos que indiquen claramente el propósito del proyecto." +#~ msgid "About Overtime Tracking" +#~ msgstr "Acerca del seguimiento de horas extras" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Configuración de facturación" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "Establezca tarifas por hora adecuadas según la complejidad del proyecto y el presupuesto del cliente." +#~ msgid "Back to Reports" +#~ msgstr "Volver a roles" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Descripción detallada" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "Entradas de tiempo esta semana" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "Incluir objetivos del proyecto, entregables y requisitos clave." +#~ msgid "Top projects this week" +#~ msgstr "Proyectos principales" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Selección de Cliente" +#~ msgid "No time logged this week yet." +#~ msgstr "Aún no se han registrado entradas de tiempo para esta semana" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "Elija el cliente adecuado para garantizar una organización adecuada del proyecto" +#~ msgid "Apply filter" +#~ msgstr "Aplicar filtro" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Creando..." +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "¿Estás seguro de que deseas eliminar este filtro?" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "No se pudo crear el cliente. Por favor inténtalo de nuevo." +#~ msgid "Delete Filter" +#~ msgstr "Eliminar filtro" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Cliente creado" +#~ msgid "Go to Reports" +#~ msgstr "Informe de stock bajo" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Error de red al crear el cliente" +#~ msgid "No saved filters yet" +#~ msgstr "Filtros guardados" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "Panel de control y análisis del proyecto" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "Customize Shortcuts" +#~ msgstr "Personalizar atajos" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Análisis de presupuesto" +#~ msgid "Search shortcuts..." +#~ msgstr "Buscar atajos..." -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Todo el tiempo" +#~ msgid "Save changes" +#~ msgstr "Guardar cambios" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "Últimos 7 días" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "Últimos 30 días" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "Últimos 3 meses" +#~ msgid "Click to record" +#~ msgstr "Arrastra para reordenar" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "El año pasado" +#~ msgid "Revert" +#~ msgstr "Reiniciar" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "estimado" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Presupuesto utilizado" +#~ msgid "Failed to save" +#~ msgstr "No se pudo detener el cronómetro" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "de presupuesto" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Tareas completadas" +#~ msgid "Failed to save shortcuts." +#~ msgstr "No se pudo actualizar el estado" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "terminación" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "Esto restablecerá todos los atajos de" +#~ " teclado a sus valores predeterminados. " +#~ "¿Continuar?" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Miembros del equipo" +#~ msgid "Reset to Defaults" +#~ msgstr "Restablecer los valores predeterminados" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "contribuyendo" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "¿Restablecer los valores predeterminados?" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Presupuesto versus real" +#~ msgid "Failed to reset" +#~ msgstr "No se pudo eliminar el avatar." -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "No hay presupuesto establecido para este proyecto." +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Restablecer los valores predeterminados" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Distribución del estado de la tarea" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "No se pudo actualizar el estado" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Aún no se han creado tareas" +#~ msgid "Failed to load shortcuts." +#~ msgstr "No se pudieron cargar las tareas" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Contribuciones de los miembros del equipo" +#~ msgid "Welcome" +#~ msgstr "Bienvenido" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Aún no se han registrado entradas de tiempo" +#~ msgid "Privacy First" +#~ msgstr "Privacidad primero" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Línea de tiempo de seguimiento del tiempo" +#~ msgid "Self-hosted on your server" +#~ msgstr "Autohospedado en su servidor" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Seleccione un período de tiempo para ver la línea de tiempo" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Telemetría anónima (optar por participar)" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Detalles de los miembros del equipo" +#~ msgid "No PII collected ever" +#~ msgstr "Nunca se recopiló PII" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "tareas" +#~ msgid "Open source & transparent" +#~ msgstr "Código abierto y transparente" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Ningún miembro del equipo ha registrado tiempo todavía" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Atención requerida" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "las tareas están atrasadas" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "Costo unitario" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Bienvenido a TimeTracker" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "Vamos a configurarlo en un momento." -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "Actualizar roles" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Editar extra bueno" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Gestionar productos y servicios para este proyecto." - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Bienes totales" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Monto facturable" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Categorías" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "Facturado" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "No facturable" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "¿Estás seguro de que quieres eliminar este bien extra?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Eliminar extra bueno" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "No se encontraron productos adicionales para este proyecto." - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Añade tu primer bien" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Desglose por categoría" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "elementos)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Filtrar proyectos" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "¡Gracias por elegir TimeTracker!" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "Tus datos permanecen en tu servidor y tú tienes control total." -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "Region & time" +#~ msgstr "Hora de finalización" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "¿Marcar proyecto como inactivo?" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Cambiar estado del proyecto" +#~ msgid "Timezone" +#~ msgstr "Zona horaria" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "¿Activar proyecto?" +#~ msgid "Date format" +#~ msgstr "Formato de fecha" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Activar Proyecto" +#~ msgid "Time format" +#~ msgstr "Formato de hora" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Archivo" +#~ msgid "24-hour" +#~ msgstr "horas" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "¿Desarchivar proyecto?" +#~ msgid "12-hour" +#~ msgstr "horas" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Desarchivar proyecto" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Desarchivar" +#~ msgid "Company name" +#~ msgstr "nombre de empresa" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Eliminar proyecto" +#~ msgid "Your Company Name" +#~ msgstr "El nombre de tu empresa" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Archivar información" +#~ msgid "Your Company Address" +#~ msgstr "La dirección de tu empresa" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Archivado en:" +#~ msgid "App behavior and timer settings." +#~ msgstr "Configuración de horas extras" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Archivado por:" +#~ msgid "Allow self-registration" +#~ msgstr "Configuración de autorregistro" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Razón:" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Reglas de redondeo de tiempo" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Resumen del presupuesto" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Entradas de tiempo redondeadas a intervalos configurados" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Encima" +#~ msgid "Single active timer per user" +#~ msgstr "Modo de temporizador activo único" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Ver análisis presupuestario completo" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Configuración de tiempo de espera inactivo" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Tareas para este proyecto." - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Pendiente" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Estimado" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "No hay tareas para este proyecto." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "se mudó a" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "se mudó a" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "Entrada manual" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "Existencias bajas" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Duplicado" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Marcar como enviado" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Aceptado" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Crea tu primera cotización" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Más información" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Volver a Cotización" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "Al aceptar esta cotización se creará un nuevo proyecto con el presupuesto de la cotización." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "El proyecto se creará con el presupuesto de la cotización." - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Aceptar cotización y crear proyecto" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Crear cotización" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Título de la cita" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Descripción de la cotización" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "Artículos de cotización" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "Fecha límite" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "Tipo de contenido" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "Existencias bajas" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "Subtotal de artículos" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "Costo" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "por ejemplo, VIAJES, COMIDAS" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "Agregar nota" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "Subtotal de artículos" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "Bienes adicionales" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "Productos, materiales, licencias y otros bienes." - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "Añadir bueno" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "Subtotal de mercancías" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "Cotizaciones totales" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Detalles financieros" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Seleccionar condiciones de pago" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "Vencimiento al recibir" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "O ingrese condiciones de pago personalizadas" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Utilice términos personalizados" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Descuento" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Tipo de descuento" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Sin descuento" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "Porcentaje (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Monto Fijo" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Cantidad de descuento" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0.00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Código de cupón" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Código de cupón opcional" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Motivo del descuento" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Motivo del descuento" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Flujo de trabajo de aprobación" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Requiere aprobación antes de enviar" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "información adicional" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Notas internas (no visibles para el cliente)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Estas notas solo son visibles para tu equipo." - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Términos y condiciones" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Términos y condiciones" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Estos términos serán visibles para el cliente." - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Editar cotización" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "El cliente no se puede cambiar" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Actualizar cotización" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Cotizaciones totales" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Tasa de aceptación" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Valor promedio de cotización" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Cotizaciones por estado" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Principales clientes por cotizaciones" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Filtrar cotizaciones" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Buscar cotizaciones..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "¿Estás seguro de que quieres duplicar?" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "citas)?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "¿Estás seguro de que quieres marcar?" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "¿Cita(s) tal como se envió?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "CITA" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Cita #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Cotización para" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Subtotal después del descuento:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Descripción:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Subtotal después del descuento" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Aprobación aún no solicitada" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "Pendiente de aprobación" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Rechazado por" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Solicitar aprobación nuevamente" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Enviar Cotización" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "¿Está seguro de que desea rechazar esta cotización?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Eliminar cotización" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Comentario interno (no visible para el cliente)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Interno" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "¿Estás seguro de que quieres eliminar este comentario?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Escribe una respuesta..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "Aún no hay comentarios. Inicie la conversación agregando el primer comentario." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Enviado a" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Aceptado en" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Enviar cotización por correo electrónico" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "Correo electrónico del destinatario" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "Cotización %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Mensaje personalizado (opcional)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Añade un mensaje personalizado al correo electrónico..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "Adjuntar PDF" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Aprobar cotización" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Notas (opcional)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Agregar notas de aprobación..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Rechazar aprobación de cotización" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Indique el motivo del rechazo..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "¿Está seguro de que desea eliminar esta cita? Esta acción no se puede deshacer." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Crear factura recurrente" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "Actualizar factura recurrente" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Automatice la generación de facturas para facturación basada en suscripción" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Frecuencia" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Siguiente ejecución" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Generar ahora" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Detalles de la plantilla" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Configuración de factura" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Facturas generadas recientemente" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "Privacidad primero" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Asignar a" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Habilitar telemetría anónima" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "Ayúdenos a comprender los patrones de uso para mejorar TimeTracker" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "¿Qué datos se recogen?" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "Qué recopilamos:" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Huella digital de instalación anónima (en hash)" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Application version & platform info" +#~ msgstr "Versión de la aplicación e información de la plataforma" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "Estadísticas de uso de funciones" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "Lo que NO recopilamos:" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "Sin nombres de usuario ni correos electrónicos" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "Sin datos de entrada de tiempo ni notas" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "Sin datos de clientes o empresas" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "Puedes cambiar esto en cualquier momento en" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "Informes disponibles" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "Al continuar, acepta utilizar TimeTracker bajo las condiciones" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "Licencia GPL-3.0" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "Informes estándar" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Completar la configuración y continuar" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "Editar tarea" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "No se pudo actualizar el estado" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "No se pudo actualizar el estado de la tarea" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "Columna Kanban creada" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "Columna Kanban eliminada" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "Informe resumido" +#~ msgid "Kanban columns reordered" +#~ msgstr "Columnas Kanban reordenadas" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "La visibilidad de la columna Kanban cambió" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "Borrar lienzo" +#~ msgid "Kanban columns updated" +#~ msgstr "Columnas Kanban actualizadas" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Update" +#~ msgstr "Actualizar" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "No se pudieron actualizar las columnas kanban" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "Cargando detalles de la tarea..." -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Tracked" +#~ msgstr "Seguimiento" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "Ver todos los detalles" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "Volver a Tareas" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" +#~ "Agregue una nueva tarea a su " +#~ "proyecto para dividir el trabajo en " +#~ "componentes manejables" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "Introduzca un nombre de tarea descriptivo" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "Elija un nombre claro y descriptivo que explique lo que se debe hacer." -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Proporcione información detallada sobre la " +#~ "tarea, los requisitos y cualquier " +#~ "instrucción específica..." -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" +#~ "Opcional: agregue contexto, requisitos o " +#~ "instrucciones específicas para la tarea." -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Seleccione el proyecto al que pertenece esta tarea" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "Estado inicial" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Done" +#~ msgstr "Hecho" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Opcional: establezca una fecha límite para esta tarea" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Opcional: calcule cuánto tiempo llevará esta tarea" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Opcional: asigne esta tarea a un miembro del equipo" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Etiquetas para categorización" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "Consejos para la creación de tareas" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "Utilice verbos de acción y sea específico sobre lo que se debe hacer." -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "Estimaciones realistas" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "Considere la complejidad y las dependencias al estimar el tiempo." -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "Establecer plazos" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" +#~ "Las fechas de vencimiento ayudan a " +#~ "priorizar el trabajo y realizar un " +#~ "seguimiento del progreso" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "Asuntos prioritarios" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Utilice niveles de prioridad para ayudar" +#~ " a los miembros del equipo a " +#~ "centrarse en lo más importante" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "Volver a la tarea" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "" +#~ "Actualizar los detalles y la " +#~ "configuración de la tarea para " +#~ "\"%(task)s\"" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "Información de la tarea" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "Actualizar tarea" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "Estimación utilizada" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Actual" +#~ msgstr "Actual" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "Current Task Info" +#~ msgstr "Información de la tarea actual" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Current Status" +#~ msgstr "Estado actual" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "Prioridad actual" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "Actualmente asignado a" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "Fecha de vencimiento actual" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "Entradas de tiempo recientes" +#~ msgid "Current Estimate" +#~ msgstr "Estimación actual" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "Horas reales" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "Formato de exportación" +#~ msgid "Started" +#~ msgstr "Comenzó" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "por ejemplo, desarrollo, reunión, urgente" +#~ msgid "Edit Tips" +#~ msgstr "Editar consejos" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "Filtros guardados" +#~ msgid "Status Changes" +#~ msgstr "Cambios de estado" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "" +#~ "El cambio de estado puede afectar " +#~ "el seguimiento del tiempo y los " +#~ "cálculos de progreso" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "Actualizaciones de fecha de vencimiento" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "Intervalo de fechas: fechas de inicio y finalización personalizadas" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "Considere la carga de trabajo del equipo al ajustar los plazos" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "La fecha de inicio debe ser anterior a la fecha de finalización." +#~ msgid "Assignment Changes" +#~ msgstr "Cambios de asignación" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "Notificar a los miembros del equipo al reasignar tareas" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "Updating..." +#~ msgstr "Actualizando..." -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "Campos de pago" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "Recibió" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "Tarifas de entrada" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Rango de fechas y comparación" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Rangos de fechas rápidas" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "Semana" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "Mes" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "El año pasado" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "Rangos de fechas personalizados" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "Vista comparativa" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "Vista previa en vivo" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "Filtrar tareas" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "Interfaz" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Eliminar tareas seleccionadas" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Cambiar estado de tareas seleccionadas" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "Asignar tareas seleccionadas" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Resultados de la comparación" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Exportar informes" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Formato de exportación" - -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "Exportar informes" - -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "Informes programados" - -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "Importación CSV" - -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "Exportar" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "Tipos de informes" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "Informe del proyecto" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Informe de usuario" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Informe resumido" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Informe de tarea" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "Entradas de tiempo" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "Asignar tareas" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Mover tareas seleccionadas al proyecto" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "Seleccionar Proyecto" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "Mover tareas" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "¿Está seguro de que desea eliminar la tarea \"{name}\"?" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "Entradas recientes" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "No se puede eliminar la tarea " +#~ "\"{nombre}\" porque tiene entradas de " +#~ "tiempo. Primero elimine las entradas de" +#~ " tiempo." -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "Informes programados" +#~ msgid "Delete Task" +#~ msgstr "Eliminar tarea" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "Informes programados" +#~ msgid "My Tasks" +#~ msgstr "Mis tareas" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "Rangos de fechas personalizados" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Tareas asignadas o creadas por usted" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "total" +#~ msgstr "total" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "Filtrar mis tareas" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "Nombre o descripción de la tarea" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "Todas las prioridades" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "Tipo de tarea" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "Asignado a mí" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "Creado por mí" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "Mostrar solo vencidos" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "Creado por mi" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "Paginación de mis tareas." -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "No se encontraron tareas" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Aún no tienes ninguna tarea asignada o creada por ti." -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "Crea tu primera tarea" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "Ver todas las tareas" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "Tareas atrasadas" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "Requiere atención inmediata" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "items" +#~ msgstr "elementos" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "There are" +#~ msgstr "Hay" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "No se encontraron datos de ventas para el período seleccionado." +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "Revise y actualice estas tareas para evitar más retrasos." -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Due:" +#~ msgstr "Pendiente:" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Est:" +#~ msgstr "Est:" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Actual:" +#~ msgstr "Actual:" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "Fechas de vencimiento" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "Fechas de vencimiento" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "Gestión de proyectos" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "Todas las prioridades" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "¡Sin tareas atrasadas!" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "¡Buen trabajo! Todas las tareas están actualmente según lo previsto." -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Ingrese la nueva fecha de vencimiento (AAAA-MM-DD):" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "¿Está seguro de que desea extender la fecha de vencimiento a" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "para todas las tareas atrasadas?" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "Introduzca una nueva prioridad (baja/media/alta/urgente):" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "¿Está seguro de que desea establecer prioridad para" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "Prioridad no válida. Utilice: bajo, medio, alto o urgente" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "No se pudo actualizar el objetivo. Por favor inténtalo de nuevo." -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "¿Iniciar tarea y marcarla como En progreso?" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "Cambiar estado de tarea" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "¿Marcar tarea como Por hacer?" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "¿Marcar tarea como terminada?" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "Completar tarea" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Complete" +#~ msgstr "Completo" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "¿Reabrir tarea para revisar?" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "Reabrir tarea" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "Reabrir" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "Detalles y alcance del proyecto." -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "Crear plantilla de entrada de tiempo" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "por ejemplo, reunión diaria, reunión con el cliente" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "por ejemplo, 1,0, 0,5" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Notas precompletadas para este tipo de entrada de tiempo" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "por ejemplo, reunión, desarrollo, administración" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "Editar plantilla" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "¿Estás seguro de que deseas eliminar esta plantilla?" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "Eliminar plantilla" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "Create Your First Template" +#~ msgstr "Crea tu primera tarea" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "Plantillas" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" +#~ "Cree su primera plantilla de correo " +#~ "electrónico para personalizar los correos " +#~ "electrónicos de facturas." -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "Usage Statistics" +#~ msgstr "Estadísticas de uso" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "Proyectos principales (30 días)" +#~ msgid "selected" +#~ msgstr "" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "Gráficos circulares de distribución del tiempo" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "Ninguna actividad en los últimos 30 días." +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "Tendencia de horas diarias" +#~ msgid "Click to edit" +#~ msgstr "Volver a editar" -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "Datos de cotización" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "Proyectos principales (30 días)" +#~ msgid "Request approval" +#~ msgstr "Solicitar aprobación" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "No se encontraron datos de ventas para el período seleccionado." +#~ msgid "Clear filters" +#~ msgstr "Alternar filtros" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "Sin datos de entrada de tiempo ni notas" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "Clientela" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "Ver todas las tareas" +#~ msgid "No time entries yet" +#~ msgstr "Aún no se han registrado entradas de tiempo" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "No se encontraron datos de ventas para el período seleccionado." +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "Paginación de mis tareas." -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "Entrada manual de tiempo" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "Entrada de tiempo" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "¿Cómo creo entradas de tiempo masivo para varios días?" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "Entrada masiva" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "Proyecto seleccionado no encontrado" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Las tareas se cargan después de seleccionar un proyecto." -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "Rango de tiempo" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "Pruebe con una consulta diferente o revise su ortografía." +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "Acerca del seguimiento de horas extras" +#~ msgid "Entries will be created for these dates" +#~ msgstr "Las entradas de tiempo se redondearán a este intervalo." -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "Temporizadores inteligentes" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "Volver a roles" - -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "Entradas de tiempo esta semana" - -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "Proyectos principales" - -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "Aún no se han registrado entradas de tiempo para esta semana" - -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Aplicar filtro" - -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "¿Estás seguro de que deseas eliminar este filtro?" - -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Eliminar filtro" - -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "Informe de stock bajo" - -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "Filtros guardados" - -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Personalizar atajos" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Buscar atajos..." +#~ msgid "tag1, tag2, tag3" +#~ msgstr "etiqueta1, etiqueta2" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "Guardar cambios" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "Filtrar facturas" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Create Entries" +#~ msgstr "Entradas recientes" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "Arrastra para reordenar" +#~ msgid "Bulk Entry Tips" +#~ msgstr "Entrada masiva" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "Reiniciar" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "Skip Weekends" +#~ msgstr "Tendencias semanales" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "No se pudo detener el cronómetro" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "Plazo de entrega (días)" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "No se pudo actualizar el estado" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "Esto restablecerá todos los atajos de teclado a sus valores predeterminados. ¿Continuar?" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Restablecer los valores predeterminados" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "¿Restablecer los valores predeterminados?" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "No se pudo eliminar el avatar." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "Restablecer los valores predeterminados" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "No se pudo actualizar el estado" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "No se pudieron cargar las tareas" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Bienvenido" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "Privacidad primero" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Autohospedado en su servidor" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Telemetría anónima (optar por participar)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "Nunca se recopiló PII" - -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Código abierto y transparente" - -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Bienvenido a TimeTracker" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "Vamos a configurarlo en un momento." +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "¡Gracias por elegir TimeTracker!" +#~ msgid "Failed to load tasks" +#~ msgstr "No se pudieron cargar las tareas" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "Tus datos permanecen en tu servidor y tú tienes control total." +#~ msgid "Total days" +#~ msgstr "Bienes totales" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "Hora de finalización" +#~ msgid "Weekdays only" +#~ msgstr "La semana comienza" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "Las entradas de tiempo se redondearán a este intervalo." -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Zona horaria" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "Formato de fecha" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "Formato de hora" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "horas" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "horas" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Agenda" +#~ msgstr "Calendario" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "nombre de empresa" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "El nombre de tu empresa" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "La dirección de tu empresa" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "Configuración de horas extras" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "Configuración de autorregistro" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "Formato de hora" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "Reglas de redondeo de tiempo" +#~ msgid "CSV Format" +#~ msgstr "Importación CSV" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "Entradas de tiempo redondeadas a intervalos configurados" +#~ msgid "Filter by tags..." +#~ msgstr "Filtrar mis tareas" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "Modo de temporizador activo único" +#~ msgid "Show billable entries only" +#~ msgstr "No se encontraron entradas de tiempo." -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "Monto facturable" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "Configuración de tiempo de espera inactivo" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "Horas totales" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "Horas por proyecto" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "Crear una nueva entrada de tiempo" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "Seleccione un proyecto..." -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Facturas recurrentes" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Crear plantilla de entrada de tiempo" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "Actualizar factura recurrente" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "Navegación" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Views" +#~ msgstr "Vista" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Day View" +#~ msgstr "Vista de cuadrícula" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Week View" +#~ msgstr "Revisar" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "Month View" +#~ msgstr "Mes" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "Agenda View" +#~ msgstr "Vista de calendario" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "Privacidad primero" +#~ msgid "Create New Entry" +#~ msgstr "Crear nuevo cliente" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Focus Filter" +#~ msgstr "Mostrar filtros" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Habilitar telemetría anónima" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Ayúdenos a comprender los patrones de uso para mejorar TimeTracker" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "¿Qué datos se recogen?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "Qué recopilamos:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "Huella digital de instalación anónima (en hash)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "Versión de la aplicación e información de la plataforma" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Estadísticas de uso de funciones" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "Lo que NO recopilamos:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Sin nombres de usuario ni correos electrónicos" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Sin datos de entrada de tiempo ni notas" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Sin datos de clientes o empresas" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "Puedes cambiar esto en cualquier momento en" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "Al continuar, acepta utilizar TimeTracker bajo las condiciones" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "Licencia GPL-3.0" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Completar la configuración y continuar" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Editar tarea" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "No se pudo actualizar el estado" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "No se pudo actualizar el estado de la tarea" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Columna Kanban creada" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Columna Kanban eliminada" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Columnas Kanban reordenadas" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "La visibilidad de la columna Kanban cambió" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Columnas Kanban actualizadas" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Actualizar" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "No se pudieron actualizar las columnas kanban" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Cargando detalles de la tarea..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Seguimiento" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Ver todos los detalles" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Volver a Tareas" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "Agregue una nueva tarea a su proyecto para dividir el trabajo en componentes manejables" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Introduzca un nombre de tarea descriptivo" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "Elija un nombre claro y descriptivo que explique lo que se debe hacer." - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "Proporcione información detallada sobre la tarea, los requisitos y cualquier instrucción específica..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "Opcional: agregue contexto, requisitos o instrucciones específicas para la tarea." - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Seleccione el proyecto al que pertenece esta tarea" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Estado inicial" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Hecho" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Opcional: establezca una fecha límite para esta tarea" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Opcional: calcule cuánto tiempo llevará esta tarea" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Opcional: asigne esta tarea a un miembro del equipo" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "Borrar todos los cachés" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "Etiquetas para categorización" +#~ msgid "Close Modal" +#~ msgstr "Cerca" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Consejos para la creación de tareas" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Utilice verbos de acción y sea específico sobre lo que se debe hacer." +#~ msgid "Failed to load events" +#~ msgstr "No se pudieron cargar las tareas" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Estimaciones realistas" +#~ msgid "Please select a project for new entries" +#~ msgstr "Seleccione un proyecto del menú desplegable" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Considere la complejidad y las dependencias al estimar el tiempo." +#~ msgid "Please select a project first" +#~ msgstr "Seleccione un proyecto" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Establecer plazos" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Las fechas de vencimiento ayudan a priorizar el trabajo y realizar un seguimiento del progreso" +#~ msgid "Entry created successfully" +#~ msgstr "Evento creado exitosamente" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Asuntos prioritarios" +#~ msgid "Failed to create entry" +#~ msgstr "No se pudo eliminar el evento" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "Utilice niveles de prioridad para ayudar a los miembros del equipo a centrarse en lo más importante" +#~ msgid "Entry updated" +#~ msgstr "Última actualización" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Volver a la tarea" +#~ msgid "Failed to update entry" +#~ msgstr "No se pudo actualizar el estado" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Actualizar los detalles y la configuración de la tarea para \"%(task)s\"" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "¿Estás seguro de que deseas eliminar esta nota?" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Información de la tarea" +#~ msgid "Delete Entry" +#~ msgstr "Eliminar entrada" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Actualizar tarea" +#~ msgid "Automatic Timer" +#~ msgstr "Iniciar temporizador" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Estimación utilizada" +#~ msgid "Entry deleted" +#~ msgstr "Eliminado" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Actual" +#~ msgid "Failed to delete entry" +#~ msgstr "No se pudo eliminar el evento" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Información de la tarea actual" +#~ msgid "Export started" +#~ msgstr "Exportar datos" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "Estado actual" +#~ msgid "No recurring blocks yet" +#~ msgstr "Facturas recurrentes" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Prioridad actual" +#~ msgid "Unknown Project" +#~ msgstr "Sin proyecto" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "Actualmente asignado a" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "No se pudieron cargar las tareas" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Fecha de vencimiento actual" +#~ msgid "No events in this period" +#~ msgstr "No hay tareas en esta columna." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Estimación actual" +#~ msgid "Failed to load agenda view" +#~ msgstr "No se pudieron cargar las actividades" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Horas reales" +#~ msgid "Failed to load event details" +#~ msgstr "No se pudieron cargar las tareas" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Comenzó" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "¿Estás seguro de que deseas eliminar esta nota?" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Editar consejos" +#~ msgid "Delete Recurring Block" +#~ msgstr "Actualizar factura recurrente" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Cambios de estado" +#~ msgid "Recurring block deleted" +#~ msgstr "Evento recurrente" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "El cambio de estado puede afectar el seguimiento del tiempo y los cálculos de progreso" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Actualizaciones de fecha de vencimiento" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Considere la carga de trabajo del equipo al ajustar los plazos" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Cambios de asignación" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "Notificar a los miembros del equipo al reasignar tareas" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Actualizando..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Filtrar tareas" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "Interfaz" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Eliminar tareas seleccionadas" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Cambiar estado de tareas seleccionadas" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Asignar tareas seleccionadas" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Asignar tareas" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Mover tareas seleccionadas al proyecto" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Seleccionar Proyecto" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Mover tareas" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "¿Está seguro de que desea eliminar la tarea \"{name}\"?" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "No se puede eliminar la tarea \"{nombre}\" porque tiene entradas de tiempo. Primero elimine las entradas de tiempo." +#~ msgid "Failed to delete recurring block" +#~ msgstr "No se pudo eliminar el evento" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Eliminar tarea" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Ingrese la nueva fecha de vencimiento (AAAA-MM-DD):" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "Mis tareas" +#~ msgid "Entry duplicated successfully" +#~ msgstr "Evento actualizado exitosamente" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Tareas asignadas o creadas por usted" +#~ msgid "Failed to duplicate entry" +#~ msgstr "No se pudo eliminar el evento" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "total" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "Filtrar mis tareas" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "Atajos de teclado" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Nombre o descripción de la tarea" +#~ msgid "Edit Time Entry" +#~ msgstr "Nueva entrada de tiempo" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Todas las prioridades" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Tipo de tarea" +#~ msgid "Confirm Changes" +#~ msgstr "Confirmado" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "Asignado a mí" +#~ msgid "Confirm & Save" +#~ msgstr "Confirmado" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Creado por mí" +#~ msgid "Admin Mode" +#~ msgstr "Grupo de administración" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Mostrar solo vencidos" +#~ msgid "Admin Mode:" +#~ msgstr "Grupo de administración" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Creado por mi" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "Paginación de mis tareas." +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Seleccione el proyecto al que pertenece esta tarea" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "No se encontraron tareas" +#~ msgid "Task (Optional)" +#~ msgstr "Tarea (opcional)" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "Aún no tienes ninguna tarea asignada o creada por ti." +#~ msgid "Select a specific task within the project" +#~ msgstr "La tarea seleccionada no es válida para el proyecto elegido" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Crea tu primera tarea" +#~ msgid "When the work started" +#~ msgstr "Fecha de inicio de la semana" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Ver todas las tareas" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Tareas atrasadas" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Requiere atención inmediata" +#~ msgid "Time the work ended" +#~ msgstr "Contrato de cliente finalizado" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "elementos" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "Hay" +#~ msgid "Automatic" +#~ msgstr "Autorización" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "Revise y actualice estas tareas para evitar más retrasos." +#~ msgid "How this entry was created" +#~ msgstr "Cliente creado" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "Pendiente:" +#~ msgid "Duration:" +#~ msgstr "Duración" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "Est:" +#~ msgid "Describe what you worked on" +#~ msgstr "¿En qué trabajaste?" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Actual:" +#~ msgid "tag1, tag2" +#~ msgstr "etiqueta1, etiqueta2" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "Fechas de vencimiento" +#~ msgid "Internal invoice reference" +#~ msgstr "No se seleccionaron facturas" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Número de recibo/factura" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "Fechas de vencimiento" +#~ msgid "Reason for Change" +#~ msgstr "Razón para archivar" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "Gestión de proyectos" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "Todas las prioridades" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "¡Sin tareas atrasadas!" +#~ msgid "Task:" +#~ msgstr "Tarea" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "¡Buen trabajo! Todas las tareas están actualmente según lo previsto." +#~ msgid "Start:" +#~ msgstr "Comenzar" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Ingrese la nueva fecha de vencimiento (AAAA-MM-DD):" +#~ msgid "End:" +#~ msgstr "Fin" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "¿Está seguro de que desea extender la fecha de vencimiento a" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "para todas las tareas atrasadas?" +#~ msgid "Admin Notice" +#~ msgstr "Agregar nota" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "Introduzca una nueva prioridad (baja/media/alta/urgente):" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "¿Está seguro de que desea establecer prioridad para" +#~ msgid "Duplicate Entry" +#~ msgstr "Entrada duplicada" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Prioridad no válida. Utilice: bajo, medio, alto o urgente" +#~ msgid "Duplicate Time Entry" +#~ msgstr "Entrada de tiempo duplicada" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "Registrar tiempo manualmente" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "No se pudo actualizar el objetivo. Por favor inténtalo de nuevo." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "¿Iniciar tarea y marcarla como En progreso?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Cambiar estado de tarea" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "¿Marcar tarea como Por hacer?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "¿Marcar tarea como terminada?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Completar tarea" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Completo" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "¿Reabrir tarea para revisar?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Reabrir tarea" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Reabrir" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "Detalles y alcance del proyecto." - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Crear plantilla de entrada de tiempo" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "por ejemplo, reunión diaria, reunión con el cliente" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "por ejemplo, 1,0, 0,5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Notas precompletadas para este tipo de entrada de tiempo" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "por ejemplo, reunión, desarrollo, administración" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Editar plantilla" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "¿Estás seguro de que deseas eliminar esta plantilla?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Eliminar plantilla" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "Crea tu primera tarea" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "Plantillas" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "Cree su primera plantilla de correo electrónico para personalizar los correos electrónicos de facturas." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Estadísticas de uso" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Crear una copia de una entrada anterior con nuevos horarios" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "Crear una nueva entrada de tiempo" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "Entrada duplicada:" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "Original:" +#~ msgstr "Original:" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "to" +#~ msgstr "a" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "Volver a editar" +#~ msgid "Project & task" +#~ msgstr "Proyectos" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "Fecha y hora" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "Solicitar aprobación" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "Alternar filtros" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "Sin datos de entrada de tiempo ni notas" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "Aún no se han registrado entradas de tiempo" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "Paginación de mis tareas." - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "Entrada manual de tiempo" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "Entrada de tiempo" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "¿Cómo creo entradas de tiempo masivo para varios días?" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "Entrada masiva" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "Proyecto seleccionado no encontrado" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Las tareas se cargan después de seleccionar un proyecto." - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "Rango de tiempo" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "Invitado" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "Las entradas de tiempo se redondearán a este intervalo." +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "Temporizadores inteligentes" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "¿En qué trabajaste?" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "etiqueta1, etiqueta2" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "Filtrar facturas" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "Entradas recientes" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "Entrada masiva" +#~ msgid "Apply filters" +#~ msgstr "Aplicar filtros" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "Tendencias semanales" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "Plazo de entrega (días)" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "No se pudieron cargar las tareas" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "Bienes totales" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "La semana comienza" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "Las entradas de tiempo se redondearán a este intervalo." - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "Calendario" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "Formato de hora" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "Importación CSV" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "Filtrar mis tareas" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "No se encontraron entradas de tiempo." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "Monto facturable" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "Horas totales" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "Horas por proyecto" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "Crear una nueva entrada de tiempo" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Seleccione un proyecto..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "Facturas recurrentes" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "Crear plantilla de entrada de tiempo" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "Actualizar factura recurrente" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "Navegación" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "Vista" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "Vista de cuadrícula" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "Revisar" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "Mes" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "Vista de calendario" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "Crear nuevo cliente" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "Mostrar filtros" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "Borrar todos los cachés" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "Cerca" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "Realice un seguimiento de su tiempo con un temporizador visual" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "Finalización estimada" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "No se pudieron cargar las tareas" +#~ msgid "Calculating..." +#~ msgstr "Calculador..." -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "Seleccione un proyecto del menú desplegable" +#~ msgid "Based on average session duration" +#~ msgstr "Basado en la duración promedio de la sesión" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "Seleccione un proyecto" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Sin temporizador activo. ¡Empiece uno a continuación!" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "Iniciar nuevo temporizador" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "Evento creado exitosamente" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "No se pudo eliminar el evento" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "Última actualización" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "No se pudo actualizar el estado" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "¿Estás seguro de que deseas eliminar esta nota?" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "Eliminar entrada" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "Iniciar temporizador" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "Eliminado" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "No se pudo eliminar el evento" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "Exportar datos" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "Facturas recurrentes" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "Sin proyecto" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "No se pudieron cargar las tareas" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "No hay tareas en esta columna." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "No se pudieron cargar las actividades" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "No se pudieron cargar las tareas" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "¿Estás seguro de que deseas eliminar esta nota?" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "Actualizar factura recurrente" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "Evento recurrente" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "No se pudo eliminar el evento" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Ingrese la nueva fecha de vencimiento (AAAA-MM-DD):" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "Evento actualizado exitosamente" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "No se pudo eliminar el evento" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Añade notas sobre en qué estás trabajando..." -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "Atajos de teclado" +#~ msgid "Or use a template" +#~ msgstr "O usar una plantilla" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "Nueva entrada de tiempo" +#~ msgid "Recent Projects" +#~ msgstr "Proyectos Recientes" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "Estadísticas de hoy" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "Confirmado" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "Confirmado" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "Grupo de administración" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "Grupo de administración" +#~ msgid "Approval" +#~ msgstr "Aprobar" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "Seleccione el proyecto al que pertenece esta tarea" +#~ msgid "License status" +#~ msgstr "Estado actual" -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "Tarea (opcional)" +#~ msgid "Supporter license active" +#~ msgstr "Funciones admitidas" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "La tarea seleccionada no es válida para el proyecto elegido" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "Fecha de inicio de la semana" +#~ msgid "Not activated" +#~ msgstr "Activar" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "Introduzca el nombre del cliente" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "Contrato de cliente finalizado" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "License key" +#~ msgstr "Licencia" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "Autorización" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "Cliente creado" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "Duración" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "¿En qué trabajaste?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "etiqueta1, etiqueta2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "No se seleccionaron facturas" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "Número de recibo/factura" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "Razón para archivar" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Validate" +#~ msgstr "Fecha" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "Tarea" +#~ msgid "Back to Settings" +#~ msgstr "Configuración de copia de seguridad" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "Comenzar" +#~ msgid "Profile" +#~ msgstr "Perfil" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "Fin" +#~ msgid "In progress" +#~ msgstr "En curso" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "Ver todas las entradas de tiempo" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "Agregar nota" +#~ msgid "No recent time entries" +#~ msgstr "No hay entradas de tiempo recientes" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Administre la configuración y preferencias de su cuenta" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Entrada duplicada" +#~ msgid "Support & Community" +#~ msgstr "Código abierto y comunidad" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Entrada de tiempo duplicada" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Registrar tiempo manualmente" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Crear una copia de una entrada anterior con nuevos horarios" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Crear una nueva entrada de tiempo" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Entrada duplicada:" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Original:" +#~ msgid "Profile Information" +#~ msgstr "Información de perfil" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "a" +#~ msgid "Username cannot be changed" +#~ msgstr "El nombre de usuario no se puede cambiar" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "Proyectos" +#~ msgid "Required for email notifications" +#~ msgstr "Requerido para notificaciones por correo electrónico" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "Fecha y hora" +#~ msgid "Notification Preferences" +#~ msgstr "Preferencias de notificación" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "Habilitar notificaciones por correo electrónico" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "" +#~ "Interruptor maestro para todas las " +#~ "notificaciones por correo electrónico" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Notificaciones de facturas vencidas" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "Invitado" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Notificaciones de asignación de tareas" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Notificaciones de comentarios y menciones" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "Correo electrónico de resumen de tiempo semanal" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "¿En qué trabajaste?" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Habilitar notificaciones por correo electrónico" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "Aplicar filtros" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "Preferencias de visualización" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "System Default" +#~ msgstr "Valor predeterminado del sistema" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "Preferencias de redondeo de tiempo" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Configure cómo se redondean sus entradas" +#~ " de tiempo. Esto afecta cómo se " +#~ "calculan las duraciones cuando detienes " +#~ "los cronómetros." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "Habilitar redondeo de tiempo" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Entradas de tiempo redondeadas a intervalos configurados" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "Intervalo de redondeo" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "Las entradas de tiempo se redondearán a este intervalo." -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Realice un seguimiento de su tiempo con un temporizador visual" +#~ msgid "Rounding Method" +#~ msgstr "Método de redondeo" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Finalización estimada" +#~ msgid "Overtime Settings" +#~ msgstr "Configuración de horas extras" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Calculador..." +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "Basado en la duración promedio de la sesión" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Sin temporizador activo. ¡Empiece uno a continuación!" +#~ msgid "Daily hours" +#~ msgstr "Horario diario" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Iniciar nuevo temporizador" +#~ msgid "Weekly hours" +#~ msgstr "Metas Semanales" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Añade notas sobre en qué estás trabajando..." +#~ msgid "Standard Hours Per Day" +#~ msgstr "Horas estándar por día" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "O usar una plantilla" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Normalmente 8 horas para un trabajo de tiempo completo" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "Proyectos Recientes" +#~ msgid "Standard Hours Per Week" +#~ msgstr "Horas estándar por día" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "Estadísticas de hoy" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "How it works" +#~ msgstr "como funciona" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "Si trabaja más horas de las " +#~ "estándar en un día, el tiempo " +#~ "adicional se registrará como horas extra" +#~ " en informes y análisis." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "Aprobar" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "Configuraciones regionales" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "Estado actual" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "Funciones admitidas" +#~ msgid "Time Format" +#~ msgstr "Formato de hora" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "La semana comienza" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "Activar" +#~ msgid "Sunday" +#~ msgstr "Domingo" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Monday" +#~ msgstr "Lunes" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "Introduzca el nombre del cliente" +#~ msgid "Saturday" +#~ msgstr "Sábado" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "Vista de calendario" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "Licencia" +#~ msgid "Remember last view" +#~ msgstr "Miembro desde" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "Fecha" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "Crear orden de compra" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "El redondeo de tiempo está " +#~ "deshabilitado. Todos los tiempos se " +#~ "registrarán exactamente como se rastrearon." -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "Configuración de copia de seguridad" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "" +#~ "Sin redondeo: los tiempos se registrarán" +#~ " exactamente como se registraron." -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Perfil" +#~ msgid "Actual time:" +#~ msgstr "Hora real:" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "En curso" +#~ msgid "Rounded:" +#~ msgstr "Redondeado:" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Ver todas las entradas de tiempo" +#~ msgid "With " +#~ msgstr "Con" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "No hay entradas de tiempo recientes" +#~ msgid " minute intervals" +#~ msgstr "intervalos de minutos" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Administre la configuración y preferencias de su cuenta" +#~ msgid "Create Weekly Goal" +#~ msgstr "Crear meta semanal" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "Código abierto y comunidad" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Crear objetivo de tiempo semanal" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "Establezca un objetivo de horas de trabajo esta semana" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "Horas objetivo" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "¿Cuántas horas quieres trabajar esta semana?" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "Fecha de inicio de la semana" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "Déjelo en blanco para usar la semana actual (a partir del lunes)" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Información de perfil" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "El nombre de usuario no se puede cambiar" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Requerido para notificaciones por correo electrónico" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Notas opcionales sobre tu objetivo..." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Preferencias de notificación" +#~ msgid "Quick Presets" +#~ msgstr "Preajustes rápidos" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Habilitar notificaciones por correo electrónico" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Consejos para establecer metas" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Interruptor maestro para todas las notificaciones por correo electrónico" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "Sea realista: considere vacaciones, reuniones y otros compromisos" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Notificaciones de facturas vencidas" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "" +#~ "Empiece de forma conservadora: siempre " +#~ "podrá ajustar su objetivo más adelante" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Notificaciones de asignación de tareas" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" +#~ "Realice un seguimiento del progreso: " +#~ "consulte su panel de control con " +#~ "regularidad para mantenerse al día" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Notificaciones de comentarios y menciones" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "Tiempo completo típico: 40 horas por semana (8 horas/día, 5 días)" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "Correo electrónico de resumen de tiempo semanal" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Editar objetivo semanal" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Editar objetivo de tiempo semanal" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "Período Semanal" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "Habilitar notificaciones por correo electrónico" +#~ msgid "Current Progress" +#~ msgstr "Progreso actual" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "¿Estás seguro de que deseas eliminar este objetivo?" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "Eliminar objetivo" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "Metas de tiempo semanales" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Establezca y realice un seguimiento de sus objetivos de horas semanales" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "Nuevo objetivo" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "Metas totales" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Preferencias de visualización" +#~ msgid "Success Rate" +#~ msgstr "Tasa de éxito" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "Valor predeterminado del sistema" +#~ msgid "Current Week Goal" +#~ msgstr "Objetivo de la semana actual" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Preferencias de redondeo de tiempo" +#~ msgid "Remaining Hours" +#~ msgstr "Horas restantes" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "Configure cómo se redondean sus entradas de tiempo. Esto afecta cómo se calculan las duraciones cuando detienes los cronómetros." +#~ msgid "Days Remaining" +#~ msgstr "Días restantes" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Habilitar redondeo de tiempo" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Promedio de horas/día necesario" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Entradas de tiempo redondeadas a intervalos configurados" +#~ msgid "Edit Goal" +#~ msgstr "Editar objetivo" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Intervalo de redondeo" +#~ msgid "No goal set for this week" +#~ msgstr "No hay objetivo fijado para esta semana" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "Las entradas de tiempo se redondearán a este intervalo." +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "" +#~ "Cree un objetivo de tiempo semanal " +#~ "para comenzar a realizar un seguimiento" +#~ " de su progreso" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Método de redondeo" +#~ msgid "Goal History" +#~ msgstr "Historial de goles" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Configuración de horas extras" +#~ msgid "Target" +#~ msgstr "Objetivo" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "Detalles de objetivos semanales" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "Horario diario" +#~ msgid "Daily Breakdown" +#~ msgstr "Desglose diario" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "Metas Semanales" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Horas estándar por día" +#~ msgid "Time Entries This Week" +#~ msgstr "Entradas de tiempo esta semana" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Normalmente 8 horas para un trabajo de tiempo completo" +#~ msgid "No Project" +#~ msgstr "Sin proyecto" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "Horas estándar por día" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Aún no se han registrado entradas de tiempo para esta semana" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "como funciona" +#~ msgid "Reference date" +#~ msgstr "Tipo de referencia" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "Si trabaja más horas de las estándar en un día, el tiempo adicional se registrará como horas extra en informes y análisis." +#~ msgid "Create/Get Period" +#~ msgstr "Crear orden de compra" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Start date" +#~ msgstr "Fecha de inicio" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "End date" +#~ msgstr "Fecha de finalización" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Exports" +#~ msgstr "Exportar" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "Configuraciones regionales" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Formato de hora" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "La semana comienza" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "Domingo" +#~ msgid "Audit Events CSV" +#~ msgstr "Editar evento" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "Lunes" +#~ msgid "Timesheet Periods" +#~ msgstr "Período Semanal" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "Sábado" +#~ msgid "Submit" +#~ msgstr "Sujeto" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "Vista de calendario" +#~ msgid "No timesheet periods yet." +#~ msgstr "Aún no se han registrado entradas de tiempo" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "Miembro desde" +#~ msgid "Leave Balances" +#~ msgstr "Guardar cambios" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "Crear orden de compra" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "El redondeo de tiempo está deshabilitado. Todos los tiempos se registrarán exactamente como se rastrearon." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "Sin redondeo: los tiempos se registrarán exactamente como se registraron." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Hora real:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Redondeado:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Con" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "intervalos de minutos" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Crear meta semanal" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Crear objetivo de tiempo semanal" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "Establezca un objetivo de horas de trabajo esta semana" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Horas objetivo" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "¿Cuántas horas quieres trabajar esta semana?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Fecha de inicio de la semana" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "Déjelo en blanco para usar la semana actual (a partir del lunes)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "usuario" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Notas opcionales sobre tu objetivo..." +#~ msgid "No leave types configured." +#~ msgstr "No configurado" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "Preajustes rápidos" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Consejos para establecer metas" +#~ msgid "Select leave type" +#~ msgstr "Seleccionar Cliente" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Sea realista: considere vacaciones, reuniones y otros compromisos" +#~ msgid "Requested hours" +#~ msgstr "Horas estimadas" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Empiece de forma conservadora: siempre podrá ajustar su objetivo más adelante" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Variables disponibles" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "Realice un seguimiento del progreso: consulte su panel de control con regularidad para mantenerse al día" +#~ msgid "Comment" +#~ msgstr "Comentarios" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Tiempo completo típico: 40 horas por semana (8 horas/día, 5 días)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Editar objetivo semanal" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Editar objetivo de tiempo semanal" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Período Semanal" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Progreso actual" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "¿Estás seguro de que deseas eliminar este objetivo?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Eliminar objetivo" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Metas de tiempo semanales" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Establezca y realice un seguimiento de sus objetivos de horas semanales" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Nuevo objetivo" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Metas totales" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Tasa de éxito" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Objetivo de la semana actual" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Horas restantes" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Días restantes" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Promedio de horas/día necesario" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Editar objetivo" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "No hay objetivo fijado para esta semana" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "Cree un objetivo de tiempo semanal para comenzar a realizar un seguimiento de su progreso" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Historial de goles" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Objetivo" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Detalles de objetivos semanales" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "Rechazado" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Desglose diario" +#~ msgid "Allocated" +#~ msgstr "Creado" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "Tiempo" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Entradas de tiempo esta semana" +#~ msgid "Utilization %" +#~ msgstr "Autorización" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Sin proyecto" +#~ msgid "No capacity data available." +#~ msgstr "No hay datos de tasa de grabación disponibles" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Aún no se han registrado entradas de tiempo para esta semana" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "Tipo de referencia" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "Crear orden de compra" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "Fecha de inicio" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "Fecha de finalización" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "Exportar" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "Habilitar el portal del cliente" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "Anulación del estado facturable" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "Editar evento" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "Período Semanal" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "Sujeto" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "Aún no se han registrado entradas de tiempo" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "Guardar cambios" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "Sólo activo" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "Tipo de evento" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "usuario" +#~ msgid "Accrual hours per month" +#~ msgstr "Horas reales" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "No configurado" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "Tipo de evento" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "Seleccionar Cliente" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "Horas estimadas" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "Variables disponibles" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "Comentarios" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "Desactivado" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "Detalles de la empresa" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "Rechazado" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "Creado" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "Tiempo" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "Autorización" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "No hay datos de tasa de grabación disponibles" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "Nombre del rol" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "Notas (opcional)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "Añadir bueno" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "Habilitar el portal del cliente" +#~ msgid "No holidays configured." +#~ msgstr "No hay webhooks configurados" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "Anulación del estado facturable" +#~ msgid "Support" +#~ msgstr "Apoyo" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "Sólo activo" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "Tipo de evento" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "Horas reales" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "Tipo de evento" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "Desactivado" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "Detalles de la empresa" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "Nombre del rol" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "Notas (opcional)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "Añadir bueno" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "No hay webhooks configurados" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "pagado en exceso" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Apoyo" +#~ msgid "Cash" +#~ msgstr "Dinero" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "Controlar" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "Transferencia bancaria" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "Tarjeta de crédito" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "Tarjeta de débito" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "Raya" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "pagado en exceso" +#~ msgid "Company Card" +#~ msgstr "Tarjeta de empresa" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "Dinero" +#~ msgid "Reimbursed" +#~ msgstr "Reembolsado" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Controlar" +#~ msgid "Processing" +#~ msgstr "Tratamiento" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Transferencia bancaria" +#~ msgid "80% Budget Warning" +#~ msgstr "Advertencia de presupuesto del 80%" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Tarjeta de crédito" +#~ msgid "Budget Limit Reached" +#~ msgstr "Límite de presupuesto alcanzado" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Tarjeta de débito" +#~ msgid "Info" +#~ msgstr "Información" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Raya" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Tarjeta de empresa" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Reembolsado" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Tratamiento" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Factura #: %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "Advertencia de presupuesto del 80%" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "Fecha de emisión: %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Límite de presupuesto alcanzado" +#~ msgid "Due Date: %(date)s" +#~ msgstr "Fecha de vencimiento: %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Información" +#~ msgid "Quote For:" +#~ msgstr "Cotización para:" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "Detalles de la cotización:" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "Elementos:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "Total:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "Factura #: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "Fecha de emisión: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "Fecha de vencimiento: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Cotización para:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Detalles de la cotización:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Elementos:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Total:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Por favor inicia sesión para acceder a esta página" +#~ msgid "Please log in to access this page" +#~ msgstr "Por favor inicia sesión para acceder a esta página" diff --git a/translations/fi/LC_MESSAGES/messages.po b/translations/fi/LC_MESSAGES/messages.po index b2738200..3ab2f5bb 100644 --- a/translations/fi/LC_MESSAGES/messages.po +++ b/translations/fi/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: fi\n" @@ -14,26619 +14,18334 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "Kirjaudu sisään päästäksesi asiakasportaaliin." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." msgstr "Istunto on vanhentunut tai sivu oli auki liian kauan. Yritä uudelleen." -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "Järjestelmänvalvojan käyttöoikeudet vaaditaan" +#~ msgid "Administrator access required" +#~ msgstr "Järjestelmänvalvojan käyttöoikeudet vaaditaan" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "Käyttäjätunnus vaaditaan" +#~ msgid "Username is required" +#~ msgstr "Käyttäjätunnus vaaditaan" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "Käyttäjä on jo olemassa" +#~ msgid "User already exists" +#~ msgstr "Käyttäjä on jo olemassa" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "Käyttäjää ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "Käyttäjän \"%(username)s\" luominen onnistui" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "Käyttäjätunnus on jo olemassa" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Valitse asiakas, kun otat asiakasportaalin käyttöön." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "Salasanan tulee olla vähintään 8 merkkiä pitkä." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "Salasanat eivät täsmää." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "Käyttäjää ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Käyttäjää ei voitu luoda tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "Käyttäjän \"%(username)s\" päivitys onnistui" +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "Käyttäjän \"%(username)s\" luominen onnistui" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "Viimeistä järjestelmänvalvojaa ei voi poistaa" +#~ msgid "Username already exists" +#~ msgstr "Käyttäjätunnus on jo olemassa" -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "Ei voi poistaa käyttäjää, jolla on olemassa olevia aikamerkintöjä" +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "Valitse asiakas, kun otat asiakasportaalin käyttöön." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "Käyttäjää ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "Salasanan tulee olla vähintään 8 merkkiä pitkä." -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "Käyttäjän \"%(username)s\" poistaminen onnistui" +#~ msgid "Passwords do not match." +#~ msgstr "Salasanat eivät täsmää." -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "Telemetria on otettu käyttöön. Kiitos, että autat meitä parantamaan!" +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Käyttäjää ei voitu päivittää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "Käyttäjän \"%(username)s\" päivitys onnistui" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "Viimeistä järjestelmänvalvojaa ei voi poistaa" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "Ei voi poistaa käyttäjää, jolla on olemassa olevia aikamerkintöjä" -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Käyttäjää ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "Käyttäjän \"%(username)s\" poistaminen onnistui" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "Virheellinen aikavyöhyke: %(timezone)s" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "Telemetria on otettu käyttöön. Kiitos, että autat meitä parantamaan!" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "Asetuksia ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Asetukset päivitetty onnistuneesti" +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Virhe asetusten tallentamisessa" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "Virheellinen aikavyöhyke: %(timezone)s" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Asetuksia ei voitu päivittää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "PDF-asettelua ei voitu päivittää tietokantavirheen vuoksi." +#~ msgid "Settings updated successfully" +#~ msgstr "Asetukset päivitetty onnistuneesti" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "PDF-asettelu päivitetty onnistuneesti" +#~ msgid "Invalid code." +#~ msgstr "" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "Error saving settings" +#~ msgstr "Virhe asetusten tallentamisessa" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "PDF-asettelua ei voitu nollata tietokantavirheen vuoksi." +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "PDF-asettelu palautettu oletusasetuksiin" +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "PDF-asettelua ei voitu päivittää tietokantavirheen vuoksi." -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Tiedostoa ei ole valittu" +#~ msgid "PDF layout updated successfully" +#~ msgstr "PDF-asettelu päivitetty onnistuneesti" -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "PDF-asettelua ei voitu nollata tietokantavirheen vuoksi." -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "PDF layout reset to defaults" +#~ msgstr "PDF-asettelu palautettu oletusasetuksiin" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Invalid page size" +#~ msgstr "" -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "Template not found for this page size" +#~ msgstr "" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "No file uploaded" +#~ msgstr "" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "No file selected" +#~ msgstr "Tiedostoa ei ole valittu" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "Logotiedostoa ei ole valittu" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "Virheellinen kuvatiedosto." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "Logoa ei voitu tallentaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "Yrityksen logon lataus onnistui! Näet sen yllä olevassa \"Nykyinen yrityksen logo\" -osiossa. Se näkyy laskuissa ja PDF-dokumenteissa." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "Virheellinen tiedostotyyppi. Sallitut tyypit: PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "Logoa ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "Yrityksen logon poisto onnistui. Lataa tarvittaessa uusi logo alla olevaan osioon." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "Ei poistettavaa logoa" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "Varmuuskopiointi epäonnistui: arkistoa ei luotu" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "Varmuuskopiointi epäonnistui: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Virheellinen tiedostotyyppi" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "Varmuuskopiotiedostoa ei löydy" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "Varmuuskopio \"%(filename)s\" poistettiin onnistuneesti" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "Varmuuskopion poistaminen epäonnistui: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "Virheellinen tiedostotyyppi. Valitse .zip-varmuuskopioarkisto." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "Varmuuskopiotiedostoa ei löydy." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "Virheellinen tiedostotyyppi. Lataa .zip-varmuuskopioarkisto." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "Varmuuskopiotiedostoa ei ole toimitettu" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "Palautus aloitettu. Voit seurata edistymistä tällä sivulla." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC ei ole käytössä. Aseta AUTH_METHOD arvoksi \"oidc\" tai \"molemmat\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER ei ole määritetty" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "Could not import template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "Template imported successfully" +#~ msgstr "" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ Löytöasiakirja haettu onnistuneesti osoitteesta %(url)s" +#~ msgid "Invoice not found" +#~ msgstr "" -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Quote not found" +#~ msgstr "" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ Löytöasiakirjan nouto epäonnistui: %(error)s" +#~ msgid "No logo file selected" +#~ msgstr "Logotiedostoa ei ole valittu" -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ Odottamaton virhe: %(error)s" +#~ msgid "Invalid image file." +#~ msgstr "Virheellinen kuvatiedosto." -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "Logoa ei voitu tallentaa tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ OAuth-asiakas on rekisteröity sovellukseen" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ OAuth-asiakasta ei ole rekisteröity" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ OAuth-asiakkaan luominen epäonnistui: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s: %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ Löytöasiakirjasta puuttuu %(endpoint)s" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ Palveluntarjoaja tukee laajuutta \"%(scope)s\"." - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ Palveluntarjoaja ei ehkä tue laajuutta \"%(scope)s\" (tuettu: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ Palveluntarjoaja tukee vaatimuksia: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ Määritetty %(claim_type)s-vaatimus \"%(claim_name)s\" on tuettu" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ Määritetty %(claim_type)s-vaatimus \"%(claim_name)s\" ei ole tuettujen vaatimusten luettelossa (voi silti toimia)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "OIDC-määritystesti valmis" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "Mallin nimi vaaditaan" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "Mallin nimi vaaditaan" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "Tämän niminen malli on jo olemassa" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "Sähköpostimallia ei voitu luoda tietokantavirheen vuoksi." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "Sähköpostimallin luominen onnistui" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "Sähköpostimallia ei voitu päivittää tietokantavirheen vuoksi." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "Sähköpostimallin päivitys onnistui" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "Laskujen tai toistuvien laskujen käytössä olevaa mallia ei voi poistaa" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "Sähköpostimallia ei voitu poistaa tietokantavirheen vuoksi." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "Sähköpostimallin \"%(name)s\" poistaminen onnistui" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "Yrityksen logon lataus onnistui! Näet " +#~ "sen yllä olevassa \"Nykyinen yrityksen " +#~ "logo\" -osiossa. Se näkyy laskuissa ja" +#~ " PDF-dokumenteissa." -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "Valittua projektia ei ole olemassa tai se ei ole aktiivinen" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "viesti" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "" +#~ "Virheellinen tiedostotyyppi. Sallitut tyypit: " +#~ "PNG, JPG, JPEG, GIF, SVG, WEBP" -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "Tarkastuslokitaulukkoa ei ole olemassa. Suorita: flask db upgrade" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Logoa ei voitu poistaa tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "Yrityksen logon poisto onnistui. Lataa " +#~ "tarvittaessa uusi logo alla olevaan " +#~ "osioon." -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "Ei poistettavaa logoa" -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "Tervetuloa takaisin, %(username)s!" +#~ msgid "Backup failed: archive not created" +#~ msgstr "Varmuuskopiointi epäonnistui: arkistoa ei luotu" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "Varmuuskopiointi epäonnistui: %(error)s" -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Invalid file type" +#~ msgstr "Virheellinen tiedostotyyppi" -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "Varmuuskopiotiedostoa ei löydy" -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "Aseta salasanasi" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "Varmuuskopio \"%(filename)s\" poistettiin onnistuneesti" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "Varmuuskopion poistaminen epäonnistui: %(error)s" -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Virheellinen tai vanhentunut salasanan määritystunnus. Pyydä uusi." +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "Virheellinen tiedostotyyppi. Valitse .zip-varmuuskopioarkisto." -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "Asiakasportaali ei ole käytössä tälle asiakkaalle." +#~ msgid "Backup file not found." +#~ msgstr "Varmuuskopiotiedostoa ei löydy." -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "Virheellinen tiedostotyyppi. Lataa .zip-varmuuskopioarkisto." -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "Salasanaa ei voitu asettaa tietokantavirheen vuoksi." +#~ msgid "No backup file provided" +#~ msgstr "Varmuuskopiotiedostoa ei ole toimitettu" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "Palautus aloitettu. Voit seurata edistymistä tällä sivulla." -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "" +#~ "OIDC ei ole käytössä. Aseta AUTH_METHOD" +#~ " arvoksi \"oidc\" tai \"molemmat\"." -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER ei ole määritetty" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "Tiliäsi ei voitu luoda tietokantavirheen vuoksi. Yritä myöhemmin uudelleen." +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "Tervetuloa! Tilisi on luotu." +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Käyttäjää ei löydy. Ota yhteyttä järjestelmänvalvojaan." +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "Tilin roolia ei voitu päivittää tietokantavirheen vuoksi." +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ Löytöasiakirja haettu onnistuneesti osoitteesta %(url)s" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "Tili on poistettu käytöstä. Ota yhteyttä järjestelmänvalvojaan." +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ Löytöasiakirjan nouto epäonnistui: %(error)s" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ Odottamaton virhe: %(error)s" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "Odottamaton virhe kirjautumisen aikana. Yritä uudelleen tai tarkista palvelimen lokit." +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ OAuth-asiakas on rekisteröity sovellukseen" -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "Istunto on vanhentunut tai sivu oli auki liian kauan. Yritä uudelleen." +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ OAuth-asiakasta ei ole rekisteröity" -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "Todennusmenetelmä" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "Todennusmenetelmä" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "Tiliäsi ei voitu luoda tietokantavirheen vuoksi." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "Todennusmenetelmä" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "Tilin roolia ei voitu päivittää tietokantavirheen vuoksi." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "Hyvästi, %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "Virheellinen avatar-tiedostotyyppi. Sallittu: PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "Avatarin tallentaminen palvelimelle epäonnistui." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Profiilin päivitys onnistui" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "Profiiliasi ei voitu päivittää tietokantavirheen vuoksi." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ OAuth-asiakkaan luominen epäonnistui: %(error)s" -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s: %(url)s" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ Löytöasiakirjasta puuttuu %(endpoint)s" -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ Palveluntarjoaja tukee laajuutta \"%(scope)s\"." -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ Palveluntarjoaja ei ehkä tue laajuutta" +#~ " \"%(scope)s\" (tuettu: %(supported)s)" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ Palveluntarjoaja tukee vaatimuksia: %(claims)s" -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar poistettu" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "✓ Määritetty %(claim_type)s-vaatimus \"%(claim_name)s\" on tuettu" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "Avatarin poistaminen epäonnistui." +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ Määritetty %(claim_type)s-vaatimus " +#~ "\"%(claim_name)s\" ei ole tuettujen " +#~ "vaatimusten luettelossa (voi silti toimia)" -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "OIDC configuration test completed" +#~ msgstr "OIDC-määritystesti valmis" -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Template name is required" +#~ msgstr "Mallin nimi vaaditaan" -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "HTML template content is required" +#~ msgstr "Mallin nimi vaaditaan" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "Kertakirjautumista ei ole vielä määritetty. Ota yhteyttä järjestelmänvalvojaan." +#~ msgid "A template with this name already exists" +#~ msgstr "Tämän niminen malli on jo olemassa" -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "Kertakirjautumista ei ole määritetty." +#~ msgid "Could not create email template due to a database error." +#~ msgstr "Sähköpostimallia ei voitu luoda tietokantavirheen vuoksi." -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Email template created successfully" +#~ msgstr "Sähköpostimallin luominen onnistui" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "Sähköpostimallia ei voitu päivittää tietokantavirheen vuoksi." -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "Todennus epäonnistui: myöntäjä- tai aihevaatimus puuttuu. Tarkista OIDC-asetukset." +#~ msgid "Email template updated successfully" +#~ msgstr "Sähköpostimallin päivitys onnistui" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "Käyttäjätiliä ei ole olemassa ja itserekisteröinti on poistettu käytöstä." +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "Laskujen tai toistuvien laskujen käytössä olevaa mallia ei voi poistaa" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "Tiliäsi ei voitu luoda tietokantavirheen vuoksi." +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "Sähköpostimallia ei voitu poistaa tietokantavirheen vuoksi." -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "Odottamaton virhe SSO-kirjautumisen aikana. Yritä uudelleen tai ota yhteyttä tukeen." +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "Sähköpostimallin \"%(name)s\" poistaminen onnistui" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "Sinulla ei ole pääsyä tähän projektiin." +#~ msgid "Task name and project are required" +#~ msgstr "" -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Tälle hankkeelle ei ole asetettu budjettia." +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "Valittua projektia ei ole olemassa tai se ei ole aktiivinen" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Tapahtuma luotu onnistuneesti" +#~ msgid "message" +#~ msgstr "viesti" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Tapahtuman päivitys onnistui" +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "Sinulla ei ole lupaa poistaa tätä tapahtumaa." +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "Tarkastuslokitaulukkoa ei ole olemassa. Suorita: flask db upgrade" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "Tapahtuman poistaminen epäonnistui" +#~ msgid "You must change your password before continuing." +#~ msgstr "" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Tapahtuman poistaminen onnistui" +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "Virhe poistettaessa tapahtumaa: %(error)s" +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "Tervetuloa takaisin, %(username)s!" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "Tapahtuma siirrettiin onnistuneesti" +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "Tapahtuman koon muuttaminen onnistui" +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "Sinulla ei ole lupaa tarkastella tätä tapahtumaa." +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "Sinulla ei ole lupaa muokata tätä tapahtumaa." +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Aseta salasanasi" -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "Huomautuksen sisältö ei voi olla tyhjä" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Huomautus lisätty onnistuneesti" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Virhe muistiinpanon lisäämisessä" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Virhe lisättäessä huomautusta: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "Huomautus ei kuulu tälle asiakkaalle" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "Sinulla ei ole lupaa muokata tätä muistiinpanoa" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Virhe muistiinpanon päivittämisessä" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Huomautus päivitetty onnistuneesti" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Virhe päivitettäessä huomautusta: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "Sinulla ei ole lupaa poistaa tätä muistiinpanoa" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Virhe muistiinpanon poistamisessa" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Huomautus poistettu onnistuneesti" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "Virhe poistettaessa huomautusta: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "Kirjaudu sisään päästäksesi asiakasportaaliin." +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "Virheellinen tai vanhentunut salasanan määritystunnus. Pyydä uusi." -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Käyttö estetty" +#~ msgid "Password reset is not available for this account." +#~ msgstr "Asiakasportaali ei ole käytössä tälle asiakkaalle." -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Kielletty" +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "Could not reset password due to a database error." +#~ msgstr "Salasanaa ei voitu asettaa tietokantavirheen vuoksi." -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "Invalid username format" +#~ msgstr "" -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Sivua ei löydy" +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "Etsimääsi sivua ei ole olemassa tai se on siirretty." +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "Tiliäsi ei voitu luoda tietokantavirheen " +#~ "vuoksi. Yritä myöhemmin uudelleen." -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Palvelinvirhe" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "Tervetuloa! Tilisi on luotu." -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Käyttäjää ei löydy. Ota yhteyttä järjestelmänvalvojaan." -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "Tilin roolia ei voitu päivittää tietokantavirheen vuoksi." -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "Asiakasportaalin käyttöoikeus ei ole käytössä tililläsi." +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "Tili on poistettu käytöstä. Ota yhteyttä järjestelmänvalvojaan." -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "Asiakastilisi ei ole aktiivinen." +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Käyttäjätunnus ja salasana vaaditaan." +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Virheellinen käyttäjätunnus tai salasana." +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "Tervetuloa, %(client_name)s!" +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" +#~ "Odottamaton virhe kirjautumisen aikana. Yritä" +#~ " uudelleen tai tarkista palvelimen lokit." -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "Sinut on kirjattu ulos." +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "Istunto on vanhentunut tai sivu oli auki liian kauan. Yritä uudelleen." -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Virheellinen tai puuttuu salasanan määritystunnus." +#~ msgid "Invalid authentication code." +#~ msgstr "Todennusmenetelmä" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "Virheellinen tai vanhentunut salasanan määritystunnus. Pyydä uusi." +#~ msgid "Two-factor authentication enabled." +#~ msgstr "Todennusmenetelmä" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "Salasana vaaditaan." +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "Tiliäsi ei voitu luoda tietokantavirheen vuoksi." -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "Salasanaa ei voitu asettaa tietokantavirheen vuoksi." +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Todennusmenetelmä" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "Salasana asetettu onnistuneesti! Voit nyt kirjautua sisään portaaliin." +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "Tilin roolia ei voitu päivittää tietokantavirheen vuoksi." -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "Asiakasportaalin tietoja ei voi ladata." +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "Hyvästi, %(username)s!" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "Virheellinen avatar-tiedostotyyppi. Sallittu: PNG, JPG, JPEG, GIF, WEBP" -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Failed to save avatar on server." +#~ msgstr "Avatarin tallentaminen palvelimelle epäonnistui." -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "Profile updated successfully" +#~ msgstr "Profiilin päivitys onnistui" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "Profiiliasi ei voitu päivittää tietokantavirheen vuoksi." -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Laskua ei löydy." +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Lainausta ei löytynyt." +#~ msgid "New password is required" +#~ msgstr "" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Current password is required" +#~ msgstr "" -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "Current password is incorrect" +#~ msgstr "" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "Could not update password due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "Avatar removed" +#~ msgstr "Avatar poistettu" -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "Avatarin poistaminen epäonnistui." -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" +#~ "Kertakirjautumista ei ole vielä määritetty." +#~ " Ota yhteyttä järjestelmänvalvojaan." -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "Kertakirjautumista ei ole määritetty." -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "Todennus epäonnistui: myöntäjä- tai " +#~ "aihevaatimus puuttuu. Tarkista OIDC-asetukset." -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "" +#~ "Käyttäjätiliä ei ole olemassa ja " +#~ "itserekisteröinti on poistettu käytöstä." -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "Tiliäsi ei voitu luoda tietokantavirheen vuoksi." -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Odottamaton virhe SSO-kirjautumisen aikana." +#~ " Yritä uudelleen tai ota yhteyttä " +#~ "tukeen." -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "Sinulla ei ole pääsyä tähän projektiin." -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "Tälle hankkeelle ei ole asetettu budjettia." -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Event created successfully" +#~ msgstr "Tapahtuma luotu onnistuneesti" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "Tapahtuman päivitys onnistui" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "Sinulla ei ole lupaa poistaa tätä tapahtumaa." -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "Failed to delete event" +#~ msgstr "Tapahtuman poistaminen epäonnistui" -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "Event deleted successfully" +#~ msgstr "Tapahtuman poistaminen onnistui" -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "Virhe poistettaessa tapahtumaa: %(error)s" -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "Tapahtuma siirrettiin onnistuneesti" -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "Asiakasportaalin tietoja ei voi ladata." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "Asiakasportaali" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "Viimeiset 7 päivää" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Yhteenveto" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Tunteja yhteensä" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Event resized successfully" +#~ msgstr "Tapahtuman koon muuttaminen onnistui" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Maksettu" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Erinomaista" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Tunnit projektin mukaan" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Projekti" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Tuntia" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Laskutettavat tunnit" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "Aikaväli" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Päivämäärä" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Käyttö estetty" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "Sinulla ei ole lupaa tarkastella tätä tapahtumaa." -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "Sinulla ei ole lupaa muokata tätä tapahtumaa." -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "Sinulla ei ole lupaa luoda asiakkaita" +#~ msgid "Note content cannot be empty" +#~ msgstr "Huomautuksen sisältö ei voi olla tyhjä" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "Asiakkaan nimi vaaditaan" +#~ msgid "Note added successfully" +#~ msgstr "Huomautus lisätty onnistuneesti" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "Tämänniminen asiakas on jo olemassa" +#~ msgid "Error adding note" +#~ msgstr "Virhe muistiinpanon lisäämisessä" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Virhe lisättäessä huomautusta: %(error)s" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Virheellinen tuntihinnan muoto" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "Ennakkomaksutuntien on oltava positiivinen luku." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "Prepaid-nollauspäivän on oltava välillä 1–28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "Note does not belong to this client" +#~ msgstr "Huomautus ei kuulu tälle asiakkaalle" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "Asiakasohjelmaa ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "You do not have permission to edit this note" +#~ msgstr "Sinulla ei ole lupaa muokata tätä muistiinpanoa" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "Sinulla ei ole pääsyä tähän projektiin." +#~ msgid "Error updating note" +#~ msgstr "Virhe muistiinpanon päivittämisessä" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "Sinulla ei ole lupaa muokata asiakkaita" +#~ msgid "Note updated successfully" +#~ msgstr "Huomautus päivitetty onnistuneesti" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "Portaalin käyttäjätunnus vaaditaan portaalin käyttöönoton yhteydessä." +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Virhe päivitettäessä huomautusta: %(error)s" -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Tämä portaalin käyttäjätunnus on jo toisen asiakkaan käytössä." +#~ msgid "You do not have permission to delete this note" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä muistiinpanoa" -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "Asiakasohjelmaa ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Error deleting note" +#~ msgstr "Virhe muistiinpanon poistamisessa" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "Sinulla ei ole lupaa lähettää portaalisähköposteja" +#~ msgid "Note deleted successfully" +#~ msgstr "Huomautus poistettu onnistuneesti" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "Asiakasportaali ei ole käytössä tälle asiakkaalle." +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "Virhe poistettaessa huomautusta: %(error)s" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "Portaalin käyttäjätunnusta ei ole asetettu tälle asiakkaalle." +#~ msgid "Access Denied" +#~ msgstr "Käyttö estetty" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "Asiakkaan sähköpostiosoitetta ei ole asetettu. Salasanan asetussähköpostia ei voi lähettää." +#~ msgid "403 Forbidden" +#~ msgstr "403 Kielletty" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "Salasanan määritystunnusta ei voitu luoda tietokantavirheen vuoksi." +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "Salasanan asetussähköposti lähetetty onnistuneesti osoitteeseen %(email)s" +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "Sähköpostipalvelinta ei ole määritetty. Määritä sähköpostiasetukset kohdassa Admin → Email Configuration tai aseta MAIL_SERVER-ympäristömuuttuja." +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "Salasanan asetussähköpostin lähettäminen epäonnistui. Tarkista sähköpostin määritykset ja palvelimen lokit saadaksesi lisätietoja." +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "Sähköpostia lähetettäessä tapahtui virhe: %(error)s" +#~ msgid "Page Not Found" +#~ msgstr "Sivua ei löydy" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "Sinulla ei ole lupaa arkistoida asiakkaita" +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "Asiakas on jo epäaktiivinen" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "Etsimääsi sivua ei ole olemassa tai se on siirretty." -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "Sinulla ei ole lupaa aktivoida asiakkaita" +#~ msgid "Server Error" +#~ msgstr "Palvelinvirhe" -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "Asiakas on jo aktiivinen" +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "Sinulla ei ole lupaa poistaa asiakkaita" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "Asiakasportaalin käyttöoikeus ei ole käytössä tililläsi." -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Your client account is inactive." +#~ msgstr "Asiakastilisi ei ole aktiivinen." -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "Asiakasohjelmaa ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "Poistettavia asiakkaita ei ole valittu" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "Asiakkaita ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "Asiakkaita ei poistettu" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "Sinulla ei ole lupaa muuttaa asiakkaan tilaa" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "Asiakkaita ei ole valittu" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Virheellinen tila" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "Asiakkaan tilaa ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "Asiakkaita ei ole päivitetty" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "Ei tiedostoa" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Tiedostotyyppiä ei sallita" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "Tiedoston koko ylittää suurimman sallitun koon (10 Mt)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "Liitettä ei voitu ladata tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "Username and password are required." +#~ msgstr "Käyttäjätunnus ja salasana vaaditaan." -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "Liite lähetetty onnistuneesti" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "Tiedostoa ei löydy" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "Liitettä ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "Liitteen poistaminen onnistui" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "Kommentin sisältö ei voi olla tyhjä" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "Kommentin on liityttävä projektiin, tehtävään tai tarjoukseen" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "Kommenttia ei voi liittää useisiin kohteisiin" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Virheellinen vanhemman kommentti" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Kommentti lisätty onnistuneesti" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Virhe kommentin lisäämisessä" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Virhe lisättäessä kommenttia: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "Sinulla ei ole lupaa muokata tätä kommenttia" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Kommentin päivitys onnistui" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Virhe päivitettäessä kommenttia: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "Sinulla ei ole lupaa poistaa tätä kommenttia" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Kommentin poistaminen onnistui" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Virhe poistettaessa kommenttia: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "Invalid username or password." +#~ msgstr "Virheellinen käyttäjätunnus tai salasana." -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "Tervetuloa, %(client_name)s!" -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "Sinulla ei ole lupaa poistaa tätä liitettä" +#~ msgid "You have been logged out." +#~ msgstr "Sinut on kirjattu ulos." -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Virheellinen tai puuttuu salasanan määritystunnus." -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "Virheellinen tai vanhentunut salasanan määritystunnus. Pyydä uusi." -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Yhteystietojen luominen onnistui" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Virhe luotaessa yhteystietoa: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Yhteystietojen päivitys onnistui" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Virhe päivitettäessä yhteystietoa: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Yhteyshenkilön poistaminen onnistui" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "Virhe poistettaessa yhteystietoa: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Yhteyshenkilö asetettu ensisijaiseksi" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "Virhe ensisijaisen yhteyshenkilön asettamisessa: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Viestintä tallennettu onnistuneesti" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Virhe tallennettaessa viestintää: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Password is required." +#~ msgstr "Salasana vaaditaan." -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "Tunniste vaaditaan" +#~ msgid "Could not set password due to a database error." +#~ msgstr "Salasanaa ei voitu asettaa tietokantavirheen vuoksi." -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "Salasana asetettu onnistuneesti! Voit nyt kirjautua sisään portaaliin." -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "Asiakasportaalin tietoja ei voi ladata." -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Invoice not found." +#~ msgstr "Laskua ei löydy." -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Quote not found." +#~ msgstr "Lainausta ei löytynyt." -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Virheellinen tarjouksen arvo" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Kauppa luotu onnistuneesti" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Virhe tarjouksen luomisessa: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Sopimuksen päivitys onnistui" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Virhe päivitettäessä sopimusta: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Kauppa suljettiin voitettuna" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Virhe suljettaessa sopimusta: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Kauppa päättyi menetettynä" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Toiminnan tallennus onnistui" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Virhe tallennettaessa toimintaa: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "Luokan nimi vaaditaan" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Kululuokka luotu onnistuneesti" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Virhe luotaessa kululuokkaa" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Kululuokan päivitys onnistui" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Virhe kululuokan päivittämisessä" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Kululuokka deaktivoitu onnistuneesti" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Virhe kululuokan deaktivoinnissa" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "Otsikko vaaditaan" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "Luokka vaaditaan" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "Määrä vaaditaan" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "Kulutuspäivä vaaditaan" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Virheellinen päivämäärän muoto" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Virheellinen summan muoto" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Kulu luotu onnistuneesti" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Virhe kuluja luotaessa" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "Sinulla ei ole lupaa tarkastella tätä kulua" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "Sinulla ei ole lupaa muokata tätä kulua" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "Hyväksyttyjä tai korvattuja kuluja ei voi muokata" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Täytä kaikki pakolliset kentät" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Kulujen päivitys onnistui" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Virhe kulujen päivittämisessä" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "Sinulla ei ole lupaa poistaa tätä kulua" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "Hyväksyttyjä tai laskutettuja kuluja ei voi poistaa" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Kulu poistettu onnistuneesti" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Virhe kulujen poistamisessa" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "Poistettavia kuluja ei ole valittu" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "Kuluja ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "%(count)d kulu(tta) poistettu onnistuneesti" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "Ohitettu %(count)d kulu(tta): %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "Kuluja ei ole valittu" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Virheellinen tila-arvo" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "Kuluja ei voitu päivittää tietokantavirheen vuoksi" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "%(count)d kulu(t) päivitetty onnistuneesti arvoon %(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "Ohitettu %(count)d kulu(tta): %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "Ohitettu %(count)d kulu(tta) (ei lupaa)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Vain järjestelmänvalvojat voivat hyväksyä kulut" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Vain odottavat kulut voidaan hyväksyä" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Kulu hyväksytty" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Virhe kulujen hyväksymisessä" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Vain järjestelmänvalvojat voivat hylätä kulut" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Vain odottavat kulut voidaan hylätä" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Hylkäämisen syy vaaditaan" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Kulutus hylätty" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Virhe kulujen hylkäämisessä" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Vain ylläpitäjät voivat merkitä kulut korvatuiksi" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Vain hyväksytyt kulut voidaan merkitä korvatuiksi" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Tätä kulua ei ole merkitty korvattavaksi" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Kulut merkitty korvatuksi" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Virhe merkittäessä kuluja korvatuiksi" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "OCR ei ole käytettävissä. Ota yhteyttä järjestelmänvalvojaasi." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Virheellinen tiedostotyyppi. Sallitut tyypit: png, jpg, jpeg, gif, pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "Kuitti skannattu onnistuneesti! Voit nyt luoda kuluja poimituista tiedoista." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "Virhe skannattaessa kuittia. Yritä uudelleen tai syötä kulut manuaalisesti." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "Skannattuja kuittitietoja ei löytynyt. Skannaa ensin kuitti." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Kulu luotu onnistuneesti skannatusta kuitista" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "Käyttöoikeuksia ei ole määritetty." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "Asiakasportaalin tietoja ei voi ladata." -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "Client Report" +#~ msgstr "Asiakasportaali" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "Viimeiset 7 päivää" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Summary" +#~ msgstr "Yhteenveto" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "Tunteja yhteensä" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Paid" +#~ msgstr "Maksettu" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "Erinomaista" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "Tunnit projektin mukaan" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "Project" +#~ msgstr "Projekti" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "Hours" +#~ msgstr "Tuntia" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "REST API integraatioita varten" +#~ msgid "Billable Hours" +#~ msgstr "Laskutettavat tunnit" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "Asiakkaan nimi vaaditaan" +#~ msgid "Time by Date" +#~ msgstr "Aikaväli" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "Date" +#~ msgstr "Päivämäärä" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "Access denied" +#~ msgstr "Käyttö estetty" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "Sinulla ei ole lupaa luoda asiakkaita" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "Asiakkaan nimi vaaditaan" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "Tämänniminen asiakas on jo olemassa" -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "Virheellinen tuntihinnan muoto" -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "Ennakkomaksutuntien on oltava positiivinen luku." -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "Prepaid-nollauspäivän on oltava välillä 1–28." -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Asiakasohjelmaa ei voitu luoda " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "Sinulla ei ole pääsyä tähän projektiin." -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "Sinulla ei ole lupaa muokata asiakkaita" -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "Portaalin käyttäjätunnus vaaditaan portaalin käyttöönoton yhteydessä." -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "This portal username is already in use by another client." +#~ msgstr "Tämä portaalin käyttäjätunnus on jo toisen asiakkaan käytössä." -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Asiakasohjelmaa ei voitu päivittää " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "Sinulla ei ole lupaa lähettää portaalisähköposteja" -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "Asiakasportaali ei ole käytössä tälle asiakkaalle." -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "Portal username is not set for this client." +#~ msgstr "Portaalin käyttäjätunnusta ei ole asetettu tälle asiakkaalle." -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "Asiakkaan sähköpostiosoitetta ei ole asetettu." +#~ " Salasanan asetussähköpostia ei voi " +#~ "lähettää." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "Salasanan määritystunnusta ei voitu luoda tietokantavirheen vuoksi." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "" +#~ "Salasanan asetussähköposti lähetetty onnistuneesti" +#~ " osoitteeseen %(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "Sähköpostipalvelinta ei ole määritetty. " +#~ "Määritä sähköpostiasetukset kohdassa Admin →" +#~ " Email Configuration tai aseta " +#~ "MAIL_SERVER-ympäristömuuttuja." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "Salasanan asetussähköpostin lähettäminen " +#~ "epäonnistui. Tarkista sähköpostin määritykset " +#~ "ja palvelimen lokit saadaksesi lisätietoja." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "Sähköpostia lähetettäessä tapahtui virhe: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "Sinulla ei ole lupaa arkistoida asiakkaita" + +#~ msgid "Client is already inactive" +#~ msgstr "Asiakas on jo epäaktiivinen" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "Sinulla ei ole lupaa aktivoida asiakkaita" + +#~ msgid "Client is already active" +#~ msgstr "Asiakas on jo aktiivinen" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "Sinulla ei ole lupaa poistaa asiakkaita" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Asiakasohjelmaa ei voitu poistaa " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." + +#~ msgid "No clients selected for deletion" +#~ msgstr "Poistettavia asiakkaita ei ole valittu" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Asiakkaita ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." + +#~ msgid "No clients were deleted" +#~ msgstr "Asiakkaita ei poistettu" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "Sinulla ei ole lupaa muuttaa asiakkaan tilaa" + +#~ msgid "No clients selected" +#~ msgstr "Asiakkaita ei ole valittu" + +#~ msgid "Invalid status" +#~ msgstr "Virheellinen tila" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Asiakkaan tilaa ei voitu päivittää " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "No clients were updated" +#~ msgstr "Asiakkaita ei ole päivitetty" -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "No file provided" +#~ msgstr "Ei tiedostoa" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "File type not allowed" +#~ msgstr "Tiedostotyyppiä ei sallita" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "Tiedoston koko ylittää suurimman sallitun koon (10 Mt)" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Liitettä ei voitu ladata tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "Liite lähetetty onnistuneesti" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "File not found" +#~ msgstr "Tiedostoa ei löydy" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Liitettä ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "Liitteen poistaminen onnistui" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "Kommentin sisältö ei voi olla tyhjä" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "Kommentin on liityttävä projektiin, tehtävään tai tarjoukseen" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "Kommenttia ei voi liittää useisiin kohteisiin" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "Virheellinen vanhemman kommentti" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "Kommentti lisätty onnistuneesti" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "Virhe kommentin lisäämisessä" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Virhe lisättäessä kommenttia: %(error)s" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "Sinulla ei ole lupaa muokata tätä kommenttia" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "Comment updated successfully" +#~ msgstr "Kommentin päivitys onnistui" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Virhe päivitettäessä kommenttia: %(error)s" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä kommenttia" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "Kommentin poistaminen onnistui" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Edistynyt" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Arvostelu" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Virhe poistettaessa kommenttia: %(error)s" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä liitettä" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Yritys" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "Yhteystietojen luominen onnistui" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Webhooks" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Virhe luotaessa yhteystietoa: %(error)s" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "Yhteystietojen päivitys onnistui" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Projektit" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Virhe päivitettäessä yhteystietoa: %(error)s" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "Yhteyshenkilön poistaminen onnistui" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "Virhe poistettaessa yhteystietoa: %(error)s" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Contact set as primary" +#~ msgstr "Yhteyshenkilö asetettu ensisijaiseksi" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "Virhe ensisijaisen yhteyshenkilön asettamisessa: %(error)s" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "Viestintä tallennettu onnistuneesti" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Virhe tallennettaessa viestintää: %(error)s" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "Label is required" +#~ msgstr "Tunniste vaaditaan" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "SKU on jo olemassa. Käytä toista SKU:ta." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Varastotuotteen luominen onnistui." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "Virhe luotaessa varastotuotetta: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Varastotuotteen päivitys onnistui." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "Virhe päivitettäessä varastossa olevaa tuotetta: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "Ei voi poistaa varastonimikettä, jolla on olemassa oleva varasto- tai liikehistoria." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "Varastotuotteen poistaminen onnistui." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "Virhe varastotuotteen poistamisessa: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "Varastokoodi on jo olemassa. Käytä eri koodia." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Varaston luominen onnistui." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Virhe luotaessa varastoa: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Varaston päivitys onnistui." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "Virhe varaston päivityksessä: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "Ei voida poistaa varastoa olemassa olevan varaston kanssa. Siirrä tai poista ensin kaikki varastot." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Varaston poistaminen onnistui." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Virhe varaston poistamisessa: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "Virheellinen tarjouksen arvo" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "Kauppa luotu onnistuneesti" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Virhe tarjouksen luomisessa: %(error)s" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "Sopimuksen päivitys onnistui" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Virhe päivitettäessä sopimusta: %(error)s" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "Kauppa suljettiin voitettuna" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Virhe suljettaessa sopimusta: %(error)s" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "Osakeliikkeen tallennus onnistui." +#~ msgid "Deal closed as lost" +#~ msgstr "Kauppa päättyi menetettynä" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "Toiminnan tallennus onnistui" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "Virhe tallennettaessa varastoliikettä: %(error)s" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Virhe tallennettaessa toimintaa: %(error)s" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "Lähde- ja kohdevarastojen on oltava erilaisia." +#~ msgid "Category name is required" +#~ msgstr "Luokan nimi vaaditaan" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Lähdevarastossa ei ole riittävästi varastoa." +#~ msgid "Expense category created successfully" +#~ msgstr "Kululuokka luotu onnistuneesti" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "Virhe luotaessa kululuokkaa" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "Kululuokan päivitys onnistui" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Error updating expense category" +#~ msgstr "Virhe kululuokan päivittämisessä" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "Varaston siirto onnistui." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Virhe luotaessa siirtoa: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "Varaston oikaisu tallennettu onnistuneesti." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Virhe tallennuksen säätö: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Varaus suoritettu onnistuneesti." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Virhe varauksen täyttämisessä: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "Varaus peruutettu onnistuneesti." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "Virhe peruutettaessa varausta: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Kululuokka deaktivoitu onnistuneesti" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "Toimittaja luotiin onnistuneesti." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Virhe luotaessa toimittajaa: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "Toimittajakoodi on jo olemassa. Käytä eri koodia." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "Toimittaja päivitetty onnistuneesti." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Virhe päivitettäessä toimittajaa: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "Toimittajaa ja siihen liittyviä varastotuotteita ei voi poistaa. Poista kohteet ensin." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "Toimittajan poistaminen onnistui." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Virhe toimittajan poistamisessa: %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "Otsikko vaaditaan" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "Toimittajia ei löytynyt." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "Roolin nimi vaaditaan" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "Roolia ei voitu luoda tietokantavirheen vuoksi" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Ostotilauksen luominen onnistui." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Virhe luotaessa ostotilausta: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "Vastaanotettua ostotilausta ei voi muokata." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "Roolia ei voitu päivittää tietokantavirheen vuoksi" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Ostotilauksen päivitys onnistui." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Virhe päivitettäessä ostotilausta: %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "Käyttäjärooleja ei voitu päivittää tietokantavirheen vuoksi" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Ostotilaus merkitty lähetetyksi." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Virhe lähetettäessä ostotilausta: %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "Roolia ei voitu luoda tietokantavirheen vuoksi" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Ostotilaus peruutettu onnistuneesti." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Virhe ostotilauksen peruuttamisessa: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "Vastaanotettua ostotilausta ei voi poistaa. Peruuta sen sijaan." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "Roolia ei voitu poistaa tietokantavirheen vuoksi" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Ostotilauksen poistaminen onnistui." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Virhe poistettaessa ostotilausta: %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "Roolia ei voitu luoda tietokantavirheen vuoksi" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Ostotilaus merkitty vastaanotetuksi ja varasto päivitetty." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Virhe ostotilauksen vastaanottamisessa: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Error deactivating expense category" +#~ msgstr "Virhe kululuokan deaktivoinnissa" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Title is required" +#~ msgstr "Otsikko vaaditaan" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Category is required" +#~ msgstr "Luokka vaaditaan" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "Amount is required" +#~ msgstr "Määrä vaaditaan" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "Expense date is required" +#~ msgstr "Kulutuspäivä vaaditaan" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "Virheellinen päivämäärän muoto" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "Projekti, asiakkaan nimi ja eräpäivä vaaditaan" +#~ msgid "Invalid amount format" +#~ msgstr "Virheellinen summan muoto" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Virheellinen eräpäivän muoto" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Virheellinen veroprosentin muoto" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Valittua projektia ei löydy" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "Laskua ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Expense created successfully" +#~ msgstr "Kulu luotu onnistuneesti" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "Sinulla ei ole lupaa tarkastella tätä laskua" +#~ msgid "Error creating expense" +#~ msgstr "Virhe kuluja luotaessa" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "Sinulla ei ole lupaa tarkastella tätä kulua" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "Sinulla ei ole lupaa muokata tätä kulua" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "Hyväksyttyjä tai korvattuja kuluja ei voi muokata" -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "Please fill in all required fields" +#~ msgstr "Täytä kaikki pakolliset kentät" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Expense updated successfully" +#~ msgstr "Kulujen päivitys onnistui" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "Error updating expense" +#~ msgstr "Virhe kulujen päivittämisessä" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä kulua" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "Sinulla ei ole lupaa muokata tätä laskua" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "Varoitus: Ei voitu varata varastoa tuotteelle %(item)s: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "Laskua ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "Laskun päivitys onnistui" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "Varoitus: Tuotteen %(item)s varastoa ei voitu vähentää: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "Sinulla ei ole lupaa poistaa tätä laskua" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "Vain lainausluonnoksia voidaan muokata" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "Laskua ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "Poistettavia laskuja ei ole valittu" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "Laskuja ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "Laskuja ei ole valittu" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "Laskuja ei voitu päivittää tietokantavirheen vuoksi" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "Ei valittuja aikamerkintöjä, kuluja, kuluja tai ylimääräisiä tuotteita" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "Ei voitu luoda kohteita tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "Aikakirjauksista ja kuluista luotu onnistuneesti laskutuskohteet" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "Käytettiin %(hours)s ennakkoon maksettua tuntia %(client)s:lle ennen laskutusylijäämiä." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "Sinulla ei ole lupaa viedä tätä laskua" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "Hyväksyttyjä tai laskutettuja kuluja ei voi poistaa" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Expense deleted successfully" +#~ msgstr "Kulu poistettu onnistuneesti" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "Virhe kulujen poistamisessa" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "Poistettavia kuluja ei ole valittu" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kuluja ei voitu poistaa tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "%(count)d kulu(tta) poistettu onnistuneesti" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "Ohitettu %(count)d kulu(tta): %(errors)s" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "PDF:n luominen epäonnistui: %(err)s. Myös varatoimi epäonnistui: %(fb)s" +#~ msgid "No expenses selected" +#~ msgstr "Kuluja ei ole valittu" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "Sinulla ei ole lupaa kopioida tätä laskua" +#~ msgid "Invalid status value" +#~ msgstr "Virheellinen tila-arvo" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "Laskua ei voitu kopioida tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "Kuluja ei voitu päivittää tietokantavirheen vuoksi" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "Kaksinkertaista laskua ei voitu viimeistellä tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "%(count)d kulu(t) päivitetty onnistuneesti arvoon %(status)s" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "Ohitettu %(count)d kulu(tta): %(errors)s" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "Ohitettu %(count)d kulu(tta) (ei lupaa)" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Vain järjestelmänvalvojat voivat hyväksyä kulut" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Vain odottavat kulut voidaan hyväksyä" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "Kulu hyväksytty" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "Error approving expense" +#~ msgstr "Virhe kulujen hyväksymisessä" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Vain järjestelmänvalvojat voivat hylätä kulut" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Vain odottavat kulut voidaan hylätä" -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Lasku merkitty lähetetyksi" +#~ msgid "Rejection reason is required" +#~ msgstr "Hylkäämisen syy vaaditaan" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Lasku merkitty maksetuksi" +#~ msgid "Expense rejected" +#~ msgstr "Kulutus hylätty" -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "Virhe kulujen hylkäämisessä" -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "Vain ylläpitäjät voivat merkitä kulut korvatuiksi" -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Vain hyväksytyt kulut voidaan merkitä korvatuiksi" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Tätä kulua ei ole merkitty korvattavaksi" -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Kulut merkitty korvatuksi" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Virhe merkittäessä kuluja korvatuiksi" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "OCR ei ole käytettävissä. Ota yhteyttä järjestelmänvalvojaasi." -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Virheellinen tiedostotyyppi. Sallitut tyypit: png, jpg, jpeg, gif, pdf" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "Kuitti skannattu onnistuneesti! Voit nyt " +#~ "luoda kuluja poimituista tiedoista." -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Virhe skannattaessa kuittia. Yritä uudelleen" +#~ " tai syötä kulut manuaalisesti." -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "Skannattuja kuittitietoja ei löytynyt. Skannaa ensin kuitti." -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Kulu luotu onnistuneesti skannatusta kuitista" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Permission denied." +#~ msgstr "Käyttöoikeuksia ei ole määritetty." -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "Avain ja tarra vaaditaan" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "Saraketta ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "Saraketta ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "Järjestelmäsarakkeita ei voi poistaa" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "Saraketta ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "Saraketta ei voitu vaihtaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "Ajastin pysähtyi onnistuneesti" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Liidi luotu onnistuneesti" +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Virhe luotaessa liidia: %(error)s" +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Liidin päivitys onnistui" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Virhe päivitettäessä liidia: %(error)s" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "Lyijy on jo muunnettu" +#~ msgid "Invalid action for this integration." +#~ msgstr "REST API integraatioita varten" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Liidi muutettu asiakkaaksi onnistuneesti" +#~ msgid "Linear API key is required." +#~ msgstr "Asiakkaan nimi vaaditaan" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Virhe muunnettaessa johtoa: %(error)s" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Liidi muutettu kaupaksi onnistuneesti" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Lyijy merkitty kadonneeksi" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "Virhe merkittäessä johtoa kadonneeksi: %(error)s" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Ajokilometrit luotiin onnistuneesti" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Virhe luotaessa mittarilukematietoa" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "Sinulla ei ole lupaa tarkastella tätä mittarilukematietoa" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "Sinulla ei ole lupaa muokata tätä mittarilukematietoa" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "Ei voi muokata hyväksyttyjä tai korvattuja kilometrimääriä" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Ajokilometrit päivitetty onnistuneesti" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Virhe päivitettäessä mittarilukematietoa" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "Sinulla ei ole lupaa poistaa tätä mittarilukematietoa" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "Ajokilometrimerkintä poistettu onnistuneesti" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Virhe poistettaessa mittarilukematietoa" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "Poistettavia kilometrimerkintöjä ei ole valittu" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "Ajokilometrejä ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "%(count)d mittarilukema entr%(plural)s poistettu onnistuneesti" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "Ohitettu %(count)d mittarilukema %(plural)s: %(errors)s" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "Kilometrejä ei ole valittu" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "Ajokilometrejä ei voitu päivittää tietokantavirheen vuoksi" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "%(count)d mittarilukema entr%(plural)s päivitetty onnistuneesti arvoon %(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "Ohitettu %(count)d mittarilukema %(plural)s (ei lupaa)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Vain ylläpitäjät voivat hyväksyä ajokilometrejä" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Vain vireillä olevat kilometrimäärät voidaan hyväksyä" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Kilometrimerkintä hyväksytty" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Virhe ajokilometrimerkinnän hyväksymisessä" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Vain järjestelmänvalvojat voivat hylätä kilometrimerkintöjä" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "Vain vireillä olevat kilometrimerkinnät voidaan hylätä" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Kilometrimerkintä hylätty" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Virhe evättäessä kilometrimäärää" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "Vain ylläpitäjät voivat merkitä kilometrimerkinnät hyvitetyiksi" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "Vain hyväksytyt kilometrimäärät voidaan merkitä hyvitetyiksi" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Kilometrimerkintä merkitty hyvitetyksi" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Virhe merkittäessä kilometrimerkintää hyvitetyksi" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "Tarjouksen nimi ja asiakas vaaditaan" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Valittua asiakasta ei löydy" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Virheellinen kokonaissumman muoto" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Virheellinen arvioitu tuntimuoto" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Virheellinen päivämäärämuoto voimassa olevalle asti" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "Lainausta ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Lainaus luotu onnistuneesti" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "Vain lainausluonnoksia voidaan muokata" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "Lainausta ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "Lainaus päivitetty onnistuneesti" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "Vain tarjousluonnoksia voidaan lähettää" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "Tarjousta ei voitu lähettää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Lainaus lähetetty onnistuneesti" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Tätä lainausta ei voida hyväksyä" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "Tarjousta ei voitu hyväksyä: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "Tarjousta ei voitu hyväksyä tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Tarjous hyväksytty ja projekti luotu onnistuneesti" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Tätä lainausta ei voi hylätä" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "Lainausta ei voitu hylätä: %(error)s" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "Tarjousta ei voitu hylätä tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Lainaus hylätty" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "Vain luonnokset tai hylätyt lainaukset voidaan poistaa" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "Lainausta ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Lainaus poistettu onnistuneesti" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "Virheellinen päivämäärämuoto" +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Virheellinen päivämäärämuoto" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "Sinulla ei ole lupaa tarkastella tätä maksua" +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "Lasku, summa ja maksupäivä vaaditaan" +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "Valittua laskua ei löydy" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "Sinulla ei ole oikeutta lisätä maksuja tähän laskuun" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "Maksun summan on oltava suurempi kuin nolla" +#~ msgid "Advanced" +#~ msgstr "Edistynyt" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Virheellinen maksusumma" +#~ msgid "Review" +#~ msgstr "Arvostelu" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Virheellinen maksupäivän muoto" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "Yhdyskäytävämaksu ei voi olla negatiivinen" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Virheellinen yhdyskäytävämaksun määrä" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "Maksua ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "Sinulla ei ole lupaa muokata tätä maksua" +#~ msgid "Company" +#~ msgstr "Yritys" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "Maksua ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Maksu päivitetty onnistuneesti" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "Sinulla ei ole lupaa poistaa tätä maksua" +#~ msgid "Webhooks" +#~ msgstr "Webhooks" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "Maksua ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Maksun poistaminen onnistui" +#~ msgid "Projects" +#~ msgstr "Projektit" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "Poistettavia maksuja ei ole valittu" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "Maksuja ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "Maksuja ei ole valittu" +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "Maksuja ei voitu päivittää tietokantavirheen vuoksi" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "Aloituspäivän on oltava ennen lopetuspäivää" +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "Tästä sijainnista ei löytynyt päivärahaa. Määritä hinnat ensin." +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Päivärahavaatimus luotu onnistuneesti" +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Virhe luotaessa päivärahavaatimusta" +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "Sinulla ei ole lupaa tarkastella tätä päivärahavaatimusta" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "Sinulla ei ole lupaa muokata tätä päivärahavaatimusta" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "Ei voi muokata hyväksyttyjä tai korvattuja päivärahavaatimuksia" +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "SKU on jo olemassa. Käytä toista SKU:ta." -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "Päivärahavaatimus päivitetty onnistuneesti" +#~ msgid "Stock item created successfully." +#~ msgstr "Varastotuotteen luominen onnistui." -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Virhe päivitettäessä päivärahavaatimusta" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "Sinulla ei ole lupaa poistaa tätä päivärahavaatimusta" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Päivärahavaatimus poistettu onnistuneesti" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Virhe päivärahahakemuksen poistamisessa" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "Päivärahavaatimuksia ei ole valittu poistettavaksi" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "Päivärahavaatimuksia ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "%(count)d päivärahavaatimus(tta) poistettu onnistuneesti" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "Ohitettu %(count)d päivärahavaatimus(t): %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "Päivärahavaatimuksia ei ole valittu" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "Päivärahavaatimuksia ei voitu päivittää tietokantavirheen vuoksi" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "%(count)d päivärahavaatimus(t) päivitetty onnistuneesti arvoon %(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "Ohitettu %(count)d päivärahavaatimus(ta) (ei lupaa)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Vain ylläpitäjät voivat hyväksyä päivärahahakemukset" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Vain vireillä olevat päivärahahakemukset voidaan hyväksyä" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Päivärahahakemus hyväksytty" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Virhe päivärahahakemuksen hyväksymisessä" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Vain ylläpitäjät voivat hylätä päivärahahakemukset" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Vain vireillä olevat päivärahahakemukset voidaan hylätä" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Päivärahavaatimus hylätty" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Virhe päivärahahakemuksen hylkäämisessä" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Päivärahan luominen onnistui" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Virhe luotaessa päivärahaa" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Päivämäärän päivitys onnistui" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Virhe päivitettäessä päivärahaa" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "Korkoa ei voi poistaa: %(count)d päivärahavaatimuksen käyttää sitä. Sen sijaan deaktivoi se." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "Päivämäärän poistaminen onnistui" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Virhe päivärahaa poistettaessa" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "Sinulla ei ole lupaa käyttää tätä sivua" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "Roolin nimi vaaditaan" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "Tämän niminen rooli on jo olemassa" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "Roolia ei voitu luoda tietokantavirheen vuoksi" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Rooli luotiin onnistuneesti" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "Virhe luotaessa varastotuotetta: %(error)s" -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "Roolia ei voitu päivittää tietokantavirheen vuoksi" +#~ msgid "Stock item updated successfully." +#~ msgstr "Varastotuotteen päivitys onnistui." -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Roolin päivitys onnistui" +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "Virhe päivitettäessä varastossa olevaa tuotetta: %(error)s" -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "Sinulla ei ole lupaa suorittaa tätä toimintoa" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "Ei voi poistaa varastonimikettä, jolla " +#~ "on olemassa oleva varasto- tai " +#~ "liikehistoria." -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "Järjestelmärooleja ei voi poistaa" +#~ msgid "Stock item deleted successfully." +#~ msgstr "Varastotuotteen poistaminen onnistui." -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "Käyttäjille määritettyä roolia ei voi poistaa. Määritä ensin käyttäjät uudelleen." +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "Virhe varastotuotteen poistamisessa: %(error)s" -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "Roolia ei voitu poistaa tietokantavirheen vuoksi" +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "Varastokoodi on jo olemassa. Käytä eri koodia." -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "Rooli \"%(name)s\" poistettiin onnistuneesti" +#~ msgid "Warehouse created successfully." +#~ msgstr "Varaston luominen onnistui." -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Virhe luotaessa varastoa: %(error)s" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "Varaston päivitys onnistui." -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "Virhe varaston päivityksessä: %(error)s" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "Käyttäjärooleja ei voitu päivittää tietokantavirheen vuoksi" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "Ei voida poistaa varastoa olemassa " +#~ "olevan varaston kanssa. Siirrä tai " +#~ "poista ensin kaikki varastot." -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Käyttäjäroolien päivitys onnistui" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Varaston poistaminen onnistui." -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Virhe varaston poistamisessa: %(error)s" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "Projektin nimi ja asiakas vaaditaan" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Virheellinen budjettisumma" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Virheellinen budjetin kynnysprosentti (0–100)" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Projektia ei löydy" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "Sinulla ei ole lupaa arkistoida projekteja" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "Projekti on jo arkistoitu" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "Sinulla ei ole lupaa poistaa projekteja arkistosta" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "Projekti on jo aktiivinen" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "Sinulla ei ole lupaa poistaa projekteja käytöstä" +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "Projekti on jo epäaktiivinen" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "Sinulla ei ole lupaa aktivoida projekteja" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "Projektia, jossa on olemassa olevia aikamerkintöjä, ei voi poistaa" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "Projektia ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "Sinulla ei ole lupaa poistaa projekteja" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "Poistettavia projekteja ei ole valittu" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "Osakeliikkeen tallennus onnistui." -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "Projekteja ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "Projekteja ei poistettu" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "Virhe tallennettaessa varastoliikettä: %(error)s" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "Sinulla ei ole lupaa muuttaa projektin tilaa" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "Lähde- ja kohdevarastojen on oltava erilaisia." -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "Ei valittuja projekteja" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Lähdevarastossa ei ole riittävästi varastoa." -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "Projektin tilaa ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "Projekteja ei ole päivitetty" +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "Projekti on jo suosikeissa" +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Projekti lisätty suosikkeihin" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "Varaston siirto onnistui." -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "Projektin lisääminen suosikkeihin epäonnistui" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Virhe luotaessa siirtoa: %(error)s" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "Projekti ei ole suosikeissa" +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "Varaston oikaisu tallennettu onnistuneesti." -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Projekti poistettu suosikeista" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Virhe tallennuksen säätö: %(error)s" -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "Projektin poistaminen suosikeista epäonnistui" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Varaus suoritettu onnistuneesti." -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "Kuvaus, luokka, määrä ja päivämäärä vaaditaan" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Virhe varauksen täyttämisessä: %(error)s" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "Kustannuksia ei voitu lisätä tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Reservation cancelled successfully." +#~ msgstr "Varaus peruutettu onnistuneesti." -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Kustannukset lisätty onnistuneesti" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "Virhe peruutettaessa varausta: %(error)s" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Hintaa ei löytynyt" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "Sinulla ei ole lupaa muokata tätä hintaa" +#~ msgid "Supplier created successfully." +#~ msgstr "Toimittaja luotiin onnistuneesti." -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "Kustannuksia ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Virhe luotaessa toimittajaa: %(error)s" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Hinta päivitetty onnistuneesti" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "Toimittajakoodi on jo olemassa. Käytä eri koodia." -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "Sinulla ei ole lupaa poistaa tätä hintaa" +#~ msgid "Supplier updated successfully." +#~ msgstr "Toimittaja päivitetty onnistuneesti." -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "Laskutettua kulua ei voi poistaa" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Virhe päivitettäessä toimittajaa: %(error)s" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "Kustannuksia ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "Toimittajaa ja siihen liittyviä " +#~ "varastotuotteita ei voi poistaa. Poista " +#~ "kohteet ensin." -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Nimi ja yksikköhinta vaaditaan" +#~ msgid "Supplier deleted successfully." +#~ msgstr "Toimittajan poistaminen onnistui." -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Virheellinen määrän muoto" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Virhe toimittajan poistamisessa: %(error)s" -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Virheellinen yksikköhinnan muoto" +#~ msgid "Supplier is required." +#~ msgstr "Otsikko vaaditaan" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "Ei voitu lisätä ylimääräistä hyvää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Erittäin hyvä lisätty onnistuneesti" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Erittäin hyvää ei löytynyt" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "Sinulla ei ole lupaa muokata tätä ylimääräistä tuotetta" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "Ei voitu päivittää erityisen hyvin tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Erittäin hyvä päivitys onnistuneesti" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "Sinulla ei ole lupaa poistaa tätä ylimääräistä tuotetta" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "Laskuun lisättyä ylimääräistä tuotetta ei voi poistaa" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "Erityistä hyvää ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Projekti luotu onnistuneesti" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Virheellinen alennussumman muoto" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "Tarjous on hyväksyttävä ennen kuin se voidaan lähettää" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "Tarjousta ei voi lähettää: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "Sinulla ei ole lupaa ladata liitteitä tähän lainaukseen" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "Sinulla ei ole lupaa ladata tätä liitettä" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "Sinulla ei ole lupaa pyytää hyväksyntää tälle tarjoukselle" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Tämä tarjous ei vaadi hyväksyntää" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "Ei voida pyytää hyväksyntää: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "Ei voitu pyytää hyväksyntää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Hyväksyntäpyyntö onnistui" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Tämä tarjous ei odota hyväksyntää" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "Tarjousta ei voida hyväksyä: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "Tarjousta ei voitu hyväksyä tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Tarjous hyväksytty" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "Tarjousta ei voi hylätä: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Lainauksen hyväksyntä hylätty" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "Mallia ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Malli luotiin onnistuneesti" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Supplier not found." +#~ msgstr "Toimittajia ei löytynyt." -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "Sinulla ei ole lupaa luoda mallia tästä lainauksesta" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "Mallia ei voitu tallentaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Malli tallennettu onnistuneesti" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "Sinulla ei ole lupaa viedä tätä tarjousta" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Virhe PDF:n luomisessa: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "Vastaanottajan sähköpostiosoite vaaditaan" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Tarjous lähetetty onnistuneesti osoitteeseen %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "Tarjouksen lähettäminen epäonnistui: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Virhe lähetettäessä sähköpostia: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "Sinulla ei ole lupaa kopioida tätä lainausta" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "Lainausta ei voitu kopioida tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "Kopioitua tarjousta ei voitu viimeistellä tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "Lainaus %(quote_number)s luotiin kaksoiskappaleena" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Valitse toiminto ja vähintään yksi tarjous" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "Virheelliset lainaustunnukset" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "Lainauksia ei löytynyt tai sinulla ei ole lupaa" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "Kopioitu %(count)d lainaus" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "%(count)d lainauksen kopiointi epäonnistui" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Virhe lainausmerkkien kopioinnissa" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "%(count)d lainaus merkittiin lähetetyksi" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "%(count)d lainausta ei voitu merkitä lähetetyksi" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Virhe tarjousten päivittämisessä" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "%(count)d lainaus poistettu" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "Ei voitu poistaa %(count)d lainausta (saattaa olla käytössä)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Virhe lainausmerkkejä poistettaessa" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Virheellinen toiminto" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "Order date is required." +#~ msgstr "Roolin nimi vaaditaan" -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "Roolia ei voitu luoda tietokantavirheen vuoksi" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "Nimi, projekti, asiakas, taajuus ja seuraava suorituspäivä ovat pakollisia" +#~ msgid "Purchase order created successfully." +#~ msgstr "Ostotilauksen luominen onnistui." -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Virheellinen seuraavan suorituspäivän muoto" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Virhe luotaessa ostotilausta: %(error)s" -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Virheellinen lopetuspäivän muoto" +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "Vastaanotettua ostotilausta ei voi muokata." -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Valittua projektia tai asiakasta ei löydy" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "Roolia ei voitu päivittää tietokantavirheen vuoksi" -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "Toistuvaa laskua ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Purchase order updated successfully." +#~ msgstr "Ostotilauksen päivitys onnistui." -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "Sinulla ei ole lupaa tarkastella tätä toistuvaa laskua" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Virhe päivitettäessä ostotilausta: %(error)s" -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "Sinulla ei ole lupaa muokata tätä toistuvaa laskua" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "Käyttäjärooleja ei voitu päivittää tietokantavirheen vuoksi" -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "Toistuvaa laskua ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Purchase order marked as sent." +#~ msgstr "Ostotilaus merkitty lähetetyksi." -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Toistuvan laskun päivitys onnistui" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Virhe lähetettäessä ostotilausta: %(error)s" -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "Sinulla ei ole lupaa poistaa tätä toistuvaa laskua" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "Roolia ei voitu luoda tietokantavirheen vuoksi" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "Toistuvaa laskua ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Ostotilaus peruutettu onnistuneesti." -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Virhe ostotilauksen peruuttamisessa: %(error)s" -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "Vastaanotettua ostotilausta ei voi poistaa. Peruuta sen sijaan." -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "Roolia ei voitu poistaa tietokantavirheen vuoksi" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Aloita" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "Loppu" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Ostotilauksen poistaminen onnistui." -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Tehtävä" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Huomautuksia" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "Laskutettava" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Asiakas" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Käyttäjä" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "Kyllä" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "Ei" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Virhe poistettaessa ostotilausta: %(error)s" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "Suodatinta ei voitu poistaa tietokantavirheen vuoksi" +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "Roolia ei voitu luoda tietokantavirheen vuoksi" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "Ostotilaus merkitty vastaanotetuksi ja varasto päivitetty." -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Virhe ostotilauksen vastaanottamisessa: %(error)s" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "Projekti, asiakkaan nimi ja eräpäivä vaaditaan" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "Invalid due date format" +#~ msgstr "Virheellinen eräpäivän muoto" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "Invalid tax rate format" +#~ msgstr "Virheellinen veroprosentin muoto" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "Selected project not found" +#~ msgstr "Valittua projektia ei löydy" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Laskua ei voitu luoda tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "Asetuksia ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "Sinulla ei ole lupaa tarkastella tätä laskua" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "Asennus valmis! Kiitos, että autat meitä parantamaan TimeTrackeria." +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "Projektin ja tehtävän nimi vaaditaan" +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "Valittua projektia ei ole olemassa" +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "Sinulla ei ole pääsyä tähän tehtävään" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Voit muokata vain luomiasi tehtäviä" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "Tehtävän nimi on pakollinen" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "Projekti vaaditaan" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "Tilaa ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "Tehtävää ei voitu päivittää tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "Sinulla ei ole lupaa päivittää tätä tehtävää" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "Voit päivittää vain luomiasi tehtäviä" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "Voit määrittää vain itse luomiasi tehtäviä" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "Valittua käyttäjää ei ole olemassa" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Tehtävää ei ole määritetty" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Voit poistaa vain luomiasi tehtäviä" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "Tehtävää ei voi poistaa olemassa olevilla aikamerkinnöillä" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "Tehtävää ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "Poistettavia tehtäviä ei ole valittu" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "Tehtäviä ei voitu poistaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "Tehtäviä ei ole valittu" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "Tehtäviä ei voitu päivittää tietokantavirheen vuoksi" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Anna uusi eräpäivä (VVVV-KK-PP):" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "Kulutuspäivä vaaditaan" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Virheellinen päivämäärän muoto" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "Tietokannan tuki" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "Kopioitu %(count)d lainaus" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "Tehtäviä ei löytynyt" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "%(count)d kulu(t) päivitetty onnistuneesti arvoon %(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "Ohitettu %(count)d kulu(tta) (ei lupaa)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Virheellinen prioriteettiarvo" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Käyttäjää ei ole valittu tehtävään" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Virheellinen käyttäjä valittu" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "Tehtäviä ei voitu määrittää tietokantavirheen vuoksi" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Projektia ei ole valittu" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Virheellinen projekti valittu" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "Tehtäviä ei voitu siirtää tietokantavirheen vuoksi" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Vain järjestelmänvalvojat voivat tarkastella kaikkia myöhässä olevia tehtäviä" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "Sinulla ei ole lupaa muokata tätä laskua" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "Varoitus: Ei voitu varata varastoa tuotteelle %(item)s: %(error)s" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Laskua ei voitu päivittää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "Invoice updated successfully" +#~ msgstr "Laskun päivitys onnistui" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "Varoitus: Tuotteen %(item)s varastoa ei voitu vähentää: %(error)s" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä laskua" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "Vain lainausluonnoksia voidaan muokata" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Laskua ei voitu poistaa tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "Poistettavia laskuja ei ole valittu" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Laskuja ei voitu poistaa tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." + +#~ msgid "No invoices selected" +#~ msgstr "Laskuja ei ole valittu" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "Laskuja ei voitu päivittää tietokantavirheen vuoksi" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "Ei valittuja aikamerkintöjä, kuluja, kuluja tai ylimääräisiä tuotteita" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Ei voitu luoda kohteita tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "Aikakirjauksista ja kuluista luotu onnistuneesti laskutuskohteet" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "Käytettiin %(hours)s ennakkoon maksettua " +#~ "tuntia %(client)s:lle ennen laskutusylijäämiä." -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "Sinulla ei ole lupaa viedä tätä laskua" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "Mallia ei voitu luoda tietokantavirheen vuoksi" +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "Mallia ei voitu päivittää tietokantavirheen vuoksi" +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "Mallia ei voitu poistaa tietokantavirheen vuoksi" +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "PDF:n luominen epäonnistui: %(err)s. Myös varatoimi epäonnistui: %(fb)s" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "Sinulla ei ole lupaa kopioida tätä laskua" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "Arkistoidun projektin ajastinta ei voi käynnistää. Poista projektin arkisto ensin." +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Laskua ei voitu kopioida tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "Ei voi käynnistää ajastinta ei-aktiiviselle projektille" +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Kaksinkertaista laskua ei voitu viimeistellä" +#~ " tietokantavirheen vuoksi. Tarkista palvelimen" +#~ " lokit." -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "Valittu tehtävä on virheellinen valitulle projektille" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "Sinulla ei ole pääsyä tähän projektiin." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "Sinulla ei ole pääsyä tähän tehtävään" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Sinulla on jo aktiivinen ajastin. Lopeta se ennen kuin aloitat uuden." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "Ei voitu käynnistää ajastinta tietokantavirheen vuoksi. Tarkista palvelimen lokit." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Tuntematon" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "Mallissa on oltava projekti ajastimen käynnistämiseksi" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "Tämän projektin ajastinta ei voi käynnistää" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "Ei aktiivista pysäytysajastinta" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Ei projektia" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "Ei aktiivista pysäytysajastinta" +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "Ajastin pysähtyi" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "Asiakasta ei voitu luoda. Yritä uudelleen." +#~ msgid "Invoice marked as sent" +#~ msgstr "Lasku merkitty lähetetyksi" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "Ei aktiivista pysäytysajastinta" +#~ msgid "Invoice marked as paid" +#~ msgstr "Lasku merkitty maksetuksi" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "Asiakasta ei voitu luoda. Yritä uudelleen." +#~ msgid "Client is required." +#~ msgstr "" -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "Ei aktiivista pysäytysajastinta" +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "Virheellinen tila-arvo" +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "Voit muokata vain omia ajastimia" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Virheellinen tehtävä valittu valitulle projektille" +#~ msgid "Project must belong to the same client." +#~ msgstr "" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "Aloitusaika ei voi olla tulevaisuudessa" +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Virheellinen aloituspäivän/kellonajan muoto" +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "Päättymisajan on oltava alkamisajan jälkeen" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Virheellinen lopetuspäivän/ajan muoto" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Ajastimen päivitys onnistui" +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Voit poistaa vain omat ajastimesi" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "Aktiivista ajastinta ei voi poistaa" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "Ajastimen poistaminen epäonnistui tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Key and label are required" +#~ msgstr "Avain ja tarra vaaditaan" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Virheellinen päivämäärän/ajan muoto" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Saraketta ei voitu luoda tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Saraketta ei voitu päivittää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "System columns cannot be deleted" +#~ msgstr "Järjestelmäsarakkeita ei voi poistaa" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Kaikki kentät ovat pakollisia" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Saraketta ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "Arkistoidulle projektille ei voi luoda aikamerkintöjä. Poista projektin arkisto ensin." +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Saraketta ei voitu vaihtaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "Ei voi luoda aikamerkintöjä ei-aktiiviselle projektille" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Virheellinen tehtävä valittu" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "Päättymispäivän on oltava aloituspäivämäärää myöhempi tai yhtä suuri kuin se" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "Ajanjakso ei saa ylittää 31 päivää" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Virheellinen ajan muoto" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "Valitulta alueelta ei löytynyt kelvollisia päivämääriä" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "Joukkomerkintöjä ei voitu luoda tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Timer stopped successfully" +#~ msgstr "Ajastin pysähtyi onnistuneesti" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "Joukkomerkintöjä luotaessa tapahtui virhe. Yritä uudelleen." +#~ msgid "Lead created successfully" +#~ msgstr "Liidi luotu onnistuneesti" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Voit kopioida vain omia ajastimesi" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Virhe luotaessa liidia: %(error)s" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "Voit jatkaa vain omia ajastimiasi" +#~ msgid "Lead updated successfully" +#~ msgstr "Liidin päivitys onnistui" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "Projektia ei ole enää olemassa" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Virhe päivitettäessä liidia: %(error)s" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "Lead has already been converted" +#~ msgstr "Lyijy on jo muunnettu" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "Lead converted to client successfully" +#~ msgstr "Liidi muutettu asiakkaaksi onnistuneesti" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "Ajastimen käynnistämistä ei voitu jatkaa tietokantavirheen vuoksi. Tarkista palvelimen lokit." +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Virhe muunnettaessa johtoa: %(error)s" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Liidi muutettu kaupaksi onnistuneesti" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Lead marked as lost" +#~ msgstr "Lyijy merkitty kadonneeksi" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "Virhe merkittäessä johtoa kadonneeksi: %(error)s" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Virheellinen aikavyöhyke valittu" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "Vuorokauden normaalituntien on oltava 0,5–24" +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "Vuorokauden normaalituntien on oltava 0,5–24" +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Asetukset tallennettu onnistuneesti" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Virhe tallennettaessa asetuksia: %(error)s" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "Kiitos, että valitsit TimeTrackerin!" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "Virhe asetusten tallentamisessa" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Asetukset päivitetty" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Kielen päivitys onnistui" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Virheellinen kieli" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "Kieleksi päivitetty %(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "Webhook-nimi vaaditaan" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "Webhookin URL-osoite vaaditaan" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "Vähintään yksi tapahtuma on valittava" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook luotiin onnistuneesti" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Virhe luotaessa webhookia" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "Virhe luotaessa webhookia: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhookin päivitys onnistui" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "Virhe päivitettäessä webhookia: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhookin poistaminen onnistui" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "Virhe poistettaessa webhookia: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Anna kelvollinen tavoitetunnit (suurempi kuin 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "Tälle viikolle on jo tavoite. Muokkaa nykyistä tavoitetta sen sijaan." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "Viikoittainen aikatavoite luotu onnistuneesti!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "Tavoitteen luominen epäonnistui. Yritä uudelleen." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "Sinulla ei ole lupaa tarkastella tätä tavoitetta" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "Sinulla ei ole lupaa muokata tätä tavoitetta" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "Viikoittainen aikatavoite päivitetty onnistuneesti!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "Tavoitteen päivittäminen epäonnistui. Yritä uudelleen." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "Sinulla ei ole lupaa poistaa tätä tavoitetta" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "Viikoittainen aikatavoitteen poistaminen onnistui" +#~ msgid "Mileage entry created successfully" +#~ msgstr "Ajokilometrit luotiin onnistuneesti" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "Tavoitteen poistaminen epäonnistui. Yritä uudelleen." +#~ msgid "Error creating mileage entry" +#~ msgstr "Virhe luotaessa mittarilukematietoa" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "Sinulla ei ole lupaa tarkastella tätä mittarilukematietoa" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "Sinulla ei ole lupaa muokata tätä mittarilukematietoa" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "Ei voi muokata hyväksyttyjä tai korvattuja kilometrimääriä" -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Ajokilometrit päivitetty onnistuneesti" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Error updating mileage entry" +#~ msgstr "Virhe päivitettäessä mittarilukematietoa" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä mittarilukematietoa" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "Ajokilometrimerkintä poistettu onnistuneesti" -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "Error deleting mileage entry" +#~ msgstr "Virhe poistettaessa mittarilukematietoa" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "Poistettavia kilometrimerkintöjä ei ole valittu" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Ajokilometrejä ei voitu poistaa " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "%(count)d mittarilukema entr%(plural)s poistettu onnistuneesti" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Päivitä tila" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "Ohitettu %(count)d mittarilukema %(plural)s: %(errors)s" -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "No mileage entries selected" +#~ msgstr "Kilometrejä ei ole valittu" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Luo tehtävä" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "Ajokilometrejä ei voitu päivittää tietokantavirheen vuoksi" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "" +#~ "%(count)d mittarilukema entr%(plural)s päivitetty" +#~ " onnistuneesti arvoon %(status)s" -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "Lähetä Sähköposti" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "Ohitettu %(count)d mittarilukema %(plural)s (ei lupaa)" -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Vain ylläpitäjät voivat hyväksyä ajokilometrejä" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Vain vireillä olevat kilometrimäärät voidaan hyväksyä" -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Kilometrimerkintä hyväksytty" -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "Error approving mileage entry" +#~ msgstr "Virhe ajokilometrimerkinnän hyväksymisessä" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Vain järjestelmänvalvojat voivat hylätä kilometrimerkintöjä" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "Vain vireillä olevat kilometrimerkinnät voidaan hylätä" -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "Valitse Projekti" +#~ msgid "Mileage entry rejected" +#~ msgstr "Kilometrimerkintä hylätty" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "Vain järjestelmänvalvojat voivat hylätä kilometrimerkintöjä" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Virhe evättäessä kilometrimäärää" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "Vain ylläpitäjät voivat merkitä kilometrimerkinnät hyvitetyiksi" -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "WebSocketin live-päivitykset" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "Vain hyväksytyt kilometrimäärät voidaan merkitä hyvitetyiksi" -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "Nimi ja yksikköhinta vaaditaan" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Kilometrimerkintä merkitty hyvitetyksi" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "Asiakas luotu" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Virhe merkittäessä kilometrimerkintää hyvitetyksi" -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "Avain ja tarra vaaditaan" +#~ msgid "Quote title and client are required" +#~ msgstr "Tarjouksen nimi ja asiakas vaaditaan" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Selected client not found" +#~ msgstr "Valittua asiakasta ei löydy" -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "Pyydä hyväksyntää" +#~ msgid "Invalid total amount format" +#~ msgstr "Virheellinen kokonaissumman muoto" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "Lainaus hylätty" +#~ msgid "Invalid estimated hours format" +#~ msgstr "Virheellinen arvioitu tuntimuoto" -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "Nimi ja yksikköhinta vaaditaan" +#~ msgid "Invalid date format for valid until" +#~ msgstr "Virheellinen päivämäärämuoto voimassa olevalle asti" -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "Tuntihinta" +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Lainausta ei voitu luoda tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "Quote created successfully" +#~ msgstr "Lainaus luotu onnistuneesti" -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "Only draft quotes can be edited" +#~ msgstr "Vain lainausluonnoksia voidaan muokata" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "jäljellä" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Menestys" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Virhe" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Varoitus" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Tiedot" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Ladataan..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Tallennetaan..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "Poistetaan..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Peruuttaa" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Vahvistaa" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Lähellä" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Tallentaa" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Poistaa" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Muokata" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Lisätä" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Poistaa" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "OK" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "Haluatko varmasti poistaa tämän?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "Sinulla on tallentamattomia muutoksia. Oletko varma, että haluat lähteä?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "Toiminto epäonnistui" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Toiminto suoritettu onnistuneesti" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "Ei valittuja kohteita" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Virheellinen syöte" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Tämä kenttä on pakollinen" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Ei aktiivista ajastinta" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Ajastin pysähtyi" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "Ajastimen pysäyttäminen epäonnistui" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Virhe pysäytettäessä ajastinta" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "Ei tallennettavaa lomaketta" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "Ajasinta ei löytynyt" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Ajastin pysähtyi epäaktiivisuuden vuoksi" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Lainausta ei voitu päivittää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Siirry sisältöön" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "Mobiilinavigointi" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navigointi" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "Komentopaletti" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "Kommentit" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Vaihda sivupalkki" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Kojelauta" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Ajastin" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "Aikamerkinnät" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Raportit" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Kalenteri" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Kalenterinäkymä" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "Quote updated successfully" +#~ msgstr "Lainaus päivitetty onnistuneesti" -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Ajan seuranta" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "Pyydä hyväksyntää" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "Vain tarjousluonnoksia voidaan lähettää" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "Tarjousta ei voitu lähettää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Tehtävät" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "Quote sent successfully" +#~ msgstr "Lainaus lähetetty onnistuneesti" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Kanbanin hallitus" +#~ msgid "This quote cannot be accepted" +#~ msgstr "Tätä lainausta ei voida hyväksyä" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Viikoittaiset tavoitteet" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "Tarjousta ei voitu hyväksyä: %(error)s" -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Tarjousta ei voitu hyväksyä tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Ajansyöttömallit" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Tarjous hyväksytty ja projekti luotu onnistuneesti" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" +#~ msgid "This quote cannot be rejected" +#~ msgstr "Tätä lainausta ei voi hylätä" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Asiakkaat" +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "Lainausta ei voitu hylätä: %(error)s" -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Tarjousta ei voitu hylätä tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "Quote rejected" +#~ msgstr "Lainaus hylätty" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "Vain luonnokset tai hylätyt lainaukset voidaan poistaa" -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Lainausta ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Lainausmerkit" +#~ msgid "Quote deleted successfully" +#~ msgstr "Lainaus poistettu onnistuneesti" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Rahoitus ja kulut" +#~ msgid "Payment gateway created successfully." +#~ msgstr "" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "Stripe API key not configured." +#~ msgstr "" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Payment processed successfully." +#~ msgstr "" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Aikataulutetut raportit" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Laskut" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "Invalid from date format" +#~ msgstr "Virheellinen päivämäärämuoto" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "Invalid to date format" +#~ msgstr "Virheellinen päivämäärämuoto" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Toistuvat laskut" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Maksut" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Kulut" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Kilometrimäärä" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Päivärahat" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Budjettihälytykset" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Varasto" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Varastotuotteet" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Varastot" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Toimittajat" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Ostotilaukset" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Varastotasot" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Osakeliikkeet" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Siirrot" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Säädöt" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Varaukset" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Alhaisen varaston varoitukset" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Analytics" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Työkalut ja tiedot" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Tuo / Vie" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Tallennetut suodattimet" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Admin" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Admin Dashboard" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Käyttäjien hallinta" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "You do not have permission to view this payment" +#~ msgstr "Sinulla ei ole lupaa tarkastella tätä maksua" -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Roolit ja käyttöoikeudet" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "PDF-malleja" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "Lasku PDF" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Lainaus PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Järjestelmäasetukset" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Asetukset" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "Lasku, summa ja maksupäivä vaaditaan" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "Sähköpostiasetukset" +#~ msgid "Selected invoice not found" +#~ msgstr "Valittua laskua ei löydy" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "Sähköpostimallit" +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "Sinulla ei ole oikeutta lisätä maksuja tähän laskuun" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "OIDC-asetukset" +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "Maksun summan on oltava suurempi kuin nolla" -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Invalid payment amount" +#~ msgstr "Virheellinen maksusumma" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "API-tunnukset" +#~ msgid "Invalid payment date format" +#~ msgstr "Virheellinen maksupäivän muoto" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Tarkastuslokit" +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "Yhdyskäytävämaksu ei voi olla negatiivinen" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Virheellinen yhdyskäytävämaksun määrä" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Kulujen luokat" +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Maksua ei voitu luoda tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Päivärahat" +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "Sinulla ei ole lupaa muokata tätä maksua" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Maksua ei voitu päivittää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Payment updated successfully" +#~ msgstr "Maksu päivitetty onnistuneesti" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä maksua" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Järjestelmätiedot" +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Maksua ei voitu poistaa tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Varmuuskopiot" +#~ msgid "Payment deleted successfully" +#~ msgstr "Maksun poistaminen onnistui" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "No payments selected for deletion" +#~ msgstr "Poistettavia maksuja ei ole valittu" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "Noin" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Auttaa" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "Vientiasetukset" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Tuki TimeTracker" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "Vaihda sivupalkki" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Haku" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Teema" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "Suodatinvalinnat" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Kevyt" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Tumma" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "Järjestelmä" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Maksuja ei voitu poistaa tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Käynnistä ajastin" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "to" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "Näytä Ohje" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Vaihda kieli" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Kieli" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Käyttäjävalikko" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "Tukea" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Vieras" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Oma profiili" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Omat asetukset" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Lisenssi" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "No payments selected" +#~ msgstr "Maksuja ei ole valittu" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Kirjaudu ulos" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "Maksuja ei voitu päivittää tietokantavirheen vuoksi" -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "Pidätkö TimeTrackerista?" +#~ msgid "Start date must be before end date" +#~ msgstr "Aloituspäivän on oltava ennen lopetuspäivää" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "Tästä sijainnista ei löytynyt päivärahaa. Määritä hinnat ensin." -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "Tuki TimeTracker" +#~ msgid "Per diem claim created successfully" +#~ msgstr "Päivärahavaatimus luotu onnistuneesti" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "Error creating per diem claim" +#~ msgstr "Virhe luotaessa päivärahavaatimusta" -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "Sinulla ei ole lupaa tarkastella tätä päivärahavaatimusta" -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "Tarvikkeet" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "Sinulla ei ole lupaa muokata tätä päivärahavaatimusta" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Hylkää" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "Ei voi muokata hyväksyttyjä tai korvattuja päivärahavaatimuksia" -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Päivärahavaatimus päivitetty onnistuneesti" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "Aloituspäivämäärä" +#~ msgid "Error updating per diem claim" +#~ msgstr "Virhe päivitettäessä päivärahavaatimusta" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "Lataa lisää" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä päivärahavaatimusta" -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "Näytä tehtävä" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Päivärahavaatimus poistettu onnistuneesti" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "Error deleting per diem claim" +#~ msgstr "Virhe päivärahahakemuksen poistamisessa" -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "Nopeat toiminnot" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Toiminnot" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Lokiaika" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Uusi tehtävä" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "Näytä projekti" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "Muokkaa asiakasta" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "Toiminto epäonnistui" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "Päivärahavaatimuksia ei ole valittu poistettavaksi" -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "Sopimus päättynyt" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Päivärahavaatimuksia ei voitu poistaa " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "Logon esikatselu" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "%(count)d päivärahavaatimus(tta) poistettu onnistuneesti" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "Ohitettu %(count)d päivärahavaatimus(t): %(errors)s" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "Loppu" +#~ msgid "No per diem claims selected" +#~ msgstr "Päivärahavaatimuksia ei ole valittu" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "Päivärahavaatimuksia ei voitu päivittää tietokantavirheen vuoksi" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "" +#~ "%(count)d päivärahavaatimus(t) päivitetty " +#~ "onnistuneesti arvoon %(status)s" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "Ohitettu %(count)d päivärahavaatimus(ta) (ei lupaa)" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "Vain ylläpitäjät voivat hyväksyä päivärahahakemukset" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "Luo API-tunnus" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "API-tunnuksesi" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Käyttöesimerkkejä" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "Oletko varma, että haluat" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "deaktivoida" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "aktivoida" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "tämä merkki?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Poista Token käytöstä" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Aktivoi Token" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Poista käytöstä" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Aktivoida" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "Haluatko varmasti poistaa tämän tunnuksen? Tätä toimintoa ei voi kumota." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Poista Token" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Luo varmuuskopio" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Palauta varmuuskopio" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Olemassa olevat varmuuskopiot" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Tärkeää tietoa" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Vahvista poisto" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Tyhjennä välimuisti" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "Palvelutyöntekijän tila" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Tyhjennä kaikki välimuistit" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "Palvelutyöntekijän toimet" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Manuaalinen Hard Refresh" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "Vain vireillä olevat päivärahahakemukset voidaan hyväksyä" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Koko ajan" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Päivärahahakemus hyväksytty" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "Error approving per diem claim" +#~ msgstr "Virhe päivärahahakemuksen hyväksymisessä" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "Vain ylläpitäjät voivat hylätä päivärahahakemukset" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Projekteja yhteensä" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "Vain vireillä olevat päivärahahakemukset voidaan hylätä" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Aktiiviset projektit" +#~ msgid "Per diem claim rejected" +#~ msgstr "Päivärahavaatimus hylätty" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Virhe päivärahahakemuksen hylkäämisessä" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "Per diem rate created successfully" +#~ msgstr "Päivärahan luominen onnistui" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Error creating per diem rate" +#~ msgstr "Virhe luotaessa päivärahaa" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Päivämäärän päivitys onnistui" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Error updating per diem rate" +#~ msgstr "Virhe päivitettäessä päivärahaa" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "Korkoa ei voi poistaa: %(count)d " +#~ "päivärahavaatimuksen käyttää sitä. Sen sijaan" +#~ " deaktivoi se." -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "Päivämäärän poistaminen onnistui" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "Error deleting per diem rate" +#~ msgstr "Virhe päivärahaa poistettaessa" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "You do not have permission to access this page" +#~ msgstr "Sinulla ei ole lupaa käyttää tätä sivua" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "Role name is required" +#~ msgstr "Roolin nimi vaaditaan" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Tietokanta" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "A role with this name already exists" +#~ msgstr "Tämän niminen rooli on jo olemassa" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "Could not create role due to a database error" +#~ msgstr "Roolia ei voitu luoda tietokantavirheen vuoksi" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Role created successfully" +#~ msgstr "Rooli luotiin onnistuneesti" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "OIDC-käyttäjät" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "käyttäjiä" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Järjestelmänvalvojan osiot" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Viimeaikainen toiminta" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Kesto" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "Ei käytössä" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "Sähköpostin määritys ja testaus" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Määritä ja testaa sähköpostin toimitusta" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Takaisin järjestelmänvalvojaan" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "Määritä sähköpostiasetukset tässä tallentaaksesi ne tietokantaan." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Ota tietokannan sähköpostin määritys käyttöön" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "Postipalvelin" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Postin portti" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Käytä TLS:ää" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Käytä SSL:ää" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Käyttäjätunnus" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Salasana" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "Jätä tyhjäksi pitääksesi ajan tasalla" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Oletuslähettäjä" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "Vastaanottajan sähköposti" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "Could not update role due to a database error" +#~ msgstr "Roolia ei voitu päivittää tietokantavirheen vuoksi" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Tallenna asetukset" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Nollaa" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "Sähköpostin määritystila" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Päivitä" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "Sähköposti on määritetty!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "Sähköpostiasetukset on määritetty oikein." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "Sähköpostia ei ole määritetty" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "Määritä sähköpostiasetukset käyttämällä yllä olevaa lomaketta." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Asetusvirheet" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Määritysvaroitukset" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Nykyiset sähköpostiasetukset" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Portti" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Salasana Aseta" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Lähetä testisähköposti" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "Vastaanottajan sähköpostiosoite" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Asetusopas" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Yleiset SMTP-palveluntarjoajat" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Vaatii sovelluksen salasanan" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Tärkeitä huomautuksia" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail vaatii sovelluksen salasanan, jos 2FA on käytössä" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Käynnistä sovellus uudelleen sähköpostiasetusten muuttamisen jälkeen" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Tarkista palomuurisäännöt, jos sähköpostit eivät lähetä" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "Käytä tuotannossa erillistä sähköpostipalvelua, kuten SendGrid tai Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "salasana on asetettu" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "salasanaa ei ole asetettu" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "Määrityksen tallentaminen epäonnistui. Yritä uudelleen." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "Menestys!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "Tilan päivittäminen epäonnistui. Yritä uudelleen." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "Anna kelvollinen sähköpostiosoite" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Lähetetään..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "Testisähköpostin lähettäminen epäonnistui. Tarkista kokoonpanosi." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "Role updated successfully" +#~ msgstr "Roolin päivitys onnistui" -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Määritä OIDC käyttämällä näitä ympäristömuuttujia:" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "Sinulla ei ole lupaa suorittaa tätä toimintoa" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "Palvelu" +#~ msgid "System roles cannot be deleted" +#~ msgstr "Järjestelmärooleja ei voi poistaa" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "Käyttäjille määritettyä roolia ei voi " +#~ "poistaa. Määritä ensin käyttäjät uudelleen." -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Käyttäjät" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "Roolia ei voitu poistaa tietokantavirheen vuoksi" -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "Ryhmät väittävät" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Rooli \"%(name)s\" poistettiin onnistuneesti" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "Kadonnut" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "Käytä SSL:ää" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "Käyttäjärooleja ei voitu päivittää tietokantavirheen vuoksi" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "Aloita" +#~ msgid "User roles updated successfully" +#~ msgstr "Käyttäjäroolien päivitys onnistui" -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "Aikakatkaisu (sekuntia)" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "Template not found." +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "Salasana" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "Kirjoita salasanasi" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "Projektin nimi ja asiakas vaaditaan" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "Viimeisen perusteella" +#~ msgid "Invalid budget amount" +#~ msgstr "Virheellinen budjettisumma" -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Virheellinen budjetin kynnysprosentti (0–100)" -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "Käytä projektin tuntihintoja" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "Lokiaika" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "Sähköpostiosoite" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "Etunimi" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "Sukunimi" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "Todennusmenetelmä" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "Huippuprojektit" +#~ msgid "Project not found" +#~ msgstr "Projektia ei löydy" -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "Admin Group" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "Sinulla ei ole lupaa arkistoida projekteja" -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "Todennusmenetelmä" +#~ msgid "Project is already archived" +#~ msgstr "Projekti on jo arkistoitu" -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "Vain aktiivinen" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "Sinulla ei ole lupaa poistaa projekteja arkistosta" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Project is already active" +#~ msgstr "Projekti on jo aktiivinen" -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "Sinulla ei ole lupaa poistaa projekteja käytöstä" -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "Testaa kokoonpano" +#~ msgid "Project is already inactive" +#~ msgstr "Projekti on jo epäaktiivinen" -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "Sinulla ei ole lupaa aktivoida projekteja" -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "Testaa kokoonpano" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "Projektia, jossa on olemassa olevia aikamerkintöjä, ei voi poistaa" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Projektia ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "Testaa kokoonpano" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "Ympäristömuuttujien viite" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "Sinulla ei ole lupaa poistaa projekteja" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "No projects selected for deletion" +#~ msgstr "Poistettavia projekteja ei ole valittu" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Projekteja ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Edellinen" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Seuraavaksi" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "Ominaisuuden käyttötilastot" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "No projects were deleted" +#~ msgstr "Projekteja ei poistettu" -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "Valinnainen kuponkikoodi" +#~ msgid "You do not have permission to change project status" +#~ msgstr "Sinulla ei ole lupaa muuttaa projektin tilaa" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "Huomiota vaaditaan" +#~ msgid "No projects selected" +#~ msgstr "Ei valittuja projekteja" -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "mobiili" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Projektin tilaa ei voitu päivittää " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "No projects were updated" +#~ msgstr "Projekteja ei ole päivitetty" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Status" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Yksityiskohdat" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "Lataa lisää" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Epäonnistui" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Project is already in favorites" +#~ msgstr "Projekti on jo suosikeissa" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "Project added to favorites" +#~ msgstr "Projekti lisätty suosikkeihin" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "Failed to add project to favorites" +#~ msgstr "Projektin lisääminen suosikkeihin epäonnistui" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "Project is not in favorites" +#~ msgstr "Projekti ei ole suosikeissa" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "Project removed from favorites" +#~ msgstr "Projekti poistettu suosikeista" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "Failed to remove project from favorites" +#~ msgstr "Projektin poistaminen suosikeista epäonnistui" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "Kuvaus, luokka, määrä ja päivämäärä vaaditaan" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kustannuksia ei voitu lisätä tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "Cost added successfully" +#~ msgstr "Kustannukset lisätty onnistuneesti" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "Cost not found" +#~ msgstr "Hintaa ei löytynyt" -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "Sinulla ei ole lupaa muokata tätä hintaa" -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kustannuksia ei voitu päivittää " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Cost updated successfully" +#~ msgstr "Hinta päivitetty onnistuneesti" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Kaikki luokat" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Projektinhallinta" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä hintaa" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "Laskutettua kulua ei voi poistaa" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kustannuksia ei voitu poistaa " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "Name and unit price are required" +#~ msgstr "Nimi ja yksikköhinta vaaditaan" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Invalid quantity format" +#~ msgstr "Virheellinen määrän muoto" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Käytössä" +#~ msgid "Invalid unit price format" +#~ msgstr "Virheellinen yksikköhinnan muoto" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Ei käytössä" +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Ei voitu lisätä ylimääräistä hyvää " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "Extra good added successfully" +#~ msgstr "Erittäin hyvä lisätty onnistuneesti" + +#~ msgid "Extra good not found" +#~ msgstr "Erittäin hyvää ei löytynyt" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "Sinulla ei ole lupaa muokata tätä ylimääräistä tuotetta" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Ei voitu päivittää erityisen hyvin " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "Extra good updated successfully" +#~ msgstr "Erittäin hyvä päivitys onnistuneesti" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä ylimääräistä tuotetta" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "Laskuun lisättyä ylimääräistä tuotetta ei voi poistaa" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Erityistä hyvää ei voitu poistaa " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." + +#~ msgid "Project created successfully" +#~ msgstr "Projekti luotu onnistuneesti" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Virheellinen alennussumman muoto" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "Tarjous on hyväksyttävä ennen kuin se voidaan lähettää" -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Tallenna muutokset" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "Tarjousta ei voi lähettää: %(error)s" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Huom" +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "Sinulla ei ole lupaa ladata liitteitä tähän lainaukseen" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "Sinulla ei ole lupaa ladata tätä liitettä" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "Sinulla ei ole lupaa pyytää hyväksyntää tälle tarjoukselle" + +#~ msgid "This quote does not require approval" +#~ msgstr "Tämä tarjous ei vaadi hyväksyntää" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "Ei voida pyytää hyväksyntää: %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Ei voitu pyytää hyväksyntää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." + +#~ msgid "Approval requested successfully" +#~ msgstr "Hyväksyntäpyyntö onnistui" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Tämä tarjous ei odota hyväksyntää" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "Tarjousta ei voida hyväksyä: %(error)s" -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Tarjousta ei voitu hyväksyä tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "Quote approved successfully" +#~ msgstr "Tarjous hyväksytty" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "Tarjousta ei voi hylätä: %(error)s" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "Quote approval rejected" +#~ msgstr "Lainauksen hyväksyntä hylätty" -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Mallia ei voitu luoda tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "Template created successfully" +#~ msgstr "Malli luotiin onnistuneesti" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "Sinulla ei ole lupaa luoda mallia tästä lainauksesta" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "OIDC Debug Dashboard" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "Tarkista kokoonpano, palveluntarjoajan metatiedot ja OIDC-käyttäjät" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Mallia ei voitu tallentaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Testaa kokoonpano" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "OIDC-kokoonpano" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Todennusmenetelmä" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Liikkeeseenlaskija" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "Ei määritetty" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "Asiakastunnus" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Asiakkaan salaisuus" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Sarja" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "Ei asetettu" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "Uudelleenohjaus URI" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Luotu automaattisesti" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Soveltamisalat" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Vaatimusten kartoitus" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Käyttäjätunnusvaatimus" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "Sähköpostivaatimus" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Koko nimen väite" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Ryhmät väittävät" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Admin Group" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "Admin sähköpostit" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "Uloskirjautumisen jälkeinen URI" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Palveluntarjoajan metatiedot" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Virhe ladattaessa metatietoja:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Löytämisen päätepiste:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Palveluntarjoajan metatietojen lataus onnistui" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Päätepisteet" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Valtuutus" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Token" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Käyttäjätiedot" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Lopeta istunto" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Tuetut ominaisuudet" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Vastaustyypit" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Apurahatyypit" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Todennusmenetelmät" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Väitteet" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "Palveluntarjoajan metatietoja ei ladattu. Napsauta \"Testaa kokoonpano\" hakeaksesi." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "Sähköposti" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Koko nimi" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Rooli" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Viimeisin kirjautuminen" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "OIDC Aihe" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Ei-aktiivinen" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Ei koskaan" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Yksikään käyttäjä ei ole vielä kirjautunut OIDC:n kautta." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Ympäristömuuttujien viite" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Määritä OIDC käyttämällä näitä ympäristömuuttujia:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Muuttuva" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Kuvaus" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "Esimerkki" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Todennusmenetelmä" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "OIDC-palveluntarjoajan myöntäjän URL-osoite" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "Asiakastunnus OIDC-palveluntarjoajalta" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Asiakkaan salaisuus OIDC-palveluntarjoajalta" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "Takaisinsoitto-URL-osoite (valinnainen, automaattisesti luotu)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Pyydetyt laajuudet" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Vaatimus sisältää käyttäjänimen" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Vaatimus, joka sisältää sähköpostin" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Väite, joka sisältää koko nimen" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Ryhmiä sisältävä vaatimus" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Järjestelmänvalvojan roolin ryhmän nimi (valinnainen)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "Pilkuilla erotetut järjestelmänvalvojan sähköpostit (valinnainen)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "Malli tallennettu onnistuneesti" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "Sinulla ei ole lupaa viedä tätä tarjousta" -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Virhe PDF:n luomisessa: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "Recipient email address is required" +#~ msgstr "Vastaanottajan sähköpostiosoite vaaditaan" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Tarjous lähetetty onnistuneesti osoitteeseen %(email)s" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "Tarjouksen lähettäminen epäonnistui: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Virhe lähetettäessä sähköpostia: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "Sinulla ei ole lupaa kopioida tätä lainausta" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Lainausta ei voitu kopioida tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kopioitua tarjousta ei voitu viimeistellä " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Todennusmenetelmä" +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "Lainaus %(quote_number)s luotiin kaksoiskappaleena" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Valitse toiminto ja vähintään yksi tarjous" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "Invalid quote IDs" +#~ msgstr "Virheelliset lainaustunnukset" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "Lainauksia ei löytynyt tai sinulla ei ole lupaa" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "Kopioitu %(count)d lainaus" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "%(count)d lainauksen kopiointi epäonnistui" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "Error duplicating quotes" +#~ msgstr "Virhe lainausmerkkien kopioinnissa" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "%(count)d lainaus merkittiin lähetetyksi" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "%(count)d lainausta ei voitu merkitä lähetetyksi" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Error updating quotes" +#~ msgstr "Virhe tarjousten päivittämisessä" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "%(count)d lainaus poistettu" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "Ei voitu poistaa %(count)d lainausta (saattaa olla käytössä)" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "Error deleting quotes" +#~ msgstr "Virhe lainausmerkkejä poistettaessa" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "Virheellinen toiminto" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "" +#~ "Nimi, projekti, asiakas, taajuus ja " +#~ "seuraava suorituspäivä ovat pakollisia" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Invalid next run date format" +#~ msgstr "Virheellinen seuraavan suorituspäivän muoto" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "Invalid end date format" +#~ msgstr "Virheellinen lopetuspäivän muoto" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "Selected project or client not found" +#~ msgstr "Valittua projektia tai asiakasta ei löydy" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Toistuvaa laskua ei voitu luoda " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "Sinulla ei ole lupaa tarkastella tätä toistuvaa laskua" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "Sinulla ei ole lupaa muokata tätä toistuvaa laskua" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Toistuvaa laskua ei voitu päivittää " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Toistuvan laskun päivitys onnistui" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "OIDC:n käyttäjätiedot" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Tämän käyttäjän profiili ja OIDC-identiteetti" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Takaisin OIDC Debugiin" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Käyttäjäprofiili" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Aktiivinen" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Ensisijainen kieli" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Luotu klo" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "OIDC tiedot" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "OIDC:n liikkeeseenlaskija" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "OIDC-aihe (ala)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Paikallinen" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "Tämä käyttäjä luotiin tai linkitettiin OIDC:n kautta. Myöntäjää ja aihetta käytetään käyttäjän yksilöimiseen kirjautumisistuntojen aikana." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "Tällä käyttäjällä ei ole OIDC-tietoja. Ne on voitu luoda manuaalisesti tai rekisteröitymällä itse ilman OIDC:tä." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Toimintatilastot" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Aikamerkinnät" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Ei mitään" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Aktiivinen ajastin" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Tehtävät luotu" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Muokkaa käyttäjää" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Näytä kaikki käyttäjät" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "PDF-lainaussuunnittelija" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "Visuaalinen lainaussuunnittelija" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "Suunnittele tarjousasettelu vetämällä ja pudottamalla elementtejä" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Käyttöohjeet:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "Napsauta elementtejä vasemmasta sivupalkista lisätäksesi ne kankaalle. Napsauta elementtejä valitaksesi ja mukauttaaksesi niitä ominaisuuspaneelissa. Käytä kohdistustyökaluja ja pikanäppäimiä nopeuttaaksesi muokkausta." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Pikanäppäimet:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä toistuvaa laskua" -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "Lainauskohteiden taulukko" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Toistuvaa laskua ei voitu poistaa " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "Kulut Välisumma" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "Tallennetaan..." +#~ msgid "Start" +#~ msgstr "Aloita" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "End" +#~ msgstr "Loppu" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "Task" +#~ msgstr "Tehtävä" -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "Sarja" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "Dokumentaatio" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Kirkas kangas" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Luo esikatselu" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Tallenna malli" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Näytä koodi" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "Notes" +#~ msgstr "Huomautuksia" -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "Billed" +#~ msgstr "Laskutettava" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Kiinnitä ruudukkoon (10px)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Työkalulaatikko" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Hakuelementit ja muuttujat..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Elementit" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "Muuttujat" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Peruselementit" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Mukautettu teksti" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Teksti" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Otsikko" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Linja" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Suorakulmio" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Ympyrä" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Yrityksen tiedot" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Yrityksen logo" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "Yrityksen nimi" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Yrityksen tiedot" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "Osoite" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Puhelin" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Verkkosivusto" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "Verotunnus" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "Laskun tiedot" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Laskun numero" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "Laskutettu" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Eräpäivä" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Asiakastiedot" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Asiakkaan nimi" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Asiakkaan osoite" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "Lainauskohteiden taulukko" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "Kulut Välisumma" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Välisumma" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Verottaa" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Kokonaismäärä" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Ehdot" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "Maksu ja projekti" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Maksupäivä" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Maksutapa" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Maksun tila" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Maksettu summa" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Projektin nimi" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "Asiakkaan sähköposti" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Asiakas puhelin" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "QR-koodi" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Viivakoodi" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Sivunumero" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Nykyinen päivämäärä" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Vesileima" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Pankkitiedot" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Valuutta" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "Client" +#~ msgstr "Asiakas" -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "Laskun erät" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "Laskun numero" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Tarjouksen tila (luonnos / lähetetty / maksettu / myöhässä)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Julkaisupäivä" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Eräpäivä" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Välisumma" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Veroprosentti (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Veron määrä" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Kokonaismäärä" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Valuuttakoodi (EUR, USD jne.)" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "Laskun erät" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Ehdot" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Asiakaskentät" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Asiakkaan yrityksen nimi" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "Asiakkaan sähköpostiosoite" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "Asiakkaan täydellinen osoite" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Asiakkaan yhteyshenkilö" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Asiakkaan puhelinnumero" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Maksukentät" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "Maksun tila" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "Maksupäivä" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Maksutapa" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Maksun viitenumero" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Maksettu summa" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Erinomaista määrää" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Maksutiedot" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Projektikentät" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Projektin nimi" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "Projektin koodi" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Projektin kuvaus" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Projektin laskutusviite" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Yritys/Asetuskentät" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "Yrityksesi nimi" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "Yrityksesi osoite" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "Yrityksesi sähköpostiosoite" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Yrityksesi puhelin" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Yrityksesi verkkosivusto" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "Verotunnuksesi" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "Pankkitilisi tiedot" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Laskun oletusehdot" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Oletuslaskun huomautukset" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Päivämäärä/aika -kentät" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "Nykyinen päivämäärä" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "Lainauksen luomispäivämäärä" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "Lainaus viimeisin päivityspäivä" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "Laskun erät" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "User" +#~ msgstr "Käyttäjä" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "Aikaperusteiset palvelut ja tuntityö" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Tuotteen kuvaus" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Tavaran määrä" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Tuotteen yksikköhinta" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Tuotteen kokonaismäärä" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Lopeta silmukka" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "Lisätavarat" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "Projektin lisätavarat" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "Roolin nimi" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "Kokonaismäärä" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Design Canvas" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Sivun koko:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Lähennä" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Loitonna" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Poista valitut" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Ominaisuudet" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "Varoitus" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "Päivitä sivu" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "Varoitus" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Yes" +#~ msgstr "Kyllä" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Päivämäärän muoto" +#~ msgid "No" +#~ msgstr "Ei" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Valitse elementti muokataksesi sen ominaisuuksia" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "PDF-esikatselu" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "Suodatinta ei voitu poistaa tietokantavirheen vuoksi" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Luotu koodi" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "Asetuksia ei voitu päivittää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "Asennus valmis! Kiitos, että autat meitä parantamaan TimeTrackeria." -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "Project and task name are required" +#~ msgstr "Projektin ja tehtävän nimi vaaditaan" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "Selected project does not exist" +#~ msgstr "Valittua projektia ei ole olemassa" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "Task not found" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "You do not have access to this task" +#~ msgstr "Sinulla ei ole pääsyä tähän tehtävään" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "You can only edit tasks you created" +#~ msgstr "Voit muokata vain luomiasi tehtäviä" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "Poistetaanko kaikki elementit?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Selkeä" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Task name is required" +#~ msgstr "Tehtävän nimi on pakollinen" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "Project is required" +#~ msgstr "Projekti vaaditaan" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Tilaa ei voitu päivittää tietokantavirheen " +#~ "vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Tehtävää ei voitu päivittää tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "Palautetaanko oletusasetukset?" +#~ msgid "You do not have permission to update this task" +#~ msgstr "Sinulla ei ole lupaa päivittää tätä tehtävää" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "Palauta PDF-asettelu" +#~ msgid "You can only update tasks you created" +#~ msgstr "Voit päivittää vain luomiasi tehtäviä" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "You can only assign tasks you created" +#~ msgstr "Voit määrittää vain itse luomiasi tehtäviä" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "PDF-lainaussuunnittelija" +#~ msgid "Selected user does not exist" +#~ msgstr "Valittua käyttäjää ei ole olemassa" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Visuaalinen lainaussuunnittelija" +#~ msgid "Task unassigned" +#~ msgstr "Tehtävää ei ole määritetty" -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Suunnittele tarjousasettelu vetämällä ja pudottamalla elementtejä" +#~ msgid "You can only delete tasks you created" +#~ msgstr "Voit poistaa vain luomiasi tehtäviä" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "Lainauskohteiden taulukko" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "Tehtävää ei voi poistaa olemassa olevilla aikamerkinnöillä" -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "Lainauskohteiden taulukko" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Tehtävää ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "Poistettavia tehtäviä ei ole valittu" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Tehtäviä ei voitu poistaa tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "Tehtäviä ei ole valittu" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Lainaustiedot" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "Tehtäviä ei voitu päivittää tietokantavirheen vuoksi" -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Lainausnumero" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Anna uusi eräpäivä (VVVV-KK-PP):" -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Lainauspäivämäärä" +#~ msgid "Due date is required" +#~ msgstr "Kulutuspäivä vaaditaan" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Lainauskohteiden taulukko" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Virheellinen päivämäärän muoto" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Lainauskentät" +#~ msgid "Database error" +#~ msgstr "Tietokannan tuki" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Lainausnumero" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "Kopioitu %(count)d lainaus" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Tarjouksen tila (luonnos / lähetetty / maksettu / myöhässä)" +#~ msgid "No tasks updated" +#~ msgstr "Tehtäviä ei löytynyt" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Lainaus muistiinpanoja" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "%(count)d kulu(t) päivitetty onnistuneesti arvoon %(status)s" -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Lainauksen tila" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "Ohitettu %(count)d kulu(tta) (ei lupaa)" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Tarjouksen hyväksymispäivämäärä" +#~ msgid "Invalid priority value" +#~ msgstr "Virheellinen prioriteettiarvo" -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Lainauksen luomispäivämäärä" +#~ msgid "No user selected for assignment" +#~ msgstr "Käyttäjää ei ole valittu tehtävään" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Lainaus viimeisin päivityspäivä" +#~ msgid "Invalid user selected" +#~ msgstr "Virheellinen käyttäjä valittu" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Lainauskohteet Loop" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "Tehtäviä ei voitu määrittää tietokantavirheen vuoksi" -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Selaa laskun kohteita" +#~ msgid "No project selected" +#~ msgstr "Projektia ei ole valittu" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Tasaa vasemmalle" +#~ msgid "Invalid project selected" +#~ msgstr "Virheellinen projekti valittu" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Keskitä vaakasuunnassa" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "Tehtäviä ei voitu siirtää tietokantavirheen vuoksi" -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Kohdista oikealle" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "" +#~ "Vain järjestelmänvalvojat voivat tarkastella " +#~ "kaikkia myöhässä olevia tehtäviä" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Kohdista yläosa" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Keskitä pystysuunnassa" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Tasaa alas" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "Sähköpostiosoite" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "Could not create template due to a database error" +#~ msgstr "Mallia ei voitu luoda tietokantavirheen vuoksi" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Could not update template due to a database error" +#~ msgstr "Mallia ei voitu päivittää tietokantavirheen vuoksi" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "Mallia ei voitu poistaa tietokantavirheen vuoksi" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "Arkistoidun projektin ajastinta ei voi " +#~ "käynnistää. Poista projektin arkisto ensin." -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "Ei voi käynnistää ajastinta ei-aktiiviselle projektille" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "Valittu tehtävä on virheellinen valitulle projektille" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "Ajansyöttömallit" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "You do not have access to this project" +#~ msgstr "Sinulla ei ole pääsyä tähän projektiin." -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "You do not have access to this client" +#~ msgstr "Sinulla ei ole pääsyä tähän tehtävään" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "Sinulla on jo aktiivinen ajastin. Lopeta se ennen kuin aloitat uuden." -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Ei voitu käynnistää ajastinta " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "Unknown" +#~ msgstr "Tuntematon" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "Mallissa on oltava projekti ajastimen käynnistämiseksi" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "Cannot start timer for this project" +#~ msgstr "Tämän projektin ajastinta ei voi käynnistää" -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "No active timer to stop" +#~ msgstr "Ei aktiivista pysäytysajastinta" -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "No project" +#~ msgstr "Ei projektia" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "Avain" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "Lähetä Sähköposti" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "No active timer to pause" +#~ msgstr "Ei aktiivista pysäytysajastinta" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "Avain" +#~ msgid "Timer paused" +#~ msgstr "Ajastin pysähtyi" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "Asiakasta ei voitu luoda. Yritä uudelleen." -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "No active timer to resume" +#~ msgstr "Ei aktiivista pysäytysajastinta" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "Asiakasta ei voitu luoda. Yritä uudelleen." -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "Koodi, nimi, sähköposti" +#~ msgid "No active timer to adjust" +#~ msgstr "Ei aktiivista pysäytysajastinta" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "Invalid adjustment value" +#~ msgstr "Virheellinen tila-arvo" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Yrityksen brändäys" +#~ msgid "You can only edit your own timers" +#~ msgstr "Voit muokata vain omia ajastimia" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Laskun oletusasetukset" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Virheellinen tehtävä valittu valitulle projektille" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Varmuuskopiointiasetukset" +#~ msgid "Start time cannot be in the future" +#~ msgstr "Aloitusaika ei voi olla tulevaisuudessa" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Invalid start date/time format" +#~ msgstr "Virheellinen aloituspäivän/kellonajan muoto" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "End time must be after start time" +#~ msgstr "Päättymisajan on oltava alkamisajan jälkeen" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "Käytössä" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "Kadonnut" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "Käytä SSL:ää" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "Käytä TLS:ää" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "päällä" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "/" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "Käyttäjävalikko" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "Nopeammat latausajat" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "Ehdot" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Vie asetukset" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "Virheellinen lopetuspäivän/ajan muoto" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "Timer updated successfully" +#~ msgstr "Ajastimen päivitys onnistui" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "You can only delete your own timers" +#~ msgstr "Voit poistaa vain omat ajastimesi" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Cannot delete an active timer" +#~ msgstr "Aktiivista ajastinta ei voi poistaa" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Säätö" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Siirtää" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Myynti" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Vuokraus" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Ostaa" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Ajastimen poistaminen epäonnistui tietokantavirheen" +#~ " vuoksi. Tarkista palvelimen lokit." -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "Saatavilla" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "Laskun oletusasetukset" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "Valuutta" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "Kuvan URL-osoite" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "Koodi" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "Luo API-tunnus" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "Jätä tyhjäksi, jos haluat säilyttää nykyisen salasanan" +#~ msgid "Invalid date/time format" +#~ msgstr "Virheellinen päivämäärän/ajan muoto" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "Aikakatkaisu (sekuntia)" +#~ msgid "All fields are required" +#~ msgstr "Kaikki kentät ovat pakollisia" -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "Sisältötyyppi" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "Arkistoidulle projektille ei voi luoda " +#~ "aikamerkintöjä. Poista projektin arkisto " +#~ "ensin." -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "Järjestelmän rooli" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "Ei voi luoda aikamerkintöjä ei-aktiiviselle projektille" -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "Ehdot" +#~ msgid "Invalid task selected" +#~ msgstr "Virheellinen tehtävä valittu" -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Yksityisyys & Analytics" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "" +#~ "Päättymispäivän on oltava aloituspäivämäärää " +#~ "myöhempi tai yhtä suuri kuin se" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Tallenna asetukset" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "Ajanjakso ei saa ylittää 31 päivää" -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Lataa uusi logo" +#~ msgid "Invalid time format" +#~ msgstr "Virheellinen ajan muoto" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Logon esikatselu" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "Valitulta alueelta ei löytynyt kelvollisia päivämääriä" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "Haluatko varmasti poistaa yrityksen logon?" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Joukkomerkintöjä ei voitu luoda " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Poista logo" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "Joukkomerkintöjä luotaessa tapahtui virhe. Yritä uudelleen." -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Voit kopioida vain omia ajastimesi" -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "You can only resume your own timers" +#~ msgstr "Voit jatkaa vain omia ajastimiasi" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Project no longer exists" +#~ msgstr "Projektia ei ole enää olemassa" -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "Pyydä hyväksyntää" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "Testaa kokoonpano" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "Toiminto epäonnistui" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Ajastimen käynnistämistä ei voitu jatkaa " +#~ "tietokantavirheen vuoksi. Tarkista palvelimen " +#~ "lokit." -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "Toiminto epäonnistui" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Telemetrian ja analyysin hallintapaneeli" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Järjestelmänvalvoja → Asetukset" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "Jätä tyhjäksi, jos haluat säilyttää nykyisen salasanan" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Asiakasportaalin käyttö" +#~ msgid "Invalid timezone selected" +#~ msgstr "Virheellinen aikavyöhyke valittu" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "Vuorokauden normaalituntien on oltava 0,5–24" -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "Määritä roolit" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "Vuorokauden normaalituntien on oltava 0,5–24" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Settings saved successfully" +#~ msgstr "Asetukset tallennettu onnistuneesti" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Järjestelmänvalvojan käyttöoikeudet" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Virhe tallennettaessa asetuksia: %(error)s" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Siirrä uuteen roolijärjestelmään" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Siirrä" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "Kiitos, että valitsit TimeTrackerin!" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Roolit" +#~ msgid "Error saving settings." +#~ msgstr "Virhe asetusten tallentamisessa" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "Käyttäjiä ei löytynyt." +#~ msgid "Preferences updated" +#~ msgstr "Asetukset päivitetty" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "Käyttäjää \"{name}\" ei voi poistaa, koska hänellä on {count} aikamerkintää. Käyttäjiä, joilla on olemassa olevia aikamerkintöjä, ei voida poistaa." +#~ msgid "Language updated successfully" +#~ msgstr "Kielen päivitys onnistui" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "Käyttäjää ei voi poistaa" +#~ msgid "Invalid language" +#~ msgstr "Virheellinen kieli" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "Haluatko varmasti poistaa käyttäjän \"{name}\"? Tätä toimintoa ei voi kumota." +#~ msgid "Language updated to %(language)s" +#~ msgstr "Kieleksi päivitetty %(language)s" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Poista käyttäjä" +#~ msgid "Webhook name is required" +#~ msgstr "Webhook-nimi vaaditaan" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "Webhook URL is required" +#~ msgstr "Webhookin URL-osoite vaaditaan" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "Vähintään yksi tapahtuma on valittava" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook luotiin onnistuneesti" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "Error creating webhook" +#~ msgstr "Virhe luotaessa webhookia" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "Virhe luotaessa webhookia: %(error)s" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhookin päivitys onnistui" -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "Virhe päivitettäessä webhookia: %(error)s" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhookin poistaminen onnistui" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Label" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "Virhe poistettaessa webhookia: %(error)s" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Anna kelvollinen tavoitetunnit (suurempi kuin 0)" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "Tälle viikolle on jo tavoite. Muokkaa nykyistä tavoitetta sen sijaan." -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Viikoittainen aikatavoite luotu onnistuneesti!" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "Tavoitteen luominen epäonnistui. Yritä uudelleen." -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "Sinulla ei ole lupaa tarkastella tätä tavoitetta" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "Sinulla ei ole lupaa muokata tätä tavoitetta" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Viikoittainen aikatavoite päivitetty onnistuneesti!" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "Tavoitteen päivittäminen epäonnistui. Yritä uudelleen." -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "Sinulla ei ole lupaa poistaa tätä tavoitetta" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Viikoittainen aikatavoitteen poistaminen onnistui" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "Tavoitteen poistaminen epäonnistui. Yritä uudelleen." -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Valinnainen" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Update Status" +#~ msgstr "Päivitä tila" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Create Task" +#~ msgstr "Luo tehtävä" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "Send Email" +#~ msgstr "Lähetä Sähköposti" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Aseta oletusmalliksi" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "HTML-malli" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Mukautettu viesti" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Lisää muuttujia" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Luo malli" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Saatavilla olevat muuttujat" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Laskun muuttujat" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Muut muuttujat" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "Lähetä testisähköposti" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "Vastaanottajan sähköposti" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "Laskutettu" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Päivitä malli" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "Lähetä testisähköposti" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "Sähköpostimalleja ei löytynyt." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "Luo ensimmäinen sähköpostimallisi mukauttaaksesi laskusähköpostiviestejä." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "Luo sähköpostimalli" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "Poista sähköpostimalli" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "Haluatko varmasti poistaa" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Tätä toimintoa ei voi kumota." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Mallin tiedot" +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "Timesheet period rejected" +#~ msgstr "Valitse Projekti" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "Only admins can close periods" +#~ msgstr "Vain järjestelmänvalvojat voivat hylätä kilometrimerkintöjä" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "WebSocketin live-päivitykset" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "Nimi ja yksikköhinta vaaditaan" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "Asiakas luotu" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "Avain ja tarra vaaditaan" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Time-off request approved" +#~ msgstr "Pyydä hyväksyntää" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Time-off request rejected" +#~ msgstr "Lainaus hylätty" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Name and date range are required" +#~ msgstr "Nimi ja yksikköhinta vaaditaan" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "Holiday created" +#~ msgstr "Tuntihinta" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "remaining" +#~ msgstr "jäljellä" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Success" +#~ msgstr "Menestys" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Error" +#~ msgstr "Virhe" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Warning" +#~ msgstr "Varoitus" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Information" +#~ msgstr "Tiedot" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "Ladataan..." -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Saving..." +#~ msgstr "Tallennetaan..." -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "Poistetaan..." -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "Cancel" +#~ msgstr "Peruuttaa" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "Confirm" +#~ msgstr "Vahvistaa" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "Close" +#~ msgstr "Lähellä" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Save" +#~ msgstr "Tallentaa" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "Delete" +#~ msgstr "Poistaa" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "Edit" +#~ msgstr "Muokata" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "Add" +#~ msgstr "Lisätä" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Remove" +#~ msgstr "Poistaa" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "OK" +#~ msgstr "OK" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Haluatko varmasti poistaa tämän?" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "" +#~ "Sinulla on tallentamattomia muutoksia. Oletko" +#~ " varma, että haluat lähteä?" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "Toiminto epäonnistui" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "Toiminto suoritettu onnistuneesti" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "No items selected" +#~ msgstr "Ei valittuja kohteita" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Invalid input" +#~ msgstr "Virheellinen syöte" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "This field is required" +#~ msgstr "Tämä kenttä on pakollinen" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "No active timer" +#~ msgstr "Ei aktiivista ajastinta" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "Ajastin pysähtyi" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "Ajastimen pysäyttäminen epäonnistui" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "Error stopping timer" +#~ msgstr "Virhe pysäytettäessä ajastinta" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "No form to save" +#~ msgstr "Ei tallennettavaa lomaketta" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "No timer found" +#~ msgstr "Ajasinta ei löytynyt" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Ajastin pysähtyi epäaktiivisuuden vuoksi" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Kuvake" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "Siirry sisältöön" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "Mobiilinavigointi" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "Navigointi" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "Komentopaletti" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Nimi" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Commands" +#~ msgstr "Kommentit" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "Vaihda sivupalkki" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "Dashboard" +#~ msgstr "Kojelauta" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Timer" +#~ msgstr "Ajastin" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "Time entries" +#~ msgstr "Aikamerkinnät" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Reports" +#~ msgstr "Raportit" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Calendar" +#~ msgstr "Kalenteri" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "Kalenterinäkymä" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "Ajan seuranta" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Järjestelmän käyttöoikeudet" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Kaikki järjestelmässä käytettävissä olevat käyttöoikeudet" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Takaisin Rooleihin" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "luvat" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "Kuvausta ei ole saatavilla" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "Tietoja käyttöoikeuksista" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "Käyttöoikeudet määrittelevät, mitä toimintoja käyttäjät voivat suorittaa järjestelmässä. Nämä käyttöoikeudet on määritetty rooleille ja roolit käyttäjille. Tämä tarjoaa joustavan ja yksityiskohtaisen kulunvalvontajärjestelmän." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Muokkaa roolia" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Luo uusi rooli" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Roolin nimi" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Ainutlaatuinen nimi tälle roolille" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Valinnainen kuvaus tästä roolista" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Käyttöoikeudet" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Valitse käyttöoikeudet, jotka tällä roolilla pitäisi olla:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Vaihda kaikki päälle" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "Pyydä hyväksyntää" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Päivitä rooli" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Luo rooli" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Hallitse rooleja ja niiden käyttöoikeuksia" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Näytä käyttöoikeudet" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Roolit yhteensä" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Järjestelmän roolit" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Mukautetut roolit" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Määritetyt käyttäjät" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Tyyppi" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Oletusrooli" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "käyttäjä" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Ei käyttäjiä" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Mukautettu" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Näytä" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Käyttöoikeudet kohteelle" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "Käyttöoikeuksia ei ole määritetty." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "Rooleja ei löytynyt." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "Tietoja rooleista ja käyttöoikeuksista" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "Roolit ovat käyttöoikeuskokoelmia, jotka voidaan määrittää käyttäjille. Järjestelmän roolit ovat ennalta määritettyjä, eikä niitä voi poistaa tai nimetä uudelleen, mutta mukautettuja rooleja voidaan luoda tarpeitasi varten." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "Haluatko varmasti poistaa roolin" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Poista rooli" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Ei kuvausta" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Roolitiedot" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Järjestelmän rooli" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Mukautettu rooli" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Kaikki käyttöoikeudet" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Luotu" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Käyttäjät, joilla on tämä rooli" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Tälle roolille ei ole vielä määritetty käyttäjiä." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "Tälle roolille ei ole määritetty käyttöoikeuksia." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Takaisin käyttäjälle" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Hallinnoi rooleja" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Määritä roolit" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "Valitse roolit, jotka tällä käyttäjällä tulisi olla. Käyttäjät perivät kaikki käyttöoikeudet heille määritetyiltä rooleilta." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Päivitä roolit" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Nykyiset voimassa olevat käyttöoikeudet" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "Nämä ovat kaikki käyttöoikeudet, jotka käyttäjällä on tällä hetkellä rooliensa kautta:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Ei käyttöoikeuksia (määritä rooleja lupien myöntämiseen)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Luo Webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Muokkaa Webhookia" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Määritä webhook integraatioita varten" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "Webhookin URL-osoite" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "URL-osoite, johon webhook-tapahtumat lähetetään" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Tapahtumat" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Valitse, mitkä tapahtumat käynnistävät tämän webhookin" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "HTTP-menetelmä" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Sisältötyyppi" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Max Uudelleenyritykset" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Uudelleenyrityksen viive (sekuntia)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Aikakatkaisu (sekuntia)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Luo salaisuus uudelleen" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Varoitus: Salaisuuden uudelleen luominen mitätöi nykyisen salaisuuden" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Hallinnoi webhook-integraatioita" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL-osoite" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Tilastot" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Kokonais" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "Webhookeja ei ole määritetty" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Luo ensimmäinen Webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Webhook-tiedot" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Testata" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Salaisuus" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(typistetty)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Toimitukset yhteensä" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Onnistunut" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Viimeinen toimitus" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Viimeaikaiset toimitukset" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Tapahtuma" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Yrittää" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Vastaus" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Aika" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Yritetään uudelleen" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Ei toimituksia vielä" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "Lähetetäänkö webhook-testitapahtuma?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "Test webhook lähetetty onnistuneesti!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Virhe:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Tuntematon virhe" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Virhe lähetettäessä testi webhookia:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Analyticsin hallintapaneeli" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "Viimeiset 7 päivää" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "Viimeiset 30 päivää" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "Viimeiset 90 päivää" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "Viime vuonna" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "Vie JSON-muodossa" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "Vie CSV" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Tärkeimmät tiedot ja oivallukset ajan seurannasta" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Keskimääräiset päivittäiset tunnit" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "Palata" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "Aika" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Päivittäinen tuntitrendi" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Laskutettava vs ei-laskutettava" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Viikon trendit" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "tuntia ennen" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "Tehtävät" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "Maksut ajan mittaan" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Tuntia kellonajan mukaan" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Projektin tehokkuus" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Käyttäjän suorituskyky" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "Kaavioiden lataaminen epäonnistui. Yritä uudelleen." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "Kaavioiden päivittäminen epäonnistui. Yritä uudelleen." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Päivän tunti" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Tulot" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "Nollaa" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Viedä" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Tärkeimmät mittarit ja käyttökelpoiset oivallukset" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "edelliseen kauteen verrattuna" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "kokonaismäärästä" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Mahdolliset tulot" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Keskimääräinen hinta:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "Trendi" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "aktiivisia projekteja" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Näkemyksiä ja suosituksia" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Kumulatiivinen" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Laskutettava jakelu" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Tehtävän tilan yleiskatsaus" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Tehtävät suoritettu" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "Käynnissä" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Tehtävää" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Tulot projektin mukaan" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Maksut ajan mittaan" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Maksutavat" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Tulot vs maksut" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Keräysprosentti" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Projektin valmistumisaste" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "Laskutettava" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "Ei laskutettavissa" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Valmis" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Peruutettu" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Valmistumisaste (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Mobiilitilastojen yleiskatsaus" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Päivittäinen keskim" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Päivittäiset tunnit" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "Huippuprojektit" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "Kanbanin hallitus" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "Viikoittaiset tavoitteet" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Ajan sisääntulo" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "Ajansyöttömallit" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "tuntia" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "CRM" +#~ msgstr "CRM" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Hyväksyä" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Hylätä" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Clients" +#~ msgstr "Asiakkaat" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "Lainausmerkit" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "Rahoitus ja kulut" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "Aikataulutetut raportit" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Invoices" +#~ msgstr "Laskut" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Hyväksynyt" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "Toistuvat laskut" -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "Lähetä kommentti" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "Lähetä kommentti" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "Hylkäämisen syy" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Seuraa kuka muutti mitä ja milloin" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Suodattimet" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Entiteettityyppi" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Kaikki tyypit" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "Entiteetin tunnus" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Kaikki käyttäjät" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Toiminta" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Kaikki toiminnot" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Päivitetty" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Poistettu" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Aikaväli" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Suodattaa" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Aikaleima" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Entiteetti" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "Ala" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Muuttaa" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Syy" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Muuta tietoja" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "Payments" +#~ msgstr "Maksut" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "Expenses" +#~ msgstr "Kulut" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Mileage" +#~ msgstr "Kilometrimäärä" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "Päivärahat" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "Budjettihälytykset" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Inventory" +#~ msgstr "Varasto" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "Varastotuotteet" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Pyydä tietoja" +#~ msgid "Warehouses" +#~ msgstr "Varastot" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "Toimittajat" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "Ostotilaukset" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "Varastotasot" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "Osakeliikkeet" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "Siirrot" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Turvallisuus" +#~ msgid "Adjustments" +#~ msgstr "Säädöt" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "Reservations" +#~ msgstr "Varaukset" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (yrityksen todennus)" +#~ msgid "Low Stock Alerts" +#~ msgstr "Alhaisen varaston varoitukset" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "Analytics" +#~ msgstr "Analytics" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "Salasanan tulee olla vähintään 8 merkkiä pitkä" +#~ msgid "Tools & Data" +#~ msgstr "Työkalut ja tiedot" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "Tuo / Vie" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "Portaalin salasana" +#~ msgid "Saved Filters" +#~ msgstr "Tallennetut suodattimet" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "Aseta salasanasi" +#~ msgid "Admin" +#~ msgstr "Admin" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "Admin Dashboard" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "Ei käyttäjätunnuksia tai sähköpostiosoitteita" +#~ msgid "User Management" +#~ msgstr "Käyttäjien hallinta" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "Lähetä testisähköposti" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "Takaisin järjestelmänvalvojaan" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Kirjaudu sisään" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Seuraa aikaa. Pysy järjestyksessä." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Kirjaudu tilillesi" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "Tuotteen tiedot" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "Aseta salasanasi" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "Todennusmenetelmä" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "Kirjaudu sisään" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "Roolit ja käyttöoikeudet" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Vinkki: Luo tili antamalla uusi käyttäjätunnus." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "Tai jatka eteenpäin" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Kertakirjautuminen" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Muokkaa profiilia" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Jäsen vuodesta" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "Aseta salasana" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "Aseta salasana" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "Aseta salasana asiakasportaalitilillesi" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "Aseta salasana" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "Salasanan tulee olla vähintään 8 merkkiä pitkä" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "Vahvista salasana" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "Aseta salasanasi" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "Aseta salasana" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "Todennusmenetelmä" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "PDF Templates" +#~ msgstr "PDF-malleja" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Koodi" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "Invoice PDF" +#~ msgstr "Lasku PDF" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "Lainaus PDF" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "Asiakasportaalin käyttöoikeus ei ole käytössä tililläsi." +#~ msgid "System Settings" +#~ msgstr "Järjestelmäasetukset" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Settings" +#~ msgstr "Asetukset" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "Ei käytössä" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "Sähköpostiasetukset" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "Sähköpostimallit" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "OIDC Settings" +#~ msgstr "OIDC-asetukset" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "API-tunnukset" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "Tarkastuslokit" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "Luotu koodi" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "Käytössä" +#~ msgid "Expense Categories" +#~ msgstr "Kulujen luokat" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "Päivärahat" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Budjettihälytykset ja ennusteet" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Tarkkaile projektin budjetteja ja ennakoi valmistumista" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Hyväksymättömät hälytykset" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Kriittiset hälytykset" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Projektit budjeteilla" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Varoitusilmoitukset" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Aktiiviset hälytykset" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Tunnusta" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Projektin budjetin tila" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Budjetti" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Kulutettu" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Jäljellä" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Edistyminen" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "yli" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Yli budjetin" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Kriittinen" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "Terve" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "Budjetteja sisältäviä projekteja ei löytynyt" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Hälytys kuitattu onnistuneesti" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "Hälytyksen kuittaus epäonnistui" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Budjetin analyysi ja ennustaminen" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Takaisin hallintapaneeliin" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Näytä projekti" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Kokonaisbudjetti" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Palamisnopeuden analyysi" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Päivittäinen palamisnopeus" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Viikoittainen palamisnopeus" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Kuukausittainen palamisprosentti" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Jakso yhteensä" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Viimeisen perusteella" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "päivää" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "Palamisnopeustietoja ei ole saatavilla" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Valmistumisarvio" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Arvioitu valmistumispäivä" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "päivää jäljellä" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Luottamustaso" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "Valmistumisarviota ei ole saatavilla" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Kustannustrendianalyysi" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Keskimäärin" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Resurssien allokointi" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Kokonaiskustannukset" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Tuntihinta" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Joukkueen jäsen" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Maksaa" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Tuntia %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Hinta %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "merkinnät" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Päivämäärä ja aika" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Sijainti" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Muistutus" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "minuuttia ennen" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "tuntia ennen" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "päivää ennen" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Toistuva" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Kunnes" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Viimeksi päivitetty" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Takaisin kalenteriin" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Poista tapahtuma" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "Haluatko varmasti poistaa tämän tapahtuman? Tätä toimintoa ei voi kumota." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Muokkaa tapahtumaa" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Uusi Tapahtuma" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Otsikko" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Aloituspäivämäärä" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Aloitusaika" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Päättymispäivämäärä" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Päättymisaika" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Koko päivän tapahtuma" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Tapahtuman tyyppi" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Kokous" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Nimittäminen" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Määräaika" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- Ei yhtään --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Ei muistutusta" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 minuuttia ennen" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 minuuttia ennen" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 minuuttia ennen" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 tunti ennen" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 päivää ennen" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Väri" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Valitse väri tälle tapahtumalle" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Yksityinen Tapahtuma" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Yksityistapahtumat näkyvät vain sinulle" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Toistuva tapahtuma" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "Tämä on toistuva tapahtuma" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Toistuva kuvio" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Käytä RRULE-muotoa (esim. FREQ=WEEKLY;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Toistumisen lopetuspäivämäärä" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Päivitä tapahtuma" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Luo tapahtuma" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "System Info" +#~ msgstr "Järjestelmätiedot" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "Backups" +#~ msgstr "Varmuuskopiot" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "About" +#~ msgstr "Noin" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "Help" +#~ msgstr "Auttaa" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Open support options" +#~ msgstr "Vientiasetukset" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Support TimeTracker" +#~ msgstr "Tuki TimeTracker" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "Open sidebar" +#~ msgstr "Vaihda sivupalkki" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "Search" +#~ msgstr "Haku" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "Theme" +#~ msgstr "Teema" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "Theme options" +#~ msgstr "Suodatinvalinnat" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Tarkastele ja hallinnoi tapahtumia, tehtäviä ja aikamerkintöjä" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Päivä" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Viikko" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Kuukausi" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "Tänään" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Light" +#~ msgstr "Kevyt" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Dark" +#~ msgstr "Tumma" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Ladataan kalenteria..." +#~ msgid "System" +#~ msgstr "Järjestelmä" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Tapahtuman tiedot" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "Start Timer" +#~ msgstr "Käynnistä ajastin" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "Stop" +#~ msgstr "to" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "AI Helper" +#~ msgstr "Näytä Ohje" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "Change language" +#~ msgstr "Vaihda kieli" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "Language" +#~ msgstr "Kieli" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "User menu" +#~ msgstr "Käyttäjävalikko" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "Supporter" +#~ msgstr "Tukea" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "Guest" +#~ msgstr "Vieras" -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "My Profile" +#~ msgstr "Oma profiili" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "My Settings" +#~ msgstr "Omat asetukset" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "License" +#~ msgstr "Lisenssi" -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "Logout" +#~ msgstr "Kirjaudu ulos" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Pidätkö TimeTrackerista?" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "Support / Get key" +#~ msgstr "Tuki TimeTracker" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "PayPal" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "Support / License" +#~ msgstr "Tarvikkeet" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "Hylkää" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Software update" +#~ msgstr "Aloituspäivämäärä" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Muokkaa asiakasmuistiota" +#~ msgid "Read more" +#~ msgstr "Lataa lisää" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Takaisin asiakkaalle" +#~ msgid "View Release" +#~ msgstr "Näytä tehtävä" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Asiakas:" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Luotu" +#~ msgid "Quick actions dock" +#~ msgstr "Nopeat toiminnot" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Viimeksi muokattu" +#~ msgid "Actions" +#~ msgstr "Toiminnot" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Huomautus Sisältö" +#~ msgid "Log Time" +#~ msgstr "Lokiaika" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Sisäinen huomautus näkyy vain tiimillesi." +#~ msgid "New Task" +#~ msgstr "Uusi tehtävä" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Merkitse tärkeäksi" +#~ msgid "New Project" +#~ msgstr "Näytä projekti" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "New Client" +#~ msgstr "Muokkaa asiakasta" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Asiakasportaali" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "Toiminto epäonnistui" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "Näytä tiedot" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "Context included" +#~ msgstr "Sopimus päättynyt" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "Logon esikatselu" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "Odottaa" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Hyväksytty" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Hylätty" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Kaikki" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Send" +#~ msgstr "Loppu" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Näytä tiedot" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "Create API Token" +#~ msgstr "Luo API-tunnus" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "Your API Token" +#~ msgstr "API-tunnuksesi" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "Usage Examples" +#~ msgstr "Käyttöesimerkkejä" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "Are you sure you want to" +#~ msgstr "Oletko varma, että haluat" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "deactivate" +#~ msgstr "deaktivoida" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "activate" +#~ msgstr "aktivoida" -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "Hyväksyntätila" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "Hyväksyntää pyydetty" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "Projekteja ei ole päivitetty" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "Tervetuloa, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "Mukauta pikakuvakkeita" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "this token?" +#~ msgstr "tämä merkki?" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "Tilastot" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "Järjestelmänvalvojan osiot" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "Viimeaikaiset laskut" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "Viimeaikaiset aikamerkinnät" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "Valitse asiakas..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "Ajastimen pysäyttäminen epäonnistui" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "Deactivate Token" +#~ msgstr "Poista Token käytöstä" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Activate Token" +#~ msgstr "Aktivoi Token" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "Deactivate" +#~ msgstr "Poista käytöstä" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "Activate" +#~ msgstr "Aktivoida" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Haluatko varmasti poistaa tämän tunnuksen? " +#~ "Tätä toimintoa ei voi kumota." -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "Poista Token" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Siirry Dashboardiin" +#~ msgid "Create Backup" +#~ msgstr "Luo varmuuskopio" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "Palauta varmuuskopio" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Mene takaisin" +#~ msgid "Existing Backups" +#~ msgstr "Olemassa olevat varmuuskopiot" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "Important Information" +#~ msgstr "Tärkeää tietoa" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Laskun tiedot" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Julkaisupäivämäärä" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "Tämä lasku on %(days)d päivää myöhässä." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Laskun erät" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Määrä" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Yksikköhinta" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "Vahvista poisto" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Takaisin laskuihin" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "Laskut kohteelle %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "Palkaton" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "Myöhässä" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Määrä" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "päivää myöhässä" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "Clear Cache" +#~ msgstr "Tyhjennä välimuisti" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "Palvelutyöntekijän tila" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "Tyhjennä kaikki välimuistit" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "Palvelutyöntekijän toimet" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "Manuaalinen Hard Refresh" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "All time" +#~ msgstr "Koko ajan" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Prioriteetti" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "Total Projects" +#~ msgstr "Projekteja yhteensä" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "" +#~ msgid "Active Projects" +#~ msgstr "Aktiiviset projektit" -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Avata" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Asiakasportaaliin kirjautuminen" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Tarkastele projektejasi ja laskujasi" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Kirjaudu sisään asiakasportaaliin" +#~ msgid "Database" +#~ msgstr "Tietokanta" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "Anna portaalin tunnistetiedot päästäksesi käsiksi projekteihisi ja laskuihisi" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "portaalin_käyttäjänimi" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Kirjoita salasanasi" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "OIDC Users" +#~ msgstr "OIDC-käyttäjät" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "users" +#~ msgstr "käyttäjiä" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "Järjestelmänvalvojan osiot" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Matala" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Keskikokoinen" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Korkea" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Kiireellinen" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "Recent Activity" +#~ msgstr "Viimeaikainen toiminta" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "Duration" +#~ msgstr "Kesto" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "N/A" +#~ msgstr "Ei käytössä" -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "Sähköpostin määritys ja testaus" -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "Määritä ja testaa sähköpostin toimitusta" -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "Takaisin järjestelmänvalvojaan" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "Määritä sähköpostiasetukset tässä tallentaaksesi ne tietokantaan." -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Ota tietokannan sähköpostin määritys käyttöön" -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "Mail Server" +#~ msgstr "Postipalvelin" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "Postin portti" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Use TLS" +#~ msgstr "Käytä TLS:ää" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Use SSL" +#~ msgstr "Käytä SSL:ää" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Username" +#~ msgstr "Käyttäjätunnus" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Kommentit" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Lisää kommentti" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Sinun kommenttisi" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Password" +#~ msgstr "Salasana" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Lähetä kommentti" +#~ msgid "Leave empty to keep current" +#~ msgstr "Jätä tyhjäksi pitääksesi ajan tasalla" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "Oletuslähettäjä" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "Vastaanottajan sähköposti" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Takaisin Projekteihin" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "Projektit käyttäjälle %(client_name)s" +#~ msgid "Save Configuration" +#~ msgstr "Tallenna asetukset" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "Reset" +#~ msgstr "Nollaa" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "Sähköpostin määritystila" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "Refresh" +#~ msgstr "Päivitä" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Lainauksen tiedot" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Voimassa asti" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Tämä lainaus on vanhentunut." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Lainauskohteet" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "SKU" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Ehdot" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "Sähköposti on määritetty!" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Hyväksy tarjous" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Hylkää lainaus" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Takaisin lainauksiin" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "Your email settings are properly set up." +#~ msgstr "Sähköpostiasetukset on määritetty oikein." -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "Email is not configured" +#~ msgstr "Sähköpostia ei ole määritetty" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "Lainaukset asiakkaalle %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Vanhentunut" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "Lainauksia ei löytynyt." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "Määritä sähköpostiasetukset käyttämällä yllä olevaa lomaketta." -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "Configuration Errors" +#~ msgstr "Asetusvirheet" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "Projektikoodi" +#~ msgid "Configuration Warnings" +#~ msgstr "Määritysvaroitukset" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "Yli budjetin" +#~ msgid "Current Email Settings" +#~ msgstr "Nykyiset sähköpostiasetukset" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "Port" +#~ msgstr "Portti" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "Yhteenveto" +#~ msgid "Password Set" +#~ msgstr "Salasana Aseta" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "Kokonaismäärä" +#~ msgid "Send Test Email" +#~ msgstr "Lähetä testisähköposti" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "Tehtäviä ei ole valittu" +#~ msgid "Recipient Email Address" +#~ msgstr "Vastaanottajan sähköpostiosoite" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "Ei toimintaa viimeisen 30 päivän aikana." +#~ msgid "Configuration Guide" +#~ msgstr "Asetusopas" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Common SMTP Providers" +#~ msgstr "Yleiset SMTP-palveluntarjoajat" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Requires app password" +#~ msgstr "Vaatii sovelluksen salasanan" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Aseta salasana" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Aloita määrittämällä salasanasi" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Aseta salasanasi" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Aseta salasana asiakasportaalitilillesi" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "Vahvista salasana" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Vahvista salasanasi" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "%(client_name)s-projektien aikamerkinnät" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Kaikki projektit" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "Päivämäärästä alkaen" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "Päivämäärään" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Tuloksia yhteensä" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Tunteja yhteensä" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "Important Notes" +#~ msgstr "Tärkeitä huomautuksia" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail vaatii sovelluksen salasanan, jos 2FA on käytössä" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "Käynnistä sovellus uudelleen sähköpostiasetusten muuttamisen jälkeen" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Viimeaikaiset laskut" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "Tarkista palomuurisäännöt, jos sähköpostit eivät lähetä" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Näytä kaikki" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "Käytä tuotannossa erillistä sähköpostipalvelua, " +#~ "kuten SendGrid tai Amazon SES" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "password is set" +#~ msgstr "salasana on asetettu" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "no password set" +#~ msgstr "salasanaa ei ole asetettu" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "Määrityksen tallentaminen epäonnistui. Yritä uudelleen." -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Success!" +#~ msgstr "Menestys!" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "Tilan päivittäminen epäonnistui. Yritä uudelleen." -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "Anna kelvollinen sähköpostiosoite" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "Lähetetään..." -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "Testisähköpostin lähettäminen epäonnistui. Tarkista kokoonpanosi." -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Laskut yhteensä" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Määritä OIDC käyttämällä näitä ympäristömuuttujia:" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Viimeaikaiset aikamerkinnät" +#~ msgid "Server" +#~ msgstr "Palvelu" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Vie CSV-muotoon" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Luo asiakas" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Takaisin asiakkaisiin" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "Lisää uusi asiakas hallinnoimaan liittyviä projekteja ja laskutusta." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Anna asiakkaan nimi" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Oletustuntihinta" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "esim. 75.00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "Tämä hinta täytetään automaattisesti luotaessa projekteja tälle asiakkaalle" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Tukee Markdownia" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Lyhyt kuvaus tilaajan tai projektin laajuudesta" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Yhteyshenkilö" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Ensisijaisen yhteyshenkilön nimi" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@client.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Kuukausittaiset prepaid-tunnit" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "esim. 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "Jätä tyhjäksi, jos asiakkaalla ei ole ennakkoon maksettua varausta." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Prepaid Reset Day" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Kuukauden päivä, jolloin prepaid-tunnit nollataan (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Asiakkaan osoite" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "Users" +#~ msgstr "Käyttäjät" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "Groups" +#~ msgstr "Ryhmät väittävät" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Valitse selkeä, kuvaava nimi asiakasorganisaatiolle." +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "Aseta tälle asiakkaalle vakiotuntihinta. Tämä täyttää automaattisesti uusia projekteja luotaessa." +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Yhteystiedot" +#~ msgid "LDAP host" +#~ msgstr "Kadonnut" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "Lisää yhteystiedot helpottaaksesi viestintää ja kirjaamista." +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "Käytä SSL:ää" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Prepaid-tunnit" +#~ msgid "StartTLS" +#~ msgstr "Aloita" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "Määritä kuukausittaiset tunnit ja nollauspäivä, jos tällä asiakkaalla on säilytin tai ennakkoon maksettu paketti." +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Aikakatkaisu (sekuntia)" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "Anna konteksti asiakassuhteesta tai tyypillisistä projektityypeistä." +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "Muokkaa asiakasta" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "Salli portaalin käyttö tälle asiakkaalle. Asiakkaat voivat kirjautua sisään omilla tunnuksillaan nähdäkseen projekteja, laskuja ja aikamerkintöjä." +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Ota asiakasportaali käyttöön" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "Bind password" +#~ msgstr "Salasana" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Enter bind password" +#~ msgstr "Kirjoita salasanasi" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Portaalin käyttäjätunnus" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Ainutlaatuinen käyttäjätunnus portaaliin kirjautumiseen" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Portaalin salasana" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "Jätä tyhjäksi säilyttääksesi nykyisen salasanan" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Aseta uusi salasana tai jätä tyhjäksi pysyäksesi ajan tasalla" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Nykyinen portaalin käyttäjätunnus" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Päivitä asiakas" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Lähetä salasanan asetussähköposti" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "Lähetä sähköposti osoitteeseen %(email)s, jossa on linkki portaalin salasanan asettamiseen." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "Sähköpostiosoite vaaditaan salasanan asetussähköpostin lähettämiseen. Aseta asiakkaan sähköpostiosoite yllä." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Asiakastilastot" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "Arvioitu Kokonaiskustannukset" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Suodata asiakkaat" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Vaihda suodattimet" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Piilota suodattimet" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Näytä suodattimet" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "Tälle projektille ei löytynyt laskuttamattomia aikamerkintöjä." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "Laskuttamattomat aikamerkinnät" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "Laskun erät" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "Merkitäänkö asiakas ei-aktiiviseksi?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Muuta asiakkaan tilaa" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Merkitse ei-aktiiviseksi" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "Aktivoi asiakas?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Aktivoi asiakas" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Poista asiakas" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "Aktiiviset projektit kokonaisuudessaan" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Hallitse" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Ensisijainen" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "lisää yhteystietoja" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Ei vielä yhteystietoja" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Lisää yhteystieto" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Vanhat yhteystiedot" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "Suunnitelmaan sisältyy %(hours)s tuntia sykliä kohden. Nollautuu päivänä %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Nykyisen syklin aloitus" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Jäljellä olevat tunnit" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "h" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "Kulutettu tämä sykli" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "Base DN" +#~ msgstr "Viimeisen perusteella" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "User object class" +#~ msgstr "Käytä projektin tuntihintoja" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "Login attribute" +#~ msgstr "Lokiaika" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "Email attribute" +#~ msgstr "Sähköpostiosoite" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Asiakas näkyvissä" +#~ msgid "First name attribute" +#~ msgstr "Etunimi" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "Sukunimi" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Todennusmenetelmä" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Arkistoitu" +#~ msgid "Group object class" +#~ msgstr "Huippuprojektit" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "Admin Group" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "AUTH_METHOD" +#~ msgstr "Todennusmenetelmä" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Sisäiset huomautukset" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Lisää huomautus" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Lisää sisäinen huomautus tästä asiakkaasta..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Tallenna muistiinpano" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "muokattu" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Tärkeää" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Poista merkintä" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Merkitse tärkeäksi" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "Ei muistiinpanoja vielä. Lisää muistiinpano, jotta voit seurata tätä asiakasta koskevia tärkeitä tietoja." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "Arvioitu arvo" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "Luo lasku" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "Luo lasku" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "Luo lasku" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "Haluatko varmasti poistaa tämän muistiinpanon?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Poista huomautus" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Muokattu" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Vastata" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "Vain aktiivinen" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Kirjoita vastauksesi..." +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Testaa kokoonpano" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Jaa ajatuksesi, päivityksesi tai kysymyksesi..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "Voit muotoilla kommenttisi rivinvaihtojen avulla." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Lisää kuva" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Ei vielä kommentteja" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Aloita keskustelu lisäämällä ensimmäinen kommentti." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Lisää ensimmäinen kommentti" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Muokkaa kommenttia" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Takaisin" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "Muokataan kommenttia:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Alunperin lähetetty" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Kommentoi sisältöä" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Kaikki aktiviteetit" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Aikamallit" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Ei viimeaikaista toimintaa" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "Toiminta näkyy tässä työskennellessäsi" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Lataa lisää" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "Toimintojen lataaminen epäonnistui" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Test connection" +#~ msgstr "Testaa kokoonpano" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "Generate configuration" +#~ msgstr "Testaa kokoonpano" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "Environment variables (.env)" +#~ msgstr "Ympäristömuuttujien viite" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Previous" +#~ msgstr "Edellinen" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Valitse asiakas..." +#~ msgid "Next" +#~ msgstr "Seuraavaksi" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "Feature Module Load Status" +#~ msgstr "Ominaisuuden käyttötilastot" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "Optional loaded:" +#~ msgstr "Valinnainen kuponkikoodi" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "Attention needed" +#~ msgstr "Huomiota vaaditaan" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Module" +#~ msgstr "mobiili" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "Status" +#~ msgstr "Status" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "Details" +#~ msgstr "Yksityiskohdat" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Loaded" +#~ msgstr "Lataa lisää" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Failed" +#~ msgstr "Epäonnistui" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "—" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "Tehty" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "TimeTrackerin ohjekeskus" +#~ msgid "All Categories" +#~ msgstr "Kaikki luokat" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Project Management" +#~ msgstr "Projektinhallinta" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Kotiin" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "Tiedot" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "Käytössä" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Soittaa" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Viesti" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Suunta" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "Lähtevä" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "Saapuva" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Aihe" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Aikataulutettu" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Seurantapäivämäärä" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Sisältö/huomautukset" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Tallenna viestintä" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Etunimi" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Sukunimi" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "mobiili" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "osasto" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Ota yhteyttä" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Laskutus" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Tekninen" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Aseta ensisijaiseksi yhteyshenkilöksi" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Tunnisteet" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Tallenna yhteystieto" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Aseta ensisijainen" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "Yhteystietoja ei löytynyt" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Lisää ensimmäinen yhteystieto" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Ensisijainen yhteyshenkilö" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Viestintähistoria" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Lisää viestintä" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "Viestintää ei tallennettu" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "Disabled" +#~ msgstr "Ei käytössä" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "Aktivoida" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Sopimuksen nimi" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Valitse Asiakas" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Valitse Yhteystiedot" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Vaihe" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Sopimuksen arvo" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Voiton todennäköisyys" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Odotettu sulkemispäivä" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Aiheeseen liittyvä lainaus" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Valitse Lainaus" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Tallenna tarjous" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Voitti" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Kadonnut" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Kaikki vaiheet" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Arvo" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Todennäköisyys" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Odotettu sulkeutuva" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "Tarjouksia ei löytynyt" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Luo ensimmäinen tarjous" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "Save Changes" +#~ msgstr "Tallenna muutokset" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "Note" +#~ msgstr "Huom" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Aiheeseen liittyvä projekti" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "Maalihistoria" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "Näytä täydelliset tiedot" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "OIDC Debug Dashboard" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "Tarkista kokoonpano, palveluntarjoajan metatiedot ja OIDC-käyttäjät" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Sinut Mainittiin" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Näytä tehtävä ja vastaus" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Laskuttaa" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Lasku erääntynyt" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Näytä lasku" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Lainata" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Tarjouksen hyväksyntä hylätty" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Näytä lainaus" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Hyväksyntää pyydetty" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Tarkista lainaus" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Lainaus hyväksytty" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "Lainaus vanhentunut" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "Lainaus vanhenee pian" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Lainaus lähetetty" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Tehtävän määritys" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Näytä tehtävä" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Testin tiedot" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "Viikkoyhteenveto" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 Huono pyyntö" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Virheellinen pyyntö" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "Tekemäsi pyyntö on virheellinen tai sisältää virheitä. Tämä voi johtua seuraavista:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Lomaketiedot puuttuvat tai ovat virheellisiä" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Väärin muotoillut pyyntöparametrit" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "Sinulla ei ole lupaa käyttää tätä resurssia. Tämä voi johtua seuraavista:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Riittämättömät oikeudet" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "Ei kirjautunut sisään" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Resurssien käyttörajoitukset" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Jotain meni vikaan meidän päässämme. Yritä myöhemmin uudelleen." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Yritä uudelleen" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Pyyntöäsi käsiteltäessä tapahtui virhe." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Päivitä sivu" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Siirry kohtaan Kirjautuminen" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "esim. matkat, ruokailut, toimistotarvikkeet" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "esim. MATKAT, Ateriat" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Lyhyt kuvaus tästä kategoriasta..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "esim. fa-taso, fa-astiat" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "esim. 19.00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Luokka" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Perustiedot" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "esim. lento Berliiniin" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Lisätietoa kuluista..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "Luokka" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "Maksutiedot" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "Sijainti" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Maksutiedot" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "esim. Lufthansa" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "Lisätietoja" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Kuitin/laskun numero" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "esim. INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "esim. kokous, asiakastapaaminen, kiireellinen" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Lisähuomautuksia..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "Valinnainen" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Suodatuskulut" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Poista valitut kulut" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Muuta valittujen kulujen tilaa" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Liittyy" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Hylkää kulut" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Selitä, miksi tämä kulu hylätään..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "Haluatko varmasti poistaa tämän kulun?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Poista kulut" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Tuo/Vie tiedot" +#~ msgid "Test Configuration" +#~ msgstr "Testaa kokoonpano" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Tuo/Vie" +#~ msgid "OIDC Configuration" +#~ msgstr "OIDC-kokoonpano" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "Tuo tietoja muista aikaseurantalaitteista tai vie tietosi GDPR-yhteensopivuutta ja varmuuskopioita varten" +#~ msgid "Auth Method" +#~ msgstr "Todennusmenetelmä" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Tuo tiedot" +#~ msgid "Issuer" +#~ msgstr "Liikkeeseenlaskija" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "Not configured" +#~ msgstr "Ei määritetty" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Tuo aikamerkinnät CSV-tiedostosta" +#~ msgid "Client ID" +#~ msgstr "Asiakastunnus" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Valitse CSV-tiedosto" +#~ msgid "Client Secret" +#~ msgstr "Asiakkaan salaisuus" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Lataa malli" +#~ msgid "Set" +#~ msgstr "Sarja" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Not set" +#~ msgstr "Ei asetettu" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "Uudelleenohjaus URI" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "Luotu automaattisesti" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Scopes" +#~ msgstr "Soveltamisalat" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "Vaatimusten kartoitus" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "Käyttäjätunnusvaatimus" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Email Claim" +#~ msgstr "Sähköpostivaatimus" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Tuo Toggl Trackista" +#~ msgid "Full Name Claim" +#~ msgstr "Koko nimen väite" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Tuo aikamerkinnät Toggl Trackista" +#~ msgid "Groups Claim" +#~ msgstr "Ryhmät väittävät" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Tuo Togglista" +#~ msgid "Admin Group" +#~ msgstr "Admin Group" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Tuonti Harvestista" +#~ msgid "Admin Emails" +#~ msgstr "Admin sähköpostit" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Tuo aikamerkinnät Harvestista" +#~ msgid "Post-Logout URI" +#~ msgstr "Uloskirjautumisen jälkeinen URI" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Palauta varmuuskopiosta" +#~ msgid "Provider Metadata" +#~ msgstr "Palveluntarjoajan metatiedot" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "Error loading metadata:" +#~ msgstr "Virhe ladattaessa metatietoja:" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Tuo historia" +#~ msgid "Discovery endpoint:" +#~ msgstr "Löytämisen päätepiste:" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Vie tiedot" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Palveluntarjoajan metatietojen lataus onnistui" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Full Data Export (GDPR)" +#~ msgid "Endpoints" +#~ msgstr "Päätepisteet" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Vie kaikki henkilötietosi" +#~ msgid "Authorization" +#~ msgstr "Valtuutus" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Vie JSON-muodossa" +#~ msgid "Token" +#~ msgstr "Token" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Vie ZIP-muodossa" +#~ msgid "UserInfo" +#~ msgstr "Käyttäjätiedot" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Suodatettu vienti" +#~ msgid "End Session" +#~ msgstr "Lopeta istunto" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Vie tiettyjä tietoja suodattimilla" +#~ msgid "JWKS URI" +#~ msgstr "JWKS URI" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Vie suodattimilla" +#~ msgid "Supported Features" +#~ msgstr "Tuetut ominaisuudet" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "Response Types" +#~ msgstr "Vastaustyypit" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "Apurahatyypit" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "Auth Methods" +#~ msgstr "Todennusmenetelmät" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Luo koko tietokannan varmuuskopio" +#~ msgid "Claims" +#~ msgstr "Väitteet" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Vie historiaa" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Palveluntarjoajan metatietoja ei ladattu. " +#~ "Napsauta \"Testaa kokoonpano\" hakeaksesi." -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "API-tunnus" +#~ msgid "Email" +#~ msgstr "Sähköposti" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "Työtilan tunnus" +#~ msgid "Full Name" +#~ msgstr "Koko nimi" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Tuoda" +#~ msgid "Role" +#~ msgstr "Rooli" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "Tilin tunnus" +#~ msgid "Last Login" +#~ msgstr "Viimeisin kirjautuminen" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "OIDC Subject" +#~ msgstr "OIDC Aihe" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "Inactive" +#~ msgstr "Ei-aktiivinen" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Never" +#~ msgstr "Ei koskaan" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Yksikään käyttäjä ei ole vielä kirjautunut OIDC:n kautta." -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "Environment Variables Reference" +#~ msgstr "Ympäristömuuttujien viite" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Määritä OIDC käyttämällä näitä ympäristömuuttujia:" + +#~ msgid "Variable" +#~ msgstr "Muuttuva" + +#~ msgid "Description" +#~ msgstr "Kuvaus" + +#~ msgid "Example" +#~ msgstr "Esimerkki" + +#~ msgid "Authentication method" +#~ msgstr "Todennusmenetelmä" + +#~ msgid "OIDC provider issuer URL" +#~ msgstr "OIDC-palveluntarjoajan myöntäjän URL-osoite" + +#~ msgid "Client ID from OIDC provider" +#~ msgstr "Asiakastunnus OIDC-palveluntarjoajalta" + +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Asiakkaan salaisuus OIDC-palveluntarjoajalta" + +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "Takaisinsoitto-URL-osoite (valinnainen, automaattisesti luotu)" + +#~ msgid "Requested scopes" +#~ msgstr "Pyydetyt laajuudet" + +#~ msgid "Claim containing username" +#~ msgstr "Vaatimus sisältää käyttäjänimen" + +#~ msgid "Claim containing email" +#~ msgstr "Vaatimus, joka sisältää sähköpostin" + +#~ msgid "Claim containing full name" +#~ msgstr "Väite, joka sisältää koko nimen" + +#~ msgid "Claim containing groups" +#~ msgstr "Ryhmiä sisältävä vaatimus" + +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Järjestelmänvalvojan roolin ryhmän nimi (valinnainen)" + +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "Pilkuilla erotetut järjestelmänvalvojan sähköpostit (valinnainen)" + +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" + +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" + +#~ msgid "Basic Config" +#~ msgstr "" + +#~ msgid "Test Connection" +#~ msgstr "" + +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" + +#~ msgid "OIDC Issuer URL" +#~ msgstr "" + +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" + +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" + +#~ msgid "Enter client secret" +#~ msgstr "" + +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" + +#~ msgid "Authentication Method" +#~ msgstr "Todennusmenetelmä" + +#~ msgid "OIDC Only" +#~ msgstr "" + +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" + +#~ msgid "Both" +#~ msgstr "" + +#~ msgid "SSO and local password authentication" +#~ msgstr "" + +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" + +#~ msgid "Step 2: Test Connection" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" + +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" + +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" + +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" + +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" + +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" + +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" + +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" + +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" + +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" + +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" + +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" + +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" + +#~ msgid "Generate Configuration" +#~ msgstr "" + +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" + +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" + +#~ msgid "OIDC User Details" +#~ msgstr "OIDC:n käyttäjätiedot" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Tämän käyttäjän profiili ja OIDC-identiteetti" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "Takaisin OIDC Debugiin" + +#~ msgid "User Profile" +#~ msgstr "Käyttäjäprofiili" + +#~ msgid "Active" +#~ msgstr "Aktiivinen" + +#~ msgid "Preferred Language" +#~ msgstr "Ensisijainen kieli" + +#~ msgid "Created At" +#~ msgstr "Luotu klo" + +#~ msgid "OIDC Information" +#~ msgstr "OIDC tiedot" + +#~ msgid "OIDC Issuer" +#~ msgstr "OIDC:n liikkeeseenlaskija" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "OIDC-aihe (ala)" + +#~ msgid "Local" +#~ msgstr "Paikallinen" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Tämä käyttäjä luotiin tai linkitettiin " +#~ "OIDC:n kautta. Myöntäjää ja aihetta " +#~ "käytetään käyttäjän yksilöimiseen " +#~ "kirjautumisistuntojen aikana." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Tällä käyttäjällä ei ole OIDC-tietoja." +#~ " Ne on voitu luoda manuaalisesti tai" +#~ " rekisteröitymällä itse ilman OIDC:tä." + +#~ msgid "Activity Statistics" +#~ msgstr "Toimintatilastot" + +#~ msgid "Time Entries" +#~ msgstr "Aikamerkinnät" + +#~ msgid "None" +#~ msgstr "Ei mitään" + +#~ msgid "Active Timer" +#~ msgstr "Aktiivinen ajastin" + +#~ msgid "Tasks Created" +#~ msgstr "Tehtävät luotu" + +#~ msgid "Edit User" +#~ msgstr "Muokkaa käyttäjää" + +#~ msgid "View All Users" +#~ msgstr "Näytä kaikki käyttäjät" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "PDF-lainaussuunnittelija" + +#~ msgid "Visual Invoice Designer" +#~ msgstr "Visuaalinen lainaussuunnittelija" + +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "Suunnittele tarjousasettelu vetämällä ja pudottamalla elementtejä" + +#~ msgid "How to use:" +#~ msgstr "Käyttöohjeet:" + +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Napsauta elementtejä vasemmasta sivupalkista " +#~ "lisätäksesi ne kankaalle. Napsauta elementtejä" +#~ " valitaksesi ja mukauttaaksesi niitä " +#~ "ominaisuuspaneelissa. Käytä kohdistustyökaluja ja" +#~ " pikanäppäimiä nopeuttaaksesi muokkausta." + +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Pikanäppäimet:" + +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" + +#~ msgid "Items Table:" +#~ msgstr "Lainauskohteiden taulukko" + +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" + +#~ msgid "Expenses Table:" +#~ msgstr "Kulut Välisumma" + +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" + +#~ msgid "Saving:" +#~ msgstr "Tallennetaan..." + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" + +#~ msgid "Preview:" +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" + +#~ msgid "See" +#~ msgstr "Sarja" + +#~ msgid "for full documentation." +#~ msgstr "Dokumentaatio" + +#~ msgid "Clear Canvas" +#~ msgstr "Kirkas kangas" + +#~ msgid "Generate Preview" +#~ msgstr "Luo esikatselu" + +#~ msgid "Save Design" +#~ msgstr "Tallenna malli" + +#~ msgid "View Code" +#~ msgstr "Näytä koodi" + +#~ msgid "Export JSON" +#~ msgstr "" + +#~ msgid "Import JSON" +#~ msgstr "" + +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Kiinnitä ruudukkoon (10px)" + +#~ msgid "Toolbox" +#~ msgstr "Työkalulaatikko" + +#~ msgid "Search elements & variables..." +#~ msgstr "Hakuelementit ja muuttujat..." + +#~ msgid "Elements" +#~ msgstr "Elementit" + +#~ msgid "Variables" +#~ msgstr "Muuttujat" + +#~ msgid "Basic Elements" +#~ msgstr "Peruselementit" + +#~ msgid "Custom Text" +#~ msgstr "Mukautettu teksti" + +#~ msgid "Text" +#~ msgstr "Teksti" + +#~ msgid "Heading" +#~ msgstr "Otsikko" + +#~ msgid "Line" +#~ msgstr "Linja" + +#~ msgid "Rectangle" +#~ msgstr "Suorakulmio" + +#~ msgid "Circle" +#~ msgstr "Ympyrä" + +#~ msgid "Company Info" +#~ msgstr "Yrityksen tiedot" + +#~ msgid "Company Logo" +#~ msgstr "Yrityksen logo" + +#~ msgid "Company Name" +#~ msgstr "Yrityksen nimi" + +#~ msgid "Company Details" +#~ msgstr "Yrityksen tiedot" + +#~ msgid "Address" +#~ msgstr "Osoite" + +#~ msgid "Phone" +#~ msgstr "Puhelin" + +#~ msgid "Website" +#~ msgstr "Verkkosivusto" + +#~ msgid "Tax ID" +#~ msgstr "Verotunnus" + +#~ msgid "Invoice Data" +#~ msgstr "Laskun tiedot" + +#~ msgid "Invoice Number" +#~ msgstr "Laskun numero" + +#~ msgid "Invoice Date" +#~ msgstr "Laskutettu" + +#~ msgid "Due Date" +#~ msgstr "Eräpäivä" + +#~ msgid "Client Info" +#~ msgstr "Asiakastiedot" + +#~ msgid "Client Name" +#~ msgstr "Asiakkaan nimi" + +#~ msgid "Client Address" +#~ msgstr "Asiakkaan osoite" + +#~ msgid "Items Table" +#~ msgstr "Lainauskohteiden taulukko" + +#~ msgid "Expenses Table" +#~ msgstr "Kulut Välisumma" + +#~ msgid "Subtotal" +#~ msgstr "Välisumma" + +#~ msgid "Tax" +#~ msgstr "Verottaa" + +#~ msgid "Total Amount" +#~ msgstr "Kokonaismäärä" + +#~ msgid "Terms" +#~ msgstr "Ehdot" + +#~ msgid "Payment & Project" +#~ msgstr "Maksu ja projekti" + +#~ msgid "Payment Date" +#~ msgstr "Maksupäivä" + +#~ msgid "Payment Method" +#~ msgstr "Maksutapa" + +#~ msgid "Payment Status" +#~ msgstr "Maksun tila" + +#~ msgid "Amount Paid" +#~ msgstr "Maksettu summa" + +#~ msgid "Project Name" +#~ msgstr "Projektin nimi" + +#~ msgid "Client Email" +#~ msgstr "Asiakkaan sähköposti" + +#~ msgid "Client Phone" +#~ msgstr "Asiakas puhelin" + +#~ msgid "QR Code" +#~ msgstr "QR-koodi" + +#~ msgid "Barcode" +#~ msgstr "Viivakoodi" + +#~ msgid "Page Number" +#~ msgstr "Sivunumero" + +#~ msgid "Current Date" +#~ msgstr "Nykyinen päivämäärä" + +#~ msgid "Watermark" +#~ msgstr "Vesileima" + +#~ msgid "Bank Info" +#~ msgstr "Pankkitiedot" + +#~ msgid "Currency" +#~ msgstr "Valuutta" + +#~ msgid "Decorative Image" +#~ msgstr "" + +#~ msgid "Invoice Fields" +#~ msgstr "Laskun erät" + +#~ msgid "Invoice number" +#~ msgstr "Laskun numero" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Tarjouksen tila (luonnos / lähetetty / maksettu / myöhässä)" + +#~ msgid "Issue date" +#~ msgstr "Julkaisupäivä" + +#~ msgid "Due date" +#~ msgstr "Eräpäivä" + +#~ msgid "Subtotal amount" +#~ msgstr "Välisumma" + +#~ msgid "Tax rate (%)" +#~ msgstr "Veroprosentti (%)" + +#~ msgid "Tax amount" +#~ msgstr "Veron määrä" + +#~ msgid "Total amount" +#~ msgstr "Kokonaismäärä" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Valuuttakoodi (EUR, USD jne.)" + +#~ msgid "Invoice notes" +#~ msgstr "Laskun erät" + +#~ msgid "Terms & conditions" +#~ msgstr "Ehdot" + +#~ msgid "Client Fields" +#~ msgstr "Asiakaskentät" + +#~ msgid "Client company name" +#~ msgstr "Asiakkaan yrityksen nimi" + +#~ msgid "Client email address" +#~ msgstr "Asiakkaan sähköpostiosoite" + +#~ msgid "Client full address" +#~ msgstr "Asiakkaan täydellinen osoite" + +#~ msgid "Client contact person" +#~ msgstr "Asiakkaan yhteyshenkilö" + +#~ msgid "Client phone number" +#~ msgstr "Asiakkaan puhelinnumero" + +#~ msgid "Payment Fields" +#~ msgstr "Maksukentät" + +#~ msgid "Payment status" +#~ msgstr "Maksun tila" + +#~ msgid "Payment date" +#~ msgstr "Maksupäivä" + +#~ msgid "Payment method" +#~ msgstr "Maksutapa" + +#~ msgid "Payment reference number" +#~ msgstr "Maksun viitenumero" + +#~ msgid "Amount paid" +#~ msgstr "Maksettu summa" + +#~ msgid "Outstanding amount" +#~ msgstr "Erinomaista määrää" + +#~ msgid "Payment notes" +#~ msgstr "Maksutiedot" + +#~ msgid "Project Fields" +#~ msgstr "Projektikentät" + +#~ msgid "Project name" +#~ msgstr "Projektin nimi" + +#~ msgid "Project code" +#~ msgstr "Projektin koodi" + +#~ msgid "Project description" +#~ msgstr "Projektin kuvaus" + +#~ msgid "Project billing reference" +#~ msgstr "Projektin laskutusviite" + +#~ msgid "Company/Settings Fields" +#~ msgstr "Yritys/Asetuskentät" + +#~ msgid "Your company name" +#~ msgstr "Yrityksesi nimi" + +#~ msgid "Your company address" +#~ msgstr "Yrityksesi osoite" + +#~ msgid "Your company email" +#~ msgstr "Yrityksesi sähköpostiosoite" + +#~ msgid "Your company phone" +#~ msgstr "Yrityksesi puhelin" + +#~ msgid "Your company website" +#~ msgstr "Yrityksesi verkkosivusto" + +#~ msgid "Your tax ID number" +#~ msgstr "Verotunnuksesi" + +#~ msgid "Your bank account info" +#~ msgstr "Pankkitilisi tiedot" + +#~ msgid "Default invoice terms" +#~ msgstr "Laskun oletusehdot" + +#~ msgid "Default invoice notes" +#~ msgstr "Oletuslaskun huomautukset" + +#~ msgid "Date/Time Fields" +#~ msgstr "Päivämäärä/aika -kentät" + +#~ msgid "Current date" +#~ msgstr "Nykyinen päivämäärä" + +#~ msgid "Invoice creation date" +#~ msgstr "Lainauksen luomispäivämäärä" + +#~ msgid "Invoice last update date" +#~ msgstr "Lainaus viimeisin päivityspäivä" + +#~ msgid "Invoice Items Loop" +#~ msgstr "Laskun erät" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" + +#~ msgid "Time-based items only" +#~ msgstr "Aikaperusteiset palvelut ja tuntityö" + +#~ msgid "Item description" +#~ msgstr "Tuotteen kuvaus" + +#~ msgid "Item quantity" +#~ msgstr "Tavaran määrä" + +#~ msgid "Item unit price" +#~ msgstr "Tuotteen yksikköhinta" + +#~ msgid "Item total amount" +#~ msgstr "Tuotteen kokonaismäärä" + +#~ msgid "End loop" +#~ msgstr "Lopeta silmukka" + +#~ msgid "Extra Goods Loop" +#~ msgstr "Lisätavarat" + +#~ msgid "Loop through extra goods only" +#~ msgstr "Projektin lisätavarat" + +#~ msgid "Good name" +#~ msgstr "Roolin nimi" + +#~ msgid "Good total amount" +#~ msgstr "Kokonaismäärä" + +#~ msgid "Design Canvas" +#~ msgstr "Design Canvas" + +#~ msgid "Page Size:" +#~ msgstr "Sivun koko:" + +#~ msgid "Zoom In" +#~ msgstr "Lähennä" + +#~ msgid "Zoom Out" +#~ msgstr "Loitonna" + +#~ msgid "Delete Selected" +#~ msgstr "Poista valitut" + +#~ msgid "Properties" +#~ msgstr "Ominaisuudet" + +#~ msgid "Warnings" +#~ msgstr "Varoitus" + +#~ msgid "Refresh warnings" +#~ msgstr "Päivitä sivu" + +#~ msgid "No warnings" +#~ msgstr "Varoitus" + +#~ msgid "Template Settings" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "Päivämäärän muoto" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "Valitse elementti muokataksesi sen ominaisuuksia" + +#~ msgid "PDF Preview" +#~ msgstr "PDF-esikatselu" + +#~ msgid "Page Size" +#~ msgstr "" + +#~ msgid "Refresh Preview" +#~ msgstr "" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "" + +#~ msgid "Close Preview" +#~ msgstr "" + +#~ msgid "Zoom Level" +#~ msgstr "" + +#~ msgid "Reset Zoom" +#~ msgstr "" + +#~ msgid "Fit to Width" +#~ msgstr "" + +#~ msgid "Fit Width" +#~ msgstr "" + +#~ msgid "Fit to Height" +#~ msgstr "" + +#~ msgid "Fit Height" +#~ msgstr "" + +#~ msgid "Actual Size" +#~ msgstr "" + +#~ msgid "Generating preview..." +#~ msgstr "" + +#~ msgid "Preview Error" +#~ msgstr "" + +#~ msgid "Retry" +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "Luotu koodi" + +#~ msgid "Change Image" +#~ msgstr "" + +#~ msgid "Upload Image" +#~ msgstr "" + +#~ msgid "Remove Image" +#~ msgstr "" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "" + +#~ msgid "Uploading..." +#~ msgstr "" + +#~ msgid "Error: Image update function not found" +#~ msgstr "" + +#~ msgid "Failed to upload image" +#~ msgstr "" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "Poistetaanko kaikki elementit?" + +#~ msgid "Clear" +#~ msgstr "Selkeä" + +#~ msgid "Exit Fullscreen" +#~ msgstr "" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "Palautetaanko oletusasetukset?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "Palauta PDF-asettelu" + +#~ msgid "Error importing template" +#~ msgstr "" + +#~ msgid "PDF Quote Designer" +#~ msgstr "PDF-lainaussuunnittelija" + +#~ msgid "Visual Quote Designer" +#~ msgstr "Visuaalinen lainaussuunnittelija" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "Suunnittele tarjousasettelu vetämällä ja pudottamalla elementtejä" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Lainauskohteiden taulukko" + +#~ msgid "Quote Items Table:" +#~ msgstr "Lainauskohteiden taulukko" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" + +#~ msgid "Quote Data" +#~ msgstr "Lainaustiedot" + +#~ msgid "Quote Number" +#~ msgstr "Lainausnumero" + +#~ msgid "Quote Date" +#~ msgstr "Lainauspäivämäärä" + +#~ msgid "Quote Items Table" +#~ msgstr "Lainauskohteiden taulukko" + +#~ msgid "Quote Fields" +#~ msgstr "Lainauskentät" + +#~ msgid "Quote number" +#~ msgstr "Lainausnumero" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Tarjouksen tila (luonnos / lähetetty / maksettu / myöhässä)" + +#~ msgid "Quote notes" +#~ msgstr "Lainaus muistiinpanoja" + +#~ msgid "Quote status" +#~ msgstr "Lainauksen tila" + +#~ msgid "Quote accepted date" +#~ msgstr "Tarjouksen hyväksymispäivämäärä" + +#~ msgid "Quote creation date" +#~ msgstr "Lainauksen luomispäivämäärä" + +#~ msgid "Quote last update date" +#~ msgstr "Lainaus viimeisin päivityspäivä" + +#~ msgid "Quote Items Loop" +#~ msgstr "Lainauskohteet Loop" + +#~ msgid "Loop through invoice items" +#~ msgstr "Selaa laskun kohteita" + +#~ msgid "Align Left" +#~ msgstr "Tasaa vasemmalle" + +#~ msgid "Center Horizontally" +#~ msgstr "Keskitä vaakasuunnassa" + +#~ msgid "Align Right" +#~ msgstr "Kohdista oikealle" + +#~ msgid "Align Top" +#~ msgstr "Kohdista yläosa" + +#~ msgid "Center Vertically" +#~ msgstr "Keskitä pystysuunnassa" + +#~ msgid "Align Bottom" +#~ msgstr "Tasaa alas" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "" + +#~ msgid "Email Mappings" +#~ msgstr "" + +#~ msgid "Add Mapping" +#~ msgstr "" + +#~ msgid "Salesman Initial" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "Sähköpostiosoite" + +#~ msgid "Pattern/Domain" +#~ msgstr "" + +#~ msgid "Add Email Mapping" +#~ msgstr "" + +#~ msgid "1-20 letters only" +#~ msgstr "" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" + +#~ msgid "Direct Email Address" +#~ msgstr "" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" + +#~ msgid "Edit Email Mapping" +#~ msgstr "" + +#~ msgid "Error saving mapping" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" + +#~ msgid "Error deleting mapping" +#~ msgstr "" + +#~ msgid "Time Entry Requirements" +#~ msgstr "Ajansyöttömallit" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" + +#~ msgid "Require description when logging time" +#~ msgstr "" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" + +#~ msgid "Support visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "Avain" + +#~ msgid "— key sent by email." +#~ msgstr "Lähetä Sähköposti" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "Avain" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "Koodi, nimi, sähköposti" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "Yrityksen brändäys" + +#~ msgid "Invoice Defaults" +#~ msgstr "Laskun oletusasetukset" + +#~ msgid "Backup Settings" +#~ msgstr "Varmuuskopiointiasetukset" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "Käytössä" + +#~ msgid "Host" +#~ msgstr "Kadonnut" + +#~ msgid "SSL" +#~ msgstr "Käytä SSL:ää" + +#~ msgid "TLS" +#~ msgstr "Käytä TLS:ää" + +#~ msgid "on" +#~ msgstr "päällä" + +#~ msgid "off" +#~ msgstr "/" + +#~ msgid "User DN" +#~ msgstr "Käyttäjävalikko" + +#~ msgid "User login attribute" +#~ msgstr "Nopeammat latausajat" + +#~ msgid "Test LDAP Connection" +#~ msgstr "Ehdot" + +#~ msgid "Export Settings" +#~ msgstr "Vie asetukset" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "Säätö" + +#~ msgid "Transfer" +#~ msgstr "Siirtää" + +#~ msgid "Sale" +#~ msgstr "Myynti" + +#~ msgid "Rent" +#~ msgstr "Vuokraus" + +#~ msgid "Purchase" +#~ msgstr "Ostaa" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "Saatavilla" + +#~ msgid "Use environment default" +#~ msgstr "Laskun oletusasetukset" + +#~ msgid "currently" +#~ msgstr "Valuutta" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "Kuvan URL-osoite" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "Koodi" + +#~ msgid "Hosted API key" +#~ msgstr "Luo API-tunnus" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "Jätä tyhjäksi, jos haluat säilyttää nykyisen salasanan" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "Aikakatkaisu (sekuntia)" + +#~ msgid "Context limit" +#~ msgstr "Sisältötyyppi" + +#~ msgid "System prompt" +#~ msgstr "Järjestelmän rooli" + +#~ msgid "Test AI connection" +#~ msgstr "Ehdot" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Yksityisyys & Analytics" + +#~ msgid "Save Settings" +#~ msgstr "Tallenna asetukset" + +#~ msgid "Upload New Logo" +#~ msgstr "Lataa uusi logo" + +#~ msgid "Logo Preview" +#~ msgstr "Logon esikatselu" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Haluatko varmasti poistaa yrityksen logon?" + +#~ msgid "Remove Logo" +#~ msgstr "Poista logo" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "Pyydä hyväksyntää" + +#~ msgid "Testing connection..." +#~ msgstr "Testaa kokoonpano" + +#~ msgid "Connection failed." +#~ msgstr "Toiminto epäonnistui" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "Toiminto epäonnistui" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Telemetrian ja analyysin hallintapaneeli" + +#~ msgid "Admin → Settings" +#~ msgstr "Järjestelmänvalvoja → Asetukset" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "Jätä tyhjäksi, jos haluat säilyttää nykyisen salasanan" + +#~ msgid "Client Portal Access" +#~ msgstr "Asiakasportaalin käyttö" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "Määritä roolit" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "Järjestelmänvalvojan käyttöoikeudet" + +#~ msgid "Migrate to new role system" +#~ msgstr "Siirrä uuteen roolijärjestelmään" + +#~ msgid "Migrate" +#~ msgstr "Siirrä" + +#~ msgid "Roles" +#~ msgstr "Roolit" + +#~ msgid "No users found." +#~ msgstr "Käyttäjiä ei löytynyt." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "Käyttäjää \"{name}\" ei voi poistaa, " +#~ "koska hänellä on {count} aikamerkintää. " +#~ "Käyttäjiä, joilla on olemassa olevia " +#~ "aikamerkintöjä, ei voida poistaa." + +#~ msgid "Cannot Delete User" +#~ msgstr "Käyttäjää ei voi poistaa" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Haluatko varmasti poistaa käyttäjän " +#~ "\"{name}\"? Tätä toimintoa ei voi " +#~ "kumota." + +#~ msgid "Delete User" +#~ msgstr "Poista käyttäjä" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "Label" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "Valinnainen" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "Aseta oletusmalliksi" + +#~ msgid "HTML Template" +#~ msgstr "HTML-malli" + +#~ msgid "Custom Message" +#~ msgstr "Mukautettu viesti" + +#~ msgid "More Variables" +#~ msgstr "Lisää muuttujia" + +#~ msgid "Create Template" +#~ msgstr "Luo malli" + +#~ msgid "Available Variables" +#~ msgstr "Saatavilla olevat muuttujat" + +#~ msgid "Invoice Variables" +#~ msgstr "Laskun muuttujat" + +#~ msgid "Other Variables" +#~ msgstr "Muut muuttujat" + +#~ msgid "Send test email" +#~ msgstr "Lähetä testisähköposti" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "Vastaanottajan sähköposti" + +#~ msgid "Invoice ID" +#~ msgstr "Laskutettu" + +#~ msgid "Update Template" +#~ msgstr "Päivitä malli" + +#~ msgid "Failed to send test email." +#~ msgstr "Lähetä testisähköposti" + +#~ msgid "No email templates found." +#~ msgstr "Sähköpostimalleja ei löytynyt." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" +#~ "Luo ensimmäinen sähköpostimallisi mukauttaaksesi " +#~ "laskusähköpostiviestejä." + +#~ msgid "Create Email Template" +#~ msgstr "Luo sähköpostimalli" + +#~ msgid "Delete Email Template" +#~ msgstr "Poista sähköpostimalli" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "Haluatko varmasti poistaa" + +#~ msgid "This action cannot be undone." +#~ msgstr "Tätä toimintoa ei voi kumota." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "Mallin tiedot" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "Kuvake" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "Nimi" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "Järjestelmän käyttöoikeudet" + +#~ msgid "All available permissions in the system" +#~ msgstr "Kaikki järjestelmässä käytettävissä olevat käyttöoikeudet" + +#~ msgid "Back to Roles" +#~ msgstr "Takaisin Rooleihin" + +#~ msgid "permissions" +#~ msgstr "luvat" + +#~ msgid "No description available" +#~ msgstr "Kuvausta ei ole saatavilla" + +#~ msgid "About Permissions" +#~ msgstr "Tietoja käyttöoikeuksista" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Käyttöoikeudet määrittelevät, mitä toimintoja " +#~ "käyttäjät voivat suorittaa järjestelmässä. " +#~ "Nämä käyttöoikeudet on määritetty rooleille" +#~ " ja roolit käyttäjille. Tämä tarjoaa " +#~ "joustavan ja yksityiskohtaisen " +#~ "kulunvalvontajärjestelmän." + +#~ msgid "Edit Role" +#~ msgstr "Muokkaa roolia" + +#~ msgid "Create New Role" +#~ msgstr "Luo uusi rooli" + +#~ msgid "Role Name" +#~ msgstr "Roolin nimi" + +#~ msgid "A unique name for this role" +#~ msgstr "Ainutlaatuinen nimi tälle roolille" + +#~ msgid "Optional description of this role" +#~ msgstr "Valinnainen kuvaus tästä roolista" + +#~ msgid "Permissions" +#~ msgstr "Käyttöoikeudet" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Valitse käyttöoikeudet, jotka tällä roolilla pitäisi olla:" + +#~ msgid "Toggle All" +#~ msgstr "Vaihda kaikki päälle" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "Päivitä rooli" + +#~ msgid "Create Role" +#~ msgstr "Luo rooli" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Hallitse rooleja ja niiden käyttöoikeuksia" + +#~ msgid "View Permissions" +#~ msgstr "Näytä käyttöoikeudet" + +#~ msgid "Total Roles" +#~ msgstr "Roolit yhteensä" + +#~ msgid "System Roles" +#~ msgstr "Järjestelmän roolit" + +#~ msgid "Custom Roles" +#~ msgstr "Mukautetut roolit" + +#~ msgid "Assigned Users" +#~ msgstr "Määritetyt käyttäjät" + +#~ msgid "Type" +#~ msgstr "Tyyppi" + +#~ msgid "Default role" +#~ msgstr "Oletusrooli" + +#~ msgid "user" +#~ msgstr "käyttäjä" + +#~ msgid "No users" +#~ msgstr "Ei käyttäjiä" + +#~ msgid "Custom" +#~ msgstr "Mukautettu" + +#~ msgid "View" +#~ msgstr "Näytä" + +#~ msgid "Permissions for" +#~ msgstr "Käyttöoikeudet kohteelle" + +#~ msgid "No permissions assigned." +#~ msgstr "Käyttöoikeuksia ei ole määritetty." + +#~ msgid "No roles found." +#~ msgstr "Rooleja ei löytynyt." + +#~ msgid "About Roles & Permissions" +#~ msgstr "Tietoja rooleista ja käyttöoikeuksista" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "Roolit ovat käyttöoikeuskokoelmia, jotka " +#~ "voidaan määrittää käyttäjille. Järjestelmän " +#~ "roolit ovat ennalta määritettyjä, eikä " +#~ "niitä voi poistaa tai nimetä uudelleen," +#~ " mutta mukautettuja rooleja voidaan luoda" +#~ " tarpeitasi varten." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "Haluatko varmasti poistaa roolin" + +#~ msgid "Delete Role" +#~ msgstr "Poista rooli" + +#~ msgid "No description" +#~ msgstr "Ei kuvausta" + +#~ msgid "Role Information" +#~ msgstr "Roolitiedot" + +#~ msgid "System Role" +#~ msgstr "Järjestelmän rooli" + +#~ msgid "Custom Role" +#~ msgstr "Mukautettu rooli" + +#~ msgid "Total Permissions" +#~ msgstr "Kaikki käyttöoikeudet" + +#~ msgid "Created" +#~ msgstr "Luotu" + +#~ msgid "Users with this Role" +#~ msgstr "Käyttäjät, joilla on tämä rooli" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Tälle roolille ei ole vielä määritetty käyttäjiä." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "Tälle roolille ei ole määritetty käyttöoikeuksia." + +#~ msgid "Back to User" +#~ msgstr "Takaisin käyttäjälle" + +#~ msgid "Manage Roles for" +#~ msgstr "Hallinnoi rooleja" + +#~ msgid "Assign Roles" +#~ msgstr "Määritä roolit" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Valitse roolit, jotka tällä käyttäjällä " +#~ "tulisi olla. Käyttäjät perivät kaikki " +#~ "käyttöoikeudet heille määritetyiltä rooleilta." + +#~ msgid "Update Roles" +#~ msgstr "Päivitä roolit" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Nykyiset voimassa olevat käyttöoikeudet" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "" +#~ "Nämä ovat kaikki käyttöoikeudet, jotka " +#~ "käyttäjällä on tällä hetkellä rooliensa " +#~ "kautta:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "Ei käyttöoikeuksia (määritä rooleja lupien myöntämiseen)" + +#~ msgid "Create Webhook" +#~ msgstr "Luo Webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Muokkaa Webhookia" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Määritä webhook integraatioita varten" + +#~ msgid "Webhook URL" +#~ msgstr "Webhookin URL-osoite" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "URL-osoite, johon webhook-tapahtumat lähetetään" + +#~ msgid "Events" +#~ msgstr "Tapahtumat" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Valitse, mitkä tapahtumat käynnistävät tämän webhookin" + +#~ msgid "HTTP Method" +#~ msgstr "HTTP-menetelmä" + +#~ msgid "Content Type" +#~ msgstr "Sisältötyyppi" + +#~ msgid "Max Retries" +#~ msgstr "Max Uudelleenyritykset" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Uudelleenyrityksen viive (sekuntia)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Aikakatkaisu (sekuntia)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Luo salaisuus uudelleen" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "Varoitus: Salaisuuden uudelleen luominen mitätöi nykyisen salaisuuden" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Hallinnoi webhook-integraatioita" + +#~ msgid "URL" +#~ msgstr "URL-osoite" + +#~ msgid "Statistics" +#~ msgstr "Tilastot" + +#~ msgid "Total" +#~ msgstr "Kokonais" + +#~ msgid "No webhooks configured" +#~ msgstr "Webhookeja ei ole määritetty" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Luo ensimmäinen Webhook" + +#~ msgid "Webhook details" +#~ msgstr "Webhook-tiedot" + +#~ msgid "Test" +#~ msgstr "Testata" + +#~ msgid "Secret" +#~ msgstr "Salaisuus" + +#~ msgid "(truncated)" +#~ msgstr "(typistetty)" + +#~ msgid "Total Deliveries" +#~ msgstr "Toimitukset yhteensä" + +#~ msgid "Successful" +#~ msgstr "Onnistunut" + +#~ msgid "Last Delivery" +#~ msgstr "Viimeinen toimitus" + +#~ msgid "Recent Deliveries" +#~ msgstr "Viimeaikaiset toimitukset" + +#~ msgid "Event" +#~ msgstr "Tapahtuma" + +#~ msgid "Attempt" +#~ msgstr "Yrittää" + +#~ msgid "Response" +#~ msgstr "Vastaus" + +#~ msgid "Time" +#~ msgstr "Aika" + +#~ msgid "Retrying" +#~ msgstr "Yritetään uudelleen" + +#~ msgid "No deliveries yet" +#~ msgstr "Ei toimituksia vielä" + +#~ msgid "Send a test webhook event?" +#~ msgstr "Lähetetäänkö webhook-testitapahtuma?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "Test webhook lähetetty onnistuneesti!" + +#~ msgid "Error:" +#~ msgstr "Virhe:" + +#~ msgid "Unknown error" +#~ msgstr "Tuntematon virhe" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Virhe lähetettäessä testi webhookia:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Analyticsin hallintapaneeli" + +#~ msgid "Last 7 days" +#~ msgstr "Viimeiset 7 päivää" + +#~ msgid "Last 30 days" +#~ msgstr "Viimeiset 30 päivää" + +#~ msgid "Last 90 days" +#~ msgstr "Viimeiset 90 päivää" + +#~ msgid "Last year" +#~ msgstr "Viime vuonna" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Vie JSON-muodossa" + +#~ msgid "Export Charts" +#~ msgstr "Vie CSV" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Tärkeimmät tiedot ja oivallukset ajan seurannasta" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Keskimääräiset päivittäiset tunnit" + +#~ msgid "Regular" +#~ msgstr "Palata" + +#~ msgid "Overtime" +#~ msgstr "Aika" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Päivittäinen tuntitrendi" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Laskutettava vs ei-laskutettava" + +#~ msgid "Weekly Trends" +#~ msgstr "Viikon trendit" + +#~ msgid "Hours Forecast" +#~ msgstr "tuntia ennen" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Maksut ajan mittaan" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Tuntia kellonajan mukaan" + +#~ msgid "Project Efficiency" +#~ msgstr "Projektin tehokkuus" + +#~ msgid "User Performance" +#~ msgstr "Käyttäjän suorituskyky" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "Kaavioiden lataaminen epäonnistui. Yritä uudelleen." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "Kaavioiden päivittäminen epäonnistui. Yritä uudelleen." + +#~ msgid "Hour of Day" +#~ msgstr "Päivän tunti" + +#~ msgid "Revenue" +#~ msgstr "Tulot" + +#~ msgid "Forecast" +#~ msgstr "Nollaa" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "Viedä" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Tärkeimmät mittarit ja käyttökelpoiset oivallukset" + +#~ msgid "vs previous period" +#~ msgstr "edelliseen kauteen verrattuna" + +#~ msgid "of total" +#~ msgstr "kokonaismäärästä" + +#~ msgid "Potential Revenue" +#~ msgstr "Mahdolliset tulot" + +#~ msgid "Avg rate:" +#~ msgstr "Keskimääräinen hinta:" + +#~ msgid "Trend" +#~ msgstr "Trendi" + +#~ msgid "active projects" +#~ msgstr "aktiivisia projekteja" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Näkemyksiä ja suosituksia" + +#~ msgid "Cumulative" +#~ msgstr "Kumulatiivinen" + +#~ msgid "Billable Distribution" +#~ msgstr "Laskutettava jakelu" + +#~ msgid "Task Status Overview" +#~ msgstr "Tehtävän tilan yleiskatsaus" + +#~ msgid "Tasks Completed" +#~ msgstr "Tehtävät suoritettu" + +#~ msgid "In Progress" +#~ msgstr "Käynnissä" + +#~ msgid "To Do" +#~ msgstr "Tehtävää" + +#~ msgid "Revenue by Project" +#~ msgstr "Tulot projektin mukaan" + +#~ msgid "Payments Over Time" +#~ msgstr "Maksut ajan mittaan" + +#~ msgid "Payment Methods" +#~ msgstr "Maksutavat" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Tulot vs maksut" + +#~ msgid "Collection Rate" +#~ msgstr "Keräysprosentti" + +#~ msgid "Project Completion Rate" +#~ msgstr "Projektin valmistumisaste" + +#~ msgid "Billable" +#~ msgstr "Laskutettava" + +#~ msgid "Non-Billable" +#~ msgstr "Ei laskutettavissa" + +#~ msgid "Completed" +#~ msgstr "Valmis" + +#~ msgid "Cancelled" +#~ msgstr "Peruutettu" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Valmistumisaste (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Mobiilitilastojen yleiskatsaus" + +#~ msgid "Daily Avg" +#~ msgstr "Päivittäinen keskim" + +#~ msgid "Daily Hours" +#~ msgstr "Päivittäiset tunnit" + +#~ msgid "Top Projects" +#~ msgstr "Huippuprojektit" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "Ajan sisääntulo" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "tuntia" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "Hyväksyä" + +#~ msgid "Reject" +#~ msgstr "Hylätä" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "Hyväksynyt" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "Lähetä kommentti" + +#~ msgid "Approval comment" +#~ msgstr "Lähetä kommentti" + +#~ msgid "Rejection reason" +#~ msgstr "Hylkäämisen syy" + +#~ msgid "Track who changed what and when" +#~ msgstr "Seuraa kuka muutti mitä ja milloin" + +#~ msgid "Filters" +#~ msgstr "Suodattimet" + +#~ msgid "Entity Type" +#~ msgstr "Entiteettityyppi" + +#~ msgid "All Types" +#~ msgstr "Kaikki tyypit" + +#~ msgid "Entity ID" +#~ msgstr "Entiteetin tunnus" + +#~ msgid "All Users" +#~ msgstr "Kaikki käyttäjät" + +#~ msgid "Action" +#~ msgstr "Toiminta" + +#~ msgid "All Actions" +#~ msgstr "Kaikki toiminnot" + +#~ msgid "Updated" +#~ msgstr "Päivitetty" + +#~ msgid "Deleted" +#~ msgstr "Poistettu" + +#~ msgid "Time Range" +#~ msgstr "Aikaväli" + +#~ msgid "Filter" +#~ msgstr "Suodattaa" + +#~ msgid "Timestamp" +#~ msgstr "Aikaleima" + +#~ msgid "Entity" +#~ msgstr "Entiteetti" + +#~ msgid "Field" +#~ msgstr "Ala" + +#~ msgid "Change" +#~ msgstr "Muuttaa" + +#~ msgid "Reason" +#~ msgstr "Syy" + +#~ msgid "Change Information" +#~ msgstr "Muuta tietoja" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "Pyydä tietoja" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "Turvallisuus" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (yrityksen todennus)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "Salasanan tulee olla vähintään 8 merkkiä pitkä" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "Portaalin salasana" + +#~ msgid "Reset your password" +#~ msgstr "Aseta salasanasi" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "Ei käyttäjätunnuksia tai sähköpostiosoitteita" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "Lähetä testisähköposti" + +#~ msgid "Back to sign in" +#~ msgstr "Takaisin järjestelmänvalvojaan" + +#~ msgid "Login" +#~ msgstr "Kirjaudu sisään" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Seuraa aikaa. Pysy järjestyksessä." + +#~ msgid "Sign in to your account" +#~ msgstr "Kirjaudu tilillesi" + +#~ msgid "Demo credentials" +#~ msgstr "Tuotteen tiedot" + +#~ msgid "Forgot your password?" +#~ msgstr "Aseta salasanasi" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "Todennusmenetelmä" + +#~ msgid "Sign in" +#~ msgstr "Kirjaudu sisään" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "Vinkki: Luo tili antamalla uusi käyttäjätunnus." + +#~ msgid "Or continue with" +#~ msgstr "Tai jatka eteenpäin" + +#~ msgid "Single Sign-On" +#~ msgstr "Kertakirjautuminen" + +#~ msgid "Edit Profile" +#~ msgstr "Muokkaa profiilia" + +#~ msgid "Member Since" +#~ msgstr "Jäsen vuodesta" + +#~ msgid "Reset password" +#~ msgstr "Aseta salasana" + +#~ msgid "Choose a new password" +#~ msgstr "Aseta salasana" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Aseta salasana asiakasportaalitilillesi" + +#~ msgid "New password" +#~ msgstr "Aseta salasana" + +#~ msgid "At least 8 characters" +#~ msgstr "Salasanan tulee olla vähintään 8 merkkiä pitkä" + +#~ msgid "Confirm password" +#~ msgstr "Vahvista salasana" + +#~ msgid "Repeat your new password" +#~ msgstr "Aseta salasanasi" + +#~ msgid "Update password" +#~ msgstr "Aseta salasana" + +#~ msgid "Enter authentication code" +#~ msgstr "Todennusmenetelmä" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "Koodi" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "Asiakasportaalin käyttöoikeus ei ole käytössä tililläsi." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "Ei käytössä" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Luotu koodi" + +#~ msgid "Enable 2FA" +#~ msgstr "Käytössä" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Budjettihälytykset ja ennusteet" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "Tarkkaile projektin budjetteja ja ennakoi valmistumista" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Hyväksymättömät hälytykset" + +#~ msgid "Critical Alerts" +#~ msgstr "Kriittiset hälytykset" + +#~ msgid "Projects with Budgets" +#~ msgstr "Projektit budjeteilla" + +#~ msgid "Warning Alerts" +#~ msgstr "Varoitusilmoitukset" + +#~ msgid "Active Alerts" +#~ msgstr "Aktiiviset hälytykset" + +#~ msgid "Acknowledge" +#~ msgstr "Tunnusta" + +#~ msgid "Project Budget Status" +#~ msgstr "Projektin budjetin tila" + +#~ msgid "Budget" +#~ msgstr "Budjetti" + +#~ msgid "Consumed" +#~ msgstr "Kulutettu" + +#~ msgid "Remaining" +#~ msgstr "Jäljellä" + +#~ msgid "Progress" +#~ msgstr "Edistyminen" + +#~ msgid "over" +#~ msgstr "yli" + +#~ msgid "Over Budget" +#~ msgstr "Yli budjetin" + +#~ msgid "Critical" +#~ msgstr "Kriittinen" + +#~ msgid "Healthy" +#~ msgstr "Terve" + +#~ msgid "No projects with budgets found" +#~ msgstr "Budjetteja sisältäviä projekteja ei löytynyt" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Hälytys kuitattu onnistuneesti" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "Hälytyksen kuittaus epäonnistui" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Budjetin analyysi ja ennustaminen" + +#~ msgid "Back to Dashboard" +#~ msgstr "Takaisin hallintapaneeliin" + +#~ msgid "View Project" +#~ msgstr "Näytä projekti" + +#~ msgid "Total Budget" +#~ msgstr "Kokonaisbudjetti" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Palamisnopeuden analyysi" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Päivittäinen palamisnopeus" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Viikoittainen palamisnopeus" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Kuukausittainen palamisprosentti" + +#~ msgid "Period Total" +#~ msgstr "Jakso yhteensä" + +#~ msgid "Based on last" +#~ msgstr "Viimeisen perusteella" + +#~ msgid "days" +#~ msgstr "päivää" + +#~ msgid "No burn rate data available" +#~ msgstr "Palamisnopeustietoja ei ole saatavilla" + +#~ msgid "Completion Estimate" +#~ msgstr "Valmistumisarvio" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Arvioitu valmistumispäivä" + +#~ msgid "days remaining" +#~ msgstr "päivää jäljellä" + +#~ msgid "Confidence Level" +#~ msgstr "Luottamustaso" + +#~ msgid "No completion estimate available" +#~ msgstr "Valmistumisarviota ei ole saatavilla" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Kustannustrendianalyysi" + +#~ msgid "Average" +#~ msgstr "Keskimäärin" + +#~ msgid "Resource Allocation" +#~ msgstr "Resurssien allokointi" + +#~ msgid "Total Cost" +#~ msgstr "Kokonaiskustannukset" + +#~ msgid "Hourly Rate" +#~ msgstr "Tuntihinta" + +#~ msgid "Team Member" +#~ msgstr "Joukkueen jäsen" + +#~ msgid "Cost" +#~ msgstr "Maksaa" + +#~ msgid "Hours %" +#~ msgstr "Tuntia %" + +#~ msgid "Cost %" +#~ msgstr "Hinta %" + +#~ msgid "Entries" +#~ msgstr "merkinnät" + +#~ msgid "Date & Time" +#~ msgstr "Päivämäärä ja aika" + +#~ msgid "Location" +#~ msgstr "Sijainti" + +#~ msgid "Reminder" +#~ msgstr "Muistutus" + +#~ msgid "minutes before" +#~ msgstr "minuuttia ennen" + +#~ msgid "hours before" +#~ msgstr "tuntia ennen" + +#~ msgid "days before" +#~ msgstr "päivää ennen" + +#~ msgid "Recurring" +#~ msgstr "Toistuva" + +#~ msgid "Until" +#~ msgstr "Kunnes" + +#~ msgid "Last Updated" +#~ msgstr "Viimeksi päivitetty" + +#~ msgid "Back to Calendar" +#~ msgstr "Takaisin kalenteriin" + +#~ msgid "Delete Event" +#~ msgstr "Poista tapahtuma" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Haluatko varmasti poistaa tämän tapahtuman?" +#~ " Tätä toimintoa ei voi kumota." + +#~ msgid "Edit Event" +#~ msgstr "Muokkaa tapahtumaa" + +#~ msgid "New Event" +#~ msgstr "Uusi Tapahtuma" + +#~ msgid "Title" +#~ msgstr "Otsikko" + +#~ msgid "Start Date" +#~ msgstr "Aloituspäivämäärä" + +#~ msgid "Start Time" +#~ msgstr "Aloitusaika" + +#~ msgid "End Date" +#~ msgstr "Päättymispäivämäärä" + +#~ msgid "End Time" +#~ msgstr "Päättymisaika" + +#~ msgid "All Day Event" +#~ msgstr "Koko päivän tapahtuma" + +#~ msgid "Event Type" +#~ msgstr "Tapahtuman tyyppi" + +#~ msgid "Meeting" +#~ msgstr "Kokous" + +#~ msgid "Appointment" +#~ msgstr "Nimittäminen" + +#~ msgid "Deadline" +#~ msgstr "Määräaika" + +#~ msgid "-- None --" +#~ msgstr "-- Ei yhtään --" + +#~ msgid "No reminder" +#~ msgstr "Ei muistutusta" + +#~ msgid "5 minutes before" +#~ msgstr "5 minuuttia ennen" + +#~ msgid "15 minutes before" +#~ msgstr "15 minuuttia ennen" + +#~ msgid "30 minutes before" +#~ msgstr "30 minuuttia ennen" + +#~ msgid "1 hour before" +#~ msgstr "1 tunti ennen" + +#~ msgid "1 day before" +#~ msgstr "1 päivää ennen" + +#~ msgid "Color" +#~ msgstr "Väri" + +#~ msgid "Choose a color for this event" +#~ msgstr "Valitse väri tälle tapahtumalle" + +#~ msgid "Private Event" +#~ msgstr "Yksityinen Tapahtuma" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Yksityistapahtumat näkyvät vain sinulle" + +#~ msgid "Recurring Event" +#~ msgstr "Toistuva tapahtuma" + +#~ msgid "This is a recurring event" +#~ msgstr "Tämä on toistuva tapahtuma" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Toistuva kuvio" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Käytä RRULE-muotoa (esim. FREQ=WEEKLY;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Toistumisen lopetuspäivämäärä" + +#~ msgid "Update Event" +#~ msgstr "Päivitä tapahtuma" + +#~ msgid "Create Event" +#~ msgstr "Luo tapahtuma" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Tarkastele ja hallinnoi tapahtumia, tehtäviä ja aikamerkintöjä" + +#~ msgid "Day" +#~ msgstr "Päivä" + +#~ msgid "Week" +#~ msgstr "Viikko" + +#~ msgid "Month" +#~ msgstr "Kuukausi" + +#~ msgid "Today" +#~ msgstr "Tänään" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "Ladataan kalenteria..." + +#~ msgid "Event Details" +#~ msgstr "Tapahtuman tiedot" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "Muokkaa asiakasmuistiota" + +#~ msgid "Back to Client" +#~ msgstr "Takaisin asiakkaalle" + +#~ msgid "Client:" +#~ msgstr "Asiakas:" + +#~ msgid "Created on" +#~ msgstr "Luotu" + +#~ msgid "Last edited on" +#~ msgstr "Viimeksi muokattu" + +#~ msgid "Note Content" +#~ msgstr "Huomautus Sisältö" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Sisäinen huomautus näkyy vain tiimillesi." + +#~ msgid "Mark as important" +#~ msgstr "Merkitse tärkeäksi" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "Asiakasportaali" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "Näytä tiedot" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "Odottaa" + +#~ msgid "Approved" +#~ msgstr "Hyväksytty" + +#~ msgid "Rejected" +#~ msgstr "Hylätty" + +#~ msgid "All" +#~ msgstr "Kaikki" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "Näytä tiedot" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "Hyväksyntätila" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Hyväksyntää pyydetty" + +#~ msgid "An approval was updated." +#~ msgstr "Projekteja ei ole päivitetty" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "Tervetuloa, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "Mukauta pikakuvakkeita" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "Tilastot" + +#~ msgid "Pending actions" +#~ msgstr "Järjestelmänvalvojan osiot" + +#~ msgid "Recent invoices" +#~ msgstr "Viimeaikaiset laskut" + +#~ msgid "Recent time entries" +#~ msgstr "Viimeaikaiset aikamerkinnät" + +#~ msgid "Select at least one widget." +#~ msgstr "Valitse asiakas..." + +#~ msgid "Failed to save." +#~ msgstr "Ajastimen pysäyttäminen epäonnistui" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "Siirry Dashboardiin" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "Mene takaisin" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "Laskun tiedot" + +#~ msgid "Issue Date" +#~ msgstr "Julkaisupäivämäärä" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "Tämä lasku on %(days)d päivää myöhässä." + +#~ msgid "Invoice Items" +#~ msgstr "Laskun erät" + +#~ msgid "Quantity" +#~ msgstr "Määrä" + +#~ msgid "Unit Price" +#~ msgstr "Yksikköhinta" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "Takaisin laskuihin" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "Laskut kohteelle %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "Palkaton" + +#~ msgid "Overdue" +#~ msgstr "Myöhässä" + +#~ msgid "Amount" +#~ msgstr "Määrä" + +#~ msgid "days overdue" +#~ msgstr "päivää myöhässä" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "Prioriteetti" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "Avata" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "Asiakasportaaliin kirjautuminen" + +#~ msgid "View your projects and invoices" +#~ msgstr "Tarkastele projektejasi ja laskujasi" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Kirjaudu sisään asiakasportaaliin" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "Anna portaalin tunnistetiedot päästäksesi " +#~ "käsiksi projekteihisi ja laskuihisi" + +#~ msgid "portal_username" +#~ msgstr "portaalin_käyttäjänimi" + +#~ msgid "Enter your password" +#~ msgstr "Kirjoita salasanasi" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "Matala" + +#~ msgid "Medium" +#~ msgstr "Keskikokoinen" + +#~ msgid "High" +#~ msgstr "Korkea" + +#~ msgid "Urgent" +#~ msgstr "Kiireellinen" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "Kommentit" + +#~ msgid "Add Comment" +#~ msgstr "Lisää kommentti" + +#~ msgid "Your Comment" +#~ msgstr "Sinun kommenttisi" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "Lähetä kommentti" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "Takaisin Projekteihin" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "Projektit käyttäjälle %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "Lainauksen tiedot" + +#~ msgid "Valid Until" +#~ msgstr "Voimassa asti" + +#~ msgid "This quote has expired." +#~ msgstr "Tämä lainaus on vanhentunut." + +#~ msgid "Quote Items" +#~ msgstr "Lainauskohteet" + +#~ msgid "SKU" +#~ msgstr "SKU" + +#~ msgid "Terms & Conditions" +#~ msgstr "Ehdot" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "Hyväksy tarjous" + +#~ msgid "Reject Quote" +#~ msgstr "Hylkää lainaus" + +#~ msgid "Back to Quotes" +#~ msgstr "Takaisin lainauksiin" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "Lainaukset asiakkaalle %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "Vanhentunut" + +#~ msgid "No quotes found." +#~ msgstr "Lainauksia ei löytynyt." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "Projektikoodi" + +#~ msgid "Est. / Budget" +#~ msgstr "Yli budjetin" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "Yhteenveto" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "Kokonaismäärä" + +#~ msgid "No tasks yet." +#~ msgstr "Tehtäviä ei ole valittu" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Ei toimintaa viimeisen 30 päivän aikana." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "Aseta salasana" + +#~ msgid "Set your password to get started" +#~ msgstr "Aloita määrittämällä salasanasi" + +#~ msgid "Set Your Password" +#~ msgstr "Aseta salasanasi" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Aseta salasana asiakasportaalitilillesi" + +#~ msgid "Confirm Password" +#~ msgstr "Vahvista salasana" + +#~ msgid "Confirm your password" +#~ msgstr "Vahvista salasanasi" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "%(client_name)s-projektien aikamerkinnät" + +#~ msgid "All Projects" +#~ msgstr "Kaikki projektit" + +#~ msgid "From Date" +#~ msgstr "Päivämäärästä alkaen" + +#~ msgid "To Date" +#~ msgstr "Päivämäärään" + +#~ msgid "Total entries" +#~ msgstr "Tuloksia yhteensä" + +#~ msgid "Total hours" +#~ msgstr "Tunteja yhteensä" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "Viimeaikaiset laskut" + +#~ msgid "View All" +#~ msgstr "Näytä kaikki" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "Laskut yhteensä" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "Viimeaikaiset aikamerkinnät" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "Vie CSV-muotoon" + +#~ msgid "Create Client" +#~ msgstr "Luo asiakas" + +#~ msgid "Back to Clients" +#~ msgstr "Takaisin asiakkaisiin" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "Lisää uusi asiakas hallinnoimaan liittyviä projekteja ja laskutusta." + +#~ msgid "Enter client name" +#~ msgstr "Anna asiakkaan nimi" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Oletustuntihinta" + +#~ msgid "e.g. 75.00" +#~ msgstr "esim. 75.00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Tämä hinta täytetään automaattisesti luotaessa" +#~ " projekteja tälle asiakkaalle" + +#~ msgid "Supports Markdown" +#~ msgstr "Tukee Markdownia" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Lyhyt kuvaus tilaajan tai projektin laajuudesta" + +#~ msgid "Contact Person" +#~ msgstr "Yhteyshenkilö" + +#~ msgid "Primary contact name" +#~ msgstr "Ensisijaisen yhteyshenkilön nimi" + +#~ msgid "contact@client.com" +#~ msgstr "contact@client.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Kuukausittaiset prepaid-tunnit" + +#~ msgid "e.g. 50" +#~ msgstr "esim. 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "Jätä tyhjäksi, jos asiakkaalla ei ole ennakkoon maksettua varausta." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Prepaid Reset Day" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Kuukauden päivä, jolloin prepaid-tunnit nollataan (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Asiakkaan osoite" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "Valitse selkeä, kuvaava nimi asiakasorganisaatiolle." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Aseta tälle asiakkaalle vakiotuntihinta. Tämä" +#~ " täyttää automaattisesti uusia projekteja " +#~ "luotaessa." + +#~ msgid "Contact Information" +#~ msgstr "Yhteystiedot" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "Lisää yhteystiedot helpottaaksesi viestintää ja kirjaamista." + +#~ msgid "Prepaid Hours" +#~ msgstr "Prepaid-tunnit" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Määritä kuukausittaiset tunnit ja " +#~ "nollauspäivä, jos tällä asiakkaalla on " +#~ "säilytin tai ennakkoon maksettu paketti." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "Anna konteksti asiakassuhteesta tai tyypillisistä projektityypeistä." + +#~ msgid "Edit Client" +#~ msgstr "Muokkaa asiakasta" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Salli portaalin käyttö tälle asiakkaalle. " +#~ "Asiakkaat voivat kirjautua sisään omilla " +#~ "tunnuksillaan nähdäkseen projekteja, laskuja " +#~ "ja aikamerkintöjä." + +#~ msgid "Enable Client Portal" +#~ msgstr "Ota asiakasportaali käyttöön" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "Portaalin käyttäjätunnus" + +#~ msgid "Unique username for portal login" +#~ msgstr "Ainutlaatuinen käyttäjätunnus portaaliin kirjautumiseen" + +#~ msgid "Portal Password" +#~ msgstr "Portaalin salasana" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "Jätä tyhjäksi säilyttääksesi nykyisen salasanan" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "Aseta uusi salasana tai jätä tyhjäksi pysyäksesi ajan tasalla" + +#~ msgid "Current portal username" +#~ msgstr "Nykyinen portaalin käyttäjätunnus" + +#~ msgid "Update Client" +#~ msgstr "Päivitä asiakas" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Lähetä salasanan asetussähköposti" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Lähetä sähköposti osoitteeseen %(email)s, " +#~ "jossa on linkki portaalin salasanan " +#~ "asettamiseen." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "Sähköpostiosoite vaaditaan salasanan " +#~ "asetussähköpostin lähettämiseen. Aseta asiakkaan " +#~ "sähköpostiosoite yllä." + +#~ msgid "Client Statistics" +#~ msgstr "Asiakastilastot" + +#~ msgid "Est. Total Cost" +#~ msgstr "Arvioitu Kokonaiskustannukset" + +#~ msgid "Filter Clients" +#~ msgstr "Suodata asiakkaat" + +#~ msgid "Toggle Filters" +#~ msgstr "Vaihda suodattimet" + +#~ msgid "Hide Filters" +#~ msgstr "Piilota suodattimet" + +#~ msgid "Show Filters" +#~ msgstr "Näytä suodattimet" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "Tälle projektille ei löytynyt laskuttamattomia aikamerkintöjä." + +#~ msgid "No unbilled time" +#~ msgstr "Laskuttamattomat aikamerkinnät" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Laskun erät" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "Merkitäänkö asiakas ei-aktiiviseksi?" + +#~ msgid "Change Client Status" +#~ msgstr "Muuta asiakkaan tilaa" + +#~ msgid "Mark Inactive" +#~ msgstr "Merkitse ei-aktiiviseksi" + +#~ msgid "Activate client?" +#~ msgstr "Aktivoi asiakas?" + +#~ msgid "Activate Client" +#~ msgstr "Aktivoi asiakas" + +#~ msgid "Delete Client" +#~ msgstr "Poista asiakas" + +#~ msgid "Client details and associated projects." +#~ msgstr "Aktiiviset projektit kokonaisuudessaan" + +#~ msgid "Manage" +#~ msgstr "Hallitse" + +#~ msgid "Primary" +#~ msgstr "Ensisijainen" + +#~ msgid "more contact(s)" +#~ msgstr "lisää yhteystietoja" + +#~ msgid "No contacts yet" +#~ msgstr "Ei vielä yhteystietoja" + +#~ msgid "Add Contact" +#~ msgstr "Lisää yhteystieto" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Vanhat yhteystiedot" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "Suunnitelmaan sisältyy %(hours)s tuntia sykliä" +#~ " kohden. Nollautuu päivänä %(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "Nykyisen syklin aloitus" + +#~ msgid "Remaining hours" +#~ msgstr "Jäljellä olevat tunnit" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "Consumed this cycle" +#~ msgstr "Kulutettu tämä sykli" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "Asiakas näkyvissä" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "Arkistoitu" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "Sisäiset huomautukset" + +#~ msgid "Add Note" +#~ msgstr "Lisää huomautus" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Lisää sisäinen huomautus tästä asiakkaasta..." + +#~ msgid "Save Note" +#~ msgstr "Tallenna muistiinpano" + +#~ msgid "edited" +#~ msgstr "muokattu" + +#~ msgid "Important" +#~ msgstr "Tärkeää" + +#~ msgid "Unmark" +#~ msgstr "Poista merkintä" + +#~ msgid "Mark Important" +#~ msgstr "Merkitse tärkeäksi" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Ei muistiinpanoja vielä. Lisää muistiinpano," +#~ " jotta voit seurata tätä asiakasta " +#~ "koskevia tärkeitä tietoja." + +#~ msgid "Estimated total" +#~ msgstr "Arvioitu arvo" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Luo lasku" + +#~ msgid "Create invoice" +#~ msgstr "Luo lasku" + +#~ msgid "Could not create invoice." +#~ msgstr "Luo lasku" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "Haluatko varmasti poistaa tämän muistiinpanon?" + +#~ msgid "Delete Note" +#~ msgstr "Poista huomautus" + +#~ msgid "Edited on" +#~ msgstr "Muokattu" + +#~ msgid "Reply" +#~ msgstr "Vastata" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "Kirjoita vastauksesi..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Jaa ajatuksesi, päivityksesi tai kysymyksesi..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "Voit muotoilla kommenttisi rivinvaihtojen avulla." + +#~ msgid "Add Image" +#~ msgstr "Lisää kuva" + +#~ msgid "No comments yet" +#~ msgstr "Ei vielä kommentteja" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "Aloita keskustelu lisäämällä ensimmäinen kommentti." + +#~ msgid "Add First Comment" +#~ msgstr "Lisää ensimmäinen kommentti" + +#~ msgid "Edit Comment" +#~ msgstr "Muokkaa kommenttia" + +#~ msgid "Back" +#~ msgstr "Takaisin" + +#~ msgid "Editing comment on:" +#~ msgstr "Muokataan kommenttia:" + +#~ msgid "Originally posted on" +#~ msgstr "Alunperin lähetetty" + +#~ msgid "Comment Content" +#~ msgstr "Kommentoi sisältöä" + +#~ msgid "All Activities" +#~ msgstr "Kaikki aktiviteetit" + +#~ msgid "Time Templates" +#~ msgstr "Aikamallit" + +#~ msgid "No recent activity" +#~ msgstr "Ei viimeaikaista toimintaa" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "Toiminta näkyy tässä työskennellessäsi" + +#~ msgid "Load More" +#~ msgstr "Lataa lisää" + +#~ msgid "Failed to load activities" +#~ msgstr "Toimintojen lataaminen epäonnistui" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "Valitse asiakas..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "Tehty" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "TimeTrackerin ohjekeskus" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "Kotiin" + +#~ msgid "Pagination" +#~ msgstr "Tiedot" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "Soittaa" + +#~ msgid "Message" +#~ msgstr "Viesti" + +#~ msgid "Direction" +#~ msgstr "Suunta" + +#~ msgid "Outbound" +#~ msgstr "Lähtevä" + +#~ msgid "Inbound" +#~ msgstr "Saapuva" + +#~ msgid "Subject" +#~ msgstr "Aihe" + +#~ msgid "Scheduled" +#~ msgstr "Aikataulutettu" + +#~ msgid "Follow-up Date" +#~ msgstr "Seurantapäivämäärä" + +#~ msgid "Content/Notes" +#~ msgstr "Sisältö/huomautukset" + +#~ msgid "Save Communication" +#~ msgstr "Tallenna viestintä" + +#~ msgid "First Name" +#~ msgstr "Etunimi" + +#~ msgid "Last Name" +#~ msgstr "Sukunimi" + +#~ msgid "Mobile" +#~ msgstr "mobiili" + +#~ msgid "Department" +#~ msgstr "osasto" + +#~ msgid "Contact" +#~ msgstr "Ota yhteyttä" + +#~ msgid "Billing" +#~ msgstr "Laskutus" + +#~ msgid "Technical" +#~ msgstr "Tekninen" + +#~ msgid "Set as primary contact" +#~ msgstr "Aseta ensisijaiseksi yhteyshenkilöksi" + +#~ msgid "Tags" +#~ msgstr "Tunnisteet" + +#~ msgid "Save Contact" +#~ msgstr "Tallenna yhteystieto" + +#~ msgid "Set Primary" +#~ msgstr "Aseta ensisijainen" + +#~ msgid "No contacts found" +#~ msgstr "Yhteystietoja ei löytynyt" + +#~ msgid "Add First Contact" +#~ msgstr "Lisää ensimmäinen yhteystieto" + +#~ msgid "Primary Contact" +#~ msgstr "Ensisijainen yhteyshenkilö" + +#~ msgid "Communication History" +#~ msgstr "Viestintähistoria" + +#~ msgid "Add Communication" +#~ msgstr "Lisää viestintä" + +#~ msgid "No communications recorded" +#~ msgstr "Viestintää ei tallennettu" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "Aktivoida" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "Sopimuksen nimi" + +#~ msgid "Select Client" +#~ msgstr "Valitse Asiakas" + +#~ msgid "Select Contact" +#~ msgstr "Valitse Yhteystiedot" + +#~ msgid "Stage" +#~ msgstr "Vaihe" + +#~ msgid "Deal Value" +#~ msgstr "Sopimuksen arvo" + +#~ msgid "Win Probability" +#~ msgstr "Voiton todennäköisyys" + +#~ msgid "Expected Close Date" +#~ msgstr "Odotettu sulkemispäivä" + +#~ msgid "Related Quote" +#~ msgstr "Aiheeseen liittyvä lainaus" + +#~ msgid "Select Quote" +#~ msgstr "Valitse Lainaus" + +#~ msgid "Save Deal" +#~ msgstr "Tallenna tarjous" + +#~ msgid "Won" +#~ msgstr "Voitti" + +#~ msgid "Lost" +#~ msgstr "Kadonnut" + +#~ msgid "All Stages" +#~ msgstr "Kaikki vaiheet" + +#~ msgid "Value" +#~ msgstr "Arvo" + +#~ msgid "Probability" +#~ msgstr "Todennäköisyys" + +#~ msgid "Expected Close" +#~ msgstr "Odotettu sulkeutuva" + +#~ msgid "No deals found" +#~ msgstr "Tarjouksia ei löytynyt" + +#~ msgid "Create First Deal" +#~ msgstr "Luo ensimmäinen tarjous" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "Aiheeseen liittyvä projekti" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "Maalihistoria" + +#~ msgid "View full history" +#~ msgstr "Näytä täydelliset tiedot" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "Sinut Mainittiin" + +#~ msgid "View Task & Reply" +#~ msgstr "Näytä tehtävä ja vastaus" + +#~ msgid "Invoice" +#~ msgstr "Laskuttaa" + +#~ msgid "Invoice Overdue" +#~ msgstr "Lasku erääntynyt" + +#~ msgid "View Invoice" +#~ msgstr "Näytä lasku" + +#~ msgid "Quote" +#~ msgstr "Lainata" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Tarjouksen hyväksyntä hylätty" + +#~ msgid "View Quote" +#~ msgstr "Näytä lainaus" + +#~ msgid "Approval Requested" +#~ msgstr "Hyväksyntää pyydetty" + +#~ msgid "Review Quote" +#~ msgstr "Tarkista lainaus" + +#~ msgid "Quote Approved" +#~ msgstr "Lainaus hyväksytty" + +#~ msgid "Quote Expired" +#~ msgstr "Lainaus vanhentunut" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "Lainaus vanhenee pian" + +#~ msgid "Quote Sent" +#~ msgstr "Lainaus lähetetty" + +#~ msgid "Task Assignment" +#~ msgstr "Tehtävän määritys" + +#~ msgid "View Task" +#~ msgstr "Näytä tehtävä" + +#~ msgid "Test Details" +#~ msgstr "Testin tiedot" + +#~ msgid "Your Weekly Summary" +#~ msgstr "Viikkoyhteenveto" + +#~ msgid "400 Bad Request" +#~ msgstr "400 Huono pyyntö" + +#~ msgid "Invalid Request" +#~ msgstr "Virheellinen pyyntö" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "Tekemäsi pyyntö on virheellinen tai " +#~ "sisältää virheitä. Tämä voi johtua " +#~ "seuraavista:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Lomaketiedot puuttuvat tai ovat virheellisiä" + +#~ msgid "Malformed request parameters" +#~ msgstr "Väärin muotoillut pyyntöparametrit" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "" +#~ "Sinulla ei ole lupaa käyttää tätä " +#~ "resurssia. Tämä voi johtua seuraavista:" + +#~ msgid "Insufficient privileges" +#~ msgstr "Riittämättömät oikeudet" + +#~ msgid "Not logged in" +#~ msgstr "Ei kirjautunut sisään" + +#~ msgid "Resource access restrictions" +#~ msgstr "Resurssien käyttörajoitukset" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "Jotain meni vikaan meidän päässämme. Yritä myöhemmin uudelleen." + +#~ msgid "Try Again" +#~ msgstr "Yritä uudelleen" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Pyyntöäsi käsiteltäessä tapahtui virhe." + +#~ msgid "Refresh Page" +#~ msgstr "Päivitä sivu" + +#~ msgid "Go to Login" +#~ msgstr "Siirry kohtaan Kirjautuminen" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "esim. matkat, ruokailut, toimistotarvikkeet" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "esim. MATKAT, Ateriat" + +#~ msgid "Brief description of this category..." +#~ msgstr "Lyhyt kuvaus tästä kategoriasta..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "esim. fa-taso, fa-astiat" + +#~ msgid "e.g., 19.00" +#~ msgstr "esim. 19.00" + +#~ msgid "Category" +#~ msgstr "Luokka" + +#~ msgid "Basic Information" +#~ msgstr "Perustiedot" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "esim. lento Berliiniin" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Lisätietoa kuluista..." + +#~ msgid "Select Category" +#~ msgstr "Luokka" + +#~ msgid "Amount Details" +#~ msgstr "Maksutiedot" + +#~ msgid "Association" +#~ msgstr "Sijainti" + +#~ msgid "Payment Details" +#~ msgstr "Maksutiedot" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "esim. Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "Lisätietoja" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Kuitin/laskun numero" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "esim. INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "esim. kokous, asiakastapaaminen, kiireellinen" + +#~ msgid "Additional notes..." +#~ msgstr "Lisähuomautuksia..." + +#~ msgid "Options" +#~ msgstr "Valinnainen" + +#~ msgid "Filter Expenses" +#~ msgstr "Suodatuskulut" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Poista valitut kulut" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Muuta valittujen kulujen tilaa" + +#~ msgid "Associated With" +#~ msgstr "Liittyy" + +#~ msgid "Reject Expense" +#~ msgstr "Hylkää kulut" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Selitä, miksi tämä kulu hylätään..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "Haluatko varmasti poistaa tämän kulun?" + +#~ msgid "Delete Expense" +#~ msgstr "Poista kulut" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "Tuo/Vie tiedot" + +#~ msgid "Import/Export" +#~ msgstr "Tuo/Vie" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Tuo tietoja muista aikaseurantalaitteista tai" +#~ " vie tietosi GDPR-yhteensopivuutta ja " +#~ "varmuuskopioita varten" + +#~ msgid "Import Data" +#~ msgstr "Tuo tiedot" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Tuo aikamerkinnät CSV-tiedostosta" + +#~ msgid "Choose CSV File" +#~ msgstr "Valitse CSV-tiedosto" + +#~ msgid "Download Template" +#~ msgstr "Lataa malli" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Tuo Toggl Trackista" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Tuo aikamerkinnät Toggl Trackista" + +#~ msgid "Import from Toggl" +#~ msgstr "Tuo Togglista" + +#~ msgid "Import from Harvest" +#~ msgstr "Tuonti Harvestista" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Tuo aikamerkinnät Harvestista" + +#~ msgid "Restore from Backup" +#~ msgstr "Palauta varmuuskopiosta" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "Tuo historia" + +#~ msgid "Export Data" +#~ msgstr "Vie tiedot" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Full Data Export (GDPR)" + +#~ msgid "Export all your personal data" +#~ msgstr "Vie kaikki henkilötietosi" + +#~ msgid "Export as JSON" +#~ msgstr "Vie JSON-muodossa" + +#~ msgid "Export as ZIP" +#~ msgstr "Vie ZIP-muodossa" + +#~ msgid "Filtered Export" +#~ msgstr "Suodatettu vienti" + +#~ msgid "Export specific data with filters" +#~ msgstr "Vie tiettyjä tietoja suodattimilla" + +#~ msgid "Export with Filters" +#~ msgstr "Vie suodattimilla" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "Luo koko tietokannan varmuuskopio" + +#~ msgid "Export History" +#~ msgstr "Vie historiaa" + +#~ msgid "API Token" +#~ msgstr "API-tunnus" + +#~ msgid "Workspace ID" +#~ msgstr "Työtilan tunnus" + +#~ msgid "Import" +#~ msgstr "Tuoda" + +#~ msgid "Account ID" +#~ msgstr "Tilin tunnus" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "Aika integraatio" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "Viime vuonna" + +#~ msgid "Last status" +#~ msgstr "Päivitä tila" + +#~ msgid "Credentials" +#~ msgstr "Yksityiskohdat" + +#~ msgid "Last error" +#~ msgstr "Viime vuonna" + +#~ msgid "Partial" +#~ msgstr "Osittainen" + +#~ msgid "Needs refresh" +#~ msgstr "Päivitä" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "Luo API-tunnus" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "Luo API-tunnus" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "Jätä tyhjäksi pitääksesi ajan tasalla" + +#~ msgid "Enter API secret" +#~ msgstr "Luo salaisuus uudelleen" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "Varastotuote" + +#~ msgid "Select Item" +#~ msgstr "Valitse kohde" + +#~ msgid "Warehouse" +#~ msgstr "Varasto" + +#~ msgid "Select Warehouse" +#~ msgstr "Valitse Varasto" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Säätömäärä" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Käytä positiivisia arvoja lisätäksesi varastoa" +#~ " ja negatiivisia arvoja pienentääksesi" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "esim. fyysisen laskennan korjaus, vauriot, löydetyt kohteet" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Lisätietoja tästä säädöstä" + +#~ msgid "Record Adjustment" +#~ msgstr "Record Adjustment" + +#~ msgid "All Warehouses" +#~ msgstr "Kaikki varastot" + +#~ msgid "All Items" +#~ msgstr "Kaikki kohteet" + +#~ msgid "Date From" +#~ msgstr "Päivämäärä alkaen" + +#~ msgid "Date To" +#~ msgstr "Päivämäärä -" + +#~ msgid "Item" +#~ msgstr "Tuote" + +#~ msgid "No adjustments found." +#~ msgstr "Säätöjä ei löytynyt." + +#~ msgid "On Hand" +#~ msgstr "Kädessä" + +#~ msgid "Reorder Point" +#~ msgstr "Järjestä piste uudelleen" + +#~ msgid "Shortfall" +#~ msgstr "Vaje" + +#~ msgid "Reorder Qty" +#~ msgstr "Uudelleentilausmäärä" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "" +#~ "Ei varoituksia alhaisista varastoista. Kaikki" +#~ " tuotteet ovat uudelleenjärjestelypisteen " +#~ "yläpuolella." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "Käytä positiivisia arvoja lisäyksiin, negatiivisia poistoihin" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "Liikkeen tyyppi" + +#~ msgid "Return" +#~ msgstr "Palata" + +#~ msgid "Waste" +#~ msgstr "Jätettä" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "esim. fyysisen laskennan korjaus" + +#~ msgid "Record Movement" +#~ msgstr "Record Movement" + +#~ msgid "Reference Type" +#~ msgstr "Viitetyyppi" + +#~ msgid "Manual" +#~ msgstr "Manuaalinen" + +#~ msgid "Unit Cost" +#~ msgstr "Yksikköhinta" + +#~ msgid "Reference" +#~ msgstr "Viite" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "Osakeliikettä ei löytynyt." + +#~ msgid "Supplier" +#~ msgstr "Toimittaja" + +#~ msgid "Select Supplier" +#~ msgstr "Valitse Toimittaja" + +#~ msgid "Order Date" +#~ msgstr "Tilauspäivämäärä" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Arvioitu toimituspäivä" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Huomautukset näkyvät toimittajalle" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Sisäiset huomautukset (ei näy toimittajalle)" + +#~ msgid "Items" +#~ msgstr "Tuotteet" + +#~ msgid "Add Item" +#~ msgstr "Lisää kohde" + +#~ msgid "Qty" +#~ msgstr "Määrä" + +#~ msgid "Supplier SKU" +#~ msgstr "Toimittaja SKU" + +#~ msgid "Create Purchase Order" +#~ msgstr "Luo ostotilaus" + +#~ msgid "Draft" +#~ msgstr "Luonnos" + +#~ msgid "Sent" +#~ msgstr "Lähetetty" + +#~ msgid "Confirmed" +#~ msgstr "Vahvistettu" + +#~ msgid "Received" +#~ msgstr "Vastaanotettu" + +#~ msgid "All Suppliers" +#~ msgstr "Kaikki toimittajat" + +#~ msgid "PO Number" +#~ msgstr "PO-numero" + +#~ msgid "Expected Delivery" +#~ msgstr "Odotettu toimitus" + +#~ msgid "No purchase orders found." +#~ msgstr "Ostotilauksia ei löytynyt." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "Haluatko varmasti peruuttaa tämän ostotilauksen?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "Haluatko varmasti poistaa tämän ostotilauksen?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Ostotilauksen tiedot" + +#~ msgid "Received Date" +#~ msgstr "Vastaanottopäivämäärä" + +#~ msgid "Quantity Ordered" +#~ msgstr "Tilattu määrä" + +#~ msgid "Quantity Received" +#~ msgstr "Vastaanotettu määrä" + +#~ msgid "Line Total" +#~ msgstr "Rivi yhteensä" + +#~ msgid "Shipping" +#~ msgstr "Toimitus" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Vastaanota ostotilaus" + +#~ msgid "Mark as Received" +#~ msgstr "Merkitse vastaanotetuksi" + +#~ msgid "No items in this purchase order." +#~ msgstr "Tässä ostotilauksessa ei ole tuotteita." + +#~ msgid "Total Items" +#~ msgstr "Tuotteita yhteensä" + +#~ msgid "Total Warehouses" +#~ msgstr "Varastot yhteensä" + +#~ msgid "Total Inventory Value" +#~ msgstr "Varaston kokonaisarvo" + +#~ msgid "Low Stock Items" +#~ msgstr "Alhaiset tuotteet" + +#~ msgid "Available Reports" +#~ msgstr "Saatavilla olevat raportit" + +#~ msgid "Stock Valuation" +#~ msgstr "Osakkeen arvostus" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Tarkastele varaston arvoa varastoittain" + +#~ msgid "Movement History" +#~ msgstr "Liikehistoria" + +#~ msgid "Detailed movement log" +#~ msgstr "Yksityiskohtainen liikeloki" + +#~ msgid "Turnover Analysis" +#~ msgstr "Liikevaihdon analyysi" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Varaston kiertonopeus" + +#~ msgid "Low Stock Report" +#~ msgstr "Alhainen varastoraportti" + +#~ msgid "Items below reorder point" +#~ msgstr "Kohteet uudelleenjärjestyskohdan alapuolella" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "" +#~ "Löytyi %(count)s kohdetta niiden " +#~ "uudelleenjärjestelypisteen alapuolelta." + +#~ msgid "Quantity On Hand" +#~ msgstr "Määrä käsillä" + +#~ msgid "Reorder Quantity" +#~ msgstr "Tilaa määrä uudelleen" + +#~ msgid "Create PO" +#~ msgstr "Luo ostotilaus" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Kaikki varastotasot ovat hyviä" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Yksikään kohde ei ole tällä hetkellä tilauspisteensä alapuolella." + +#~ msgid "No movements found." +#~ msgstr "Liikkeitä ei löytynyt." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "Kiertonopeus kertoo kuinka monta kertaa " +#~ "varasto myydään ja vaihdetaan vuoden " +#~ "aikana. Korkeammat hinnat tarkoittavat " +#~ "nopeammin liikkuvia kohteita." + +#~ msgid "Total Sold" +#~ msgstr "Yhteensä myyty" + +#~ msgid "Avg Stock Level" +#~ msgstr "Keskimääräinen varastotaso" + +#~ msgid "Turnover Rate" +#~ msgstr "Liikevaihto" + +#~ msgid "Fast Moving" +#~ msgstr "Nopeasti liikkuva" + +#~ msgid "Normal" +#~ msgstr "Normaali" + +#~ msgid "Slow Moving" +#~ msgstr "Hidas Liikkuminen" + +#~ msgid "Very Slow" +#~ msgstr "Erittäin hidas" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "Valitulle ajanjaksolle ei löytynyt myyntitietoja." + +#~ msgid "Inventory Valuation" +#~ msgstr "Varaston arvostus" + +#~ msgid "Total Value" +#~ msgstr "Kokonaisarvo" + +#~ msgid "No items found with cost information." +#~ msgstr "Kustannustiedoilla varustettuja tuotteita ei löytynyt." + +#~ msgid "Reserved" +#~ msgstr "Varattu" + +#~ msgid "Fulfilled" +#~ msgstr "Täytetty" + +#~ msgid "Reserved At" +#~ msgstr "Varattu klo" + +#~ msgid "Expires At" +#~ msgstr "Päättyy klo" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "Täytä tämä varaus?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "Perutaanko tämä varaus?" + +#~ msgid "No reservations found." +#~ msgstr "Varauksia ei löytynyt." + +#~ msgid "Unit" +#~ msgstr "Yksikkö" + +#~ msgid "Default Cost" +#~ msgstr "Oletushinta" + +#~ msgid "Default Price" +#~ msgstr "Oletushinta" + +#~ msgid "Image URL" +#~ msgstr "Kuvan URL-osoite" + +#~ msgid "Track Inventory" +#~ msgstr "Seuraa varastoa" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "Hallitse useita tämän tuotteen toimittajia eri hinnoilla." + +#~ msgid "MOQ" +#~ msgstr "MOQ" + +#~ msgid "Lead Time (days)" +#~ msgstr "Toimitusaika (päiviä)" + +#~ msgid "Preferred" +#~ msgstr "Suositeltava" + +#~ msgid "Add Supplier" +#~ msgstr "Lisää toimittaja" + +#~ msgid "No movement history found for this item." +#~ msgstr "Tälle tuotteelle ei löytynyt liikehistoriaa." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU, nimi, viivakoodi..." + +#~ msgid "Active Only" +#~ msgstr "Vain aktiivinen" + +#~ msgid "Total Qty" +#~ msgstr "Kokonaismäärä" + +#~ msgid "Available" +#~ msgstr "Saatavilla" + +#~ msgid "Low Stock" +#~ msgstr "Alhainen varasto" + +#~ msgid "No stock items found." +#~ msgstr "Varastotuotteita ei löytynyt." + +#~ msgid "Item Details" +#~ msgstr "Tuotteen tiedot" + +#~ msgid "Trackable" +#~ msgstr "Jäljitettävä" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Varastotason varastotasot" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Viimeaikaiset osakeliikkeet" + +#~ msgid "Total On Hand" +#~ msgstr "Total On Hand" + +#~ msgid "Total Reserved" +#~ msgstr "Yhteensä varattu" + +#~ msgid "Total Available" +#~ msgstr "Yhteensä saatavilla" + +#~ msgid "Low Stock Alert" +#~ msgstr "Alhaisen varaston hälytys" + +#~ msgid "This item is not trackable." +#~ msgstr "Tämä kohde ei ole jäljitettävissä." + +#~ msgid "Active Reservations" +#~ msgstr "Aktiiviset varaukset" + +#~ msgid "Quantity Reserved" +#~ msgstr "Määrä varattu" + +#~ msgid "Last Counted" +#~ msgstr "Viimeksi laskettu" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "Tälle tuotteelle ei löytynyt varastoa mistään varastosta." + +#~ msgid "No stock levels found." +#~ msgstr "Varastotasoja ei löytynyt." + +#~ msgid "Low Stock Only" +#~ msgstr "Vain vähissä varastossa" + +#~ msgid "Oversold" +#~ msgstr "Ylimyyty" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "Varastotuotteita ei löytynyt tästä varastosta." + +#~ msgid "Supplier Code" +#~ msgstr "Toimittajakoodi" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Tämän toimittajan yksilöllinen koodi (esim. SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Maksuehdot" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "esim. Net 30, Net 60" + +#~ msgid "Code, name, email" +#~ msgstr "Koodi, nimi, sähköposti" + +#~ msgid "No suppliers found." +#~ msgstr "Toimittajia ei löytynyt." + +#~ msgid "Supplier Details" +#~ msgstr "Toimittajan tiedot" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Varastotuotteet tältä toimittajalta" + +#~ msgid "Lead Time" +#~ msgstr "Toimitusaika" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "Tähän toimittajaan ei ole liitetty varastotuotteita." + +#~ msgid "Preferred Items" +#~ msgstr "Ensisijaiset kohteet" + +#~ msgid "From Warehouse" +#~ msgstr "Varastosta" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Valitse Lähdevarasto" + +#~ msgid "To Warehouse" +#~ msgstr "Varastoon" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Valitse kohdevarasto" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Valinnaisia ​​huomautuksia tästä siirrosta" + +#~ msgid "Create Transfer" +#~ msgstr "Luo siirto" + +#~ msgid "No transfers found." +#~ msgstr "Siirtoja ei löytynyt." + +#~ msgid "Warehouse Code" +#~ msgstr "Varaston koodi" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Tämän varaston yksilöllinen koodi (esim. WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "Yhteydenotto Sähköposti" + +#~ msgid "Contact Phone" +#~ msgstr "Yhteydenotto Puhelin" + +#~ msgid "No warehouses found." +#~ msgstr "Varastoja ei löytynyt." + +#~ msgid "Warehouse Details" +#~ msgstr "Varaston tiedot" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "Tässä varastossa ei ole varastossa olevia tuotteita." + +#~ msgid "Total Quantity" +#~ msgstr "Kokonaismäärä" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "Pyydä hyväksyntää" + +#~ msgid "Approval Status" +#~ msgstr "Hyväksyntätila" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "Hylkäämisen syy" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "Nopeat toiminnot" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "Vie Exceliin" + +#~ msgid "Partially Paid" +#~ msgstr "Osittain maksettu" + +#~ msgid "Fully Paid" +#~ msgstr "Täysin maksettu" + +#~ msgid "Create Invoice" +#~ msgstr "Luo lasku" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Luo uusi lasku projektille ja asiakkaalle" + +#~ msgid "Select a project" +#~ msgstr "Valitse projekti" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "Projektin valitseminen täyttää asiakkaan tiedot automaattisesti" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Veroprosentti (%)" + +#~ msgid "Tips" +#~ msgstr "Vinkkejä" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "" +#~ "Valitse oikea projekti asiakkaan tietojen " +#~ "automaattista täyttämistä varten." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "Voit muokata huomautuksia ja ehtoja ennen laskun lähettämistä." + +#~ msgid "Edit Invoice" +#~ msgstr "Muokkaa laskua" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Päivitä laskun tiedot, tuotteet ja ehdot" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Aikaperusteiset palvelut ja tuntityö" + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "Valitse varastotuote" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "esim. Web-kehityspalvelut" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "Poista kohde" + +#~ msgid "Items Subtotal" +#~ msgstr "Kohteet Välisumma" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "Laskutettavat kulut, kuten matkat, ateriat ja materiaalit" + +#~ msgid "Add Expense" +#~ msgstr "Lisää kuluja" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "esim. matkustaa asiakaskokoukseen" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Linkitetty kulu - otsikkoa ei voi muokata" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Linkitetty kulu - kuvausta ei voi muokata" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Linkitetty kulu – luokkaa ei voi muokata" + +#~ msgid "Travel" +#~ msgstr "Matkustaa" + +#~ msgid "Meals" +#~ msgstr "Ateriat" + +#~ msgid "Accommodation" +#~ msgstr "Majoitus" + +#~ msgid "Supplies" +#~ msgstr "Tarvikkeet" + +#~ msgid "Software" +#~ msgstr "Ohjelmisto" + +#~ msgid "Equipment" +#~ msgstr "Laitteet" + +#~ msgid "Services" +#~ msgstr "Palvelut" + +#~ msgid "Marketing" +#~ msgstr "Markkinointi" + +#~ msgid "Training" +#~ msgstr "Koulutus" + +#~ msgid "Other" +#~ msgstr "Muut" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Linkitetty kulu – summaa ei voi muokata" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Linkitetty kulu - päivämäärää ei voi muokata" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Poista kulujen linkitys laskusta" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Kulut Välisumma" + +#~ msgid "Extra Goods" +#~ msgstr "Lisätavarat" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Tuotteet, materiaalit, lisenssit ja muut tavarat" + +#~ msgid "Add Good" +#~ msgstr "Lisää Hyvä" + +#~ msgid "Price" +#~ msgstr "Hinta" + +#~ msgid "e.g., Software License" +#~ msgstr "esim. ohjelmistolisenssi" + +#~ msgid "Product" +#~ msgstr "Tuote" + +#~ msgid "Service" +#~ msgstr "Palvelu" + +#~ msgid "Material" +#~ msgstr "Materiaali" + +#~ msgid "Remove good" +#~ msgstr "Poista hyvä" + +#~ msgid "Goods Subtotal" +#~ msgstr "Tavaran välisumma" + +#~ msgid "Live Preview" +#~ msgstr "Live-esikatselu" + +#~ msgid "Payment" +#~ msgstr "Maksu" + +#~ msgid "Goods" +#~ msgstr "Tavarat" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Luo ajan/kustannusten perusteella" + +#~ msgid "Record Payment" +#~ msgstr "Kirjaa maksu" + +#~ msgid "Export PDF" +#~ msgstr "Vie PDF" + +#~ msgid "Export CSV" +#~ msgstr "Vie CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Kaksoislasku" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "Haluatko varmasti poistaa tämän kulun linkityksen laskusta?" + +#~ msgid "Unlink Expense" +#~ msgstr "Poista kulujen linkitys" + +#~ msgid "Unlink" +#~ msgstr "Poista linkitys" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "Lisää laskuun vähintään yksi tuote, kulu tai lisähyödyke" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Luo aikaa, kustannuksia ja tavaroita" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Valitse laskuttamattomat aikakirjaukset, " +#~ "projektikustannukset ja lisätavarat, jotka " +#~ "lisätään tähän laskuun" + +#~ msgid "Back to Edit" +#~ msgstr "Takaisin Muokkaa" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Laskuttamattomat aikamerkinnät" + +#~ msgid "entries" +#~ msgstr "merkinnät" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "Tälle projektille ei löytynyt laskuttamattomia aikamerkintöjä." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Laskuttamattomat projektikustannukset" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "Tästä projektista ei löytynyt laskuttamattomia kuluja." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Laskuttamattomat laskutettavat kulut" + +#~ msgid "Vendor" +#~ msgstr "Myyjä" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "Tästä projektista ei löytynyt laskuttamattomia laskutettavia kuluja." + +#~ msgid "Project Extra Goods" +#~ msgstr "Projektin lisätavarat" + +#~ msgid "No extra goods found for this project." +#~ msgstr "Tähän projektiin ei löytynyt ylimääräisiä tuotteita." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Lisää valitut laskuun" + +#~ msgid "Selection Summary" +#~ msgstr "Valinnan yhteenveto" + +#~ msgid "Total available hours" +#~ msgstr "Käytettävissä olevat tunnit yhteensä" + +#~ msgid "Total available costs" +#~ msgstr "Käytettävissä olevat kokonaiskustannukset" + +#~ msgid "Total available expenses" +#~ msgstr "Käytettävissä olevat kulut yhteensä" + +#~ msgid "Total available goods" +#~ msgstr "Saatavilla olevat tavarat yhteensä" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Ennakkomaksutuntien yleiskatsaus" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" +#~ "Suunnitelmaan sisältyy %(hours)s tuntia sykliä" +#~ " kohden (nollautuu päivänä %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "Kulutus: %(consumed)s h • Jäljellä: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "Valitulle ajanjaksolle ei ole vielä tallennettu prepaid-käyttöä." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" +#~ "Voit valita useita aikamerkintöjä, " +#~ "kustannuksia, kuluja ja lisätuotteita." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "Aikamerkinnät ryhmitellään tehtävän tai " +#~ "projektin mukaan kohteita luotaessa." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "Kustannukset ja lisätavarat lisätään yksittäisinä laskuerinä." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "Kulut on linkitetty laskuun ja näkyvät erillisessä osiossa." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "" +#~ "Valitse vähintään yksi kertaluonteinen " +#~ "merkintä, hinta, kulu tai lisähyödyke" + +#~ msgid "Filter Invoices" +#~ msgstr "Suodata laskut" + +#~ msgid "Invoice number or client" +#~ msgstr "Laskun numero tai asiakas" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "Poista valitut laskut" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Muuta valittujen laskujen tilaa" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "Poista lasku" + +#~ msgid "Warning:" +#~ msgstr "Varoitus:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Haluatko varmasti poistaa laskun?" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Kaikki tähän laskuun liittyvät laskutuotteet," +#~ " lisätuotteet ja maksutietueet poistetaan " +#~ "pysyvästi." -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "INVOICE" +#~ msgstr "LASKUTTAA" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "Invoice #" +#~ msgstr "Lasku nro" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Bill To" +#~ msgstr "Bill To" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Quantity (Hours)" +#~ msgstr "Määrä (tuntia)" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "Luotu %(num)d aikamerkinnästä" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Expense" +#~ msgstr "Kustannukset" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "Subtotal:" +#~ msgstr "Välisumma:" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "Vero (%(rate).2f%%):" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "Total Amount:" +#~ msgstr "Kokonaismäärä:" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Notes:" +#~ msgstr "Huomautuksia:" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "Terms:" +#~ msgstr "Ehdot:" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "Payment Information:" +#~ msgstr "Maksutiedot:" -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Terms & Conditions:" +#~ msgstr "Ehdot:" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Download UBL" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Pay Online" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Payment Reference" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "Invoice Approval" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Payment History" +#~ msgstr "Maksuhistoria" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "Send Invoice via Email" +#~ msgstr "Lähetä lasku sähköpostitse" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Edit Issue" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "Unassigned" +#~ msgstr "Ei määritetty" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "Create Issue" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Filter Issues" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Search by title or description" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "Apply Filters" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "Page" +#~ msgstr "Sivu" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "of" +#~ msgstr "/" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "No issues found" +#~ msgstr "Käyttäjiä ei löytynyt." -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "Create New Issue" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Delete Issue" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "Task Management" +#~ msgstr "Tehtävien hallinta" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "Link to existing task" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "Select a task" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "Link" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "Kanban" +#~ msgstr "Kanban" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "Hallitse sarakkeita" -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "Aika integraatio" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "Päivitä niiden tila vetämällä tehtäviä sarakkeiden välillä" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "Kanban-levy" -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "Viime vuonna" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "Päivitä tila" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "Yksityiskohdat" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "Viime vuonna" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Osittainen" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "Päivitä" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "moved to" +#~ msgstr "siirretty" -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "Ei tehtäviä tässä sarakkeessa." -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "Hallitse Kanban-sarakkeita" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "Mukauta kanban-taulusi sarakkeita ja tehtävätiloja" -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "Project:" +#~ msgstr "Projekti:" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "Globaalit sarakkeet" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Add Column" +#~ msgstr "Lisää sarake" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "Kanban-sarakkeiden luettelo" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "Key" +#~ msgstr "Avain" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "Complete?" +#~ msgstr "Täydellinen?" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "Järjestä uudelleen vetämällä" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "Edit column" +#~ msgstr "Muokkaa saraketta" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "Vaihda aktiivinen tila" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "Kanban-sarakkeita ei löytynyt. Aloita luomalla ensimmäinen sarake." -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "Luo API-tunnus" +#~ msgid "Tips:" +#~ msgstr "Vinkkejä:" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Järjestä sarakkeita uudelleen vetämällä ja pudottamalla rivejä" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "Järjestelmäsarakkeita (todo, in_progress, done) " +#~ "ei voi poistaa, mutta niitä voidaan " +#~ "mukauttaa" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "\"Valmis\"-merkityt sarakkeet merkitsevät tehtävät" +#~ " suoritetuiksi, kun ne vedetään kyseiseen" +#~ " sarakkeeseen" -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "Luo API-tunnus" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Ei-aktiiviset sarakkeet piilotetaan kanban-" +#~ "levyltä, mutta tehtävät, joilla on tämä" +#~ " tila, ovat edelleen käytettävissä" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "Poista Kanban-sarake" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "Jätä tyhjäksi pitääksesi ajan tasalla" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Haluatko varmasti poistaa sarakkeen?" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "Luo salaisuus uudelleen" +#~ msgid "Key:" +#~ msgstr "Avain:" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Huomautus: Tässä tilassa olevat tehtävät " +#~ "ovat edelleen käytettävissä, mutta sarake " +#~ "ei enää näy kanban-taululla." -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "Poista sarake" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "Sarakkeiden uudelleenjärjestäminen onnistui" -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "Sarakkeiden uudelleenjärjestäminen epäonnistui. Yritä uudelleen." -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "Luo Kanban-sarake" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Lisää uusi sarake kanban-taulullesi" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "Luo Kanban-sarakelomake" -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Column Label" +#~ msgstr "Sarakkeen etiketti" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "esim. Tarkistuksessa, Estetty, Testataan" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "Kanban-taululla näkyvä näyttönimi" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "Column Key" +#~ msgstr "Sarakeavain" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "esim. in_review, estetty, testaus" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Yksilöllinen tunniste (pienet kirjaimet, ei" +#~ " välilyöntejä, käytä alaviivoja). Luodaan " +#~ "automaattisesti etiketistä, jos se on " +#~ "tyhjä." -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "Global (for all projects)" +#~ msgstr "Maailmanlaajuinen (kaikille projekteille)" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Valitse projekti, jos haluat luoda " +#~ "projektikohtaisia ​​sarakkeita, tai jätä " +#~ "kaikille projekteille Global" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "Icon Class" +#~ msgstr "Ikoniluokka" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "Font Awesome icon class" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Browse icons" +#~ msgstr "Selaa kuvakkeita" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "Ensisijainen (sininen)" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Secondary (Gray)" +#~ msgstr "Toissijainen (harmaa)" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "Menestys (vihreä)" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Danger (Red)" +#~ msgstr "Vaara (punainen)" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "Varoitus (keltainen)" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Info (Cyan)" +#~ msgstr "Tiedot (syaani)" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Bootstrap-väriluokka muotoiluun" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Mark as Complete State" +#~ msgstr "Merkitse valmiiksi tilaksi" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "Tähän sarakkeeseen siirretyt tehtävät merkitään suoritetuiksi" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Create Column" +#~ msgstr "Luo sarake" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Note:" +#~ msgstr "Huomautus:" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "Sarake lisätään taulun loppuun. Voit " +#~ "järjestää sarakkeita uudelleen myöhemmin " +#~ "hallintasivulta." -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "Muokkaa Kanban-saraketta" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "Muokkaa sarakeasetuksia" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Edit Kanban Column form" +#~ msgstr "Muokkaa Kanban-sarakelomaketta" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "Avainta ei voi muuttaa luomisen jälkeen" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "Tämä on projektikohtainen kolumni" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Tämä on maailmanlaajuinen sarake (kaikille projekteille)" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "Preview" +#~ msgstr "Esikatselu" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Ei-aktiiviset sarakkeet on piilotettu kanban-taululta" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "System Column:" +#~ msgstr "Järjestelmäsarake:" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Tämä on järjestelmäsarake. Voit muokata " +#~ "sen ulkoasua, mutta et voi poistaa " +#~ "sitä." -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "Tumma tila päälle/pois" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" + +#~ msgid "Decrease quantity" +#~ msgstr "" + +#~ msgid "Adjustment quantity" +#~ msgstr "" + +#~ msgid "Increase quantity" +#~ msgstr "" + +#~ msgid "Kiosk adjustment" +#~ msgstr "" + +#~ msgid "Physical count" +#~ msgstr "" + +#~ msgid "Found" +#~ msgstr "" + +#~ msgid "Damaged" +#~ msgstr "" + +#~ msgid "Apply stock adjustment" +#~ msgstr "" + +#~ msgid "Apply Adjustment" +#~ msgstr "" + +#~ msgid "Undo last adjustment" +#~ msgstr "" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "" + +#~ msgid "Transfer quantity" +#~ msgstr "" + +#~ msgid "Transfer stock" +#~ msgstr "" + +#~ msgid "Transfer Stock" +#~ msgstr "" + +#~ msgid "Stop timer" +#~ msgstr "" + +#~ msgid "Stop Timer" +#~ msgstr "Pysäytä ajastin" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "Ei tehtävää" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "Mitä sinä työskentelet?" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "Yhteenveto" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "Lähde" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Verkkosivusto, viittaus, mainos..." + +#~ msgid "Lead Score" +#~ msgstr "Lead Score" + +#~ msgid "Estimated Value" +#~ msgstr "Arvioitu arvo" + +#~ msgid "Save Lead" +#~ msgstr "Tallenna lyijy" + +#~ msgid "Name, company, email..." +#~ msgstr "Nimi, yritys, sähköposti..." + +#~ msgid "All Statuses" +#~ msgstr "Kaikki tilat" + +#~ msgid "Website, referral..." +#~ msgstr "Verkkosivusto, suositus..." + +#~ msgid "Score" +#~ msgstr "Pisteet" + +#~ msgid "No leads found" +#~ msgstr "Johtoja ei löytynyt" + +#~ msgid "Create First Lead" +#~ msgstr "Luo ensimmäinen liidi" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Ammattimainen ajanseuranta ja projektinhallinta" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "Flaskilla rakennettu kattava web-pohjainen " +#~ "ajanseurantasovellus, joka sisältää " +#~ "projektinhallinnan, asiakasorganisaation, " +#~ "tehtävienhallinnan, laskutuksen ja edistyneen " +#~ "analytiikan." + +#~ msgid "Invoicing" +#~ msgstr "Laskutus" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "Älykkäät ajastimet" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "" +#~ "Reaaliaikainen seuranta käyttämättömän toiminnan " +#~ "havaitsemisen ja reaaliaikaisten päivitysten " +#~ "avulla" + +#~ msgid "Client Management" +#~ msgstr "Asiakashallinta" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "Järjestä asiakkaita kontaktien, hintojen ja projektisuhteiden avulla" + +#~ msgid "Task System" +#~ msgstr "Tehtäväjärjestelmä" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Jaa projektit tehtäviin edistymisen seurannan avulla" + +#~ msgid "PDF Invoices" +#~ msgstr "PDF-laskut" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Luo ammattimaisia ​​laskuja seuratusta ajasta" + +#~ msgid "Core Features" +#~ msgstr "Ydinominaisuudet" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Käynnistys/pysäytysajastimet projekti- ja tehtäväyhteydellä" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Manuaalinen ajansyöttö muistiinpanoilla ja tunnisteilla" + +#~ msgid "Client and project organization" +#~ msgstr "Asiakas- ja projektiorganisaatio" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Roolipohjaiset käyttöoikeudet ja käyttäjäprofiilit" + +#~ msgid "Advanced Features" +#~ msgstr "Lisäominaisuudet" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Brändätty PDF-laskutus vero- ja maksuseurannalla" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Visuaalinen analytiikka ja yksityiskohtainen raportointi" + +#~ msgid "REST API for integrations" +#~ msgstr "REST API integraatioita varten" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "PWA-ominaisuudet ja mobiiliystävällinen käyttöliittymä" + +#~ msgid "Platform Support" +#~ msgstr "Alustan tuki" + +#~ msgid "Web Application" +#~ msgstr "Web-sovellus" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Työpöytäselaimet (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Mobiiliresponsiivinen muotoilu" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "Progressiivinen verkkosovellus (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Kosketusystävällinen tabletin käyttöliittymä" + +#~ msgid "Operating Systems" +#~ msgstr "Käyttöjärjestelmät" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android ja iOS (selain)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Raspberry Pi -tuki" + +#~ msgid "Dockerized deployment" +#~ msgstr "Telakoitu käyttöönotto" + +#~ msgid "Database Support" +#~ msgstr "Tietokannan tuki" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (suositus)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (kehittäjä/testi)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Automaattiset siirrot Flask-Migraten avulla" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Varmuuskopiointi- ja palautustyökalut" + +#~ msgid "Technical Specifications" +#~ msgstr "Tekniset tiedot" + +#~ msgid "Technology Stack" +#~ msgstr "Teknologiapino" + +#~ msgid "Backend" +#~ msgstr "Backend" + +#~ msgid "Frontend" +#~ msgstr "Käyttöliittymä" + +#~ msgid "Deployment" +#~ msgstr "Käyttöönotto" + +#~ msgid "Key Capabilities" +#~ msgstr "Tärkeimmät ominaisuudet" + +#~ msgid "Real-time" +#~ msgstr "Reaaliaikainen" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "Avoin lähdekoodi ja yhteisö" + +#~ msgid "Open Source Benefits" +#~ msgstr "Avoimen lähdekoodin edut" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Täysi lähdekoodi saatavilla GitHubista" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Lisensoitu GPL v3.0:lla" + +#~ msgid "Community-driven development" +#~ msgstr "Yhteisölähtöinen kehitys" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Läpinäkyvä ongelmien seuranta ja virheraportit" + +#~ msgid "Deployment Options" +#~ msgstr "Käyttöönottovaihtoehdot" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Docker-kuvat (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Itseisännöity käyttöönotto täydellä ohjauksella" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Pilvikäyttöön valmis Compose-kokoonpanoilla" + +#~ msgid "View on GitHub" +#~ msgstr "Katso GitHubissa" + +#~ msgid "Support updates" +#~ msgstr "Tuetut ominaisuudet" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "Apua ja resursseja" + +#~ msgid "Documentation" +#~ msgstr "Dokumentaatio" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Vaiheittaiset oppaat kaikille ominaisuuksille." + +#~ msgid "View Help" +#~ msgstr "Näytä Ohje" + +#~ msgid "System Information" +#~ msgstr "Järjestelmätiedot" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Tila, versiot ja kokoonpanotiedot." + +#~ msgid "Admin access required" +#~ msgstr "Järjestelmänvalvojan käyttöoikeudet vaaditaan" + +#~ msgid "Community Support" +#~ msgstr "Yhteisön tuki" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "Ilmoita ongelmista, pyydä ominaisuuksia, osallistu." + +#~ msgid "GitHub Issues" +#~ msgstr "GitHub-ongelmat" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "Näytä kaikkien aikojen merkinnät" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "Tässä on nopea yleiskatsaus työstäsi." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "Käynnistys/pysäytysajastimet projekti- ja tehtäväyhteydellä" + +#~ msgid "Repeat last" +#~ msgstr "Luotu klo" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Käynnistys/pysäytysajastimet projekti- ja tehtäväyhteydellä" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "Tauko" + +#~ msgid "Break" +#~ msgstr "Takaisin" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "Alkoi klo" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "Säätö" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "Subtract 15 min" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "Subtract 5 min" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "Add 5 min" +#~ msgstr "Admin" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "Add 15 min" +#~ msgstr "Admin" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "Resume timer" +#~ msgstr "Älykkäät ajastimet" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "Resume" +#~ msgstr "Nollaa" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "Pause" +#~ msgstr "Tauko" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "Stop and save current time" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "Stop & save" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "No active timer." +#~ msgstr "Ei aktiivista ajastinta." -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "Resume last session" +#~ msgstr "Lopeta istunto" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "Today's Hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "overtime" +#~ msgstr "Aika" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "Week's Hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "Month's Hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Overtime (YTD)" +#~ msgstr "Ylityöasetukset" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Loading insights…" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Value insights" +#~ msgstr "Kohdista oikealle" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "Your tracked time at a glance" +#~ msgstr "Seuraa aikaa. Pysy järjestyksessä." -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "Total hours tracked" +#~ msgstr "Työtunteja yhteensä" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Active days" +#~ msgstr "Aktiiviset hälytykset" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "Hours per day last seven days" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "Most productive day" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Avg session length" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "Estimated value tracked" +#~ msgstr "Arvioitu arvo" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "This week vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "hrs this week" +#~ msgstr "Aikakirjaukset tällä viikolla" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "This week" +#~ msgstr "Viikko" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "Last week" +#~ msgstr "Viime vuonna" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "Viimeaikaiset merkinnät" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "View all" +#~ msgstr "Näytä kaikki" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Jatka - Käynnistä uusi ajastin samoilla ominaisuuksilla" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "Muokkaa merkintää" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "Päällekkäinen merkintä" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "Poista merkintä" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "Viimeaikaisia ​​merkintöjä ei löytynyt." -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "Viikkotavoite" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "Päiviä jäljellä" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "Need" +#~ msgstr "Tarve" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "tavoitteen saavuttamiseksi" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "Ei viikkotavoitetta" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "Aseta viikoittainen aikatavoite seurataksesi edistymistäsi" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "Luo tavoite" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Parhaat projektit (30 päivää)" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "View report" +#~ msgstr "Käyttäjäraportti" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Aikajakauman ympyräkaaviot" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Ei toimintaa viimeisen 30 päivän aikana." -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Aloita ajan seuranta" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "Parhaat projektit (30 päivää)" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "Ei toimintaa viimeisen 30 päivän aikana." -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "Kopioitu %(count)d lainaus" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Virhe PDF:n luomisessa: %(error)s" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Share & support" +#~ msgstr "Alustan tuki" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "Salasanan tulee olla vähintään 8 merkkiä pitkä" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "Pika-aloitusopas" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "All templates" +#~ msgstr "Sähköpostimallit" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "Tehtävä (valinnainen)" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "Huomautuksia (valinnainen)" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "Tehtävä (valinnainen)" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "esim. kokous, kehitys, järjestelmänvalvoja" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "Tukea kehitystä" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Varastotuote" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Valitse kohde" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Varasto" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Valitse Varasto" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Säätömäärä" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "Käytä positiivisia arvoja lisätäksesi varastoa ja negatiivisia arvoja pienentääksesi" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "esim. fyysisen laskennan korjaus, vauriot, löydetyt kohteet" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Lisätietoja tästä säädöstä" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Record Adjustment" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Kaikki varastot" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Kaikki kohteet" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Päivämäärä alkaen" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Päivämäärä -" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Tuote" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "Säätöjä ei löytynyt." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "Kädessä" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Järjestä piste uudelleen" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Vaje" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Uudelleentilausmäärä" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "Ei varoituksia alhaisista varastoista. Kaikki tuotteet ovat uudelleenjärjestelypisteen yläpuolella." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Käytä positiivisia arvoja lisäyksiin, negatiivisia poistoihin" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Liikkeen tyyppi" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Palata" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Jätettä" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "esim. fyysisen laskennan korjaus" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Record Movement" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Viitetyyppi" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Manuaalinen" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Yksikköhinta" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Viite" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "Täydellinen dokumentaatio ja käyttöopas" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "Osakeliikettä ei löytynyt." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Toimittaja" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Valitse Toimittaja" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Tilauspäivämäärä" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Arvioitu toimituspäivä" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Huomautukset näkyvät toimittajalle" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Sisäiset huomautukset (ei näy toimittajalle)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Tuotteet" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Lisää kohde" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Määrä" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "Toimittaja SKU" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Luo ostotilaus" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Luonnos" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Lähetetty" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Vahvistettu" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Vastaanotettu" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Kaikki toimittajat" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "PO-numero" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Odotettu toimitus" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "Ostotilauksia ei löytynyt." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "Haluatko varmasti peruuttaa tämän ostotilauksen?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "Haluatko varmasti poistaa tämän ostotilauksen?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Ostotilauksen tiedot" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Vastaanottopäivämäärä" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Tilattu määrä" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Vastaanotettu määrä" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Rivi yhteensä" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Toimitus" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Vastaanota ostotilaus" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Merkitse vastaanotetuksi" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "Tässä ostotilauksessa ei ole tuotteita." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Tuotteita yhteensä" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Varastot yhteensä" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Varaston kokonaisarvo" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Alhaiset tuotteet" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Saatavilla olevat raportit" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Osakkeen arvostus" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Tarkastele varaston arvoa varastoittain" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Liikehistoria" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Yksityiskohtainen liikeloki" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Liikevaihdon analyysi" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Varaston kiertonopeus" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Alhainen varastoraportti" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Kohteet uudelleenjärjestyskohdan alapuolella" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "Löytyi %(count)s kohdetta niiden uudelleenjärjestelypisteen alapuolelta." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Määrä käsillä" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Tilaa määrä uudelleen" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "Luo ostotilaus" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Kaikki varastotasot ovat hyviä" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Yksikään kohde ei ole tällä hetkellä tilauspisteensä alapuolella." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "Liikkeitä ei löytynyt." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "Kiertonopeus kertoo kuinka monta kertaa varasto myydään ja vaihdetaan vuoden aikana. Korkeammat hinnat tarkoittavat nopeammin liikkuvia kohteita." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Yhteensä myyty" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Keskimääräinen varastotaso" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Liikevaihto" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Nopeasti liikkuva" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normaali" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "Hidas Liikkuminen" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "Erittäin hidas" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "Valitulle ajanjaksolle ei löytynyt myyntitietoja." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Varaston arvostus" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Kokonaisarvo" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "Kustannustiedoilla varustettuja tuotteita ei löytynyt." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Varattu" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Täytetty" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Varattu klo" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Päättyy klo" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "Täytä tämä varaus?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "Perutaanko tämä varaus?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "Varauksia ei löytynyt." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Yksikkö" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Oletushinta" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Oletushinta" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "Kuvan URL-osoite" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Seuraa varastoa" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Hallitse useita tämän tuotteen toimittajia eri hinnoilla." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "MOQ" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Toimitusaika (päiviä)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Suositeltava" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Lisää toimittaja" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "Tälle tuotteelle ei löytynyt liikehistoriaa." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU, nimi, viivakoodi..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Vain aktiivinen" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Kokonaismäärä" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Saatavilla" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Alhainen varasto" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "Varastotuotteita ei löytynyt." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Tuotteen tiedot" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Jäljitettävä" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Varastotason varastotasot" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "Pikanavigointi" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "Suodata osiot..." -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "Pika-aloitus" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Viimeaikaiset osakeliikkeet" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Total On Hand" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Yhteensä varattu" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Yhteensä saatavilla" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Alhaisen varaston hälytys" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Tämä kohde ei ole jäljitettävissä." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Aktiiviset varaukset" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Määrä varattu" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Viimeksi laskettu" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "Tälle tuotteelle ei löytynyt varastoa mistään varastosta." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "Varastotasoja ei löytynyt." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Vain vähissä varastossa" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "Ylimyyty" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "Varastotuotteita ei löytynyt tästä varastosta." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Toimittajakoodi" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Tämän toimittajan yksilöllinen koodi (esim. SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Maksuehdot" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "esim. Net 30, Net 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Koodi, nimi, sähköposti" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "Toimittajia ei löytynyt." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Toimittajan tiedot" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Varastotuotteet tältä toimittajalta" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Toimitusaika" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "Tähän toimittajaan ei ole liitetty varastotuotteita." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Ensisijaiset kohteet" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Varastosta" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Valitse Lähdevarasto" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Varastoon" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Valitse kohdevarasto" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Valinnaisia ​​huomautuksia tästä siirrosta" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Luo siirto" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "Siirtoja ei löytynyt." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Varaston koodi" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Tämän varaston yksilöllinen koodi (esim. WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "Yhteydenotto Sähköposti" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Yhteydenotto Puhelin" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "Varastoja ei löytynyt." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Varaston tiedot" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "Tässä varastossa ei ole varastossa olevia tuotteita." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Kokonaismäärä" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "Raportit ja analyysit" -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "Tuottavuusominaisuudet" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "Järjestelmänvalvojan ominaisuudet" -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "Mobiilikäyttö" -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "Dokumentaatio" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "Vianetsintä" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "TimeTrackerin ohjekeskus" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "Kaikki mitä sinun tulee tietää saadaksesi kaiken irti TimeTrackerista" -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "Aloita ajan seuranta" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "Näytä projektit" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "Luo raportteja" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Pyydä hyväksyntää" +#~ msgid "API Docs" +#~ msgstr "API-tunnukset" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Hyväksyntätila" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "Pika-aloitusopas" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "For New Users" +#~ msgstr "Uusille käyttäjille" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Kirjaudu sisään käyttäjätunnuksellasi (salasanaa ei vaadita)" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Tutustu hallintapaneeliin nähdäksesi yleiskatsauksen" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Hylkäämisen syy" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Aloita ensimmäinen ajastin olemassa olevasta projektista" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "Tarkastele aikamerkintöjäsi raporteissa" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Nopeat toiminnot" +#~ msgid "For Administrators" +#~ msgstr "Järjestelmänvalvojille" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Määritä asiakkaat Asiakashallinta-osiossa" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Vie Exceliin" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Osittain maksettu" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Täysin maksettu" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Luo lasku" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Luo uusi lasku projektille ja asiakkaalle" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Valitse projekti" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "Projektin valitseminen täyttää asiakkaan tiedot automaattisesti" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Luo projekteja ja anna ne asiakkaille" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Määritä järjestelmäasetukset (aikavyöhyke, valuutta jne.)" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Veroprosentti (%)" +#~ msgid "Manage users and permissions" +#~ msgstr "Hallinnoi käyttäjiä ja käyttöoikeuksia" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Vinkkejä" +#~ msgid "Pro Tip:" +#~ msgstr "Provinkki:" -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "Valitse oikea projekti asiakkaan tietojen automaattista täyttämistä varten." +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Käytä mobiiliystävällistä käyttöliittymää " +#~ "seurataksesi aikaa liikkeellä ollessasi. " +#~ "Ajastin jatkaa toimintaansa, vaikka suljet " +#~ "selaimen!" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "Voit muokata huomautuksia ja ehtoja ennen laskun lähettämistä." +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Reaaliaikainen seuranta automaattisella joutokäynnin" +#~ " tunnistuksella ja WebSocket-päivityksillä" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Muokkaa laskua" +#~ msgid "Manual Entry" +#~ msgstr "Manuaalinen syöttö" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Päivitä laskun tiedot, tuotteet ja ehdot" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "Kirjaa aika manuaalisesti mukautetuilla aloitus- ja lopetusajoilla" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Aikaperusteiset palvelut ja tuntityö" +#~ msgid "Starting a Timer" +#~ msgstr "Ajastimen käynnistäminen" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Siirry Ajastin-sivulle tai kojelautaan" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "Valitse projekti avattavasta valikosta" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Valitse varastotuote" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "Valinnaisesti voit valita tehtävän tarkempaa seurantaa varten" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "esim. Web-kehityspalvelut" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Lisää muistiinpanoja tekemästäsi työstä (valinnainen)" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Lisää tunnisteet pilkuilla erotettuina (valinnainen)" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Poista kohde" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Kohteet Välisumma" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Laskutettavat kulut, kuten matkat, ateriat ja materiaalit" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Lisää kuluja" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "esim. matkustaa asiakaskokoukseen" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Linkitetty kulu - otsikkoa ei voi muokata" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Linkitetty kulu - kuvausta ei voi muokata" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Linkitetty kulu – luokkaa ei voi muokata" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Matkustaa" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Ateriat" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Majoitus" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Tarvikkeet" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Ohjelmisto" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Laitteet" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Palvelut" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Markkinointi" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Koulutus" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Muut" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Linkitetty kulu – summaa ei voi muokata" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Linkitetty kulu - päivämäärää ei voi muokata" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Poista kulujen linkitys laskusta" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Kulut Välisumma" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Lisätavarat" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Tuotteet, materiaalit, lisenssit ja muut tavarat" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Lisää Hyvä" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Hinta" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "esim. ohjelmistolisenssi" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Tuote" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Palvelu" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Materiaali" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "Poista hyvä" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Tavaran välisumma" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Live-esikatselu" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Maksu" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Tavarat" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Luo ajan/kustannusten perusteella" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Kirjaa maksu" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "Vie PDF" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "Vie CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Kaksoislasku" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "Haluatko varmasti poistaa tämän kulun linkityksen laskusta?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Poista kulujen linkitys" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Poista linkitys" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "Lisää laskuun vähintään yksi tuote, kulu tai lisähyödyke" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Luo aikaa, kustannuksia ja tavaroita" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "Valitse laskuttamattomat aikakirjaukset, projektikustannukset ja lisätavarat, jotka lisätään tähän laskuun" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Takaisin Muokkaa" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Laskuttamattomat aikamerkinnät" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "merkinnät" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "Tälle projektille ei löytynyt laskuttamattomia aikamerkintöjä." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Laskuttamattomat projektikustannukset" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "Tästä projektista ei löytynyt laskuttamattomia kuluja." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Laskuttamattomat laskutettavat kulut" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Myyjä" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "Tästä projektista ei löytynyt laskuttamattomia laskutettavia kuluja." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Projektin lisätavarat" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "Tähän projektiin ei löytynyt ylimääräisiä tuotteita." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Lisää valitut laskuun" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Valinnan yhteenveto" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Käytettävissä olevat tunnit yhteensä" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Käytettävissä olevat kokonaiskustannukset" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Käytettävissä olevat kulut yhteensä" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Saatavilla olevat tavarat yhteensä" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Ennakkomaksutuntien yleiskatsaus" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "Suunnitelmaan sisältyy %(hours)s tuntia sykliä kohden (nollautuu päivänä %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "Kulutus: %(consumed)s h • Jäljellä: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Valitulle ajanjaksolle ei ole vielä tallennettu prepaid-käyttöä." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "Voit valita useita aikamerkintöjä, kustannuksia, kuluja ja lisätuotteita." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "Aikamerkinnät ryhmitellään tehtävän tai projektin mukaan kohteita luotaessa." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "Kustannukset ja lisätavarat lisätään yksittäisinä laskuerinä." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "Kulut on linkitetty laskuun ja näkyvät erillisessä osiossa." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "Valitse vähintään yksi kertaluonteinen merkintä, hinta, kulu tai lisähyödyke" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Suodata laskut" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Napsauta \"Aloita ajastin\"" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Laskun numero tai asiakas" +#~ msgid "Timer Features" +#~ msgstr "Ajastimen ominaisuudet" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Poista valitut laskut" +#~ msgid "Real-time duration display" +#~ msgstr "Reaaliaikainen keston näyttö" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Muuta valittujen laskujen tilaa" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "Continues running if browser closes" +#~ msgstr "Jatkuu, jos selain sulkeutuu" -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Poista lasku" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Varoitus:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "Haluatko varmasti poistaa laskun?" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "Kaikki tähän laskuun liittyvät laskutuotteet, lisätuotteet ja maksutietueet poistetaan pysyvästi." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "LASKUTTAA" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Lasku nro" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Bill To" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Määrä (tuntia)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "Luotu %(num)d aikamerkinnästä" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Kustannukset" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Välisumma:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "Vero (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Kokonaismäärä:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Huomautuksia:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Ehdot:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Maksutiedot:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Ehdot:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Automaattinen tyhjäkäynnin tunnistus (konfiguroitavissa)" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Yksi aktiivinen ajastin käyttäjää kohti (konfiguroitavissa)" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "WebSocket live updates" +#~ msgstr "WebSocketin live-päivitykset" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Manual Time Entry" +#~ msgstr "Manuaalinen ajansyöttö" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Luo aikamerkintöjä manuaalisesti, kun haluat" +#~ " tallentaa tietokoneen ulkopuolella vietettyä " +#~ "aikaa tai muuttaa olemassa olevia " +#~ "merkintöjä." -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Required Information" +#~ msgstr "Vaaditut tiedot" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Maksuhistoria" +#~ msgid "Project selection" +#~ msgstr "Projektin valinta" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Lähetä lasku sähköpostitse" +#~ msgid "Start date and time" +#~ msgstr "Aloituspäivämäärä ja -aika" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "Päättymispäivämäärä ja -aika" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "Ei määritetty" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "Valinnaiset tiedot" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "Tehtävätehtävä" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "Kuvaus/huomautukset" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "Tunnisteet luokittelua varten" -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Sivu" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "/" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "Käyttäjiä ei löytynyt." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "Laskutettavan tilan ohitus" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Kehittyneet ajansyöttöominaisuudet" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "Joukkopääsy" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Luo useita aikamerkintöjä peräkkäisille " +#~ "päiville samalla projektilla ja kestolla. " +#~ "Täydellinen tavallisiin työmalleihin." -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Tehtävien hallinta" +#~ msgid "Templates" +#~ msgstr "Mallit" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Tallenna usein käytetyt aikamerkinnät " +#~ "malleiksi nopeaa uudelleenkäyttöä varten. " +#~ "Tallentaa projektin, tehtävän ja " +#~ "muistiinpanot." -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualisoi aikamerkinnäsi kalenteriin. Vedä ja" +#~ " pudota ajastaaksesi uudelleen tai napsauta" +#~ " päivämääriä lisätäksesi merkintöjä." -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Project Information" +#~ msgstr "Hankkeen tiedot" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "Kuvaava projektin nimi" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "Liittynyt asiakasorganisaatio" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" +#~ msgid "Project details and scope" +#~ msgstr "Hankkeen tiedot ja laajuus" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Hallitse sarakkeita" +#~ msgid "Active, completed, or archived" +#~ msgstr "Aktiivinen, valmis tai arkistoitu" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Päivitä niiden tila vetämällä tehtäviä sarakkeiden välillä" +#~ msgid "Billing Information" +#~ msgstr "Laskutustiedot" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "Kanban-levy" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Pitääkö laskutusta varten seurata aikaa" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "siirretty" +#~ msgid "Rate for billable time calculations" +#~ msgstr "Laskutettavan ajan laskelmien hinta" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "Ei tehtäviä tässä sarakkeessa." +#~ msgid "Billing Reference" +#~ msgstr "Laskutusviite" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Hallitse Kanban-sarakkeita" +#~ msgid "PO number or billing code" +#~ msgstr "PO-numero tai laskutuskoodi" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Mukauta kanban-taulusi sarakkeita ja tehtävätiloja" +#~ msgid "Project Operations" +#~ msgstr "Projektitoiminnot" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Projekti:" +#~ msgid "Create new projects with client relationships" +#~ msgstr "Luo uusia projekteja asiakassuhteiden kanssa" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Globaalit sarakkeet" +#~ msgid "Edit existing projects to update details" +#~ msgstr "Muokkaa olemassa olevia projekteja päivittääksesi tiedot" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Lisää sarake" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "Arkistoi projektit piilottaaksesi ajastimia (säilyttää tiedot)" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Kanban-sarakkeiden luettelo" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Poista projektit (poistaa kaikki liittyvät aikamerkinnät)" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Avain" +#~ msgid "Best Practices" +#~ msgstr "Parhaat käytännöt" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "Täydellinen?" +#~ msgid "Use descriptive project names" +#~ msgstr "Käytä kuvaavia projektinimiä" -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Järjestä uudelleen vetämällä" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Aseta tarkat tuntihinnat laskutukseen" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Muokkaa saraketta" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Arkistoi poistamisen sijaan, jos mahdollista" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Vaihda aktiivinen tila" +#~ msgid "Use billing references for external tracking" +#~ msgstr "Käytä laskutusviitteitä ulkoiseen seurantaan" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "Kanban-sarakkeita ei löytynyt. Aloita luomalla ensimmäinen sarake." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Vinkkejä:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Järjestä sarakkeita uudelleen vetämällä ja pudottamalla rivejä" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "Järjestelmäsarakkeita (todo, in_progress, done) ei voi poistaa, mutta niitä voidaan mukauttaa" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "\"Valmis\"-merkityt sarakkeet merkitsevät tehtävät suoritetuiksi, kun ne vedetään kyseiseen sarakkeeseen" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "Ei-aktiiviset sarakkeet piilotetaan kanban-levyltä, mutta tehtävät, joilla on tämä tila, ovat edelleen käytettävissä" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Poista Kanban-sarake" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "Haluatko varmasti poistaa sarakkeen?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Avain:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "Huomautus: Tässä tilassa olevat tehtävät ovat edelleen käytettävissä, mutta sarake ei enää näy kanban-taululla." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Poista sarake" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Sarakkeiden uudelleenjärjestäminen onnistui" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "Sarakkeiden uudelleenjärjestäminen epäonnistui. Yritä uudelleen." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Luo Kanban-sarake" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Lisää uusi sarake kanban-taulullesi" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Luo Kanban-sarakelomake" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Sarakkeen etiketti" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "esim. Tarkistuksessa, Estetty, Testataan" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "Kanban-taululla näkyvä näyttönimi" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Sarakeavain" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "esim. in_review, estetty, testaus" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "Yksilöllinen tunniste (pienet kirjaimet, ei välilyöntejä, käytä alaviivoja). Luodaan automaattisesti etiketistä, jos se on tyhjä." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Maailmanlaajuinen (kaikille projekteille)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "Valitse projekti, jos haluat luoda projektikohtaisia ​​sarakkeita, tai jätä kaikille projekteille Global" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Ikoniluokka" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Font Awesome icon class" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Selaa kuvakkeita" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Ensisijainen (sininen)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Toissijainen (harmaa)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Menestys (vihreä)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Vaara (punainen)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Varoitus (keltainen)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Tiedot (syaani)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Bootstrap-väriluokka muotoiluun" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Merkitse valmiiksi tilaksi" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "Tähän sarakkeeseen siirretyt tehtävät merkitään suoritetuiksi" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Luo sarake" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Huomautus:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "Sarake lisätään taulun loppuun. Voit järjestää sarakkeita uudelleen myöhemmin hallintasivulta." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Muokkaa Kanban-saraketta" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Muokkaa sarakeasetuksia" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Muokkaa Kanban-sarakelomaketta" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "Avainta ei voi muuttaa luomisen jälkeen" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Tämä on projektikohtainen kolumni" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Tämä on maailmanlaajuinen sarake (kaikille projekteille)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Esikatselu" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Ei-aktiiviset sarakkeet on piilotettu kanban-taululta" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Järjestelmäsarake:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "Tämä on järjestelmäsarake. Voit muokata sen ulkoasua, mutta et voi poistaa sitä." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "Asiakashallintajärjestelmä auttaa organisoimaan " +#~ "työsi asiakasorganisaatioittain, ehkäisemään " +#~ "virheitä ja virtaviivaistamaan projektien " +#~ "luomista." -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "Client Information" +#~ msgstr "Asiakastiedot" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Tumma tila päälle/pois" +#~ msgid "Organization Name" +#~ msgstr "Organisaation nimi" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "Company or client name" +#~ msgstr "Yrityksen tai asiakkaan nimi" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "Primary contact details" +#~ msgstr "Ensisijaiset yhteystiedot" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "Email & Phone" +#~ msgstr "Sähköposti & Puhelin" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Contact information" +#~ msgstr "Yhteystiedot" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "Business address" +#~ msgstr "Yrityksen osoite" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Benefits" +#~ msgstr "Edut" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "Pudotusvalikon valinta estää kirjoitusvirheet" -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Oletushinnat täyttävät projektit automaattisesti" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "Asiakkaan johdonmukainen nimeäminen" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Easier project organization" +#~ msgstr "Helpompi projektin organisointi" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Project Count" +#~ msgstr "Projektien määrä" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Total and active projects" +#~ msgstr "Aktiiviset projektit kokonaisuudessaan" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Total hours worked" +#~ msgstr "Työtunteja yhteensä" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "Kustannusarvio" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Estimated billing amounts" +#~ msgstr "Arvioidut laskutussummat" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Jaa projektit hallittaviin tehtäviin " +#~ "yksityiskohtaisen seurannan ja edistymisen " +#~ "seurannan avulla." -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Task Properties" +#~ msgstr "Tehtävän ominaisuudet" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "Nimi & Kuvaus" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "Selkeä tehtäväntunnistus" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "Prioriteettitasot" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Matala, keskitaso, korkea, kiireellinen" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "Eräpäivät" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Deadline tracking" +#~ msgstr "Määräajan seuranta" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Assignment" +#~ msgstr "Tehtävä" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "Tehtävän omistajuus" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "Tilan seuranta" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "Tehtävä - Ei aloitettu" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Pysäytä ajastin" +#~ msgid "In Progress - Currently working" +#~ msgstr "Käynnissä - Tällä hetkellä töissä" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "Arvostelu – valmis tarkastettavaksi" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "Valmis - Valmis" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "Peruutettu – ei tarvita" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Ei tehtävää" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "Aikaseurantaominaisuudet" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "Mitä sinä työskentelet?" +#~ msgid "Start timers directly from tasks" +#~ msgstr "Käynnistä ajastimet suoraan tehtävistä" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Linkitä aikamerkinnät tiettyihin tehtäviin" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Seuraa arvioituja ja todellisia tunteja" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "Seuraa tehtävän edistymistä automaattisesti" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Task Views" +#~ msgstr "Tehtävänäkymät" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Omat tehtävät – sinulle määrätyt tehtävät" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Kaikki tehtävät - Täydellinen tehtäväluettelo" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Erääntyneet tehtävät - Erääntyneet erät" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Projektitehtävät - Tehtävät projekteissa" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Collaboration Features" +#~ msgstr "Yhteistyöominaisuudet" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Tehtävien kommentit – tehtävistä keskusteluja" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Markdown-tuki – Rikas muotoilu kuvauksissa" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "Käyttäjämaininnat – Tag-tiimin jäsenet (jos käytössä)" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Tiedostoliitteet – Liitä tiedostoja tehtäviin (jos käytössä)" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Markdown Formatting" +#~ msgstr "Markdown-muotoilu" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "Tehtävä- ja projektikuvaukset tukevat Markdownia:" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "Yhteenveto" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Lihavoitu**, *Kursivoitu*, ~~Yliviivattu~~" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# otsikot, - luettelot, [linkit](url)" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Lähde" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Verkkosivusto, viittaus, mainos..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Lead Score" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Arvioitu arvo" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Tallenna lyijy" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Nimi, yritys, sähköposti..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Kaikki tilat" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Verkkosivusto, suositus..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Pisteet" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "Johtoja ei löytynyt" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Luo ensimmäinen liidi" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```koodilohkot```, taulukot, kuvat" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualisoi työnkulkusi vetämällä ja " +#~ "pudottamalla Kanban-levyllä intuitiivista " +#~ "tehtävienhallintaa varten." -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Board Features" +#~ msgstr "Lautan ominaisuudet" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Muokattavat sarakkeet, jotka vastaavat tehtävien tiloja" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Vedä ja pudota tehtäviä sarakkeiden välillä" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Ammattimainen ajanseuranta ja projektinhallinta" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Suodata projektin, käyttäjän tai prioriteetin mukaan" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "Flaskilla rakennettu kattava web-pohjainen ajanseurantasovellus, joka sisältää projektinhallinnan, asiakasorganisaation, tehtävienhallinnan, laskutuksen ja edistyneen analytiikan." +#~ msgid "Quick search across all tasks" +#~ msgstr "Nopea haku kaikista tehtävistä" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Laskutus" +#~ msgid "Using the Kanban Board" +#~ msgstr "Kanban-taulun käyttö" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Pääsy Tehtävät-valikosta tai projektisivulta" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Älykkäät ajastimet" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "Muuta tilaa vetämällä tehtäviä eri sarakkeisiin" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "Reaaliaikainen seuranta käyttämättömän toiminnan havaitsemisen ja reaaliaikaisten päivitysten avulla" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Napsauta tehtäväkorttia nähdäksesi/muokkaaksesi tietoja" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Asiakashallinta" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Käytä suodattimia keskittyäksesi tiettyyn työhön" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Järjestä asiakkaita kontaktien, hintojen ja projektisuhteiden avulla" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "Kanban-lauta sopii erinomaisesti sprintin " +#~ "suunnitteluun ja päivittäiseen standupiin. " +#~ "Jokainen sarake edustaa työnkulkusi vaihetta!" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Tehtäväjärjestelmä" +#~ msgid "Expense Tracking" +#~ msgstr "Kulujen seuranta" -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Jaa projektit tehtäviin edistymisen seurannan avulla" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Seuraa liiketoiminnan kuluja, hallitse " +#~ "kuitteja ja käsittele korvauksia tehokkaasti." -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "PDF-laskut" +#~ msgid "Expense Features" +#~ msgstr "Kustannusominaisuudet" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Luo ammattimaisia ​​laskuja seuratusta ajasta" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Luokittele kulut (matkat, ateriat, tarvikkeet jne.)" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Ydinominaisuudet" +#~ msgid "Attach receipt images and documents" +#~ msgstr "Liitä kuitin kuvia ja asiakirjoja" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Käynnistys/pysäytysajastimet projekti- ja tehtäväyhteydellä" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Seuraa summia, veroja ja maksutapoja" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Manuaalinen ajansyöttö muistiinpanoilla ja tunnisteilla" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Hyväksyntätyönkulku kulupyyntöjä varten" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Asiakas- ja projektiorganisaatio" +#~ msgid "Billing & Reimbursement" +#~ msgstr "Laskutus ja hyvitys" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Roolipohjaiset käyttöoikeudet ja käyttäjäprofiilit" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Merkitse kulut asiakkaille laskutettaviksi" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Lisäominaisuudet" +#~ msgid "Include expenses in client invoices" +#~ msgstr "Sisällytä kulut asiakkaan laskuihin" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Brändätty PDF-laskutus vero- ja maksuseurannalla" +#~ msgid "Track reimbursement status" +#~ msgstr "Seuraa korvauksen tilaa" -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Visuaalinen analytiikka ja yksityiskohtainen raportointi" +#~ msgid "Link expenses to specific projects" +#~ msgstr "Yhdistä kulut tiettyihin projekteihin" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "REST API integraatioita varten" +#~ msgid "Record Expense" +#~ msgstr "Kirjaa kulut" -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "PWA-ominaisuudet ja mobiiliystävällinen käyttöliittymä" +#~ msgid "Enter details and upload receipt" +#~ msgstr "Anna tiedot ja lähetä kuitti" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Alustan tuki" +#~ msgid "Submit for Approval" +#~ msgstr "Lähetä hyväksyttäväksi" -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Web-sovellus" +#~ msgid "Admin reviews and approves" +#~ msgstr "Järjestelmänvalvoja arvioi ja hyväksyy" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Työpöytäselaimet (Chrome, Firefox, Safari, Edge)" +#~ msgid "Invoice/Reimburse" +#~ msgstr "Lasku/palautus" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Mobiiliresponsiivinen muotoilu" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Lisää laskuun tai hyvitä" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "Progressiivinen verkkosovellus (PWA)" +#~ msgid "Track Payment" +#~ msgstr "Seuraa maksua" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Kosketusystävällinen tabletin käyttöliittymä" +#~ msgid "Monitor reimbursement status" +#~ msgstr "Seuraa korvauksen tilaa" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Käyttöjärjestelmät" +#~ msgid "Professional Invoicing" +#~ msgstr "Ammattimainen laskutus" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "Professional PDF generation" +#~ msgstr "Ammattimainen PDF-sukupolvi" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android ja iOS (selain)" +#~ msgid "Company branding and logos" +#~ msgstr "Yrityksen brändäys ja logot" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Raspberry Pi -tuki" +#~ msgid "Automatic invoice numbering" +#~ msgstr "Automaattinen laskujen numerointi" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Telakoitu käyttöönotto" +#~ msgid "Tax calculations" +#~ msgstr "Verolaskelmat" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Tietokannan tuki" +#~ msgid "Time Integration" +#~ msgstr "Aika integraatio" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (suositus)" +#~ msgid "Generate from time entries" +#~ msgstr "Luo aikamerkinnöistä" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (kehittäjä/testi)" +#~ msgid "Smart grouping by task/project" +#~ msgstr "Älykäs ryhmittely tehtävän/projektin mukaan" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Automaattiset siirrot Flask-Migraten avulla" +#~ msgid "Prevent double-billing" +#~ msgstr "Vältä kaksoislaskutus" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Varmuuskopiointi- ja palautustyökalut" +#~ msgid "Use project hourly rates" +#~ msgstr "Käytä projektin tuntihintoja" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Tekniset tiedot" +#~ msgid "Set up client and project details" +#~ msgstr "Määritä asiakas- ja projektitiedot" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Teknologiapino" +#~ msgid "Add Items" +#~ msgstr "Lisää kohteita" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "Backend" +#~ msgid "Generate from time or add manually" +#~ msgstr "Luo ajoissa tai lisää manuaalisesti" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "Käyttöliittymä" +#~ msgid "Review & Send" +#~ msgstr "Tarkista & Lähetä" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Käyttöönotto" +#~ msgid "Export PDF and update status" +#~ msgstr "Vie PDF ja päivitä tila" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Tärkeimmät ominaisuudet" +#~ msgid "Monitor status and payments" +#~ msgstr "Seuraa tilaa ja maksuja" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "Reaaliaikainen" +#~ msgid "Standard Reports" +#~ msgstr "Vakioraportit" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Projektiraportti - Aikajakauma projekteittain" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "Avoin lähdekoodi ja yhteisö" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Käyttäjäraportti – Yksittäiset tehokkuusmittarit" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Avoimen lähdekoodin edut" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Yhteenvetoraportti – Tärkeimmät tiedot ja trendit" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Täysi lähdekoodi saatavilla GitHubista" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Aikakirjausraportti - Yksityiskohtaiset aikalokit" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Lisensoitu GPL v3.0:lla" +#~ msgid "Export Options" +#~ msgstr "Vientiasetukset" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Yhteisölähtöinen kehitys" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "CSV-vienti - Ulkoiseen analyysiin" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Läpinäkyvä ongelmien seuranta ja virheraportit" +#~ msgid "Configurable delimiters" +#~ msgstr "Muokattavat erottimet" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Käyttöönottovaihtoehdot" +#~ msgid "Custom date ranges" +#~ msgstr "Muokatut ajanjaksot" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Docker-kuvat (GHCR)" +#~ msgid "Filtered data export" +#~ msgstr "Suodatetun tiedon vienti" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Itseisännöity käyttöönotto täydellä ohjauksella" +#~ msgid "Filter Options" +#~ msgstr "Suodatinvalinnat" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Pilvikäyttöön valmis Compose-kokoonpanoilla" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Ajanjakso - Mukautetut aloitus- ja lopetuspäivät" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Katso GitHubissa" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Projekti - Suodata tiettyjen projektien mukaan" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "Tuetut ominaisuudet" +#~ msgid "User - Filter by team members" +#~ msgstr "Käyttäjä - Suodata tiimin jäsenten mukaan" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Client - Filter by client organization" +#~ msgstr "Asiakas - Suodata asiakasorganisaation mukaan" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Tallennetut suodattimet - Tallenna usein käytetyt suodattimet" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "Visual Analytics" +#~ msgstr "Visuaalinen analytiikka" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Apua ja resursseja" +#~ msgid "Interactive bar charts" +#~ msgstr "Interaktiiviset pylväskaaviot" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Dokumentaatio" +#~ msgid "Time distribution pie charts" +#~ msgstr "Aikajakauman ympyräkaaviot" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Vaiheittaiset oppaat kaikille ominaisuuksille." +#~ msgid "Trend analysis over time" +#~ msgstr "Trendianalyysi ajan mittaan" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Näytä Ohje" +#~ msgid "Mobile-optimized charts" +#~ msgstr "Mobiilioptimoidut kaaviot" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Järjestelmätiedot" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Käytä tallennettuja suodattimia päästäksesi " +#~ "nopeasti yleisimpiin raporttinäkymiin. Tallenna " +#~ "suodattimet viikoittaisia ​​arvioita, " +#~ "kuukausilaskutusta tai tiettyä projektiseurantaa " +#~ "varten!" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Tila, versiot ja kokoonpanotiedot." +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Paranna tehokkuuttasi pikanäppäimillä, " +#~ "komentopaletilla ja automaatioominaisuuksilla." -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "Järjestelmänvalvojan käyttöoikeudet vaaditaan" +#~ msgid "Command Palette" +#~ msgstr "Komentopaletti" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Yhteisön tuki" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "Käytä mitä tahansa ominaisuutta välittömästi poistumatta näppäimistöstä" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Ilmoita ongelmista, pyydä ominaisuuksia, osallistu." +#~ msgid "Opening the Command Palette" +#~ msgstr "Komentopaletin avaaminen" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "GitHub-ongelmat" +#~ msgid "Press the question mark key" +#~ msgstr "Paina kysymysmerkkinäppäintä" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Quick search" +#~ msgstr "Pikahaku" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "Näytä kaikkien aikojen merkinnät" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "Tässä on nopea yleiskatsaus työstäsi." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "Käynnistys/pysäytysajastimet projekti- ja tehtäväyhteydellä" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "Luotu klo" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "Käynnistys/pysäytysajastimet projekti- ja tehtäväyhteydellä" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "Go to Projects" +#~ msgstr "Siirry kohtaan Projektit" -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "Tauko" +#~ msgid "Go to Tasks" +#~ msgstr "Siirry kohtaan Tehtävät" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "Takaisin" +#~ msgid "New Time Entry" +#~ msgstr "Uusi aikamerkintä" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Pikanäppäimet" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Navigoi nopeammin näppäimistöohjattujen komentojen" +#~ " avulla. Paina Shift+? nähdäksesi kaikki" +#~ " pikakuvakkeet." -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Alkoi klo" +#~ msgid "Global Search" +#~ msgstr "Maailmanlaajuinen haku" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "Löydä nopeasti projekteja, tehtäviä, " +#~ "asiakkaita ja aikamerkintöjä mistä tahansa " +#~ "sovelluksesta." -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "Säätö" +#~ msgid "Email Notifications" +#~ msgstr "Sähköposti-ilmoitukset" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Saat sähköpostiisi ilmoituksen tehtävätehtävistä," +#~ " erääntyneistä laskuista ja viikoittaisista " +#~ "yhteenvedoista." -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Administrator Features" +#~ msgstr "Järjestelmänvalvojan ominaisuudet" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "Admin" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "Admin" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "Älykkäät ajastimet" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "Nollaa" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Luo uusia käyttäjiä joustavalla todennuksella" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Tauko" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Määritä mukautettuja rooleja tietyillä käyttöoikeuksilla" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Aktivoi/deaktivoi käyttäjätilit" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "View user statistics and activity" +#~ msgstr "Tarkastele käyttäjätilastoja ja toimintaa" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Ei aktiivista ajastinta." +#~ msgid "Generate API tokens for users" +#~ msgstr "Luo API-tunnuksia käyttäjille" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Access Control" +#~ msgstr "Kulunvalvonta" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "Lopeta istunto" +#~ msgid "Granular role-based permissions system" +#~ msgstr "Yksityiskohtainen roolipohjainen käyttöoikeusjärjestelmä" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Mukautetut roolit, joissa on tarkat käyttöoikeudet" -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "User data access controls" +#~ msgstr "Käyttäjätietojen käyttöoikeudet" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "Aika" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "OIDC/SSO-integraatio (Azure AD, Authelia jne.)" -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "API token management for integrations" +#~ msgstr "API-tunnusten hallinta integraatioita varten" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Authentication Methods" +#~ msgstr "Todennusmenetelmät" -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "Ylityöasetukset" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Vain käyttäjätunnus (yksinkertainen sisäinen käyttö)" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (yrityksen todennus)" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "Both methods simultaneously" +#~ msgstr "Molemmat menetelmät samanaikaisesti" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Automaattinen roolin jako ryhmien kautta" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "Kohdista oikealle" +#~ msgid "Role & Permission Management" +#~ msgstr "Rooli- ja lupahallinta" -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "Seuraa aikaa. Pysy järjestyksessä." +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Luo mukautettuja rooleja järjestelmänvalvojan/käyttäjän lisäksi" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "Työtunteja yhteensä" +#~ msgid "Set granular permissions per feature" +#~ msgstr "Määritä yksityiskohtaiset käyttöoikeudet ominaisuudelle" -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "Aktiiviset hälytykset" +#~ msgid "Assign users to multiple roles" +#~ msgstr "Määritä käyttäjille useita rooleja" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "View and manage all permissions" +#~ msgstr "Tarkastele ja hallinnoi kaikkia käyttöoikeuksia" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "General Settings" +#~ msgstr "Yleiset asetukset" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "Timezone and locale settings" +#~ msgstr "Aikavyöhyke- ja alueasetukset" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Currency configuration" +#~ msgstr "Valuutan määritys" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "Arvioitu arvo" +#~ msgid "Time rounding rules" +#~ msgstr "Ajan pyöristyssäännöt" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Self-registration settings" +#~ msgstr "Itserekisteröinnin asetukset" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Timer Settings" +#~ msgstr "Ajastinasetukset" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "Aikakirjaukset tällä viikolla" +#~ msgid "Idle timeout configuration" +#~ msgstr "Idle timeout -määritys" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Single active timer mode" +#~ msgstr "Yksi aktiivinen ajastintila" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "Viikko" +#~ msgid "Timer display preferences" +#~ msgstr "Ajastimen näyttöasetukset" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "Viime vuonna" +#~ msgid "Notification settings" +#~ msgstr "Ilmoitusasetukset" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "Database Management" +#~ msgstr "Tietokannan hallinta" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Create manual database backups" +#~ msgstr "Luo manuaaliset tietokannan varmuuskopiot" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Viimeaikaiset merkinnät" +#~ msgid "View database migration status" +#~ msgstr "Näytä tietokannan siirron tila" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "Näytä kaikki" +#~ msgid "Monitor database performance" +#~ msgstr "Tarkkaile tietokannan suorituskykyä" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Jatka - Käynnistä uusi ajastin samoilla ominaisuuksilla" +#~ msgid "Clean up old data and logs" +#~ msgstr "Siivoa vanhat tiedot ja lokit" -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Muokkaa merkintää" +#~ msgid "System Monitoring" +#~ msgstr "Järjestelmän valvonta" -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Päällekkäinen merkintä" +#~ msgid "View system information and health" +#~ msgstr "Tarkastele järjestelmän tietoja ja kuntoa" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Poista merkintä" +#~ msgid "Monitor application performance" +#~ msgstr "Tarkkaile sovelluksen suorituskykyä" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "Viimeaikaisia ​​merkintöjä ei löytynyt." +#~ msgid "Review system logs and errors" +#~ msgstr "Tarkista järjestelmän lokit ja virheet" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Mobiiliystävälliset ominaisuudet" -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Viikkotavoite" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Päiviä jäljellä" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Tarve" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "tavoitteen saavuttamiseksi" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Ei viikkotavoitetta" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Aseta viikoittainen aikatavoite seurataksesi edistymistäsi" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Luo tavoite" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "Parhaat projektit (30 päivää)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "Käyttäjäraportti" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "Aikajakauman ympyräkaaviot" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "Ei toimintaa viimeisen 30 päivän aikana." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "Aloita ajan seuranta" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Parhaat projektit (30 päivää)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Ei toimintaa viimeisen 30 päivän aikana." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Optimoitu puhelimille ja tableteille" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Touch-friendly interface" +#~ msgstr "Kosketusystävällinen käyttöliittymä" -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "Mukautuvat asettelut kaikille näyttökokoille" -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "Kopioitu %(count)d lainaus" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Korkea kontrasti ulkonäkyvyyden takaamiseksi" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "Virhe PDF:n luomisessa: %(error)s" +#~ msgid "Mobile Navigation" +#~ msgstr "Mobiilinavigointi" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Alempi välilehtipalkki helpottaa pääsyä" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "Alustan tuki" +#~ msgid "Quick access to dashboard" +#~ msgstr "Nopea pääsy kojelautaan" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "One-tap time logging" +#~ msgstr "Ajan kirjaaminen yhdellä napautuksella" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Mobile-optimized reports" +#~ msgstr "Mobiilioptimoidut raportit" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Installation" +#~ msgstr "Asennus" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Avaa TimeTracker mobiiliselaimessa" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Etsi \"Lisää aloitusnäyttöön\" -vaihtoehto" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Noudata selainkohtaisia ​​asennusohjeita" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Käynnistä aloitusnäytöltäsi kuin natiivisovellus" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "PWA Benefits" +#~ msgstr "PWA:n edut" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "Offline-ominaisuus perustoimintoihin" + +#~ msgid "Faster loading times" +#~ msgstr "Nopeammat latausajat" + +#~ msgid "Native app-like experience" +#~ msgstr "Natiivisovelluksen kaltainen kokemus" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Push-ilmoitukset (jos tuettu)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "Interaktiiviset pylväskaaviot" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "Tekniset tiedot" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "Dokumentaatio" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Vianetsintä ja UKK" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "Mitä tapahtuu, jos unohdan pysäyttää ajastimen?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "Ajastin jatkaa toimintaansa, kunnes pysäytät" +#~ " sen manuaalisesti. Näet aktiivisen " +#~ "ajastimesi kojelaudassa ja ajastinsivulla. " +#~ "Ajastin säilyy, vaikka suljet selaimen " +#~ "tai käynnistät laitteen uudelleen. Jos " +#~ "tyhjäkäynnin tunnistus on käytössä, ajastin" +#~ " voi pysähtyä automaattisesti määritetyn " +#~ "aikakatkaisujakson jälkeen." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "Voinko muokata aikamerkintöjä niiden luomisen jälkeen?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Kyllä, voit muokata mitä tahansa " +#~ "aikamerkintää napsauttamalla muokkauspainiketta " +#~ "aikamerkintäluettelossa. Voit muokata projektia, " +#~ "aloitus- ja lopetusaikoja, muistiinpanoja, " +#~ "tunnisteita, laskutettavaa tilaa ja tehtävän" +#~ " määritystä. Järjestelmänvalvojat voivat muokata" +#~ " kaikkia aikamerkintöjä, kun taas " +#~ "tavalliset käyttäjät voivat muokata vain " +#~ "omia merkintöjään." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "Kuinka seuraan useiden projektien aikaa?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "Oletuksena sinulla voi olla vain yksi" +#~ " aktiivinen ajastin kerrallaan. Vaihda " +#~ "projektia pysäyttämällä nykyinen ajastin ja" +#~ " käynnistämällä uusi eri projektille. " +#~ "Vaihtoehtoisesti voit luoda manuaalisia " +#~ "aikamerkintöjä menneille töille tai määrittää" +#~ " järjestelmän sallimaan useita aktiivisia " +#~ "ajastimia (järjestelmänvalvojan asetus)." + +#~ msgid "How do I export my time data?" +#~ msgstr "Kuinka voin viedä aikatietoni?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Siirry Raportit-sivulle ja käytä Vie " +#~ "CSV -ominaisuutta. Voit käyttää suodattimia" +#~ " viedäksesi tiettyjä tietoja tai viedäksesi" +#~ " kaikki aikamerkinnät. CSV-tiedosto " +#~ "sisältää kaikki aikatiedot, ja se " +#~ "voidaan avata Excelissä tai muissa " +#~ "taulukkolaskentaohjelmissa. Voit myös määrittää " +#~ "erottimen eri aluestandardeille." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "Mitä eroa on laskutettavalla ja ei-laskutettavalla ajalla?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "Laskutettavaa aikaa seurataan asiakkaan " +#~ "laskutusta varten ja siihen voi liittyä" +#~ " tuntihinta. Ei-laskutettava aika on " +#~ "tarkoitettu sisäisiin töihin, joita ei " +#~ "veloiteta asiakkailta. Voit merkitä " +#~ "yksittäisiä aikamerkintöjä laskutettaviksi tai " +#~ "ei-laskutettaviksi, ja projekteissa voi " +#~ "olla laskutettavat oletusasetukset. Tämä " +#~ "erottelu on ratkaisevan tärkeää tarkan " +#~ "laskutuksen ja kannattavuusanalyysin kannalta." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "Kuinka luon laskun aikamerkinnöistäni?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Siirry kohtaan Laskut → Luo lasku, " +#~ "määritä asiakas- ja projektitiedot ja " +#~ "käytä sitten \"Luo aikamerkinnöistä\" " +#~ "luodaksesi automaattisesti laskukohteita " +#~ "seuranneesta ajasta. Voit suodattaa ajanjakson" +#~ " ja projektin mukaan, ja järjestelmä " +#~ "ryhmittelee aikamerkinnät älykkäästi. Tarkista " +#~ "luodut kohteet ja vie ne ammattimaisena" +#~ " PDF-tiedostona." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "Voinko käyttää TimeTrackeria mobiililaitteellani?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "Kyllä! TimeTracker on täysin reagoiva ja" +#~ " toimii erinomaisesti mobiililaitteissa. Voit " +#~ "asentaa sen Progressive Web App " +#~ "-sovelluksena (PWA) saadaksesi alkuperäisen " +#~ "kaltaisen kokemuksen. Mobiilikäyttöliittymä sisältää" +#~ " välilehtipalkin, joka helpottaa navigointia, " +#~ "ja kosketusoptimoidut säätimet ajan seurantaan" +#~ " liikkeellä ollessasi." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "Kuinka käytän komentopalettia ja pikanäppäimiä?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Avaa komentopaletti painamalla " +#~ "kysymysmerkkinäppäintä (?). Sieltä voit etsiä" +#~ " mitä tahansa toimintoa tai " +#~ "navigointikohdetta kirjoittamalla. Käytä " +#~ "näppäimistösarjoja, kuten \"g d\" " +#~ "Dashboardille, \"g p\" projekteille tai " +#~ "\"n e\" New Entrylle. Paina Shift+? " +#~ "nähdäksesi kaikki käytettävissä olevat " +#~ "pikakuvakkeet. Pikahakua varten paina Ctrl+K" +#~ " (tai Cmd+K Macissa)." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "Kuinka luon joukkoaikamerkintöjä useille päiville?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Siirry kohtaan Työ → Joukkoaikasyöttö. " +#~ "Valitse projektisi, valitse ajanjakso, aseta" +#~ " päivittäiset alkamis- ja päättymisajat ja" +#~ " halutessasi ohita viikonloput. Järjestelmä " +#~ "luo identtiset aikamerkinnät jokaiselle alueen" +#~ " päivälle. Tämä sopii mainiosti " +#~ "säännöllisten työtapojen kirjaamiseen tai " +#~ "menneiden työaikojen täyttämiseen, kun olet" +#~ " työskennellyt tasaisin väliajoin." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "Mitä ovat ajansyöttömallit ja miten niitä käytetään?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "Ajansyöttömallien avulla voit tallentaa usein" +#~ " käytetyt ajansyöttökokoonpanot. Kun luot " +#~ "manuaalista aikamerkintää, valitse \"Tallenna " +#~ "mallina\" tallentaaksesi projektin, tehtävän " +#~ "ja muistiinpanot. Myöhemmin, kun luot " +#~ "uusia merkintöjä, voit valita mallin " +#~ "täyttääksesi nämä tiedot nopeasti. Mallit " +#~ "ovat henkilökohtaisia ​​ja näkyvät vain " +#~ "sinulle." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "Kuinka seuraan kuluja ja lisään ne laskuihin?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Siirry kohtaan Kulut → Uusi kulu " +#~ "kirjataksesi liiketoiminnan kulut. Lataa " +#~ "kuittikuvat, luokittele kulu ja merkitse " +#~ "se tarvittaessa laskutettavaksi. Kun luot " +#~ "laskuja, voit sisällyttää nämä kulut " +#~ "rivikohtiin. Kulut tukevat hyväksynnän " +#~ "työnkulkuja, korvausten seurantaa, ja ne " +#~ "voidaan linkittää tiettyihin projekteihin." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "Voinko käyttää Markdownia kuvauksissa?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "Kyllä! Projektien ja tehtävien kuvaukset " +#~ "tukevat täyttä Markdown-muotoilua. Voit " +#~ "käyttää lihavointia, kursiivia, otsikoita, " +#~ "luetteloita, linkkejä, koodilohkoja, taulukoita " +#~ "ja kuvia. Näin voit luoda monipuolista," +#~ " hyvin muotoiltua dokumentaatiota suoraan " +#~ "projekteihin ja tehtäviin. Markdown-editori" +#~ " sisältää esikatselutilan ja tukee tummaa" +#~ " teemaa." + +#~ msgid "Where can I get additional help?" +#~ msgstr "Mistä saan lisäapua?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "Ilmoita ongelmista ja pyydä ominaisuuksia käyttöön" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "Järjestelmänvalvojana voit käyttää järjestelmän " +#~ "lisätietoja ja diagnostiikkaa" + +#~ msgid "section." +#~ msgstr "osio." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "Tarvitsetko edelleen apua?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "Etkö löydä etsimääsi? Tässä on lisäresursseja:" + +#~ msgid "Complete Documentation" +#~ msgstr "" + +#~ msgid "Documentation Index" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "Salasanan tulee olla vähintään 8 merkkiä pitkä" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "Pika-aloitusopas" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "Sähköpostimallit" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Getting Started" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Tehtävä (valinnainen)" +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Huomautuksia (valinnainen)" +#~ msgid "GitHub Repository" +#~ msgstr "GitHub-arkisto" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "Tehtävä (valinnainen)" +#~ msgid "Report Issue" +#~ msgstr "Ilmoita ongelmasta" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "esim. kokous, kehitys, järjestelmänvalvoja" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "Open support" +#~ msgstr "Tukea" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Search Results" +#~ msgstr "Hakutulokset" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "Hae muistiinpanoja tai tunnisteita" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Results" +#~ msgstr "Tulokset" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "Haluatko varmasti poistaa tämän aikamerkinnän?" +#~ " Tätä toimintoa ei voi kumota." -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "No results found" +#~ msgstr "Tuloksia ei löytynyt" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "Kokeile toista kyselyä tai tarkista oikeinkirjoitus." -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "esim. asiakastapaaminen, sivustokäynti" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "Lisätietoja..." -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "e.g., Office, Home" +#~ msgstr "esim. toimisto, koti" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "esim. asiakassivusto, lentokenttä" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "esim. 12345" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "esim. 12400" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Tukea kehitystä" +#~ msgid "e.g., VW Golf" +#~ msgstr "esim VW Golf" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "e.g., ABC-123" +#~ msgstr "esim. ABC-123" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "Ajan seuranta" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Back to Mileage" +#~ msgstr "Takaisin Rooleihin" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "Päivämäärä alkaen" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Add Point" +#~ msgstr "Lisää huomautus" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "Kulujen seuranta" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Track ID" +#~ msgstr "Seurattu" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Idle" +#~ msgstr "Otsikko" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "Tracking" +#~ msgstr "Ajan seuranta" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "GPS tracking started" +#~ msgstr "Aloita ajan seuranta" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Track point added" +#~ msgstr "Seuraa maksua" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "GPS tracking stopped" +#~ msgstr "Aloita ajan seuranta" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Expense created" +#~ msgstr "Kulutus hylätty" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Filter Mileage" +#~ msgstr "Suodattimen kilometrimäärä" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "Purpose, location..." +#~ msgstr "Tarkoitus, sijainti..." -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Optional approval notes..." +#~ msgstr "Valinnaiset hyväksymistiedot..." -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Rejection reason (required)" +#~ msgstr "Hylkäämisen syy (pakollinen)" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "More navigation" +#~ msgstr "Mobiilinavigointi" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Main" +#~ msgstr "Sähköposti" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "Kirjoita komento tai hae..." -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Täydellinen dokumentaatio ja käyttöopas" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Pikanavigointi" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Suodata osiot..." +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Pika-aloitus" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Raportit ja analyysit" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Tuottavuusominaisuudet" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Järjestelmänvalvojan ominaisuudet" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Mobiilikäyttö" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "Dokumentaatio" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Vianetsintä" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "TimeTrackerin ohjekeskus" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "Kaikki mitä sinun tulee tietää saadaksesi kaiken irti TimeTrackerista" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Aloita ajan seuranta" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Näytä projektit" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Luo raportteja" +#~ msgid "Record New Payment" +#~ msgstr "Tallenna uusi maksu" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "API-tunnukset" +#~ msgid "Total Payments" +#~ msgstr "Maksut yhteensä" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "Yhdyskäytävämaksut" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Pika-aloitusopas" +#~ msgid "Filter Payments" +#~ msgstr "Suodata maksut" -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "Uusille käyttäjille" +#~ msgid "ID" +#~ msgstr "Maksettu" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Kirjaudu sisään käyttäjätunnuksellasi (salasanaa ei vaadita)" +#~ msgid "Delete Selected Payments" +#~ msgstr "Poista valitut maksut" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Tutustu hallintapaneeliin nähdäksesi yleiskatsauksen" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Muuta valittujen maksujen tilaa" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Aloita ensimmäinen ajastin olemassa olevasta projektista" +#~ msgid "Related Invoice" +#~ msgstr "Asiaan liittyvä lasku" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Tarkastele aikamerkintöjäsi raporteissa" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "esim. työmatka Berliiniin" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "Järjestelmänvalvojille" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "esim. DE, US, GB" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Määritä asiakkaat Asiakashallinta-osiossa" +#~ msgid "e.g., Berlin" +#~ msgstr "esim Berliini" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Luo projekteja ja anna ne asiakkaille" +#~ msgid "Filter Claims" +#~ msgstr "Suodata väitteet" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Määritä järjestelmäasetukset (aikavyöhyke, valuutta jne.)" +#~ msgid "Delete Selected Claims" +#~ msgstr "Poista valitut vaatimukset" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Hallinnoi käyttäjiä ja käyttöoikeuksia" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Muuta valittujen vaatimusten tilaa" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Provinkki:" +#~ msgid "Additional notes about this rate..." +#~ msgstr "Lisähuomautuksia tästä hinnasta..." -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "Käytä mobiiliystävällistä käyttöliittymää seurataksesi aikaa liikkeellä ollessasi. Ajastin jatkaa toimintaansa, vaikka suljet selaimen!" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "Haluatko varmasti poistaa tämän päivärahan?" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "Reaaliaikainen seuranta automaattisella joutokäynnin tunnistuksella ja WebSocket-päivityksillä" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Poista päivärahoitus" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Manuaalinen syöttö" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "Kirjaa aika manuaalisesti mukautetuilla aloitus- ja lopetusajoilla" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Ajastimen käynnistäminen" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "Siirry Ajastin-sivulle tai kojelautaan" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Valitse projekti avattavasta valikosta" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "Valinnaisesti voit valita tehtävän tarkempaa seurantaa varten" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Lisää muistiinpanoja tekemästäsi työstä (valinnainen)" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Lisää tunnisteet pilkuilla erotettuina (valinnainen)" +#~ msgid "Billable Project" +#~ msgstr "Laskutettava projekti" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Napsauta \"Aloita ajastin\"" +#~ msgid "Estimated Hours" +#~ msgstr "Arvioidut tunnit" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Ajastimen ominaisuudet" +#~ msgid "Budget Amount" +#~ msgstr "Budjetin summa" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Reaaliaikainen keston näyttö" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Jatkuu, jos selain sulkeutuu" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Automaattinen tyhjäkäynnin tunnistus (konfiguroitavissa)" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Yksi aktiivinen ajastin käyttäjää kohti (konfiguroitavissa)" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "WebSocketin live-päivitykset" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Manuaalinen ajansyöttö" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "Luo aikamerkintöjä manuaalisesti, kun haluat tallentaa tietokoneen ulkopuolella vietettyä aikaa tai muuttaa olemassa olevia merkintöjä." +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Vaaditut tiedot" +#~ msgid "Project Code" +#~ msgstr "Projektikoodi" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Projektin valinta" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Aloituspäivämäärä ja -aika" +#~ msgid "Create Project" +#~ msgstr "Luo projekti" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Päättymispäivämäärä ja -aika" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Valinnaiset tiedot" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Tehtävätehtävä" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Kuvaus/huomautukset" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Tunnisteet luokittelua varten" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Laskutettavan tilan ohitus" +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Kehittyneet ajansyöttöominaisuudet" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Joukkopääsy" +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "Luo useita aikamerkintöjä peräkkäisille päiville samalla projektilla ja kestolla. Täydellinen tavallisiin työmalleihin." +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Mallit" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "Tallenna usein käytetyt aikamerkinnät malleiksi nopeaa uudelleenkäyttöä varten. Tallentaa projektin, tehtävän ja muistiinpanot." +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "Visualisoi aikamerkinnäsi kalenteriin. Vedä ja pudota ajastaaksesi uudelleen tai napsauta päivämääriä lisätäksesi merkintöjä." +#~ msgid "Kanban board columns" +#~ msgstr "Kanban-taulupylväät" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Hankkeen tiedot" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Kuvaava projektin nimi" +#~ msgid "Edit swimlane" +#~ msgstr "Muokkaa uimarataa" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Liittynyt asiakasorganisaatio" +#~ msgid "Column" +#~ msgstr "Sarake" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Hankkeen tiedot ja laajuus" +#~ msgid "List View" +#~ msgstr "Luettelonäkymä" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Aktiivinen, valmis tai arkistoitu" +#~ msgid "Grid View" +#~ msgstr "Ruudukkonäkymä" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Laskutustiedot" +#~ msgid "Rate" +#~ msgstr "Päivämäärä" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Pitääkö laskutusta varten seurata aikaa" +#~ msgid "Edit Project" +#~ msgstr "Muokkaa projektia" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Laskutettavan ajan laskelmien hinta" +#~ msgid "Add Cost" +#~ msgstr "Lisää huomautus" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Laskutusviite" +#~ msgid "Add Cost to Project" +#~ msgstr "Takaisin projektiin" -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "PO-numero tai laskutuskoodi" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "esim. matkustaa asiakaskokoukseen" -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Projektitoiminnot" +#~ msgid "Brief description of the cost" +#~ msgstr "Lyhyt kuvaus tästä kategoriasta..." -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Luo uusia projekteja asiakassuhteiden kanssa" +#~ msgid "Select category" +#~ msgstr "Luokka" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Muokkaa olemassa olevia projekteja päivittääksesi tiedot" +#~ msgid "Materials" +#~ msgstr "Materiaali" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Arkistoi projektit piilottaaksesi ajastimia (säilyttää tiedot)" +#~ msgid "Software/Licenses" +#~ msgstr "esim. ohjelmistolisenssi" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Poista projektit (poistaa kaikki liittyvät aikamerkinnät)" +#~ msgid "Additional details about this cost" +#~ msgstr "Lisätietoja tästä säädöstä" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Parhaat käytännöt" +#~ msgid "Billable to client" +#~ msgstr "Takaisin asiakkaalle" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Käytä kuvaavia projektinimiä" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Aseta tarkat tuntihinnat laskutukseen" +#~ msgid "Add Extra Good" +#~ msgstr "Lisää Extra Good" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Arkistoi poistamisen sijaan, jos mahdollista" +#~ msgid "Add a product or service to" +#~ msgstr "Lisää tuote tai palvelu" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Käytä laskutusviitteitä ulkoiseen seurantaan" +#~ msgid "Back to Project" +#~ msgstr "Takaisin projektiin" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "Asiakashallintajärjestelmä auttaa organisoimaan työsi asiakasorganisaatioittain, ehkäisemään virheitä ja virtaviivaistamaan projektien luomista." +#~ msgid "SKU/Product Code" +#~ msgstr "SKU/tuotekoodi" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Asiakastiedot" +#~ msgid "What happens when you archive a project?" +#~ msgstr "Mitä tapahtuu, kun arkistoit projektin?" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Organisaation nimi" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "Projekti piilotetaan aktiivisten projektien luetteloista" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Yrityksen tai asiakkaan nimi" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "Tähän projektiin ei voi lisätä uusia aikamerkintöjä" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Ensisijaiset yhteystiedot" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "Olemassa olevat tiedot ja aikamerkinnät säilyvät" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "Sähköposti & Puhelin" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "Voit tarvittaessa purkaa projektin arkistoinnin myöhemmin" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Yhteystiedot" +#~ msgid "Reason for Archiving" +#~ msgstr "Syy arkistointiin" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Yrityksen osoite" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "esim. projekti valmis, asiakassopimus päättynyt, projekti peruttu jne." -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Edut" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "Syyn lisääminen helpottaa projektin " +#~ "organisointia ja tulevaa viittausta." -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "Pudotusvalikon valinta estää kirjoitusvirheet" +#~ msgid "Quick Select" +#~ msgstr "Pikavalinta" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Oletushinnat täyttävät projektit automaattisesti" +#~ msgid "Project completed successfully" +#~ msgstr "Projekti suoritettu onnistuneesti" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Asiakkaan johdonmukainen nimeäminen" +#~ msgid "Project Completed" +#~ msgstr "Projekti valmis" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Helpompi projektin organisointi" +#~ msgid "Client contract ended" +#~ msgstr "Asiakassopimus päättyi" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Projektien määrä" +#~ msgid "Contract Ended" +#~ msgstr "Sopimus päättynyt" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Aktiiviset projektit kokonaisuudessaan" +#~ msgid "Project cancelled by client" +#~ msgstr "Asiakas peruutti projektin" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Työtunteja yhteensä" +#~ msgid "Project on hold indefinitely" +#~ msgstr "Projekti keskeytetty toistaiseksi" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Kustannusarvio" +#~ msgid "On Hold" +#~ msgstr "Pidossa" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Arvioidut laskutussummat" +#~ msgid "Maintenance period ended" +#~ msgstr "Huoltojakso päättyi" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "Jaa projektit hallittaviin tehtäviin yksityiskohtaisen seurannan ja edistymisen seurannan avulla." +#~ msgid "Maintenance Ended" +#~ msgstr "Huolto päättynyt" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Tehtävän ominaisuudet" +#~ msgid "Archive Project" +#~ msgstr "Arkistoprojekti" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Nimi & Kuvaus" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "Järjestä työsi ja seuraa aikaa tehokkaasti luomalla uusi projekti" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Selkeä tehtäväntunnistus" +#~ msgid "Enter a descriptive project name" +#~ msgstr "Anna kuvaava projektin nimi" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Prioriteettitasot" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "Valitse selkeä, kuvaava nimi, joka selittää projektin laajuuden" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Matala, keskitaso, korkea, kiireellinen" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Lyhyt koodi, esim. ABC" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Eräpäivät" +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Valinnainen: Lyhyt tunniste näkyy Kanban-korteissa" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Määräajan seuranta" +#~ msgid "Create new client" +#~ msgstr "Luo uusi asiakas" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Tehtävä" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "" +#~ "Anna yksityiskohtaista tietoa projektista, " +#~ "tavoitteista ja suorituksista..." -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Tehtävän omistajuus" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" +#~ "Valinnainen: Lisää kontekstia, tavoitteita tai" +#~ " erityisiä vaatimuksia projektille" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Tilan seuranta" +#~ msgid "Enable billing for this project" +#~ msgstr "Ota tämän projektin laskutus käyttöön" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "Tehtävä - Ei aloitettu" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "Jätä tyhjäksi ei-laskutettaville projekteille" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "Käynnissä - Tällä hetkellä töissä" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "PO-numero, sopimusviite jne." -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Arvostelu – valmis tarkastettavaksi" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "Valinnainen: Lisää viitenumero tai tunniste laskutusta varten" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Valmis - Valmis" +#~ msgid "e.g. 10000.00" +#~ msgstr "esim. 10 000,00" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Peruutettu – ei tarvita" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "" +#~ "Valinnainen: Aseta projektin kokonaisbudjetti " +#~ "kulutuksen seurantaa varten" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Aikaseurantaominaisuudet" +#~ msgid "Alert Threshold (%)" +#~ msgstr "Varoituskynnys (%)" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Käynnistä ajastimet suoraan tehtävistä" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "Ilmoita, kun kulutettu budjetti ylittää tämän kynnyksen" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Linkitä aikamerkinnät tiettyihin tehtäviin" +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Seuraa arvioituja ja todellisia tunteja" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Seuraa tehtävän edistymistä automaattisesti" +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Tehtävänäkymät" +#~ msgid "Project Creation Tips" +#~ msgstr "Vinkkejä projektin luomiseen" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Omat tehtävät – sinulle määrätyt tehtävät" +#~ msgid "Clear Naming" +#~ msgstr "Tyhjennä nimeäminen" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Kaikki tehtävät - Täydellinen tehtäväluettelo" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "Käytä kuvaavia nimiä, jotka osoittavat selvästi projektin tarkoituksen" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Erääntyneet tehtävät - Erääntyneet erät" +#~ msgid "Billing Setup" +#~ msgstr "Laskutusasetukset" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Projektitehtävät - Tehtävät projekteissa" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Aseta sopivat tuntihinnat projektin " +#~ "monimutkaisuuden ja asiakkaan budjetin mukaan" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Yhteistyöominaisuudet" +#~ msgid "Detailed Description" +#~ msgstr "Yksityiskohtainen kuvaus" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Tehtävien kommentit – tehtävistä keskusteluja" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "Sisällytä projektin tavoitteet, suoritteet ja keskeiset vaatimukset" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Markdown-tuki – Rikas muotoilu kuvauksissa" +#~ msgid "Client Selection" +#~ msgstr "Asiakkaan valinta" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Käyttäjämaininnat – Tag-tiimin jäsenet (jos käytössä)" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "Valitse oikea asiakas varmistaaksesi oikean projektin organisoinnin" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Tiedostoliitteet – Liitä tiedostoja tehtäviin (jos käytössä)" +#~ msgid "Creating..." +#~ msgstr "Luodaan..." -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Markdown-muotoilu" +#~ msgid "Could not create client. Please try again." +#~ msgstr "Asiakasta ei voitu luoda. Yritä uudelleen." -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "Tehtävä- ja projektikuvaukset tukevat Markdownia:" +#~ msgid "Client created" +#~ msgstr "Asiakas luotu" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Lihavoitu**, *Kursivoitu*, ~~Yliviivattu~~" +#~ msgid "Network error while creating client" +#~ msgstr "Verkkovirhe asiakasta luotaessa" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# otsikot, - luettelot, [linkit](url)" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "Project Dashboard & Analytics" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```koodilohkot```, taulukot, kuvat" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "Visualisoi työnkulkusi vetämällä ja pudottamalla Kanban-levyllä intuitiivista tehtävienhallintaa varten." +#~ msgid "Budget Analysis" +#~ msgstr "Budjettianalyysi" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Lautan ominaisuudet" +#~ msgid "All Time" +#~ msgstr "Kaikki aika" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Muokattavat sarakkeet, jotka vastaavat tehtävien tiloja" +#~ msgid "Last 7 Days" +#~ msgstr "Viimeiset 7 päivää" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Vedä ja pudota tehtäviä sarakkeiden välillä" +#~ msgid "Last 30 Days" +#~ msgstr "Viimeiset 30 päivää" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Suodata projektin, käyttäjän tai prioriteetin mukaan" +#~ msgid "Last 3 Months" +#~ msgstr "Viimeiset 3 kuukautta" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Nopea haku kaikista tehtävistä" +#~ msgid "Last Year" +#~ msgstr "Viime vuonna" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Kanban-taulun käyttö" +#~ msgid "estimated" +#~ msgstr "arvioitu" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Pääsy Tehtävät-valikosta tai projektisivulta" +#~ msgid "Budget Used" +#~ msgstr "Käytetty budjetti" -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Muuta tilaa vetämällä tehtäviä eri sarakkeisiin" +#~ msgid "of budget" +#~ msgstr "budjetista" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Napsauta tehtäväkorttia nähdäksesi/muokkaaksesi tietoja" +#~ msgid "Tasks Complete" +#~ msgstr "Tehtävät suoritettu" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Käytä suodattimia keskittyäksesi tiettyyn työhön" +#~ msgid "completion" +#~ msgstr "valmistuminen" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "Kanban-lauta sopii erinomaisesti sprintin suunnitteluun ja päivittäiseen standupiin. Jokainen sarake edustaa työnkulkusi vaihetta!" +#~ msgid "Team Members" +#~ msgstr "Joukkueen jäsenet" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Kulujen seuranta" +#~ msgid "contributing" +#~ msgstr "myötävaikuttaa" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "Seuraa liiketoiminnan kuluja, hallitse kuitteja ja käsittele korvauksia tehokkaasti." +#~ msgid "Budget vs. Actual" +#~ msgstr "Budjetti vs. todellinen" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Kustannusominaisuudet" +#~ msgid "No budget set for this project" +#~ msgstr "Tälle projektille ei ole asetettu budjettia" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Luokittele kulut (matkat, ateriat, tarvikkeet jne.)" +#~ msgid "Task Status Distribution" +#~ msgstr "Tehtävän tilan jakelu" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Liitä kuitin kuvia ja asiakirjoja" +#~ msgid "No tasks created yet" +#~ msgstr "Tehtäviä ei ole vielä luotu" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Seuraa summia, veroja ja maksutapoja" +#~ msgid "Team Member Contributions" +#~ msgstr "Ryhmän jäsenten panokset" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Hyväksyntätyönkulku kulupyyntöjä varten" +#~ msgid "No time entries recorded yet" +#~ msgstr "Aikamerkintöjä ei ole vielä tallennettu" -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Laskutus ja hyvitys" +#~ msgid "Time Tracking Timeline" +#~ msgstr "Aikaseurannan aikajana" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Merkitse kulut asiakkaille laskutettaviksi" +#~ msgid "Select a time period to view timeline" +#~ msgstr "Valitse ajanjakso nähdäksesi aikajanan" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Sisällytä kulut asiakkaan laskuihin" +#~ msgid "Team Member Details" +#~ msgstr "Joukkueen jäsentiedot" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Seuraa korvauksen tilaa" +#~ msgid "tasks" +#~ msgstr "tehtäviä" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Yhdistä kulut tiettyihin projekteihin" +#~ msgid "No team members have logged time yet" +#~ msgstr "Yksikään tiimin jäsen ei ole vielä kirjannut aikaa" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Kirjaa kulut" +#~ msgid "Attention Required" +#~ msgstr "Huomiota vaaditaan" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Anna tiedot ja lähetä kuitti" +#~ msgid "task(s) are overdue" +#~ msgstr "tehtävä(t) on myöhässä" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Lähetä hyväksyttäväksi" +#~ msgid "Edit Cost" +#~ msgstr "Yksikköhinta" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "Järjestelmänvalvoja arvioi ja hyväksyy" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Lasku/palautus" +#~ msgid "Update Cost" +#~ msgstr "Päivitä roolit" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Lisää laskuun tai hyvitä" +#~ msgid "Edit Extra Good" +#~ msgstr "Edit Extra Good" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Seuraa maksua" +#~ msgid "Manage products and services for this project" +#~ msgstr "Hallinnoi tämän projektin tuotteita ja palveluita" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Seuraa korvauksen tilaa" +#~ msgid "Total Goods" +#~ msgstr "Tavarat yhteensä" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Ammattimainen laskutus" +#~ msgid "Billable Amount" +#~ msgstr "Laskutettava summa" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Ammattimainen PDF-sukupolvi" +#~ msgid "Categories" +#~ msgstr "Luokat" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Yrityksen brändäys ja logot" +#~ msgid "Invoiced" +#~ msgstr "Laskutettu" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Automaattinen laskujen numerointi" +#~ msgid "Non-billable" +#~ msgstr "Ei laskutettavissa" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Verolaskelmat" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Haluatko varmasti poistaa tämän ylimääräisen tuotteen?" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Aika integraatio" +#~ msgid "Delete Extra Good" +#~ msgstr "Poista Extra Good" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Luo aikamerkinnöistä" +#~ msgid "No extra goods found for this project" +#~ msgstr "Tähän projektiin ei löytynyt ylimääräisiä tuotteita" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Älykäs ryhmittely tehtävän/projektin mukaan" +#~ msgid "Add Your First Good" +#~ msgstr "Lisää ensimmäinen tavarasi" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Vältä kaksoislaskutus" +#~ msgid "Breakdown by Category" +#~ msgstr "Jaottelu kategorioiden mukaan" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Käytä projektin tuntihintoja" +#~ msgid "item(s)" +#~ msgstr "tuote(t)" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Määritä asiakas- ja projektitiedot" +#~ msgid "Filter Projects" +#~ msgstr "Suodata projektit" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Lisää kohteita" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Luo ajoissa tai lisää manuaalisesti" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Tarkista & Lähetä" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "Vie PDF ja päivitä tila" +#~ msgid "Mark project as Inactive?" +#~ msgstr "Merkitäänkö projekti ei-aktiiviseksi?" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Seuraa tilaa ja maksuja" +#~ msgid "Change Project Status" +#~ msgstr "Muuta projektin tilaa" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Vakioraportit" +#~ msgid "Activate project?" +#~ msgstr "Aktivoi projekti?" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Projektiraportti - Aikajakauma projekteittain" +#~ msgid "Activate Project" +#~ msgstr "Aktivoi projekti" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Käyttäjäraportti – Yksittäiset tehokkuusmittarit" +#~ msgid "Archive" +#~ msgstr "Arkisto" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Yhteenvetoraportti – Tärkeimmät tiedot ja trendit" +#~ msgid "Unarchive project?" +#~ msgstr "Poistetaanko projekti arkistosta?" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Aikakirjausraportti - Yksityiskohtaiset aikalokit" +#~ msgid "Unarchive Project" +#~ msgstr "Poista projekti arkistosta" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Vientiasetukset" +#~ msgid "Unarchive" +#~ msgstr "Poista arkistosta" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "CSV-vienti - Ulkoiseen analyysiin" +#~ msgid "Delete Project" +#~ msgstr "Poista projekti" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Muokattavat erottimet" +#~ msgid "Archive Information" +#~ msgstr "Arkiston tiedot" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Muokatut ajanjaksot" +#~ msgid "Archived on:" +#~ msgstr "Arkistoitu:" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Suodatetun tiedon vienti" +#~ msgid "Archived by:" +#~ msgstr "Arkistointi:" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Suodatinvalinnat" +#~ msgid "Reason:" +#~ msgstr "Syy:" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Ajanjakso - Mukautetut aloitus- ja lopetuspäivät" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Projekti - Suodata tiettyjen projektien mukaan" +#~ msgid "Budget Overview" +#~ msgstr "Budjetin yleiskatsaus" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Käyttäjä - Suodata tiimin jäsenten mukaan" +#~ msgid "Over" +#~ msgstr "Yli" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Asiakas - Suodata asiakasorganisaation mukaan" +#~ msgid "View Full Budget Analysis" +#~ msgstr "Näytä koko budjettianalyysi" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Tallennetut suodattimet - Tallenna usein käytetyt suodattimet" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Visuaalinen analytiikka" +#~ msgid "Tasks for this project" +#~ msgstr "Tehtävät tälle projektille" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Interaktiiviset pylväskaaviot" +#~ msgid "Due" +#~ msgstr "Erääntynyt" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Aikajakauman ympyräkaaviot" +#~ msgid "Estimated" +#~ msgstr "Arvioitu" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Trendianalyysi ajan mittaan" +#~ msgid "No tasks for this project." +#~ msgstr "Ei tehtäviä tälle projektille." -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Mobiilioptimoidut kaaviot" +#~ msgid "Move up" +#~ msgstr "siirretty" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "Käytä tallennettuja suodattimia päästäksesi nopeasti yleisimpiin raporttinäkymiin. Tallenna suodattimet viikoittaisia ​​arvioita, kuukausilaskutusta tai tiettyä projektiseurantaa varten!" +#~ msgid "Move down" +#~ msgstr "siirretty" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "Paranna tehokkuuttasi pikanäppäimillä, komentopaletilla ja automaatioominaisuuksilla." +#~ msgid "Manual entry" +#~ msgstr "Manuaalinen syöttö" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Komentopaletti" +#~ msgid "From stock" +#~ msgstr "Alhainen varasto" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Käytä mitä tahansa ominaisuutta välittömästi poistumatta näppäimistöstä" +#~ msgid "Duplicate" +#~ msgstr "Kopioi" -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Komentopaletin avaaminen" +#~ msgid "Mark as Sent" +#~ msgstr "Merkitse lähetetyksi" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Paina kysymysmerkkinäppäintä" +#~ msgid "Accepted" +#~ msgstr "Hyväksytty" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "Pikahaku" +#~ msgid "Create Your First Quote" +#~ msgstr "Luo ensimmäinen lainaus" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Siirry kohtaan Projektit" +#~ msgid "Learn More" +#~ msgstr "Lisätietoja" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Siirry kohtaan Tehtävät" +#~ msgid "Back to Quote" +#~ msgstr "Takaisin lainaukseen" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Uusi aikamerkintä" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" +#~ "Tämän tarjouksen hyväksyminen luo uuden " +#~ "projektin tarjouksen budjetilla." -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Pikanäppäimet" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "Projekti luodaan tarjouksen budjetilla" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "Navigoi nopeammin näppäimistöohjattujen komentojen avulla. Paina Shift+? nähdäksesi kaikki pikakuvakkeet." +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Hyväksy tarjous ja luo projekti" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Maailmanlaajuinen haku" +#~ msgid "Create Quote" +#~ msgstr "Luo tarjous" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "Löydä nopeasti projekteja, tehtäviä, asiakkaita ja aikamerkintöjä mistä tahansa sovelluksesta." +#~ msgid "Quote title" +#~ msgstr "Lainaus otsikko" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "Sähköposti-ilmoitukset" +#~ msgid "Quote description" +#~ msgstr "Lainauskuvaus" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "Saat sähköpostiisi ilmoituksen tehtävätehtävistä, erääntyneistä laskuista ja viikoittaisista yhteenvedoista." +#~ msgid "Quote line items" +#~ msgstr "Lainauskohteet" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Järjestelmänvalvojan ominaisuudet" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Luo uusia käyttäjiä joustavalla todennuksella" +#~ msgid "Add line" +#~ msgstr "Määräaika" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Määritä mukautettuja rooleja tietyillä käyttöoikeuksilla" +#~ msgid "Line type" +#~ msgstr "Sisältötyyppi" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Aktivoi/deaktivoi käyttäjätilit" +#~ msgid "Stock" +#~ msgstr "Alhainen varasto" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Tarkastele käyttäjätilastoja ja toimintaa" +#~ msgid "Line items subtotal" +#~ msgstr "Kohteet Välisumma" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Luo API-tunnuksia käyttäjille" +#~ msgid "Costs" +#~ msgstr "Maksaa" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Kulunvalvonta" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "esim. MATKAT, Ateriat" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Yksityiskohtainen roolipohjainen käyttöoikeusjärjestelmä" +#~ msgid "Add cost" +#~ msgstr "Lisää huomautus" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Mukautetut roolit, joissa on tarkat käyttöoikeudet" +#~ msgid "Costs subtotal" +#~ msgstr "Kohteet Välisumma" -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Käyttäjätietojen käyttöoikeudet" +#~ msgid "Extra goods" +#~ msgstr "Lisätavarat" -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "OIDC/SSO-integraatio (Azure AD, Authelia jne.)" +#~ msgid "Products, licenses, hardware" +#~ msgstr "Tuotteet, materiaalit, lisenssit ja muut tavarat" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "API-tunnusten hallinta integraatioita varten" +#~ msgid "Add good" +#~ msgstr "Lisää Hyvä" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Todennusmenetelmät" +#~ msgid "Goods subtotal" +#~ msgstr "Tavaran välisumma" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Vain käyttäjätunnus (yksinkertainen sisäinen käyttö)" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Lainauksia yhteensä" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (yrityksen todennus)" +#~ msgid "Financial Details" +#~ msgstr "Taloudelliset tiedot" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Molemmat menetelmät samanaikaisesti" +#~ msgid "Select payment terms" +#~ msgstr "Valitse maksuehdot" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Automaattinen roolin jako ryhmien kautta" +#~ msgid "Due on Receipt" +#~ msgstr "Erääntyy kuitti" -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Rooli- ja lupahallinta" +#~ msgid "Or enter custom payment terms" +#~ msgstr "Tai syötä mukautetut maksuehdot" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Luo mukautettuja rooleja järjestelmänvalvojan/käyttäjän lisäksi" +#~ msgid "Use custom terms" +#~ msgstr "Käytä mukautettuja termejä" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Määritä yksityiskohtaiset käyttöoikeudet ominaisuudelle" +#~ msgid "Discount" +#~ msgstr "Alennus" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Määritä käyttäjille useita rooleja" +#~ msgid "Discount Type" +#~ msgstr "Alennustyyppi" -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Tarkastele ja hallinnoi kaikkia käyttöoikeuksia" +#~ msgid "No Discount" +#~ msgstr "Ei alennusta" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Yleiset asetukset" +#~ msgid "Percentage (%)" +#~ msgstr "prosenttiosuus (%)" -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Aikavyöhyke- ja alueasetukset" +#~ msgid "Fixed Amount" +#~ msgstr "Kiinteä määrä" -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Valuutan määritys" +#~ msgid "Discount Amount" +#~ msgstr "Alennussumma" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Ajan pyöristyssäännöt" +#~ msgid "0.00" +#~ msgstr "0,00" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Itserekisteröinnin asetukset" +#~ msgid "Coupon Code" +#~ msgstr "Kuponkikoodi" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Ajastinasetukset" +#~ msgid "Optional coupon code" +#~ msgstr "Valinnainen kuponkikoodi" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Idle timeout -määritys" +#~ msgid "Discount Reason" +#~ msgstr "Alennuksen syy" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Yksi aktiivinen ajastintila" +#~ msgid "Reason for discount" +#~ msgstr "Syy alennukseen" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Ajastimen näyttöasetukset" +#~ msgid "Approval Workflow" +#~ msgstr "Hyväksynnän työnkulku" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Ilmoitusasetukset" +#~ msgid "Requires approval before sending" +#~ msgstr "Vaatii hyväksynnän ennen lähettämistä" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Tietokannan hallinta" +#~ msgid "Additional Information" +#~ msgstr "Lisätietoja" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Luo manuaaliset tietokannan varmuuskopiot" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Sisäiset huomautukset (ei näy asiakkaalle)" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Näytä tietokannan siirron tila" +#~ msgid "These notes are only visible to your team" +#~ msgstr "Nämä muistiinpanot näkyvät vain tiimillesi" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Tarkkaile tietokannan suorituskykyä" +#~ msgid "Terms and Conditions" +#~ msgstr "Ehdot" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Siivoa vanhat tiedot ja lokit" +#~ msgid "Terms and conditions" +#~ msgstr "Ehdot" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Järjestelmän valvonta" +#~ msgid "These terms will be visible to the client" +#~ msgstr "Nämä ehdot näkyvät asiakkaalle" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Tarkastele järjestelmän tietoja ja kuntoa" +#~ msgid "Edit Quote" +#~ msgstr "Muokkaa lainausta" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Tarkkaile sovelluksen suorituskykyä" +#~ msgid "Client cannot be changed" +#~ msgstr "Asiakasta ei voi vaihtaa" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Tarkista järjestelmän lokit ja virheet" +#~ msgid "Update Quote" +#~ msgstr "Päivitä lainaus" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Mobiiliystävälliset ominaisuudet" +#~ msgid "Total Quotes" +#~ msgstr "Lainauksia yhteensä" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Optimoitu puhelimille ja tableteille" +#~ msgid "Acceptance Rate" +#~ msgstr "Hyväksymisprosentti" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Kosketusystävällinen käyttöliittymä" +#~ msgid "Avg Quote Value" +#~ msgstr "Keskimääräinen tarjouksen arvo" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "Mukautuvat asettelut kaikille näyttökokoille" +#~ msgid "Quotes by Status" +#~ msgstr "Lainaukset Statusin mukaan" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Korkea kontrasti ulkonäkyvyyden takaamiseksi" +#~ msgid "Top Clients by Quotes" +#~ msgstr "Parhaat asiakkaat lainausten mukaan" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Mobiilinavigointi" +#~ msgid "Filter Quotes" +#~ msgstr "Suodata lainaukset" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Alempi välilehtipalkki helpottaa pääsyä" +#~ msgid "Search quotes..." +#~ msgstr "Hae lainauksia..." -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Nopea pääsy kojelautaan" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "Haluatko varmasti kopioida" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Ajan kirjaaminen yhdellä napautuksella" +#~ msgid "quote(s)?" +#~ msgstr "lainausmerkit)?" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Mobiilioptimoidut raportit" +#~ msgid "Are you sure you want to mark" +#~ msgstr "Haluatko varmasti merkitä" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Asennus" +#~ msgid "quote(s) as sent?" +#~ msgstr "lainaukset lähetettyinä?" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Avaa TimeTracker mobiiliselaimessa" +#~ msgid "QUOTE" +#~ msgstr "LAINATA" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Etsi \"Lisää aloitusnäyttöön\" -vaihtoehto" +#~ msgid "Quote #" +#~ msgstr "Lainaus #" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Noudata selainkohtaisia ​​asennusohjeita" +#~ msgid "Quote For" +#~ msgstr "Lainaus For" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Käynnistä aloitusnäytöltäsi kuin natiivisovellus" +#~ msgid "Subtotal After Discount:" +#~ msgstr "Välisumma alennuksen jälkeen:" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "PWA:n edut" +#~ msgid "Description:" +#~ msgstr "Kuvaus:" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Offline-ominaisuus perustoimintoihin" +#~ msgid "Subtotal After Discount" +#~ msgstr "Välisumma alennuksen jälkeen" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Nopeammat latausajat" +#~ msgid "Approval not yet requested" +#~ msgstr "Hyväksyntää ei ole vielä pyydetty" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Natiivisovelluksen kaltainen kokemus" +#~ msgid "Pending approval" +#~ msgstr "Odottaa hyväksyntää" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Push-ilmoitukset (jos tuettu)" +#~ msgid "Rejected by" +#~ msgstr "Hylkäsi" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Request Approval Again" +#~ msgstr "Pyydä hyväksyntää uudelleen" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "Interaktiiviset pylväskaaviot" +#~ msgid "Send Quote" +#~ msgstr "Lähetä tarjous" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "Tekniset tiedot" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "Haluatko varmasti hylätä tämän lainauksen?" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Delete Quote" +#~ msgstr "Poista lainaus" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Sisäinen kommentti (ei näy asiakkaalle)" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "Dokumentaatio" +#~ msgid "Internal" +#~ msgstr "Sisäinen" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Vianetsintä ja UKK" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "Haluatko varmasti poistaa tämän kommentin?" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "Mitä tapahtuu, jos unohdan pysäyttää ajastimen?" +#~ msgid "Write a reply..." +#~ msgstr "Kirjoita vastaus..." -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "Ajastin jatkaa toimintaansa, kunnes pysäytät sen manuaalisesti. Näet aktiivisen ajastimesi kojelaudassa ja ajastinsivulla. Ajastin säilyy, vaikka suljet selaimen tai käynnistät laitteen uudelleen. Jos tyhjäkäynnin tunnistus on käytössä, ajastin voi pysähtyä automaattisesti määritetyn aikakatkaisujakson jälkeen." +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Ei vielä kommentteja. Aloita keskustelu " +#~ "lisäämällä ensimmäinen kommentti." -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "Voinko muokata aikamerkintöjä niiden luomisen jälkeen?" +#~ msgid "Sent At" +#~ msgstr "Lähetetty klo" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "Kyllä, voit muokata mitä tahansa aikamerkintää napsauttamalla muokkauspainiketta aikamerkintäluettelossa. Voit muokata projektia, aloitus- ja lopetusaikoja, muistiinpanoja, tunnisteita, laskutettavaa tilaa ja tehtävän määritystä. Järjestelmänvalvojat voivat muokata kaikkia aikamerkintöjä, kun taas tavalliset käyttäjät voivat muokata vain omia merkintöjään." +#~ msgid "Accepted At" +#~ msgstr "Hyväksytty klo" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "Kuinka seuraan useiden projektien aikaa?" +#~ msgid "Send Quote via Email" +#~ msgstr "Lähetä tarjous sähköpostitse" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "Oletuksena sinulla voi olla vain yksi aktiivinen ajastin kerrallaan. Vaihda projektia pysäyttämällä nykyinen ajastin ja käynnistämällä uusi eri projektille. Vaihtoehtoisesti voit luoda manuaalisia aikamerkintöjä menneille töille tai määrittää järjestelmän sallimaan useita aktiivisia ajastimia (järjestelmänvalvojan asetus)." +#~ msgid "Recipient Email" +#~ msgstr "Vastaanottajan sähköposti" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "Kuinka voin viedä aikatietoni?" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "Lainaus %(quote_number)s" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "Siirry Raportit-sivulle ja käytä Vie CSV -ominaisuutta. Voit käyttää suodattimia viedäksesi tiettyjä tietoja tai viedäksesi kaikki aikamerkinnät. CSV-tiedosto sisältää kaikki aikatiedot, ja se voidaan avata Excelissä tai muissa taulukkolaskentaohjelmissa. Voit myös määrittää erottimen eri aluestandardeille." +#~ msgid "Custom Message (Optional)" +#~ msgstr "Muokattu viesti (valinnainen)" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "Mitä eroa on laskutettavalla ja ei-laskutettavalla ajalla?" +#~ msgid "Add a custom message to the email..." +#~ msgstr "Lisää mukautettu viesti sähköpostiin..." -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "Laskutettavaa aikaa seurataan asiakkaan laskutusta varten ja siihen voi liittyä tuntihinta. Ei-laskutettava aika on tarkoitettu sisäisiin töihin, joita ei veloiteta asiakkailta. Voit merkitä yksittäisiä aikamerkintöjä laskutettaviksi tai ei-laskutettaviksi, ja projekteissa voi olla laskutettavat oletusasetukset. Tämä erottelu on ratkaisevan tärkeää tarkan laskutuksen ja kannattavuusanalyysin kannalta." +#~ msgid "Attach PDF" +#~ msgstr "Liitä PDF" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "Kuinka luon laskun aikamerkinnöistäni?" +#~ msgid "Approve Quote" +#~ msgstr "Hyväksy tarjous" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "Siirry kohtaan Laskut → Luo lasku, määritä asiakas- ja projektitiedot ja käytä sitten \"Luo aikamerkinnöistä\" luodaksesi automaattisesti laskukohteita seuranneesta ajasta. Voit suodattaa ajanjakson ja projektin mukaan, ja järjestelmä ryhmittelee aikamerkinnät älykkäästi. Tarkista luodut kohteet ja vie ne ammattimaisena PDF-tiedostona." +#~ msgid "Notes (Optional)" +#~ msgstr "Huomautukset (valinnainen)" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "Voinko käyttää TimeTrackeria mobiililaitteellani?" +#~ msgid "Add approval notes..." +#~ msgstr "Lisää hyväksyntähuomautuksia..." -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "Kyllä! TimeTracker on täysin reagoiva ja toimii erinomaisesti mobiililaitteissa. Voit asentaa sen Progressive Web App -sovelluksena (PWA) saadaksesi alkuperäisen kaltaisen kokemuksen. Mobiilikäyttöliittymä sisältää välilehtipalkin, joka helpottaa navigointia, ja kosketusoptimoidut säätimet ajan seurantaan liikkeellä ollessasi." +#~ msgid "Reject Quote Approval" +#~ msgstr "Hylkää tarjouksen hyväksyminen" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "Kuinka käytän komentopalettia ja pikanäppäimiä?" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Kerro hylkäämisen syy..." -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "Avaa komentopaletti painamalla kysymysmerkkinäppäintä (?). Sieltä voit etsiä mitä tahansa toimintoa tai navigointikohdetta kirjoittamalla. Käytä näppäimistösarjoja, kuten \"g d\" Dashboardille, \"g p\" projekteille tai \"n e\" New Entrylle. Paina Shift+? nähdäksesi kaikki käytettävissä olevat pikakuvakkeet. Pikahakua varten paina Ctrl+K (tai Cmd+K Macissa)." +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Haluatko varmasti poistaa tämän lainauksen?" +#~ " Tätä toimintoa ei voi kumota." -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "Kuinka luon joukkoaikamerkintöjä useille päiville?" +#~ msgid "Create Recurring Invoice" +#~ msgstr "Luo toistuva lasku" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "Siirry kohtaan Työ → Joukkoaikasyöttö. Valitse projektisi, valitse ajanjakso, aseta päivittäiset alkamis- ja päättymisajat ja halutessasi ohita viikonloput. Järjestelmä luo identtiset aikamerkinnät jokaiselle alueen päivälle. Tämä sopii mainiosti säännöllisten työtapojen kirjaamiseen tai menneiden työaikojen täyttämiseen, kun olet työskennellyt tasaisin väliajoin." +#~ msgid "Update Recurring Invoice" +#~ msgstr "Päivitä toistuva lasku" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "Mitä ovat ajansyöttömallit ja miten niitä käytetään?" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "Automatisoi laskujen luonti tilausperusteista laskutusta varten" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "Ajansyöttömallien avulla voit tallentaa usein käytetyt ajansyöttökokoonpanot. Kun luot manuaalista aikamerkintää, valitse \"Tallenna mallina\" tallentaaksesi projektin, tehtävän ja muistiinpanot. Myöhemmin, kun luot uusia merkintöjä, voit valita mallin täyttääksesi nämä tiedot nopeasti. Mallit ovat henkilökohtaisia ​​ja näkyvät vain sinulle." +#~ msgid "Frequency" +#~ msgstr "Taajuus" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "Kuinka seuraan kuluja ja lisään ne laskuihin?" +#~ msgid "Next Run" +#~ msgstr "Seuraava juoksu" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "Siirry kohtaan Kulut → Uusi kulu kirjataksesi liiketoiminnan kulut. Lataa kuittikuvat, luokittele kulu ja merkitse se tarvittaessa laskutettavaksi. Kun luot laskuja, voit sisällyttää nämä kulut rivikohtiin. Kulut tukevat hyväksynnän työnkulkuja, korvausten seurantaa, ja ne voidaan linkittää tiettyihin projekteihin." +#~ msgid "Generate Now" +#~ msgstr "Luo nyt" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "Voinko käyttää Markdownia kuvauksissa?" +#~ msgid "Template Details" +#~ msgstr "Mallin tiedot" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "Kyllä! Projektien ja tehtävien kuvaukset tukevat täyttä Markdown-muotoilua. Voit käyttää lihavointia, kursiivia, otsikoita, luetteloita, linkkejä, koodilohkoja, taulukoita ja kuvia. Näin voit luoda monipuolista, hyvin muotoiltua dokumentaatiota suoraan projekteihin ja tehtäviin. Markdown-editori sisältää esikatselutilan ja tukee tummaa teemaa." +#~ msgid "Invoice Settings" +#~ msgstr "Laskuasetukset" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "Mistä saan lisäapua?" +#~ msgid "Recently Generated Invoices" +#~ msgstr "Äskettäin luodut laskut" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Ilmoita ongelmista ja pyydä ominaisuuksia käyttöön" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "Järjestelmänvalvojana voit käyttää järjestelmän lisätietoja ja diagnostiikkaa" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "osio." +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "Tarvitsetko edelleen apua?" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "Etkö löydä etsimääsi? Tässä on lisäresursseja:" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "Assign To" +#~ msgstr "Määritä" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "GitHub-arkisto" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Ilmoita ongelmasta" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "Tukea" +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Hakutulokset" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Hae muistiinpanoja tai tunnisteita" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Tulokset" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "Haluatko varmasti poistaa tämän aikamerkinnän? Tätä toimintoa ei voi kumota." +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "Tuloksia ei löytynyt" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Kokeile toista kyselyä tai tarkista oikeinkirjoitus." +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "esim. asiakastapaaminen, sivustokäynti" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Lisätietoja..." +#~ msgid "Components" +#~ msgstr "" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "esim. toimisto, koti" +#~ msgid "Add table to report" +#~ msgstr "Saatavilla olevat raportit" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "esim. asiakassivusto, lentokenttä" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "esim. 12345" +#~ msgid "Add chart to report" +#~ msgstr "Vakioraportit" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "esim. 12400" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "esim VW Golf" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "esim. ABC-123" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "Ajan seuranta" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "Takaisin Rooleihin" +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "Add summary to report" +#~ msgstr "Yhteenvetoraportti" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "Päivämäärä alkaen" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "Lisää huomautus" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "Kulujen seuranta" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "Seurattu" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "Otsikko" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "Report canvas" +#~ msgstr "Kirkas kangas" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "Ajan seuranta" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "Aloita ajan seuranta" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "Seuraa maksua" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "Aloita ajan seuranta" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "Kulutus hylätty" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Suodattimen kilometrimäärä" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Tarkoitus, sijainti..." +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Valinnaiset hyväksymistiedot..." +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Hylkäämisen syy (pakollinen)" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "Mobiilinavigointi" +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "Sähköposti" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Kirjoita komento tai hae..." +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Private" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Tallenna uusi maksu" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Maksut yhteensä" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Yhdyskäytävämaksut" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Suodata maksut" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "Maksettu" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Poista valitut maksut" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Muuta valittujen maksujen tilaa" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Asiaan liittyvä lasku" +#~ msgid "Export Time Entries" +#~ msgstr "Viimeaikaiset aikamerkinnät" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "esim. työmatka Berliiniin" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "esim. DE, US, GB" +#~ msgid "Export format" +#~ msgstr "Vie muoto" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "esim Berliini" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "esim. kehitys, tapaaminen, kiireellinen" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Suodata väitteet" +#~ msgid "Reset Filters" +#~ msgstr "Tallennetut suodattimet" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Poista valitut vaatimukset" +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Muuta valittujen vaatimusten tilaa" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Lisähuomautuksia tästä hinnasta..." +#~ msgid "Please select both start and end dates." +#~ msgstr "Ajanjakso - Mukautetut aloitus- ja lopetuspäivät" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "Haluatko varmasti poistaa tämän päivärahan?" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "Aloituspäivän on oltava ennen lopetuspäivää" -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Poista päivärahoitus" +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Payments Received" +#~ msgstr "Maksukentät" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Net Received" +#~ msgstr "Vastaanotettu" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "After fees" +#~ msgstr "Yhdyskäytävämaksut" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Date Range & Comparison" +#~ msgstr "Ajanjakso ja vertailu" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "Quick Date Ranges" +#~ msgstr "Nopeat päivämääräalueet" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "This Week" +#~ msgstr "Viikko" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "This Month" +#~ msgstr "Kuukausi" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Laskutettava projekti" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Arvioidut tunnit" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Budjetin summa" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "This Year" +#~ msgstr "Viime vuonna" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "Muokatut ajanjaksot" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "" +#~ msgid "Comparison View" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "Live-esikatselu" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "Comparison Results" +#~ msgstr "Vertailutulokset" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Projektikoodi" +#~ msgid "Export Reports" +#~ msgstr "Vie raportit" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "Vie muoto" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Luo projekti" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "Vie raportit" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Aikataulutetut raportit" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "CSV-tuonti" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "Viedä" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "Report Types" +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "User Report" +#~ msgstr "Käyttäjäraportti" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "Yhteenvetoraportti" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "Tehtäväraportti" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "Aikamerkinnät" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Kanban-taulupylväät" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Muokkaa uimarataa" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Sarake" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Luettelonäkymä" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Ruudukkonäkymä" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "Päivämäärä" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Muokkaa projektia" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "Lisää huomautus" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "Takaisin projektiin" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "esim. matkustaa asiakaskokoukseen" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "Lyhyt kuvaus tästä kategoriasta..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "Luokka" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "Materiaali" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "esim. ohjelmistolisenssi" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "Lisätietoja tästä säädöstä" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "Takaisin asiakkaalle" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Lisää Extra Good" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Lisää tuote tai palvelu" +#~ msgid "No recent entries." +#~ msgstr "Viimeaikaiset merkinnät" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Takaisin projektiin" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "SKU/tuotekoodi" +#~ msgid "No scheduled reports yet." +#~ msgstr "Aikataulutetut raportit" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "Mitä tapahtuu, kun arkistoit projektin?" +#~ msgid "Add Scheduled Report" +#~ msgstr "Aikataulutetut raportit" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "Projekti piilotetaan aktiivisten projektien luetteloista" +#~ msgid "Please set a date range" +#~ msgstr "Muokatut ajanjaksot" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "Tähän projektiin ei voi lisätä uusia aikamerkintöjä" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "Olemassa olevat tiedot ja aikamerkinnät säilyvät" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Voit tarvittaessa purkaa projektin arkistoinnin myöhemmin" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Syy arkistointiin" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "esim. projekti valmis, asiakassopimus päättynyt, projekti peruttu jne." +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "Syyn lisääminen helpottaa projektin organisointia ja tulevaa viittausta." +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Pikavalinta" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Projekti suoritettu onnistuneesti" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Projekti valmis" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Asiakassopimus päättyi" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Sopimus päättynyt" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Asiakas peruutti projektin" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Projekti keskeytetty toistaiseksi" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "Pidossa" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Huoltojakso päättyi" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Huolto päättynyt" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Arkistoprojekti" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "Järjestä työsi ja seuraa aikaa tehokkaasti luomalla uusi projekti" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Anna kuvaava projektin nimi" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Valitse selkeä, kuvaava nimi, joka selittää projektin laajuuden" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Lyhyt koodi, esim. ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Valinnainen: Lyhyt tunniste näkyy Kanban-korteissa" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Luo uusi asiakas" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "Anna yksityiskohtaista tietoa projektista, tavoitteista ja suorituksista..." +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "Valinnainen: Lisää kontekstia, tavoitteita tai erityisiä vaatimuksia projektille" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Ota tämän projektin laskutus käyttöön" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "Jätä tyhjäksi ei-laskutettaville projekteille" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "PO-numero, sopimusviite jne." +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "Valinnainen: Lisää viitenumero tai tunniste laskutusta varten" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "esim. 10 000,00" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "Valinnainen: Aseta projektin kokonaisbudjetti kulutuksen seurantaa varten" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Varoituskynnys (%)" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Ilmoita, kun kulutettu budjetti ylittää tämän kynnyksen" +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "No data for the selected period." +#~ msgstr "Valitulle ajanjaksolle ei löytynyt myyntitietoja." -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Vinkkejä projektin luomiseen" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Tyhjennä nimeäminen" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Käytä kuvaavia nimiä, jotka osoittavat selvästi projektin tarkoituksen" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Laskutusasetukset" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "Aseta sopivat tuntihinnat projektin monimutkaisuuden ja asiakkaan budjetin mukaan" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Yksityiskohtainen kuvaus" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "Sisällytä projektin tavoitteet, suoritteet ja keskeiset vaatimukset" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Asiakkaan valinta" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "Valitse oikea asiakas varmistaaksesi oikean projektin organisoinnin" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Luodaan..." +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "Asiakasta ei voitu luoda. Yritä uudelleen." +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Asiakas luotu" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Verkkovirhe asiakasta luotaessa" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "Project Dashboard & Analytics" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Budjettianalyysi" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Kaikki aika" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "Viimeiset 7 päivää" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "Viimeiset 30 päivää" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "Viimeiset 3 kuukautta" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "Viime vuonna" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "arvioitu" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Käytetty budjetti" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "budjetista" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Tehtävät suoritettu" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "valmistuminen" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Joukkueen jäsenet" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "myötävaikuttaa" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Budjetti vs. todellinen" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "Tälle projektille ei ole asetettu budjettia" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Tehtävän tilan jakelu" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Tehtäviä ei ole vielä luotu" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Ryhmän jäsenten panokset" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Aikamerkintöjä ei ole vielä tallennettu" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Aikaseurannan aikajana" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Valitse ajanjakso nähdäksesi aikajanan" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Joukkueen jäsentiedot" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "tehtäviä" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Yksikään tiimin jäsen ei ole vielä kirjannut aikaa" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Huomiota vaaditaan" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "tehtävä(t) on myöhässä" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "Yksikköhinta" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "Päivitä roolit" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Edit Extra Good" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Hallinnoi tämän projektin tuotteita ja palveluita" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Tavarat yhteensä" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Laskutettava summa" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Luokat" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "Laskutettu" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "Ei laskutettavissa" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "Haluatko varmasti poistaa tämän ylimääräisen tuotteen?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Poista Extra Good" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "Tähän projektiin ei löytynyt ylimääräisiä tuotteita" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Lisää ensimmäinen tavarasi" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Jaottelu kategorioiden mukaan" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "tuote(t)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Suodata projektit" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Parhaat projektit (30 päivää)" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Time distribution by project" +#~ msgstr "Aikajakauman ympyräkaaviot" -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "No project data for the last 30 days." +#~ msgstr "Ei toimintaa viimeisen 30 päivän aikana." -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "Merkitäänkö projekti ei-aktiiviseksi?" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Muuta projektin tilaa" +#~ msgid "Daily hours trend" +#~ msgstr "Päivittäinen tuntitrendi" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "Aktivoi projekti?" +#~ msgid "No trend data." +#~ msgstr "Lainaustiedot" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Aktivoi projekti" +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Parhaat projektit (30 päivää)" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Arkisto" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "Valitulle ajanjaksolle ei löytynyt myyntitietoja." -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "Poistetaanko projekti arkistosta?" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Poista projekti arkistosta" +#~ msgid "All Clients" +#~ msgstr "Asiakkaat" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Poista arkistosta" +#~ msgid "All Tasks" +#~ msgstr "Näytä kaikki tehtävät" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Poista projekti" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "Valitulle ajanjaksolle ei löytynyt myyntitietoja." -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Arkiston tiedot" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Arkistoitu:" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Arkistointi:" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Syy:" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Budjetin yleiskatsaus" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Yli" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Näytä koko budjettianalyysi" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "Kokeile toista kyselyä tai tarkista oikeinkirjoitus." -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Tehtävät tälle projektille" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Erääntynyt" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Arvioitu" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "Ei tehtäviä tälle projektille." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "siirretty" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "siirretty" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "Manuaalinen syöttö" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "Alhainen varasto" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Kopioi" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Merkitse lähetetyksi" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Hyväksytty" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Luo ensimmäinen lainaus" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Lisätietoja" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Takaisin lainaukseen" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "Tämän tarjouksen hyväksyminen luo uuden projektin tarjouksen budjetilla." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "Projekti luodaan tarjouksen budjetilla" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Hyväksy tarjous ja luo projekti" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Luo tarjous" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Lainaus otsikko" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Lainauskuvaus" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "Lainauskohteet" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "About Overtime Tracking" +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "Määräaika" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "Sisältötyyppi" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "Alhainen varasto" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "Kohteet Välisumma" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "Maksaa" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "esim. MATKAT, Ateriat" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "Lisää huomautus" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "Kohteet Välisumma" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "Lisätavarat" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "Tuotteet, materiaalit, lisenssit ja muut tavarat" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "Lisää Hyvä" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "Tavaran välisumma" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "Lainauksia yhteensä" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Taloudelliset tiedot" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Valitse maksuehdot" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "Erääntyy kuitti" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "Tai syötä mukautetut maksuehdot" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Käytä mukautettuja termejä" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Alennus" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Alennustyyppi" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Ei alennusta" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "prosenttiosuus (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Kiinteä määrä" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Alennussumma" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0,00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Kuponkikoodi" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Valinnainen kuponkikoodi" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Alennuksen syy" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Syy alennukseen" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Hyväksynnän työnkulku" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Vaatii hyväksynnän ennen lähettämistä" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "Lisätietoja" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Sisäiset huomautukset (ei näy asiakkaalle)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Nämä muistiinpanot näkyvät vain tiimillesi" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Ehdot" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Ehdot" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Nämä ehdot näkyvät asiakkaalle" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Muokkaa lainausta" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "Asiakasta ei voi vaihtaa" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Päivitä lainaus" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Lainauksia yhteensä" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Hyväksymisprosentti" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Keskimääräinen tarjouksen arvo" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Lainaukset Statusin mukaan" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Parhaat asiakkaat lainausten mukaan" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Suodata lainaukset" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Hae lainauksia..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "Haluatko varmasti kopioida" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "lainausmerkit)?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "Haluatko varmasti merkitä" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "lainaukset lähetettyinä?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "LAINATA" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Lainaus #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Lainaus For" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Välisumma alennuksen jälkeen:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Kuvaus:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Välisumma alennuksen jälkeen" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Hyväksyntää ei ole vielä pyydetty" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "Odottaa hyväksyntää" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Hylkäsi" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Pyydä hyväksyntää uudelleen" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Lähetä tarjous" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "Haluatko varmasti hylätä tämän lainauksen?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Poista lainaus" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Sisäinen kommentti (ei näy asiakkaalle)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Sisäinen" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "Haluatko varmasti poistaa tämän kommentin?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Kirjoita vastaus..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "Ei vielä kommentteja. Aloita keskustelu lisäämällä ensimmäinen kommentti." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Lähetetty klo" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Hyväksytty klo" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Lähetä tarjous sähköpostitse" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "Vastaanottajan sähköposti" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "Lainaus %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Muokattu viesti (valinnainen)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Lisää mukautettu viesti sähköpostiin..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "Liitä PDF" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Hyväksy tarjous" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Huomautukset (valinnainen)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Lisää hyväksyntähuomautuksia..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Hylkää tarjouksen hyväksyminen" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Kerro hylkäämisen syy..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "Haluatko varmasti poistaa tämän lainauksen? Tätä toimintoa ei voi kumota." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Luo toistuva lasku" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "Päivitä toistuva lasku" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Automatisoi laskujen luonti tilausperusteista laskutusta varten" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Taajuus" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Seuraava juoksu" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Luo nyt" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Mallin tiedot" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Laskuasetukset" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Äskettäin luodut laskut" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Back to Reports" +#~ msgstr "Takaisin Rooleihin" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "Aikakirjaukset tällä viikolla" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Top projects this week" +#~ msgstr "Huippuprojektit" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "No time logged this week yet." +#~ msgstr "Tälle viikolle ei ole vielä tallennettu aikamerkintöjä" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Apply filter" +#~ msgstr "Käytä suodatinta" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Delete Filter" +#~ msgstr "Poista suodatin" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Go to Reports" +#~ msgstr "Alhainen varastoraportti" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "No saved filters yet" +#~ msgstr "Tallennetut suodattimet" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Customize Shortcuts" +#~ msgstr "Mukauta pikakuvakkeita" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Search shortcuts..." +#~ msgstr "Haun pikanäppäimet..." -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Save changes" +#~ msgstr "Tallenna muutokset" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Määritä" +#~ msgid "Click to record" +#~ msgstr "Järjestä uudelleen vetämällä" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Revert" +#~ msgstr "Nollaa" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "Failed to save" +#~ msgstr "Ajastimen pysäyttäminen epäonnistui" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Failed to save shortcuts." +#~ msgstr "Tilan päivittäminen epäonnistui" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "Tämä palauttaa kaikki pikanäppäimet oletusarvoihinsa. Jatkaa?" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Reset to Defaults" +#~ msgstr "Palauta oletusarvoihin" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "Palautetaanko oletusasetukset?" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "Failed to reset" +#~ msgstr "Avatarin poistaminen epäonnistui." -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Palauta oletusarvoihin" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "Tilan päivittäminen epäonnistui" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "Failed to load shortcuts." +#~ msgstr "Tehtävien lataaminen epäonnistui" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "Saatavilla olevat raportit" +#~ msgid "Welcome" +#~ msgstr "Tervetuloa" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "Privacy First" +#~ msgstr "Yksityisyys ensin" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "Vakioraportit" +#~ msgid "Self-hosted on your server" +#~ msgstr "Isännöi itse palvelimellasi" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Anonyymi telemetria (opt-in)" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "No PII collected ever" +#~ msgstr "" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Open source & transparent" +#~ msgstr "Avoin lähdekoodi ja läpinäkyvä" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Tervetuloa TimeTrackeriin" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "Yhteenvetoraportti" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "Laitetaan asetukset hetkessä" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Kiitos, että valitsit TimeTrackerin!" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "Kirkas kangas" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "Tietosi pysyvät palvelimellasi, ja sinulla on täydellinen hallinta." -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Region & time" +#~ msgstr "Päättymisaika" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Timezone" +#~ msgstr "Aikavyöhyke" -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Date format" +#~ msgstr "Päivämäärän muoto" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "Time format" +#~ msgstr "Aikamuoto" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "24-hour" +#~ msgstr "tuntia" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "12-hour" +#~ msgstr "tuntia" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Company name" +#~ msgstr "Yrityksen nimi" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "Your Company Name" +#~ msgstr "Yrityksesi nimi" -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "Your Company Address" +#~ msgstr "Yrityksesi osoite" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "App behavior and timer settings." +#~ msgstr "Ylityöasetukset" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Allow self-registration" +#~ msgstr "Itserekisteröinnin asetukset" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Ajan pyöristyssäännöt" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Pyöreäajan merkinnät määritettyihin aikaväleihin" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Single active timer per user" +#~ msgstr "Yksi aktiivinen ajastintila" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Idle timeout -määritys" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "Yksityisyys ensin" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Ota anonyymi telemetria käyttöön" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "Auta meitä ymmärtämään käyttötapoja TimeTrackerin parantamiseksi" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "Viimeaikaiset aikamerkinnät" +#~ msgid "What data is collected?" +#~ msgstr "Mitä tietoja kerätään?" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "Mitä keräämme:" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "Vie muoto" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "esim. kehitys, tapaaminen, kiireellinen" +#~ msgid "Application version & platform info" +#~ msgstr "" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "Tallennetut suodattimet" +#~ msgid "Feature usage statistics" +#~ msgstr "Ominaisuuden käyttötilastot" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "Ei käyttäjätunnuksia tai sähköpostiosoitteita" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "Ajanjakso - Mukautetut aloitus- ja lopetuspäivät" +#~ msgid "No time entry data or notes" +#~ msgstr "Ei ajansyöttötietoja tai muistiinpanoja" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "Aloituspäivän on oltava ennen lopetuspäivää" +#~ msgid "No client or business data" +#~ msgstr "Ei asiakas- tai yritystietoja" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "Voit muuttaa tämän milloin tahansa" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "Jatkamalla hyväksyt TimeTrackerin käytön" -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "Maksukentät" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "Vastaanotettu" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "Yhdyskäytävämaksut" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Ajanjakso ja vertailu" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Nopeat päivämääräalueet" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "Viikko" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "Kuukausi" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "Viime vuonna" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "Muokatut ajanjaksot" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "GPL-3.0 -lisenssi" -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "Live-esikatselu" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Viimeistele asennus ja jatka" -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "Muokkaa tehtävää" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "Tilan päivittäminen epäonnistui" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "Tehtävän tilan päivittäminen epäonnistui" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "Kanban-sarake luotu" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "Kanban-sarake poistettu" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Vertailutulokset" +#~ msgid "Kanban columns reordered" +#~ msgstr "Kanban-sarakkeet järjestetty uudelleen" -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Vie raportit" +#~ msgid "Kanban column visibility changed" +#~ msgstr "Kanban-sarakkeen näkyvyys muuttui" -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Vie muoto" +#~ msgid "Kanban columns updated" +#~ msgstr "Kanban-sarakkeet päivitetty" -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "Vie raportit" +#~ msgid "Update" +#~ msgstr "Päivittää" -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "Aikataulutetut raportit" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "Kanban-sarakkeiden päivittäminen epäonnistui" -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "CSV-tuonti" +#~ msgid "Loading task details..." +#~ msgstr "Ladataan tehtävän tietoja..." -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "Viedä" +#~ msgid "Tracked" +#~ msgstr "Seurattu" -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "Näytä täydelliset tiedot" -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "Takaisin tehtäviin" -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Käyttäjäraportti" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Yhteenvetoraportti" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Tehtäväraportti" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "Aikamerkinnät" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "Lisää uusi tehtävä projektiisi jakaaksesi työn hallittaviin osiin" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "Anna kuvaava tehtävän nimi" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "Valitse selkeä, kuvaava nimi, joka selittää, mitä sinun on tehtävä" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Anna yksityiskohtaiset tiedot tehtävästä, " +#~ "vaatimuksista ja mahdollisista erityisistä " +#~ "ohjeista..." -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" +#~ "Valinnainen: Lisää kontekstia, vaatimuksia tai" +#~ " erityisiä ohjeita tehtävälle" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "Viimeaikaiset merkinnät" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Valitse projekti, johon tämä tehtävä kuuluu" -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "Aikataulutetut raportit" +#~ msgid "Initial Status" +#~ msgstr "Alkutila" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "Aikataulutetut raportit" +#~ msgid "Done" +#~ msgstr "Tehty" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "Muokatut ajanjaksot" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Valinnainen: Aseta tälle tehtävälle määräaika" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Valinnainen: Arvioi, kuinka kauan tämä tehtävä kestää" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Valinnainen: Määritä tämä tehtävä tiimin jäsenelle" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Tunnisteet luokittelua varten" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "Vinkkejä tehtävien luomiseen" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "Käytä toimintaverbejä ja kerro tarkasti, mitä sinun on tehtävä" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "Realistiset arviot" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "Ota huomioon monimutkaisuus ja riippuvuudet arvioidessasi aikaa" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "Aseta määräajat" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "Eräpäivät auttavat priorisoimaan työn ja seuraamaan edistymistä" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "Prioriteettiasiat" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Käytä prioriteettitasoja auttaaksesi tiimin " +#~ "jäseniä keskittymään tärkeimpään" -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "Takaisin tehtävään" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "Päivitä tehtävän tiedot ja asetukset kohteelle \"%(task)s\"" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "Tehtävän tiedot" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "Päivitä tehtävä" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "Käytetty arvio" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "Actual" +#~ msgstr "Todellinen" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "Valitulle ajanjaksolle ei löytynyt myyntitietoja." +#~ msgid "Current Task Info" +#~ msgstr "Nykyisen tehtävän tiedot" -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Current Status" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "Nykyinen prioriteetti" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "Tällä hetkellä määrätty" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "Nykyinen eräpäivä" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Current Estimate" +#~ msgstr "Nykyinen arvio" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "Todelliset tunnit" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "Started" +#~ msgstr "Aloitettu" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Edit Tips" +#~ msgstr "Muokkaa vinkkejä" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Status Changes" +#~ msgstr "Tilan muutokset" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "Tilan muuttaminen voi vaikuttaa ajan seurantaan ja edistymislaskelmiin" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "Eräpäivän päivitykset" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "Harkitse ryhmän työmäärää määräaikoja säätäessäsi" -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Assignment Changes" +#~ msgstr "Tehtävän muutokset" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "Updating..." +#~ msgstr "Päivitetään..." -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "Suodata tehtävät" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "Käyttöliittymä" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Poista valitut tehtävät" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Muuta valittujen tehtävien tilaa" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "Määritä valitut tehtävät" -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "Määritä tehtäviä" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Siirrä valitut tehtävät projektiin" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "Valitse Projekti" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "Siirrä tehtävät" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "Tehtävää \"{name}\" ei voi poistaa, " +#~ "koska siinä on aikamerkintöjä. Poista " +#~ "ensin aikamerkinnät." -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Delete Task" +#~ msgstr "Poista tehtävä" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "My Tasks" +#~ msgstr "Omat tehtäväni" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Sinulle määrätyt tai itse luomat tehtävät" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "total" +#~ msgstr "kokonais-" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "Tehtävän nimi tai kuvaus" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "Kaikki prioriteetit" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "Tehtävän tyyppi" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "Määrätty minulle" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "Luonut minä" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "Näytä vain myöhässä" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "Minun luoma" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "Tehtäviä ei löytynyt" -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Sinulle ei ole vielä määrätty tai luotuja tehtäviä." -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "Luo ensimmäinen tehtäväsi" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "Parhaat projektit (30 päivää)" +#~ msgid "View All Tasks" +#~ msgstr "Näytä kaikki tehtävät" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "Aikajakauman ympyräkaaviot" +#~ msgid "Overdue Tasks" +#~ msgstr "Myöhästyneet tehtävät" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "Ei toimintaa viimeisen 30 päivän aikana." +#~ msgid "Requires immediate attention" +#~ msgstr "Vaatii välitöntä huomiota" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "items" +#~ msgstr "kohteita" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "Päivittäinen tuntitrendi" +#~ msgid "There are" +#~ msgstr "On" -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "Lainaustiedot" +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "Tarkista ja päivitä nämä tehtävät estääksesi lisäviivästykset." -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "Parhaat projektit (30 päivää)" +#~ msgid "Due:" +#~ msgstr "" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "Valitulle ajanjaksolle ei löytynyt myyntitietoja." +#~ msgid "Est:" +#~ msgstr "Arvioitu:" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "Actual:" +#~ msgstr "Todellinen:" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "Asiakkaat" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "Näytä kaikki tehtävät" +#~ msgid "Update Due Dates" +#~ msgstr "Eräpäivät" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "Valitulle ajanjaksolle ei löytynyt myyntitietoja." +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "Eräpäivät" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "Projektinhallinta" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "Kaikki prioriteetit" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "Ei myöhässä olevia tehtäviä!" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "Hienoa työtä! Kaikki tehtävät ovat tällä hetkellä aikataulussa." -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Anna uusi eräpäivä (VVVV-KK-PP):" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Haluatko varmasti pidentää eräpäivää" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "Kokeile toista kyselyä tai tarkista oikeinkirjoitus." +#~ msgid "for all overdue tasks?" +#~ msgstr "kaikkiin myöhässä oleviin tehtäviin?" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Haluatko varmasti asettaa etusijalle" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "Takaisin Rooleihin" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "" +#~ "Virheellinen prioriteetti. Käytä: matala, " +#~ "keskitaso, korkea tai kiireellinen" -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "Aikakirjaukset tällä viikolla" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "Huippuprojektit" +#~ msgid "Update failed. Please try again." +#~ msgstr "Tavoitteen päivittäminen epäonnistui. Yritä uudelleen." -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "Tälle viikolle ei ole vielä tallennettu aikamerkintöjä" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "Aloitetaanko tehtävä ja merkitään kesken?" -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Käytä suodatinta" +#~ msgid "Change Task Status" +#~ msgstr "Muuta tehtävän tilaa" -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "Merkitäänkö tehtävä tehtäväksi?" -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Poista suodatin" +#~ msgid "Mark task as Done?" +#~ msgstr "Merkitäänkö tehtävä valmiiksi?" -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "Alhainen varastoraportti" +#~ msgid "Complete Task" +#~ msgstr "Suorita tehtävä" -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "Tallennetut suodattimet" +#~ msgid "Complete" +#~ msgstr "Täydellinen" -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "Avataanko tehtävä uudelleen tarkistettavaksi?" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Mukauta pikakuvakkeita" +#~ msgid "Reopen Task" +#~ msgstr "Avaa tehtävä uudelleen" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Haun pikanäppäimet..." +#~ msgid "Reopen" +#~ msgstr "Avaa uudelleen" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "Tallenna muutokset" +#~ msgid "Task details and history." +#~ msgstr "Hankkeen tiedot ja laajuus" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "Luo ajansyöttömalli" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "esim. Daily Standup, Client Meeting" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "Järjestä uudelleen vetämällä" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "esim. 1,0, 0,5" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "Nollaa" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Esitäytä muistiinpanot tämän tyyppiselle aikamerkinnälle" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "esim. kokous, kehitys, järjestelmänvalvoja" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "Ajastimen pysäyttäminen epäonnistui" +#~ msgid "Edit Template" +#~ msgstr "Muokkaa mallia" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Haluatko varmasti poistaa tämän mallin?" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "Tilan päivittäminen epäonnistui" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "Tämä palauttaa kaikki pikanäppäimet oletusarvoihinsa. Jatkaa?" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Palauta oletusarvoihin" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "Palautetaanko oletusasetukset?" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "Avatarin poistaminen epäonnistui." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "Palauta oletusarvoihin" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "Tilan päivittäminen epäonnistui" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "Tehtävien lataaminen epäonnistui" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Tervetuloa" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "Yksityisyys ensin" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Isännöi itse palvelimellasi" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Anonyymi telemetria (opt-in)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "Poista malli" -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Avoin lähdekoodi ja läpinäkyvä" +#~ msgid "Create Your First Template" +#~ msgstr "Luo ensimmäinen tehtäväsi" -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "Mallit" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Tervetuloa TimeTrackeriin" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" +#~ "Luo ensimmäinen sähköpostimallisi mukauttaaksesi " +#~ "laskusähköpostiviestejä." -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "Laitetaan asetukset hetkessä" +#~ msgid "Usage Statistics" +#~ msgstr "Käyttötilastot" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "Kiitos, että valitsit TimeTrackerin!" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "Tietosi pysyvät palvelimellasi, ja sinulla on täydellinen hallinta." +#~ msgid "selected" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "Päättymisaika" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Aikavyöhyke" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "Päivämäärän muoto" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "Aikamuoto" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "tuntia" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "tuntia" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "Yrityksen nimi" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "Yrityksesi nimi" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "Yrityksesi osoite" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "Ylityöasetukset" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "Itserekisteröinnin asetukset" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "Click to edit" +#~ msgstr "Takaisin Muokkaa" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "Ajan pyöristyssäännöt" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "Pyöreäajan merkinnät määritettyihin aikaväleihin" +#~ msgid "Request approval" +#~ msgstr "Pyydä hyväksyntää" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "Yksi aktiivinen ajastintila" +#~ msgid "Clear filters" +#~ msgstr "Vaihda suodattimet" -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "Ei ajansyöttötietoja tai muistiinpanoja" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "Idle timeout -määritys" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "No time entries yet" +#~ msgstr "Aikamerkintöjä ei ole vielä tallennettu" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "Aikamerkinnät" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "Manuaalinen ajansyöttö" -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "Ajan sisääntulo" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "Kuinka luon joukkoaikamerkintöjä useille päiville?" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "Joukkopääsy" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "Valittua projektia ei löydy" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Tehtävät latautuvat projektin valinnan jälkeen" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "Aikaväli" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Entries will be created for these dates" +#~ msgstr "Aikamerkinnät pyöristetään tähän väliin" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "Älykkäät ajastimet" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "tag1, tag2, tag3" +#~ msgstr "tag1, tag2" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "Yksityisyys ensin" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "Suodata laskut" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Ota anonyymi telemetria käyttöön" +#~ msgid "Create Entries" +#~ msgstr "Viimeaikaiset merkinnät" -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Auta meitä ymmärtämään käyttötapoja TimeTrackerin parantamiseksi" +#~ msgid "Bulk Entry Tips" +#~ msgstr "Joukkopääsy" -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "Mitä tietoja kerätään?" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "Mitä keräämme:" +#~ msgid "Skip Weekends" +#~ msgstr "Viikon trendit" -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "Toimitusaika (päiviä)" -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Ominaisuuden käyttötilastot" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Ei käyttäjätunnuksia tai sähköpostiosoitteita" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Ei ajansyöttötietoja tai muistiinpanoja" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Ei asiakas- tai yritystietoja" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "Voit muuttaa tämän milloin tahansa" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "Jatkamalla hyväksyt TimeTrackerin käytön" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "GPL-3.0 -lisenssi" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Viimeistele asennus ja jatka" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Muokkaa tehtävää" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "Tilan päivittäminen epäonnistui" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "Tehtävän tilan päivittäminen epäonnistui" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Kanban-sarake luotu" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Kanban-sarake poistettu" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Kanban-sarakkeet järjestetty uudelleen" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "Kanban-sarakkeen näkyvyys muuttui" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Kanban-sarakkeet päivitetty" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Päivittää" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "Kanban-sarakkeiden päivittäminen epäonnistui" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Ladataan tehtävän tietoja..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Seurattu" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Näytä täydelliset tiedot" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Takaisin tehtäviin" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "Lisää uusi tehtävä projektiisi jakaaksesi työn hallittaviin osiin" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Anna kuvaava tehtävän nimi" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "Valitse selkeä, kuvaava nimi, joka selittää, mitä sinun on tehtävä" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "Anna yksityiskohtaiset tiedot tehtävästä, vaatimuksista ja mahdollisista erityisistä ohjeista..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "Valinnainen: Lisää kontekstia, vaatimuksia tai erityisiä ohjeita tehtävälle" - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Valitse projekti, johon tämä tehtävä kuuluu" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Alkutila" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Tehty" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Valinnainen: Aseta tälle tehtävälle määräaika" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Valinnainen: Arvioi, kuinka kauan tämä tehtävä kestää" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Valinnainen: Määritä tämä tehtävä tiimin jäsenelle" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "Tunnisteet luokittelua varten" +#~ msgid "Failed to load tasks" +#~ msgstr "Tehtävien lataaminen epäonnistui" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Total days" +#~ msgstr "Tavarat yhteensä" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Vinkkejä tehtävien luomiseen" +#~ msgid "Weekdays only" +#~ msgstr "Viikko alkaa" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Käytä toimintaverbejä ja kerro tarkasti, mitä sinun on tehtävä" +#~ msgid "Entries will be created for" +#~ msgstr "Aikamerkinnät pyöristetään tähän väliin" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Realistiset arviot" +#~ msgid "Agenda" +#~ msgstr "Kalenteri" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Ota huomioon monimutkaisuus ja riippuvuudet arvioidessasi aikaa" +#~ msgid "iCal Format" +#~ msgstr "Aikamuoto" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Aseta määräajat" +#~ msgid "CSV Format" +#~ msgstr "CSV-tuonti" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Eräpäivät auttavat priorisoimaan työn ja seuraamaan edistymistä" +#~ msgid "Filter by tags..." +#~ msgstr "Suodata tehtävät" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Prioriteettiasiat" +#~ msgid "Show billable entries only" +#~ msgstr "Aikamerkintöjä ei löytynyt." -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "Käytä prioriteettitasoja auttaaksesi tiimin jäseniä keskittymään tärkeimpään" +#~ msgid "Billable Only" +#~ msgstr "Laskutettava summa" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Takaisin tehtävään" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Päivitä tehtävän tiedot ja asetukset kohteelle \"%(task)s\"" +#~ msgid "Total Hours:" +#~ msgstr "Tunteja yhteensä" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Tehtävän tiedot" +#~ msgid "Colors assigned by project" +#~ msgstr "Tunnit projektin mukaan" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Päivitä tehtävä" +#~ msgid "Create Time Entry" +#~ msgstr "Luo uusi aikamerkintä" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Käytetty arvio" +#~ msgid "Select a project..." +#~ msgstr "Valitse projekti..." -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Todellinen" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Toistuvat laskut" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Nykyisen tehtävän tiedot" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Luo ajansyöttömalli" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "Päivitä toistuva lasku" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Nykyinen prioriteetti" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "Tällä hetkellä määrätty" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Nykyinen eräpäivä" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Nykyinen arvio" +#~ msgid "Navigate Days" +#~ msgstr "Navigointi" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Todelliset tunnit" +#~ msgid "Views" +#~ msgstr "Näytä" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Aloitettu" +#~ msgid "Day View" +#~ msgstr "Ruudukkonäkymä" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Muokkaa vinkkejä" +#~ msgid "Week View" +#~ msgstr "Arvostelu" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Tilan muutokset" +#~ msgid "Month View" +#~ msgstr "Kuukausi" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "Tilan muuttaminen voi vaikuttaa ajan seurantaan ja edistymislaskelmiin" +#~ msgid "Agenda View" +#~ msgstr "Kalenterinäkymä" -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Eräpäivän päivitykset" +#~ msgid "Create New Entry" +#~ msgstr "Luo uusi asiakas" -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Harkitse ryhmän työmäärää määräaikoja säätäessäsi" +#~ msgid "Focus Filter" +#~ msgstr "Näytä suodattimet" -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Tehtävän muutokset" +#~ msgid "Clear All Filters" +#~ msgstr "Tyhjennä kaikki välimuistit" -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "" +#~ msgid "Close Modal" +#~ msgstr "Lähellä" -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Päivitetään..." +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Suodata tehtävät" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "Käyttöliittymä" +#~ msgid "Failed to load events" +#~ msgstr "Tehtävien lataaminen epäonnistui" -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Poista valitut tehtävät" +#~ msgid "Please select a project for new entries" +#~ msgstr "Valitse projekti avattavasta valikosta" -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Muuta valittujen tehtävien tilaa" +#~ msgid "Please select a project first" +#~ msgstr "Valitse projekti" -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Määritä valitut tehtävät" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Määritä tehtäviä" +#~ msgid "Entry created successfully" +#~ msgstr "Tapahtuma luotu onnistuneesti" -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Siirrä valitut tehtävät projektiin" +#~ msgid "Failed to create entry" +#~ msgstr "Tapahtuman poistaminen epäonnistui" -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Valitse Projekti" +#~ msgid "Entry updated" +#~ msgstr "Viimeksi päivitetty" -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Siirrä tehtävät" +#~ msgid "Failed to update entry" +#~ msgstr "Tilan päivittäminen epäonnistui" -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Haluatko varmasti poistaa tämän muistiinpanon?" -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "Tehtävää \"{name}\" ei voi poistaa, koska siinä on aikamerkintöjä. Poista ensin aikamerkinnät." +#~ msgid "Delete Entry" +#~ msgstr "Poista merkintä" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Poista tehtävä" +#~ msgid "Automatic Timer" +#~ msgstr "Käynnistä ajastin" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "Omat tehtäväni" +#~ msgid "Entry deleted" +#~ msgstr "Poistettu" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Sinulle määrätyt tai itse luomat tehtävät" +#~ msgid "Failed to delete entry" +#~ msgstr "Tapahtuman poistaminen epäonnistui" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "kokonais-" +#~ msgid "Export started" +#~ msgstr "Vie tiedot" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "" +#~ msgid "No recurring blocks yet" +#~ msgstr "Toistuvat laskut" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Tehtävän nimi tai kuvaus" +#~ msgid "Unknown Project" +#~ msgstr "Ei projektia" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Kaikki prioriteetit" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "Tehtävien lataaminen epäonnistui" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Tehtävän tyyppi" +#~ msgid "No events in this period" +#~ msgstr "Ei tehtäviä tässä sarakkeessa." -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "Määrätty minulle" +#~ msgid "Failed to load agenda view" +#~ msgstr "Toimintojen lataaminen epäonnistui" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Luonut minä" +#~ msgid "Failed to load event details" +#~ msgstr "Tehtävien lataaminen epäonnistui" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Näytä vain myöhässä" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Haluatko varmasti poistaa tämän muistiinpanon?" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Minun luoma" +#~ msgid "Delete Recurring Block" +#~ msgstr "Päivitä toistuva lasku" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "" +#~ msgid "Recurring block deleted" +#~ msgstr "Toistuva tapahtuma" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Failed to delete recurring block" +#~ msgstr "Tapahtuman poistaminen epäonnistui" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "Tehtäviä ei löytynyt" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Anna uusi eräpäivä (VVVV-KK-PP):" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "Sinulle ei ole vielä määrätty tai luotuja tehtäviä." +#~ msgid "Entry duplicated successfully" +#~ msgstr "Tapahtuman päivitys onnistui" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Luo ensimmäinen tehtäväsi" +#~ msgid "Failed to duplicate entry" +#~ msgstr "Tapahtuman poistaminen epäonnistui" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Näytä kaikki tehtävät" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Myöhästyneet tehtävät" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "Pikanäppäimet" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Vaatii välitöntä huomiota" +#~ msgid "Edit Time Entry" +#~ msgstr "Uusi aikamerkintä" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "kohteita" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "On" +#~ msgid "Confirm Changes" +#~ msgstr "Vahvistettu" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "Tarkista ja päivitä nämä tehtävät estääksesi lisäviivästykset." +#~ msgid "Confirm & Save" +#~ msgstr "Vahvistettu" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "" +#~ msgid "Admin Mode" +#~ msgstr "Admin Group" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "Arvioitu:" +#~ msgid "Admin Mode:" +#~ msgstr "Admin Group" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Todellinen:" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "Eräpäivät" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Valitse projekti, johon tämä tehtävä kuuluu" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Task (Optional)" +#~ msgstr "Tehtävä (valinnainen)" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "Eräpäivät" +#~ msgid "Select a specific task within the project" +#~ msgstr "Valittu tehtävä on virheellinen valitulle projektille" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "Projektinhallinta" +#~ msgid "When the work started" +#~ msgstr "Viikon aloituspäivä" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "Kaikki prioriteetit" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "Ei myöhässä olevia tehtäviä!" +#~ msgid "Time the work ended" +#~ msgstr "Asiakassopimus päättyi" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "Hienoa työtä! Kaikki tehtävät ovat tällä hetkellä aikataulussa." +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Anna uusi eräpäivä (VVVV-KK-PP):" +#~ msgid "Automatic" +#~ msgstr "Valtuutus" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "Haluatko varmasti pidentää eräpäivää" +#~ msgid "How this entry was created" +#~ msgstr "Asiakas luotu" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "kaikkiin myöhässä oleviin tehtäviin?" +#~ msgid "Duration:" +#~ msgstr "Kesto" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "" +#~ msgid "Describe what you worked on" +#~ msgstr "Mitä työskentelit?" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "Haluatko varmasti asettaa etusijalle" +#~ msgid "tag1, tag2" +#~ msgstr "tag1, tag2" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Virheellinen prioriteetti. Käytä: matala, keskitaso, korkea tai kiireellinen" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Internal invoice reference" +#~ msgstr "Laskuja ei ole valittu" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "Tavoitteen päivittäminen epäonnistui. Yritä uudelleen." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "Aloitetaanko tehtävä ja merkitään kesken?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Muuta tehtävän tilaa" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "Merkitäänkö tehtävä tehtäväksi?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "Merkitäänkö tehtävä valmiiksi?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Suorita tehtävä" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Täydellinen" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "Avataanko tehtävä uudelleen tarkistettavaksi?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Avaa tehtävä uudelleen" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Avaa uudelleen" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "Hankkeen tiedot ja laajuus" - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Luo ajansyöttömalli" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "esim. Daily Standup, Client Meeting" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "esim. 1,0, 0,5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Esitäytä muistiinpanot tämän tyyppiselle aikamerkinnälle" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "esim. kokous, kehitys, järjestelmänvalvoja" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Muokkaa mallia" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "Haluatko varmasti poistaa tämän mallin?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Poista malli" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "Luo ensimmäinen tehtäväsi" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "Mallit" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "Luo ensimmäinen sähköpostimallisi mukauttaaksesi laskusähköpostiviestejä." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Käyttötilastot" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Kuitin/laskun numero" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Reason for Change" +#~ msgstr "Syy arkistointiin" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "Takaisin Muokkaa" +#~ msgid "Task:" +#~ msgstr "Tehtävä" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Start:" +#~ msgstr "Aloita" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "Pyydä hyväksyntää" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "Vaihda suodattimet" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "Ei ajansyöttötietoja tai muistiinpanoja" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "End:" +#~ msgstr "Loppu" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "Aikamerkintöjä ei ole vielä tallennettu" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Admin Notice" +#~ msgstr "Lisää huomautus" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "Aikamerkinnät" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "Manuaalinen ajansyöttö" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "Ajan sisääntulo" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "Kuinka luon joukkoaikamerkintöjä useille päiville?" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "Joukkopääsy" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "Valittua projektia ei löydy" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Tehtävät latautuvat projektin valinnan jälkeen" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "Aikaväli" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "Aikamerkinnät pyöristetään tähän väliin" +#~ msgid "Duplicate Entry" +#~ msgstr "Päällekkäinen merkintä" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "Älykkäät ajastimet" +#~ msgid "Duplicate Time Entry" +#~ msgstr "Päällekkäinen aikamerkintä" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "Kirjaa aika manuaalisesti" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Luo kopio aiemmasta merkinnästä uusilla kellonajoilla" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "tag1, tag2" +#~ msgid "Create a new time entry" +#~ msgstr "Luo uusi aikamerkintä" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "Päällekkäinen merkintä:" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "Suodata laskut" +#~ msgid "Original:" +#~ msgstr "Alkuperäinen:" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "Viimeaikaiset merkinnät" +#~ msgid "to" +#~ msgstr "to" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "Joukkopääsy" +#~ msgid "Project & task" +#~ msgstr "Projektit" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Date & time" +#~ msgstr "Päivämäärä ja aika" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "Viikon trendit" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "Toimitusaika (päiviä)" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Suggest" +#~ msgstr "Vieras" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "Tehtävien lataaminen epäonnistui" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "Tavarat yhteensä" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "Viikko alkaa" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "Aikamerkinnät pyöristetään tähän väliin" - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "Kalenteri" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "Aikamuoto" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "CSV-tuonti" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "Suodata tehtävät" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "Aikamerkintöjä ei löytynyt." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "Laskutettava summa" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "Tunteja yhteensä" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "Tunnit projektin mukaan" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "Luo uusi aikamerkintä" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Valitse projekti..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "Toistuvat laskut" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "Luo ajansyöttömalli" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "Päivitä toistuva lasku" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "Mitä työskentelit?" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "Navigointi" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "Näytä" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "Ruudukkonäkymä" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "Arvostelu" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "Kuukausi" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "Kalenterinäkymä" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "Luo uusi asiakas" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "Näytä suodattimet" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "Tyhjennä kaikki välimuistit" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "Lähellä" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "Tehtävien lataaminen epäonnistui" +#~ msgid "Apply filters" +#~ msgstr "Käytä suodatinta" -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "Valitse projekti avattavasta valikosta" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "Valitse projekti" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "Tapahtuma luotu onnistuneesti" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "Tapahtuman poistaminen epäonnistui" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "Viimeksi päivitetty" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "Tilan päivittäminen epäonnistui" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "Haluatko varmasti poistaa tämän muistiinpanon?" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "Poista merkintä" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "Käynnistä ajastin" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "Poistettu" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "Tapahtuman poistaminen epäonnistui" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "Vie tiedot" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "Toistuvat laskut" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "Ei projektia" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "Tehtävien lataaminen epäonnistui" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "Ei tehtäviä tässä sarakkeessa." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "Toimintojen lataaminen epäonnistui" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "Tehtävien lataaminen epäonnistui" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "Haluatko varmasti poistaa tämän muistiinpanon?" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "Päivitä toistuva lasku" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "Toistuva tapahtuma" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "Tapahtuman poistaminen epäonnistui" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Anna uusi eräpäivä (VVVV-KK-PP):" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "Tapahtuman päivitys onnistui" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "Tapahtuman poistaminen epäonnistui" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "Pikanäppäimet" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "Uusi aikamerkintä" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "Vahvistettu" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "Vahvistettu" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "Admin Group" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "Admin Group" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "Seuraa aikaasi visuaalisen ajastimen avulla" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "Arvioitu valmistuminen" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "Valitse projekti, johon tämä tehtävä kuuluu" +#~ msgid "Calculating..." +#~ msgstr "Lasketaan..." -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "Tehtävä (valinnainen)" +#~ msgid "Based on average session duration" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "Valittu tehtävä on virheellinen valitulle projektille" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Ei aktiivista ajastinta. Aloita yksi alta!" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "Viikon aloituspäivä" +#~ msgid "Start New Timer" +#~ msgstr "Käynnistä uusi ajastin" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Lisää muistiinpanoja työstäsi..." -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Or use a template" +#~ msgstr "Tai käytä mallia" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "Asiakassopimus päättyi" +#~ msgid "Recent Projects" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "Tämän päivän tilastot" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "Valtuutus" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "Asiakas luotu" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "Kesto" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "Mitä työskentelit?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "tag1, tag2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "Laskuja ei ole valittu" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "Kuitin/laskun numero" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "Syy arkistointiin" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Approval" +#~ msgstr "Hyväksyä" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "Tehtävä" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "Aloita" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "Loppu" +#~ msgid "License status" +#~ msgstr "Lisenssi" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "Supporter license active" +#~ msgstr "Tuetut ominaisuudet" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "Lisää huomautus" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Not activated" +#~ msgstr "Aktivoida" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Päällekkäinen merkintä" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Päällekkäinen aikamerkintä" +#~ msgid "Enter license key" +#~ msgstr "Anna asiakkaan nimi" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Kirjaa aika manuaalisesti" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Luo kopio aiemmasta merkinnästä uusilla kellonajoilla" +#~ msgid "License key" +#~ msgstr "Lisenssi" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Luo uusi aikamerkintä" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Päällekkäinen merkintä:" +#~ msgid "Validate" +#~ msgstr "Päivämäärä" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Alkuperäinen:" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "to" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "Projektit" +#~ msgid "Back to Settings" +#~ msgstr "Varmuuskopiointiasetukset" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "Päivämäärä ja aika" +#~ msgid "Profile" +#~ msgstr "Profiili" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "In progress" +#~ msgstr "Käynnissä" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "Näytä kaikkien aikojen merkinnät" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "No recent time entries" +#~ msgstr "Ei viimeaikaisia ​​aikamerkintöjä" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "Vieras" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Hallinnoi tilisi asetuksia ja asetuksia" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Support & Community" +#~ msgstr "Avoin lähdekoodi ja yhteisö" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "Mitä työskentelit?" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "Profile Information" +#~ msgstr "Profiilin tiedot" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Username cannot be changed" +#~ msgstr "Käyttäjätunnusta ei voi muuttaa" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "Käytä suodatinta" +#~ msgid "Required for email notifications" +#~ msgstr "Vaaditaan sähköposti-ilmoituksia varten" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Notification Preferences" +#~ msgstr "Ilmoitusasetukset" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "Ota sähköposti-ilmoitukset käyttöön" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "Pääkytkin kaikille sähköposti-ilmoituksille" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Myöhästyneiden laskujen ilmoitukset" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Tehtävätehtävien ilmoitukset" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Kommentti- ja mainintailmoitukset" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "Viikoittainen ajan yhteenveto sähköposti" -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Ota sähköposti-ilmoitukset käyttöön" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Seuraa aikaasi visuaalisen ajastimen avulla" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Arvioitu valmistuminen" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Lasketaan..." +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Ei aktiivista ajastinta. Aloita yksi alta!" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Käynnistä uusi ajastin" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Lisää muistiinpanoja työstäsi..." +#~ msgid "Display Preferences" +#~ msgstr "Näyttöasetukset" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "Tai käytä mallia" +#~ msgid "System Default" +#~ msgstr "Järjestelmän oletusarvo" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "Ajan pyöristysasetukset" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "Tämän päivän tilastot" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Määritä, miten aikamerkinnät pyöristetään. " +#~ "Tämä vaikuttaa siihen, miten kestot " +#~ "lasketaan, kun pysäytät ajastimet." -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "Ota ajanpyöristys käyttöön" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Pyöreäajan merkinnät määritettyihin aikaväleihin" -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "Pyöristysväli" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "Hyväksyä" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "Aikamerkinnät pyöristetään tähän väliin" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "Rounding Method" +#~ msgstr "Pyöristysmenetelmä" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Overtime Settings" +#~ msgstr "Ylityöasetukset" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "Lisenssi" +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "Tuetut ominaisuudet" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Daily hours" +#~ msgstr "Päivittäiset tunnit" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "Aktivoida" +#~ msgid "Weekly hours" +#~ msgstr "Viikoittaiset tavoitteet" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Standard Hours Per Day" +#~ msgstr "Normaali tuntia päivässä" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "Anna asiakkaan nimi" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Tyypillisesti 8 tuntia kokoaikatyössä" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Standard Hours Per Week" +#~ msgstr "Normaali tuntia päivässä" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "Lisenssi" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "How it works" +#~ msgstr "Miten se toimii" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "Päivämäärä" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "Varmuuskopiointiasetukset" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Profiili" +#~ msgid "Regional Settings" +#~ msgstr "" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "Käynnissä" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Näytä kaikkien aikojen merkinnät" +#~ msgid "Time Format" +#~ msgstr "Aikamuoto" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "Ei viimeaikaisia ​​aikamerkintöjä" +#~ msgid "Week Starts On" +#~ msgstr "Viikko alkaa" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Hallinnoi tilisi asetuksia ja asetuksia" +#~ msgid "Sunday" +#~ msgstr "sunnuntai" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "Avoin lähdekoodi ja yhteisö" +#~ msgid "Monday" +#~ msgstr "maanantai" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Saturday" +#~ msgstr "lauantai" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "Kalenterinäkymä" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "Remember last view" +#~ msgstr "Jäsen vuodesta" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Profiilin tiedot" +#~ msgid "Support & Purchase Key" +#~ msgstr "Luo ostotilaus" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "Käyttäjätunnusta ei voi muuttaa" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "Ajan pyöristys ei ole käytössä. Kaikki" +#~ " ajat tallennetaan täsmälleen seurannan " +#~ "mukaan." -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Vaaditaan sähköposti-ilmoituksia varten" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "Ei pyöristystä – ajat kirjataan täsmälleen seurannan mukaan." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Ilmoitusasetukset" +#~ msgid "Actual time:" +#~ msgstr "Todellinen aika:" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Ota sähköposti-ilmoitukset käyttöön" +#~ msgid "Rounded:" +#~ msgstr "Pyöristetty:" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Pääkytkin kaikille sähköposti-ilmoituksille" +#~ msgid "With " +#~ msgstr "Kanssa" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Myöhästyneiden laskujen ilmoitukset" +#~ msgid " minute intervals" +#~ msgstr "minuutin välein" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Tehtävätehtävien ilmoitukset" +#~ msgid "Create Weekly Goal" +#~ msgstr "Luo viikkotavoite" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Kommentti- ja mainintailmoitukset" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Luo viikoittainen aikatavoite" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "Viikoittainen ajan yhteenveto sähköposti" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "Tavoitetunnit" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "Viikon aloituspäivä" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "Ota sähköposti-ilmoitukset käyttöön" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "Jätä tyhjäksi käyttääksesi kuluvaa viikkoa (maanantaista alkaen)" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Valinnaisia ​​huomautuksia tavoitteestasi..." -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Quick Presets" +#~ msgstr "" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Vinkkejä tavoitteiden asettamiseen" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "Ole realistinen: Harkitse lomia, kokouksia ja muita sitoumuksia" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Näyttöasetukset" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "Aloita konservatiivisesti: Voit aina muuttaa tavoitettasi myöhemmin" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "Järjestelmän oletusarvo" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" +#~ "Seuraa edistymistä: Tarkista kojelautasi " +#~ "säännöllisesti, jotta pysyt ajan tasalla" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Ajan pyöristysasetukset" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "Tyypillinen kokoaika: 40 tuntia viikossa (8 tuntia/päivä, 5 päivää)" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "Määritä, miten aikamerkinnät pyöristetään. Tämä vaikuttaa siihen, miten kestot lasketaan, kun pysäytät ajastimet." +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Ota ajanpyöristys käyttöön" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Muokkaa viikkotavoitetta" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Pyöreäajan merkinnät määritettyihin aikaväleihin" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Muokkaa viikoittaista aikatavoitetta" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Pyöristysväli" +#~ msgid "Week Period" +#~ msgstr "Viikon jakso" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "Aikamerkinnät pyöristetään tähän väliin" +#~ msgid "Current Progress" +#~ msgstr "Nykyinen edistyminen" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Pyöristysmenetelmä" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Haluatko varmasti poistaa tämän tavoitteen?" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Ylityöasetukset" +#~ msgid "Delete Goal" +#~ msgstr "Poista tavoite" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "Viikoittaiset aikatavoitteet" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Aseta ja seuraa viikoittaisia ​​tuntitavoitteitasi" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "Päivittäiset tunnit" +#~ msgid "New Goal" +#~ msgstr "Uusi tavoite" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "Viikoittaiset tavoitteet" +#~ msgid "Total Goals" +#~ msgstr "Tavoitteet yhteensä" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Normaali tuntia päivässä" +#~ msgid "Success Rate" +#~ msgstr "Onnistumisprosentti" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Tyypillisesti 8 tuntia kokoaikatyössä" +#~ msgid "Current Week Goal" +#~ msgstr "Nykyisen viikon tavoite" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "Normaali tuntia päivässä" +#~ msgid "Remaining Hours" +#~ msgstr "Jäljellä olevat tunnit" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Days Remaining" +#~ msgstr "Päiviä jäljellä" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "Miten se toimii" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Keskimääräinen tarvittava tunti/päivä" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "" +#~ msgid "Edit Goal" +#~ msgstr "Muokkaa tavoitetta" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "No goal set for this week" +#~ msgstr "Tälle viikolle ei ole asetettu tavoitetta" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "Luo viikoittainen aikatavoite alkaaksesi seurata edistymistäsi" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Goal History" +#~ msgstr "Maalihistoria" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "" +#~ msgid "Target" +#~ msgstr "Kohde" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "Viikoittaisen tavoitteen tiedot" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Aikamuoto" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "Viikko alkaa" +#~ msgid "Daily Breakdown" +#~ msgstr "Päivittäinen erittely" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "sunnuntai" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "maanantai" +#~ msgid "Time Entries This Week" +#~ msgstr "Aikakirjaukset tällä viikolla" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "lauantai" +#~ msgid "No Project" +#~ msgstr "Ei projektia" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "Kalenterinäkymä" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Tälle viikolle ei ole vielä tallennettu aikamerkintöjä" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "Jäsen vuodesta" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Reference date" +#~ msgstr "Viitetyyppi" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Create/Get Period" +#~ msgstr "Luo ostotilaus" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "Luo ostotilaus" +#~ msgid "Start date" +#~ msgstr "Aloituspäivämäärä" -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "Ajan pyöristys ei ole käytössä. Kaikki ajat tallennetaan täsmälleen seurannan mukaan." +#~ msgid "End date" +#~ msgstr "Päättymispäivämäärä" -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "Ei pyöristystä – ajat kirjataan täsmälleen seurannan mukaan." +#~ msgid "Exports" +#~ msgstr "Viedä" -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Todellinen aika:" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Pyöristetty:" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Kanssa" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "minuutin välein" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Luo viikkotavoite" +#~ msgid "Audit Events CSV" +#~ msgstr "Muokkaa tapahtumaa" -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Luo viikoittainen aikatavoite" +#~ msgid "Timesheet Periods" +#~ msgstr "Viikon jakso" -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "" +#~ msgid "Submit" +#~ msgstr "Aihe" -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Tavoitetunnit" +#~ msgid "No timesheet periods yet." +#~ msgstr "Aikamerkintöjä ei ole vielä tallennettu" -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "" +#~ msgid "Leave Balances" +#~ msgstr "Tallenna muutokset" -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Viikon aloituspäivä" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "Jätä tyhjäksi käyttääksesi kuluvaa viikkoa (maanantaista alkaen)" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "käyttäjä" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Valinnaisia ​​huomautuksia tavoitteestasi..." +#~ msgid "No leave types configured." +#~ msgstr "Ei määritetty" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Vinkkejä tavoitteiden asettamiseen" +#~ msgid "Select leave type" +#~ msgstr "Valitse Asiakas" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Ole realistinen: Harkitse lomia, kokouksia ja muita sitoumuksia" +#~ msgid "Requested hours" +#~ msgstr "Arvioidut tunnit" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Aloita konservatiivisesti: Voit aina muuttaa tavoitettasi myöhemmin" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Saatavilla olevat muuttujat" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "Seuraa edistymistä: Tarkista kojelautasi säännöllisesti, jotta pysyt ajan tasalla" +#~ msgid "Comment" +#~ msgstr "Kommentit" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Tyypillinen kokoaika: 40 tuntia viikossa (8 tuntia/päivä, 5 päivää)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Muokkaa viikkotavoitetta" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Muokkaa viikoittaista aikatavoitetta" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Viikon jakso" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Nykyinen edistyminen" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "Haluatko varmasti poistaa tämän tavoitteen?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Poista tavoite" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Viikoittaiset aikatavoitteet" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Aseta ja seuraa viikoittaisia ​​tuntitavoitteitasi" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Uusi tavoite" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Tavoitteet yhteensä" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Onnistumisprosentti" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Nykyisen viikon tavoite" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Jäljellä olevat tunnit" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Päiviä jäljellä" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Keskimääräinen tarvittava tunti/päivä" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Muokkaa tavoitetta" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "Tälle viikolle ei ole asetettu tavoitetta" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "Luo viikoittainen aikatavoite alkaaksesi seurata edistymistäsi" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Maalihistoria" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Kohde" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Viikoittaisen tavoitteen tiedot" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "Hylätty" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Päivittäinen erittely" +#~ msgid "Allocated" +#~ msgstr "Luotu" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "Aika" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Aikakirjaukset tällä viikolla" +#~ msgid "Utilization %" +#~ msgstr "Valtuutus" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Ei projektia" +#~ msgid "No capacity data available." +#~ msgstr "Palamisnopeustietoja ei ole saatavilla" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Tälle viikolle ei ole vielä tallennettu aikamerkintöjä" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "Viitetyyppi" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "Luo ostotilaus" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "Aloituspäivämäärä" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "Päättymispäivämäärä" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "Viedä" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "Ota asiakasportaali käyttöön" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "Laskutettavan tilan ohitus" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "Muokkaa tapahtumaa" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "Viikon jakso" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "Aihe" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "Aikamerkintöjä ei ole vielä tallennettu" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "Tallenna muutokset" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "Vain aktiivinen" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "Tapahtuman tyyppi" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "käyttäjä" +#~ msgid "Accrual hours per month" +#~ msgstr "Todelliset tunnit" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "Ei määritetty" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "Tapahtuman tyyppi" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "Valitse Asiakas" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "Arvioidut tunnit" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "Saatavilla olevat muuttujat" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "Kommentit" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "Ei käytössä" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "Yrityksen tiedot" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "Hylätty" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "Luotu" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "Aika" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "Valtuutus" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "Palamisnopeustietoja ei ole saatavilla" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "Roolin nimi" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "Huomautukset (valinnainen)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "Lisää Hyvä" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "Ota asiakasportaali käyttöön" +#~ msgid "No holidays configured." +#~ msgstr "Webhookeja ei ole määritetty" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "Laskutettavan tilan ohitus" +#~ msgid "Support" +#~ msgstr "Tukea" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "Vain aktiivinen" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "Tapahtuman tyyppi" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "Todelliset tunnit" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "Tapahtuman tyyppi" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "Ei käytössä" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "Yrityksen tiedot" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "Roolin nimi" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "Huomautukset (valinnainen)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "Lisää Hyvä" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "Webhookeja ei ole määritetty" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "Ylimaksettu" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Tukea" +#~ msgid "Cash" +#~ msgstr "käteistä" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "Tarkista" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "Pankkisiirto" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "Luottokortti" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "Pankkikortti" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "Raita" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "Ylimaksettu" +#~ msgid "Company Card" +#~ msgstr "Yrityskortti" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "käteistä" +#~ msgid "Reimbursed" +#~ msgstr "Korvataan" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Tarkista" +#~ msgid "Processing" +#~ msgstr "Käsittely" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Pankkisiirto" +#~ msgid "80% Budget Warning" +#~ msgstr "80 %:n budjettivaroitus" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Luottokortti" +#~ msgid "Budget Limit Reached" +#~ msgstr "Budjettiraja saavutettu" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Pankkikortti" +#~ msgid "Info" +#~ msgstr "Tiedot" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Raita" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Yrityskortti" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Korvataan" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Käsittely" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Laskun numero: %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "80 %:n budjettivaroitus" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "Julkaisupäivä: %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Budjettiraja saavutettu" +#~ msgid "Due Date: %(date)s" +#~ msgstr "Eräpäivä: %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Tiedot" +#~ msgid "Quote For:" +#~ msgstr "Lainaus:" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "Lainauksen tiedot:" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "Tuotteet:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "Kokonais:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "Laskun numero: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "Julkaisupäivä: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "Eräpäivä: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Lainaus:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Lainauksen tiedot:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Tuotteet:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Kokonais:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Kirjaudu sisään päästäksesi tälle sivulle" +#~ msgid "Please log in to access this page" +#~ msgstr "Kirjaudu sisään päästäksesi tälle sivulle" diff --git a/translations/fr/LC_MESSAGES/messages.po b/translations/fr/LC_MESSAGES/messages.po index 9b2db7be..4db88b79 100644 --- a/translations/fr/LC_MESSAGES/messages.po +++ b/translations/fr/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: fr\n" @@ -14,26619 +14,18891 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "Veuillez vous connecter pour accéder au portail client." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." -msgstr "Votre session a expiré ou la page est restée ouverte trop longtemps. Veuillez réessayer." +msgstr "" +"Votre session a expiré ou la page est restée ouverte trop longtemps. " +"Veuillez réessayer." + +#~ msgid "Administrator access required" +#~ msgstr "Accès administrateur requis" + +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" + +#~ msgid "Username is required" +#~ msgstr "Le nom d'utilisateur est requis" + +#~ msgid "User already exists" +#~ msgstr "L'utilisateur existe déjà" + +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de créer un utilisateur en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "L'utilisateur \"%(username)s\" a été créé avec succès" + +#~ msgid "Username already exists" +#~ msgstr "Le nom d'utilisateur existe déjà" + +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "" +#~ "Veuillez sélectionner un client lors de" +#~ " l'activation de l'accès au portail " +#~ "client." + +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "Le mot de passe doit comporter au moins 8 caractères." + +#~ msgid "Passwords do not match." +#~ msgstr "Les mots de passe ne correspondent pas." + +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour " +#~ "l'utilisateur en raison d'une erreur de" +#~ " base de données. Veuillez vérifier " +#~ "les journaux du serveur." + +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" + +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "L'utilisateur \"%(username)s\" a été mis à jour avec succès" + +#~ msgid "Cannot delete the last administrator" +#~ msgstr "Impossible de supprimer le dernier administrateur" + +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "" +#~ "Impossible de supprimer un utilisateur " +#~ "avec des entrées de temps existantes" + +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer l'utilisateur en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "L'utilisateur \"%(username)s\" a été supprimé avec succès" + +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "La télémétrie a été activée. Merci de nous aider à nous améliorer !" + +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "Accès administrateur requis" +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "Le nom d'utilisateur est requis" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "L'utilisateur existe déjà" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "Impossible de créer un utilisateur en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "L'utilisateur \"%(username)s\" a été créé avec succès" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "Le nom d'utilisateur existe déjà" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Veuillez sélectionner un client lors de l'activation de l'accès au portail client." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "Le mot de passe doit comporter au moins 8 caractères." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "Les mots de passe ne correspondent pas." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour l'utilisateur en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "Fuseau horaire invalide : %(timezone)s" + +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" + +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "paramètres en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." + +#~ msgid "Settings updated successfully" +#~ msgstr "Paramètres mis à jour avec succès" + +#~ msgid "Invalid code." +#~ msgstr "" + +#~ msgid "Error saving settings" +#~ msgstr "Erreur lors de l'enregistrement des paramètres" + +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "" +#~ "Impossible de mettre à jour la " +#~ "mise en page du PDF en raison " +#~ "d'une erreur de base de données." + +#~ msgid "PDF layout updated successfully" +#~ msgstr "Mise en page PDF mise à jour avec succès" + +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" + +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "" +#~ "Impossible de réinitialiser la mise en" +#~ " page du PDF en raison d'une " +#~ "erreur de base de données." + +#~ msgid "PDF layout reset to defaults" +#~ msgstr "Mise en page PDF réinitialisée aux valeurs par défaut" + +#~ msgid "Invalid page size" +#~ msgstr "" + +#~ msgid "Template not found for this page size" +#~ msgstr "" + +#~ msgid "No file uploaded" +#~ msgstr "" + +#~ msgid "No file selected" +#~ msgstr "Aucun fichier sélectionné" + +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" + +#~ msgid "Could not import template due to a database error." +#~ msgstr "" + +#~ msgid "Template imported successfully" +#~ msgstr "" + +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" + +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" + +#~ msgid "Invoice not found" +#~ msgstr "" + +#~ msgid "Quote not found" +#~ msgstr "" + +#~ msgid "No logo file selected" +#~ msgstr "Aucun fichier de logo sélectionné" + +#~ msgid "Invalid image file." +#~ msgstr "Fichier image invalide." + +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "Impossible d'enregistrer le logo en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "Logo de l'entreprise téléchargé avec " +#~ "succès ! Vous pouvez le voir dans" +#~ " la section « Logo actuel de " +#~ "l'entreprise » ci-dessus. Il apparaîtra" +#~ " sur les factures et les documents" +#~ " PDF." -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "L'utilisateur \"%(username)s\" a été mis à jour avec succès" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "" +#~ "Type de fichier invalide. Types " +#~ "autorisés : PNG, JPG, JPEG, GIF, " +#~ "SVG, WEBP" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "Impossible de supprimer le dernier administrateur" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer le logo en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "Impossible de supprimer un utilisateur avec des entrées de temps existantes" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "Le logo de l'entreprise a été " +#~ "supprimé avec succès. Téléchargez un " +#~ "nouveau logo dans la section ci-" +#~ "dessous si nécessaire." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "Impossible de supprimer l'utilisateur en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "No logo to remove" +#~ msgstr "Aucun logo à supprimer" -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "L'utilisateur \"%(username)s\" a été supprimé avec succès" +#~ msgid "Backup failed: archive not created" +#~ msgstr "Échec de la sauvegarde : archive non créée" -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "La télémétrie a été activée. Merci de nous aider à nous améliorer !" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "Échec de la sauvegarde : %(error)s" -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "Invalid file type" +#~ msgstr "Type de fichier invalide" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "Fichier de sauvegarde introuvable" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "Sauvegarde \"%(filename)s\" supprimée avec succès" + +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "Échec de la suppression de la sauvegarde : %(error)s" + +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "" +#~ "Type de fichier invalide. Veuillez " +#~ "sélectionner une archive de sauvegarde " +#~ ".zip." + +#~ msgid "Backup file not found." +#~ msgstr "Fichier de sauvegarde introuvable." + +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "" +#~ "Type de fichier invalide. Veuillez " +#~ "télécharger une archive de sauvegarde " +#~ ".zip." + +#~ msgid "No backup file provided" +#~ msgstr "Aucun fichier de sauvegarde fourni" + +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "" +#~ "La restauration a commencé. Vous pouvez" +#~ " suivre les progrès sur cette page." + +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "" +#~ "OIDC n’est pas activé. Définissez " +#~ "AUTH_METHOD sur « oidc » ou « " +#~ "les deux »." + +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER n'est pas configuré" + +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" + +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" + +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" + +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" + +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" + +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ Document de découverte récupéré avec succès à partir de %(url)s" + +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" + +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ Échec de la récupération du document de découverte : %(error)s" + +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ Erreur inattendue : %(error)s" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ Le client OAuth est enregistré dans l'application" -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ Le client OAuth n'est pas enregistré" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "Fuseau horaire invalide : %(timezone)s" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ Échec de la création du client OAuth : %(error)s" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s : %(url)s" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour les paramètres en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ %(endpoint)s manquants dans le document de découverte" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Paramètres mis à jour avec succès" +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ La portée \"%(scope)s\" est prise en charge par le fournisseur" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ La portée \"%(scope)s\" peut ne " +#~ "pas être prise en charge par le" +#~ " fournisseur (prise en charge : " +#~ "%(supported)s)" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Erreur lors de l'enregistrement des paramètres" +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ Le fournisseur prend en charge les réclamations : %(claims)s" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "" +#~ "✓ La revendication %(claim_type)s configurée" +#~ " \"%(claim_name)s\" est prise en charge" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ La revendication %(claim_type)s configurée" +#~ " \"%(claim_name)s\" ne figure pas dans " +#~ "la liste des revendications prises en" +#~ " charge (peut toujours fonctionner)" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "OIDC configuration test completed" +#~ msgstr "Test de configuration OIDC terminé" -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "Template name is required" +#~ msgstr "Le nom du modèle est obligatoire" -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "Impossible de mettre à jour la mise en page du PDF en raison d'une erreur de base de données." +#~ msgid "HTML template content is required" +#~ msgstr "Le nom du modèle est obligatoire" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "Mise en page PDF mise à jour avec succès" +#~ msgid "A template with this name already exists" +#~ msgstr "Un modèle portant ce nom existe déjà" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "Could not create email template due to a database error." +#~ msgstr "" +#~ "Impossible de créer un modèle d'e-mail" +#~ " en raison d'une erreur de base " +#~ "de données." -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "Impossible de réinitialiser la mise en page du PDF en raison d'une erreur de base de données." +#~ msgid "Email template created successfully" +#~ msgstr "Modèle d'e-mail créé avec succès" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "Mise en page PDF réinitialisée aux valeurs par défaut" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "modèle d'e-mail en raison d'une erreur" +#~ " de base de données." -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Email template updated successfully" +#~ msgstr "Modèle d'e-mail mis à jour avec succès" -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" +#~ "Impossible de supprimer le modèle " +#~ "utilisé par les factures ou les " +#~ "factures récurrentes" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "" +#~ "Impossible de supprimer le modèle " +#~ "d'e-mail en raison d'une erreur de " +#~ "base de données." + +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "Le modèle d'e-mail « %(name)s » a été supprimé avec succès" + +#~ msgid "Task name and project are required" +#~ msgstr "" + +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "Le projet sélectionné n'existe pas ou est inactif" + +#~ msgid "message" +#~ msgstr "message" + +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" + +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" +#~ "Le tableau des journaux d’audit n’existe" +#~ " pas. Veuillez exécuter : mise à " +#~ "niveau de la base de données flask" + +#~ msgid "You must change your password before continuing." +#~ msgstr "" + +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" + +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "Bon retour, %(username)s !" + +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" + +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" + +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" + +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Définissez votre mot de passe" + +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "" +#~ "Jeton de configuration de mot de " +#~ "passe invalide ou expiré. Veuillez en" +#~ " demander un nouveau." + +#~ msgid "Password reset is not available for this account." +#~ msgstr "Le portail client n'est pas activé pour ce client." + +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" + +#~ msgid "Could not reset password due to a database error." +#~ msgstr "" +#~ "Impossible de définir le mot de " +#~ "passe en raison d'une erreur de " +#~ "base de données." + +#~ msgid "Invalid username format" +#~ msgstr "" + +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" + +#~ msgid "Password is required" +#~ msgstr "" + +#~ msgid "Invalid username or password" +#~ msgstr "" + +#~ msgid "Password is required to create an account." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "Impossible de créer votre compte en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez réessayer plus tard." -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Aucun fichier sélectionné" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "Accueillir! Votre compte a été créé." -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Utilisateur introuvable. Veuillez contacter un administrateur." -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "" +#~ "Impossible de mettre à jour votre " +#~ "rôle de compte en raison d'une " +#~ "erreur de base de données." + +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "Le compte est désactivé. Veuillez contacter un administrateur." + +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" + +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" + +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" + +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" +#~ "Erreur inattendue lors de la connexion." +#~ " Veuillez réessayer ou vérifier les " +#~ "journaux du serveur." + +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "" +#~ "Votre session a expiré ou la page" +#~ " est restée ouverte trop longtemps. " +#~ "Veuillez réessayer." + +#~ msgid "Invalid authentication code." +#~ msgstr "Méthode d'authentification" + +#~ msgid "Two-factor authentication enabled." +#~ msgstr "Méthode d'authentification" + +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "" +#~ "Impossible de créer votre compte en " +#~ "raison d'une erreur de base de " +#~ "données." + +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Méthode d'authentification" + +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "" +#~ "Impossible de mettre à jour votre " +#~ "rôle de compte en raison d'une " +#~ "erreur de base de données." + +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "Au revoir, %(username)s !" + +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "" +#~ "Type de fichier d'avatar invalide. " +#~ "Autorisés : PNG, JPG, JPEG, GIF, " +#~ "WEBP" + +#~ msgid "Failed to save avatar on server." +#~ msgstr "Échec de l'enregistrement de l'avatar sur le serveur." + +#~ msgid "Profile updated successfully" +#~ msgstr "Profil mis à jour avec succès" + +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "" +#~ "Impossible de mettre à jour votre " +#~ "profil en raison d'une erreur de " +#~ "base de données." + +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" + +#~ msgid "New password is required" +#~ msgstr "" + +#~ msgid "Current password is required" +#~ msgstr "" + +#~ msgid "Current password is incorrect" +#~ msgstr "" + +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" + +#~ msgid "Could not update password due to a database error." +#~ msgstr "" + +#~ msgid "Avatar removed" +#~ msgstr "Avatar supprimé" + +#~ msgid "Failed to remove avatar." +#~ msgstr "Échec de la suppression de l'avatar." + +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" + +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" + +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" +#~ "L’authentification unique n’est pas encore " +#~ "configurée. Veuillez contacter un " +#~ "administrateur." -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "L’authentification unique n’est pas configurée." -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "Échec de l'authentification : réclamation " +#~ "d'émetteur ou de sujet manquante. " +#~ "Veuillez vérifier la configuration OIDC." -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "Aucun fichier de logo sélectionné" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "Fichier image invalide." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "Impossible d'enregistrer le logo en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "Logo de l'entreprise téléchargé avec succès ! Vous pouvez le voir dans la section « Logo actuel de l'entreprise » ci-dessus. Il apparaîtra sur les factures et les documents PDF." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "Type de fichier invalide. Types autorisés : PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "Impossible de supprimer le logo en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "Le logo de l'entreprise a été supprimé avec succès. Téléchargez un nouveau logo dans la section ci-dessous si nécessaire." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "Aucun logo à supprimer" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "Échec de la sauvegarde : archive non créée" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "Échec de la sauvegarde : %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Type de fichier invalide" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "Fichier de sauvegarde introuvable" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "Sauvegarde \"%(filename)s\" supprimée avec succès" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "Échec de la suppression de la sauvegarde : %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "Type de fichier invalide. Veuillez sélectionner une archive de sauvegarde .zip." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "Fichier de sauvegarde introuvable." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "Type de fichier invalide. Veuillez télécharger une archive de sauvegarde .zip." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "Aucun fichier de sauvegarde fourni" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "La restauration a commencé. Vous pouvez suivre les progrès sur cette page." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC n’est pas activé. Définissez AUTH_METHOD sur « oidc » ou « les deux »." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER n'est pas configuré" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "" +#~ "Le compte utilisateur n'existe pas et" +#~ " l'auto-inscription est désactivée." -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "" +#~ "Impossible de créer votre compte en " +#~ "raison d'une erreur de base de " +#~ "données." -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Erreur inattendue lors de la connexion" +#~ " SSO. Veuillez réessayer ou contacter " +#~ "l'assistance." -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "Vous n'avez pas accès à ce projet." -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "Ce projet n'a pas de budget fixé." -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ Document de découverte récupéré avec succès à partir de %(url)s" +#~ msgid "Event created successfully" +#~ msgstr "Événement créé avec succès" -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "Événement mis à jour avec succès" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ Échec de la récupération du document de découverte : %(error)s" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "Vous n'êtes pas autorisé à supprimer cet événement." -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ Erreur inattendue : %(error)s" +#~ msgid "Failed to delete event" +#~ msgstr "Échec de la suppression de l'événement" -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "Event deleted successfully" +#~ msgstr "Événement supprimé avec succès" -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ Le client OAuth est enregistré dans l'application" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ Le client OAuth n'est pas enregistré" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ Échec de la création du client OAuth : %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s : %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ %(endpoint)s manquants dans le document de découverte" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ La portée \"%(scope)s\" est prise en charge par le fournisseur" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ La portée \"%(scope)s\" peut ne pas être prise en charge par le fournisseur (prise en charge : %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ Le fournisseur prend en charge les réclamations : %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ La revendication %(claim_type)s configurée \"%(claim_name)s\" est prise en charge" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ La revendication %(claim_type)s configurée \"%(claim_name)s\" ne figure pas dans la liste des revendications prises en charge (peut toujours fonctionner)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "Test de configuration OIDC terminé" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "Le nom du modèle est obligatoire" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "Le nom du modèle est obligatoire" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "Un modèle portant ce nom existe déjà" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "Impossible de créer un modèle d'e-mail en raison d'une erreur de base de données." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "Modèle d'e-mail créé avec succès" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "Impossible de mettre à jour le modèle d'e-mail en raison d'une erreur de base de données." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "Modèle d'e-mail mis à jour avec succès" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "Impossible de supprimer le modèle utilisé par les factures ou les factures récurrentes" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "Impossible de supprimer le modèle d'e-mail en raison d'une erreur de base de données." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "Le modèle d'e-mail « %(name)s » a été supprimé avec succès" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "Erreur lors de la suppression de l'événement : %(error)s" -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "Le projet sélectionné n'existe pas ou est inactif" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "message" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "Événement déplacé avec succès" -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "Le tableau des journaux d’audit n’existe pas. Veuillez exécuter : mise à niveau de la base de données flask" +#~ msgid "Event resized successfully" +#~ msgstr "L'événement a été redimensionné avec succès" -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "Vous n'êtes pas autorisé à visualiser cet événement." -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "Vous n'êtes pas autorisé à modifier cet événement." -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "Bon retour, %(username)s !" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "Le contenu de la note ne peut pas être vide" -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Note added successfully" +#~ msgstr "Note ajoutée avec succès" -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Error adding note" +#~ msgstr "Erreur lors de l'ajout d'une note" -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "Définissez votre mot de passe" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Erreur lors de l'ajout de la note : %(error)s" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Note does not belong to this client" +#~ msgstr "La note n'appartient pas à ce client" -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Jeton de configuration de mot de passe invalide ou expiré. Veuillez en demander un nouveau." +#~ msgid "You do not have permission to edit this note" +#~ msgstr "Vous n'êtes pas autorisé à modifier cette note" -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "Le portail client n'est pas activé pour ce client." +#~ msgid "Error updating note" +#~ msgstr "Erreur lors de la mise à jour de la note" -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "Note updated successfully" +#~ msgstr "Remarque mise à jour avec succès" -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "Impossible de définir le mot de passe en raison d'une erreur de base de données." +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Erreur lors de la mise à jour de la note : %(error)s" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "You do not have permission to delete this note" +#~ msgstr "Vous n'êtes pas autorisé à supprimer cette note" -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "Error deleting note" +#~ msgstr "Erreur lors de la suppression de la note" -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "Note deleted successfully" +#~ msgstr "Note supprimée avec succès" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "Erreur lors de la suppression de la note : %(error)s" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "Access Denied" +#~ msgstr "Accès refusé" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "Impossible de créer votre compte en raison d'une erreur de base de données. Veuillez réessayer plus tard." +#~ msgid "403 Forbidden" +#~ msgstr "403 Interdit" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "Accueillir! Votre compte a été créé." +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Utilisateur introuvable. Veuillez contacter un administrateur." +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "Impossible de mettre à jour votre rôle de compte en raison d'une erreur de base de données." +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "Le compte est désactivé. Veuillez contacter un administrateur." +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "Page Not Found" +#~ msgstr "Page introuvable" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "La page que vous recherchez n'existe pas ou a été déplacée." -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "Erreur inattendue lors de la connexion. Veuillez réessayer ou vérifier les journaux du serveur." - -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "Votre session a expiré ou la page est restée ouverte trop longtemps. Veuillez réessayer." - -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "Méthode d'authentification" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "Méthode d'authentification" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "Impossible de créer votre compte en raison d'une erreur de base de données." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "Méthode d'authentification" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "Impossible de mettre à jour votre rôle de compte en raison d'une erreur de base de données." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "Au revoir, %(username)s !" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "Type de fichier d'avatar invalide. Autorisés : PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "Échec de l'enregistrement de l'avatar sur le serveur." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Profil mis à jour avec succès" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "Impossible de mettre à jour votre profil en raison d'une erreur de base de données." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "Server Error" +#~ msgstr "Erreur de serveur" -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "L'accès au portail client n'est pas activé pour votre compte." -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "Your client account is inactive." +#~ msgstr "Votre compte client est inactif." -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "Username and password are required." +#~ msgstr "Le nom d'utilisateur et le mot de passe sont requis." -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar supprimé" +#~ msgid "Invalid username or password." +#~ msgstr "Nom d'utilisateur ou mot de passe invalide." -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "Échec de la suppression de l'avatar." +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "Bienvenue, %(client_name)s !" -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "You have been logged out." +#~ msgstr "Vous avez été déconnecté." -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Jeton de configuration de mot de passe invalide ou manquant." -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "" +#~ "Jeton de configuration de mot de " +#~ "passe invalide ou expiré. Veuillez en" +#~ " demander un nouveau." -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "L’authentification unique n’est pas encore configurée. Veuillez contacter un administrateur." +#~ msgid "Password is required." +#~ msgstr "Un mot de passe est requis." -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "L’authentification unique n’est pas configurée." +#~ msgid "Could not set password due to a database error." +#~ msgstr "" +#~ "Impossible de définir le mot de " +#~ "passe en raison d'une erreur de " +#~ "base de données." -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "" +#~ "Mot de passe défini avec succès !" +#~ " Vous pouvez maintenant vous connecter " +#~ "au portail." -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "Impossible de charger les données du portail client." -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "Échec de l'authentification : réclamation d'émetteur ou de sujet manquante. Veuillez vérifier la configuration OIDC." +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "Le compte utilisateur n'existe pas et l'auto-inscription est désactivée." +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "Impossible de créer votre compte en raison d'une erreur de base de données." +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "Erreur inattendue lors de la connexion SSO. Veuillez réessayer ou contacter l'assistance." +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "Vous n'avez pas accès à ce projet." +#~ msgid "Invoice not found." +#~ msgstr "Facture introuvable." -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Ce projet n'a pas de budget fixé." +#~ msgid "Quote not found." +#~ msgstr "Citation introuvable." -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Événement créé avec succès" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Événement mis à jour avec succès" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "Vous n'êtes pas autorisé à supprimer cet événement." +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "Échec de la suppression de l'événement" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Événement supprimé avec succès" +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "Erreur lors de la suppression de l'événement : %(error)s" +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "Événement déplacé avec succès" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "L'événement a été redimensionné avec succès" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "Vous n'êtes pas autorisé à visualiser cet événement." +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "Vous n'êtes pas autorisé à modifier cet événement." +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "Le contenu de la note ne peut pas être vide" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Note ajoutée avec succès" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Erreur lors de l'ajout d'une note" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Erreur lors de l'ajout de la note : %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "La note n'appartient pas à ce client" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "Vous n'êtes pas autorisé à modifier cette note" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Erreur lors de la mise à jour de la note" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Remarque mise à jour avec succès" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Erreur lors de la mise à jour de la note : %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "Vous n'êtes pas autorisé à supprimer cette note" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Erreur lors de la suppression de la note" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Note supprimée avec succès" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "Erreur lors de la suppression de la note : %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "Veuillez vous connecter pour accéder au portail client." +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Accès refusé" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Interdit" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Page introuvable" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "La page que vous recherchez n'existe pas ou a été déplacée." +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Erreur de serveur" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "L'accès au portail client n'est pas activé pour votre compte." +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "Votre compte client est inactif." +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Le nom d'utilisateur et le mot de passe sont requis." +#~ msgid "Unable to load report data." +#~ msgstr "Impossible de charger les données du portail client." -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Nom d'utilisateur ou mot de passe invalide." +#~ msgid "Client Report" +#~ msgstr "Portail client" -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "Bienvenue, %(client_name)s !" +#~ msgid "Last %(days)s days" +#~ msgstr "7 derniers jours" -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "Vous avez été déconnecté." +#~ msgid "Summary" +#~ msgstr "Résumé" -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Jeton de configuration de mot de passe invalide ou manquant." +#~ msgid "Total Hours" +#~ msgstr "Heures totales" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "Jeton de configuration de mot de passe invalide ou expiré. Veuillez en demander un nouveau." +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "Un mot de passe est requis." +#~ msgid "Paid" +#~ msgstr "Payé" -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "Impossible de définir le mot de passe en raison d'une erreur de base de données." +#~ msgid "Outstanding" +#~ msgstr "Remarquable" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "Mot de passe défini avec succès ! Vous pouvez maintenant vous connecter au portail." +#~ msgid "Hours by Project" +#~ msgstr "Heures par projet" -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "Impossible de charger les données du portail client." +#~ msgid "Project" +#~ msgstr "Projet" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "Hours" +#~ msgstr "Heures" -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Billable Hours" +#~ msgstr "Heures facturables" -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "Time by Date" +#~ msgstr "Plage de temps" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Date" +#~ msgstr "Date" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Facture introuvable." +#~ msgid "Access denied" +#~ msgstr "Accès refusé" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Citation introuvable." +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "Vous n'êtes pas autorisé à créer des clients" -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "Le nom du client est requis" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "Un client portant ce nom existe déjà" -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "Format de taux horaire invalide" -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "Les heures prépayées doivent être un nombre positif." -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "Le jour de réinitialisation prépayé doit être compris entre 1 et 28." -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de créer le client en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "Vous n'avez pas accès à ce projet." -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "Vous n'êtes pas autorisé à modifier les clients" -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "" +#~ "Le nom d’utilisateur du portail est " +#~ "requis lors de l’activation de l’accès" +#~ " au portail." + +#~ msgid "This portal username is already in use by another client." +#~ msgstr "Ce nom d'utilisateur du portail est déjà utilisé par un autre client." + +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "client en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." + +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "Vous n'êtes pas autorisé à envoyer des e-mails sur le portail" + +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "Le portail client n'est pas activé pour ce client." + +#~ msgid "Portal username is not set for this client." +#~ msgstr "Le nom d'utilisateur du portail n'est pas défini pour ce client." + +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "L'adresse e-mail du client n'est pas " +#~ "définie. Impossible d'envoyer un e-mail " +#~ "de configuration du mot de passe." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "" +#~ "Impossible de générer le jeton de " +#~ "configuration du mot de passe en " +#~ "raison d'une erreur de base de " +#~ "données." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "E-mail de configuration du mot de passe envoyé avec succès à %(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "Le serveur de messagerie n'est pas " +#~ "configuré. Veuillez configurer les paramètres" +#~ " de messagerie dans Admin → " +#~ "Configuration de la messagerie ou " +#~ "définir la variable d'environnement " +#~ "MAIL_SERVER." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "Échec de l'envoi de l'e-mail de " +#~ "configuration du mot de passe. Veuillez" +#~ " vérifier la configuration de la " +#~ "messagerie et les journaux du serveur" +#~ " pour plus de détails." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "Une erreur s'est produite lors de l'envoi de l'e-mail : %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "Vous n'êtes pas autorisé à archiver les clients" + +#~ msgid "Client is already inactive" +#~ msgstr "Le client est déjà inactif" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "Vous n'êtes pas autorisé à activer les clients" + +#~ msgid "Client is already active" +#~ msgstr "Le client est déjà actif" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "Vous n'êtes pas autorisé à supprimer des clients" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer le client en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "No clients selected for deletion" +#~ msgstr "Aucun client sélectionné pour la suppression" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer les clients en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "No clients were deleted" +#~ msgstr "Aucun client n'a été supprimé" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "Vous n'êtes pas autorisé à modifier le statut du client" + +#~ msgid "No clients selected" +#~ msgstr "Aucun client sélectionné" + +#~ msgid "Invalid status" +#~ msgstr "Statut invalide" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "statut du client en raison d'une " +#~ "erreur de base de données. Veuillez " +#~ "vérifier les journaux du serveur." + +#~ msgid "No clients were updated" +#~ msgstr "Aucun client n'a été mis à jour" + +#~ msgid "No file provided" +#~ msgstr "Aucun fichier fourni" + +#~ msgid "File type not allowed" +#~ msgstr "Type de fichier non autorisé" + +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "La taille du fichier dépasse la taille maximale autorisée (10 Mo)" + +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Impossible de télécharger la pièce " +#~ "jointe en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "Pièce jointe téléchargée avec succès" -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "File not found" +#~ msgstr "Fichier introuvable" -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Impossible de supprimer la pièce jointe" +#~ " en raison d'une erreur de base " +#~ "de données. Veuillez vérifier les " +#~ "journaux du serveur." -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "Pièce jointe supprimée avec succès" -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "Le contenu du commentaire ne peut pas être vide" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "Le commentaire doit être associé à un projet, une tâche ou un devis" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "Le commentaire ne peut pas être associé à plusieurs cibles" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "Commentaire parent invalide" -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "Commentaire ajouté avec succès" -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "Erreur lors de l'ajout du commentaire" -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Erreur lors de l'ajout du commentaire : %(error)s" -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "Impossible de charger les données du portail client." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "Portail client" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "7 derniers jours" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Résumé" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Heures totales" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "Vous n'êtes pas autorisé à modifier ce commentaire" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Payé" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Remarquable" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Heures par projet" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Projet" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Heures" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Heures facturables" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "Plage de temps" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Date" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Accès refusé" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "Comment updated successfully" +#~ msgstr "Commentaire mis à jour avec succès" -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Erreur lors de la mise à jour du commentaire : %(error)s" -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "Vous n'êtes pas autorisé à supprimer ce commentaire" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "Vous n'êtes pas autorisé à créer des clients" +#~ msgid "Comment deleted successfully" +#~ msgstr "Commentaire supprimé avec succès" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "Le nom du client est requis" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Erreur lors de la suppression du commentaire : %(error)s" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "Un client portant ce nom existe déjà" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Format de taux horaire invalide" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "Les heures prépayées doivent être un nombre positif." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "Le jour de réinitialisation prépayé doit être compris entre 1 et 28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "Vous n'êtes pas autorisé à supprimer cette pièce jointe" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "Impossible de créer le client en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "Vous n'avez pas accès à ce projet." +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "Vous n'êtes pas autorisé à modifier les clients" +#~ msgid "Contact created successfully" +#~ msgstr "Contact créé avec succès" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "Le nom d’utilisateur du portail est requis lors de l’activation de l’accès au portail." +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Erreur lors de la création du contact : %(error)s" -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Ce nom d'utilisateur du portail est déjà utilisé par un autre client." +#~ msgid "Contact updated successfully" +#~ msgstr "Contact mis à jour avec succès" -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour le client en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Erreur lors de la mise à jour du contact : %(error)s" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "Vous n'êtes pas autorisé à envoyer des e-mails sur le portail" +#~ msgid "Contact deleted successfully" +#~ msgstr "Contact supprimé avec succès" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "Le portail client n'est pas activé pour ce client." +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "Erreur lors de la suppression du contact : %(error)s" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "Le nom d'utilisateur du portail n'est pas défini pour ce client." +#~ msgid "Contact set as primary" +#~ msgstr "Contact défini comme principal" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "L'adresse e-mail du client n'est pas définie. Impossible d'envoyer un e-mail de configuration du mot de passe." +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "Erreur lors de la définition du contact principal : %(error)s" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "Impossible de générer le jeton de configuration du mot de passe en raison d'une erreur de base de données." +#~ msgid "Communication recorded successfully" +#~ msgstr "Communication enregistrée avec succès" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "E-mail de configuration du mot de passe envoyé avec succès à %(email)s" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Erreur d'enregistrement de la communication : %(error)s" -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "Le serveur de messagerie n'est pas configuré. Veuillez configurer les paramètres de messagerie dans Admin → Configuration de la messagerie ou définir la variable d'environnement MAIL_SERVER." +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "Échec de l'envoi de l'e-mail de configuration du mot de passe. Veuillez vérifier la configuration de la messagerie et les journaux du serveur pour plus de détails." +#~ msgid "Label is required" +#~ msgstr "L'étiquette est obligatoire" -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "Une erreur s'est produite lors de l'envoi de l'e-mail : %(error)s" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "Vous n'êtes pas autorisé à archiver les clients" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "Le client est déjà inactif" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "Vous n'êtes pas autorisé à activer les clients" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "Le client est déjà actif" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "Vous n'êtes pas autorisé à supprimer des clients" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "Impossible de supprimer le client en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "Aucun client sélectionné pour la suppression" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "Impossible de supprimer les clients en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "Aucun client n'a été supprimé" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "Vous n'êtes pas autorisé à modifier le statut du client" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "Aucun client sélectionné" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Statut invalide" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour le statut du client en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "Aucun client n'a été mis à jour" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "Aucun fichier fourni" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Type de fichier non autorisé" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "La taille du fichier dépasse la taille maximale autorisée (10 Mo)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "Impossible de télécharger la pièce jointe en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "Pièce jointe téléchargée avec succès" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "Fichier introuvable" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "Impossible de supprimer la pièce jointe en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "Pièce jointe supprimée avec succès" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "Le contenu du commentaire ne peut pas être vide" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "Le commentaire doit être associé à un projet, une tâche ou un devis" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "Le commentaire ne peut pas être associé à plusieurs cibles" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Commentaire parent invalide" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Commentaire ajouté avec succès" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Erreur lors de l'ajout du commentaire" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Erreur lors de l'ajout du commentaire : %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "Vous n'êtes pas autorisé à modifier ce commentaire" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Commentaire mis à jour avec succès" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Erreur lors de la mise à jour du commentaire : %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "Vous n'êtes pas autorisé à supprimer ce commentaire" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Commentaire supprimé avec succès" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Erreur lors de la suppression du commentaire : %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "Vous n'êtes pas autorisé à supprimer cette pièce jointe" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Contact créé avec succès" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Erreur lors de la création du contact : %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Contact mis à jour avec succès" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Erreur lors de la mise à jour du contact : %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Contact supprimé avec succès" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "Erreur lors de la suppression du contact : %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Contact défini comme principal" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "Erreur lors de la définition du contact principal : %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Communication enregistrée avec succès" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Erreur d'enregistrement de la communication : %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "L'étiquette est obligatoire" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "Valeur de l'offre invalide" -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "Offre créée avec succès" -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Erreur lors de la création de l'offre : %(error)s" -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "Offre mise à jour avec succès" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Erreur lors de la mise à jour de l'offre : %(error)s" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "Transaction conclue comme gagnée" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Erreur lors de la clôture de la transaction : %(error)s" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "Transaction conclue comme perdue" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "Activité enregistrée avec succès" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Erreur d'activité d'enregistrement : %(error)s" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "Le nom de la catégorie est obligatoire" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "Expense category created successfully" +#~ msgstr "Catégorie de dépenses créée avec succès" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "Erreur lors de la création de la catégorie de dépenses" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "Catégorie de dépenses mise à jour avec succès" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "Error updating expense category" +#~ msgstr "Erreur lors de la mise à jour de la catégorie de dépenses" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Catégorie de dépenses désactivée avec succès" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Valeur de l'offre invalide" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Offre créée avec succès" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Erreur lors de la création de l'offre : %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Offre mise à jour avec succès" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Erreur lors de la mise à jour de l'offre : %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Transaction conclue comme gagnée" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Erreur lors de la clôture de la transaction : %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Transaction conclue comme perdue" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Activité enregistrée avec succès" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Erreur d'activité d'enregistrement : %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "Le nom de la catégorie est obligatoire" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Catégorie de dépenses créée avec succès" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Erreur lors de la création de la catégorie de dépenses" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Catégorie de dépenses mise à jour avec succès" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Erreur lors de la mise à jour de la catégorie de dépenses" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Catégorie de dépenses désactivée avec succès" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Erreur lors de la désactivation de la catégorie de dépenses" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "Le titre est requis" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "La catégorie est obligatoire" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "Le montant est requis" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "La date de dépense est requise" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Format de date invalide" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Format de montant invalide" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Error deactivating expense category" +#~ msgstr "Erreur lors de la désactivation de la catégorie de dépenses" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "Title is required" +#~ msgstr "Le titre est requis" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Category is required" +#~ msgstr "La catégorie est obligatoire" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Dépense créée avec succès" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Erreur lors de la création de la dépense" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "Vous n'êtes pas autorisé à consulter cette dépense" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "Vous n'êtes pas autorisé à modifier cette dépense" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "Impossible de modifier les dépenses approuvées ou remboursées" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Veuillez remplir tous les champs obligatoires" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Dépense mise à jour avec succès" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Erreur lors de la mise à jour des dépenses" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "Vous n'êtes pas autorisé à supprimer cette dépense" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "Impossible de supprimer les dépenses approuvées ou facturées" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Dépense supprimée avec succès" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Erreur lors de la suppression de la dépense" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "Aucune dépense sélectionnée pour suppression" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "Impossible de supprimer les dépenses en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "%(count)d dépense(s) supprimée(s) avec succès" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "%(count)d dépense(s) ignorée(s) : %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "Aucune dépense sélectionnée" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Valeur de statut invalide" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "Impossible de mettre à jour les dépenses en raison d'une erreur de base de données" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "%(count)d dépense(s) a été mise à jour avec succès vers %(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "%(count)d dépense(s) ignorée(s) : %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "%(count)d dépense(s) ignorée(s) (aucune autorisation)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Seuls les administrateurs peuvent approuver les dépenses" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Seules les dépenses en attente peuvent être approuvées" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Dépense approuvée avec succès" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Erreur lors de l'approbation de la dépense" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Seuls les administrateurs peuvent refuser des dépenses" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Seules les dépenses en attente peuvent être rejetées" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Le motif du refus est requis" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Dépense rejetée" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Erreur lors du rejet d'une dépense" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Seuls les administrateurs peuvent marquer les dépenses comme remboursées" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Seules les dépenses approuvées peuvent être marquées comme remboursées" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Cette dépense n'est pas marquée comme remboursable" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Dépense marquée comme remboursée" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Erreur marquant la dépense comme remboursée" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "L'OCR n'est pas disponible. Veuillez contacter votre administrateur." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Type de fichier invalide. Types autorisés : png, jpg, jpeg, gif, pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "Reçu scanné avec succès ! Vous pouvez désormais créer une dépense avec les données extraites." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "Erreur lors de la numérisation du reçu. Veuillez réessayer ou saisir la dépense manuellement." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "Aucune donnée de reçu numérisée trouvée. Veuillez d'abord scanner un reçu." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Dépense créée avec succès à partir du reçu numérisé" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "Aucune autorisation attribuée." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "Amount is required" +#~ msgstr "Le montant est requis" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "Expense date is required" +#~ msgstr "La date de dépense est requise" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "Format de date invalide" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "Format de montant invalide" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "Dépense créée avec succès" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "Erreur lors de la création de la dépense" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "Vous n'êtes pas autorisé à consulter cette dépense" -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "Vous n'êtes pas autorisé à modifier cette dépense" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "Impossible de modifier les dépenses approuvées ou remboursées" -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "Please fill in all required fields" +#~ msgstr "Veuillez remplir tous les champs obligatoires" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "Expense updated successfully" +#~ msgstr "Dépense mise à jour avec succès" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Error updating expense" +#~ msgstr "Erreur lors de la mise à jour des dépenses" -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "Vous n'êtes pas autorisé à supprimer cette dépense" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "Impossible de supprimer les dépenses approuvées ou facturées" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Expense deleted successfully" +#~ msgstr "Dépense supprimée avec succès" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "Erreur lors de la suppression de la dépense" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "Aucune dépense sélectionnée pour suppression" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer les dépenses en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "%(count)d dépense(s) supprimée(s) avec succès" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "%(count)d dépense(s) ignorée(s) : %(errors)s" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "Aucune dépense sélectionnée" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "Invalid status value" +#~ msgstr "Valeur de statut invalide" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "API REST pour les intégrations" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "dépenses en raison d'une erreur de " +#~ "base de données" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "Le nom du client est requis" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "%(count)d dépense(s) a été mise à jour avec succès vers %(status)s" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "%(count)d dépense(s) ignorée(s) : %(errors)s" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "%(count)d dépense(s) ignorée(s) (aucune autorisation)" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Seuls les administrateurs peuvent approuver les dépenses" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Seules les dépenses en attente peuvent être approuvées" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "Dépense approuvée avec succès" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "Error approving expense" +#~ msgstr "Erreur lors de l'approbation de la dépense" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Seuls les administrateurs peuvent refuser des dépenses" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Seules les dépenses en attente peuvent être rejetées" -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Rejection reason is required" +#~ msgstr "Le motif du refus est requis" -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "Dépense rejetée" -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "Erreur lors du rejet d'une dépense" -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "" +#~ "Seuls les administrateurs peuvent marquer " +#~ "les dépenses comme remboursées" -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Seules les dépenses approuvées peuvent être marquées comme remboursées" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Cette dépense n'est pas marquée comme remboursable" -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Dépense marquée comme remboursée" -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Erreur marquant la dépense comme remboursée" -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "L'OCR n'est pas disponible. Veuillez contacter votre administrateur." -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Type de fichier invalide. Types autorisés : png, jpg, jpeg, gif, pdf" -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "Reçu scanné avec succès ! Vous " +#~ "pouvez désormais créer une dépense avec" +#~ " les données extraites." -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Erreur lors de la numérisation du " +#~ "reçu. Veuillez réessayer ou saisir la" +#~ " dépense manuellement." -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "Aucune donnée de reçu numérisée trouvée." +#~ " Veuillez d'abord scanner un reçu." -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Dépense créée avec succès à partir du reçu numérisé" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "Permission denied." +#~ msgstr "Aucune autorisation attribuée." -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Avancé" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Revoir" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "API REST pour les intégrations" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Entreprise" +#~ msgid "Linear API key is required." +#~ msgstr "Le nom du client est requis" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Webhooks" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Projets" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "Le SKU existe déjà. Veuillez utiliser un autre SKU." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Article en stock créé avec succès." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "Erreur lors de la création de l'article en stock : %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Article en stock mis à jour avec succès." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "Erreur lors de la mise à jour de l'article en stock : %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "Impossible de supprimer un article en stock avec un historique de stock ou de mouvement existant." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "Article en stock supprimé avec succès." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "Erreur lors de la suppression de l'article en stock : %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "Le code d'entrepôt existe déjà. Veuillez utiliser un code différent." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Entrepôt créé avec succès." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Erreur lors de la création de l'entrepôt : %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Entrepôt mis à jour avec succès." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "Erreur lors de la mise à jour de l'entrepôt : %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "Impossible de supprimer l'entrepôt avec le stock existant. Veuillez d'abord transférer ou supprimer tout le stock." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Entrepôt supprimé avec succès." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Erreur lors de la suppression de l'entrepôt : %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "Mouvement de stock enregistré avec succès." +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "Erreur lors de l'enregistrement du mouvement de stock : %(error)s" +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "Les entrepôts source et destination doivent être différents." +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Stock disponible insuffisant dans l'entrepôt source." +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "Transfert de stock terminé avec succès." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Erreur lors de la création du transfert : %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "Ajustement des stocks enregistré avec succès." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Erreur d'ajustement de l'enregistrement : %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Réservation remplie avec succès." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Erreur lors de l'exécution de la réservation : %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "Réservation annulée avec succès." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "Erreur lors de l'annulation de la réservation : %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Advanced" +#~ msgstr "Avancé" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "Fournisseur créé avec succès." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Erreur lors de la création du fournisseur : %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "Le code fournisseur existe déjà. Veuillez utiliser un code différent." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "Fournisseur mis à jour avec succès." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Erreur lors de la mise à jour du fournisseur : %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "Impossible de supprimer le fournisseur avec les articles en stock associés. Supprimez d'abord les éléments." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "Fournisseur supprimé avec succès." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Erreur lors de la suppression du fournisseur : %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "Le titre est requis" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "Aucun fournisseur trouvé." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "Le nom du rôle est requis" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "Impossible de créer le rôle en raison d'une erreur de base de données" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Bon de commande créé avec succès." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Erreur lors de la création du bon de commande : %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "Impossible de modifier un bon de commande qui a été reçu." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "Impossible de mettre à jour le rôle en raison d'une erreur de base de données" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Bon de commande mis à jour avec succès." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Erreur lors de la mise à jour du bon de commande : %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "Impossible de mettre à jour les rôles utilisateur en raison d'une erreur de base de données" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Bon de commande marqué comme envoyé." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Erreur lors de l'envoi du bon de commande : %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "Impossible de créer le rôle en raison d'une erreur de base de données" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Bon de commande annulé avec succès." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Erreur lors de l'annulation du bon de commande : %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "Impossible de supprimer un bon de commande reçu. Annulez-le plutôt." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "Impossible de supprimer le rôle en raison d'une erreur de base de données" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Bon de commande supprimé avec succès." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Erreur lors de la suppression du bon de commande : %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "Impossible de créer le rôle en raison d'une erreur de base de données" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Bon de commande marqué comme reçu et stock mis à jour." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Erreur lors de la réception du bon de commande : %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Review" +#~ msgstr "Revoir" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Company" +#~ msgstr "Entreprise" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "Le projet, le nom du client et la date d'échéance sont requis" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Format de date d'échéance invalide" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Format de taux de taxe invalide" +#~ msgid "Webhooks" +#~ msgstr "Webhooks" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Projet sélectionné introuvable" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "Impossible de créer la facture en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Projects" +#~ msgstr "Projets" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "Vous n'êtes pas autorisé à consulter cette facture" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "Vous n'êtes pas autorisé à modifier cette facture" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "Avertissement : Impossible de réserver le stock pour l'article %(item)s : %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour la facture en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "Facture mise à jour avec succès" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "Avertissement : Impossible de réduire le stock pour l'article %(item)s : %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "Vous n'êtes pas autorisé à supprimer cette facture" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "Seuls les brouillons de devis peuvent être modifiés" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "Impossible de supprimer la facture en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "Aucune facture sélectionnée pour suppression" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "Impossible de supprimer les factures en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "Aucune facture sélectionnée" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "Impossible de mettre à jour les factures en raison d'une erreur de base de données" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "Aucune entrée de temps, aucun coût, aucune dépense ou marchandise supplémentaire sélectionnée" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "Impossible de générer des éléments en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "Éléments de facture générés avec succès à partir des entrées de temps et des coûts" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "%(hours)s d'heures prépayées appliquées pour %(client)s avant de facturer les dépassements." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "Vous n'êtes pas autorisé à exporter cette facture" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "Le SKU existe déjà. Veuillez utiliser un autre SKU." -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Stock item created successfully." +#~ msgstr "Article en stock créé avec succès." -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "Erreur lors de la création de l'article en stock : %(error)s" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Stock item updated successfully." +#~ msgstr "Article en stock mis à jour avec succès." -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "Erreur lors de la mise à jour de l'article en stock : %(error)s" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "Échec de la génération du PDF : %(err)s. La restauration a également échoué : %(fb)s" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "Impossible de supprimer un article en" +#~ " stock avec un historique de stock" +#~ " ou de mouvement existant." -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "Vous n'êtes pas autorisé à dupliquer cette facture" +#~ msgid "Stock item deleted successfully." +#~ msgstr "Article en stock supprimé avec succès." -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "Impossible de dupliquer la facture en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "Erreur lors de la suppression de l'article en stock : %(error)s" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "Impossible de finaliser la facture dupliquée en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "Le code d'entrepôt existe déjà. Veuillez utiliser un code différent." -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Warehouse created successfully." +#~ msgstr "Entrepôt créé avec succès." -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Erreur lors de la création de l'entrepôt : %(error)s" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "Entrepôt mis à jour avec succès." -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "Erreur lors de la mise à jour de l'entrepôt : %(error)s" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "Impossible de supprimer l'entrepôt avec " +#~ "le stock existant. Veuillez d'abord " +#~ "transférer ou supprimer tout le stock." -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Entrepôt supprimé avec succès." -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Erreur lors de la suppression de l'entrepôt : %(error)s" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Facture marquée comme envoyée" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Facture marquée comme payée" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "Mouvement de stock enregistré avec succès." -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "La clé et l'étiquette sont requises" +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "Impossible de créer la colonne en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "Erreur lors de l'enregistrement du mouvement de stock : %(error)s" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour la colonne en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "Les entrepôts source et destination doivent être différents." -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "Les colonnes système ne peuvent pas être supprimées" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Stock disponible insuffisant dans l'entrepôt source." -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "Impossible de supprimer la colonne en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "Impossible de basculer la colonne en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "Transfert de stock terminé avec succès." -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Erreur lors de la création du transfert : %(error)s" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "Ajustement des stocks enregistré avec succès." -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Erreur d'ajustement de l'enregistrement : %(error)s" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Réservation remplie avec succès." -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "La minuterie s'est arrêtée avec succès" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Erreur lors de l'exécution de la réservation : %(error)s" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Lead créé avec succès" +#~ msgid "Reservation cancelled successfully." +#~ msgstr "Réservation annulée avec succès." -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Erreur lors de la création du prospect : %(error)s" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "Erreur lors de l'annulation de la réservation : %(error)s" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Prospect mis à jour avec succès" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Erreur lors de la mise à jour du prospect : %(error)s" +#~ msgid "Supplier created successfully." +#~ msgstr "Fournisseur créé avec succès." -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "Le prospect a déjà été converti" +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Erreur lors de la création du fournisseur : %(error)s" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Lead converti en client avec succès" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "Le code fournisseur existe déjà. Veuillez utiliser un code différent." -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Erreur lors de la conversion du prospect : %(error)s" +#~ msgid "Supplier updated successfully." +#~ msgstr "Fournisseur mis à jour avec succès." -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Lead converti pour négocier avec succès" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Erreur lors de la mise à jour du fournisseur : %(error)s" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Plomb marqué comme perdu" +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "Impossible de supprimer le fournisseur " +#~ "avec les articles en stock associés. " +#~ "Supprimez d'abord les éléments." -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "Erreur marquant le prospect comme perdu : %(error)s" +#~ msgid "Supplier deleted successfully." +#~ msgstr "Fournisseur supprimé avec succès." -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Erreur lors de la suppression du fournisseur : %(error)s" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Supplier is required." +#~ msgstr "Le titre est requis" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "Supplier not found." +#~ msgstr "Aucun fournisseur trouvé." -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Order date is required." +#~ msgstr "Le nom du rôle est requis" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "Impossible de créer le rôle en raison d'une erreur de base de données" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Purchase order created successfully." +#~ msgstr "Bon de commande créé avec succès." -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Erreur lors de la création du bon de commande : %(error)s" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "Impossible de modifier un bon de commande qui a été reçu." -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "rôle en raison d'une erreur de " +#~ "base de données" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Purchase order updated successfully." +#~ msgstr "Bon de commande mis à jour avec succès." -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Erreur lors de la mise à jour du bon de commande : %(error)s" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Entrée de kilométrage créée avec succès" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "rôles utilisateur en raison d'une erreur" +#~ " de base de données" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Erreur lors de la création de l'entrée de kilométrage" +#~ msgid "Purchase order marked as sent." +#~ msgstr "Bon de commande marqué comme envoyé." -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "Vous n'êtes pas autorisé à afficher cette entrée de kilométrage" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Erreur lors de l'envoi du bon de commande : %(error)s" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "Vous n'êtes pas autorisé à modifier cette entrée de kilométrage" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "Impossible de créer le rôle en raison d'une erreur de base de données" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "Impossible de modifier les entrées de kilométrage approuvées ou remboursées" +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Bon de commande annulé avec succès." -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Entrée de kilométrage mise à jour avec succès" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Erreur lors de l'annulation du bon de commande : %(error)s" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Erreur lors de la mise à jour de l'entrée de kilométrage" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "Impossible de supprimer un bon de commande reçu. Annulez-le plutôt." -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "Vous n'êtes pas autorisé à supprimer cette entrée de kilométrage" +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "" +#~ "Impossible de supprimer le rôle en " +#~ "raison d'une erreur de base de " +#~ "données" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "Entrée de kilométrage supprimée avec succès" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Bon de commande supprimé avec succès." -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Erreur lors de la suppression de l'entrée de kilométrage" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Erreur lors de la suppression du bon de commande : %(error)s" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "Aucune entrée de kilométrage sélectionnée pour la suppression" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "Impossible de supprimer les entrées de kilométrage en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "%(count)d entrée de kilométrage %(plural)s a été supprimée avec succès" +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "Impossible de créer le rôle en raison d'une erreur de base de données" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "%(count)d entrée de kilométrage ignorée%(plural)s : %(errors)s" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "Bon de commande marqué comme reçu et stock mis à jour." -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "Aucune entrée de kilométrage sélectionnée" +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Erreur lors de la réception du bon de commande : %(error)s" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "Impossible de mettre à jour les entrées de kilométrage en raison d'une erreur de base de données" +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "%(count)d entrée de kilométrage %(plural)s a été mise à jour avec succès en %(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "%(count)d entrée de kilométrage%(plural)s ignorée (aucune autorisation)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Seuls les administrateurs peuvent approuver les entrées de miles" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Seules les entrées de kilométrage en attente peuvent être approuvées" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Entrée de kilométrage approuvée avec succès" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Erreur lors de l'approbation de la saisie du kilométrage" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Seuls les administrateurs peuvent refuser les entrées de miles" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "Seules les entrées de miles en attente peuvent être rejetées" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Entrée de kilométrage refusée" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Erreur lors du rejet de la saisie du kilométrage" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "Seuls les administrateurs peuvent marquer les entrées de miles comme remboursées" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "Seules les entrées de kilométrage approuvées peuvent être marquées comme remboursées" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Entrée de kilométrage marquée comme remboursée" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Erreur lors du marquage du kilométrage comme remboursé" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "Le titre du devis et le client sont requis" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Client sélectionné introuvable" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Format du montant total invalide" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Format des heures estimées invalide" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Format de date invalide pour valide jusqu'à" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "Impossible de créer un devis en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Devis créé avec succès" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "Seuls les brouillons de devis peuvent être modifiés" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour le devis en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "Devis mis à jour avec succès" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "Seuls des projets de devis peuvent être envoyés" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "Impossible d'envoyer le devis en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Devis envoyé avec succès" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Ce devis ne peut être accepté" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "Impossible d'accepter le devis : %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "Impossible d'accepter le devis en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Devis accepté et projet créé avec succès" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Ce devis ne peut pas être rejeté" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "Impossible de rejeter le devis : %(error)s" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "Impossible de rejeter le devis en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Devis rejeté" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "Seuls les devis brouillons ou rejetés peuvent être supprimés" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "Impossible de supprimer le devis en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Devis supprimé avec succès" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "Le projet, le nom du client et la date d'échéance sont requis" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Invalid due date format" +#~ msgstr "Format de date d'échéance invalide" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Invalid tax rate format" +#~ msgstr "Format de taux de taxe invalide" + +#~ msgid "Selected project not found" +#~ msgstr "Projet sélectionné introuvable" + +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de créer la facture en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "Vous n'êtes pas autorisé à consulter cette facture" + +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" + +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" + +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" + +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" + +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" + +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" + +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" + +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "Vous n'êtes pas autorisé à modifier cette facture" + +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Avertissement : Impossible de réserver " +#~ "le stock pour l'article %(item)s : " +#~ "%(error)s" + +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour la " +#~ "facture en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." + +#~ msgid "Invoice updated successfully" +#~ msgstr "Facture mise à jour avec succès" + +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Avertissement : Impossible de réduire le" +#~ " stock pour l'article %(item)s : " +#~ "%(error)s" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "Vous n'êtes pas autorisé à supprimer cette facture" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "Seuls les brouillons de devis peuvent être modifiés" + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer la facture en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "Aucune facture sélectionnée pour suppression" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer les factures en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "No invoices selected" +#~ msgstr "Aucune facture sélectionnée" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "factures en raison d'une erreur de " +#~ "base de données" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "" +#~ "Aucune entrée de temps, aucun coût, " +#~ "aucune dépense ou marchandise supplémentaire" +#~ " sélectionnée" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de générer des éléments en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "" +#~ "Éléments de facture générés avec succès" +#~ " à partir des entrées de temps " +#~ "et des coûts" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "%(hours)s d'heures prépayées appliquées pour" +#~ " %(client)s avant de facturer les " +#~ "dépassements." + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "Vous n'êtes pas autorisé à exporter cette facture" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" + +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" + +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" + +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "" +#~ "Échec de la génération du PDF :" +#~ " %(err)s. La restauration a également " +#~ "échoué : %(fb)s" + +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "Vous n'êtes pas autorisé à dupliquer cette facture" + +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Impossible de dupliquer la facture en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Impossible de finaliser la facture " +#~ "dupliquée en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "Format de date à partir de non valide" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Format de date invalide" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "Vous n'êtes pas autorisé à consulter ce paiement" +#~ msgid "Image uploaded successfully" +#~ msgstr "" + +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "La facture, le montant et la date de paiement sont requis" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "Facture sélectionnée introuvable" +#~ msgid "Invoice marked as sent" +#~ msgstr "Facture marquée comme envoyée" + +#~ msgid "Invoice marked as paid" +#~ msgstr "Facture marquée comme payée" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "Vous n'êtes pas autorisé à ajouter des paiements à cette facture" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" + +#~ msgid "Client is required." +#~ msgstr "" + +#~ msgid "Issue created successfully." +#~ msgstr "" + +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" + +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" + +#~ msgid "Project must belong to the same client." +#~ msgstr "" + +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" + +#~ msgid "Issue updated successfully." +#~ msgstr "" + +#~ msgid "Please select a task." +#~ msgstr "" + +#~ msgid "Issue linked to task successfully." +#~ msgstr "" + +#~ msgid "Please select a project." +#~ msgstr "" + +#~ msgid "Task created from issue successfully." +#~ msgstr "" + +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "Le montant du paiement doit être supérieur à zéro" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Montant du paiement invalide" +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Format de date de paiement invalide" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "Les frais de passerelle ne peuvent pas être négatifs" +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Montant des frais de passerelle invalide" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "Impossible de créer le paiement en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "Vous n'êtes pas autorisé à modifier ce paiement" +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour le paiement en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Paiement mis à jour avec succès" +#~ msgid "Key and label are required" +#~ msgstr "La clé et l'étiquette sont requises" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "Vous n'êtes pas autorisé à supprimer ce paiement" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de créer la colonne en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "Impossible de supprimer le paiement en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour la " +#~ "colonne en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Paiement supprimé avec succès" +#~ msgid "System columns cannot be deleted" +#~ msgstr "Les colonnes système ne peuvent pas être supprimées" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "Aucun paiement sélectionné pour suppression" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer la colonne en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "Impossible de supprimer les paiements en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de basculer la colonne en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "Aucun paiement sélectionné" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "Impossible de mettre à jour les paiements en raison d'une erreur de base de données" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "La date de début doit être antérieure à la date de fin" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "Aucun tarif journalier trouvé pour cet emplacement. Veuillez d'abord configurer les tarifs." +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Réclamation d'indemnité journalière créée avec succès" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Erreur lors de la création d'une demande d'indemnité journalière" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "Vous n'êtes pas autorisé à consulter cette demande d'indemnité journalière" +#~ msgid "Timer stopped successfully" +#~ msgstr "La minuterie s'est arrêtée avec succès" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "Vous n'êtes pas autorisé à modifier cette demande d'indemnité journalière" +#~ msgid "Lead created successfully" +#~ msgstr "Lead créé avec succès" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "Impossible de modifier les demandes d'indemnité journalière approuvées ou remboursées" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Erreur lors de la création du prospect : %(error)s" -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "La demande d'indemnité journalière a été mise à jour avec succès" +#~ msgid "Lead updated successfully" +#~ msgstr "Prospect mis à jour avec succès" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Erreur lors de la mise à jour de la demande d'indemnité journalière" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "Vous n'êtes pas autorisé à supprimer cette demande d'indemnité journalière" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Demande d'indemnité journalière supprimée avec succès" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Erreur lors de la suppression de la demande d'indemnité journalière" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "Aucune demande d'indemnité journalière sélectionnée pour suppression" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "Impossible de supprimer les demandes d'indemnités journalières en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "%(count)d réclamation(s) d'indemnité journalière a été supprimée avec succès" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "%(count)d demandes d'indemnités journalières ignorées : %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "Aucune demande d'indemnité journalière sélectionnée" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "Impossible de mettre à jour les demandes d'indemnités journalières en raison d'une erreur de base de données" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "%(count)d réclamation(s) d'indemnité journalière a été mise à jour avec succès vers %(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "%(count)d réclamation(s) d'indemnité journalière ignorée (aucune autorisation)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Seuls les administrateurs peuvent approuver les demandes d'indemnités journalières" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Seules les demandes d'indemnités journalières en attente peuvent être approuvées." - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Demande d'indemnité journalière approuvée avec succès" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Erreur lors de l'approbation de la demande d'indemnité journalière" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Seuls les administrateurs peuvent rejeter les demandes d'indemnités journalières" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Seules les demandes d'indemnités journalières en attente peuvent être rejetées" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Demande d'indemnité journalière rejetée" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Erreur lors du rejet de la demande d'indemnité journalière" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Taux journalier créé avec succès" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Erreur lors de la création du tarif journalier" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Le taux journalier a été mis à jour avec succès" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Erreur lors de la mise à jour du taux journalier" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "Impossible de supprimer le taux : il est utilisé par %(count)d réclamation(s) d'indemnités journalières. Désactivez-le plutôt." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "Taux journalier supprimé avec succès" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Erreur lors de la suppression du taux journalier" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "Vous n'êtes pas autorisé à accéder à cette page" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "Le nom du rôle est requis" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "Un rôle portant ce nom existe déjà" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "Impossible de créer le rôle en raison d'une erreur de base de données" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Rôle créé avec succès" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Erreur lors de la mise à jour du prospect : %(error)s" -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "Impossible de mettre à jour le rôle en raison d'une erreur de base de données" +#~ msgid "Lead has already been converted" +#~ msgstr "Le prospect a déjà été converti" -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Rôle mis à jour avec succès" +#~ msgid "Lead converted to client successfully" +#~ msgstr "Lead converti en client avec succès" -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "Vous n'êtes pas autorisé à effectuer cette action" +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Erreur lors de la conversion du prospect : %(error)s" -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "Les rôles système ne peuvent pas être supprimés" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Lead converti pour négocier avec succès" -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "Impossible de supprimer le rôle attribué aux utilisateurs. Veuillez d'abord réaffecter les utilisateurs." +#~ msgid "Lead marked as lost" +#~ msgstr "Plomb marqué comme perdu" -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "Impossible de supprimer le rôle en raison d'une erreur de base de données" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "Erreur marquant le prospect comme perdu : %(error)s" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "Le rôle « %(name)s » a été supprimé avec succès" +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" + +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "Impossible de mettre à jour les rôles utilisateur en raison d'une erreur de base de données" +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Les rôles d'utilisateur ont été mis à jour avec succès" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "Mileage entry created successfully" +#~ msgstr "Entrée de kilométrage créée avec succès" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "Error creating mileage entry" +#~ msgstr "Erreur lors de la création de l'entrée de kilométrage" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "Vous n'êtes pas autorisé à afficher cette entrée de kilométrage" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "Vous n'êtes pas autorisé à modifier cette entrée de kilométrage" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "Le nom du projet et le client sont requis" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "" +#~ "Impossible de modifier les entrées de" +#~ " kilométrage approuvées ou remboursées" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Montant du budget non valide" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Entrée de kilométrage mise à jour avec succès" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Pourcentage de seuil budgétaire non valide (0-100)" +#~ msgid "Error updating mileage entry" +#~ msgstr "Erreur lors de la mise à jour de l'entrée de kilométrage" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "Vous n'êtes pas autorisé à supprimer cette entrée de kilométrage" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Projet introuvable" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "Entrée de kilométrage supprimée avec succès" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Error deleting mileage entry" +#~ msgstr "Erreur lors de la suppression de l'entrée de kilométrage" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "Vous n'êtes pas autorisé à archiver des projets" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "Aucune entrée de kilométrage sélectionnée pour la suppression" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "Le projet est déjà archivé" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossible de supprimer les entrées de" +#~ " kilométrage en raison d'une erreur " +#~ "de base de données. Veuillez vérifier" +#~ " les journaux du serveur." -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "Vous n'êtes pas autorisé à désarchiver des projets" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "%(count)d entrée de kilométrage %(plural)s a été supprimée avec succès" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "Le projet est déjà actif" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "%(count)d entrée de kilométrage ignorée%(plural)s : %(errors)s" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "Vous n'êtes pas autorisé à désactiver des projets" +#~ msgid "No mileage entries selected" +#~ msgstr "Aucune entrée de kilométrage sélectionnée" -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "Le projet est déjà inactif" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "entrées de kilométrage en raison d'une" +#~ " erreur de base de données" -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "Vous n'êtes pas autorisé à activer des projets" +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "" +#~ "%(count)d entrée de kilométrage %(plural)s " +#~ "a été mise à jour avec succès " +#~ "en %(status)s" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "Impossible de supprimer un projet avec des entrées de temps existantes" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "%(count)d entrée de kilométrage%(plural)s ignorée (aucune autorisation)" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "Impossible de supprimer le projet en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Seuls les administrateurs peuvent approuver les entrées de miles" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "Vous n'êtes pas autorisé à supprimer des projets" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Seules les entrées de kilométrage en attente peuvent être approuvées" -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "Aucun projet sélectionné pour suppression" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Entrée de kilométrage approuvée avec succès" -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "Impossible de supprimer les projets en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Error approving mileage entry" +#~ msgstr "Erreur lors de l'approbation de la saisie du kilométrage" + +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Seuls les administrateurs peuvent refuser les entrées de miles" + +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "Seules les entrées de miles en attente peuvent être rejetées" -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "Aucun projet n'a été supprimé" +#~ msgid "Mileage entry rejected" +#~ msgstr "Entrée de kilométrage refusée" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "Vous n'êtes pas autorisé à modifier le statut du projet" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Erreur lors du rejet de la saisie du kilométrage" -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "Aucun projet sélectionné" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "" +#~ "Seuls les administrateurs peuvent marquer " +#~ "les entrées de miles comme remboursées" -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour le statut du projet en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "" +#~ "Seules les entrées de kilométrage " +#~ "approuvées peuvent être marquées comme " +#~ "remboursées" + +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Entrée de kilométrage marquée comme remboursée" + +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Erreur lors du marquage du kilométrage comme remboursé" + +#~ msgid "Quote title and client are required" +#~ msgstr "Le titre du devis et le client sont requis" + +#~ msgid "Selected client not found" +#~ msgstr "Client sélectionné introuvable" + +#~ msgid "Invalid total amount format" +#~ msgstr "Format du montant total invalide" + +#~ msgid "Invalid estimated hours format" +#~ msgstr "Format des heures estimées invalide" + +#~ msgid "Invalid date format for valid until" +#~ msgstr "Format de date invalide pour valide jusqu'à" + +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de créer un devis en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Quote created successfully" +#~ msgstr "Devis créé avec succès" + +#~ msgid "Only draft quotes can be edited" +#~ msgstr "Seuls les brouillons de devis peuvent être modifiés" + +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "devis en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "Aucun projet n'a été mis à jour" +#~ msgid "Quote updated successfully" +#~ msgstr "Devis mis à jour avec succès" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "Le projet est déjà dans les favoris" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "Seuls des projets de devis peuvent être envoyés" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Projet ajouté aux favoris" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "Impossible d'envoyer le devis en raison" +#~ " d'une erreur de base de données. " +#~ "Veuillez vérifier les journaux du " +#~ "serveur." -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "Échec de l'ajout du projet aux favoris" +#~ msgid "Quote sent successfully" +#~ msgstr "Devis envoyé avec succès" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "Le projet n'est pas dans les favoris" +#~ msgid "This quote cannot be accepted" +#~ msgstr "Ce devis ne peut être accepté" -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Projet supprimé des favoris" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "Impossible d'accepter le devis : %(error)s" -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "Échec de la suppression du projet des favoris" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible d'accepter le devis en raison" +#~ " d'une erreur de base de données. " +#~ "Veuillez vérifier les journaux du " +#~ "serveur." + +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Devis accepté et projet créé avec succès" + +#~ msgid "This quote cannot be rejected" +#~ msgstr "Ce devis ne peut pas être rejeté" + +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "Impossible de rejeter le devis : %(error)s" + +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de rejeter le devis en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Quote rejected" +#~ msgstr "Devis rejeté" + +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "Seuls les devis brouillons ou rejetés peuvent être supprimés" + +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer le devis en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Quote deleted successfully" +#~ msgstr "Devis supprimé avec succès" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "" + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Stripe API key not configured." +#~ msgstr "" + +#~ msgid "Payment processed successfully." +#~ msgstr "" + +#~ msgid "Invalid from date format" +#~ msgstr "Format de date à partir de non valide" + +#~ msgid "Invalid to date format" +#~ msgstr "Format de date invalide" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "Vous n'êtes pas autorisé à consulter ce paiement" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "La facture, le montant et la date de paiement sont requis" + +#~ msgid "Selected invoice not found" +#~ msgstr "Facture sélectionnée introuvable" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "Vous n'êtes pas autorisé à ajouter des paiements à cette facture" + +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "Le montant du paiement doit être supérieur à zéro" + +#~ msgid "Invalid payment amount" +#~ msgstr "Montant du paiement invalide" + +#~ msgid "Invalid payment date format" +#~ msgstr "Format de date de paiement invalide" + +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "Les frais de passerelle ne peuvent pas être négatifs" + +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Montant des frais de passerelle invalide" + +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de créer le paiement en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "Vous n'êtes pas autorisé à modifier ce paiement" + +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "paiement en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." + +#~ msgid "Payment updated successfully" +#~ msgstr "Paiement mis à jour avec succès" + +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "Vous n'êtes pas autorisé à supprimer ce paiement" + +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer le paiement en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Payment deleted successfully" +#~ msgstr "Paiement supprimé avec succès" + +#~ msgid "No payments selected for deletion" +#~ msgstr "Aucun paiement sélectionné pour suppression" + +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer les paiements en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "No payments selected" +#~ msgstr "Aucun paiement sélectionné" + +#~ msgid "Could not update payments due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "paiements en raison d'une erreur de " +#~ "base de données" + +#~ msgid "Start date must be before end date" +#~ msgstr "La date de début doit être antérieure à la date de fin" + +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "Aucun tarif journalier trouvé pour cet" +#~ " emplacement. Veuillez d'abord configurer " +#~ "les tarifs." + +#~ msgid "Per diem claim created successfully" +#~ msgstr "Réclamation d'indemnité journalière créée avec succès" + +#~ msgid "Error creating per diem claim" +#~ msgstr "Erreur lors de la création d'une demande d'indemnité journalière" + +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "" +#~ "Vous n'êtes pas autorisé à consulter " +#~ "cette demande d'indemnité journalière" + +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "" +#~ "Vous n'êtes pas autorisé à modifier " +#~ "cette demande d'indemnité journalière" + +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "" +#~ "Impossible de modifier les demandes " +#~ "d'indemnité journalière approuvées ou " +#~ "remboursées" + +#~ msgid "Per diem claim updated successfully" +#~ msgstr "La demande d'indemnité journalière a été mise à jour avec succès" + +#~ msgid "Error updating per diem claim" +#~ msgstr "Erreur lors de la mise à jour de la demande d'indemnité journalière" + +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "" +#~ "Vous n'êtes pas autorisé à supprimer " +#~ "cette demande d'indemnité journalière" + +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Demande d'indemnité journalière supprimée avec succès" + +#~ msgid "Error deleting per diem claim" +#~ msgstr "Erreur lors de la suppression de la demande d'indemnité journalière" + +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "Aucune demande d'indemnité journalière sélectionnée pour suppression" + +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Impossible de supprimer les demandes " +#~ "d'indemnités journalières en raison d'une " +#~ "erreur de base de données. Veuillez " +#~ "vérifier les journaux du serveur." + +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "" +#~ "%(count)d réclamation(s) d'indemnité journalière " +#~ "a été supprimée avec succès" + +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "%(count)d demandes d'indemnités journalières ignorées : %(errors)s" + +#~ msgid "No per diem claims selected" +#~ msgstr "Aucune demande d'indemnité journalière sélectionnée" + +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "demandes d'indemnités journalières en raison" +#~ " d'une erreur de base de données" + +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "" +#~ "%(count)d réclamation(s) d'indemnité journalière " +#~ "a été mise à jour avec succès " +#~ "vers %(status)s" + +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "" +#~ "%(count)d réclamation(s) d'indemnité journalière " +#~ "ignorée (aucune autorisation)" + +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "" +#~ "Seuls les administrateurs peuvent approuver" +#~ " les demandes d'indemnités journalières" + +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "" +#~ "Seules les demandes d'indemnités journalières" +#~ " en attente peuvent être approuvées." + +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Demande d'indemnité journalière approuvée avec succès" + +#~ msgid "Error approving per diem claim" +#~ msgstr "Erreur lors de l'approbation de la demande d'indemnité journalière" + +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "" +#~ "Seuls les administrateurs peuvent rejeter " +#~ "les demandes d'indemnités journalières" + +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "" +#~ "Seules les demandes d'indemnités journalières" +#~ " en attente peuvent être rejetées" + +#~ msgid "Per diem claim rejected" +#~ msgstr "Demande d'indemnité journalière rejetée" + +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Erreur lors du rejet de la demande d'indemnité journalière" + +#~ msgid "Per diem rate created successfully" +#~ msgstr "Taux journalier créé avec succès" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "La description, la catégorie, le montant et la date sont requis" +#~ msgid "Error creating per diem rate" +#~ msgstr "Erreur lors de la création du tarif journalier" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "Impossible d'ajouter des coûts en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Le taux journalier a été mis à jour avec succès" -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Coût ajouté avec succès" +#~ msgid "Error updating per diem rate" +#~ msgstr "Erreur lors de la mise à jour du taux journalier" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Coût introuvable" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "Impossible de supprimer le taux : " +#~ "il est utilisé par %(count)d " +#~ "réclamation(s) d'indemnités journalières. " +#~ "Désactivez-le plutôt." -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "Vous n'êtes pas autorisé à modifier ce coût" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "Taux journalier supprimé avec succès" -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour le coût en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Error deleting per diem rate" +#~ msgstr "Erreur lors de la suppression du taux journalier" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Coût mis à jour avec succès" +#~ msgid "You do not have permission to access this page" +#~ msgstr "Vous n'êtes pas autorisé à accéder à cette page" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "Vous n'êtes pas autorisé à supprimer ce coût" +#~ msgid "Role name is required" +#~ msgstr "Le nom du rôle est requis" -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "Impossible de supprimer le coût facturé" +#~ msgid "A role with this name already exists" +#~ msgstr "Un rôle portant ce nom existe déjà" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "Impossible de supprimer le coût en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Could not create role due to a database error" +#~ msgstr "Impossible de créer le rôle en raison d'une erreur de base de données" -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Le nom et le prix unitaire sont requis" +#~ msgid "Role created successfully" +#~ msgstr "Rôle créé avec succès" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Format de quantité invalide" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Format de prix unitaire non valide" +#~ msgid "Could not update role due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "rôle en raison d'une erreur de " +#~ "base de données" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "Impossible d'ajouter du bien supplémentaire en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Extra bon ajouté avec succès" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Extra bon introuvable" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "Vous n'êtes pas autorisé à modifier ce bien supplémentaire" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour Extra Good en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Extra bon mis à jour avec succès" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "Vous n'êtes pas autorisé à supprimer ce bien supplémentaire" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "Impossible de supprimer un bien supplémentaire ajouté à une facture" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "Impossible de supprimer le bien supplémentaire en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Projet créé avec succès" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Format du montant de la remise non valide" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "Le devis doit être approuvé avant de pouvoir être envoyé" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "Impossible d'envoyer le devis : %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "Vous n'êtes pas autorisé à télécharger des pièces jointes à ce devis" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "Vous n'êtes pas autorisé à télécharger cette pièce jointe" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "Vous n'êtes pas autorisé à demander l'approbation de ce devis" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Ce devis ne nécessite pas d'approbation" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "Impossible de demander l'approbation : %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "Impossible de demander l'approbation en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Approbation demandée avec succès" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Ce devis n'est pas en attente d'approbation" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "Impossible d'approuver le devis : %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "Impossible d'approuver le devis en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Devis approuvé avec succès" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "Impossible de rejeter le devis : %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Approbation du devis rejetée" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "Impossible de créer le modèle en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Modèle créé avec succès" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Role updated successfully" +#~ msgstr "Rôle mis à jour avec succès" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "Vous n'êtes pas autorisé à créer un modèle à partir de ce devis" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "Impossible d'enregistrer le modèle en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Modèle enregistré avec succès" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "Vous n'êtes pas autorisé à exporter ce devis" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Erreur lors de la génération du PDF : %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "L'adresse e-mail du destinataire est requise" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Devis envoyé avec succès à %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "Échec de l'envoi du devis : %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Erreur lors de l'envoi de l'e-mail : %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "Vous n'êtes pas autorisé à dupliquer ce devis" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "Impossible de dupliquer le devis en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "Impossible de finaliser le devis en double en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "Citation %(quote_number)s créée en double" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Veuillez sélectionner une action et au moins un devis" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "ID de devis invalides" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "Aucun devis trouvé ou vous n'avez pas l'autorisation" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "%(count)d citation(s) en double" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "Échec de la duplication de %(count)d devis" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Erreur lors de la duplication des devis" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "%(count)d devis marqué(s) comme envoyé(s)" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "Impossible de marquer %(count)d devis comme envoyés" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Erreur lors de la mise à jour des devis" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "%(count)d citation(s) supprimée(s)" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "Impossible de supprimer %(count)d citation(s) (peut-être en cours d'utilisation)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Erreur lors de la suppression des guillemets" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Action invalide" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "Vous n'êtes pas autorisé à effectuer cette action" -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "Les rôles système ne peuvent pas être supprimés" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "Le nom, le projet, le client, la fréquence et la date de la prochaine exécution sont requis" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "Impossible de supprimer le rôle attribué" +#~ " aux utilisateurs. Veuillez d'abord " +#~ "réaffecter les utilisateurs." -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Format de date de prochaine exécution non valide" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "" +#~ "Impossible de supprimer le rôle en " +#~ "raison d'une erreur de base de " +#~ "données" -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Format de date de fin non valide" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Le rôle « %(name)s » a été supprimé avec succès" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Projet ou client sélectionné introuvable" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "Impossible de créer une facture récurrente en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "Vous n'êtes pas autorisé à consulter cette facture récurrente" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "Vous n'êtes pas autorisé à modifier cette facture récurrente" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "rôles utilisateur en raison d'une erreur" +#~ " de base de données" -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour la facture récurrente en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "User roles updated successfully" +#~ msgstr "Les rôles d'utilisateur ont été mis à jour avec succès" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Facture récurrente mise à jour avec succès" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "Vous n'êtes pas autorisé à supprimer cette facture récurrente" +#~ msgid "Template not found." +#~ msgstr "" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "Impossible de supprimer la facture récurrente en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Commencer" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "Fin" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Tâche" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Remarques" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "Facturable" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Client" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Utilisateur" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "Oui" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "Non" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "Impossible de supprimer le filtre en raison d'une erreur de base de données" +#~ msgid "Project name and client are required" +#~ msgstr "Le nom du projet et le client sont requis" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Invalid budget amount" +#~ msgstr "Montant du budget non valide" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Pourcentage de seuil budgétaire non valide (0-100)" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "Project not found" +#~ msgstr "Projet introuvable" -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "Vous n'êtes pas autorisé à archiver des projets" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "Project is already archived" +#~ msgstr "Le projet est déjà archivé" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "Vous n'êtes pas autorisé à désarchiver des projets" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "Project is already active" +#~ msgstr "Le projet est déjà actif" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "Vous n'êtes pas autorisé à désactiver des projets" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "Project is already inactive" +#~ msgstr "Le projet est déjà inactif" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "Vous n'êtes pas autorisé à activer des projets" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "Impossible de supprimer un projet avec des entrées de temps existantes" -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "Impossible de mettre à jour les paramètres en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer le projet en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "Configuration terminée ! Merci de nous aider à améliorer TimeTracker." +#~ msgid "You do not have permission to delete projects" +#~ msgstr "Vous n'êtes pas autorisé à supprimer des projets" -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "No projects selected for deletion" +#~ msgstr "Aucun projet sélectionné pour suppression" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer les projets en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "Le nom du projet et de la tâche est requis" +#~ msgid "No projects were deleted" +#~ msgstr "Aucun projet n'a été supprimé" -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "You do not have permission to change project status" +#~ msgstr "Vous n'êtes pas autorisé à modifier le statut du projet" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "Le projet sélectionné n'existe pas" +#~ msgid "No projects selected" +#~ msgstr "Aucun projet sélectionné" -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "statut du projet en raison d'une " +#~ "erreur de base de données. Veuillez " +#~ "vérifier les journaux du serveur." -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "Vous n'avez pas accès à cette tâche" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Vous ne pouvez modifier que les tâches que vous avez créées" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "Le nom de la tâche est obligatoire" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "Le projet est requis" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour le statut en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "Impossible de mettre à jour la tâche en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "Vous n'êtes pas autorisé à mettre à jour cette tâche" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "Vous pouvez uniquement mettre à jour les tâches que vous avez créées" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "Vous ne pouvez attribuer que les tâches que vous avez créées" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "L'utilisateur sélectionné n'existe pas" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Tâche non attribuée" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Vous ne pouvez supprimer que les tâches que vous avez créées" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "Impossible de supprimer une tâche avec des entrées de temps existantes" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "Impossible de supprimer la tâche en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "Aucune tâche sélectionnée pour suppression" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "Impossible de supprimer les tâches en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "Aucune tâche sélectionnée" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "Impossible de mettre à jour les tâches en raison d'une erreur de base de données" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Entrez la nouvelle date d'échéance (AAAA-MM-JJ) :" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "La date de dépense est requise" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Format de date invalide" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "Prise en charge de la base de données" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "%(count)d citation(s) en double" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "Aucune tâche trouvée" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "%(count)d dépense(s) a été mise à jour avec succès vers %(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "%(count)d dépense(s) ignorée(s) (aucune autorisation)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Valeur de priorité invalide" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Aucun utilisateur sélectionné pour l'affectation" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Utilisateur invalide sélectionné" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "Impossible d'attribuer des tâches en raison d'une erreur de base de données" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Aucun projet sélectionné" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Projet sélectionné non valide" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "Impossible de déplacer les tâches en raison d'une erreur de base de données" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Seuls les administrateurs peuvent voir toutes les tâches en retard" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "No projects were updated" +#~ msgstr "Aucun projet n'a été mis à jour" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "Project is already in favorites" +#~ msgstr "Le projet est déjà dans les favoris" + +#~ msgid "Project added to favorites" +#~ msgstr "Projet ajouté aux favoris" + +#~ msgid "Failed to add project to favorites" +#~ msgstr "Échec de l'ajout du projet aux favoris" + +#~ msgid "Project is not in favorites" +#~ msgstr "Le projet n'est pas dans les favoris" + +#~ msgid "Project removed from favorites" +#~ msgstr "Projet supprimé des favoris" + +#~ msgid "Failed to remove project from favorites" +#~ msgstr "Échec de la suppression du projet des favoris" + +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "La description, la catégorie, le montant et la date sont requis" + +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "Impossible d'ajouter des coûts en raison" +#~ " d'une erreur de base de données. " +#~ "Veuillez vérifier les journaux du " +#~ "serveur." + +#~ msgid "Cost added successfully" +#~ msgstr "Coût ajouté avec succès" + +#~ msgid "Cost not found" +#~ msgstr "Coût introuvable" + +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "Vous n'êtes pas autorisé à modifier ce coût" + +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "coût en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." + +#~ msgid "Cost updated successfully" +#~ msgstr "Coût mis à jour avec succès" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "Vous n'êtes pas autorisé à supprimer ce coût" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "Impossible de supprimer le coût facturé" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer le coût en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Name and unit price are required" +#~ msgstr "Le nom et le prix unitaire sont requis" + +#~ msgid "Invalid quantity format" +#~ msgstr "Format de quantité invalide" + +#~ msgid "Invalid unit price format" +#~ msgstr "Format de prix unitaire non valide" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossible d'ajouter du bien supplémentaire" +#~ " en raison d'une erreur de base " +#~ "de données. Veuillez vérifier les " +#~ "journaux du serveur." + +#~ msgid "Extra good added successfully" +#~ msgstr "Extra bon ajouté avec succès" + +#~ msgid "Extra good not found" +#~ msgstr "Extra bon introuvable" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "Vous n'êtes pas autorisé à modifier ce bien supplémentaire" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossible de mettre à jour Extra " +#~ "Good en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." + +#~ msgid "Extra good updated successfully" +#~ msgstr "Extra bon mis à jour avec succès" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "Vous n'êtes pas autorisé à supprimer ce bien supplémentaire" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "Impossible de supprimer un bien supplémentaire ajouté à une facture" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossible de supprimer le bien " +#~ "supplémentaire en raison d'une erreur de" +#~ " base de données. Veuillez vérifier " +#~ "les journaux du serveur." + +#~ msgid "Project created successfully" +#~ msgstr "Projet créé avec succès" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Format du montant de la remise non valide" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "Le devis doit être approuvé avant de pouvoir être envoyé" + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "Impossible d'envoyer le devis : %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "Vous n'êtes pas autorisé à télécharger des pièces jointes à ce devis" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "Vous n'êtes pas autorisé à télécharger cette pièce jointe" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "Vous n'êtes pas autorisé à demander l'approbation de ce devis" + +#~ msgid "This quote does not require approval" +#~ msgstr "Ce devis ne nécessite pas d'approbation" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "Impossible de demander l'approbation : %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Impossible de demander l'approbation en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Approval requested successfully" +#~ msgstr "Approbation demandée avec succès" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Ce devis n'est pas en attente d'approbation" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "Impossible d'approuver le devis : %(error)s" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible d'approuver le devis en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Quote approved successfully" +#~ msgstr "Devis approuvé avec succès" + +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "Impossible de rejeter le devis : %(error)s" + +#~ msgid "Quote approval rejected" +#~ msgstr "Approbation du devis rejetée" + +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de créer le modèle en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "Template created successfully" +#~ msgstr "Modèle créé avec succès" + +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "Vous n'êtes pas autorisé à créer un modèle à partir de ce devis" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible d'enregistrer le modèle en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "Modèle enregistré avec succès" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "Vous n'êtes pas autorisé à exporter ce devis" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Erreur lors de la génération du PDF : %(error)s" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "Recipient email address is required" +#~ msgstr "L'adresse e-mail du destinataire est requise" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Devis envoyé avec succès à %(email)s" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "Échec de l'envoi du devis : %(error)s" + +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Erreur lors de l'envoi de l'e-mail : %(error)s" + +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "Vous n'êtes pas autorisé à dupliquer ce devis" + +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de dupliquer le devis en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." + +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Impossible de finaliser le devis en " +#~ "double en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." + +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "Citation %(quote_number)s créée en double" + +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Veuillez sélectionner une action et au moins un devis" + +#~ msgid "Invalid quote IDs" +#~ msgstr "ID de devis invalides" + +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "Aucun devis trouvé ou vous n'avez pas l'autorisation" + +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "%(count)d citation(s) en double" + +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "Échec de la duplication de %(count)d devis" + +#~ msgid "Error duplicating quotes" +#~ msgstr "Erreur lors de la duplication des devis" + +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "%(count)d devis marqué(s) comme envoyé(s)" + +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "Impossible de marquer %(count)d devis comme envoyés" + +#~ msgid "Error updating quotes" +#~ msgstr "Erreur lors de la mise à jour des devis" + +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "%(count)d citation(s) supprimée(s)" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "" +#~ "Impossible de supprimer %(count)d citation(s)" +#~ " (peut-être en cours d'utilisation)" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "Error deleting quotes" +#~ msgstr "Erreur lors de la suppression des guillemets" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "Action invalide" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "Impossible de créer le modèle en raison d'une erreur de base de données" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "Impossible de mettre à jour le modèle en raison d'une erreur de base de données" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "" +#~ "Le nom, le projet, le client, la" +#~ " fréquence et la date de la " +#~ "prochaine exécution sont requis" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "Impossible de supprimer le modèle en raison d'une erreur de base de données" +#~ msgid "Invalid next run date format" +#~ msgstr "Format de date de prochaine exécution non valide" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "Invalid end date format" +#~ msgstr "Format de date de fin non valide" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "Impossible de démarrer le minuteur pour un projet archivé. Veuillez d'abord désarchiver le projet." +#~ msgid "Selected project or client not found" +#~ msgstr "Projet ou client sélectionné introuvable" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "Impossible de démarrer le minuteur pour un projet inactif" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Impossible de créer une facture " +#~ "récurrente en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "La tâche sélectionnée n'est pas valide pour le projet choisi" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "Vous n'êtes pas autorisé à consulter cette facture récurrente" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "Vous n'êtes pas autorisé à modifier cette facture récurrente" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Impossible de mettre à jour la " +#~ "facture récurrente en raison d'une " +#~ "erreur de base de données. Veuillez " +#~ "vérifier les journaux du serveur." -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "Vous n'avez pas accès à ce projet." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "Vous n'avez pas accès à cette tâche" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Vous disposez déjà d'un minuteur actif. Arrêtez-le avant d'en démarrer un nouveau." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "Impossible de démarrer le minuteur en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Inconnu" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Facture récurrente mise à jour avec succès" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "Le modèle doit avoir un projet pour démarrer un minuteur" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "Impossible de démarrer le minuteur pour ce projet" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "Aucune minuterie active pour arrêter" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Aucun projet" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "Vous n'êtes pas autorisé à supprimer cette facture récurrente" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Impossible de supprimer la facture " +#~ "récurrente en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "Aucune minuterie active pour arrêter" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "Minuterie arrêtée" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "Impossible de créer le client. Veuillez réessayer." +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "Aucune minuterie active pour arrêter" +#~ msgid "Start" +#~ msgstr "Commencer" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "End" +#~ msgstr "Fin" -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "Impossible de créer le client. Veuillez réessayer." +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "Aucune minuterie active pour arrêter" +#~ msgid "Task" +#~ msgstr "Tâche" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "Valeur de statut invalide" +#~ msgid "Notes" +#~ msgstr "Remarques" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "Vous ne pouvez modifier que vos propres minuteries" +#~ msgid "Billed" +#~ msgstr "Facturable" -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Tâche non valide sélectionnée pour le projet choisi" +#~ msgid "Client" +#~ msgstr "Client" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "L'heure de début ne peut pas être postérieure" +#~ msgid "User" +#~ msgstr "Utilisateur" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Format de date/heure de début non valide" +#~ msgid "Yes" +#~ msgstr "Oui" -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "L'heure de fin doit être postérieure à l'heure de début" +#~ msgid "No" +#~ msgstr "Non" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Format de date/heure de fin non valide" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Minuterie mise à jour avec succès" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "" +#~ "Impossible de supprimer le filtre en " +#~ "raison d'une erreur de base de " +#~ "données" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Vous ne pouvez supprimer que vos propres minuteries" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "Impossible de supprimer une minuterie active" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "Impossible de supprimer le minuteur en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Format date/heure invalide" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "paramètres en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Tous les champs sont obligatoires" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "Configuration terminée ! Merci de nous aider à améliorer TimeTracker." -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "Impossible de créer des entrées de temps pour un projet archivé. Veuillez d'abord désarchiver le projet." +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "Impossible de créer des entrées de temps pour un projet inactif" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Tâche non valide sélectionnée" +#~ msgid "Project and task name are required" +#~ msgstr "Le nom du projet et de la tâche est requis" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "La date de fin doit être postérieure ou égale à la date de début" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "La plage de dates ne peut pas dépasser 31 jours" +#~ msgid "Selected project does not exist" +#~ msgstr "Le projet sélectionné n'existe pas" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Format d'heure invalide" +#~ msgid "Task not found" +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "Aucune date valide trouvée dans la plage sélectionnée" +#~ msgid "You do not have access to this task" +#~ msgstr "Vous n'avez pas accès à cette tâche" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "Impossible de créer des entrées groupées en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "You can only edit tasks you created" +#~ msgstr "Vous ne pouvez modifier que les tâches que vous avez créées" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "Une erreur s'est produite lors de la création d'entrées groupées. Veuillez réessayer." +#~ msgid "Task name is required" +#~ msgstr "Le nom de la tâche est obligatoire" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Vous ne pouvez dupliquer que vos propres minuteries" +#~ msgid "Project is required" +#~ msgstr "Le projet est requis" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "Vous ne pouvez réactiver que vos propres minuteries" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "statut en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "Le projet n'existe plus" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de mettre à jour la " +#~ "tâche en raison d'une erreur de " +#~ "base de données. Veuillez vérifier les" +#~ " journaux du serveur." -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "You do not have permission to update this task" +#~ msgstr "Vous n'êtes pas autorisé à mettre à jour cette tâche" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "You can only update tasks you created" +#~ msgstr "Vous pouvez uniquement mettre à jour les tâches que vous avez créées" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "Impossible de reprendre le minuteur en raison d'une erreur de base de données. Veuillez vérifier les journaux du serveur." +#~ msgid "You can only assign tasks you created" +#~ msgstr "Vous ne pouvez attribuer que les tâches que vous avez créées" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "Selected user does not exist" +#~ msgstr "L'utilisateur sélectionné n'existe pas" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Task unassigned" +#~ msgstr "Tâche non attribuée" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "You can only delete tasks you created" +#~ msgstr "Vous ne pouvez supprimer que les tâches que vous avez créées" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "Impossible de supprimer une tâche avec des entrées de temps existantes" -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer la tâche en " +#~ "raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "Aucune tâche sélectionnée pour suppression" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Fuseau horaire sélectionné non valide" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer les tâches en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "Les heures standard par jour doivent être comprises entre 0,5 et 24" +#~ msgid "No tasks selected" +#~ msgstr "Aucune tâche sélectionnée" -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "Les heures standard par jour doivent être comprises entre 0,5 et 24" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour les " +#~ "tâches en raison d'une erreur de " +#~ "base de données" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Paramètres enregistrés avec succès" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Entrez la nouvelle date d'échéance (AAAA-MM-JJ) :" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Erreur lors de l'enregistrement des paramètres : %(error)s" +#~ msgid "Due date is required" +#~ msgstr "La date de dépense est requise" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Format de date invalide" -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "Merci d'avoir choisi TimeTracker !" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "Erreur lors de l'enregistrement des paramètres" +#~ msgid "Database error" +#~ msgstr "Prise en charge de la base de données" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Préférences mises à jour" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "%(count)d citation(s) en double" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Langue mise à jour avec succès" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Langue invalide" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "Langue mise à jour en %(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "Le nom du webhook est requis" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "L'URL du webhook est obligatoire" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "Au moins un événement doit être sélectionné" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook créé avec succès" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Erreur lors de la création du webhook" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "Erreur lors de la création du webhook : %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook mis à jour avec succès" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "Erreur lors de la mise à jour du webhook : %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook supprimé avec succès" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "Erreur lors de la suppression du webhook : %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Veuillez saisir un nombre d'heures cible valide (supérieur à 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "Un objectif existe déjà pour cette semaine. Veuillez plutôt modifier l'objectif existant." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "Objectif de temps hebdomadaire créé avec succès !" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "Échec de la création de l'objectif. Veuillez réessayer." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "Vous n'êtes pas autorisé à afficher cet objectif" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "Vous n'êtes pas autorisé à modifier cet objectif" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "Objectif de temps hebdomadaire mis à jour avec succès !" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "Échec de la mise à jour de l'objectif. Veuillez réessayer." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "Vous n'êtes pas autorisé à supprimer cet objectif" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "Objectif de temps hebdomadaire supprimé avec succès" +#~ msgid "No tasks updated" +#~ msgstr "Aucune tâche trouvée" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "Échec de la suppression de l'objectif. Veuillez réessayer." +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "%(count)d dépense(s) a été mise à jour avec succès vers %(status)s" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "%(count)d dépense(s) ignorée(s) (aucune autorisation)" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "Invalid priority value" +#~ msgstr "Valeur de priorité invalide" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "No user selected for assignment" +#~ msgstr "Aucun utilisateur sélectionné pour l'affectation" -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "Utilisateur invalide sélectionné" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "" +#~ "Impossible d'attribuer des tâches en " +#~ "raison d'une erreur de base de " +#~ "données" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "No project selected" +#~ msgstr "Aucun projet sélectionné" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "Projet sélectionné non valide" -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "" +#~ "Impossible de déplacer les tâches en " +#~ "raison d'une erreur de base de " +#~ "données" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "Seuls les administrateurs peuvent voir toutes les tâches en retard" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Statut de la mise à jour" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Créer une tâche" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "Envoyer un e-mail" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "Sélectionnez un projet" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "Seuls les administrateurs peuvent refuser les entrées de miles" +#~ msgid "Could not create template due to a database error" +#~ msgstr "Impossible de créer le modèle en raison d'une erreur de base de données" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Could not update template due to a database error" +#~ msgstr "" +#~ "Impossible de mettre à jour le " +#~ "modèle en raison d'une erreur de " +#~ "base de données" -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "Mises à jour en direct de WebSocket" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "" +#~ "Impossible de supprimer le modèle en " +#~ "raison d'une erreur de base de " +#~ "données" -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "Le nom et le prix unitaire sont requis" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "Client créé" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "Impossible de démarrer le minuteur pour" +#~ " un projet archivé. Veuillez d'abord " +#~ "désarchiver le projet." -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "La clé et l'étiquette sont requises" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "Impossible de démarrer le minuteur pour un projet inactif" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "La tâche sélectionnée n'est pas valide pour le projet choisi" -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "Demander l'approbation" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "Devis rejeté" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "Le nom et le prix unitaire sont requis" +#~ msgid "You do not have access to this project" +#~ msgstr "Vous n'avez pas accès à ce projet." -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "Taux horaire" +#~ msgid "You do not have access to this client" +#~ msgstr "Vous n'avez pas accès à cette tâche" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "" +#~ "Vous disposez déjà d'un minuteur actif." +#~ " Arrêtez-le avant d'en démarrer un" +#~ " nouveau." -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de démarrer le minuteur en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "restant" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Succès" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Erreur" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Avertissement" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Information" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Chargement..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Économie..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "Suppression..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Annuler" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Confirmer" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Fermer" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Sauvegarder" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Supprimer" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Modifier" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Ajouter" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Retirer" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "D'ACCORD" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "Etes-vous sûr de vouloir supprimer ceci ?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir partir ?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "L'opération a échoué" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Opération terminée avec succès" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "Aucun élément sélectionné" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Entrée invalide" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Ce champ est obligatoire" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Aucune minuterie active" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Minuterie arrêtée" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "Échec de l'arrêt du chronomètre" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Erreur lors de l'arrêt du minuteur" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "Aucun formulaire à sauvegarder" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "Aucune minuterie trouvée" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Minuterie arrêtée pour cause d'inactivité" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "Unknown" +#~ msgstr "Inconnu" -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Passer au contenu" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "Navigation mobile" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navigation" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "Palette de commandes" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "Commentaires" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Basculer la barre latérale" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Tableau de bord" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Minuteur" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "Entrées de temps" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Rapports" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Calendrier" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Vue du calendrier" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Suivi du temps" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "Demander l'approbation" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "Le modèle doit avoir un projet pour démarrer un minuteur" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "Cannot start timer for this project" +#~ msgstr "Impossible de démarrer le minuteur pour ce projet" -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Tâches" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "No active timer to stop" +#~ msgstr "Aucune minuterie active pour arrêter" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Tableau Kanban" +#~ msgid "No project" +#~ msgstr "Aucun projet" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Objectifs hebdomadaires" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Modèles de saisie du temps" +#~ msgid "No active timer to pause" +#~ msgstr "Aucune minuterie active pour arrêter" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "GRC" +#~ msgid "Timer paused" +#~ msgstr "Minuterie arrêtée" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Clientèle" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "Impossible de créer le client. Veuillez réessayer." -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "No active timer to resume" +#~ msgstr "Aucune minuterie active pour arrêter" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "Impossible de créer le client. Veuillez réessayer." -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "No active timer to adjust" +#~ msgstr "Aucune minuterie active pour arrêter" -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Citations" +#~ msgid "Invalid adjustment value" +#~ msgstr "Valeur de statut invalide" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Finances et dépenses" +#~ msgid "You can only edit your own timers" +#~ msgstr "Vous ne pouvez modifier que vos propres minuteries" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Tâche non valide sélectionnée pour le projet choisi" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "Start time cannot be in the future" +#~ msgstr "L'heure de début ne peut pas être postérieure" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Invalid start date/time format" +#~ msgstr "Format de date/heure de début non valide" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Rapports planifiés" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Factures" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "End time must be after start time" +#~ msgstr "L'heure de fin doit être postérieure à l'heure de début" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "Format de date/heure de fin non valide" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Factures récurrentes" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Paiements" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Dépenses" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Kilométrage" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Par jour" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Alertes budgétaires" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Inventaire" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Articles en stock" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Entrepôts" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Fournisseurs" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Bons de commande" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Niveaux de stocks" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Mouvements de stocks" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Transferts" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Ajustements" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Réservations" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Alertes de stock faible" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Analytique" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Outils et données" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Importer/Exporter" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Filtres enregistrés" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Administrateur" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Tableau de bord d'administration" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Gestion des utilisateurs" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "Timer updated successfully" +#~ msgstr "Minuterie mise à jour avec succès" -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Rôles et autorisations" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "Modèles PDF" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "Facture PDF" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Devis PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Paramètres système" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Paramètres" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "Configuration de la messagerie" +#~ msgid "You can only delete your own timers" +#~ msgstr "Vous ne pouvez supprimer que vos propres minuteries" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "Modèles d'e-mails" +#~ msgid "Cannot delete an active timer" +#~ msgstr "Impossible de supprimer une minuterie active" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "Paramètres OIDC" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de supprimer le minuteur en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "Jetons API" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Journaux d'audit" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Catégories de dépenses" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Tarifs journaliers" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Invalid date/time format" +#~ msgstr "Format date/heure invalide" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Informations système" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Sauvegardes" +#~ msgid "All fields are required" +#~ msgstr "Tous les champs sont obligatoires" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "Impossible de créer des entrées de " +#~ "temps pour un projet archivé. Veuillez" +#~ " d'abord désarchiver le projet." -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "À propos" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Aide" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "Options d'exportation" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Prise en charge de TimeTracker" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "Basculer la barre latérale" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Recherche" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Thème" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "Options de filtre" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Lumière" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Sombre" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "Système" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "Impossible de créer des entrées de temps pour un projet inactif" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Démarrer la minuterie" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "à" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "Afficher l'aide" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Changer de langue" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Langue" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Menu utilisateur" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "Soutien" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Invité" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Mon profil" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Mes paramètres" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Licence" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "Invalid task selected" +#~ msgstr "Tâche non valide sélectionnée" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Déconnexion" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "La date de fin doit être postérieure ou égale à la date de début" -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "Vous appréciez TimeTracker ?" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "La plage de dates ne peut pas dépasser 31 jours" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "Invalid time format" +#~ msgstr "Format d'heure invalide" -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "Prise en charge de TimeTracker" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "Aucune date valide trouvée dans la plage sélectionnée" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossible de créer des entrées groupées" +#~ " en raison d'une erreur de base " +#~ "de données. Veuillez vérifier les " +#~ "journaux du serveur." -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "Paypal" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "" +#~ "Une erreur s'est produite lors de " +#~ "la création d'entrées groupées. Veuillez " +#~ "réessayer." -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "Fournitures" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Vous ne pouvez dupliquer que vos propres minuteries" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Rejeter" +#~ msgid "You can only resume your own timers" +#~ msgstr "Vous ne pouvez réactiver que vos propres minuteries" -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "Project no longer exists" +#~ msgstr "Le projet n'existe plus" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "Date de début" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "Charger plus" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "Afficher la tâche" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossible de reprendre le minuteur en" +#~ " raison d'une erreur de base de " +#~ "données. Veuillez vérifier les journaux " +#~ "du serveur." -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "Actions rapides" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Actes" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Heure de journalisation" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Nouvelle tâche" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "Voir le projet" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "Modifier le client" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "L'opération a échoué" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "Contrat terminé" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "Aperçu du logo" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "Fin" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "Invalid timezone selected" +#~ msgstr "Fuseau horaire sélectionné non valide" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "Les heures standard par jour doivent être comprises entre 0,5 et 24" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "Les heures standard par jour doivent être comprises entre 0,5 et 24" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Settings saved successfully" +#~ msgstr "Paramètres enregistrés avec succès" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "Créer un jeton API" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "Votre jeton API" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Exemples d'utilisation" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "Etes-vous sûr de vouloir" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "désactiver" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "activer" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "ce jeton ?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Désactiver le jeton" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Activer le jeton" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Désactiver" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Activer" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "Êtes-vous sûr de vouloir supprimer ce jeton ? Cette action ne peut pas être annulée." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Supprimer le jeton" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Créer une sauvegarde" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Restaurer la sauvegarde" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Sauvegardes existantes" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Informations importantes" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Confirmer la suppression" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Vider le cache" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "Statut du ServiceWorker" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Effacer tous les caches" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "Actions du ServiceWorker" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Actualisation matérielle manuelle" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Erreur lors de l'enregistrement des paramètres : %(error)s" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Tout le temps" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "Merci d'avoir choisi TimeTracker !" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "Erreur lors de l'enregistrement des paramètres" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Total des projets" +#~ msgid "Preferences updated" +#~ msgstr "Préférences mises à jour" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Projets actifs" +#~ msgid "Language updated successfully" +#~ msgstr "Langue mise à jour avec succès" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "Invalid language" +#~ msgstr "Langue invalide" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "Langue mise à jour en %(language)s" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "Le nom du webhook est requis" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "Webhook URL is required" +#~ msgstr "L'URL du webhook est obligatoire" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "Au moins un événement doit être sélectionné" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook créé avec succès" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Error creating webhook" +#~ msgstr "Erreur lors de la création du webhook" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "Erreur lors de la création du webhook : %(error)s" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook mis à jour avec succès" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "Erreur lors de la mise à jour du webhook : %(error)s" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Base de données" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook supprimé avec succès" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "Erreur lors de la suppression du webhook : %(error)s" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Veuillez saisir un nombre d'heures cible valide (supérieur à 0)" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "Un objectif existe déjà pour cette " +#~ "semaine. Veuillez plutôt modifier l'objectif" +#~ " existant." -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "Utilisateurs OIDC" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "utilisateurs" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Sections d'administration" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Activité récente" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Durée" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "N / A" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "Configuration et tests de messagerie" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Configurer et tester la livraison des e-mails" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Retour à l'administrateur" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "Configurez ici les paramètres de messagerie pour les enregistrer dans la base de données." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Activer la configuration de la messagerie de la base de données" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "Serveur de messagerie" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Port de messagerie" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Utiliser TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Utiliser SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Nom d'utilisateur" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Mot de passe" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "Laisser vide pour rester à jour" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Expéditeur par défaut" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "E-mail du destinataire" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Objectif de temps hebdomadaire créé avec succès !" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Enregistrer la configuration" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Réinitialiser" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "État de la configuration de la messagerie" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Rafraîchir" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "L'e-mail est configuré !" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "Vos paramètres de messagerie sont correctement configurés." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "L'e-mail n'est pas configuré" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "Veuillez configurer les paramètres de messagerie en utilisant le formulaire ci-dessus." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Erreurs de configuration" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Avertissements de configuration" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Paramètres de messagerie actuels" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Port" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Mot de passe défini" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Envoyer un e-mail de test" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "Adresse e-mail du destinataire" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Guide de configuration" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Fournisseurs SMTP courants" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Nécessite le mot de passe de l'application" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Remarques importantes" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail nécessite un mot de passe d'application si 2FA est activé" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Redémarrez l'application après avoir modifié les paramètres de messagerie" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Vérifiez les règles de pare-feu si les e-mails ne sont pas envoyés" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "Pour la production, utilisez un service de messagerie dédié comme SendGrid ou Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "le mot de passe est défini" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "aucun mot de passe défini" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "Échec de l'enregistrement de la configuration. Veuillez réessayer." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "Succès!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "Échec de l'actualisation de l'état. Veuillez réessayer." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "S'il vous plaît, mettez une adresse email valide" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Envoi..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "Échec de l'envoi de l'e-mail de test. Veuillez vérifier votre configuration." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "Échec de la création de l'objectif. Veuillez réessayer." -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Configurez OIDC à l'aide de ces variables d'environnement :" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "Vous n'êtes pas autorisé à afficher cet objectif" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "Service" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "Vous n'êtes pas autorisé à modifier cet objectif" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Objectif de temps hebdomadaire mis à jour avec succès !" -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Utilisateurs" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "Échec de la mise à jour de l'objectif. Veuillez réessayer." -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "Réclamation de groupes" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "Vous n'êtes pas autorisé à supprimer cet objectif" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Objectif de temps hebdomadaire supprimé avec succès" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "Échec de la suppression de l'objectif. Veuillez réessayer." -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "Perdu" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "Utiliser SSL" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "Commencer" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "Délai d'expiration (secondes)" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "Mot de passe" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "Entrez votre mot de passe" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "Update Status" +#~ msgstr "Statut de la mise à jour" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "Basé sur le dernier" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Create Task" +#~ msgstr "Créer une tâche" -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "Utiliser les taux horaires du projet" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "Heure de journalisation" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "Adresse email" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "Prénom" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "Nom de famille" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "Méthode d'authentification" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "Meilleurs projets" +#~ msgid "Send Email" +#~ msgstr "Envoyer un e-mail" -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "Groupe d'administrateurs" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "Méthode d'authentification" +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "Actif uniquement" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "Configuration des tests" +#~ msgid "Timesheet period rejected" +#~ msgstr "Sélectionnez un projet" -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "Only admins can close periods" +#~ msgstr "Seuls les administrateurs peuvent refuser les entrées de miles" -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "Configuration des tests" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "Mises à jour en direct de WebSocket" -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "Configuration des tests" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "Référence des variables d'environnement" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "Le nom et le prix unitaire sont requis" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "Client créé" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "La clé et l'étiquette sont requises" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Précédent" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Suivant" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "Statistiques d'utilisation des fonctionnalités" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "Code promo facultatif" +#~ msgid "Time-off request approved" +#~ msgstr "Demander l'approbation" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "Attention requise" +#~ msgid "Time-off request rejected" +#~ msgstr "Devis rejeté" -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "Mobile" +#~ msgid "Name and date range are required" +#~ msgstr "Le nom et le prix unitaire sont requis" -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "Holiday created" +#~ msgstr "Taux horaire" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Statut" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Détails" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "Charger plus" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Échoué" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "remaining" +#~ msgstr "restant" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "Success" +#~ msgstr "Succès" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "Error" +#~ msgstr "Erreur" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "Warning" +#~ msgstr "Avertissement" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Information" +#~ msgstr "Information" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "Chargement..." -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "Saving..." +#~ msgstr "Économie..." -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "Suppression..." -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "Cancel" +#~ msgstr "Annuler" -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "Confirm" +#~ msgstr "Confirmer" -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Close" +#~ msgstr "Fermer" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Toutes les catégories" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Gestion de projet" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "Save" +#~ msgstr "Sauvegarder" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "Delete" +#~ msgstr "Supprimer" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Edit" +#~ msgstr "Modifier" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Activé" +#~ msgid "Add" +#~ msgstr "Ajouter" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Désactivé" +#~ msgid "Remove" +#~ msgstr "Retirer" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "OK" +#~ msgstr "D'ACCORD" -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Etes-vous sûr de vouloir supprimer ceci ?" -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Enregistrer les modifications" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "" +#~ "Vous avez des modifications non " +#~ "enregistrées. Êtes-vous sûr de vouloir" +#~ " partir ?" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Note" +#~ msgid "Operation failed" +#~ msgstr "L'opération a échoué" -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "Opération terminée avec succès" -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "No items selected" +#~ msgstr "Aucun élément sélectionné" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "Invalid input" +#~ msgstr "Entrée invalide" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "This field is required" +#~ msgstr "Ce champ est obligatoire" -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "No active timer" +#~ msgstr "Aucune minuterie active" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "Minuterie arrêtée" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "Échec de l'arrêt du chronomètre" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "Error stopping timer" +#~ msgstr "Erreur lors de l'arrêt du minuteur" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "Tableau de bord de débogage OIDC" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "Inspecter la configuration, les métadonnées du fournisseur et les utilisateurs OIDC" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "No form to save" +#~ msgstr "Aucun formulaire à sauvegarder" -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Configuration des tests" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "Configuration OIDC" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Méthode d'authentification" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Émetteur" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "Non configuré" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "Identifiant client" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Secret client" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Ensemble" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "Non défini" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "URI de redirection" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Généré automatiquement" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Portées" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Cartographie des revendications" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Réclamation de nom d'utilisateur" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "Réclamation par courrier électronique" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Réclamation du nom complet" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Réclamation de groupes" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Groupe d'administrateurs" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "E-mails de l'administrateur" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI après déconnexion" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Métadonnées du fournisseur" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Erreur lors du chargement des métadonnées :" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Point de terminaison de découverte :" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Métadonnées du fournisseur chargées avec succès" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Points de terminaison" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Autorisation" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Jeton" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Informations utilisateur" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Fin de session" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "URI JWKS" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Fonctionnalités prises en charge" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Types de réponses" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Types de subventions" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Méthodes d'authentification" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Réclamations" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "Les métadonnées du fournisseur ne sont pas chargées. Cliquez sur \"Test de configuration\" pour récupérer." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "E-mail" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Nom et prénom" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Rôle" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Dernière connexion" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "Sujet OIDC" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Inactif" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Jamais" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Aucun utilisateur ne s'est encore connecté via OIDC." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Référence des variables d'environnement" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Configurez OIDC à l'aide de ces variables d'environnement :" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Variable" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Description" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "Exemple" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Méthode d'authentification" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "URL de l'émetteur du fournisseur OIDC" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "ID client du fournisseur OIDC" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Secret client du fournisseur OIDC" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "URL de rappel (facultatif, généré automatiquement)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Périmètres demandés" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Revendication contenant le nom d'utilisateur" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Réclamation contenant un e-mail" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Revendication contenant le nom complet" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Revendication contenant des groupes" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Nom du groupe pour le rôle d'administrateur (facultatif)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "E-mails d'administration séparés par des virgules (facultatif)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "No timer found" +#~ msgstr "Aucune minuterie trouvée" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Minuterie arrêtée pour cause d'inactivité" -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "Passer au contenu" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "Navigation mobile" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "Navigation" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "Palette de commandes" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "Commands" +#~ msgstr "Commentaires" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "Basculer la barre latérale" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "Dashboard" +#~ msgstr "Tableau de bord" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Méthode d'authentification" +#~ msgid "Timer" +#~ msgstr "Minuteur" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Time entries" +#~ msgstr "Entrées de temps" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "Reports" +#~ msgstr "Rapports" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "Calendar" +#~ msgstr "Calendrier" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "Vue du calendrier" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "Suivi du temps" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "Demander l'approbation" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "Tâches" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "Tableau Kanban" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "Objectifs hebdomadaires" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "Modèles de saisie du temps" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "CRM" +#~ msgstr "GRC" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Clients" +#~ msgstr "Clientèle" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "Citations" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "Finances et dépenses" -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "Détails de l'utilisateur OIDC" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Profil et identité OIDC pour cet utilisateur" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Retour au débogage OIDC" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Profil utilisateur" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Actif" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Langue préférée" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Créé à" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "Informations OIDC" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "Émetteur OIDC" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "Sujet OIDC (sous)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Locale" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "Cet utilisateur a été créé ou lié via OIDC. L'émetteur et le sujet sont utilisés pour identifier de manière unique l'utilisateur lors des sessions de connexion." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "Cet utilisateur ne dispose d'aucune information OIDC. Ils peuvent avoir été créés manuellement ou via une auto-inscription sans OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Statistiques d'activité" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Entrées de temps" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Aucun" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Minuterie active" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Tâches créées" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Modifier l'utilisateur" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Afficher tous les utilisateurs" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "Concepteur de devis PDF" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "Concepteur de devis visuel" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "Glissez et déposez des éléments pour concevoir la mise en page de votre devis" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Comment utiliser :" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "Cliquez sur les éléments dans la barre latérale gauche pour les ajouter au canevas. Cliquez sur les éléments pour les sélectionner et les personnaliser dans le panneau des propriétés. Utilisez les outils d'alignement et les raccourcis clavier pour une édition plus rapide." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Raccourcis clavier :" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "Tableau des éléments du devis" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "Rapports planifiés" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "Sous-total des dépenses" +#~ msgid "Invoices" +#~ msgstr "Factures" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "Économie..." +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "Factures récurrentes" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "Payments" +#~ msgstr "Paiements" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "Expenses" +#~ msgstr "Dépenses" -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "Ensemble" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "Documentation" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Toile transparente" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Générer un aperçu" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Enregistrer la conception" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Voir le code" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "Mileage" +#~ msgstr "Kilométrage" -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "Par jour" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Aligner sur la grille (10 px)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Boîte à outils" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Rechercher des éléments et des variables..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Éléments" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "Variables" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Éléments de base" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Texte personnalisé" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Texte" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Titre" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Doubler" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Rectangle" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Cercle" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Informations sur l'entreprise" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Logo de l'entreprise" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "Nom de l'entreprise" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Détails de l'entreprise" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "Adresse" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Téléphone" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Site web" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "Numéro d'identification fiscale" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "Détails de la facture" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Numéro de facture" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "Facturé" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Date d'échéance" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Informations client" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Nom du client" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Adresse du client" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "Tableau des éléments du devis" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "Sous-total des dépenses" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Total" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Impôt" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Montant total" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Termes" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "Paiement et projet" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Date de paiement" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Mode de paiement" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Statut du paiement" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Montant payé" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Nom du projet" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "Courriel du client" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Téléphone du client" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "Code QR" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Code à barres" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Numéro de page" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Date actuelle" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Filigrane" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Informations bancaires" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Devise" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "Alertes budgétaires" -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "Postes de facture" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "Numéro de facture" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Statut du devis (projet/envoyé/payé/en retard)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Date d'émission" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Date d'échéance" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Montant du sous-total" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Taux d'imposition (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Montant de la taxe" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Montant total" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Code de devise (EUR, USD, etc.)" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "Postes de facture" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Conditions générales" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Champs clients" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Nom de l'entreprise cliente" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "Adresse e-mail du client" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "Adresse complète du client" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Personne de contact client" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Numéro de téléphone du client" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Champs de paiement" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "Statut du paiement" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "Date de paiement" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Mode de paiement" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Numéro de référence du paiement" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Montant payé" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Montant impayé" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Notes de paiement" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Champs du projet" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Nom du projet" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "Code du projet" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Descriptif du projet" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Référence de facturation du projet" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Champs Entreprise/Paramètres" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "Le nom de votre entreprise" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "Adresse de votre entreprise" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "L'e-mail de votre entreprise" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Votre téléphone d'entreprise" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Site Internet de votre entreprise" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "Votre numéro d'identification fiscale" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "Informations sur votre compte bancaire" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Conditions de facturation par défaut" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Notes de facture par défaut" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Champs de date/heure" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "Date actuelle" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "Date de création du devis" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "Date de la dernière mise à jour du devis" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "Postes de facture" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "Inventory" +#~ msgstr "Inventaire" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "Services basés sur le temps et travail horaire" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Description de l'article" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Quantité d'article" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Prix ​​unitaire de l'article" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Montant total de l'article" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Fin de la boucle" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "Marchandises supplémentaires" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "Projet de biens supplémentaires" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "Nom du rôle" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "Montant total" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Toile de conception" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Taille des pages :" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Zoomer" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Zoom arrière" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Supprimer la sélection" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Propriétés" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "Avertissement" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "Actualiser la page" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "Avertissement" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "Articles en stock" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Format des dates" +#~ msgid "Warehouses" +#~ msgstr "Entrepôts" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "Fournisseurs" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Sélectionnez un élément pour modifier ses propriétés" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "Aperçu PDF" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "Bons de commande" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "Niveaux de stocks" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "Mouvements de stocks" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "Transferts" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "Ajustements" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Reservations" +#~ msgstr "Réservations" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "Alertes de stock faible" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "Analytics" +#~ msgstr "Analytique" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "Outils et données" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "Importer/Exporter" -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "Filtres enregistrés" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "Admin" +#~ msgstr "Administrateur" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "Tableau de bord d'administration" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "User Management" +#~ msgstr "Gestion des utilisateurs" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Code généré" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "Rôles et autorisations" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "PDF Templates" +#~ msgstr "Modèles PDF" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Invoice PDF" +#~ msgstr "Facture PDF" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "Devis PDF" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "System Settings" +#~ msgstr "Paramètres système" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "Settings" +#~ msgstr "Paramètres" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "Configuration de la messagerie" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "Modèles d'e-mails" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "Effacer tous les éléments ?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Clair" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "OIDC Settings" +#~ msgstr "Paramètres OIDC" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "Jetons API" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "Journaux d'audit" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "Réinitialiser aux valeurs par défaut ?" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "Réinitialiser la mise en page du PDF" +#~ msgid "Expense Categories" +#~ msgstr "Catégories de dépenses" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "Tarifs journaliers" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "Concepteur de devis PDF" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Concepteur de devis visuel" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Glissez et déposez des éléments pour concevoir la mise en page de votre devis" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "Tableau des éléments du devis" +#~ msgid "System Info" +#~ msgstr "Informations système" -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "Tableau des éléments du devis" +#~ msgid "Backups" +#~ msgstr "Sauvegardes" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "About" +#~ msgstr "À propos" -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "Help" +#~ msgstr "Aide" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Données de devis" +#~ msgid "Open support options" +#~ msgstr "Options d'exportation" -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Numéro de devis" +#~ msgid "Support TimeTracker" +#~ msgstr "Prise en charge de TimeTracker" -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Date du devis" +#~ msgid "Open sidebar" +#~ msgstr "Basculer la barre latérale" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Tableau des éléments du devis" +#~ msgid "Search" +#~ msgstr "Recherche" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Champs de devis" +#~ msgid "Theme" +#~ msgstr "Thème" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Numéro de devis" +#~ msgid "Theme options" +#~ msgstr "Options de filtre" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Statut du devis (projet/envoyé/payé/en retard)" +#~ msgid "Light" +#~ msgstr "Lumière" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Notes de devis" +#~ msgid "Dark" +#~ msgstr "Sombre" -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Statut du devis" +#~ msgid "System" +#~ msgstr "Système" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Date d'acceptation du devis" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Date de création du devis" +#~ msgid "Start Timer" +#~ msgstr "Démarrer la minuterie" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Date de la dernière mise à jour du devis" +#~ msgid "Stop" +#~ msgstr "à" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Boucle d'articles de devis" +#~ msgid "AI Helper" +#~ msgstr "Afficher l'aide" -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Parcourez les éléments de facture" +#~ msgid "Change language" +#~ msgstr "Changer de langue" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Aligner à gauche" +#~ msgid "Language" +#~ msgstr "Langue" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Centrer horizontalement" +#~ msgid "User menu" +#~ msgstr "Menu utilisateur" -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Aligner à droite" +#~ msgid "Supporter" +#~ msgstr "Soutien" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Aligner en haut" +#~ msgid "Guest" +#~ msgstr "Invité" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Centrer verticalement" +#~ msgid "My Profile" +#~ msgstr "Mon profil" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Aligner en bas" +#~ msgid "My Settings" +#~ msgstr "Mes paramètres" -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "License" +#~ msgstr "Licence" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "Logout" +#~ msgstr "Déconnexion" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Vous appréciez TimeTracker ?" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "Adresse email" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "Support / Get key" +#~ msgstr "Prise en charge de TimeTracker" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "Paypal" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "Support / License" +#~ msgstr "Fournitures" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "Rejeter" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "Software update" +#~ msgstr "Date de début" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Read more" +#~ msgstr "Charger plus" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "View Release" +#~ msgstr "Afficher la tâche" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "Quick actions dock" +#~ msgstr "Actions rapides" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "Actions" +#~ msgstr "Actes" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "Log Time" +#~ msgstr "Heure de journalisation" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "New Task" +#~ msgstr "Nouvelle tâche" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "Modèles de saisie du temps" +#~ msgid "New Project" +#~ msgstr "Voir le projet" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "New Client" +#~ msgstr "Modifier le client" -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "L'opération a échoué" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "Context included" +#~ msgstr "Contrat terminé" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "Aperçu du logo" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "Send" +#~ msgstr "Fin" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "Clé" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "Envoyer un e-mail" +#~ msgid "Create API Token" +#~ msgstr "Créer un jeton API" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "Your API Token" +#~ msgstr "Votre jeton API" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "Clé" +#~ msgid "Usage Examples" +#~ msgstr "Exemples d'utilisation" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "Are you sure you want to" +#~ msgstr "Etes-vous sûr de vouloir" -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "deactivate" +#~ msgstr "désactiver" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "activate" +#~ msgstr "activer" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "this token?" +#~ msgstr "ce jeton ?" -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "Code, nom, email" +#~ msgid "Deactivate Token" +#~ msgstr "Désactiver le jeton" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "Activate Token" +#~ msgstr "Activer le jeton" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Image de marque de l’entreprise" +#~ msgid "Deactivate" +#~ msgstr "Désactiver" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Valeurs par défaut des factures" +#~ msgid "Activate" +#~ msgstr "Activer" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Paramètres de sauvegarde" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Êtes-vous sûr de vouloir supprimer " +#~ "ce jeton ? Cette action ne peut" +#~ " pas être annulée." -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "Supprimer le jeton" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "Créer une sauvegarde" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "Activé" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "Perdu" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "Utiliser SSL" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "Utiliser TLS" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "sur" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "de" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "Menu utilisateur" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "Des temps de chargement plus rapides" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "Termes et conditions" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Paramètres d'exportation" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "Restaurer la sauvegarde" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "Sauvegardes existantes" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "Important Information" +#~ msgstr "Informations importantes" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "Confirmer la suppression" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Clear Cache" +#~ msgstr "Vider le cache" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Ajustement" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Transfert" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Vente" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Location" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Achat" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "Statut du ServiceWorker" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "Effacer tous les caches" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "Actions du ServiceWorker" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "Disponible" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "Valeurs par défaut des factures" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "Devise" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "Actualisation matérielle manuelle" -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "URL de l'image" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "All time" +#~ msgstr "Tout le temps" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "Code" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "Créer un jeton API" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "Laisser vide pour conserver le mot de passe actuel" +#~ msgid "Total Projects" +#~ msgstr "Total des projets" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "Active Projects" +#~ msgstr "Projets actifs" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "Délai d'expiration (secondes)" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "Type de contenu" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "Rôle système" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "Termes et conditions" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Confidentialité et analyses" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Enregistrer les paramètres" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Télécharger un nouveau logo" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Aperçu du logo" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "Êtes-vous sûr de vouloir supprimer le logo de l'entreprise ?" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Supprimer le logo" +#~ msgid "Database" +#~ msgstr "Base de données" -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "Demander l'approbation" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "Configuration des tests" +#~ msgid "OIDC Users" +#~ msgstr "Utilisateurs OIDC" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "L'opération a échoué" +#~ msgid "users" +#~ msgstr "utilisateurs" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "Sections d'administration" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "L'opération a échoué" +#~ msgid "Recent Activity" +#~ msgstr "Activité récente" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Tableau de bord de télémétrie et d'analyse" +#~ msgid "Duration" +#~ msgstr "Durée" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Administrateur → Paramètres" +#~ msgid "N/A" +#~ msgstr "N / A" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "Configuration et tests de messagerie" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "Laisser vide pour conserver le mot de passe actuel" +#~ msgid "Configure and test email delivery" +#~ msgstr "Configurer et tester la livraison des e-mails" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Accès au portail client" +#~ msgid "Back to Admin" +#~ msgstr "Retour à l'administrateur" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "" +#~ "Configurez ici les paramètres de " +#~ "messagerie pour les enregistrer dans la" +#~ " base de données." -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "Attribué à" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Activer la configuration de la messagerie de la base de données" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Mail Server" +#~ msgstr "Serveur de messagerie" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Accès administrateur" +#~ msgid "Mail Port" +#~ msgstr "Port de messagerie" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Migrer vers un nouveau système de rôles" +#~ msgid "Use TLS" +#~ msgstr "Utiliser TLS" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Émigrer" +#~ msgid "Use SSL" +#~ msgstr "Utiliser SSL" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Rôles" +#~ msgid "Username" +#~ msgstr "Nom d'utilisateur" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "Aucun utilisateur trouvé." +#~ msgid "Password" +#~ msgstr "Mot de passe" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "Impossible de supprimer l'utilisateur \"{name}\", car il dispose de {count} entrées de temps. Les utilisateurs avec des entrées de temps existantes ne peuvent pas être supprimés." +#~ msgid "Leave empty to keep current" +#~ msgstr "Laisser vide pour rester à jour" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "Impossible de supprimer l'utilisateur" +#~ msgid "Default Sender" +#~ msgstr "Expéditeur par défaut" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "Êtes-vous sûr de vouloir supprimer l'utilisateur \"{name}\" ? Cette action ne peut pas être annulée." +#~ msgid "Test recipient email" +#~ msgstr "E-mail du destinataire" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Supprimer un utilisateur" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "Enregistrer la configuration" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "Reset" +#~ msgstr "Réinitialiser" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "État de la configuration de la messagerie" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "Refresh" +#~ msgstr "Rafraîchir" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "L'e-mail est configuré !" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Your email settings are properly set up." +#~ msgstr "Vos paramètres de messagerie sont correctement configurés." -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Email is not configured" +#~ msgstr "L'e-mail n'est pas configuré" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "" +#~ "Veuillez configurer les paramètres de " +#~ "messagerie en utilisant le formulaire " +#~ "ci-dessus." -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Étiquette" +#~ msgid "Configuration Errors" +#~ msgstr "Erreurs de configuration" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Configuration Warnings" +#~ msgstr "Avertissements de configuration" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "Current Email Settings" +#~ msgstr "Paramètres de messagerie actuels" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "Port" +#~ msgstr "Port" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Password Set" +#~ msgstr "Mot de passe défini" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Send Test Email" +#~ msgstr "Envoyer un e-mail de test" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "Recipient Email Address" +#~ msgstr "Adresse e-mail du destinataire" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Configuration Guide" +#~ msgstr "Guide de configuration" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "Common SMTP Providers" +#~ msgstr "Fournisseurs SMTP courants" -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "Requires app password" +#~ msgstr "Nécessite le mot de passe de l'application" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Important Notes" +#~ msgstr "Remarques importantes" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail nécessite un mot de passe d'application si 2FA est activé" -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "" +#~ "Redémarrez l'application après avoir modifié" +#~ " les paramètres de messagerie" -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Facultatif" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "Vérifiez les règles de pare-feu si les e-mails ne sont pas envoyés" -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "Pour la production, utilisez un service" +#~ " de messagerie dédié comme SendGrid " +#~ "ou Amazon SES" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "password is set" +#~ msgstr "le mot de passe est défini" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "no password set" +#~ msgstr "aucun mot de passe défini" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "Échec de l'enregistrement de la configuration. Veuillez réessayer." -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Success!" +#~ msgstr "Succès!" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "Échec de l'actualisation de l'état. Veuillez réessayer." -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "S'il vous plaît, mettez une adresse email valide" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "Envoi..." -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "" +#~ "Échec de l'envoi de l'e-mail de " +#~ "test. Veuillez vérifier votre configuration." -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Configurez OIDC à l'aide de ces variables d'environnement :" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Server" +#~ msgstr "Service" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "Users" +#~ msgstr "Utilisateurs" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Définir comme modèle par défaut" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "Modèle HTML" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Message personnalisé" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Plus de variables" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Créer un modèle" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Variables disponibles" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Variables de facture" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Autres variables" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "Envoyer un e-mail de test" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Réclamation de groupes" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "E-mail du destinataire" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "Facturé" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Modèle de mise à jour" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "Envoyer un e-mail de test" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "Aucun modèle d'e-mail trouvé." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "Créez votre premier modèle d'e-mail pour personnaliser les e-mails de facture." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "Créer un modèle d'e-mail" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "Supprimer le modèle d'e-mail" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "Etes-vous sûr de vouloir supprimer" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Cette action ne peut pas être annulée." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Informations sur le modèle" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "Perdu" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "Utiliser SSL" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "StartTLS" +#~ msgstr "Commencer" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Délai d'expiration (secondes)" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Bind password" +#~ msgstr "Mot de passe" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "Enter bind password" +#~ msgstr "Entrez votre mot de passe" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Base DN" +#~ msgstr "Basé sur le dernier" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "User object class" +#~ msgstr "Utiliser les taux horaires du projet" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Login attribute" +#~ msgstr "Heure de journalisation" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Email attribute" +#~ msgstr "Adresse email" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "First name attribute" +#~ msgstr "Prénom" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "Nom de famille" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Méthode d'authentification" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Group object class" +#~ msgstr "Meilleurs projets" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "Groupe d'administrateurs" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "AUTH_METHOD" +#~ msgstr "Méthode d'authentification" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "Actif uniquement" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Configuration des tests" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "Test connection" +#~ msgstr "Configuration des tests" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Generate configuration" +#~ msgstr "Configuration des tests" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "Environment variables (.env)" +#~ msgstr "Référence des variables d'environnement" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Previous" +#~ msgstr "Précédent" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "Next" +#~ msgstr "Suivant" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Feature Module Load Status" +#~ msgstr "Statistiques d'utilisation des fonctionnalités" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Optional loaded:" +#~ msgstr "Code promo facultatif" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Attention needed" +#~ msgstr "Attention requise" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Module" +#~ msgstr "Mobile" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "Status" +#~ msgstr "Statut" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Details" +#~ msgstr "Détails" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "Loaded" +#~ msgstr "Charger plus" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Icône" +#~ msgid "Failed" +#~ msgstr "Échoué" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "—" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Nom" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "All Categories" +#~ msgstr "Toutes les catégories" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Autorisations système" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Toutes les autorisations disponibles dans le système" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Retour aux rôles" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "autorisations" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "Aucune description disponible" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "À propos des autorisations" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "Les autorisations définissent les actions que les utilisateurs peuvent effectuer dans le système. Ces autorisations sont attribuées aux rôles et les rôles sont attribués aux utilisateurs. Cela fournit un système de contrôle d’accès flexible et granulaire." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Modifier le rôle" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Créer un nouveau rôle" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Nom du rôle" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Un nom unique pour ce rôle" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Description facultative de ce rôle" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Autorisations" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Sélectionnez les autorisations que ce rôle doit avoir :" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Tout basculer" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Project Management" +#~ msgstr "Gestion de projet" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Mettre à jour le rôle" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Créer un rôle" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Gérer les rôles et leurs autorisations" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Afficher les autorisations" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Total des rôles" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Rôles système" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Rôles personnalisés" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Utilisateurs assignés" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Taper" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Rôle par défaut" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "utilisateur" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Aucun utilisateur" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Coutume" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Voir" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Autorisations pour" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "Aucune autorisation attribuée." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "Aucun rôle trouvé." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "À propos des rôles et des autorisations" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "Les rôles sont des ensembles d'autorisations qui peuvent être attribuées aux utilisateurs. Les rôles système sont prédéfinis et ne peuvent pas être supprimés ou renommés, mais des rôles personnalisés peuvent être créés pour vos besoins spécifiques." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "Êtes-vous sûr de vouloir supprimer le rôle" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Supprimer le rôle" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Pas de description" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Informations sur le rôle" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Rôle système" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Rôle personnalisé" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Autorisations totales" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Créé" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Utilisateurs avec ce rôle" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Aucun utilisateur affecté à ce rôle pour l'instant." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "Ce rôle n'a aucune autorisation attribuée." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Retour à l'utilisateur" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Gérer les rôles pour" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Attribuer des rôles" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "Sélectionnez les rôles que cet utilisateur doit avoir. Les utilisateurs héritent de toutes les autorisations des rôles qui leur sont attribués." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Mettre à jour les rôles" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Autorisations effectives actuelles" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "Voici toutes les autorisations dont dispose actuellement l'utilisateur via ses rôles :" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Aucune autorisation (attribuer des rôles pour accorder des autorisations)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Créer un webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Modifier le webhook" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Configurer le webhook pour les intégrations" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "URL du webhook" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "L'URL où les événements du webhook seront envoyés" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Événements" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Sélectionnez les événements qui doivent déclencher ce webhook" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "Méthode HTTP" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Type de contenu" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Nombre maximal de tentatives" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Délai de nouvelle tentative (secondes)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Délai d'expiration (secondes)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Régénérer le secret" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Attention : La régénération du secret invalidera le secret actuel" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Gérer les intégrations de webhooks" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Statistiques" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Total" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "Aucun webhook configuré" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Créez votre premier webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Détails du webhook" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Test" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Secrète" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(tronqué)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Livraisons totales" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Réussi" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Dernière livraison" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Livraisons récentes" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Événement" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Tentative" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Réponse" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Temps" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Réessayer" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Pas de livraisons pour l'instant" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "Envoyer un événement de webhook de test ?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "Test du webhook envoyé avec succès !" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Erreur:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Erreur inconnue" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Erreur lors de l'envoi du webhook de test :" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Tableau de bord d'analyse" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "7 derniers jours" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "30 derniers jours" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "90 derniers jours" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "L'année dernière" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "Exporter au format JSON" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "Exporter au format CSV" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Indicateurs et informations clés sur votre suivi du temps" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Heures quotidiennes moyennes" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "Retour" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "Temps" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Tendance des heures quotidiennes" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Facturable ou non facturable" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Tendances hebdomadaires" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "heures avant" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "Paiements au fil du temps" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Heures par heure de la journée" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Efficacité du projet" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Performances des utilisateurs" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "Échec du chargement des graphiques. Veuillez réessayer." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "Échec de l'actualisation des graphiques. Veuillez réessayer." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Heure de la journée" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Revenu" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "Réinitialiser" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Enabled" +#~ msgstr "Activé" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Exporter" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Indicateurs clés et informations exploitables" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "par rapport à la période précédente" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "du total" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Revenu potentiel" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Tarif moyen :" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "S'orienter" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "projets actifs" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Informations et recommandations" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Cumulatif" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Distribution facturable" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Présentation de l'état de la tâche" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Tâches terminées" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "En cours" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Faire" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Revenus par projet" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Paiements au fil du temps" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Méthodes de paiement" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Revenus vs paiements" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Taux de recouvrement" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Taux d'achèvement du projet" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "Facturable" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "Non facturable" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Complété" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Annulé" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Taux d'achèvement (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Présentation des informations mobiles" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Moyenne quotidienne" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Horaires quotidiens" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "Meilleurs projets" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "Disabled" +#~ msgstr "Désactivé" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Saisie du temps" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "Save Changes" +#~ msgstr "Enregistrer les modifications" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "heures" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Approuver" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Rejeter" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Note" +#~ msgstr "Note" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "Tableau de bord de débogage OIDC" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "" +#~ "Inspecter la configuration, les métadonnées" +#~ " du fournisseur et les utilisateurs " +#~ "OIDC" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Test Configuration" +#~ msgstr "Configuration des tests" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Approuvé par" +#~ msgid "OIDC Configuration" +#~ msgstr "Configuration OIDC" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Auth Method" +#~ msgstr "Méthode d'authentification" -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "Publier un commentaire" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "Publier un commentaire" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "Motif du rejet" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Suivez qui a changé quoi et quand" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Filtres" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Type d'entité" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Tous types" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "ID d'entité" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Tous les utilisateurs" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Action" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Toutes les actions" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Mis à jour" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Supprimé" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Plage de temps" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Filtre" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Horodatage" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Entité" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "Champ" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Changement" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Raison" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Modifier les informations" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "Issuer" +#~ msgstr "Émetteur" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "Not configured" +#~ msgstr "Non configuré" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Client ID" +#~ msgstr "Identifiant client" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Client Secret" +#~ msgstr "Secret client" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "Set" +#~ msgstr "Ensemble" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Not set" +#~ msgstr "Non défini" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "URI de redirection" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Demander des informations" +#~ msgid "Auto-generated" +#~ msgstr "Généré automatiquement" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Scopes" +#~ msgstr "Portées" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "Cartographie des revendications" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "Réclamation de nom d'utilisateur" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "Email Claim" +#~ msgstr "Réclamation par courrier électronique" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Full Name Claim" +#~ msgstr "Réclamation du nom complet" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Sécurité" +#~ msgid "Groups Claim" +#~ msgstr "Réclamation de groupes" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "Admin Group" +#~ msgstr "Groupe d'administrateurs" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (authentification d'entreprise)" +#~ msgid "Admin Emails" +#~ msgstr "E-mails de l'administrateur" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "Post-Logout URI" +#~ msgstr "URI après déconnexion" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "Le mot de passe doit comporter au moins 8 caractères" +#~ msgid "Provider Metadata" +#~ msgstr "Métadonnées du fournisseur" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "Error loading metadata:" +#~ msgstr "Erreur lors du chargement des métadonnées :" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "Mot de passe du portail" +#~ msgid "Discovery endpoint:" +#~ msgstr "Point de terminaison de découverte :" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "Définissez votre mot de passe" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Métadonnées du fournisseur chargées avec succès" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "Endpoints" +#~ msgstr "Points de terminaison" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "Aucun nom d'utilisateur ni e-mail" +#~ msgid "Authorization" +#~ msgstr "Autorisation" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "Token" +#~ msgstr "Jeton" -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "Envoyer un e-mail de test" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "Retour à l'administrateur" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Se connecter" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Suivez le temps. Restez organisé." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Connectez-vous à votre compte" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "Détails de l'article" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "Définissez votre mot de passe" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "Méthode d'authentification" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "Se connecter" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "UserInfo" +#~ msgstr "Informations utilisateur" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Astuce : saisissez un nouveau nom d'utilisateur pour créer votre compte." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "Ou continuez avec" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Authentification unique" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Modifier le profil" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Membre depuis" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "Définir le mot de passe" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "Définir le mot de passe" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "Définir un mot de passe pour votre compte portail client" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "Définir le mot de passe" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "Le mot de passe doit comporter au moins 8 caractères" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "Confirmez le mot de passe" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "Définissez votre mot de passe" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "Définir le mot de passe" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "Méthode d'authentification" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "End Session" +#~ msgstr "Fin de session" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Code" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "JWKS URI" +#~ msgstr "URI JWKS" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Supported Features" +#~ msgstr "Fonctionnalités prises en charge" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "L'accès au portail client n'est pas activé pour votre compte." +#~ msgid "Response Types" +#~ msgstr "Types de réponses" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "Types de subventions" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "Désactivé" +#~ msgid "Auth Methods" +#~ msgstr "Méthodes d'authentification" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "Claims" +#~ msgstr "Réclamations" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Les métadonnées du fournisseur ne sont" +#~ " pas chargées. Cliquez sur \"Test de" +#~ " configuration\" pour récupérer." -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "Email" +#~ msgstr "E-mail" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Full Name" +#~ msgstr "Nom et prénom" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "Role" +#~ msgstr "Rôle" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "Last Login" +#~ msgstr "Dernière connexion" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "Code généré" +#~ msgid "OIDC Subject" +#~ msgstr "Sujet OIDC" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "Activé" +#~ msgid "Inactive" +#~ msgstr "Inactif" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "Never" +#~ msgstr "Jamais" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Aucun utilisateur ne s'est encore connecté via OIDC." -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Environment Variables Reference" +#~ msgstr "Référence des variables d'environnement" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Alertes et prévisions budgétaires" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Surveiller les budgets des projets et prévoir l’achèvement" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Alertes non acquittées" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Alertes critiques" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Projets avec budgets" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Alertes d'avertissement" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Alertes actives" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Reconnaître" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Statut du budget du projet" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Budget" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Consommé" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Restant" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Progrès" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "sur" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Au-dessus du budget" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Critique" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "En bonne santé" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "Aucun projet avec budget trouvé" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Alerte reconnue avec succès" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "Échec de l'accusé de réception de l'alerte" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Analyse et prévisions budgétaires" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Retour au tableau de bord" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Voir le projet" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Budget total" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Analyse du taux de combustion" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Taux de combustion quotidien" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Taux de combustion hebdomadaire" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Taux de combustion mensuel" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Total de la période" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Basé sur le dernier" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "jours" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "Aucune donnée sur le taux de combustion disponible" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Estimation d’achèvement" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Date d'achèvement estimée" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "jours restants" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Niveau de confiance" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "Aucune estimation d'achèvement disponible" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Analyse des tendances des coûts" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Moyenne" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Allocation des ressources" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Coût total" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Taux horaire" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Membre de l'équipe" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Coût" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Heures %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Coût %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "Entrées" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Date et heure" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Emplacement" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Rappel" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "minutes avant" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "heures avant" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "jours avant" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Récurrent" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Jusqu'à" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Dernière mise à jour" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Retour au calendrier" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Supprimer l'événement" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "Êtes-vous sûr de vouloir supprimer cet événement ? Cette action ne peut pas être annulée." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Modifier l'événement" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Nouvel événement" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Titre" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Date de début" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Heure de début" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Date de fin" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Heure de fin" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Événement toute la journée" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Type d'événement" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Réunion" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Rendez-vous" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Date limite" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- Aucun --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Aucun rappel" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 minutes avant" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 minutes avant" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 minutes avant" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 heure avant" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 jour avant" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Couleur" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Choisissez une couleur pour cet événement" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Événement privé" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Les événements privés ne sont visibles que par vous" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Événement récurrent" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "C'est un événement récurrent" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Modèle de récurrence" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Utilisez le format RRULE (par exemple, FREQ=WEEKLY;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Date de fin de récurrence" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Événement de mise à jour" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Créer un événement" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Configurez OIDC à l'aide de ces variables d'environnement :" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "Variable" +#~ msgstr "Variable" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "Description" +#~ msgstr "Description" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "Example" +#~ msgstr "Exemple" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "Authentication method" +#~ msgstr "Méthode d'authentification" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "OIDC provider issuer URL" +#~ msgstr "URL de l'émetteur du fournisseur OIDC" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Client ID from OIDC provider" +#~ msgstr "ID client du fournisseur OIDC" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Secret client du fournisseur OIDC" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "URL de rappel (facultatif, généré automatiquement)" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "Requested scopes" +#~ msgstr "Périmètres demandés" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "Claim containing username" +#~ msgstr "Revendication contenant le nom d'utilisateur" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "Claim containing email" +#~ msgstr "Réclamation contenant un e-mail" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Affichez et gérez vos événements, tâches et entrées de temps" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Jour" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Semaine" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Mois" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "Aujourd'hui" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Claim containing full name" +#~ msgstr "Revendication contenant le nom complet" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Claim containing groups" +#~ msgstr "Revendication contenant des groupes" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Chargement du calendrier..." +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Nom du groupe pour le rôle d'administrateur (facultatif)" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Détails de l'événement" +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "E-mails d'administration séparés par des virgules (facultatif)" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "Basic Config" +#~ msgstr "" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "Test Connection" +#~ msgstr "" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "OIDC Issuer URL" +#~ msgstr "" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "Enter client secret" +#~ msgstr "" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "Authentication Method" +#~ msgstr "Méthode d'authentification" -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "OIDC Only" +#~ msgstr "" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Both" +#~ msgstr "" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "SSO and local password authentication" +#~ msgstr "" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Step 2: Test Connection" +#~ msgstr "" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Modifier la note du client" +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Retour au client" +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Client:" +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Créé le" +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Dernière modification le" +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Contenu de la note" +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Note interne visible uniquement par votre équipe." +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Marquer comme important" +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Portail client" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "Afficher les détails" +#~ msgid "Generate Configuration" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "OIDC User Details" +#~ msgstr "Détails de l'utilisateur OIDC" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "En attente" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Approuvé" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Rejeté" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Tous" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Profil et identité OIDC pour cet utilisateur" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "Back to OIDC Debug" +#~ msgstr "Retour au débogage OIDC" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Afficher les détails" +#~ msgid "User Profile" +#~ msgstr "Profil utilisateur" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "Active" +#~ msgstr "Actif" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "Preferred Language" +#~ msgstr "Langue préférée" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "Created At" +#~ msgstr "Créé à" + +#~ msgid "OIDC Information" +#~ msgstr "Informations OIDC" + +#~ msgid "OIDC Issuer" +#~ msgstr "Émetteur OIDC" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "OIDC Subject (sub)" +#~ msgstr "Sujet OIDC (sous)" + +#~ msgid "Local" +#~ msgstr "Locale" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Cet utilisateur a été créé ou lié" +#~ " via OIDC. L'émetteur et le sujet " +#~ "sont utilisés pour identifier de manière" +#~ " unique l'utilisateur lors des sessions " +#~ "de connexion." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Cet utilisateur ne dispose d'aucune " +#~ "information OIDC. Ils peuvent avoir été" +#~ " créés manuellement ou via une " +#~ "auto-inscription sans OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "Statistiques d'activité" + +#~ msgid "Time Entries" +#~ msgstr "Entrées de temps" + +#~ msgid "None" +#~ msgstr "Aucun" + +#~ msgid "Active Timer" +#~ msgstr "Minuterie active" + +#~ msgid "Tasks Created" +#~ msgstr "Tâches créées" + +#~ msgid "Edit User" +#~ msgstr "Modifier l'utilisateur" + +#~ msgid "View All Users" +#~ msgstr "Afficher tous les utilisateurs" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "Concepteur de devis PDF" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "Visual Invoice Designer" +#~ msgstr "Concepteur de devis visuel" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "" +#~ "Glissez et déposez des éléments pour " +#~ "concevoir la mise en page de votre" +#~ " devis" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "How to use:" +#~ msgstr "Comment utiliser :" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Cliquez sur les éléments dans la " +#~ "barre latérale gauche pour les ajouter" +#~ " au canevas. Cliquez sur les éléments" +#~ " pour les sélectionner et les " +#~ "personnaliser dans le panneau des " +#~ "propriétés. Utilisez les outils d'alignement" +#~ " et les raccourcis clavier pour une" +#~ " édition plus rapide." -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "Statut d'approbation" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "Approbation demandée" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "Aucun projet n'a été mis à jour" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "Bienvenue, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "Personnaliser les raccourcis" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Raccourcis clavier :" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "Statistiques" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "Sections d'administration" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "Factures récentes" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "Entrées de temps récentes" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "Sélectionnez un client..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "Échec de l'arrêt du chronomètre" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Items Table:" +#~ msgstr "Tableau des éléments du devis" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "Expenses Table:" +#~ msgstr "Sous-total des dépenses" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Saving:" +#~ msgstr "Économie..." -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Aller au tableau de bord" +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Preview:" +#~ msgstr "" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Retourner" +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "See" +#~ msgstr "Ensemble" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Détails de la facture" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Date d'émission" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "Cette facture est en retard de %(days)d jours." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Postes de facture" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Quantité" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Prix ​​unitaire" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "for full documentation." +#~ msgstr "Documentation" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Retour aux factures" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "Factures pour %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "Non rémunéré" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "En retard" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Montant" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "jours de retard" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "Clear Canvas" +#~ msgstr "Toile transparente" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "Generate Preview" +#~ msgstr "Générer un aperçu" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Save Design" +#~ msgstr "Enregistrer la conception" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "View Code" +#~ msgstr "Voir le code" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Export JSON" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Import JSON" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Aligner sur la grille (10 px)" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "Toolbox" +#~ msgstr "Boîte à outils" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Search elements & variables..." +#~ msgstr "Rechercher des éléments et des variables..." -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Priorité" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "Elements" +#~ msgstr "Éléments" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "Attribué à" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Variables" +#~ msgstr "Variables" -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Basic Elements" +#~ msgstr "Éléments de base" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "Custom Text" +#~ msgstr "Texte personnalisé" -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Text" +#~ msgstr "Texte" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Ouvrir" +#~ msgid "Heading" +#~ msgstr "Titre" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Line" +#~ msgstr "Doubler" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "Rectangle" +#~ msgstr "Rectangle" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "Circle" +#~ msgstr "Cercle" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Connexion au portail client" +#~ msgid "Company Info" +#~ msgstr "Informations sur l'entreprise" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Consultez vos projets et factures" +#~ msgid "Company Logo" +#~ msgstr "Logo de l'entreprise" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Connectez-vous au portail client" +#~ msgid "Company Name" +#~ msgstr "Nom de l'entreprise" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "Entrez vos identifiants de portail pour accéder à vos projets et factures" +#~ msgid "Company Details" +#~ msgstr "Détails de l'entreprise" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "nom_utilisateur_portail" +#~ msgid "Address" +#~ msgstr "Adresse" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Entrez votre mot de passe" +#~ msgid "Phone" +#~ msgstr "Téléphone" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "Website" +#~ msgstr "Site web" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "Tax ID" +#~ msgstr "Numéro d'identification fiscale" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "Invoice Data" +#~ msgstr "Détails de la facture" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "Invoice Number" +#~ msgstr "Numéro de facture" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Faible" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Moyen" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Haut" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Urgent" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "Invoice Date" +#~ msgstr "Facturé" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "Due Date" +#~ msgstr "Date d'échéance" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "Client Info" +#~ msgstr "Informations client" -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Client Name" +#~ msgstr "Nom du client" -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "Client Address" +#~ msgstr "Adresse du client" -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "Items Table" +#~ msgstr "Tableau des éléments du devis" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "Expenses Table" +#~ msgstr "Sous-total des dépenses" -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "Subtotal" +#~ msgstr "Total" -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "Tax" +#~ msgstr "Impôt" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Total Amount" +#~ msgstr "Montant total" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Terms" +#~ msgstr "Termes" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Payment & Project" +#~ msgstr "Paiement et projet" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Payment Date" +#~ msgstr "Date de paiement" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Commentaires" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Ajouter un commentaire" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Votre commentaire" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Payment Method" +#~ msgstr "Mode de paiement" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Publier un commentaire" +#~ msgid "Payment Status" +#~ msgstr "Statut du paiement" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "Amount Paid" +#~ msgstr "Montant payé" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "Project Name" +#~ msgstr "Nom du projet" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Retour aux projets" +#~ msgid "Client Email" +#~ msgstr "Courriel du client" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "Projets pour %(client_name)s" +#~ msgid "Client Phone" +#~ msgstr "Téléphone du client" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "QR Code" +#~ msgstr "Code QR" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "Barcode" +#~ msgstr "Code à barres" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "Page Number" +#~ msgstr "Numéro de page" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Détails du devis" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Valable jusqu'au" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Ce devis est expiré." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Articles de devis" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "UGS" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Conditions générales" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "Current Date" +#~ msgstr "Date actuelle" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Accepter le devis" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Rejeter le devis" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Retour aux citations" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "Watermark" +#~ msgstr "Filigrane" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "Bank Info" +#~ msgstr "Informations bancaires" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "Devis pour %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Expiré" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "Aucune citation trouvée." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Currency" +#~ msgstr "Devise" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "Decorative Image" +#~ msgstr "" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "Code du projet" +#~ msgid "Invoice Fields" +#~ msgstr "Postes de facture" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "Au-dessus du budget" +#~ msgid "Invoice number" +#~ msgstr "Numéro de facture" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Statut du devis (projet/envoyé/payé/en retard)" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "Résumé" +#~ msgid "Issue date" +#~ msgstr "Date d'émission" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "Montant total" +#~ msgid "Due date" +#~ msgstr "Date d'échéance" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "Aucune tâche sélectionnée" +#~ msgid "Subtotal amount" +#~ msgstr "Montant du sous-total" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "Aucune activité au cours des 30 derniers jours." +#~ msgid "Tax rate (%)" +#~ msgstr "Taux d'imposition (%)" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Tax amount" +#~ msgstr "Montant de la taxe" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Total amount" +#~ msgstr "Montant total" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Définir le mot de passe" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Définissez votre mot de passe pour commencer" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Définissez votre mot de passe" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Définir un mot de passe pour votre compte portail client" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "Confirmez le mot de passe" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Confirmez votre mot de passe" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "Entrées de temps pour les projets %(client_name)s" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Tous les projets" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "À partir de la date" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "À ce jour" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Total des entrées" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Heures totales" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Code de devise (EUR, USD, etc.)" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "Invoice notes" +#~ msgstr "Postes de facture" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Terms & conditions" +#~ msgstr "Conditions générales" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Factures récentes" +#~ msgid "Client Fields" +#~ msgstr "Champs clients" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Tout afficher" +#~ msgid "Client company name" +#~ msgstr "Nom de l'entreprise cliente" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "Client email address" +#~ msgstr "Adresse e-mail du client" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "Client full address" +#~ msgstr "Adresse complète du client" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "Client contact person" +#~ msgstr "Personne de contact client" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Client phone number" +#~ msgstr "Numéro de téléphone du client" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "Payment Fields" +#~ msgstr "Champs de paiement" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "Payment status" +#~ msgstr "Statut du paiement" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "Payment date" +#~ msgstr "Date de paiement" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Payment method" +#~ msgstr "Mode de paiement" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Total des factures" +#~ msgid "Payment reference number" +#~ msgstr "Numéro de référence du paiement" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "Amount paid" +#~ msgstr "Montant payé" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Entrées de temps récentes" +#~ msgid "Outstanding amount" +#~ msgstr "Montant impayé" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "Payment notes" +#~ msgstr "Notes de paiement" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Exporter au format CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Créer un client" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Retour aux Clients" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "Ajoutez un nouveau client pour gérer les projets associés et la facturation." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Entrez le nom du client" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Taux horaire par défaut" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "par ex. 75.00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "Ce tarif sera automatiquement renseigné lors de la création de projets pour ce client" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Prend en charge la démarque" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Brève description de la portée du client ou du projet" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Personne de contact" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Nom du contact principal" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@client.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Heures mensuelles prépayées" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "par ex. 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "Laissez vide si ce client n’a pas d’allocation prépayée." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Jour de réinitialisation prépayé" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Jour du mois de réinitialisation des heures prépayées (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Adresse du client" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "Project Fields" +#~ msgstr "Champs du projet" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "Project name" +#~ msgstr "Nom du projet" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Choisissez un nom clair et descriptif pour l'organisation cliente." +#~ msgid "Project code" +#~ msgstr "Code du projet" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "Définissez le taux horaire standard pour ce client. Celui-ci sera automatiquement renseigné lors de la création de nouveaux projets." +#~ msgid "Project description" +#~ msgstr "Descriptif du projet" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Coordonnées" +#~ msgid "Project billing reference" +#~ msgstr "Référence de facturation du projet" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "Ajoutez des coordonnées pour faciliter la communication et la tenue de dossiers." +#~ msgid "Company/Settings Fields" +#~ msgstr "Champs Entreprise/Paramètres" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Heures prépayées" +#~ msgid "Your company name" +#~ msgstr "Le nom de votre entreprise" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "Configurez les heures mensuelles incluses et le jour de réinitialisation si ce client dispose d'un forfait forfaitaire ou prépayé." +#~ msgid "Your company address" +#~ msgstr "Adresse de votre entreprise" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "Fournissez le contexte de la relation client ou des types de projets typiques." +#~ msgid "Your company email" +#~ msgstr "L'e-mail de votre entreprise" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "Modifier le client" +#~ msgid "Your company phone" +#~ msgstr "Votre téléphone d'entreprise" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "Activez l'accès au portail pour ce client. Les clients peuvent se connecter avec leurs propres informations d'identification pour afficher les projets, les factures et les entrées de temps." +#~ msgid "Your company website" +#~ msgstr "Site Internet de votre entreprise" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Activer le portail client" +#~ msgid "Your tax ID number" +#~ msgstr "Votre numéro d'identification fiscale" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "Your bank account info" +#~ msgstr "Informations sur votre compte bancaire" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Default invoice terms" +#~ msgstr "Conditions de facturation par défaut" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Nom d'utilisateur du portail" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Nom d'utilisateur unique pour la connexion au portail" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Mot de passe du portail" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "Laisser vide pour conserver le mot de passe actuel" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Définissez un nouveau mot de passe ou laissez vide pour rester à jour" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Nom d'utilisateur actuel du portail" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Mettre à jour le client" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Envoyer un e-mail de configuration du mot de passe" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "Envoyez un e-mail à %(email)s avec un lien pour définir son mot de passe de portail." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "Une adresse e-mail est requise pour envoyer un e-mail de configuration du mot de passe. Veuillez définir l'adresse e-mail du client ci-dessus." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Statistiques clients" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "HNE. Coût total" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Filtrer les clients" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Basculer les filtres" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Masquer les filtres" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Afficher les filtres" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "Default invoice notes" +#~ msgstr "Notes de facture par défaut" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "Aucune entrée de temps non facturé trouvée pour ce projet." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "Saisies de temps non facturées" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "Postes de facture" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "Marquer le client comme inactif ?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Changer le statut du client" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Marquer comme inactif" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "Activer le client ?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Activer le client" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Supprimer le client" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "Projets totaux et actifs" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Gérer" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Primaire" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "plus de contact(s)" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Aucun contact pour l'instant" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Ajouter un contact" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Informations de contact héritées" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "Le forfait comprend %(hours)s heures par cycle. Se réinitialise le jour %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Début du cycle en cours" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Heures restantes" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "h" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "J'ai consommé ce cycle" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Date/Time Fields" +#~ msgstr "Champs de date/heure" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "Current date" +#~ msgstr "Date actuelle" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Invoice creation date" +#~ msgstr "Date de création du devis" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "Invoice last update date" +#~ msgstr "Date de la dernière mise à jour du devis" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "Invoice Items Loop" +#~ msgstr "Postes de facture" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Client visible" +#~ msgid "Time-based items only" +#~ msgstr "Services basés sur le temps et travail horaire" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "Item description" +#~ msgstr "Description de l'article" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Item quantity" +#~ msgstr "Quantité d'article" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Item unit price" +#~ msgstr "Prix ​​unitaire de l'article" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Archivé" +#~ msgid "Item total amount" +#~ msgstr "Montant total de l'article" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "End loop" +#~ msgstr "Fin de la boucle" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Extra Goods Loop" +#~ msgstr "Marchandises supplémentaires" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "Loop through extra goods only" +#~ msgstr "Projet de biens supplémentaires" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Notes internes" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Ajouter une note" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Ajouter une note interne sur ce client..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Enregistrer la note" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "édité" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Important" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Décocher" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Marquer comme important" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "Aucune note pour l'instant. Ajoutez une note pour garder une trace des informations importantes sur ce client." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "Valeur estimée" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "Créer une facture" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "Créer une facture" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "Créer une facture" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "Êtes-vous sûr de vouloir supprimer cette note ?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Supprimer la note" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Edité le" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Répondre" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "Good name" +#~ msgstr "Nom du rôle" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Good total amount" +#~ msgstr "Montant total" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Écrivez votre réponse..." +#~ msgid "Design Canvas" +#~ msgstr "Toile de conception" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "Page Size:" +#~ msgstr "Taille des pages :" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "Zoom In" +#~ msgstr "Zoomer" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Partagez vos réflexions, mises à jour ou questions..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "Vous pouvez utiliser des sauts de ligne pour formater votre commentaire." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Ajouter une image" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Pas encore de commentaires" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Démarrez la conversation en ajoutant le premier commentaire." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Ajouter un premier commentaire" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Modifier le commentaire" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Dos" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "Modification du commentaire sur :" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Initialement publié sur" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Contenu du commentaire" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Toutes les activités" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Modèles de temps" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Aucune activité récente" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "L'activité apparaîtra ici pendant que vous travaillez" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Charger plus" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "Échec du chargement des activités" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Zoom Out" +#~ msgstr "Zoom arrière" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "Delete Selected" +#~ msgstr "Supprimer la sélection" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "Properties" +#~ msgstr "Propriétés" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "Warnings" +#~ msgstr "Avertissement" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "Refresh warnings" +#~ msgstr "Actualiser la page" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "No warnings" +#~ msgstr "Avertissement" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "Template Settings" +#~ msgstr "" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Date Format" +#~ msgstr "Format des dates" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Sélectionnez un client..." +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "Select an element to edit its properties" +#~ msgstr "Sélectionnez un élément pour modifier ses propriétés" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "PDF Preview" +#~ msgstr "Aperçu PDF" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "Page Size" +#~ msgstr "" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "Refresh Preview" +#~ msgstr "" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Toggle Fullscreen" +#~ msgstr "" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Close Preview" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "Zoom Level" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "Reset Zoom" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Fit to Width" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Fit Width" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "Fit to Height" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Fit Height" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Actual Size" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Generating preview..." +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Preview Error" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Retry" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Generated Code" +#~ msgstr "Code généré" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Change Image" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "Upload Image" +#~ msgstr "" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Remove Image" +#~ msgstr "" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "File size must be less than 5MB" +#~ msgstr "" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "Fait" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Uploading..." +#~ msgstr "" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "Centre d'aide TimeTracker" +#~ msgid "Error: Image update function not found" +#~ msgstr "" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Failed to upload image" +#~ msgstr "" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Maison" +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "Pagination de mes tâches" +#~ msgid "Clear all elements?" +#~ msgstr "Effacer tous les éléments ?" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "Clear" +#~ msgstr "Clair" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Exit Fullscreen" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Appel" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Message" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Direction" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "Sortant" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "Entrant" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Sujet" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Programmé" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Date de suivi" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Contenu/Remarques" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Enregistrer la communication" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Prénom" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Nom de famille" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "Mobile" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "Département" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Contact" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Facturation" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Technique" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Définir comme contact principal" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Balises" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Enregistrer le contact" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Définir comme principal" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "Aucun contact trouvé" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Ajouter un premier contact" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Contact principal" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Historique des communications" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Ajouter une communication" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "Aucune communication enregistrée" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "Activer" +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Nom de l'offre" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Sélectionnez un client" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Sélectionnez Contact" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Scène" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Valeur de la transaction" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Probabilité de gagner" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Date de clôture prévue" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Citation connexe" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Sélectionnez un devis" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Enregistrer l'offre" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Gagné" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Perdu" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Toutes les étapes" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Valeur" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Probabilité" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Clôture prévue" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "Aucune offre trouvée" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Créer la première transaction" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "Reset to defaults?" +#~ msgstr "Réinitialiser aux valeurs par défaut ?" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "Reset PDF Layout" +#~ msgstr "Réinitialiser la mise en page du PDF" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "Error importing template" +#~ msgstr "" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "PDF Quote Designer" +#~ msgstr "Concepteur de devis PDF" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "Visual Quote Designer" +#~ msgstr "Concepteur de devis visuel" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "" +#~ "Glissez et déposez des éléments pour " +#~ "concevoir la mise en page de votre" +#~ " devis" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Projet connexe" +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Tableau des éléments du devis" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Quote Items Table:" +#~ msgstr "Tableau des éléments du devis" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "Historique des buts" +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "Afficher tous les détails" +#~ msgid "Quote Data" +#~ msgstr "Données de devis" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Quote Number" +#~ msgstr "Numéro de devis" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Vous avez été mentionné" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Afficher la tâche et la réponse" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Facture" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Facture en retard" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Afficher la facture" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Citation" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Approbation du devis rejetée" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Voir le devis" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Approbation demandée" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Examiner le devis" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Devis approuvé" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "Devis expiré" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "Devis expirant bientôt" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Devis envoyé" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Affectation des tâches" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Afficher la tâche" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Détails du test" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "Votre résumé hebdomadaire" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 requêtes incorrectes" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Demande invalide" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "La demande que vous avez faite n'est pas valide ou contient des erreurs. Cela pourrait être dû à :" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Données de formulaire manquantes ou invalides" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Paramètres de requête mal formés" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "Vous n'êtes pas autorisé à accéder à cette ressource. Cela pourrait être dû à :" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Privilèges insuffisants" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "Non connecté" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Restrictions d'accès aux ressources" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Quelque chose s'est mal passé de notre côté. Veuillez réessayer plus tard." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Essayer à nouveau" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Une erreur s'est produite lors du traitement de votre demande." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Actualiser la page" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Allez dans Connexion" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "par exemple, voyages, repas, fournitures de bureau" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "par exemple, VOYAGES, REPAS" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Brève description de cette catégorie..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "par exemple, avion fa, ustensiles fa" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "par exemple, 19h00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Catégorie" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Informations de base" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "par exemple, vol pour Berlin" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Détails supplémentaires sur les dépenses..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "Catégorie" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "Détails du paiement" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "Emplacement" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Détails du paiement" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "par exemple, Lufthansa" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "Informations Complémentaires" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Numéro de reçu/facture" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "par exemple, INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "par exemple, conférence, réunion client, urgence" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Notes complémentaires..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "Facultatif" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Filtrer les dépenses" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Supprimer les dépenses sélectionnées" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Modifier le statut des dépenses sélectionnées" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Associé à" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Rejeter la dépense" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Expliquez pourquoi cette dépense est rejetée..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "Etes-vous sûr de vouloir supprimer cette dépense ?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Supprimer une dépense" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "Quote Date" +#~ msgstr "Date du devis" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Importer/Exporter des données" +#~ msgid "Quote Items Table" +#~ msgstr "Tableau des éléments du devis" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Importer/Exporter" +#~ msgid "Quote Fields" +#~ msgstr "Champs de devis" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "Importez des données à partir d'autres trackers de temps ou exportez vos données pour la conformité et les sauvegardes du RGPD" +#~ msgid "Quote number" +#~ msgstr "Numéro de devis" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Importer des données" +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Statut du devis (projet/envoyé/payé/en retard)" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "Quote notes" +#~ msgstr "Notes de devis" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Importer des entrées de temps à partir d'un fichier CSV" +#~ msgid "Quote status" +#~ msgstr "Statut du devis" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Choisissez un fichier CSV" +#~ msgid "Quote accepted date" +#~ msgstr "Date d'acceptation du devis" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Télécharger le modèle" +#~ msgid "Quote creation date" +#~ msgstr "Date de création du devis" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Quote last update date" +#~ msgstr "Date de la dernière mise à jour du devis" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "Quote Items Loop" +#~ msgstr "Boucle d'articles de devis" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Loop through invoice items" +#~ msgstr "Parcourez les éléments de facture" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Align Left" +#~ msgstr "Aligner à gauche" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Center Horizontally" +#~ msgstr "Centrer horizontalement" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Align Right" +#~ msgstr "Aligner à droite" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Align Top" +#~ msgstr "Aligner en haut" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Importer depuis Toggl Track" +#~ msgid "Center Vertically" +#~ msgstr "Centrer verticalement" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Importer les entrées de temps depuis Toggl Track" +#~ msgid "Align Bottom" +#~ msgstr "Aligner en bas" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Importer depuis Toggl" +#~ msgid "Salesman Email Mappings" +#~ msgstr "" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Importer depuis la récolte" +#~ msgid "Email Mappings" +#~ msgstr "" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Importer les entrées de temps depuis Harvest" +#~ msgid "Add Mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Restaurer à partir d'une sauvegarde" +#~ msgid "Salesman Initial" +#~ msgstr "" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "Email Address" +#~ msgstr "Adresse email" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Historique d'importation" +#~ msgid "Pattern/Domain" +#~ msgstr "" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Exporter des données" +#~ msgid "Add Email Mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Exportation complète des données (RGPD)" +#~ msgid "1-20 letters only" +#~ msgstr "" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Exportez toutes vos données personnelles" +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Exporter au format JSON" +#~ msgid "Direct Email Address" +#~ msgstr "" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Exporter au format ZIP" +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Exportation filtrée" +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Exporter des données spécifiques avec des filtres" +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Exporter avec des filtres" +#~ msgid "Additional notes about this mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "Edit Email Mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "Error saving mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Créer une sauvegarde complète de la base de données" +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Historique des exportations" +#~ msgid "Error deleting mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "Jeton API" +#~ msgid "Time Entry Requirements" +#~ msgstr "Modèles de saisie du temps" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "ID de l'espace de travail" +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Importer" +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "Identifiant du compte" +#~ msgid "Require description when logging time" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Minimum description length (characters)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "Support visibility" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "Clé" + +#~ msgid "— key sent by email." +#~ msgstr "Envoyer un e-mail" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "Clé" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "Code, nom, email" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "Image de marque de l’entreprise" + +#~ msgid "Invoice Defaults" +#~ msgstr "Valeurs par défaut des factures" + +#~ msgid "Backup Settings" +#~ msgstr "Paramètres de sauvegarde" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "Activé" + +#~ msgid "Host" +#~ msgstr "Perdu" + +#~ msgid "SSL" +#~ msgstr "Utiliser SSL" + +#~ msgid "TLS" +#~ msgstr "Utiliser TLS" + +#~ msgid "on" +#~ msgstr "sur" + +#~ msgid "off" +#~ msgstr "de" + +#~ msgid "User DN" +#~ msgstr "Menu utilisateur" + +#~ msgid "User login attribute" +#~ msgstr "Des temps de chargement plus rapides" + +#~ msgid "Test LDAP Connection" +#~ msgstr "Termes et conditions" + +#~ msgid "Export Settings" +#~ msgstr "Paramètres d'exportation" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "Ajustement" + +#~ msgid "Transfer" +#~ msgstr "Transfert" + +#~ msgid "Sale" +#~ msgstr "Vente" + +#~ msgid "Rent" +#~ msgstr "Location" + +#~ msgid "Purchase" +#~ msgstr "Achat" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "Disponible" + +#~ msgid "Use environment default" +#~ msgstr "Valeurs par défaut des factures" + +#~ msgid "currently" +#~ msgstr "Devise" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "URL de l'image" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "Code" + +#~ msgid "Hosted API key" +#~ msgstr "Créer un jeton API" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "Laisser vide pour conserver le mot de passe actuel" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "Délai d'expiration (secondes)" + +#~ msgid "Context limit" +#~ msgstr "Type de contenu" + +#~ msgid "System prompt" +#~ msgstr "Rôle système" + +#~ msgid "Test AI connection" +#~ msgstr "Termes et conditions" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Confidentialité et analyses" + +#~ msgid "Save Settings" +#~ msgstr "Enregistrer les paramètres" + +#~ msgid "Upload New Logo" +#~ msgstr "Télécharger un nouveau logo" + +#~ msgid "Logo Preview" +#~ msgstr "Aperçu du logo" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer le logo de l'entreprise ?" + +#~ msgid "Remove Logo" +#~ msgstr "Supprimer le logo" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "Demander l'approbation" + +#~ msgid "Testing connection..." +#~ msgstr "Configuration des tests" + +#~ msgid "Connection failed." +#~ msgstr "L'opération a échoué" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "L'opération a échoué" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Tableau de bord de télémétrie et d'analyse" + +#~ msgid "Admin → Settings" +#~ msgstr "Administrateur → Paramètres" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "Laisser vide pour conserver le mot de passe actuel" + +#~ msgid "Client Portal Access" +#~ msgstr "Accès au portail client" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "Attribué à" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "Accès administrateur" + +#~ msgid "Migrate to new role system" +#~ msgstr "Migrer vers un nouveau système de rôles" + +#~ msgid "Migrate" +#~ msgstr "Émigrer" + +#~ msgid "Roles" +#~ msgstr "Rôles" + +#~ msgid "No users found." +#~ msgstr "Aucun utilisateur trouvé." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "Impossible de supprimer l'utilisateur " +#~ "\"{name}\", car il dispose de {count}" +#~ " entrées de temps. Les utilisateurs " +#~ "avec des entrées de temps existantes " +#~ "ne peuvent pas être supprimés." + +#~ msgid "Cannot Delete User" +#~ msgstr "Impossible de supprimer l'utilisateur" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Êtes-vous sûr de vouloir supprimer " +#~ "l'utilisateur \"{name}\" ? Cette action " +#~ "ne peut pas être annulée." + +#~ msgid "Delete User" +#~ msgstr "Supprimer un utilisateur" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "Étiquette" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "Facultatif" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "Définir comme modèle par défaut" + +#~ msgid "HTML Template" +#~ msgstr "Modèle HTML" + +#~ msgid "Custom Message" +#~ msgstr "Message personnalisé" + +#~ msgid "More Variables" +#~ msgstr "Plus de variables" + +#~ msgid "Create Template" +#~ msgstr "Créer un modèle" + +#~ msgid "Available Variables" +#~ msgstr "Variables disponibles" + +#~ msgid "Invoice Variables" +#~ msgstr "Variables de facture" + +#~ msgid "Other Variables" +#~ msgstr "Autres variables" + +#~ msgid "Send test email" +#~ msgstr "Envoyer un e-mail de test" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "E-mail du destinataire" + +#~ msgid "Invoice ID" +#~ msgstr "Facturé" + +#~ msgid "Update Template" +#~ msgstr "Modèle de mise à jour" + +#~ msgid "Failed to send test email." +#~ msgstr "Envoyer un e-mail de test" + +#~ msgid "No email templates found." +#~ msgstr "Aucun modèle d'e-mail trouvé." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" +#~ "Créez votre premier modèle d'e-mail pour" +#~ " personnaliser les e-mails de facture." + +#~ msgid "Create Email Template" +#~ msgstr "Créer un modèle d'e-mail" + +#~ msgid "Delete Email Template" +#~ msgstr "Supprimer le modèle d'e-mail" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "Etes-vous sûr de vouloir supprimer" + +#~ msgid "This action cannot be undone." +#~ msgstr "Cette action ne peut pas être annulée." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "Informations sur le modèle" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "Icône" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "Nom" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "Autorisations système" + +#~ msgid "All available permissions in the system" +#~ msgstr "Toutes les autorisations disponibles dans le système" + +#~ msgid "Back to Roles" +#~ msgstr "Retour aux rôles" + +#~ msgid "permissions" +#~ msgstr "autorisations" + +#~ msgid "No description available" +#~ msgstr "Aucune description disponible" + +#~ msgid "About Permissions" +#~ msgstr "À propos des autorisations" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Les autorisations définissent les actions " +#~ "que les utilisateurs peuvent effectuer " +#~ "dans le système. Ces autorisations sont" +#~ " attribuées aux rôles et les rôles" +#~ " sont attribués aux utilisateurs. Cela " +#~ "fournit un système de contrôle d’accès" +#~ " flexible et granulaire." + +#~ msgid "Edit Role" +#~ msgstr "Modifier le rôle" + +#~ msgid "Create New Role" +#~ msgstr "Créer un nouveau rôle" + +#~ msgid "Role Name" +#~ msgstr "Nom du rôle" + +#~ msgid "A unique name for this role" +#~ msgstr "Un nom unique pour ce rôle" + +#~ msgid "Optional description of this role" +#~ msgstr "Description facultative de ce rôle" + +#~ msgid "Permissions" +#~ msgstr "Autorisations" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Sélectionnez les autorisations que ce rôle doit avoir :" + +#~ msgid "Toggle All" +#~ msgstr "Tout basculer" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "Mettre à jour le rôle" + +#~ msgid "Create Role" +#~ msgstr "Créer un rôle" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Gérer les rôles et leurs autorisations" + +#~ msgid "View Permissions" +#~ msgstr "Afficher les autorisations" + +#~ msgid "Total Roles" +#~ msgstr "Total des rôles" + +#~ msgid "System Roles" +#~ msgstr "Rôles système" + +#~ msgid "Custom Roles" +#~ msgstr "Rôles personnalisés" + +#~ msgid "Assigned Users" +#~ msgstr "Utilisateurs assignés" + +#~ msgid "Type" +#~ msgstr "Taper" + +#~ msgid "Default role" +#~ msgstr "Rôle par défaut" + +#~ msgid "user" +#~ msgstr "utilisateur" + +#~ msgid "No users" +#~ msgstr "Aucun utilisateur" + +#~ msgid "Custom" +#~ msgstr "Coutume" + +#~ msgid "View" +#~ msgstr "Voir" + +#~ msgid "Permissions for" +#~ msgstr "Autorisations pour" + +#~ msgid "No permissions assigned." +#~ msgstr "Aucune autorisation attribuée." + +#~ msgid "No roles found." +#~ msgstr "Aucun rôle trouvé." + +#~ msgid "About Roles & Permissions" +#~ msgstr "À propos des rôles et des autorisations" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "Les rôles sont des ensembles " +#~ "d'autorisations qui peuvent être attribuées" +#~ " aux utilisateurs. Les rôles système " +#~ "sont prédéfinis et ne peuvent pas " +#~ "être supprimés ou renommés, mais des " +#~ "rôles personnalisés peuvent être créés " +#~ "pour vos besoins spécifiques." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "Êtes-vous sûr de vouloir supprimer le rôle" + +#~ msgid "Delete Role" +#~ msgstr "Supprimer le rôle" + +#~ msgid "No description" +#~ msgstr "Pas de description" + +#~ msgid "Role Information" +#~ msgstr "Informations sur le rôle" + +#~ msgid "System Role" +#~ msgstr "Rôle système" + +#~ msgid "Custom Role" +#~ msgstr "Rôle personnalisé" + +#~ msgid "Total Permissions" +#~ msgstr "Autorisations totales" + +#~ msgid "Created" +#~ msgstr "Créé" + +#~ msgid "Users with this Role" +#~ msgstr "Utilisateurs avec ce rôle" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Aucun utilisateur affecté à ce rôle pour l'instant." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "Ce rôle n'a aucune autorisation attribuée." + +#~ msgid "Back to User" +#~ msgstr "Retour à l'utilisateur" + +#~ msgid "Manage Roles for" +#~ msgstr "Gérer les rôles pour" + +#~ msgid "Assign Roles" +#~ msgstr "Attribuer des rôles" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Sélectionnez les rôles que cet " +#~ "utilisateur doit avoir. Les utilisateurs " +#~ "héritent de toutes les autorisations des" +#~ " rôles qui leur sont attribués." + +#~ msgid "Update Roles" +#~ msgstr "Mettre à jour les rôles" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Autorisations effectives actuelles" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "" +#~ "Voici toutes les autorisations dont " +#~ "dispose actuellement l'utilisateur via ses " +#~ "rôles :" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "" +#~ "Aucune autorisation (attribuer des rôles " +#~ "pour accorder des autorisations)" + +#~ msgid "Create Webhook" +#~ msgstr "Créer un webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Modifier le webhook" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Configurer le webhook pour les intégrations" + +#~ msgid "Webhook URL" +#~ msgstr "URL du webhook" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "L'URL où les événements du webhook seront envoyés" + +#~ msgid "Events" +#~ msgstr "Événements" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Sélectionnez les événements qui doivent déclencher ce webhook" + +#~ msgid "HTTP Method" +#~ msgstr "Méthode HTTP" + +#~ msgid "Content Type" +#~ msgstr "Type de contenu" + +#~ msgid "Max Retries" +#~ msgstr "Nombre maximal de tentatives" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Délai de nouvelle tentative (secondes)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Délai d'expiration (secondes)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Régénérer le secret" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "Attention : La régénération du secret invalidera le secret actuel" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Gérer les intégrations de webhooks" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "Statistics" +#~ msgstr "Statistiques" + +#~ msgid "Total" +#~ msgstr "Total" + +#~ msgid "No webhooks configured" +#~ msgstr "Aucun webhook configuré" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Créez votre premier webhook" + +#~ msgid "Webhook details" +#~ msgstr "Détails du webhook" + +#~ msgid "Test" +#~ msgstr "Test" + +#~ msgid "Secret" +#~ msgstr "Secrète" + +#~ msgid "(truncated)" +#~ msgstr "(tronqué)" + +#~ msgid "Total Deliveries" +#~ msgstr "Livraisons totales" + +#~ msgid "Successful" +#~ msgstr "Réussi" + +#~ msgid "Last Delivery" +#~ msgstr "Dernière livraison" + +#~ msgid "Recent Deliveries" +#~ msgstr "Livraisons récentes" + +#~ msgid "Event" +#~ msgstr "Événement" + +#~ msgid "Attempt" +#~ msgstr "Tentative" + +#~ msgid "Response" +#~ msgstr "Réponse" + +#~ msgid "Time" +#~ msgstr "Temps" + +#~ msgid "Retrying" +#~ msgstr "Réessayer" + +#~ msgid "No deliveries yet" +#~ msgstr "Pas de livraisons pour l'instant" + +#~ msgid "Send a test webhook event?" +#~ msgstr "Envoyer un événement de webhook de test ?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "Test du webhook envoyé avec succès !" + +#~ msgid "Error:" +#~ msgstr "Erreur:" + +#~ msgid "Unknown error" +#~ msgstr "Erreur inconnue" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Erreur lors de l'envoi du webhook de test :" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Tableau de bord d'analyse" + +#~ msgid "Last 7 days" +#~ msgstr "7 derniers jours" + +#~ msgid "Last 30 days" +#~ msgstr "30 derniers jours" + +#~ msgid "Last 90 days" +#~ msgstr "90 derniers jours" + +#~ msgid "Last year" +#~ msgstr "L'année dernière" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Exporter au format JSON" + +#~ msgid "Export Charts" +#~ msgstr "Exporter au format CSV" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Indicateurs et informations clés sur votre suivi du temps" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Heures quotidiennes moyennes" + +#~ msgid "Regular" +#~ msgstr "Retour" + +#~ msgid "Overtime" +#~ msgstr "Temps" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Tendance des heures quotidiennes" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Facturable ou non facturable" + +#~ msgid "Weekly Trends" +#~ msgstr "Tendances hebdomadaires" + +#~ msgid "Hours Forecast" +#~ msgstr "heures avant" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Paiements au fil du temps" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Heures par heure de la journée" + +#~ msgid "Project Efficiency" +#~ msgstr "Efficacité du projet" + +#~ msgid "User Performance" +#~ msgstr "Performances des utilisateurs" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "Échec du chargement des graphiques. Veuillez réessayer." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "Échec de l'actualisation des graphiques. Veuillez réessayer." + +#~ msgid "Hour of Day" +#~ msgstr "Heure de la journée" + +#~ msgid "Revenue" +#~ msgstr "Revenu" + +#~ msgid "Forecast" +#~ msgstr "Réinitialiser" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "Exporter" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Indicateurs clés et informations exploitables" + +#~ msgid "vs previous period" +#~ msgstr "par rapport à la période précédente" + +#~ msgid "of total" +#~ msgstr "du total" + +#~ msgid "Potential Revenue" +#~ msgstr "Revenu potentiel" + +#~ msgid "Avg rate:" +#~ msgstr "Tarif moyen :" + +#~ msgid "Trend" +#~ msgstr "S'orienter" + +#~ msgid "active projects" +#~ msgstr "projets actifs" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Informations et recommandations" + +#~ msgid "Cumulative" +#~ msgstr "Cumulatif" + +#~ msgid "Billable Distribution" +#~ msgstr "Distribution facturable" + +#~ msgid "Task Status Overview" +#~ msgstr "Présentation de l'état de la tâche" + +#~ msgid "Tasks Completed" +#~ msgstr "Tâches terminées" + +#~ msgid "In Progress" +#~ msgstr "En cours" + +#~ msgid "To Do" +#~ msgstr "Faire" + +#~ msgid "Revenue by Project" +#~ msgstr "Revenus par projet" + +#~ msgid "Payments Over Time" +#~ msgstr "Paiements au fil du temps" + +#~ msgid "Payment Methods" +#~ msgstr "Méthodes de paiement" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Revenus vs paiements" + +#~ msgid "Collection Rate" +#~ msgstr "Taux de recouvrement" + +#~ msgid "Project Completion Rate" +#~ msgstr "Taux d'achèvement du projet" + +#~ msgid "Billable" +#~ msgstr "Facturable" + +#~ msgid "Non-Billable" +#~ msgstr "Non facturable" + +#~ msgid "Completed" +#~ msgstr "Complété" + +#~ msgid "Cancelled" +#~ msgstr "Annulé" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Taux d'achèvement (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Présentation des informations mobiles" + +#~ msgid "Daily Avg" +#~ msgstr "Moyenne quotidienne" + +#~ msgid "Daily Hours" +#~ msgstr "Horaires quotidiens" + +#~ msgid "Top Projects" +#~ msgstr "Meilleurs projets" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "Saisie du temps" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "heures" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "Approuver" + +#~ msgid "Reject" +#~ msgstr "Rejeter" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "Approuvé par" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "Publier un commentaire" + +#~ msgid "Approval comment" +#~ msgstr "Publier un commentaire" + +#~ msgid "Rejection reason" +#~ msgstr "Motif du rejet" + +#~ msgid "Track who changed what and when" +#~ msgstr "Suivez qui a changé quoi et quand" + +#~ msgid "Filters" +#~ msgstr "Filtres" + +#~ msgid "Entity Type" +#~ msgstr "Type d'entité" + +#~ msgid "All Types" +#~ msgstr "Tous types" + +#~ msgid "Entity ID" +#~ msgstr "ID d'entité" + +#~ msgid "All Users" +#~ msgstr "Tous les utilisateurs" + +#~ msgid "Action" +#~ msgstr "Action" + +#~ msgid "All Actions" +#~ msgstr "Toutes les actions" + +#~ msgid "Updated" +#~ msgstr "Mis à jour" + +#~ msgid "Deleted" +#~ msgstr "Supprimé" + +#~ msgid "Time Range" +#~ msgstr "Plage de temps" + +#~ msgid "Filter" +#~ msgstr "Filtre" + +#~ msgid "Timestamp" +#~ msgstr "Horodatage" + +#~ msgid "Entity" +#~ msgstr "Entité" + +#~ msgid "Field" +#~ msgstr "Champ" + +#~ msgid "Change" +#~ msgstr "Changement" + +#~ msgid "Reason" +#~ msgstr "Raison" + +#~ msgid "Change Information" +#~ msgstr "Modifier les informations" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "Demander des informations" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "Sécurité" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (authentification d'entreprise)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "Le mot de passe doit comporter au moins 8 caractères" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "Mot de passe du portail" + +#~ msgid "Reset your password" +#~ msgstr "Définissez votre mot de passe" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "Aucun nom d'utilisateur ni e-mail" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "Envoyer un e-mail de test" + +#~ msgid "Back to sign in" +#~ msgstr "Retour à l'administrateur" + +#~ msgid "Login" +#~ msgstr "Se connecter" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Suivez le temps. Restez organisé." + +#~ msgid "Sign in to your account" +#~ msgstr "Connectez-vous à votre compte" + +#~ msgid "Demo credentials" +#~ msgstr "Détails de l'article" + +#~ msgid "Forgot your password?" +#~ msgstr "Définissez votre mot de passe" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "Méthode d'authentification" + +#~ msgid "Sign in" +#~ msgstr "Se connecter" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "" +#~ "Astuce : saisissez un nouveau nom " +#~ "d'utilisateur pour créer votre compte." + +#~ msgid "Or continue with" +#~ msgstr "Ou continuez avec" + +#~ msgid "Single Sign-On" +#~ msgstr "Authentification unique" + +#~ msgid "Edit Profile" +#~ msgstr "Modifier le profil" + +#~ msgid "Member Since" +#~ msgstr "Membre depuis" + +#~ msgid "Reset password" +#~ msgstr "Définir le mot de passe" + +#~ msgid "Choose a new password" +#~ msgstr "Définir le mot de passe" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Définir un mot de passe pour votre compte portail client" + +#~ msgid "New password" +#~ msgstr "Définir le mot de passe" + +#~ msgid "At least 8 characters" +#~ msgstr "Le mot de passe doit comporter au moins 8 caractères" + +#~ msgid "Confirm password" +#~ msgstr "Confirmez le mot de passe" + +#~ msgid "Repeat your new password" +#~ msgstr "Définissez votre mot de passe" + +#~ msgid "Update password" +#~ msgstr "Définir le mot de passe" + +#~ msgid "Enter authentication code" +#~ msgstr "Méthode d'authentification" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "Code" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "L'accès au portail client n'est pas activé pour votre compte." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "Désactivé" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Code généré" + +#~ msgid "Enable 2FA" +#~ msgstr "Activé" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Alertes et prévisions budgétaires" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "Surveiller les budgets des projets et prévoir l’achèvement" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Alertes non acquittées" + +#~ msgid "Critical Alerts" +#~ msgstr "Alertes critiques" + +#~ msgid "Projects with Budgets" +#~ msgstr "Projets avec budgets" + +#~ msgid "Warning Alerts" +#~ msgstr "Alertes d'avertissement" + +#~ msgid "Active Alerts" +#~ msgstr "Alertes actives" + +#~ msgid "Acknowledge" +#~ msgstr "Reconnaître" + +#~ msgid "Project Budget Status" +#~ msgstr "Statut du budget du projet" + +#~ msgid "Budget" +#~ msgstr "Budget" + +#~ msgid "Consumed" +#~ msgstr "Consommé" + +#~ msgid "Remaining" +#~ msgstr "Restant" + +#~ msgid "Progress" +#~ msgstr "Progrès" + +#~ msgid "over" +#~ msgstr "sur" + +#~ msgid "Over Budget" +#~ msgstr "Au-dessus du budget" + +#~ msgid "Critical" +#~ msgstr "Critique" + +#~ msgid "Healthy" +#~ msgstr "En bonne santé" + +#~ msgid "No projects with budgets found" +#~ msgstr "Aucun projet avec budget trouvé" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Alerte reconnue avec succès" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "Échec de l'accusé de réception de l'alerte" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Analyse et prévisions budgétaires" + +#~ msgid "Back to Dashboard" +#~ msgstr "Retour au tableau de bord" + +#~ msgid "View Project" +#~ msgstr "Voir le projet" + +#~ msgid "Total Budget" +#~ msgstr "Budget total" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Analyse du taux de combustion" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Taux de combustion quotidien" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Taux de combustion hebdomadaire" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Taux de combustion mensuel" + +#~ msgid "Period Total" +#~ msgstr "Total de la période" + +#~ msgid "Based on last" +#~ msgstr "Basé sur le dernier" + +#~ msgid "days" +#~ msgstr "jours" + +#~ msgid "No burn rate data available" +#~ msgstr "Aucune donnée sur le taux de combustion disponible" + +#~ msgid "Completion Estimate" +#~ msgstr "Estimation d’achèvement" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Date d'achèvement estimée" + +#~ msgid "days remaining" +#~ msgstr "jours restants" + +#~ msgid "Confidence Level" +#~ msgstr "Niveau de confiance" + +#~ msgid "No completion estimate available" +#~ msgstr "Aucune estimation d'achèvement disponible" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Analyse des tendances des coûts" + +#~ msgid "Average" +#~ msgstr "Moyenne" + +#~ msgid "Resource Allocation" +#~ msgstr "Allocation des ressources" + +#~ msgid "Total Cost" +#~ msgstr "Coût total" + +#~ msgid "Hourly Rate" +#~ msgstr "Taux horaire" + +#~ msgid "Team Member" +#~ msgstr "Membre de l'équipe" + +#~ msgid "Cost" +#~ msgstr "Coût" + +#~ msgid "Hours %" +#~ msgstr "Heures %" + +#~ msgid "Cost %" +#~ msgstr "Coût %" + +#~ msgid "Entries" +#~ msgstr "Entrées" + +#~ msgid "Date & Time" +#~ msgstr "Date et heure" + +#~ msgid "Location" +#~ msgstr "Emplacement" + +#~ msgid "Reminder" +#~ msgstr "Rappel" + +#~ msgid "minutes before" +#~ msgstr "minutes avant" + +#~ msgid "hours before" +#~ msgstr "heures avant" + +#~ msgid "days before" +#~ msgstr "jours avant" + +#~ msgid "Recurring" +#~ msgstr "Récurrent" + +#~ msgid "Until" +#~ msgstr "Jusqu'à" + +#~ msgid "Last Updated" +#~ msgstr "Dernière mise à jour" + +#~ msgid "Back to Calendar" +#~ msgstr "Retour au calendrier" + +#~ msgid "Delete Event" +#~ msgstr "Supprimer l'événement" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Êtes-vous sûr de vouloir supprimer " +#~ "cet événement ? Cette action ne " +#~ "peut pas être annulée." + +#~ msgid "Edit Event" +#~ msgstr "Modifier l'événement" + +#~ msgid "New Event" +#~ msgstr "Nouvel événement" + +#~ msgid "Title" +#~ msgstr "Titre" + +#~ msgid "Start Date" +#~ msgstr "Date de début" + +#~ msgid "Start Time" +#~ msgstr "Heure de début" + +#~ msgid "End Date" +#~ msgstr "Date de fin" + +#~ msgid "End Time" +#~ msgstr "Heure de fin" + +#~ msgid "All Day Event" +#~ msgstr "Événement toute la journée" + +#~ msgid "Event Type" +#~ msgstr "Type d'événement" + +#~ msgid "Meeting" +#~ msgstr "Réunion" + +#~ msgid "Appointment" +#~ msgstr "Rendez-vous" + +#~ msgid "Deadline" +#~ msgstr "Date limite" + +#~ msgid "-- None --" +#~ msgstr "-- Aucun --" + +#~ msgid "No reminder" +#~ msgstr "Aucun rappel" + +#~ msgid "5 minutes before" +#~ msgstr "5 minutes avant" + +#~ msgid "15 minutes before" +#~ msgstr "15 minutes avant" + +#~ msgid "30 minutes before" +#~ msgstr "30 minutes avant" + +#~ msgid "1 hour before" +#~ msgstr "1 heure avant" + +#~ msgid "1 day before" +#~ msgstr "1 jour avant" + +#~ msgid "Color" +#~ msgstr "Couleur" + +#~ msgid "Choose a color for this event" +#~ msgstr "Choisissez une couleur pour cet événement" + +#~ msgid "Private Event" +#~ msgstr "Événement privé" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Les événements privés ne sont visibles que par vous" + +#~ msgid "Recurring Event" +#~ msgstr "Événement récurrent" + +#~ msgid "This is a recurring event" +#~ msgstr "C'est un événement récurrent" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Modèle de récurrence" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Utilisez le format RRULE (par exemple, FREQ=WEEKLY;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Date de fin de récurrence" + +#~ msgid "Update Event" +#~ msgstr "Événement de mise à jour" + +#~ msgid "Create Event" +#~ msgstr "Créer un événement" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Affichez et gérez vos événements, tâches et entrées de temps" + +#~ msgid "Day" +#~ msgstr "Jour" + +#~ msgid "Week" +#~ msgstr "Semaine" + +#~ msgid "Month" +#~ msgstr "Mois" + +#~ msgid "Today" +#~ msgstr "Aujourd'hui" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "Chargement du calendrier..." + +#~ msgid "Event Details" +#~ msgstr "Détails de l'événement" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "Modifier la note du client" + +#~ msgid "Back to Client" +#~ msgstr "Retour au client" + +#~ msgid "Client:" +#~ msgstr "Client:" + +#~ msgid "Created on" +#~ msgstr "Créé le" + +#~ msgid "Last edited on" +#~ msgstr "Dernière modification le" + +#~ msgid "Note Content" +#~ msgstr "Contenu de la note" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Note interne visible uniquement par votre équipe." + +#~ msgid "Mark as important" +#~ msgstr "Marquer comme important" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "Portail client" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "Afficher les détails" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "En attente" + +#~ msgid "Approved" +#~ msgstr "Approuvé" + +#~ msgid "Rejected" +#~ msgstr "Rejeté" + +#~ msgid "All" +#~ msgstr "Tous" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "Afficher les détails" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "Statut d'approbation" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Approbation demandée" + +#~ msgid "An approval was updated." +#~ msgstr "Aucun projet n'a été mis à jour" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "Bienvenue, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "Personnaliser les raccourcis" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "Statistiques" + +#~ msgid "Pending actions" +#~ msgstr "Sections d'administration" + +#~ msgid "Recent invoices" +#~ msgstr "Factures récentes" + +#~ msgid "Recent time entries" +#~ msgstr "Entrées de temps récentes" + +#~ msgid "Select at least one widget." +#~ msgstr "Sélectionnez un client..." + +#~ msgid "Failed to save." +#~ msgstr "Échec de l'arrêt du chronomètre" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "Aller au tableau de bord" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "Retourner" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "Détails de la facture" + +#~ msgid "Issue Date" +#~ msgstr "Date d'émission" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "Cette facture est en retard de %(days)d jours." + +#~ msgid "Invoice Items" +#~ msgstr "Postes de facture" + +#~ msgid "Quantity" +#~ msgstr "Quantité" + +#~ msgid "Unit Price" +#~ msgstr "Prix ​​unitaire" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "Retour aux factures" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "Factures pour %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "Non rémunéré" + +#~ msgid "Overdue" +#~ msgstr "En retard" + +#~ msgid "Amount" +#~ msgstr "Montant" + +#~ msgid "days overdue" +#~ msgstr "jours de retard" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "Priorité" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "Attribué à" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "Ouvrir" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "Connexion au portail client" + +#~ msgid "View your projects and invoices" +#~ msgstr "Consultez vos projets et factures" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Connectez-vous au portail client" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "Entrez vos identifiants de portail pour" +#~ " accéder à vos projets et factures" + +#~ msgid "portal_username" +#~ msgstr "nom_utilisateur_portail" + +#~ msgid "Enter your password" +#~ msgstr "Entrez votre mot de passe" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "Faible" + +#~ msgid "Medium" +#~ msgstr "Moyen" + +#~ msgid "High" +#~ msgstr "Haut" + +#~ msgid "Urgent" +#~ msgstr "Urgent" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "Commentaires" + +#~ msgid "Add Comment" +#~ msgstr "Ajouter un commentaire" + +#~ msgid "Your Comment" +#~ msgstr "Votre commentaire" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "Publier un commentaire" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "Retour aux projets" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "Projets pour %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "Détails du devis" + +#~ msgid "Valid Until" +#~ msgstr "Valable jusqu'au" + +#~ msgid "This quote has expired." +#~ msgstr "Ce devis est expiré." + +#~ msgid "Quote Items" +#~ msgstr "Articles de devis" + +#~ msgid "SKU" +#~ msgstr "UGS" + +#~ msgid "Terms & Conditions" +#~ msgstr "Conditions générales" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "Accepter le devis" + +#~ msgid "Reject Quote" +#~ msgstr "Rejeter le devis" + +#~ msgid "Back to Quotes" +#~ msgstr "Retour aux citations" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "Devis pour %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "Expiré" + +#~ msgid "No quotes found." +#~ msgstr "Aucune citation trouvée." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "Code du projet" + +#~ msgid "Est. / Budget" +#~ msgstr "Au-dessus du budget" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "Résumé" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "Montant total" + +#~ msgid "No tasks yet." +#~ msgstr "Aucune tâche sélectionnée" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Aucune activité au cours des 30 derniers jours." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "Définir le mot de passe" + +#~ msgid "Set your password to get started" +#~ msgstr "Définissez votre mot de passe pour commencer" + +#~ msgid "Set Your Password" +#~ msgstr "Définissez votre mot de passe" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Définir un mot de passe pour votre compte portail client" + +#~ msgid "Confirm Password" +#~ msgstr "Confirmez le mot de passe" + +#~ msgid "Confirm your password" +#~ msgstr "Confirmez votre mot de passe" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "Entrées de temps pour les projets %(client_name)s" + +#~ msgid "All Projects" +#~ msgstr "Tous les projets" + +#~ msgid "From Date" +#~ msgstr "À partir de la date" + +#~ msgid "To Date" +#~ msgstr "À ce jour" + +#~ msgid "Total entries" +#~ msgstr "Total des entrées" + +#~ msgid "Total hours" +#~ msgstr "Heures totales" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "Factures récentes" + +#~ msgid "View All" +#~ msgstr "Tout afficher" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "Total des factures" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "Entrées de temps récentes" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "Exporter au format CSV" + +#~ msgid "Create Client" +#~ msgstr "Créer un client" + +#~ msgid "Back to Clients" +#~ msgstr "Retour aux Clients" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" +#~ "Ajoutez un nouveau client pour gérer " +#~ "les projets associés et la facturation." + +#~ msgid "Enter client name" +#~ msgstr "Entrez le nom du client" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Taux horaire par défaut" + +#~ msgid "e.g. 75.00" +#~ msgstr "par ex. 75.00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Ce tarif sera automatiquement renseigné " +#~ "lors de la création de projets " +#~ "pour ce client" + +#~ msgid "Supports Markdown" +#~ msgstr "Prend en charge la démarque" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Brève description de la portée du client ou du projet" + +#~ msgid "Contact Person" +#~ msgstr "Personne de contact" + +#~ msgid "Primary contact name" +#~ msgstr "Nom du contact principal" + +#~ msgid "contact@client.com" +#~ msgstr "contact@client.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Heures mensuelles prépayées" + +#~ msgid "e.g. 50" +#~ msgstr "par ex. 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "Laissez vide si ce client n’a pas d’allocation prépayée." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Jour de réinitialisation prépayé" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Jour du mois de réinitialisation des heures prépayées (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Adresse du client" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "Choisissez un nom clair et descriptif pour l'organisation cliente." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Définissez le taux horaire standard pour" +#~ " ce client. Celui-ci sera " +#~ "automatiquement renseigné lors de la " +#~ "création de nouveaux projets." + +#~ msgid "Contact Information" +#~ msgstr "Coordonnées" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "" +#~ "Ajoutez des coordonnées pour faciliter " +#~ "la communication et la tenue de " +#~ "dossiers." + +#~ msgid "Prepaid Hours" +#~ msgstr "Heures prépayées" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Configurez les heures mensuelles incluses " +#~ "et le jour de réinitialisation si " +#~ "ce client dispose d'un forfait " +#~ "forfaitaire ou prépayé." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "" +#~ "Fournissez le contexte de la relation" +#~ " client ou des types de projets " +#~ "typiques." + +#~ msgid "Edit Client" +#~ msgstr "Modifier le client" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Activez l'accès au portail pour ce " +#~ "client. Les clients peuvent se connecter" +#~ " avec leurs propres informations " +#~ "d'identification pour afficher les projets," +#~ " les factures et les entrées de " +#~ "temps." + +#~ msgid "Enable Client Portal" +#~ msgstr "Activer le portail client" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "Nom d'utilisateur du portail" + +#~ msgid "Unique username for portal login" +#~ msgstr "Nom d'utilisateur unique pour la connexion au portail" + +#~ msgid "Portal Password" +#~ msgstr "Mot de passe du portail" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "Laisser vide pour conserver le mot de passe actuel" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "Définissez un nouveau mot de passe ou laissez vide pour rester à jour" + +#~ msgid "Current portal username" +#~ msgstr "Nom d'utilisateur actuel du portail" + +#~ msgid "Update Client" +#~ msgstr "Mettre à jour le client" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Envoyer un e-mail de configuration du mot de passe" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Envoyez un e-mail à %(email)s avec " +#~ "un lien pour définir son mot de" +#~ " passe de portail." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "Une adresse e-mail est requise pour " +#~ "envoyer un e-mail de configuration du" +#~ " mot de passe. Veuillez définir " +#~ "l'adresse e-mail du client ci-dessus." + +#~ msgid "Client Statistics" +#~ msgstr "Statistiques clients" + +#~ msgid "Est. Total Cost" +#~ msgstr "HNE. Coût total" + +#~ msgid "Filter Clients" +#~ msgstr "Filtrer les clients" + +#~ msgid "Toggle Filters" +#~ msgstr "Basculer les filtres" + +#~ msgid "Hide Filters" +#~ msgstr "Masquer les filtres" + +#~ msgid "Show Filters" +#~ msgstr "Afficher les filtres" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "Aucune entrée de temps non facturé trouvée pour ce projet." + +#~ msgid "No unbilled time" +#~ msgstr "Saisies de temps non facturées" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Postes de facture" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "Marquer le client comme inactif ?" + +#~ msgid "Change Client Status" +#~ msgstr "Changer le statut du client" + +#~ msgid "Mark Inactive" +#~ msgstr "Marquer comme inactif" + +#~ msgid "Activate client?" +#~ msgstr "Activer le client ?" + +#~ msgid "Activate Client" +#~ msgstr "Activer le client" + +#~ msgid "Delete Client" +#~ msgstr "Supprimer le client" + +#~ msgid "Client details and associated projects." +#~ msgstr "Projets totaux et actifs" + +#~ msgid "Manage" +#~ msgstr "Gérer" + +#~ msgid "Primary" +#~ msgstr "Primaire" + +#~ msgid "more contact(s)" +#~ msgstr "plus de contact(s)" + +#~ msgid "No contacts yet" +#~ msgstr "Aucun contact pour l'instant" + +#~ msgid "Add Contact" +#~ msgstr "Ajouter un contact" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Informations de contact héritées" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "Le forfait comprend %(hours)s heures par" +#~ " cycle. Se réinitialise le jour " +#~ "%(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "Début du cycle en cours" + +#~ msgid "Remaining hours" +#~ msgstr "Heures restantes" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "Consumed this cycle" +#~ msgstr "J'ai consommé ce cycle" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "Client visible" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "Archivé" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "Notes internes" + +#~ msgid "Add Note" +#~ msgstr "Ajouter une note" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Ajouter une note interne sur ce client..." + +#~ msgid "Save Note" +#~ msgstr "Enregistrer la note" + +#~ msgid "edited" +#~ msgstr "édité" + +#~ msgid "Important" +#~ msgstr "Important" + +#~ msgid "Unmark" +#~ msgstr "Décocher" + +#~ msgid "Mark Important" +#~ msgstr "Marquer comme important" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Aucune note pour l'instant. Ajoutez une" +#~ " note pour garder une trace des " +#~ "informations importantes sur ce client." + +#~ msgid "Estimated total" +#~ msgstr "Valeur estimée" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Créer une facture" + +#~ msgid "Create invoice" +#~ msgstr "Créer une facture" + +#~ msgid "Could not create invoice." +#~ msgstr "Créer une facture" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer cette note ?" + +#~ msgid "Delete Note" +#~ msgstr "Supprimer la note" + +#~ msgid "Edited on" +#~ msgstr "Edité le" + +#~ msgid "Reply" +#~ msgstr "Répondre" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "Écrivez votre réponse..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Partagez vos réflexions, mises à jour ou questions..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "" +#~ "Vous pouvez utiliser des sauts de " +#~ "ligne pour formater votre commentaire." + +#~ msgid "Add Image" +#~ msgstr "Ajouter une image" + +#~ msgid "No comments yet" +#~ msgstr "Pas encore de commentaires" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "Démarrez la conversation en ajoutant le premier commentaire." + +#~ msgid "Add First Comment" +#~ msgstr "Ajouter un premier commentaire" + +#~ msgid "Edit Comment" +#~ msgstr "Modifier le commentaire" + +#~ msgid "Back" +#~ msgstr "Dos" + +#~ msgid "Editing comment on:" +#~ msgstr "Modification du commentaire sur :" + +#~ msgid "Originally posted on" +#~ msgstr "Initialement publié sur" + +#~ msgid "Comment Content" +#~ msgstr "Contenu du commentaire" + +#~ msgid "All Activities" +#~ msgstr "Toutes les activités" + +#~ msgid "Time Templates" +#~ msgstr "Modèles de temps" + +#~ msgid "No recent activity" +#~ msgstr "Aucune activité récente" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "L'activité apparaîtra ici pendant que vous travaillez" + +#~ msgid "Load More" +#~ msgstr "Charger plus" + +#~ msgid "Failed to load activities" +#~ msgstr "Échec du chargement des activités" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "Sélectionnez un client..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "Fait" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "Centre d'aide TimeTracker" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "Maison" + +#~ msgid "Pagination" +#~ msgstr "Pagination de mes tâches" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "Appel" + +#~ msgid "Message" +#~ msgstr "Message" + +#~ msgid "Direction" +#~ msgstr "Direction" + +#~ msgid "Outbound" +#~ msgstr "Sortant" + +#~ msgid "Inbound" +#~ msgstr "Entrant" + +#~ msgid "Subject" +#~ msgstr "Sujet" + +#~ msgid "Scheduled" +#~ msgstr "Programmé" + +#~ msgid "Follow-up Date" +#~ msgstr "Date de suivi" + +#~ msgid "Content/Notes" +#~ msgstr "Contenu/Remarques" + +#~ msgid "Save Communication" +#~ msgstr "Enregistrer la communication" + +#~ msgid "First Name" +#~ msgstr "Prénom" + +#~ msgid "Last Name" +#~ msgstr "Nom de famille" + +#~ msgid "Mobile" +#~ msgstr "Mobile" + +#~ msgid "Department" +#~ msgstr "Département" + +#~ msgid "Contact" +#~ msgstr "Contact" + +#~ msgid "Billing" +#~ msgstr "Facturation" + +#~ msgid "Technical" +#~ msgstr "Technique" + +#~ msgid "Set as primary contact" +#~ msgstr "Définir comme contact principal" + +#~ msgid "Tags" +#~ msgstr "Balises" + +#~ msgid "Save Contact" +#~ msgstr "Enregistrer le contact" + +#~ msgid "Set Primary" +#~ msgstr "Définir comme principal" + +#~ msgid "No contacts found" +#~ msgstr "Aucun contact trouvé" + +#~ msgid "Add First Contact" +#~ msgstr "Ajouter un premier contact" + +#~ msgid "Primary Contact" +#~ msgstr "Contact principal" + +#~ msgid "Communication History" +#~ msgstr "Historique des communications" + +#~ msgid "Add Communication" +#~ msgstr "Ajouter une communication" + +#~ msgid "No communications recorded" +#~ msgstr "Aucune communication enregistrée" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "Activer" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "Nom de l'offre" + +#~ msgid "Select Client" +#~ msgstr "Sélectionnez un client" + +#~ msgid "Select Contact" +#~ msgstr "Sélectionnez Contact" + +#~ msgid "Stage" +#~ msgstr "Scène" + +#~ msgid "Deal Value" +#~ msgstr "Valeur de la transaction" + +#~ msgid "Win Probability" +#~ msgstr "Probabilité de gagner" + +#~ msgid "Expected Close Date" +#~ msgstr "Date de clôture prévue" + +#~ msgid "Related Quote" +#~ msgstr "Citation connexe" + +#~ msgid "Select Quote" +#~ msgstr "Sélectionnez un devis" + +#~ msgid "Save Deal" +#~ msgstr "Enregistrer l'offre" + +#~ msgid "Won" +#~ msgstr "Gagné" + +#~ msgid "Lost" +#~ msgstr "Perdu" + +#~ msgid "All Stages" +#~ msgstr "Toutes les étapes" + +#~ msgid "Value" +#~ msgstr "Valeur" + +#~ msgid "Probability" +#~ msgstr "Probabilité" + +#~ msgid "Expected Close" +#~ msgstr "Clôture prévue" + +#~ msgid "No deals found" +#~ msgstr "Aucune offre trouvée" + +#~ msgid "Create First Deal" +#~ msgstr "Créer la première transaction" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "Projet connexe" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "Historique des buts" + +#~ msgid "View full history" +#~ msgstr "Afficher tous les détails" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "Vous avez été mentionné" + +#~ msgid "View Task & Reply" +#~ msgstr "Afficher la tâche et la réponse" + +#~ msgid "Invoice" +#~ msgstr "Facture" + +#~ msgid "Invoice Overdue" +#~ msgstr "Facture en retard" + +#~ msgid "View Invoice" +#~ msgstr "Afficher la facture" + +#~ msgid "Quote" +#~ msgstr "Citation" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Approbation du devis rejetée" + +#~ msgid "View Quote" +#~ msgstr "Voir le devis" + +#~ msgid "Approval Requested" +#~ msgstr "Approbation demandée" + +#~ msgid "Review Quote" +#~ msgstr "Examiner le devis" + +#~ msgid "Quote Approved" +#~ msgstr "Devis approuvé" + +#~ msgid "Quote Expired" +#~ msgstr "Devis expiré" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "Devis expirant bientôt" + +#~ msgid "Quote Sent" +#~ msgstr "Devis envoyé" + +#~ msgid "Task Assignment" +#~ msgstr "Affectation des tâches" + +#~ msgid "View Task" +#~ msgstr "Afficher la tâche" + +#~ msgid "Test Details" +#~ msgstr "Détails du test" + +#~ msgid "Your Weekly Summary" +#~ msgstr "Votre résumé hebdomadaire" + +#~ msgid "400 Bad Request" +#~ msgstr "400 requêtes incorrectes" + +#~ msgid "Invalid Request" +#~ msgstr "Demande invalide" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "La demande que vous avez faite " +#~ "n'est pas valide ou contient des " +#~ "erreurs. Cela pourrait être dû à :" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Données de formulaire manquantes ou invalides" + +#~ msgid "Malformed request parameters" +#~ msgstr "Paramètres de requête mal formés" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "" +#~ "Vous n'êtes pas autorisé à accéder " +#~ "à cette ressource. Cela pourrait être" +#~ " dû à :" + +#~ msgid "Insufficient privileges" +#~ msgstr "Privilèges insuffisants" + +#~ msgid "Not logged in" +#~ msgstr "Non connecté" + +#~ msgid "Resource access restrictions" +#~ msgstr "Restrictions d'accès aux ressources" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "" +#~ "Quelque chose s'est mal passé de " +#~ "notre côté. Veuillez réessayer plus " +#~ "tard." + +#~ msgid "Try Again" +#~ msgstr "Essayer à nouveau" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Une erreur s'est produite lors du traitement de votre demande." + +#~ msgid "Refresh Page" +#~ msgstr "Actualiser la page" + +#~ msgid "Go to Login" +#~ msgstr "Allez dans Connexion" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "par exemple, voyages, repas, fournitures de bureau" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "par exemple, VOYAGES, REPAS" + +#~ msgid "Brief description of this category..." +#~ msgstr "Brève description de cette catégorie..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "par exemple, avion fa, ustensiles fa" + +#~ msgid "e.g., 19.00" +#~ msgstr "par exemple, 19h00" + +#~ msgid "Category" +#~ msgstr "Catégorie" + +#~ msgid "Basic Information" +#~ msgstr "Informations de base" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "par exemple, vol pour Berlin" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Détails supplémentaires sur les dépenses..." + +#~ msgid "Select Category" +#~ msgstr "Catégorie" + +#~ msgid "Amount Details" +#~ msgstr "Détails du paiement" + +#~ msgid "Association" +#~ msgstr "Emplacement" + +#~ msgid "Payment Details" +#~ msgstr "Détails du paiement" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "par exemple, Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "Informations Complémentaires" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Numéro de reçu/facture" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "par exemple, INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "par exemple, conférence, réunion client, urgence" + +#~ msgid "Additional notes..." +#~ msgstr "Notes complémentaires..." + +#~ msgid "Options" +#~ msgstr "Facultatif" + +#~ msgid "Filter Expenses" +#~ msgstr "Filtrer les dépenses" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Supprimer les dépenses sélectionnées" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Modifier le statut des dépenses sélectionnées" + +#~ msgid "Associated With" +#~ msgstr "Associé à" + +#~ msgid "Reject Expense" +#~ msgstr "Rejeter la dépense" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Expliquez pourquoi cette dépense est rejetée..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "Etes-vous sûr de vouloir supprimer cette dépense ?" + +#~ msgid "Delete Expense" +#~ msgstr "Supprimer une dépense" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "Importer/Exporter des données" + +#~ msgid "Import/Export" +#~ msgstr "Importer/Exporter" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Importez des données à partir d'autres" +#~ " trackers de temps ou exportez vos" +#~ " données pour la conformité et les" +#~ " sauvegardes du RGPD" + +#~ msgid "Import Data" +#~ msgstr "Importer des données" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Importer des entrées de temps à partir d'un fichier CSV" + +#~ msgid "Choose CSV File" +#~ msgstr "Choisissez un fichier CSV" + +#~ msgid "Download Template" +#~ msgstr "Télécharger le modèle" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Importer depuis Toggl Track" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Importer les entrées de temps depuis Toggl Track" + +#~ msgid "Import from Toggl" +#~ msgstr "Importer depuis Toggl" + +#~ msgid "Import from Harvest" +#~ msgstr "Importer depuis la récolte" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Importer les entrées de temps depuis Harvest" + +#~ msgid "Restore from Backup" +#~ msgstr "Restaurer à partir d'une sauvegarde" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "Historique d'importation" + +#~ msgid "Export Data" +#~ msgstr "Exporter des données" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Exportation complète des données (RGPD)" + +#~ msgid "Export all your personal data" +#~ msgstr "Exportez toutes vos données personnelles" + +#~ msgid "Export as JSON" +#~ msgstr "Exporter au format JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "Exporter au format ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "Exportation filtrée" + +#~ msgid "Export specific data with filters" +#~ msgstr "Exporter des données spécifiques avec des filtres" + +#~ msgid "Export with Filters" +#~ msgstr "Exporter avec des filtres" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "Créer une sauvegarde complète de la base de données" + +#~ msgid "Export History" +#~ msgstr "Historique des exportations" + +#~ msgid "API Token" +#~ msgstr "Jeton API" + +#~ msgid "Workspace ID" +#~ msgstr "ID de l'espace de travail" + +#~ msgid "Import" +#~ msgstr "Importer" + +#~ msgid "Account ID" +#~ msgstr "Identifiant du compte" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "Intégration du temps" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "L'année dernière" + +#~ msgid "Last status" +#~ msgstr "Statut de la mise à jour" + +#~ msgid "Credentials" +#~ msgstr "Détails" + +#~ msgid "Last error" +#~ msgstr "L'année dernière" + +#~ msgid "Partial" +#~ msgstr "Partiel" + +#~ msgid "Needs refresh" +#~ msgstr "Rafraîchir" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "Créer un jeton API" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "Créer un jeton API" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "Laisser vide pour rester à jour" + +#~ msgid "Enter API secret" +#~ msgstr "Régénérer le secret" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "Article en stock" + +#~ msgid "Select Item" +#~ msgstr "Sélectionner un article" + +#~ msgid "Warehouse" +#~ msgstr "Entrepôt" + +#~ msgid "Select Warehouse" +#~ msgstr "Sélectionnez un entrepôt" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Quantité d'ajustement" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Utilisez des valeurs positives pour " +#~ "augmenter le stock, des valeurs " +#~ "négatives pour diminuer" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "par exemple, correction du décompte physique, dommages, objets trouvés" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Détails supplémentaires sur cet ajustement" + +#~ msgid "Record Adjustment" +#~ msgstr "Ajustement d'enregistrement" + +#~ msgid "All Warehouses" +#~ msgstr "Tous les entrepôts" + +#~ msgid "All Items" +#~ msgstr "Tous les articles" + +#~ msgid "Date From" +#~ msgstr "Dater de" + +#~ msgid "Date To" +#~ msgstr "Date de" + +#~ msgid "Item" +#~ msgstr "Article" + +#~ msgid "No adjustments found." +#~ msgstr "Aucun ajustement trouvé." + +#~ msgid "On Hand" +#~ msgstr "À portée de main" + +#~ msgid "Reorder Point" +#~ msgstr "Point de commande" + +#~ msgid "Shortfall" +#~ msgstr "Manque à gagner" + +#~ msgid "Reorder Qty" +#~ msgstr "Quantité de commande" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "" +#~ "Aucune alerte de stock faible. Tous " +#~ "les articles sont au-dessus du " +#~ "point de commande." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "" +#~ "Utilisez des valeurs positives pour les" +#~ " ajouts, négatives pour les suppressions" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "Type de mouvement" + +#~ msgid "Return" +#~ msgstr "Retour" + +#~ msgid "Waste" +#~ msgstr "Déchets" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "par exemple, correction du comptage physique" + +#~ msgid "Record Movement" +#~ msgstr "Mouvement d'enregistrement" + +#~ msgid "Reference Type" +#~ msgstr "Type de référence" + +#~ msgid "Manual" +#~ msgstr "Manuel" + +#~ msgid "Unit Cost" +#~ msgstr "Coût unitaire" + +#~ msgid "Reference" +#~ msgstr "Référence" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "Aucun mouvement de stock trouvé." + +#~ msgid "Supplier" +#~ msgstr "Fournisseur" + +#~ msgid "Select Supplier" +#~ msgstr "Sélectionnez le fournisseur" + +#~ msgid "Order Date" +#~ msgstr "Date de commande" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Date de livraison prévue" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Notes visibles par le fournisseur" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Notes internes (non visibles pour le fournisseur)" + +#~ msgid "Items" +#~ msgstr "Articles" + +#~ msgid "Add Item" +#~ msgstr "Ajouter un article" + +#~ msgid "Qty" +#~ msgstr "Qté" + +#~ msgid "Supplier SKU" +#~ msgstr "UGS du fournisseur" + +#~ msgid "Create Purchase Order" +#~ msgstr "Créer un bon de commande" + +#~ msgid "Draft" +#~ msgstr "Brouillon" + +#~ msgid "Sent" +#~ msgstr "Envoyé" + +#~ msgid "Confirmed" +#~ msgstr "Confirmé" + +#~ msgid "Received" +#~ msgstr "Reçu" + +#~ msgid "All Suppliers" +#~ msgstr "Tous les fournisseurs" + +#~ msgid "PO Number" +#~ msgstr "Numéro de bon de commande" + +#~ msgid "Expected Delivery" +#~ msgstr "Livraison prévue" + +#~ msgid "No purchase orders found." +#~ msgstr "Aucun bon de commande trouvé." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "Êtes-vous sûr de vouloir annuler ce bon de commande ?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer ce bon de commande ?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Détails du bon de commande" + +#~ msgid "Received Date" +#~ msgstr "Date de réception" + +#~ msgid "Quantity Ordered" +#~ msgstr "Quantité commandée" + +#~ msgid "Quantity Received" +#~ msgstr "Quantité reçue" + +#~ msgid "Line Total" +#~ msgstr "Total de ligne" + +#~ msgid "Shipping" +#~ msgstr "Expédition" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Recevoir le bon de commande" + +#~ msgid "Mark as Received" +#~ msgstr "Marquer comme reçu" + +#~ msgid "No items in this purchase order." +#~ msgstr "Aucun article dans ce bon de commande." + +#~ msgid "Total Items" +#~ msgstr "Total des articles" + +#~ msgid "Total Warehouses" +#~ msgstr "Total des entrepôts" + +#~ msgid "Total Inventory Value" +#~ msgstr "Valeur totale de l'inventaire" + +#~ msgid "Low Stock Items" +#~ msgstr "Articles en faible stock" + +#~ msgid "Available Reports" +#~ msgstr "Rapports disponibles" + +#~ msgid "Stock Valuation" +#~ msgstr "Valorisation des stocks" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Afficher la valeur des stocks par entrepôt" + +#~ msgid "Movement History" +#~ msgstr "Histoire du mouvement" + +#~ msgid "Detailed movement log" +#~ msgstr "Journal de mouvement détaillé" + +#~ msgid "Turnover Analysis" +#~ msgstr "Analyse du chiffre d'affaires" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Taux de rotation des stocks" + +#~ msgid "Low Stock Report" +#~ msgstr "Rapport de stock faible" + +#~ msgid "Items below reorder point" +#~ msgstr "Articles en dessous du point de commande" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "" +#~ "%(count)s articles trouvés en dessous de" +#~ " leur point de réapprovisionnement." + +#~ msgid "Quantity On Hand" +#~ msgstr "Quantité disponible" + +#~ msgid "Reorder Quantity" +#~ msgstr "Quantité de commande" + +#~ msgid "Create PO" +#~ msgstr "Créer un bon de commande" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Tous les niveaux de stocks sont bons" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Aucun article n'est actuellement en dessous de son point de commande." + +#~ msgid "No movements found." +#~ msgstr "Aucun mouvement trouvé." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "Le taux de rotation indique combien " +#~ "de fois les stocks sont vendus et" +#~ " remplacés au cours d'une année. Des" +#~ " tarifs plus élevés indiquent des " +#~ "articles qui évoluent plus rapidement." + +#~ msgid "Total Sold" +#~ msgstr "Total vendu" + +#~ msgid "Avg Stock Level" +#~ msgstr "Niveau de stock moyen" + +#~ msgid "Turnover Rate" +#~ msgstr "Taux de roulement" + +#~ msgid "Fast Moving" +#~ msgstr "Déplacement rapide" + +#~ msgid "Normal" +#~ msgstr "Normale" + +#~ msgid "Slow Moving" +#~ msgstr "Mouvement lent" + +#~ msgid "Very Slow" +#~ msgstr "Très lent" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "Aucune donnée de vente trouvée pour la période sélectionnée." + +#~ msgid "Inventory Valuation" +#~ msgstr "Évaluation des stocks" + +#~ msgid "Total Value" +#~ msgstr "Valeur totale" + +#~ msgid "No items found with cost information." +#~ msgstr "Aucun article trouvé avec des informations sur les coûts." + +#~ msgid "Reserved" +#~ msgstr "Réservé" + +#~ msgid "Fulfilled" +#~ msgstr "Réalisé" + +#~ msgid "Reserved At" +#~ msgstr "Réservé à" + +#~ msgid "Expires At" +#~ msgstr "Expire à" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "Remplir cette réservation ?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "Annuler cette réservation ?" + +#~ msgid "No reservations found." +#~ msgstr "Aucune réservation trouvée." + +#~ msgid "Unit" +#~ msgstr "Unité" + +#~ msgid "Default Cost" +#~ msgstr "Coût par défaut" + +#~ msgid "Default Price" +#~ msgstr "Prix ​​par défaut" + +#~ msgid "Image URL" +#~ msgstr "URL de l'image" + +#~ msgid "Track Inventory" +#~ msgstr "Suivre l'inventaire" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "Gérez plusieurs fournisseurs pour cet article avec des prix différents." + +#~ msgid "MOQ" +#~ msgstr "Quantité minimale de commande" + +#~ msgid "Lead Time (days)" +#~ msgstr "Délai (jours)" + +#~ msgid "Preferred" +#~ msgstr "Préféré" + +#~ msgid "Add Supplier" +#~ msgstr "Ajouter un fournisseur" + +#~ msgid "No movement history found for this item." +#~ msgstr "Aucun historique de mouvement trouvé pour cet article." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU, nom, code-barres..." + +#~ msgid "Active Only" +#~ msgstr "Actif uniquement" + +#~ msgid "Total Qty" +#~ msgstr "Qté totale" + +#~ msgid "Available" +#~ msgstr "Disponible" + +#~ msgid "Low Stock" +#~ msgstr "Stock faible" + +#~ msgid "No stock items found." +#~ msgstr "Aucun article en stock trouvé." + +#~ msgid "Item Details" +#~ msgstr "Détails de l'article" + +#~ msgid "Trackable" +#~ msgstr "Traçable" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Niveaux de stock par entrepôt" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Mouvements de stocks récents" + +#~ msgid "Total On Hand" +#~ msgstr "Total disponible" + +#~ msgid "Total Reserved" +#~ msgstr "Total réservé" + +#~ msgid "Total Available" +#~ msgstr "Total disponible" + +#~ msgid "Low Stock Alert" +#~ msgstr "Alerte de stock faible" + +#~ msgid "This item is not trackable." +#~ msgstr "Cet article n'est pas traçable." + +#~ msgid "Active Reservations" +#~ msgstr "Réservations actives" + +#~ msgid "Quantity Reserved" +#~ msgstr "Quantité réservée" + +#~ msgid "Last Counted" +#~ msgstr "Dernier décompte" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "Aucun stock trouvé pour cet article dans aucun entrepôt." + +#~ msgid "No stock levels found." +#~ msgstr "Aucun niveau de stock trouvé." + +#~ msgid "Low Stock Only" +#~ msgstr "Stock faible uniquement" + +#~ msgid "Oversold" +#~ msgstr "Survendu" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "Aucun article en stock trouvé dans cet entrepôt." + +#~ msgid "Supplier Code" +#~ msgstr "Code fournisseur" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Code unique pour ce fournisseur (par exemple, SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Conditions de paiement" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "par exemple, Net 30, Net 60" + +#~ msgid "Code, name, email" +#~ msgstr "Code, nom, email" + +#~ msgid "No suppliers found." +#~ msgstr "Aucun fournisseur trouvé." + +#~ msgid "Supplier Details" +#~ msgstr "Détails du fournisseur" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Articles en stock de ce fournisseur" + +#~ msgid "Lead Time" +#~ msgstr "Délai de mise en œuvre" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "Aucun article en stock associé à ce fournisseur." + +#~ msgid "Preferred Items" +#~ msgstr "Articles préférés" + +#~ msgid "From Warehouse" +#~ msgstr "Depuis l'entrepôt" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Sélectionner l'entrepôt source" + +#~ msgid "To Warehouse" +#~ msgstr "Vers l'entrepôt" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Sélectionnez l'entrepôt de destination" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Notes facultatives sur ce transfert" + +#~ msgid "Create Transfer" +#~ msgstr "Créer un transfert" + +#~ msgid "No transfers found." +#~ msgstr "Aucun transfert trouvé." + +#~ msgid "Warehouse Code" +#~ msgstr "Code d'entrepôt" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Code unique pour cet entrepôt (par exemple, WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "E-mail de contact" + +#~ msgid "Contact Phone" +#~ msgstr "Téléphone de contact" + +#~ msgid "No warehouses found." +#~ msgstr "Aucun entrepôt trouvé." + +#~ msgid "Warehouse Details" +#~ msgstr "Détails de l'entrepôt" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "Aucun article en stock dans cet entrepôt." + +#~ msgid "Total Quantity" +#~ msgstr "Quantité totale" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "Demander l'approbation" + +#~ msgid "Approval Status" +#~ msgstr "Statut d'approbation" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "Motif du rejet" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "Actions rapides" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "Exporter vers Excel" + +#~ msgid "Partially Paid" +#~ msgstr "Partiellement payé" + +#~ msgid "Fully Paid" +#~ msgstr "Entièrement payé" + +#~ msgid "Create Invoice" +#~ msgstr "Créer une facture" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Générer une nouvelle facture pour un projet et un client" + +#~ msgid "Select a project" +#~ msgstr "Sélectionnez un projet" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "La sélection d'un projet remplira automatiquement les détails du client" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Taux d'imposition (%)" + +#~ msgid "Tips" +#~ msgstr "Conseils" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "" +#~ "Choisissez le bon projet pour remplir" +#~ " automatiquement les détails du client." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "" +#~ "Vous pouvez personnaliser les notes et" +#~ " les conditions avant d'envoyer la " +#~ "facture." + +#~ msgid "Edit Invoice" +#~ msgstr "Modifier la facture" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Mettre à jour les détails, les articles et les conditions de la facture" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Services basés sur le temps et travail horaire" + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "Sélectionnez un article en stock" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "par exemple, services de développement Web" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "Supprimer l'élément" + +#~ msgid "Items Subtotal" +#~ msgstr "Sous-total des articles" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "" +#~ "Dépenses facturables telles que les " +#~ "déplacements, les repas et le matériel" + +#~ msgid "Add Expense" +#~ msgstr "Ajouter une dépense" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "par exemple, déplacement pour se rendre à une réunion client" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Dépense liée – le titre ne peut pas être modifié" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Dépense liée – la description ne peut pas être modifiée" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Dépense liée - la catégorie ne peut pas être modifiée" + +#~ msgid "Travel" +#~ msgstr "Voyage" + +#~ msgid "Meals" +#~ msgstr "Repas" + +#~ msgid "Accommodation" +#~ msgstr "Hébergement" + +#~ msgid "Supplies" +#~ msgstr "Fournitures" + +#~ msgid "Software" +#~ msgstr "Logiciel" + +#~ msgid "Equipment" +#~ msgstr "Équipement" + +#~ msgid "Services" +#~ msgstr "Services" + +#~ msgid "Marketing" +#~ msgstr "Commercialisation" + +#~ msgid "Training" +#~ msgstr "Entraînement" + +#~ msgid "Other" +#~ msgstr "Autre" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Dépense liée - le montant ne peut pas être modifié" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Dépense liée - la date ne peut pas être modifiée" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Dissocier les dépenses de la facture" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Sous-total des dépenses" + +#~ msgid "Extra Goods" +#~ msgstr "Marchandises supplémentaires" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Produits, matériaux, licences et autres biens" + +#~ msgid "Add Good" +#~ msgstr "Ajouter du bien" + +#~ msgid "Price" +#~ msgstr "Prix" + +#~ msgid "e.g., Software License" +#~ msgstr "par exemple, licence de logiciel" + +#~ msgid "Product" +#~ msgstr "Produit" + +#~ msgid "Service" +#~ msgstr "Service" + +#~ msgid "Material" +#~ msgstr "Matériel" + +#~ msgid "Remove good" +#~ msgstr "Supprimer le bien" + +#~ msgid "Goods Subtotal" +#~ msgstr "Sous-total des marchandises" + +#~ msgid "Live Preview" +#~ msgstr "Aperçu en direct" + +#~ msgid "Payment" +#~ msgstr "Paiement" + +#~ msgid "Goods" +#~ msgstr "Marchandises" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Générer à partir du temps/des coûts" + +#~ msgid "Record Payment" +#~ msgstr "Enregistrer le paiement" + +#~ msgid "Export PDF" +#~ msgstr "Exporter un PDF" + +#~ msgid "Export CSV" +#~ msgstr "Exporter au format CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Facture en double" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "Êtes-vous sûr de vouloir dissocier cette dépense de la facture ?" + +#~ msgid "Unlink Expense" +#~ msgstr "Dissocier les dépenses" + +#~ msgid "Unlink" +#~ msgstr "Dissocier" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "" +#~ "Veuillez ajouter au moins un article," +#~ " une dépense ou un bien " +#~ "supplémentaire à la facture." + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Générer à partir du temps, des coûts et des marchandises" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Sélectionnez les entrées de temps non" +#~ " facturées, les coûts du projet et" +#~ " les marchandises supplémentaires à ajouter" +#~ " à cette facture." + +#~ msgid "Back to Edit" +#~ msgstr "Retour à Modifier" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Saisies de temps non facturées" + +#~ msgid "entries" +#~ msgstr "entrées" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "Aucune entrée de temps non facturé trouvée pour ce projet." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Coûts du projet non facturés" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "Aucun coût non facturé trouvé pour ce projet." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Dépenses facturables non facturées" + +#~ msgid "Vendor" +#~ msgstr "Fournisseur" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "Aucune dépense facturable non facturée trouvée pour ce projet." + +#~ msgid "Project Extra Goods" +#~ msgstr "Projet de biens supplémentaires" + +#~ msgid "No extra goods found for this project." +#~ msgstr "Aucune marchandise supplémentaire trouvée pour ce projet." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Ajouter la sélection à la facture" + +#~ msgid "Selection Summary" +#~ msgstr "Résumé de la sélection" + +#~ msgid "Total available hours" +#~ msgstr "Nombre total d'heures disponibles" + +#~ msgid "Total available costs" +#~ msgstr "Coûts totaux disponibles" + +#~ msgid "Total available expenses" +#~ msgstr "Total des dépenses disponibles" + +#~ msgid "Total available goods" +#~ msgstr "Total des biens disponibles" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Aperçu des heures prépayées" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" +#~ "Le plan comprend %(hours)s heures par" +#~ " cycle (réinitialisations le jour %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "Consommé : %(consumed)s h • Restant : %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "" +#~ "Aucune utilisation prépayée enregistrée pour" +#~ " la période sélectionnée pour le " +#~ "moment." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" +#~ "Vous pouvez sélectionner plusieurs entrées " +#~ "de temps, coûts, dépenses et biens " +#~ "supplémentaires." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "Les entrées de temps sont regroupées " +#~ "par tâche ou projet lors de la " +#~ "création de l'élément." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "" +#~ "Les coûts et les marchandises " +#~ "supplémentaires sont ajoutés sous forme " +#~ "de postes de facture individuels." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "" +#~ "Les dépenses sont liées à la " +#~ "facture et apparaissent dans une section" +#~ " distincte." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "" +#~ "Veuillez sélectionner au moins une " +#~ "entrée horaire, un coût, une dépense " +#~ "ou un bien supplémentaire." + +#~ msgid "Filter Invoices" +#~ msgstr "Filtrer les factures" + +#~ msgid "Invoice number or client" +#~ msgstr "Numéro de facture ou client" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "Supprimer les factures sélectionnées" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Modifier le statut des factures sélectionnées" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "Supprimer la facture" + +#~ msgid "Warning:" +#~ msgstr "Avertissement:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Êtes-vous sûr de vouloir supprimer la facture" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Tous les éléments de facture, " +#~ "marchandises supplémentaires et enregistrements " +#~ "de paiement associés à cette facture " +#~ "seront définitivement supprimés." + +#~ msgid "INVOICE" +#~ msgstr "FACTURE" + +#~ msgid "Invoice #" +#~ msgstr "Facture #" + +#~ msgid "Bill To" +#~ msgstr "Facturer à" + +#~ msgid "Quantity (Hours)" +#~ msgstr "Quantité (heures)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "Généré à partir de %(num)d entrées de temps" + +#~ msgid "Expense" +#~ msgstr "Frais" + +#~ msgid "Subtotal:" +#~ msgstr "Total:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "Taxe (%(rate).2f%%) :" + +#~ msgid "Total Amount:" +#~ msgstr "Montant total:" + +#~ msgid "Notes:" +#~ msgstr "Remarques :" + +#~ msgid "Terms:" +#~ msgstr "Termes:" + +#~ msgid "Payment Information:" +#~ msgstr "Informations de paiement :" + +#~ msgid "Terms & Conditions:" +#~ msgstr "Conditions générales :" + +#~ msgid "Download UBL" +#~ msgstr "" + +#~ msgid "Pay Online" +#~ msgstr "" + +#~ msgid "Payment Reference" +#~ msgstr "" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" + +#~ msgid "Invoice Approval" +#~ msgstr "" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "Payment History" +#~ msgstr "Historique des paiements" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Send Invoice via Email" +#~ msgstr "Envoyer la facture par e-mail" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Edit Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Unassigned" +#~ msgstr "Non attribué" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Create Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "Filter Issues" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "Search by title or description" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "Apply Filters" +#~ msgstr "Appliquer des filtres" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Page" +#~ msgstr "Page" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "of" +#~ msgstr "de" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "No issues found" +#~ msgstr "Aucun utilisateur trouvé." -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Create New Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Delete Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Task Management" +#~ msgstr "Gestion des tâches" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "Link to existing task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Select a task" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Link" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "Kanban" +#~ msgstr "Kanban" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "Gérer les colonnes" -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "" +#~ "Faites glisser les tâches entre les " +#~ "colonnes pour mettre à jour leur " +#~ "statut" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "Tableau Kanban" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "moved to" +#~ msgstr "déménagé à" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "Aucune tâche dans cette colonne." -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "Gérer les colonnes Kanban" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "" +#~ "Personnalisez les colonnes de votre " +#~ "tableau Kanban et les états des " +#~ "tâches" -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "Project:" +#~ msgstr "Projet:" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "Colonnes globales" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "Add Column" +#~ msgstr "Ajouter une colonne" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "Liste des colonnes Kanban" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "Key" +#~ msgstr "Clé" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "Complete?" +#~ msgstr "Complet?" -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "Faites glisser pour réorganiser" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "Edit column" +#~ msgstr "Modifier la colonne" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "Basculer l'état actif" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" +#~ "Aucune colonne Kanban trouvée. Créez " +#~ "votre première colonne pour commencer." -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "Tips:" +#~ msgstr "Conseils:" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Faites glisser et déposez les lignes pour réorganiser les colonnes" -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "Intégration du temps" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "Les colonnes système (todo, in_progress, " +#~ "done) ne peuvent pas être supprimées " +#~ "mais peuvent être personnalisées" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "Les colonnes marquées comme « Complète" +#~ " » marqueront les tâches comme " +#~ "terminées lorsqu'elles seront glissées vers" +#~ " cette colonne." -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "L'année dernière" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "Statut de la mise à jour" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "Détails" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "L'année dernière" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Partiel" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "Rafraîchir" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Les colonnes inactives sont masquées du" +#~ " tableau Kanban mais les tâches avec" +#~ " ce statut restent accessibles" -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "Supprimer la colonne Kanban" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer la colonne ?" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "Key:" +#~ msgstr "Clé:" -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Remarque : Les tâches avec ce " +#~ "statut resteront accessibles mais la " +#~ "colonne n'apparaîtra plus sur le tableau" +#~ " Kanban." -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "Supprimer la colonne" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "Colonnes réorganisées avec succès" + +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "Échec de la réorganisation des colonnes. Veuillez réessayer." + +#~ msgid "Create Kanban Column" +#~ msgstr "Créer une colonne Kanban" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Ajoutez une nouvelle colonne à votre tableau Kanban" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "Créer un formulaire de colonne Kanban" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "Column Label" +#~ msgstr "Étiquette de colonne" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "par exemple, En révision, Bloqué, Test" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "Le nom d'affichage affiché sur le tableau Kanban" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "Column Key" +#~ msgstr "Clé de colonne" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "par exemple, in_review, bloqué, test" -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "Créer un jeton API" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Identifiant unique (minuscules, sans espaces," +#~ " utilisez des traits de soulignement). " +#~ "Généré automatiquement à partir de " +#~ "l’étiquette si vide." + +#~ msgid "Global (for all projects)" +#~ msgstr "Global (pour tous les projets)" + +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Sélectionnez un projet pour créer des" +#~ " colonnes spécifiques au projet, ou " +#~ "laissez Global pour tous les projets" + +#~ msgid "Icon Class" +#~ msgstr "Classe d'icônes" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "Classe d'icônes Font Awesome" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "Browse icons" +#~ msgstr "Parcourir les icônes" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "Primaire (bleu)" -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "Créer un jeton API" +#~ msgid "Secondary (Gray)" +#~ msgstr "Secondaire (gris)" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "Succès (Vert)" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "Laisser vide pour rester à jour" +#~ msgid "Danger (Red)" +#~ msgstr "Danger (rouge)" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "Régénérer le secret" +#~ msgid "Warning (Yellow)" +#~ msgstr "Avertissement (jaune)" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "Info (Cyan)" +#~ msgstr "Informations (cyan)" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Classe de couleur Bootstrap pour le style" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "Mark as Complete State" +#~ msgstr "Marquer comme état complet" -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "Les tâches déplacées vers cette colonne seront marquées comme terminées" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "Create Column" +#~ msgstr "Créer une colonne" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "Note:" +#~ msgstr "Note:" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "La colonne sera ajoutée à la fin" +#~ " du tableau. Vous pouvez réorganiser " +#~ "les colonnes ultérieurement à partir de" +#~ " la page de gestion." -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "Modifier la colonne Kanban" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "Modifier les paramètres de la colonne" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "Edit Kanban Column form" +#~ msgstr "Modifier le formulaire de colonne Kanban" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "La clé ne peut pas être modifiée après la création" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "Ceci est une colonne spécifique au projet" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Ceci est une colonne globale (pour tous les projets)" -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "Preview" +#~ msgstr "Aperçu" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Les colonnes inactives sont masquées du tableau Kanban" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "System Column:" +#~ msgstr "Colonne système :" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Il s'agit d'une colonne système. Vous" +#~ " pouvez personnaliser son apparence mais" +#~ " ne pouvez pas le supprimer." -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "Activer le mode sombre" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" + +#~ msgid "Close camera scanner" +#~ msgstr "" + +#~ msgid "Close Camera" +#~ msgstr "" + +#~ msgid "Decrease quantity" +#~ msgstr "" + +#~ msgid "Adjustment quantity" +#~ msgstr "" + +#~ msgid "Increase quantity" +#~ msgstr "" + +#~ msgid "Kiosk adjustment" +#~ msgstr "" + +#~ msgid "Physical count" +#~ msgstr "" + +#~ msgid "Found" +#~ msgstr "" + +#~ msgid "Damaged" +#~ msgstr "" + +#~ msgid "Apply stock adjustment" +#~ msgstr "" + +#~ msgid "Apply Adjustment" +#~ msgstr "" + +#~ msgid "Undo last adjustment" +#~ msgstr "" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "" + +#~ msgid "Transfer quantity" +#~ msgstr "" + +#~ msgid "Transfer stock" +#~ msgstr "" + +#~ msgid "Transfer Stock" +#~ msgstr "" + +#~ msgid "Stop timer" +#~ msgstr "" + +#~ msgid "Stop Timer" +#~ msgstr "Arrêter la minuterie" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "Aucune tâche" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "Sur quoi travaillez-vous ?" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "Résumé" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "Source" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Site Internet, référencement, annonce..." + +#~ msgid "Lead Score" +#~ msgstr "Score des prospects" + +#~ msgid "Estimated Value" +#~ msgstr "Valeur estimée" + +#~ msgid "Save Lead" +#~ msgstr "Enregistrer le prospect" + +#~ msgid "Name, company, email..." +#~ msgstr "Nom, entreprise, email..." + +#~ msgid "All Statuses" +#~ msgstr "Tous les statuts" + +#~ msgid "Website, referral..." +#~ msgstr "Site Internet, référencement..." + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "No leads found" +#~ msgstr "Aucune piste trouvée" + +#~ msgid "Create First Lead" +#~ msgstr "Créer un premier prospect" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Suivi professionnel du temps et gestion de projet" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "Une application Web complète de suivi" +#~ " du temps construite avec Flask, " +#~ "comprenant la gestion de projet, " +#~ "l'organisation des clients, la gestion " +#~ "des tâches, la facturation et des " +#~ "analyses avancées." + +#~ msgid "Invoicing" +#~ msgstr "Facturation" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "Minuteries intelligentes" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "" +#~ "Suivi en temps réel avec détection " +#~ "d'inactivité et mises à jour en " +#~ "direct" + +#~ msgid "Client Management" +#~ msgstr "Gestion des clients" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "" +#~ "Organisez les clients avec des contacts," +#~ " des tarifs et des relations de " +#~ "projet" + +#~ msgid "Task System" +#~ msgstr "Système de tâches" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Décomposer les projets en tâches avec suivi des progrès" + +#~ msgid "PDF Invoices" +#~ msgstr "Factures PDF" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Générez des factures professionnelles à partir du temps suivi" + +#~ msgid "Core Features" +#~ msgstr "Fonctionnalités principales" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Minuteries de démarrage/arrêt avec association de projets et de tâches" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Saisie manuelle du temps avec notes et balises" + +#~ msgid "Client and project organization" +#~ msgstr "Organisation client et projet" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Accès basé sur les rôles et profils d'utilisateurs" + +#~ msgid "Advanced Features" +#~ msgstr "Fonctionnalités avancées" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Facturation PDF de marque avec suivi des taxes et des paiements" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Analyses visuelles et rapports détaillés" + +#~ msgid "REST API for integrations" +#~ msgstr "API REST pour les intégrations" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "Capacités PWA et interface utilisateur adaptée aux mobiles" + +#~ msgid "Platform Support" +#~ msgstr "Prise en charge de la plateforme" + +#~ msgid "Web Application" +#~ msgstr "Application Web" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Navigateurs de bureau (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Conception réactive mobile" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "Application Web progressive (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Interface tablette tactile" + +#~ msgid "Operating Systems" +#~ msgstr "Systèmes d'exploitation" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android et iOS (navigateur)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Prise en charge du Raspberry Pi" + +#~ msgid "Dockerized deployment" +#~ msgstr "Déploiement Dockerisé" + +#~ msgid "Database Support" +#~ msgstr "Prise en charge de la base de données" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (recommandé)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (développement/test)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Migrations automatiques avec Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Outils de sauvegarde et de restauration" + +#~ msgid "Technical Specifications" +#~ msgstr "Spécifications techniques" + +#~ msgid "Technology Stack" +#~ msgstr "Pile technologique" + +#~ msgid "Backend" +#~ msgstr "Back-end" + +#~ msgid "Frontend" +#~ msgstr "L'extrémité avant" + +#~ msgid "Deployment" +#~ msgstr "Déploiement" + +#~ msgid "Key Capabilities" +#~ msgstr "Capacités clés" + +#~ msgid "Real-time" +#~ msgstr "En temps réel" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "Open Source et Communauté" + +#~ msgid "Open Source Benefits" +#~ msgstr "Avantages de l'Open Source" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Code source complet disponible sur GitHub" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Sous licence GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "Développement axé sur la communauté" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Suivi transparent des problèmes et rapports de bogues" + +#~ msgid "Deployment Options" +#~ msgstr "Options de déploiement" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Images Docker (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Déploiement auto-hébergé avec contrôle total" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Prêt pour le cloud avec les configurations Compose" + +#~ msgid "View on GitHub" +#~ msgstr "Voir sur GitHub" + +#~ msgid "Support updates" +#~ msgstr "Fonctionnalités prises en charge" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "Obtenir de l'aide et des ressources" + +#~ msgid "Documentation" +#~ msgstr "Documentation" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Guides étape par étape pour toutes les fonctionnalités." + +#~ msgid "View Help" +#~ msgstr "Afficher l'aide" + +#~ msgid "System Information" +#~ msgstr "Informations système" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Statut, versions et détails de configuration." + +#~ msgid "Admin access required" +#~ msgstr "Accès administrateur requis" + +#~ msgid "Community Support" +#~ msgstr "Soutien communautaire" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "Signaler des problèmes, demander des fonctionnalités, contribuer." + +#~ msgid "GitHub Issues" +#~ msgstr "Problèmes GitHub" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "Afficher toutes les entrées de temps" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "Voici un bref aperçu de votre travail." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "Minuteries de démarrage/arrêt avec association de projets et de tâches" + +#~ msgid "Repeat last" +#~ msgstr "Créé à" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Minuteries de démarrage/arrêt avec association de projets et de tâches" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "Pause" + +#~ msgid "Break" +#~ msgstr "Dos" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "Commencé à" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "Ajustement" + +#~ msgid "Subtract 15 min" +#~ msgstr "" + +#~ msgid "Subtract 5 min" +#~ msgstr "" + +#~ msgid "Add 5 min" +#~ msgstr "Administrateur" + +#~ msgid "Add 15 min" +#~ msgstr "Administrateur" + +#~ msgid "Resume timer" +#~ msgstr "Minuteries intelligentes" + +#~ msgid "Resume" +#~ msgstr "Réinitialiser" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "Pause" + +#~ msgid "Stop and save current time" +#~ msgstr "" + +#~ msgid "Stop & save" +#~ msgstr "" + +#~ msgid "No active timer." +#~ msgstr "Aucune minuterie active." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" + +#~ msgid "Resume last session" +#~ msgstr "Fin de session" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" + +#~ msgid "Today's Hours" +#~ msgstr "" + +#~ msgid "overtime" +#~ msgstr "Temps" + +#~ msgid "Week's Hours" +#~ msgstr "" + +#~ msgid "Month's Hours" +#~ msgstr "" + +#~ msgid "Overtime (YTD)" +#~ msgstr "Paramètres des heures supplémentaires" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" + +#~ msgid "Loading insights…" +#~ msgstr "" + +#~ msgid "Value insights" +#~ msgstr "Aligner à droite" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "Suivez le temps. Restez organisé." -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "Total hours tracked" +#~ msgstr "Heures totales travaillées" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "Active days" +#~ msgstr "Alertes actives" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "Hours per day last seven days" +#~ msgstr "" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "Most productive day" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "Avg session length" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "Estimated value tracked" +#~ msgstr "Valeur estimée" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "This week vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "hrs this week" +#~ msgstr "Entrées de temps cette semaine" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "This week" +#~ msgstr "Semaine" -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "Last week" +#~ msgstr "L'année dernière" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "Entrées récentes" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "View all" +#~ msgstr "Tout afficher" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Reprendre - Démarrez une nouvelle minuterie avec les mêmes propriétés" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "Modifier l'entrée" -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "Entrée en double" -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "Supprimer l'entrée" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "Aucune entrée récente trouvée." -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "Objectif hebdomadaire" -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "Jours restants" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "Need" +#~ msgstr "Besoin" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "atteindre l'objectif" -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "Aucun objectif hebdomadaire" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "Fixez-vous un objectif de temps hebdomadaire pour suivre vos progrès" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "Créer un objectif" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Meilleurs projets (30 jours)" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "View report" +#~ msgstr "Rapport utilisateur" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Diagrammes circulaires de distribution du temps" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Aucune activité au cours des 30 derniers jours." -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Commencer le suivi du temps" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "Meilleurs projets (30 jours)" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "Aucune activité au cours des 30 derniers jours." -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "%(count)d citation(s) en double" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Erreur lors de la génération du PDF : %(error)s" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "Prise en charge de la plateforme" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "Le mot de passe doit comporter au moins 8 caractères" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "Guide de démarrage rapide" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "All templates" +#~ msgstr "Modèles d'e-mails" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "Tâche (facultatif)" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "Remarques (facultatif)" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "Tâche (facultatif)" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "par exemple, réunion, développement, administration" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "Soutenir le développement" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "Documentation complète et guide d'utilisation" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "Navigation rapide" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "Filtrer les rubriques..." -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "Démarrage rapide" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "Rapports et analyses" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "Fonctionnalités de productivité" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "Fonctionnalités d'administration" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "Utilisation mobile" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "Documentation" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "Dépannage" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "Centre d'aide TimeTracker" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "" +#~ "Tout ce que vous devez savoir pour" +#~ " tirer le meilleur parti de " +#~ "TimeTracker" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "Commencer le suivi du temps" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "Voir les projets" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "Générer des rapports" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "Jetons API" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "Guide de démarrage rapide" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "For New Users" +#~ msgstr "Pour les nouveaux utilisateurs" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Connectez-vous avec votre nom d'utilisateur (aucun mot de passe requis)" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Explorez le tableau de bord pour voir votre aperçu" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Démarrez votre premier timer sur un projet existant" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "Afficher vos entrées de temps dans les rapports" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "Pour les administrateurs" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Configurer les clients dans la section Gestion des clients" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Créer des projets et les attribuer aux clients" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Configurer les paramètres du système (fuseau horaire, devise, etc.)" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "Gérer les utilisateurs et les autorisations" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "Conseil de pro :" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Utilisez l'interface adaptée aux mobiles " +#~ "pour suivre le temps en déplacement. " +#~ "Le minuteur continue de fonctionner même" +#~ " si vous fermez votre navigateur !" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Suivi en temps réel avec détection " +#~ "automatique d'inactivité et mises à jour" +#~ " WebSocket" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "Saisie manuelle" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Article en stock" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Sélectionner un article" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Entrepôt" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Sélectionnez un entrepôt" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Quantité d'ajustement" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "Utilisez des valeurs positives pour augmenter le stock, des valeurs négatives pour diminuer" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "par exemple, correction du décompte physique, dommages, objets trouvés" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Détails supplémentaires sur cet ajustement" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Ajustement d'enregistrement" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Tous les entrepôts" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Tous les articles" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Dater de" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Date de" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Article" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "Aucun ajustement trouvé." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "À portée de main" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Point de commande" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Manque à gagner" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Quantité de commande" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "Aucune alerte de stock faible. Tous les articles sont au-dessus du point de commande." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "" +#~ "Enregistrez l'heure manuellement avec des " +#~ "heures de début et de fin " +#~ "personnalisées" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "Démarrer une minuterie" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Utilisez des valeurs positives pour les ajouts, négatives pour les suppressions" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Accédez à la page ou au tableau de bord du minuteur" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "Sélectionnez un projet dans la liste déroulante" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "Sélectionnez éventuellement une tâche pour un suivi plus détaillé" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Ajouter des notes sur ce sur quoi vous travaillez (facultatif)" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Type de mouvement" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Retour" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Déchets" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Ajouter des balises séparées par des virgules (facultatif)" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Cliquez sur \"Démarrer le minuteur\"" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "Fonctionnalités de la minuterie" -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "Affichage de la durée en temps réel" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" + +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" + +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" + +#~ msgid "Continues running if browser closes" +#~ msgstr "Continue à fonctionner si le navigateur se ferme" + +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Détection automatique du ralenti (configurable)" + +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Une minuterie active par utilisateur (configurable)" + +#~ msgid "WebSocket live updates" +#~ msgstr "Mises à jour en direct de WebSocket" + +#~ msgid "Manual Time Entry" +#~ msgstr "Saisie manuelle du temps" + +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Créez des entrées de temps manuellement" +#~ " lorsque vous devez enregistrer le " +#~ "temps passé loin de l'ordinateur ou " +#~ "ajuster les entrées existantes." + +#~ msgid "Required Information" +#~ msgstr "Informations requises" + +#~ msgid "Project selection" +#~ msgstr "Sélection de projets" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "Date et heure de début" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "Date et heure de fin" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "Informations facultatives" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "Affectation des tâches" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "Description/remarques" -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "par exemple, correction du comptage physique" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Mouvement d'enregistrement" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Type de référence" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Manuel" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Coût unitaire" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Référence" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "Balises pour la catégorisation" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "Aucun mouvement de stock trouvé." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Fournisseur" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Sélectionnez le fournisseur" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Date de commande" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Date de livraison prévue" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Notes visibles par le fournisseur" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Notes internes (non visibles pour le fournisseur)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Articles" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Ajouter un article" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Qté" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "UGS du fournisseur" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Créer un bon de commande" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Brouillon" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Envoyé" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Confirmé" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Reçu" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Tous les fournisseurs" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "Numéro de bon de commande" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Livraison prévue" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "Aucun bon de commande trouvé." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "Êtes-vous sûr de vouloir annuler ce bon de commande ?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "Êtes-vous sûr de vouloir supprimer ce bon de commande ?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Détails du bon de commande" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Date de réception" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Quantité commandée" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Quantité reçue" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Total de ligne" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Expédition" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Recevoir le bon de commande" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Marquer comme reçu" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "Aucun article dans ce bon de commande." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Total des articles" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Total des entrepôts" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Valeur totale de l'inventaire" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Articles en faible stock" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Rapports disponibles" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Valorisation des stocks" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Afficher la valeur des stocks par entrepôt" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Histoire du mouvement" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Journal de mouvement détaillé" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Analyse du chiffre d'affaires" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Taux de rotation des stocks" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Rapport de stock faible" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Articles en dessous du point de commande" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "%(count)s articles trouvés en dessous de leur point de réapprovisionnement." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Quantité disponible" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Quantité de commande" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "Créer un bon de commande" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Tous les niveaux de stocks sont bons" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Aucun article n'est actuellement en dessous de son point de commande." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "Aucun mouvement trouvé." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "Le taux de rotation indique combien de fois les stocks sont vendus et remplacés au cours d'une année. Des tarifs plus élevés indiquent des articles qui évoluent plus rapidement." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Total vendu" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Niveau de stock moyen" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Taux de roulement" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Déplacement rapide" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normale" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "Mouvement lent" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "Très lent" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "Aucune donnée de vente trouvée pour la période sélectionnée." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Évaluation des stocks" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Valeur totale" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "Aucun article trouvé avec des informations sur les coûts." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Réservé" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Réalisé" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Réservé à" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Expire à" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "Remplir cette réservation ?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "Annuler cette réservation ?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "Aucune réservation trouvée." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Unité" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Coût par défaut" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Prix ​​par défaut" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "URL de l'image" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Suivre l'inventaire" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Gérez plusieurs fournisseurs pour cet article avec des prix différents." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "Quantité minimale de commande" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Délai (jours)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Préféré" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Ajouter un fournisseur" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "Aucun historique de mouvement trouvé pour cet article." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU, nom, code-barres..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Actif uniquement" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Qté totale" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Disponible" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Stock faible" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "Aucun article en stock trouvé." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Détails de l'article" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Traçable" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Niveaux de stock par entrepôt" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "Remplacement du statut facturable" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Fonctionnalités avancées de saisie du temps" -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "Entrée groupée" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Mouvements de stocks récents" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Total disponible" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Total réservé" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Total disponible" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Alerte de stock faible" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Cet article n'est pas traçable." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Réservations actives" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Quantité réservée" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Dernier décompte" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "Aucun stock trouvé pour cet article dans aucun entrepôt." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "Aucun niveau de stock trouvé." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Stock faible uniquement" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "Survendu" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "Aucun article en stock trouvé dans cet entrepôt." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Code fournisseur" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Code unique pour ce fournisseur (par exemple, SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Conditions de paiement" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "par exemple, Net 30, Net 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Code, nom, email" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "Aucun fournisseur trouvé." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Détails du fournisseur" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Articles en stock de ce fournisseur" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Délai de mise en œuvre" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "Aucun article en stock associé à ce fournisseur." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Articles préférés" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Depuis l'entrepôt" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Sélectionner l'entrepôt source" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Vers l'entrepôt" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Sélectionnez l'entrepôt de destination" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Notes facultatives sur ce transfert" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Créer un transfert" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "Aucun transfert trouvé." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Code d'entrepôt" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Code unique pour cet entrepôt (par exemple, WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "E-mail de contact" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Téléphone de contact" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "Aucun entrepôt trouvé." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Détails de l'entrepôt" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "Aucun article en stock dans cet entrepôt." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Quantité totale" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Créez plusieurs entrées de temps pour" +#~ " des jours consécutifs avec le même" +#~ " projet et la même durée. Parfait " +#~ "pour les modes de travail réguliers." -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Templates" +#~ msgstr "Modèles" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Enregistrez les entrées de temps " +#~ "fréquemment utilisées sous forme de " +#~ "modèles pour une réutilisation rapide. " +#~ "Enregistre le projet, la tâche et " +#~ "les notes." -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualisez vos entrées de temps sur " +#~ "un calendrier. Glissez-déposez pour " +#~ "reprogrammer ou cliquez sur les dates" +#~ " pour ajouter des entrées." -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "Project Information" +#~ msgstr "Informations sur le projet" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "Nom descriptif du projet" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "Organisation cliente associée" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "Détails et portée du projet" -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "Actif, complété ou archivé" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "Billing Information" +#~ msgstr "Informations de facturation" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Si le temps doit être suivi pour la facturation" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Demander l'approbation" +#~ msgid "Rate for billable time calculations" +#~ msgstr "Tarif pour les calculs de temps facturable" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Statut d'approbation" +#~ msgid "Billing Reference" +#~ msgstr "Référence de facturation" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "Numéro de bon de commande ou code de facturation" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "Opérations du projet" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Create new projects with client relationships" +#~ msgstr "Créer de nouveaux projets avec des relations clients" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Edit existing projects to update details" +#~ msgstr "Modifier les projets existants pour mettre à jour les détails" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Motif du rejet" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "" +#~ "Archiver les projets pour les masquer" +#~ " des minuteries (préserve les données)" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Supprimer des projets (supprime toutes les entrées de temps associées)" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Actions rapides" +#~ msgid "Best Practices" +#~ msgstr "Meilleures pratiques" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "Use descriptive project names" +#~ msgstr "Utilisez des noms de projet descriptifs" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Exporter vers Excel" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Partiellement payé" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Entièrement payé" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Créer une facture" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Générer une nouvelle facture pour un projet et un client" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Sélectionnez un projet" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "La sélection d'un projet remplira automatiquement les détails du client" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Définir des taux horaires précis pour la facturation" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Archiver au lieu de supprimer lorsque cela est possible" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Taux d'imposition (%)" +#~ msgid "Use billing references for external tracking" +#~ msgstr "Utiliser les références de facturation pour le suivi externe" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Conseils" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "Le système de gestion des clients " +#~ "vous aide à organiser votre travail " +#~ "par organisations clientes, en évitant " +#~ "les erreurs et en rationalisant la " +#~ "création de projets." -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "Choisissez le bon projet pour remplir automatiquement les détails du client." +#~ msgid "Client Information" +#~ msgstr "Informations client" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "Vous pouvez personnaliser les notes et les conditions avant d'envoyer la facture." +#~ msgid "Organization Name" +#~ msgstr "Nom de l'organisation" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Modifier la facture" +#~ msgid "Company or client name" +#~ msgstr "Nom de l'entreprise ou du client" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Mettre à jour les détails, les articles et les conditions de la facture" +#~ msgid "Primary contact details" +#~ msgstr "Coordonnées principales" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Services basés sur le temps et travail horaire" +#~ msgid "Email & Phone" +#~ msgstr "E-mail et téléphone" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Contact information" +#~ msgstr "Coordonnées" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Business address" +#~ msgstr "Adresse professionnelle" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Benefits" +#~ msgstr "Avantages" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Sélectionnez un article en stock" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "La sélection déroulante évite les fautes de frappe" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "par exemple, services de développement Web" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Les taux par défaut remplissent automatiquement les projets" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "Dénomination cohérente des clients" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Supprimer l'élément" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Sous-total des articles" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Dépenses facturables telles que les déplacements, les repas et le matériel" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Ajouter une dépense" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "par exemple, déplacement pour se rendre à une réunion client" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Dépense liée – le titre ne peut pas être modifié" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Dépense liée – la description ne peut pas être modifiée" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Dépense liée - la catégorie ne peut pas être modifiée" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Voyage" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Repas" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Hébergement" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Fournitures" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Logiciel" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Équipement" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Services" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Commercialisation" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Entraînement" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Autre" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Dépense liée - le montant ne peut pas être modifié" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Dépense liée - la date ne peut pas être modifiée" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Dissocier les dépenses de la facture" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Sous-total des dépenses" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Marchandises supplémentaires" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Produits, matériaux, licences et autres biens" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Ajouter du bien" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Prix" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "par exemple, licence de logiciel" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Produit" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Service" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Matériel" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "Supprimer le bien" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Sous-total des marchandises" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Aperçu en direct" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Paiement" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Marchandises" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Générer à partir du temps/des coûts" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Enregistrer le paiement" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "Exporter un PDF" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "Exporter au format CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Facture en double" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "Êtes-vous sûr de vouloir dissocier cette dépense de la facture ?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Dissocier les dépenses" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Dissocier" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "Veuillez ajouter au moins un article, une dépense ou un bien supplémentaire à la facture." - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Générer à partir du temps, des coûts et des marchandises" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "Sélectionnez les entrées de temps non facturées, les coûts du projet et les marchandises supplémentaires à ajouter à cette facture." - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Retour à Modifier" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Saisies de temps non facturées" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "entrées" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "Aucune entrée de temps non facturé trouvée pour ce projet." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Coûts du projet non facturés" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "Aucun coût non facturé trouvé pour ce projet." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Dépenses facturables non facturées" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Fournisseur" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "Aucune dépense facturable non facturée trouvée pour ce projet." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Projet de biens supplémentaires" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "Aucune marchandise supplémentaire trouvée pour ce projet." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Ajouter la sélection à la facture" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Résumé de la sélection" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Nombre total d'heures disponibles" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Coûts totaux disponibles" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Total des dépenses disponibles" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Total des biens disponibles" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Aperçu des heures prépayées" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "Le plan comprend %(hours)s heures par cycle (réinitialisations le jour %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "Consommé : %(consumed)s h • Restant : %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Aucune utilisation prépayée enregistrée pour la période sélectionnée pour le moment." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "Vous pouvez sélectionner plusieurs entrées de temps, coûts, dépenses et biens supplémentaires." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "Les entrées de temps sont regroupées par tâche ou projet lors de la création de l'élément." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "Les coûts et les marchandises supplémentaires sont ajoutés sous forme de postes de facture individuels." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "Les dépenses sont liées à la facture et apparaissent dans une section distincte." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "Veuillez sélectionner au moins une entrée horaire, un coût, une dépense ou un bien supplémentaire." - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Filtrer les factures" +#~ msgid "Easier project organization" +#~ msgstr "Organisation de projet plus facile" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Numéro de facture ou client" +#~ msgid "Project Count" +#~ msgstr "Nombre de projets" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Supprimer les factures sélectionnées" +#~ msgid "Total and active projects" +#~ msgstr "Projets totaux et actifs" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Modifier le statut des factures sélectionnées" +#~ msgid "Total hours worked" +#~ msgstr "Heures totales travaillées" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "Estimation des coûts" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Estimated billing amounts" +#~ msgstr "Montants de facturation estimés" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Décomposez les projets en tâches " +#~ "gérables avec un suivi détaillé et " +#~ "un suivi des progrès." -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Supprimer la facture" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Avertissement:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "Êtes-vous sûr de vouloir supprimer la facture" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "Tous les éléments de facture, marchandises supplémentaires et enregistrements de paiement associés à cette facture seront définitivement supprimés." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "FACTURE" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Facture #" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Facturer à" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Quantité (heures)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "Généré à partir de %(num)d entrées de temps" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Frais" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Total:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "Taxe (%(rate).2f%%) :" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Montant total:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Remarques :" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Termes:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Informations de paiement :" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Conditions générales :" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Task Properties" +#~ msgstr "Propriétés de la tâche" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "Nom et description" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "Identification claire des tâches" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "Niveaux de priorité" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Faible, Moyen, Élevé, Urgent" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "Dates d'échéance" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Historique des paiements" +#~ msgid "Deadline tracking" +#~ msgstr "Suivi des délais" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Envoyer la facture par e-mail" +#~ msgid "Assignment" +#~ msgstr "Affectation" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "Propriété des tâches" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "Non attribué" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "Suivi du statut" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "À faire - Pas commencé" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "In Progress - Currently working" +#~ msgstr "En cours - En cours de travail" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "Appliquer des filtres" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Page" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "de" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "Aucun utilisateur trouvé." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "Révision – Prêt pour la révision" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "Terminé - Terminé" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "Annulé - Pas nécessaire" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "Fonctionnalités de suivi du temps" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Gestion des tâches" +#~ msgid "Start timers directly from tasks" +#~ msgstr "Démarrez les minuteries directement à partir des tâches" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Lier les entrées de temps à des tâches spécifiques" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Suivez les heures estimées par rapport aux heures réelles" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "Surveiller automatiquement la progression des tâches" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Task Views" +#~ msgstr "Vues des tâches" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Mes tâches - Vos tâches assignées" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Toutes les tâches - Liste complète des tâches" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Gérer les colonnes" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Tâches en retard – Éléments en retard" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Faites glisser les tâches entre les colonnes pour mettre à jour leur statut" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Tâches du projet - Tâches au sein des projets" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "Tableau Kanban" +#~ msgid "Collaboration Features" +#~ msgstr "Fonctionnalités collaboratives" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "déménagé à" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Commentaires sur les tâches – Discussions sur les tâches" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "Aucune tâche dans cette colonne." +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Prise en charge de Markdown - Mise en forme riche dans les descriptions" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Gérer les colonnes Kanban" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "Mentions utilisateur – Taguer les membres de l'équipe (si activé)" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Personnalisez les colonnes de votre tableau Kanban et les états des tâches" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Pièces jointes : Joindre des fichiers aux tâches (si activé)" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Projet:" +#~ msgid "Markdown Formatting" +#~ msgstr "Formatage Markdown" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Colonnes globales" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "Les descriptions de tâches et de projets prennent en charge Markdown :" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Ajouter une colonne" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Gras**, *Italique*, ~~Barré~~" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Liste des colonnes Kanban" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# Rubriques, - Listes, [Liens](url)" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Clé" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```blocs de code```, tableaux, images" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "Complet?" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualisez votre flux de travail avec" +#~ " un tableau Kanban par glisser-" +#~ "déposer pour une gestion intuitive des" +#~ " tâches." -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Faites glisser pour réorganiser" +#~ msgid "Board Features" +#~ msgstr "Caractéristiques du tableau" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Modifier la colonne" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Colonnes personnalisables correspondant aux statuts des tâches" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Basculer l'état actif" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Glisser-déposer des tâches entre les colonnes" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "Aucune colonne Kanban trouvée. Créez votre première colonne pour commencer." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Conseils:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Faites glisser et déposez les lignes pour réorganiser les colonnes" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "Les colonnes système (todo, in_progress, done) ne peuvent pas être supprimées mais peuvent être personnalisées" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "Les colonnes marquées comme « Complète » marqueront les tâches comme terminées lorsqu'elles seront glissées vers cette colonne." - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "Les colonnes inactives sont masquées du tableau Kanban mais les tâches avec ce statut restent accessibles" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Supprimer la colonne Kanban" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "Êtes-vous sûr de vouloir supprimer la colonne ?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Clé:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "Remarque : Les tâches avec ce statut resteront accessibles mais la colonne n'apparaîtra plus sur le tableau Kanban." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Supprimer la colonne" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Colonnes réorganisées avec succès" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "Échec de la réorganisation des colonnes. Veuillez réessayer." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Créer une colonne Kanban" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Ajoutez une nouvelle colonne à votre tableau Kanban" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Créer un formulaire de colonne Kanban" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Étiquette de colonne" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "par exemple, En révision, Bloqué, Test" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "Le nom d'affichage affiché sur le tableau Kanban" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Clé de colonne" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "par exemple, in_review, bloqué, test" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "Identifiant unique (minuscules, sans espaces, utilisez des traits de soulignement). Généré automatiquement à partir de l’étiquette si vide." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Global (pour tous les projets)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "Sélectionnez un projet pour créer des colonnes spécifiques au projet, ou laissez Global pour tous les projets" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Classe d'icônes" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Classe d'icônes Font Awesome" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Parcourir les icônes" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Primaire (bleu)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Secondaire (gris)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Succès (Vert)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Danger (rouge)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Avertissement (jaune)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Informations (cyan)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Classe de couleur Bootstrap pour le style" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Marquer comme état complet" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "Les tâches déplacées vers cette colonne seront marquées comme terminées" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Créer une colonne" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Note:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "La colonne sera ajoutée à la fin du tableau. Vous pouvez réorganiser les colonnes ultérieurement à partir de la page de gestion." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Modifier la colonne Kanban" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Modifier les paramètres de la colonne" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Modifier le formulaire de colonne Kanban" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "La clé ne peut pas être modifiée après la création" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Ceci est une colonne spécifique au projet" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Ceci est une colonne globale (pour tous les projets)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Aperçu" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Les colonnes inactives sont masquées du tableau Kanban" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Colonne système :" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "Il s'agit d'une colonne système. Vous pouvez personnaliser son apparence mais ne pouvez pas le supprimer." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Filtrer par projet, utilisateur ou priorité" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "Quick search across all tasks" +#~ msgstr "Recherche rapide dans toutes les tâches" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Activer le mode sombre" +#~ msgid "Using the Kanban Board" +#~ msgstr "Utiliser le tableau Kanban" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Accès depuis le menu Tâches ou la page du projet" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "" +#~ "Faites glisser les tâches vers " +#~ "différentes colonnes pour changer de " +#~ "statut" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Cliquez sur une fiche de tâche pour afficher/modifier les détails" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Utilisez des filtres pour vous concentrer sur un travail spécifique" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "Le tableau Kanban est parfait pour " +#~ "la planification de sprints et les " +#~ "standups quotidiens. Chaque colonne représente" +#~ " une étape de votre workflow !" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "Suivi des dépenses" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Suivez les dépenses professionnelles, gérez" +#~ " les reçus et gérez efficacement les" +#~ " remboursements." -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "Caractéristiques des dépenses" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Catégoriser les dépenses (déplacements, repas, fournitures, etc.)" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "Joindre des images et des documents de reçu" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Suivez les montants, les taxes et les modes de paiement" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Workflow d’approbation des demandes de dépenses" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "Facturation et remboursement" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Marquer les dépenses comme facturables aux clients" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "Inclure les dépenses dans les factures des clients" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "Suivre l’état du remboursement" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "Lier les dépenses à des projets spécifiques" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "Enregistrer les dépenses" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "Entrez les détails et téléchargez le reçu" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "Soumettre pour approbation" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Admin reviews and approves" +#~ msgstr "L'administrateur examine et approuve" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "Facture/Remboursement" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Ajouter à la facture ou rembourser" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "Suivre le paiement" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "Surveiller l'état du remboursement" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Professional Invoicing" +#~ msgstr "Facturation professionnelle" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "Génération PDF professionnelle" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Arrêter la minuterie" +#~ msgid "Company branding and logos" +#~ msgstr "Image de marque et logos de l'entreprise" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "Numérotation automatique des factures" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "Calculs d'impôts" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Time Integration" +#~ msgstr "Intégration du temps" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Aucune tâche" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Generate from time entries" +#~ msgstr "Générer à partir des entrées de temps" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "Sur quoi travaillez-vous ?" +#~ msgid "Smart grouping by task/project" +#~ msgstr "Regroupement intelligent par tâche/projet" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "Prévenir la double facturation" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "Utiliser les taux horaires du projet" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "Configurer les détails du client et du projet" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Add Items" +#~ msgstr "Ajouter des éléments" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Generate from time or add manually" +#~ msgstr "Générer à partir du temps ou ajouter manuellement" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "Vérifier et envoyer" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "Exporter le PDF et mettre à jour le statut" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "Surveiller le statut et les paiements" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Standard Reports" +#~ msgstr "Rapports standards" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Rapport de projet - Répartition du temps par projet" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Rapport utilisateur – Mesures de performances individuelles" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Rapport de synthèse – Indicateurs et tendances clés" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Rapport de saisie du temps - Journaux de temps détaillés" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Export Options" +#~ msgstr "Options d'exportation" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "Exportation CSV – Pour analyse externe" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "Résumé" +#~ msgid "Configurable delimiters" +#~ msgstr "Délimiteurs configurables" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "Custom date ranges" +#~ msgstr "Plages de dates personnalisées" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Source" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Site Internet, référencement, annonce..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Score des prospects" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Valeur estimée" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Enregistrer le prospect" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Nom, entreprise, email..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Tous les statuts" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Site Internet, référencement..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Score" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "Aucune piste trouvée" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Créer un premier prospect" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "Filtered data export" +#~ msgstr "Exportation de données filtrées" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "Options de filtre" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Plage de dates – Dates de début et de fin personnalisées" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Projet - Filtrer par projets spécifiques" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "User - Filter by team members" +#~ msgstr "Utilisateur - Filtrer par membres de l'équipe" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Suivi professionnel du temps et gestion de projet" +#~ msgid "Client - Filter by client organization" +#~ msgstr "Client - Filtrer par organisation cliente" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "Une application Web complète de suivi du temps construite avec Flask, comprenant la gestion de projet, l'organisation des clients, la gestion des tâches, la facturation et des analyses avancées." +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Filtres enregistrés - Enregistrez les filtres fréquemment utilisés" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Facturation" +#~ msgid "Visual Analytics" +#~ msgstr "Analyse visuelle" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "Interactive bar charts" +#~ msgstr "Graphiques à barres interactifs" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Minuteries intelligentes" +#~ msgid "Time distribution pie charts" +#~ msgstr "Diagrammes circulaires de distribution du temps" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "Suivi en temps réel avec détection d'inactivité et mises à jour en direct" +#~ msgid "Trend analysis over time" +#~ msgstr "Analyse des tendances au fil du temps" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Gestion des clients" +#~ msgid "Mobile-optimized charts" +#~ msgstr "Graphiques optimisés pour les mobiles" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Organisez les clients avec des contacts, des tarifs et des relations de projet" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Utilisez les filtres enregistrés pour " +#~ "accéder rapidement à vos vues de " +#~ "rapport les plus courantes. Enregistrez " +#~ "des filtres pour les évaluations " +#~ "hebdomadaires, la facturation mensuelle ou " +#~ "le suivi d'un projet spécifique !" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Système de tâches" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Améliorez votre efficacité grâce aux " +#~ "raccourcis clavier, à la palette de " +#~ "commandes et aux fonctionnalités " +#~ "d'automatisation." -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Décomposer les projets en tâches avec suivi des progrès" +#~ msgid "Command Palette" +#~ msgstr "Palette de commandes" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "Factures PDF" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "" +#~ "Accédez instantanément à n’importe quelle " +#~ "fonctionnalité sans quitter le clavier" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Générez des factures professionnelles à partir du temps suivi" +#~ msgid "Opening the Command Palette" +#~ msgstr "Ouverture de la palette de commandes" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Fonctionnalités principales" +#~ msgid "Press the question mark key" +#~ msgstr "Appuyez sur la touche point d'interrogation" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Minuteries de démarrage/arrêt avec association de projets et de tâches" +#~ msgid "Quick search" +#~ msgstr "Recherche rapide" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Saisie manuelle du temps avec notes et balises" +#~ msgid "Go to Projects" +#~ msgstr "Aller aux projets" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Organisation client et projet" +#~ msgid "Go to Tasks" +#~ msgstr "Accédez aux tâches" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Accès basé sur les rôles et profils d'utilisateurs" +#~ msgid "New Time Entry" +#~ msgstr "Nouvelle entrée de temps" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Fonctionnalités avancées" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Raccourcis clavier" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Facturation PDF de marque avec suivi des taxes et des paiements" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Naviguez plus rapidement grâce aux " +#~ "commandes pilotées par le clavier. " +#~ "Appuyez sur Maj+ ? pour voir tous" +#~ " les raccourcis." -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Analyses visuelles et rapports détaillés" +#~ msgid "Global Search" +#~ msgstr "Recherche globale" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "API REST pour les intégrations" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "Trouvez rapidement des projets, des " +#~ "tâches, des clients et des entrées " +#~ "de temps depuis n'importe où dans " +#~ "l'application." -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "Capacités PWA et interface utilisateur adaptée aux mobiles" +#~ msgid "Email Notifications" +#~ msgstr "Notifications par courrier électronique" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Prise en charge de la plateforme" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Soyez informé des affectations de " +#~ "tâches, des factures en retard et " +#~ "des résumés hebdomadaires par e-mail." -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Application Web" +#~ msgid "Administrator Features" +#~ msgstr "Fonctionnalités d'administrateur" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Navigateurs de bureau (Chrome, Firefox, Safari, Edge)" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Créez de nouveaux utilisateurs avec une authentification flexible" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Conception réactive mobile" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Attribuez des rôles personnalisés avec des autorisations spécifiques" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "Application Web progressive (PWA)" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Activer/désactiver les comptes utilisateurs" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Interface tablette tactile" +#~ msgid "View user statistics and activity" +#~ msgstr "Afficher les statistiques et l'activité des utilisateurs" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Systèmes d'exploitation" +#~ msgid "Generate API tokens for users" +#~ msgstr "Générer des jetons API pour les utilisateurs" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "Access Control" +#~ msgstr "Contrôle d'accès" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android et iOS (navigateur)" +#~ msgid "Granular role-based permissions system" +#~ msgstr "Système d'autorisations granulaire basé sur les rôles" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Prise en charge du Raspberry Pi" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Rôles personnalisés avec accès précis" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Déploiement Dockerisé" +#~ msgid "User data access controls" +#~ msgstr "Contrôles d'accès aux données utilisateur" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Prise en charge de la base de données" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "Intégration OIDC/SSO (Azure AD, Authelia, etc.)" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (recommandé)" +#~ msgid "API token management for integrations" +#~ msgstr "Gestion des jetons API pour les intégrations" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (développement/test)" +#~ msgid "Authentication Methods" +#~ msgstr "Méthodes d'authentification" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Migrations automatiques avec Flask-Migrate" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Nom d'utilisateur uniquement (usage interne simple)" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Outils de sauvegarde et de restauration" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (authentification d'entreprise)" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Spécifications techniques" +#~ msgid "Both methods simultaneously" +#~ msgstr "Les deux méthodes simultanément" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Pile technologique" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Attribution automatique des rôles via des groupes" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "Back-end" +#~ msgid "Role & Permission Management" +#~ msgstr "Gestion des rôles et des autorisations" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "L'extrémité avant" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Créez des rôles personnalisés au-delà de l'administrateur/utilisateur" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Déploiement" +#~ msgid "Set granular permissions per feature" +#~ msgstr "Définir des autorisations granulaires par fonctionnalité" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Capacités clés" +#~ msgid "Assign users to multiple roles" +#~ msgstr "Attribuer des utilisateurs à plusieurs rôles" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "En temps réel" +#~ msgid "View and manage all permissions" +#~ msgstr "Afficher et gérer toutes les autorisations" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "General Settings" +#~ msgstr "Paramètres généraux" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "Open Source et Communauté" +#~ msgid "Timezone and locale settings" +#~ msgstr "Paramètres de fuseau horaire et de paramètres régionaux" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Avantages de l'Open Source" +#~ msgid "Currency configuration" +#~ msgstr "Configuration des devises" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Code source complet disponible sur GitHub" +#~ msgid "Time rounding rules" +#~ msgstr "Règles d'arrondi des temps" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Sous licence GPL v3.0" +#~ msgid "Self-registration settings" +#~ msgstr "Paramètres d'auto-inscription" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Développement axé sur la communauté" +#~ msgid "Timer Settings" +#~ msgstr "Paramètres de la minuterie" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Suivi transparent des problèmes et rapports de bogues" +#~ msgid "Idle timeout configuration" +#~ msgstr "Configuration du délai d'inactivité" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Options de déploiement" +#~ msgid "Single active timer mode" +#~ msgstr "Mode minuterie active unique" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Images Docker (GHCR)" +#~ msgid "Timer display preferences" +#~ msgstr "Préférences d'affichage du minuteur" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Déploiement auto-hébergé avec contrôle total" +#~ msgid "Notification settings" +#~ msgstr "Paramètres de notification" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Prêt pour le cloud avec les configurations Compose" +#~ msgid "Database Management" +#~ msgstr "Gestion de base de données" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Voir sur GitHub" +#~ msgid "Create manual database backups" +#~ msgstr "Créer des sauvegardes manuelles de base de données" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "Fonctionnalités prises en charge" +#~ msgid "View database migration status" +#~ msgstr "Afficher l'état de migration de la base de données" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Monitor database performance" +#~ msgstr "Surveiller les performances de la base de données" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Clean up old data and logs" +#~ msgstr "Nettoyer les anciennes données et journaux" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "System Monitoring" +#~ msgstr "Surveillance du système" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Obtenir de l'aide et des ressources" +#~ msgid "View system information and health" +#~ msgstr "Afficher les informations et l'état du système" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Documentation" +#~ msgid "Monitor application performance" +#~ msgstr "Surveiller les performances des applications" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Guides étape par étape pour toutes les fonctionnalités." +#~ msgid "Review system logs and errors" +#~ msgstr "Examiner les journaux et les erreurs du système" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Afficher l'aide" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Fonctionnalités adaptées aux mobiles" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Informations système" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Optimisé pour les téléphones et les tablettes" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Statut, versions et détails de configuration." +#~ msgid "Touch-friendly interface" +#~ msgstr "Interface tactile" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "Accès administrateur requis" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "Dispositions adaptatives pour toutes les tailles d'écran" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Soutien communautaire" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Contraste élevé pour une visibilité extérieure" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Signaler des problèmes, demander des fonctionnalités, contribuer." +#~ msgid "Mobile Navigation" +#~ msgstr "Navigation mobile" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "Problèmes GitHub" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Barre d'onglets inférieure pour un accès facile" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Quick access to dashboard" +#~ msgstr "Accès rapide au tableau de bord" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "Afficher toutes les entrées de temps" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "Voici un bref aperçu de votre travail." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "Minuteries de démarrage/arrêt avec association de projets et de tâches" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "Créé à" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "Minuteries de démarrage/arrêt avec association de projets et de tâches" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "One-tap time logging" +#~ msgstr "Enregistrement du temps en un seul clic" -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "Pause" +#~ msgid "Mobile-optimized reports" +#~ msgstr "Rapports optimisés pour les mobiles" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "Dos" +#~ msgid "Installation" +#~ msgstr "Installation" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Ouvrez TimeTracker dans votre navigateur mobile" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Recherchez l'option \"Ajouter à l'écran d'accueil\"." -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Commencé à" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Suivez les invites d'installation spécifiques au navigateur" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Lancez-vous depuis votre écran d'accueil comme une application native" -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "Ajustement" +#~ msgid "PWA Benefits" +#~ msgstr "Avantages PWA" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "Capacité hors ligne pour les fonctions de base" + +#~ msgid "Faster loading times" +#~ msgstr "Des temps de chargement plus rapides" + +#~ msgid "Native app-like experience" +#~ msgstr "Expérience de type application native" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Notifications push (si prises en charge)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "Graphiques à barres interactifs" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "Spécifications techniques" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "Documentation" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Dépannage et FAQ" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "Que se passe-t-il si j'oublie d'arrêter mon chronomètre ?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "La minuterie continuera à fonctionner " +#~ "jusqu'à ce que vous l'arrêtiez " +#~ "manuellement. Vous pouvez voir votre " +#~ "minuterie active sur le tableau de " +#~ "bord et la page de la minuterie." +#~ " Le minuteur persiste même si vous" +#~ " fermez votre navigateur ou redémarrez " +#~ "votre appareil. Si la détection " +#~ "d'inactivité est activée, la minuterie " +#~ "peut s'arrêter automatiquement après le " +#~ "délai d'attente configuré." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "Puis-je modifier les entrées de temps après leur création ?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Oui, vous pouvez modifier n'importe " +#~ "quelle entrée de temps en cliquant " +#~ "sur le bouton Modifier dans la " +#~ "liste des entrées de temps. Vous " +#~ "pouvez modifier le projet, les heures" +#~ " de début/fin, les notes, les " +#~ "balises, le statut facturable et " +#~ "l'affectation des tâches. Les administrateurs" +#~ " peuvent modifier toutes les entrées " +#~ "de temps, tandis que les utilisateurs" +#~ " réguliers ne peuvent modifier que " +#~ "leurs propres entrées." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "Comment puis-je suivre le temps de plusieurs projets ?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "Par défaut, vous ne pouvez avoir " +#~ "qu'un seul minuteur actif à la " +#~ "fois. Pour changer de projet, arrêtez" +#~ " votre minuteur actuel et démarrez-en" +#~ " un nouveau pour l'autre projet. Vous" +#~ " pouvez également créer des entrées " +#~ "de temps manuelles pour les travaux " +#~ "antérieurs ou configurer le système pour" +#~ " autoriser plusieurs minuteries actives " +#~ "(paramètre administrateur)." + +#~ msgid "How do I export my time data?" +#~ msgstr "Comment exporter mes données temporelles ?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Accédez à la page Rapports et " +#~ "utilisez la fonctionnalité « Exporter " +#~ "CSV ». Vous pouvez appliquer des " +#~ "filtres pour exporter des données " +#~ "spécifiques ou exporter toutes les " +#~ "entrées de temps. Le fichier CSV " +#~ "comprend tous les détails de saisie " +#~ "du temps et peut être ouvert dans" +#~ " Excel ou d'autres applications de " +#~ "feuille de calcul. Vous pouvez également" +#~ " configurer le délimiteur pour différentes" +#~ " normes régionales." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "" +#~ "Quelle est la différence entre le " +#~ "temps facturable et le temps non " +#~ "facturable ?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "Le temps facturable est suivi à " +#~ "des fins de facturation des clients " +#~ "et peut être associé à un taux " +#~ "horaire. Le temps non facturable est " +#~ "destiné au travail interne qui n'est " +#~ "pas facturé aux clients. Vous pouvez " +#~ "marquer des entrées de temps " +#~ "individuelles comme facturables ou non " +#~ "facturables, et les projets peuvent " +#~ "avoir des paramètres facturables par " +#~ "défaut. Cette distinction est cruciale " +#~ "pour une facturation précise et une " +#~ "analyse de rentabilité." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "Comment créer une facture à partir de mes saisies de temps ?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Accédez à Factures → Créer une " +#~ "facture, configurez les détails du " +#~ "client et du projet, puis utilisez " +#~ "« Générer à partir des entrées de" +#~ " temps » pour créer automatiquement " +#~ "des éléments de facture à partir " +#~ "de votre temps suivi. Vous pouvez " +#~ "filtrer par plage de dates et par" +#~ " projet, et le système regroupera " +#~ "intelligemment les entrées de temps. " +#~ "Examinez les éléments générés et " +#~ "exportez-les au format PDF professionnel." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "Puis-je utiliser TimeTracker sur mon appareil mobile ?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "Oui! TimeTracker est entièrement réactif " +#~ "et fonctionne très bien sur les " +#~ "appareils mobiles. Vous pouvez l'installer " +#~ "en tant que Progressive Web App " +#~ "(PWA) pour une expérience de type " +#~ "natif. L'interface mobile comprend une " +#~ "barre d'onglets inférieure pour une " +#~ "navigation facile et des commandes " +#~ "tactiles optimisées pour le suivi du " +#~ "temps en déplacement." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "Comment utiliser la palette de commandes et les raccourcis clavier ?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Appuyez sur la touche point " +#~ "d'interrogation (?) pour ouvrir la " +#~ "palette de commandes. À partir de " +#~ "là, vous pouvez taper pour rechercher" +#~ " n’importe quelle action ou cible de" +#~ " navigation. Utilisez des séquences de " +#~ "clavier telles que « g d » " +#~ "pour le tableau de bord, « g " +#~ "p » pour les projets ou « n" +#~ " e » pour une nouvelle entrée. " +#~ "Appuyez sur Maj+ ? pour voir tous" +#~ " les raccourcis disponibles. Appuyez sur" +#~ " Ctrl+K (ou Cmd+K sur Mac) pour " +#~ "une recherche rapide." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "Comment créer des entrées de temps groupées pour plusieurs jours ?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Accédez à Travail → Saisie groupée " +#~ "du temps. Sélectionnez votre projet, " +#~ "choisissez une plage de dates, " +#~ "définissez vos heures de début et " +#~ "de fin quotidiennes et éventuellement " +#~ "ignorez les week-ends. Le système " +#~ "créera des entrées de temps identiques" +#~ " pour chaque jour de la plage. " +#~ "C'est parfait pour enregistrer des " +#~ "habitudes de travail régulières ou pour" +#~ " renseigner le temps passé lorsque " +#~ "vous avez travaillé des heures " +#~ "constantes." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "Que sont les modèles de saisie du temps et comment les utiliser ?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "Les modèles de saisie du temps " +#~ "vous permettent d'enregistrer les " +#~ "configurations de saisie du temps " +#~ "fréquemment utilisées. Lors de la " +#~ "création d'une saisie manuelle du temps," +#~ " cochez « Enregistrer en tant que " +#~ "modèle » pour enregistrer le projet, " +#~ "la tâche et les notes. Plus tard," +#~ " lors de la création de nouvelles " +#~ "entrées, vous pourrez sélectionner un " +#~ "modèle pour remplir rapidement ces " +#~ "détails. Les modèles sont personnels et" +#~ " visibles uniquement par vous." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "Comment suivre les dépenses et les ajouter aux factures ?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Accédez à Dépenses → Nouvelle dépense" +#~ " pour enregistrer les dépenses " +#~ "professionnelles. Téléchargez des images de" +#~ " reçus, catégorisez la dépense et " +#~ "marquez-la comme facturable si nécessaire." +#~ " Lors de la création de factures, " +#~ "vous pouvez inclure ces dépenses sous" +#~ " forme de postes. Les dépenses " +#~ "prennent en charge les flux de " +#~ "travail d'approbation, le suivi des " +#~ "remboursements et peuvent être liées à" +#~ " des projets spécifiques." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "Puis-je utiliser Markdown dans les descriptions ?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "Oui! Les descriptions de projets et " +#~ "de tâches prennent en charge le " +#~ "formatage Markdown complet. Vous pouvez " +#~ "utiliser des titres en gras, en " +#~ "italique, des listes, des liens, des " +#~ "blocs de code, des tableaux et des" +#~ " images. Cela vous permet de créer" +#~ " une documentation riche et bien " +#~ "formatée directement dans vos projets et" +#~ " tâches. L'éditeur Markdown comprend un " +#~ "mode aperçu et prend en charge le" +#~ " thème sombre." + +#~ msgid "Where can I get additional help?" +#~ msgstr "Où puis-je obtenir une aide supplémentaire ?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "Signaler des problèmes et demander des fonctionnalités sur" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "En tant qu'administrateur, vous pouvez " +#~ "accéder à des informations système et" +#~ " à des diagnostics supplémentaires dans " +#~ "le" + +#~ msgid "section." +#~ msgstr "section." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "Vous avez encore besoin d'aide ?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "" +#~ "Vous ne trouvez pas ce que vous" +#~ " cherchez ? Voici des ressources " +#~ "supplémentaires :" + +#~ msgid "Complete Documentation" +#~ msgstr "" + +#~ msgid "Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started" +#~ msgstr "" + +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "Administrateur" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "Administrateur" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "Minuteries intelligentes" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "Réinitialiser" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "Dépôt GitHub" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Pause" +#~ msgid "Report Issue" +#~ msgstr "Signaler un problème" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Open support" +#~ msgstr "Soutien" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Aucune minuterie active." +#~ msgid "Search Results" +#~ msgstr "Résultats de la recherche" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "Rechercher des notes ou des balises" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "Fin de session" +#~ msgid "Results" +#~ msgstr "Résultats" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "Êtes-vous sûr de vouloir supprimer " +#~ "cette entrée de temps ? Cette " +#~ "action ne peut pas être annulée." -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "No results found" +#~ msgstr "Aucun résultat trouvé" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "Temps" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "Essayez une autre requête ou vérifiez votre orthographe." -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "Par exemple, réunion client, visite du site" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "Détails supplémentaires..." -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "Paramètres des heures supplémentaires" +#~ msgid "e.g., Office, Home" +#~ msgstr "par exemple, bureau, maison" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "par exemple, site client, aéroport" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "par exemple, 12345" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "par exemple, 12 400" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "Aligner à droite" +#~ msgid "e.g., VW Golf" +#~ msgstr "par exemple, VW Golf" -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "Suivez le temps. Restez organisé." +#~ msgid "e.g., ABC-123" +#~ msgstr "par exemple, ABC-123" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "Heures totales travaillées" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "Suivi du temps" -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "Alertes actives" +#~ msgid "Back to Mileage" +#~ msgstr "Retour aux rôles" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "Dater de" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "Add Point" +#~ msgstr "Ajouter une note" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "Suivi des dépenses" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "Valeur estimée" +#~ msgid "Track ID" +#~ msgstr "Suivi" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Idle" +#~ msgstr "Titre" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "Entrées de temps cette semaine" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Tracking" +#~ msgstr "Suivi du temps" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "Semaine" +#~ msgid "GPS tracking started" +#~ msgstr "Commencer le suivi du temps" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "L'année dernière" +#~ msgid "Track point added" +#~ msgstr "Suivre le paiement" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "GPS tracking stopped" +#~ msgstr "Commencer le suivi du temps" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Expense created" +#~ msgstr "Dépense rejetée" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Entrées récentes" +#~ msgid "Filter Mileage" +#~ msgstr "Filtrer le kilométrage" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "Tout afficher" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Reprendre - Démarrez une nouvelle minuterie avec les mêmes propriétés" +#~ msgid "Purpose, location..." +#~ msgstr "Objectif, emplacement..." -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Modifier l'entrée" +#~ msgid "Optional approval notes..." +#~ msgstr "Notes d'approbation facultatives..." -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Entrée en double" +#~ msgid "Rejection reason (required)" +#~ msgstr "Motif du refus (obligatoire)" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Supprimer l'entrée" +#~ msgid "More navigation" +#~ msgstr "Navigation mobile" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "Aucune entrée récente trouvée." +#~ msgid "Main" +#~ msgstr "E-mail" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "Tapez une commande ou recherchez..." -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Objectif hebdomadaire" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Jours restants" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Besoin" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "atteindre l'objectif" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Aucun objectif hebdomadaire" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Fixez-vous un objectif de temps hebdomadaire pour suivre vos progrès" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Créer un objectif" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "Meilleurs projets (30 jours)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "Rapport utilisateur" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "Diagrammes circulaires de distribution du temps" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "Aucune activité au cours des 30 derniers jours." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "Commencer le suivi du temps" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Meilleurs projets (30 jours)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Aucune activité au cours des 30 derniers jours." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "%(count)d citation(s) en double" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "Erreur lors de la génération du PDF : %(error)s" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "Prise en charge de la plateforme" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "Le mot de passe doit comporter au moins 8 caractères" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "Guide de démarrage rapide" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "Modèles d'e-mails" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Tâche (facultatif)" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Remarques (facultatif)" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "Tâche (facultatif)" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "par exemple, réunion, développement, administration" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "Enregistrer un nouveau paiement" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "Paiements totaux" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "Frais de passerelle" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Filter Payments" +#~ msgstr "Filtrer les paiements" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "ID" +#~ msgstr "Payé" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "Supprimer les paiements sélectionnés" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Modifier le statut des paiements sélectionnés" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "Facture associée" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "par exemple, voyage d'affaires à Berlin" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "par exemple, DE, US, GB" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Soutenir le développement" +#~ msgid "e.g., Berlin" +#~ msgstr "par exemple, Berlin" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "Filtrer les revendications" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "Supprimer les revendications sélectionnées" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Modifier le statut des réclamations sélectionnées" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "Notes supplémentaires sur ce tarif..." -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer ce tarif journalier ?" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Supprimer le taux journalier" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "Projet facturable" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "Heures estimées" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "Montant budgétaire" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "Nom de la tâche" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "Code du projet" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "Create Project" +#~ msgstr "Créer un projet" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Documentation complète et guide d'utilisation" +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Navigation rapide" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Filtrer les rubriques..." +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Démarrage rapide" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Rapports et analyses" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Fonctionnalités de productivité" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Fonctionnalités d'administration" +#~ msgid "Kanban board columns" +#~ msgstr "Colonnes du tableau Kanban" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Utilisation mobile" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "Documentation" +#~ msgid "Edit swimlane" +#~ msgstr "Modifier le couloir" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Dépannage" +#~ msgid "Column" +#~ msgstr "Colonne" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "Centre d'aide TimeTracker" +#~ msgid "List View" +#~ msgstr "Vue en liste" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "Tout ce que vous devez savoir pour tirer le meilleur parti de TimeTracker" +#~ msgid "Grid View" +#~ msgstr "Vue Grille" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Commencer le suivi du temps" +#~ msgid "Rate" +#~ msgstr "Date" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Voir les projets" +#~ msgid "Edit Project" +#~ msgstr "Modifier le projet" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Générer des rapports" +#~ msgid "Add Cost" +#~ msgstr "Ajouter une note" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "Jetons API" +#~ msgid "Add Cost to Project" +#~ msgstr "Retour au projet" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "par exemple, déplacement pour se rendre à une réunion client" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Guide de démarrage rapide" +#~ msgid "Brief description of the cost" +#~ msgstr "Brève description de cette catégorie..." -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "Pour les nouveaux utilisateurs" +#~ msgid "Select category" +#~ msgstr "Catégorie" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Connectez-vous avec votre nom d'utilisateur (aucun mot de passe requis)" +#~ msgid "Materials" +#~ msgstr "Matériel" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Explorez le tableau de bord pour voir votre aperçu" +#~ msgid "Software/Licenses" +#~ msgstr "par exemple, licence de logiciel" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Démarrez votre premier timer sur un projet existant" +#~ msgid "Additional details about this cost" +#~ msgstr "Détails supplémentaires sur cet ajustement" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Afficher vos entrées de temps dans les rapports" +#~ msgid "Billable to client" +#~ msgstr "Retour au client" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "Pour les administrateurs" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Configurer les clients dans la section Gestion des clients" +#~ msgid "Add Extra Good" +#~ msgstr "Ajouter du bien supplémentaire" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Créer des projets et les attribuer aux clients" +#~ msgid "Add a product or service to" +#~ msgstr "Ajouter un produit ou un service à" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Configurer les paramètres du système (fuseau horaire, devise, etc.)" +#~ msgid "Back to Project" +#~ msgstr "Retour au projet" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Gérer les utilisateurs et les autorisations" +#~ msgid "SKU/Product Code" +#~ msgstr "UGS/Code produit" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Conseil de pro :" +#~ msgid "What happens when you archive a project?" +#~ msgstr "Que se passe-t-il lorsque vous archivez un projet ?" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "Utilisez l'interface adaptée aux mobiles pour suivre le temps en déplacement. Le minuteur continue de fonctionner même si vous fermez votre navigateur !" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "Le projet sera masqué des listes de projets actifs" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "Suivi en temps réel avec détection automatique d'inactivité et mises à jour WebSocket" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "Aucune nouvelle entrée de temps ne peut être ajoutée à ce projet" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Saisie manuelle" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "Les données existantes et les entrées de temps sont préservées" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "Enregistrez l'heure manuellement avec des heures de début et de fin personnalisées" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "Vous pouvez désarchiver le projet plus tard si nécessaire" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Démarrer une minuterie" +#~ msgid "Reason for Archiving" +#~ msgstr "Raison de l'archivage" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "Par exemple, projet terminé, contrat " +#~ "client terminé, projet annulé, etc." -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "Accédez à la page ou au tableau de bord du minuteur" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "L'ajout d'une raison facilite l'organisation" +#~ " du projet et les références futures." -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Sélectionnez un projet dans la liste déroulante" +#~ msgid "Quick Select" +#~ msgstr "Sélection rapide" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "Sélectionnez éventuellement une tâche pour un suivi plus détaillé" +#~ msgid "Project completed successfully" +#~ msgstr "Projet terminé avec succès" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Ajouter des notes sur ce sur quoi vous travaillez (facultatif)" +#~ msgid "Project Completed" +#~ msgstr "Projet terminé" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Ajouter des balises séparées par des virgules (facultatif)" +#~ msgid "Client contract ended" +#~ msgstr "Contrat client terminé" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Cliquez sur \"Démarrer le minuteur\"" +#~ msgid "Contract Ended" +#~ msgstr "Contrat terminé" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Fonctionnalités de la minuterie" +#~ msgid "Project cancelled by client" +#~ msgstr "Projet annulé par le client" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Affichage de la durée en temps réel" +#~ msgid "Project on hold indefinitely" +#~ msgstr "Projet suspendu indéfiniment" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "On Hold" +#~ msgstr "En attente" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Maintenance period ended" +#~ msgstr "Période de maintenance terminée" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Maintenance Ended" +#~ msgstr "Maintenance terminée" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Continue à fonctionner si le navigateur se ferme" +#~ msgid "Archive Project" +#~ msgstr "Projet d'archives" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Détection automatique du ralenti (configurable)" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" +#~ "Mettre en place un nouveau projet " +#~ "pour organiser votre travail et suivre" +#~ " efficacement le temps" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Une minuterie active par utilisateur (configurable)" +#~ msgid "Enter a descriptive project name" +#~ msgstr "Entrez un nom de projet descriptif" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "Mises à jour en direct de WebSocket" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "Choisissez un nom clair et descriptif qui explique la portée du projet" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Saisie manuelle du temps" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Code court, par exemple ABC" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "Créez des entrées de temps manuellement lorsque vous devez enregistrer le temps passé loin de l'ordinateur ou ajuster les entrées existantes." +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Facultatif : Balise courte affichée sur les cartes Kanban" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Informations requises" +#~ msgid "Create new client" +#~ msgstr "Créer un nouveau client" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Sélection de projets" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "" +#~ "Fournir des informations détaillées sur " +#~ "le projet, les objectifs et les " +#~ "livrables..." -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Date et heure de début" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" +#~ "Facultatif : ajoutez du contexte, des" +#~ " objectifs ou des exigences spécifiques " +#~ "pour le projet" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Date et heure de fin" +#~ msgid "Enable billing for this project" +#~ msgstr "Activer la facturation pour ce projet" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Informations facultatives" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "Laisser vide pour les projets non facturables" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Affectation des tâches" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "Numéro de bon de commande, référence du contrat, etc." -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Description/remarques" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" +#~ "Facultatif : Ajoutez un numéro de " +#~ "référence ou un identifiant à des " +#~ "fins de facturation" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Balises pour la catégorisation" +#~ msgid "e.g. 10000.00" +#~ msgstr "par ex. 10000.00" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Remplacement du statut facturable" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "" +#~ "Facultatif : définissez un budget total" +#~ " de projet pour surveiller les " +#~ "dépenses" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Fonctionnalités avancées de saisie du temps" +#~ msgid "Alert Threshold (%)" +#~ msgstr "Seuil d'alerte (%)" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Entrée groupée" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "Notifier lorsque le budget consommé dépasse ce seuil" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "Créez plusieurs entrées de temps pour des jours consécutifs avec le même projet et la même durée. Parfait pour les modes de travail réguliers." +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Modèles" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "Enregistrez les entrées de temps fréquemment utilisées sous forme de modèles pour une réutilisation rapide. Enregistre le projet, la tâche et les notes." +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "Visualisez vos entrées de temps sur un calendrier. Glissez-déposez pour reprogrammer ou cliquez sur les dates pour ajouter des entrées." +#~ msgid "Project Creation Tips" +#~ msgstr "Conseils pour la création de projets" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Informations sur le projet" +#~ msgid "Clear Naming" +#~ msgstr "Effacer la dénomination" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Nom descriptif du projet" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "Utilisez des noms descriptifs qui indiquent clairement le but du projet" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Organisation cliente associée" +#~ msgid "Billing Setup" +#~ msgstr "Configuration de la facturation" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Détails et portée du projet" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Fixer des taux horaires appropriés en" +#~ " fonction de la complexité du projet" +#~ " et du budget du client" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Actif, complété ou archivé" +#~ msgid "Detailed Description" +#~ msgstr "Description détaillée" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Informations de facturation" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "Inclure les objectifs du projet, les livrables et les exigences clés" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Si le temps doit être suivi pour la facturation" +#~ msgid "Client Selection" +#~ msgstr "Sélection des clients" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Tarif pour les calculs de temps facturable" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "Choisir le bon client pour assurer une bonne organisation du projet" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Référence de facturation" +#~ msgid "Creating..." +#~ msgstr "Création..." -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "Numéro de bon de commande ou code de facturation" +#~ msgid "Could not create client. Please try again." +#~ msgstr "Impossible de créer le client. Veuillez réessayer." -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Opérations du projet" +#~ msgid "Client created" +#~ msgstr "Client créé" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Créer de nouveaux projets avec des relations clients" +#~ msgid "Network error while creating client" +#~ msgstr "Erreur réseau lors de la création du client" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Modifier les projets existants pour mettre à jour les détails" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "Tableau de bord et analyses du projet" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Archiver les projets pour les masquer des minuteries (préserve les données)" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Supprimer des projets (supprime toutes les entrées de temps associées)" +#~ msgid "Budget Analysis" +#~ msgstr "Analyse budgétaire" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Meilleures pratiques" +#~ msgid "All Time" +#~ msgstr "Tout le temps" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Utilisez des noms de projet descriptifs" +#~ msgid "Last 7 Days" +#~ msgstr "7 derniers jours" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Définir des taux horaires précis pour la facturation" +#~ msgid "Last 30 Days" +#~ msgstr "30 derniers jours" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Archiver au lieu de supprimer lorsque cela est possible" +#~ msgid "Last 3 Months" +#~ msgstr "3 derniers mois" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Utiliser les références de facturation pour le suivi externe" +#~ msgid "Last Year" +#~ msgstr "L'année dernière" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "Le système de gestion des clients vous aide à organiser votre travail par organisations clientes, en évitant les erreurs et en rationalisant la création de projets." +#~ msgid "estimated" +#~ msgstr "estimé" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Informations client" +#~ msgid "Budget Used" +#~ msgstr "Budget utilisé" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Nom de l'organisation" +#~ msgid "of budget" +#~ msgstr "du budget" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Nom de l'entreprise ou du client" +#~ msgid "Tasks Complete" +#~ msgstr "Tâches terminées" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Coordonnées principales" +#~ msgid "completion" +#~ msgstr "achèvement" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "E-mail et téléphone" +#~ msgid "Team Members" +#~ msgstr "Membres de l'équipe" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Coordonnées" +#~ msgid "contributing" +#~ msgstr "contribuer" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Adresse professionnelle" +#~ msgid "Budget vs. Actual" +#~ msgstr "Budget vs réel" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Avantages" +#~ msgid "No budget set for this project" +#~ msgstr "Aucun budget fixé pour ce projet" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "La sélection déroulante évite les fautes de frappe" +#~ msgid "Task Status Distribution" +#~ msgstr "Répartition du statut des tâches" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Les taux par défaut remplissent automatiquement les projets" +#~ msgid "No tasks created yet" +#~ msgstr "Aucune tâche créée pour le moment" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Dénomination cohérente des clients" +#~ msgid "Team Member Contributions" +#~ msgstr "Contributions des membres de l'équipe" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Organisation de projet plus facile" +#~ msgid "No time entries recorded yet" +#~ msgstr "Aucune entrée de temps enregistrée pour l'instant" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Nombre de projets" +#~ msgid "Time Tracking Timeline" +#~ msgstr "Chronologie du suivi du temps" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Projets totaux et actifs" +#~ msgid "Select a time period to view timeline" +#~ msgstr "Sélectionnez une période pour afficher la chronologie" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Heures totales travaillées" +#~ msgid "Team Member Details" +#~ msgstr "Détails des membres de l'équipe" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Estimation des coûts" +#~ msgid "tasks" +#~ msgstr "tâches" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Montants de facturation estimés" +#~ msgid "No team members have logged time yet" +#~ msgstr "Aucun membre de l'équipe n'a encore enregistré de temps" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "Décomposez les projets en tâches gérables avec un suivi détaillé et un suivi des progrès." +#~ msgid "Attention Required" +#~ msgstr "Attention requise" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Propriétés de la tâche" +#~ msgid "task(s) are overdue" +#~ msgstr "les tâches sont en retard" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Nom et description" +#~ msgid "Edit Cost" +#~ msgstr "Coût unitaire" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Identification claire des tâches" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Niveaux de priorité" +#~ msgid "Update Cost" +#~ msgstr "Mettre à jour les rôles" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Faible, Moyen, Élevé, Urgent" +#~ msgid "Edit Extra Good" +#~ msgstr "Modifier Extra Bon" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Dates d'échéance" +#~ msgid "Manage products and services for this project" +#~ msgstr "Gérer les produits et services pour ce projet" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Suivi des délais" +#~ msgid "Total Goods" +#~ msgstr "Marchandises totales" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Affectation" +#~ msgid "Billable Amount" +#~ msgstr "Montant facturable" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Propriété des tâches" +#~ msgid "Categories" +#~ msgstr "Catégories" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Suivi du statut" +#~ msgid "Invoiced" +#~ msgstr "Facturé" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "À faire - Pas commencé" +#~ msgid "Non-billable" +#~ msgstr "Non facturable" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "En cours - En cours de travail" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Etes-vous sûr de vouloir supprimer ce bien supplémentaire ?" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Révision – Prêt pour la révision" +#~ msgid "Delete Extra Good" +#~ msgstr "Supprimer Extra Bon" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Terminé - Terminé" +#~ msgid "No extra goods found for this project" +#~ msgstr "Aucune marchandise supplémentaire trouvée pour ce projet" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Annulé - Pas nécessaire" +#~ msgid "Add Your First Good" +#~ msgstr "Ajoutez votre premier bien" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Fonctionnalités de suivi du temps" +#~ msgid "Breakdown by Category" +#~ msgstr "Répartition par catégorie" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Démarrez les minuteries directement à partir des tâches" +#~ msgid "item(s)" +#~ msgstr "articles)" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Lier les entrées de temps à des tâches spécifiques" +#~ msgid "Filter Projects" +#~ msgstr "Filtrer les projets" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Suivez les heures estimées par rapport aux heures réelles" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Surveiller automatiquement la progression des tâches" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Vues des tâches" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Mes tâches - Vos tâches assignées" +#~ msgid "Mark project as Inactive?" +#~ msgstr "Marquer le projet comme inactif ?" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Toutes les tâches - Liste complète des tâches" +#~ msgid "Change Project Status" +#~ msgstr "Modifier le statut du projet" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Tâches en retard – Éléments en retard" +#~ msgid "Activate project?" +#~ msgstr "Activer le projet ?" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Tâches du projet - Tâches au sein des projets" +#~ msgid "Activate Project" +#~ msgstr "Activer le projet" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Fonctionnalités collaboratives" +#~ msgid "Archive" +#~ msgstr "Archive" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Commentaires sur les tâches – Discussions sur les tâches" +#~ msgid "Unarchive project?" +#~ msgstr "Désarchiver le projet ?" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Prise en charge de Markdown - Mise en forme riche dans les descriptions" +#~ msgid "Unarchive Project" +#~ msgstr "Désarchiver le projet" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Mentions utilisateur – Taguer les membres de l'équipe (si activé)" +#~ msgid "Unarchive" +#~ msgstr "Désarchiver" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Pièces jointes : Joindre des fichiers aux tâches (si activé)" +#~ msgid "Delete Project" +#~ msgstr "Supprimer le projet" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Formatage Markdown" +#~ msgid "Archive Information" +#~ msgstr "Informations sur les archives" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "Les descriptions de tâches et de projets prennent en charge Markdown :" +#~ msgid "Archived on:" +#~ msgstr "Archivé sur :" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Gras**, *Italique*, ~~Barré~~" +#~ msgid "Archived by:" +#~ msgstr "Archivé par :" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# Rubriques, - Listes, [Liens](url)" +#~ msgid "Reason:" +#~ msgstr "Raison:" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```blocs de code```, tableaux, images" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "Visualisez votre flux de travail avec un tableau Kanban par glisser-déposer pour une gestion intuitive des tâches." +#~ msgid "Budget Overview" +#~ msgstr "Aperçu budgétaire" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Caractéristiques du tableau" +#~ msgid "Over" +#~ msgstr "Sur" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Colonnes personnalisables correspondant aux statuts des tâches" +#~ msgid "View Full Budget Analysis" +#~ msgstr "Voir l'analyse budgétaire complète" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Glisser-déposer des tâches entre les colonnes" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Filtrer par projet, utilisateur ou priorité" +#~ msgid "Tasks for this project" +#~ msgstr "Tâches pour ce projet" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Recherche rapide dans toutes les tâches" +#~ msgid "Due" +#~ msgstr "Exigible" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Utiliser le tableau Kanban" +#~ msgid "Estimated" +#~ msgstr "Estimé" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Accès depuis le menu Tâches ou la page du projet" +#~ msgid "No tasks for this project." +#~ msgstr "Aucune tâche pour ce projet." -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Faites glisser les tâches vers différentes colonnes pour changer de statut" +#~ msgid "Move up" +#~ msgstr "déménagé à" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Cliquez sur une fiche de tâche pour afficher/modifier les détails" +#~ msgid "Move down" +#~ msgstr "déménagé à" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Utilisez des filtres pour vous concentrer sur un travail spécifique" +#~ msgid "Manual entry" +#~ msgstr "Saisie manuelle" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "Le tableau Kanban est parfait pour la planification de sprints et les standups quotidiens. Chaque colonne représente une étape de votre workflow !" +#~ msgid "From stock" +#~ msgstr "Stock faible" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Suivi des dépenses" +#~ msgid "Duplicate" +#~ msgstr "Double" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "Suivez les dépenses professionnelles, gérez les reçus et gérez efficacement les remboursements." +#~ msgid "Mark as Sent" +#~ msgstr "Marquer comme envoyé" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Caractéristiques des dépenses" +#~ msgid "Accepted" +#~ msgstr "Accepté" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Catégoriser les dépenses (déplacements, repas, fournitures, etc.)" +#~ msgid "Create Your First Quote" +#~ msgstr "Créez votre premier devis" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Joindre des images et des documents de reçu" +#~ msgid "Learn More" +#~ msgstr "Apprendre encore plus" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Suivez les montants, les taxes et les modes de paiement" +#~ msgid "Back to Quote" +#~ msgstr "Retour au devis" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Workflow d’approbation des demandes de dépenses" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "Accepter ce devis créera un nouveau projet avec le budget du devis." -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Facturation et remboursement" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "Le projet sera créé avec le budget du devis" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Marquer les dépenses comme facturables aux clients" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Accepter le devis et créer un projet" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Inclure les dépenses dans les factures des clients" +#~ msgid "Create Quote" +#~ msgstr "Créer un devis" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Suivre l’état du remboursement" +#~ msgid "Quote title" +#~ msgstr "Titre de la citation" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Lier les dépenses à des projets spécifiques" +#~ msgid "Quote description" +#~ msgstr "Description du devis" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Enregistrer les dépenses" +#~ msgid "Quote line items" +#~ msgstr "Articles de devis" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Entrez les détails et téléchargez le reçu" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Soumettre pour approbation" +#~ msgid "Add line" +#~ msgstr "Date limite" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "L'administrateur examine et approuve" +#~ msgid "Line type" +#~ msgstr "Type de contenu" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Facture/Remboursement" +#~ msgid "Stock" +#~ msgstr "Stock faible" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Ajouter à la facture ou rembourser" +#~ msgid "Line items subtotal" +#~ msgstr "Sous-total des articles" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Suivre le paiement" +#~ msgid "Costs" +#~ msgstr "Coût" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Surveiller l'état du remboursement" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "par exemple, VOYAGES, REPAS" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Facturation professionnelle" +#~ msgid "Add cost" +#~ msgstr "Ajouter une note" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Génération PDF professionnelle" +#~ msgid "Costs subtotal" +#~ msgstr "Sous-total des articles" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Image de marque et logos de l'entreprise" +#~ msgid "Extra goods" +#~ msgstr "Marchandises supplémentaires" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Numérotation automatique des factures" +#~ msgid "Products, licenses, hardware" +#~ msgstr "Produits, matériaux, licences et autres biens" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Calculs d'impôts" +#~ msgid "Add good" +#~ msgstr "Ajouter du bien" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Intégration du temps" +#~ msgid "Goods subtotal" +#~ msgstr "Sous-total des marchandises" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Générer à partir des entrées de temps" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Total des cotations" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Regroupement intelligent par tâche/projet" +#~ msgid "Financial Details" +#~ msgstr "Détails financiers" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Prévenir la double facturation" +#~ msgid "Select payment terms" +#~ msgstr "Sélectionnez les conditions de paiement" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Utiliser les taux horaires du projet" +#~ msgid "Due on Receipt" +#~ msgstr "Exigible à réception" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Configurer les détails du client et du projet" +#~ msgid "Or enter custom payment terms" +#~ msgstr "Ou saisissez des conditions de paiement personnalisées" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Ajouter des éléments" +#~ msgid "Use custom terms" +#~ msgstr "Utiliser des termes personnalisés" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Générer à partir du temps ou ajouter manuellement" +#~ msgid "Discount" +#~ msgstr "Rabais" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Vérifier et envoyer" +#~ msgid "Discount Type" +#~ msgstr "Type de remise" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "Exporter le PDF et mettre à jour le statut" +#~ msgid "No Discount" +#~ msgstr "Pas de réduction" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Surveiller le statut et les paiements" +#~ msgid "Percentage (%)" +#~ msgstr "Pourcentage (%)" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Rapports standards" +#~ msgid "Fixed Amount" +#~ msgstr "Montant fixe" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Rapport de projet - Répartition du temps par projet" +#~ msgid "Discount Amount" +#~ msgstr "Montant de la remise" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Rapport utilisateur – Mesures de performances individuelles" +#~ msgid "0.00" +#~ msgstr "0,00" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Rapport de synthèse – Indicateurs et tendances clés" +#~ msgid "Coupon Code" +#~ msgstr "Code promo" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Rapport de saisie du temps - Journaux de temps détaillés" +#~ msgid "Optional coupon code" +#~ msgstr "Code promo facultatif" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Options d'exportation" +#~ msgid "Discount Reason" +#~ msgstr "Raison de la remise" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "Exportation CSV – Pour analyse externe" +#~ msgid "Reason for discount" +#~ msgstr "Raison de la remise" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Délimiteurs configurables" +#~ msgid "Approval Workflow" +#~ msgstr "Flux de travail d'approbation" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Plages de dates personnalisées" +#~ msgid "Requires approval before sending" +#~ msgstr "Nécessite une approbation avant l'envoi" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Exportation de données filtrées" +#~ msgid "Additional Information" +#~ msgstr "Informations Complémentaires" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Options de filtre" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Notes internes (non visibles par le client)" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Plage de dates – Dates de début et de fin personnalisées" +#~ msgid "These notes are only visible to your team" +#~ msgstr "Ces notes ne sont visibles que par votre équipe" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Projet - Filtrer par projets spécifiques" +#~ msgid "Terms and Conditions" +#~ msgstr "Termes et conditions" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Utilisateur - Filtrer par membres de l'équipe" +#~ msgid "Terms and conditions" +#~ msgstr "Termes et conditions" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Client - Filtrer par organisation cliente" +#~ msgid "These terms will be visible to the client" +#~ msgstr "Ces termes seront visibles par le client" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Filtres enregistrés - Enregistrez les filtres fréquemment utilisés" +#~ msgid "Edit Quote" +#~ msgstr "Modifier le devis" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Analyse visuelle" +#~ msgid "Client cannot be changed" +#~ msgstr "Le client ne peut pas être modifié" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Graphiques à barres interactifs" +#~ msgid "Update Quote" +#~ msgstr "Mettre à jour le devis" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Diagrammes circulaires de distribution du temps" +#~ msgid "Total Quotes" +#~ msgstr "Total des cotations" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Analyse des tendances au fil du temps" +#~ msgid "Acceptance Rate" +#~ msgstr "Taux d'acceptation" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Graphiques optimisés pour les mobiles" +#~ msgid "Avg Quote Value" +#~ msgstr "Valeur moyenne du devis" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "Utilisez les filtres enregistrés pour accéder rapidement à vos vues de rapport les plus courantes. Enregistrez des filtres pour les évaluations hebdomadaires, la facturation mensuelle ou le suivi d'un projet spécifique !" +#~ msgid "Quotes by Status" +#~ msgstr "Citations par statut" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "Améliorez votre efficacité grâce aux raccourcis clavier, à la palette de commandes et aux fonctionnalités d'automatisation." +#~ msgid "Top Clients by Quotes" +#~ msgstr "Meilleurs clients par devis" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Palette de commandes" +#~ msgid "Filter Quotes" +#~ msgstr "Filtrer les devis" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Accédez instantanément à n’importe quelle fonctionnalité sans quitter le clavier" +#~ msgid "Search quotes..." +#~ msgstr "Rechercher des citations..." -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Ouverture de la palette de commandes" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "Etes-vous sûr de vouloir dupliquer" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Appuyez sur la touche point d'interrogation" +#~ msgid "quote(s)?" +#~ msgstr "citations)?" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "Recherche rapide" +#~ msgid "Are you sure you want to mark" +#~ msgstr "Etes-vous sûr de vouloir marquer" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Aller aux projets" +#~ msgid "quote(s) as sent?" +#~ msgstr "devis tel(s) envoyé(s) ?" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Accédez aux tâches" +#~ msgid "QUOTE" +#~ msgstr "CITATION" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Nouvelle entrée de temps" +#~ msgid "Quote #" +#~ msgstr "Citation #" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Raccourcis clavier" +#~ msgid "Quote For" +#~ msgstr "Devis pour" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "Naviguez plus rapidement grâce aux commandes pilotées par le clavier. Appuyez sur Maj+ ? pour voir tous les raccourcis." +#~ msgid "Subtotal After Discount:" +#~ msgstr "Sous-total après remise :" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Recherche globale" +#~ msgid "Description:" +#~ msgstr "Description:" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "Trouvez rapidement des projets, des tâches, des clients et des entrées de temps depuis n'importe où dans l'application." +#~ msgid "Subtotal After Discount" +#~ msgstr "Sous-total après remise" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "Notifications par courrier électronique" +#~ msgid "Approval not yet requested" +#~ msgstr "Approbation pas encore demandée" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "Soyez informé des affectations de tâches, des factures en retard et des résumés hebdomadaires par e-mail." +#~ msgid "Pending approval" +#~ msgstr "En attente d'approbation" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Fonctionnalités d'administrateur" +#~ msgid "Rejected by" +#~ msgstr "Rejeté par" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Créez de nouveaux utilisateurs avec une authentification flexible" +#~ msgid "Request Approval Again" +#~ msgstr "Demander à nouveau l'approbation" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Attribuez des rôles personnalisés avec des autorisations spécifiques" +#~ msgid "Send Quote" +#~ msgstr "Envoyer un devis" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Activer/désactiver les comptes utilisateurs" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "Êtes-vous sûr de vouloir rejeter ce devis ?" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Afficher les statistiques et l'activité des utilisateurs" +#~ msgid "Delete Quote" +#~ msgstr "Supprimer le devis" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Générer des jetons API pour les utilisateurs" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Commentaire interne (non visible par le client)" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Contrôle d'accès" +#~ msgid "Internal" +#~ msgstr "Interne" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Système d'autorisations granulaire basé sur les rôles" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer ce commentaire ?" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Rôles personnalisés avec accès précis" +#~ msgid "Write a reply..." +#~ msgstr "Écrivez une réponse..." -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Contrôles d'accès aux données utilisateur" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Pas encore de commentaires. Démarrez la" +#~ " conversation en ajoutant le premier " +#~ "commentaire." -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "Intégration OIDC/SSO (Azure AD, Authelia, etc.)" +#~ msgid "Sent At" +#~ msgstr "Envoyé à" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "Gestion des jetons API pour les intégrations" +#~ msgid "Accepted At" +#~ msgstr "Accepté à" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Méthodes d'authentification" +#~ msgid "Send Quote via Email" +#~ msgstr "Envoyer un devis par e-mail" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Nom d'utilisateur uniquement (usage interne simple)" +#~ msgid "Recipient Email" +#~ msgstr "E-mail du destinataire" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (authentification d'entreprise)" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "Citation %(quote_number)s" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Les deux méthodes simultanément" +#~ msgid "Custom Message (Optional)" +#~ msgstr "Message personnalisé (facultatif)" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Attribution automatique des rôles via des groupes" +#~ msgid "Add a custom message to the email..." +#~ msgstr "Ajouter un message personnalisé à l'e-mail..." -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Gestion des rôles et des autorisations" +#~ msgid "Attach PDF" +#~ msgstr "Joindre un PDF" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Créez des rôles personnalisés au-delà de l'administrateur/utilisateur" +#~ msgid "Approve Quote" +#~ msgstr "Approuver le devis" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Définir des autorisations granulaires par fonctionnalité" +#~ msgid "Notes (Optional)" +#~ msgstr "Remarques (facultatif)" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Attribuer des utilisateurs à plusieurs rôles" +#~ msgid "Add approval notes..." +#~ msgstr "Ajouter des notes d'approbation..." -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Afficher et gérer toutes les autorisations" +#~ msgid "Reject Quote Approval" +#~ msgstr "Rejeter l'approbation du devis" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Paramètres généraux" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Veuillez indiquer le motif du refus..." -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Paramètres de fuseau horaire et de paramètres régionaux" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Êtes-vous sûr de vouloir supprimer " +#~ "cette citation ? Cette action ne " +#~ "peut pas être annulée." -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Configuration des devises" +#~ msgid "Create Recurring Invoice" +#~ msgstr "Créer une facture récurrente" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Règles d'arrondi des temps" +#~ msgid "Update Recurring Invoice" +#~ msgstr "Mettre à jour la facture récurrente" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Paramètres d'auto-inscription" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "" +#~ "Automatisez la génération de factures " +#~ "pour la facturation par abonnement" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Paramètres de la minuterie" +#~ msgid "Frequency" +#~ msgstr "Fréquence" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Configuration du délai d'inactivité" +#~ msgid "Next Run" +#~ msgstr "Prochaine exécution" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Mode minuterie active unique" +#~ msgid "Generate Now" +#~ msgstr "Générer maintenant" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Préférences d'affichage du minuteur" +#~ msgid "Template Details" +#~ msgstr "Détails du modèle" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Paramètres de notification" +#~ msgid "Invoice Settings" +#~ msgstr "Paramètres de facture" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Gestion de base de données" +#~ msgid "Recently Generated Invoices" +#~ msgstr "Factures récemment générées" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Créer des sauvegardes manuelles de base de données" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Afficher l'état de migration de la base de données" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Surveiller les performances de la base de données" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Nettoyer les anciennes données et journaux" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Surveillance du système" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Afficher les informations et l'état du système" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Surveiller les performances des applications" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Examiner les journaux et les erreurs du système" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Fonctionnalités adaptées aux mobiles" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Optimisé pour les téléphones et les tablettes" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Interface tactile" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "Dispositions adaptatives pour toutes les tailles d'écran" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Contraste élevé pour une visibilité extérieure" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Navigation mobile" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Barre d'onglets inférieure pour un accès facile" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Accès rapide au tableau de bord" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Enregistrement du temps en un seul clic" +#~ msgid "Assign To" +#~ msgstr "Attribuer à" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Rapports optimisés pour les mobiles" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Installation" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Ouvrez TimeTracker dans votre navigateur mobile" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Recherchez l'option \"Ajouter à l'écran d'accueil\"." +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Suivez les invites d'installation spécifiques au navigateur" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Lancez-vous depuis votre écran d'accueil comme une application native" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "Avantages PWA" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Capacité hors ligne pour les fonctions de base" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Des temps de chargement plus rapides" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Expérience de type application native" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Notifications push (si prises en charge)" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "Graphiques à barres interactifs" +#~ msgid "Add table to report" +#~ msgstr "Rapports disponibles" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "Spécifications techniques" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Add chart to report" +#~ msgstr "Rapports standards" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "Documentation" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Dépannage et FAQ" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "Que se passe-t-il si j'oublie d'arrêter mon chronomètre ?" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "La minuterie continuera à fonctionner jusqu'à ce que vous l'arrêtiez manuellement. Vous pouvez voir votre minuterie active sur le tableau de bord et la page de la minuterie. Le minuteur persiste même si vous fermez votre navigateur ou redémarrez votre appareil. Si la détection d'inactivité est activée, la minuterie peut s'arrêter automatiquement après le délai d'attente configuré." +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "Puis-je modifier les entrées de temps après leur création ?" +#~ msgid "Add summary to report" +#~ msgstr "Rapport sommaire" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "Oui, vous pouvez modifier n'importe quelle entrée de temps en cliquant sur le bouton Modifier dans la liste des entrées de temps. Vous pouvez modifier le projet, les heures de début/fin, les notes, les balises, le statut facturable et l'affectation des tâches. Les administrateurs peuvent modifier toutes les entrées de temps, tandis que les utilisateurs réguliers ne peuvent modifier que leurs propres entrées." +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "Comment puis-je suivre le temps de plusieurs projets ?" +#~ msgid "Report canvas" +#~ msgstr "Toile transparente" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "Par défaut, vous ne pouvez avoir qu'un seul minuteur actif à la fois. Pour changer de projet, arrêtez votre minuteur actuel et démarrez-en un nouveau pour l'autre projet. Vous pouvez également créer des entrées de temps manuelles pour les travaux antérieurs ou configurer le système pour autoriser plusieurs minuteries actives (paramètre administrateur)." +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "Comment exporter mes données temporelles ?" +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "Accédez à la page Rapports et utilisez la fonctionnalité « Exporter CSV ». Vous pouvez appliquer des filtres pour exporter des données spécifiques ou exporter toutes les entrées de temps. Le fichier CSV comprend tous les détails de saisie du temps et peut être ouvert dans Excel ou d'autres applications de feuille de calcul. Vous pouvez également configurer le délimiteur pour différentes normes régionales." +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "Quelle est la différence entre le temps facturable et le temps non facturable ?" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "Le temps facturable est suivi à des fins de facturation des clients et peut être associé à un taux horaire. Le temps non facturable est destiné au travail interne qui n'est pas facturé aux clients. Vous pouvez marquer des entrées de temps individuelles comme facturables ou non facturables, et les projets peuvent avoir des paramètres facturables par défaut. Cette distinction est cruciale pour une facturation précise et une analyse de rentabilité." +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "Comment créer une facture à partir de mes saisies de temps ?" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "Accédez à Factures → Créer une facture, configurez les détails du client et du projet, puis utilisez « Générer à partir des entrées de temps » pour créer automatiquement des éléments de facture à partir de votre temps suivi. Vous pouvez filtrer par plage de dates et par projet, et le système regroupera intelligemment les entrées de temps. Examinez les éléments générés et exportez-les au format PDF professionnel." +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "Puis-je utiliser TimeTracker sur mon appareil mobile ?" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "Oui! TimeTracker est entièrement réactif et fonctionne très bien sur les appareils mobiles. Vous pouvez l'installer en tant que Progressive Web App (PWA) pour une expérience de type natif. L'interface mobile comprend une barre d'onglets inférieure pour une navigation facile et des commandes tactiles optimisées pour le suivi du temps en déplacement." +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "Comment utiliser la palette de commandes et les raccourcis clavier ?" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "Appuyez sur la touche point d'interrogation (?) pour ouvrir la palette de commandes. À partir de là, vous pouvez taper pour rechercher n’importe quelle action ou cible de navigation. Utilisez des séquences de clavier telles que « g d » pour le tableau de bord, « g p » pour les projets ou « n e » pour une nouvelle entrée. Appuyez sur Maj+ ? pour voir tous les raccourcis disponibles. Appuyez sur Ctrl+K (ou Cmd+K sur Mac) pour une recherche rapide." +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "Comment créer des entrées de temps groupées pour plusieurs jours ?" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "Accédez à Travail → Saisie groupée du temps. Sélectionnez votre projet, choisissez une plage de dates, définissez vos heures de début et de fin quotidiennes et éventuellement ignorez les week-ends. Le système créera des entrées de temps identiques pour chaque jour de la plage. C'est parfait pour enregistrer des habitudes de travail régulières ou pour renseigner le temps passé lorsque vous avez travaillé des heures constantes." +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "Que sont les modèles de saisie du temps et comment les utiliser ?" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "Les modèles de saisie du temps vous permettent d'enregistrer les configurations de saisie du temps fréquemment utilisées. Lors de la création d'une saisie manuelle du temps, cochez « Enregistrer en tant que modèle » pour enregistrer le projet, la tâche et les notes. Plus tard, lors de la création de nouvelles entrées, vous pourrez sélectionner un modèle pour remplir rapidement ces détails. Les modèles sont personnels et visibles uniquement par vous." +#~ msgid "Private" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "Comment suivre les dépenses et les ajouter aux factures ?" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "Accédez à Dépenses → Nouvelle dépense pour enregistrer les dépenses professionnelles. Téléchargez des images de reçus, catégorisez la dépense et marquez-la comme facturable si nécessaire. Lors de la création de factures, vous pouvez inclure ces dépenses sous forme de postes. Les dépenses prennent en charge les flux de travail d'approbation, le suivi des remboursements et peuvent être liées à des projets spécifiques." +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "Puis-je utiliser Markdown dans les descriptions ?" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "Oui! Les descriptions de projets et de tâches prennent en charge le formatage Markdown complet. Vous pouvez utiliser des titres en gras, en italique, des listes, des liens, des blocs de code, des tableaux et des images. Cela vous permet de créer une documentation riche et bien formatée directement dans vos projets et tâches. L'éditeur Markdown comprend un mode aperçu et prend en charge le thème sombre." +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "Où puis-je obtenir une aide supplémentaire ?" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Signaler des problèmes et demander des fonctionnalités sur" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "En tant qu'administrateur, vous pouvez accéder à des informations système et à des diagnostics supplémentaires dans le" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "section." +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "Vous avez encore besoin d'aide ?" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "Vous ne trouvez pas ce que vous cherchez ? Voici des ressources supplémentaires :" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "Dépôt GitHub" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Signaler un problème" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "Export Time Entries" +#~ msgstr "Entrées de temps récentes" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "Soutien" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Résultats de la recherche" +#~ msgid "Export format" +#~ msgstr "Format d'exportation" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Rechercher des notes ou des balises" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "par exemple, développement, réunion, urgence" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Résultats" +#~ msgid "Reset Filters" +#~ msgstr "Filtres enregistrés" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "Êtes-vous sûr de vouloir supprimer cette entrée de temps ? Cette action ne peut pas être annulée." +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "Aucun résultat trouvé" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Essayez une autre requête ou vérifiez votre orthographe." +#~ msgid "Please select both start and end dates." +#~ msgstr "Plage de dates – Dates de début et de fin personnalisées" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "Par exemple, réunion client, visite du site" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "La date de début doit être antérieure à la date de fin" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Détails supplémentaires..." +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "par exemple, bureau, maison" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "par exemple, site client, aéroport" +#~ msgid "Payments Received" +#~ msgstr "Champs de paiement" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "par exemple, 12345" +#~ msgid "Net Received" +#~ msgstr "Reçu" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "par exemple, 12 400" +#~ msgid "After fees" +#~ msgstr "Frais de passerelle" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "par exemple, VW Golf" +#~ msgid "Date Range & Comparison" +#~ msgstr "Plage de dates et comparaison" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "par exemple, ABC-123" +#~ msgid "Quick Date Ranges" +#~ msgstr "Plages de dates rapides" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "Suivi du temps" +#~ msgid "This Week" +#~ msgstr "Semaine" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "Retour aux rôles" +#~ msgid "This Month" +#~ msgstr "Mois" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "This Year" +#~ msgstr "L'année dernière" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "Dater de" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "Ajouter une note" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "Suivi des dépenses" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "Suivi" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "Titre" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "Plages de dates personnalisées" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "Comparison View" +#~ msgstr "Vue comparative" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "Suivi du temps" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "Commencer le suivi du temps" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "Suivre le paiement" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "Commencer le suivi du temps" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "Dépense rejetée" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Filtrer le kilométrage" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "Aperçu en direct" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Objectif, emplacement..." +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Notes d'approbation facultatives..." +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Motif du refus (obligatoire)" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "Navigation mobile" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "E-mail" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Tapez une commande ou recherchez..." +#~ msgid "Comparison Results" +#~ msgstr "Résultats de comparaison" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "Exporter des rapports" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "Format d'exportation" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "Exporter des rapports" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Rapports planifiés" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "Importation CSV" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "Exporter" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "Report Types" +#~ msgstr "Types de rapports" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "Rapport de projet" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "User Report" +#~ msgstr "Rapport utilisateur" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "Rapport sommaire" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "Rapport de tâche" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "Entrées de temps" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "Entrées récentes" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "No scheduled reports yet." +#~ msgstr "Rapports planifiés" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Add Scheduled Report" +#~ msgstr "Rapports planifiés" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Please set a date range" +#~ msgstr "Plages de dates personnalisées" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Enregistrer un nouveau paiement" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Paiements totaux" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Frais de passerelle" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Filtrer les paiements" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "Payé" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Supprimer les paiements sélectionnés" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Modifier le statut des paiements sélectionnés" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Facture associée" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "par exemple, voyage d'affaires à Berlin" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "par exemple, DE, US, GB" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "par exemple, Berlin" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Filtrer les revendications" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Supprimer les revendications sélectionnées" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Modifier le statut des réclamations sélectionnées" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Notes supplémentaires sur ce tarif..." +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "Êtes-vous sûr de vouloir supprimer ce tarif journalier ?" +#~ msgid "No data for the selected period." +#~ msgstr "Aucune donnée de vente trouvée pour la période sélectionnée." -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Supprimer le taux journalier" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Projet facturable" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Heures estimées" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Montant budgétaire" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "Nom de la tâche" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Code du projet" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Créer un projet" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Colonnes du tableau Kanban" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Modifier le couloir" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Colonne" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Vue en liste" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Vue Grille" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "Date" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Modifier le projet" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "Ajouter une note" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "Retour au projet" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "par exemple, déplacement pour se rendre à une réunion client" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "Brève description de cette catégorie..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "Catégorie" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "Matériel" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "par exemple, licence de logiciel" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "Détails supplémentaires sur cet ajustement" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "Retour au client" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Ajouter du bien supplémentaire" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Ajouter un produit ou un service à" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Retour au projet" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "UGS/Code produit" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "Que se passe-t-il lorsque vous archivez un projet ?" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "Le projet sera masqué des listes de projets actifs" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "Aucune nouvelle entrée de temps ne peut être ajoutée à ce projet" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "Les données existantes et les entrées de temps sont préservées" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Vous pouvez désarchiver le projet plus tard si nécessaire" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Raison de l'archivage" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Meilleurs projets (30 jours)" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "Par exemple, projet terminé, contrat client terminé, projet annulé, etc." +#~ msgid "Time distribution by project" +#~ msgstr "Diagrammes circulaires de distribution du temps" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "L'ajout d'une raison facilite l'organisation du projet et les références futures." +#~ msgid "No project data for the last 30 days." +#~ msgstr "Aucune activité au cours des 30 derniers jours." -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Sélection rapide" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Projet terminé avec succès" +#~ msgid "Daily hours trend" +#~ msgstr "Tendance des heures quotidiennes" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Projet terminé" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Contrat client terminé" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Contrat terminé" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Projet annulé par le client" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Projet suspendu indéfiniment" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "En attente" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Période de maintenance terminée" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Maintenance terminée" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Projet d'archives" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "Mettre en place un nouveau projet pour organiser votre travail et suivre efficacement le temps" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Entrez un nom de projet descriptif" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Choisissez un nom clair et descriptif qui explique la portée du projet" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Code court, par exemple ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Facultatif : Balise courte affichée sur les cartes Kanban" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Créer un nouveau client" +#~ msgid "No trend data." +#~ msgstr "Données de devis" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "Fournir des informations détaillées sur le projet, les objectifs et les livrables..." +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Meilleurs projets (30 jours)" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "Facultatif : ajoutez du contexte, des objectifs ou des exigences spécifiques pour le projet" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "Aucune donnée de vente trouvée pour la période sélectionnée." -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Activer la facturation pour ce projet" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "Laisser vide pour les projets non facturables" +#~ msgid "All Clients" +#~ msgstr "Clientèle" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "Numéro de bon de commande, référence du contrat, etc." +#~ msgid "All Tasks" +#~ msgstr "Afficher toutes les tâches" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "Facultatif : Ajoutez un numéro de référence ou un identifiant à des fins de facturation" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "Aucune donnée de vente trouvée pour la période sélectionnée." -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "par ex. 10000.00" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "Facultatif : définissez un budget total de projet pour surveiller les dépenses" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Seuil d'alerte (%)" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Notifier lorsque le budget consommé dépasse ce seuil" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Conseils pour la création de projets" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Effacer la dénomination" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "Essayez une autre requête ou vérifiez votre orthographe." -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Utilisez des noms descriptifs qui indiquent clairement le but du projet" +#~ msgid "About Overtime Tracking" +#~ msgstr "À propos du suivi des heures supplémentaires" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Configuration de la facturation" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "Fixer des taux horaires appropriés en fonction de la complexité du projet et du budget du client" +#~ msgid "Back to Reports" +#~ msgstr "Retour aux rôles" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Description détaillée" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "Entrées de temps cette semaine" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "Inclure les objectifs du projet, les livrables et les exigences clés" +#~ msgid "Top projects this week" +#~ msgstr "Meilleurs projets" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Sélection des clients" +#~ msgid "No time logged this week yet." +#~ msgstr "Aucune entrée de temps enregistrée pour cette semaine pour le moment" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "Choisir le bon client pour assurer une bonne organisation du projet" +#~ msgid "Apply filter" +#~ msgstr "Appliquer le filtre" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Création..." +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer ce filtre ?" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "Impossible de créer le client. Veuillez réessayer." +#~ msgid "Delete Filter" +#~ msgstr "Supprimer le filtre" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Client créé" +#~ msgid "Go to Reports" +#~ msgstr "Rapport de stock faible" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Erreur réseau lors de la création du client" +#~ msgid "No saved filters yet" +#~ msgstr "Filtres enregistrés" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "Tableau de bord et analyses du projet" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "Customize Shortcuts" +#~ msgstr "Personnaliser les raccourcis" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Analyse budgétaire" +#~ msgid "Search shortcuts..." +#~ msgstr "Rechercher des raccourcis..." -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Tout le temps" +#~ msgid "Save changes" +#~ msgstr "Enregistrer les modifications" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "7 derniers jours" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "30 derniers jours" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "3 derniers mois" +#~ msgid "Click to record" +#~ msgstr "Faites glisser pour réorganiser" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "L'année dernière" +#~ msgid "Revert" +#~ msgstr "Réinitialiser" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "estimé" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Budget utilisé" +#~ msgid "Failed to save" +#~ msgstr "Échec de l'arrêt du chronomètre" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "du budget" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Tâches terminées" +#~ msgid "Failed to save shortcuts." +#~ msgstr "Échec de la mise à jour du statut" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "achèvement" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "Cela réinitialisera tous les raccourcis " +#~ "clavier à leurs valeurs par défaut. " +#~ "Continuer?" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Membres de l'équipe" +#~ msgid "Reset to Defaults" +#~ msgstr "Réinitialiser aux valeurs par défaut" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "contribuer" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "Réinitialiser aux valeurs par défaut ?" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Budget vs réel" +#~ msgid "Failed to reset" +#~ msgstr "Échec de la suppression de l'avatar." -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "Aucun budget fixé pour ce projet" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Réinitialiser aux valeurs par défaut" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Répartition du statut des tâches" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "Échec de la mise à jour du statut" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Aucune tâche créée pour le moment" +#~ msgid "Failed to load shortcuts." +#~ msgstr "Échec du chargement des tâches" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Contributions des membres de l'équipe" +#~ msgid "Welcome" +#~ msgstr "Accueillir" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Aucune entrée de temps enregistrée pour l'instant" +#~ msgid "Privacy First" +#~ msgstr "La confidentialité d'abord" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Chronologie du suivi du temps" +#~ msgid "Self-hosted on your server" +#~ msgstr "Auto-hébergé sur votre serveur" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Sélectionnez une période pour afficher la chronologie" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Télémétrie anonyme (opt-in)" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Détails des membres de l'équipe" +#~ msgid "No PII collected ever" +#~ msgstr "Aucune information personnelle n'a été collectée" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "tâches" +#~ msgid "Open source & transparent" +#~ msgstr "Open source et transparent" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Aucun membre de l'équipe n'a encore enregistré de temps" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Attention requise" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "les tâches sont en retard" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "Coût unitaire" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Bienvenue sur TimeTracker" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "Laissez-vous installer dans un instant" -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "Mettre à jour les rôles" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Modifier Extra Bon" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Gérer les produits et services pour ce projet" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Marchandises totales" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Montant facturable" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Catégories" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "Facturé" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "Non facturable" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "Etes-vous sûr de vouloir supprimer ce bien supplémentaire ?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Supprimer Extra Bon" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "Aucune marchandise supplémentaire trouvée pour ce projet" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Ajoutez votre premier bien" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Répartition par catégorie" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "articles)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Filtrer les projets" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Merci d'avoir choisi TimeTracker !" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "Vos données restent sur votre serveur et vous avez un contrôle total." -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "Region & time" +#~ msgstr "Heure de fin" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "Marquer le projet comme inactif ?" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Modifier le statut du projet" +#~ msgid "Timezone" +#~ msgstr "Fuseau horaire" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "Activer le projet ?" +#~ msgid "Date format" +#~ msgstr "Format des dates" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Activer le projet" +#~ msgid "Time format" +#~ msgstr "Format de l'heure" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Archive" +#~ msgid "24-hour" +#~ msgstr "heures" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "Désarchiver le projet ?" +#~ msgid "12-hour" +#~ msgstr "heures" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Désarchiver le projet" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Désarchiver" +#~ msgid "Company name" +#~ msgstr "Nom de l'entreprise" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Supprimer le projet" +#~ msgid "Your Company Name" +#~ msgstr "Le nom de votre entreprise" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Informations sur les archives" +#~ msgid "Your Company Address" +#~ msgstr "Adresse de votre entreprise" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Archivé sur :" +#~ msgid "App behavior and timer settings." +#~ msgstr "Paramètres des heures supplémentaires" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Archivé par :" +#~ msgid "Allow self-registration" +#~ msgstr "Paramètres d'auto-inscription" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Raison:" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Règles d'arrondi des temps" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Aperçu budgétaire" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Arrondir les entrées de temps aux intervalles configurés" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Sur" +#~ msgid "Single active timer per user" +#~ msgstr "Mode minuterie active unique" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Voir l'analyse budgétaire complète" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Configuration du délai d'inactivité" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Tâches pour ce projet" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Exigible" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Estimé" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "Aucune tâche pour ce projet." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "déménagé à" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "déménagé à" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "Saisie manuelle" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "Stock faible" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Double" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Marquer comme envoyé" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Accepté" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Créez votre premier devis" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Apprendre encore plus" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Retour au devis" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "Accepter ce devis créera un nouveau projet avec le budget du devis." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "Le projet sera créé avec le budget du devis" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Accepter le devis et créer un projet" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Créer un devis" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Titre de la citation" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Description du devis" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "Articles de devis" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "Date limite" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "Type de contenu" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "Stock faible" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "Sous-total des articles" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "Coût" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "par exemple, VOYAGES, REPAS" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "Ajouter une note" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "Sous-total des articles" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "Marchandises supplémentaires" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "Produits, matériaux, licences et autres biens" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "Ajouter du bien" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "Sous-total des marchandises" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "Total des cotations" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Détails financiers" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Sélectionnez les conditions de paiement" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "Exigible à réception" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "Ou saisissez des conditions de paiement personnalisées" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Utiliser des termes personnalisés" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Rabais" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Type de remise" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Pas de réduction" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "Pourcentage (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Montant fixe" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Montant de la remise" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0,00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Code promo" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Code promo facultatif" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Raison de la remise" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Raison de la remise" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Flux de travail d'approbation" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Nécessite une approbation avant l'envoi" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "Informations Complémentaires" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Notes internes (non visibles par le client)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Ces notes ne sont visibles que par votre équipe" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Termes et conditions" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Termes et conditions" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Ces termes seront visibles par le client" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Modifier le devis" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "Le client ne peut pas être modifié" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Mettre à jour le devis" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Total des cotations" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Taux d'acceptation" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Valeur moyenne du devis" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Citations par statut" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Meilleurs clients par devis" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Filtrer les devis" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Rechercher des citations..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "Etes-vous sûr de vouloir dupliquer" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "citations)?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "Etes-vous sûr de vouloir marquer" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "devis tel(s) envoyé(s) ?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "CITATION" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Citation #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Devis pour" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Sous-total après remise :" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Description:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Sous-total après remise" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Approbation pas encore demandée" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "En attente d'approbation" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Rejeté par" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Demander à nouveau l'approbation" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Envoyer un devis" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "Êtes-vous sûr de vouloir rejeter ce devis ?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Supprimer le devis" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Commentaire interne (non visible par le client)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Interne" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "Êtes-vous sûr de vouloir supprimer ce commentaire ?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Écrivez une réponse..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "Pas encore de commentaires. Démarrez la conversation en ajoutant le premier commentaire." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Envoyé à" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Accepté à" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Envoyer un devis par e-mail" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "E-mail du destinataire" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "Citation %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Message personnalisé (facultatif)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Ajouter un message personnalisé à l'e-mail..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "Joindre un PDF" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Approuver le devis" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Remarques (facultatif)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Ajouter des notes d'approbation..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Rejeter l'approbation du devis" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Veuillez indiquer le motif du refus..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "Êtes-vous sûr de vouloir supprimer cette citation ? Cette action ne peut pas être annulée." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Créer une facture récurrente" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "Mettre à jour la facture récurrente" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Automatisez la génération de factures pour la facturation par abonnement" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Fréquence" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Prochaine exécution" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Générer maintenant" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Détails du modèle" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Paramètres de facture" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Factures récemment générées" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "La confidentialité d'abord" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Attribuer à" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Activer la télémétrie anonyme" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "" +#~ "Aidez-nous à comprendre les modèles " +#~ "d'utilisation pour améliorer TimeTracker" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "Quelles données sont collectées ?" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "Ce que nous collectons :" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Empreinte digitale d'installation anonyme (hachée)" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Application version & platform info" +#~ msgstr "Version de l'application et informations sur la plateforme" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "Statistiques d'utilisation des fonctionnalités" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "Ce que nous ne collectons PAS :" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "Aucun nom d'utilisateur ni e-mail" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "Aucune donnée ni note de saisie du temps" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "Aucune donnée client ou entreprise" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "Vous pouvez modifier cela à tout moment dans" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "Rapports disponibles" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "En continuant, vous acceptez d'utiliser TimeTracker sous les" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "Licence GPL-3.0" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "Rapports standards" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Terminer la configuration et continuer" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "Modifier la tâche" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "Échec de la mise à jour du statut" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "Échec de la mise à jour de l'état de la tâche" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "Colonne Kanban créée" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "Colonne Kanban supprimée" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "Rapport sommaire" +#~ msgid "Kanban columns reordered" +#~ msgstr "Colonnes Kanban réorganisées" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "La visibilité de la colonne Kanban a été modifiée" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "Toile transparente" +#~ msgid "Kanban columns updated" +#~ msgstr "Colonnes Kanban mises à jour" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Update" +#~ msgstr "Mise à jour" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "Échec de l'actualisation des colonnes Kanban" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "Chargement des détails de la tâche..." -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Tracked" +#~ msgstr "Suivi" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "Afficher tous les détails" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "Retour aux tâches" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" +#~ "Ajoutez une nouvelle tâche à votre " +#~ "projet pour diviser le travail en " +#~ "composants gérables" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "Entrez un nom de tâche descriptif" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "" +#~ "Choisissez un nom clair et descriptif" +#~ " qui explique ce qui doit être " +#~ "fait" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Fournissez des informations détaillées sur " +#~ "la tâche, les exigences et toute " +#~ "instruction spécifique..." -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" +#~ "Facultatif : ajoutez du contexte, des" +#~ " exigences ou des instructions spécifiques" +#~ " pour la tâche" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Sélectionnez le projet auquel cette tâche appartient" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "Statut initial" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Done" +#~ msgstr "Fait" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Facultatif : définissez une date limite pour cette tâche" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Facultatif : estimez la durée de cette tâche" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Facultatif : Attribuez cette tâche à un membre de l'équipe" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Balises pour la catégorisation" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "Conseils pour la création de tâches" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "Utilisez des verbes d’action et soyez précis sur ce qui doit être fait" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "Estimations réalistes" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "" +#~ "Tenir compte de la complexité et " +#~ "des dépendances lors de l'estimation du" +#~ " temps" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "Fixer des délais" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" +#~ "Les dates d’échéance aident à prioriser" +#~ " le travail et à suivre les " +#~ "progrès" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "Questions prioritaires" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Utilisez les niveaux de priorité pour" +#~ " aider les membres de l'équipe à " +#~ "se concentrer sur ce qui est le" +#~ " plus important" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "Retour à la tâche" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "" +#~ "Mettre à jour les détails et les" +#~ " paramètres de la tâche pour « " +#~ "%(task)s »" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "Informations sur la tâche" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "Tâche de mise à jour" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "Estimation utilisée" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Actual" +#~ msgstr "Réel" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "Current Task Info" +#~ msgstr "Informations sur la tâche actuelle" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Current Status" +#~ msgstr "Statut actuel" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "Priorité actuelle" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "Actuellement affecté à" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "Date d'échéance actuelle" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "Entrées de temps récentes" +#~ msgid "Current Estimate" +#~ msgstr "Estimation actuelle" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "Heures réelles" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "Format d'exportation" +#~ msgid "Started" +#~ msgstr "Commencé" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "par exemple, développement, réunion, urgence" +#~ msgid "Edit Tips" +#~ msgstr "Modifier les conseils" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "Filtres enregistrés" +#~ msgid "Status Changes" +#~ msgstr "Changements de statut" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "" +#~ "Changer de statut peut affecter le " +#~ "suivi du temps et les calculs de" +#~ " progression" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "Mises à jour des dates d'échéance" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "Plage de dates – Dates de début et de fin personnalisées" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "" +#~ "Tenir compte de la charge de " +#~ "travail de l'équipe lors de l'ajustement" +#~ " des délais" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "La date de début doit être antérieure à la date de fin" +#~ msgid "Assignment Changes" +#~ msgstr "Modifications des affectations" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "Avertir les membres de l'équipe lors de la réaffectation des tâches" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "Updating..." +#~ msgstr "Mise à jour..." -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "Champs de paiement" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "Reçu" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "Frais de passerelle" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Plage de dates et comparaison" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Plages de dates rapides" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "Semaine" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "Mois" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "L'année dernière" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "Plages de dates personnalisées" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "Vue comparative" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "Aperçu en direct" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "Filtrer les tâches" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "L'extrémité avant" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Supprimer les tâches sélectionnées" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Modifier le statut des tâches sélectionnées" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "Attribuer les tâches sélectionnées" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Résultats de comparaison" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Exporter des rapports" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Format d'exportation" - -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "Exporter des rapports" - -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "Rapports planifiés" - -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "Importation CSV" - -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "Exporter" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "Types de rapports" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "Rapport de projet" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Rapport utilisateur" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Rapport sommaire" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Rapport de tâche" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "Entrées de temps" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "Attribuer des tâches" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Déplacer les tâches sélectionnées vers le projet" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "Sélectionnez un projet" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "Déplacer des tâches" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer la tâche « {name} » ?" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "Entrées récentes" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "Impossible de supprimer la tâche « " +#~ "{name} », car elle comporte des " +#~ "entrées de temps. Veuillez d'abord " +#~ "supprimer les entrées de temps." -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "Rapports planifiés" +#~ msgid "Delete Task" +#~ msgstr "Supprimer la tâche" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "Rapports planifiés" +#~ msgid "My Tasks" +#~ msgstr "Mes tâches" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "Plages de dates personnalisées" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Tâches assignées ou créées par vous" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "total" +#~ msgstr "total" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "Filtrer mes tâches" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "Nom ou description de la tâche" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "Toutes les priorités" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "Type de tâche" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "M'a été attribué" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "Créé par moi" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "Afficher uniquement les retards" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "Créé par moi" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "Pagination de mes tâches" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "Aucune tâche trouvée" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Aucune tâche ne vous a été assignée ou créée par vous pour le moment." -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "Créez votre première tâche" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "Afficher toutes les tâches" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "Tâches en retard" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "Nécessite une attention immédiate" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "items" +#~ msgstr "articles" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "There are" +#~ msgstr "Il y a" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "Aucune donnée de vente trouvée pour la période sélectionnée." +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "" +#~ "Veuillez examiner et mettre à jour " +#~ "ces tâches pour éviter de nouveaux " +#~ "retards." -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Due:" +#~ msgstr "Exigible:" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Est:" +#~ msgstr "HNE:" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Actual:" +#~ msgstr "Réel:" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "Dates d'échéance" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "Dates d'échéance" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "Gestion de projet" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "Toutes les priorités" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "Aucune tâche en retard !" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "Super travail ! Toutes les tâches sont actuellement dans les délais." -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Entrez la nouvelle date d'échéance (AAAA-MM-JJ) :" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Etes-vous sûr de vouloir prolonger la date d'échéance jusqu'à" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "pour toutes les tâches en retard ?" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "Entrez une nouvelle priorité (faible/moyenne/élevée/urgente) :" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Êtes-vous sûr de vouloir définir la priorité sur" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "Priorité invalide. Veuillez utiliser : faible, moyen, élevé ou urgent" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "Échec de la mise à jour de l'objectif. Veuillez réessayer." -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "Démarrer la tâche et la marquer comme En cours ?" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "Modifier le statut de la tâche" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "Marquer la tâche comme À faire ?" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "Marquer la tâche comme terminée ?" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "Terminer la tâche" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Complete" +#~ msgstr "Complet" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "Rouvrir la tâche pour réviser ?" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "Rouvrir la tâche" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "Rouvrir" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "Détails et portée du projet" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "Créer un modèle de saisie du temps" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "par exemple, stand-up quotidien, réunion client" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "par exemple, 1,0, 0,5" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Pré-remplir des notes pour ce type de saisie de temps" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "par exemple, réunion, développement, administration" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "Modifier le modèle" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer ce modèle ?" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "Supprimer le modèle" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "Create Your First Template" +#~ msgstr "Créez votre première tâche" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "Modèles" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" +#~ "Créez votre premier modèle d'e-mail pour" +#~ " personnaliser les e-mails de facture." -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "Usage Statistics" +#~ msgstr "Statistiques d'utilisation" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "Meilleurs projets (30 jours)" +#~ msgid "selected" +#~ msgstr "" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "Diagrammes circulaires de distribution du temps" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "Aucune activité au cours des 30 derniers jours." +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "Tendance des heures quotidiennes" +#~ msgid "Click to edit" +#~ msgstr "Retour à Modifier" -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "Données de devis" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "Meilleurs projets (30 jours)" +#~ msgid "Request approval" +#~ msgstr "Demander l'approbation" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "Aucune donnée de vente trouvée pour la période sélectionnée." +#~ msgid "Clear filters" +#~ msgstr "Basculer les filtres" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "Aucune donnée ni note de saisie du temps" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "Clientèle" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "Afficher toutes les tâches" +#~ msgid "No time entries yet" +#~ msgstr "Aucune entrée de temps enregistrée pour l'instant" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "Aucune donnée de vente trouvée pour la période sélectionnée." +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "Pagination de mes tâches" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "Saisie manuelle du temps" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "Saisie du temps" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "Comment créer des entrées de temps groupées pour plusieurs jours ?" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "Entrée groupée" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "Projet sélectionné introuvable" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Les tâches se chargent après la sélection d'un projet" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "Plage de temps" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "Essayez une autre requête ou vérifiez votre orthographe." +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "À propos du suivi des heures supplémentaires" +#~ msgid "Entries will be created for these dates" +#~ msgstr "Les entrées de temps seront arrondies à cet intervalle" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "Minuteries intelligentes" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "Retour aux rôles" - -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "Entrées de temps cette semaine" - -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "Meilleurs projets" - -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "Aucune entrée de temps enregistrée pour cette semaine pour le moment" - -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Appliquer le filtre" - -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "Êtes-vous sûr de vouloir supprimer ce filtre ?" - -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Supprimer le filtre" - -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "Rapport de stock faible" - -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "Filtres enregistrés" - -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Personnaliser les raccourcis" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Rechercher des raccourcis..." +#~ msgid "tag1, tag2, tag3" +#~ msgstr "étiquette1, étiquette2" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "Enregistrer les modifications" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "Filtrer les factures" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Create Entries" +#~ msgstr "Entrées récentes" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "Faites glisser pour réorganiser" +#~ msgid "Bulk Entry Tips" +#~ msgstr "Entrée groupée" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "Réinitialiser" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "Skip Weekends" +#~ msgstr "Tendances hebdomadaires" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "Échec de l'arrêt du chronomètre" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "Délai (jours)" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "Échec de la mise à jour du statut" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "Cela réinitialisera tous les raccourcis clavier à leurs valeurs par défaut. Continuer?" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Réinitialiser aux valeurs par défaut" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "Réinitialiser aux valeurs par défaut ?" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "Échec de la suppression de l'avatar." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "Réinitialiser aux valeurs par défaut" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "Échec de la mise à jour du statut" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "Échec du chargement des tâches" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Accueillir" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "La confidentialité d'abord" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Auto-hébergé sur votre serveur" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Télémétrie anonyme (opt-in)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "Aucune information personnelle n'a été collectée" - -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Open source et transparent" - -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Bienvenue sur TimeTracker" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "Laissez-vous installer dans un instant" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "Merci d'avoir choisi TimeTracker !" +#~ msgid "Failed to load tasks" +#~ msgstr "Échec du chargement des tâches" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "Vos données restent sur votre serveur et vous avez un contrôle total." +#~ msgid "Total days" +#~ msgstr "Marchandises totales" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "Heure de fin" +#~ msgid "Weekdays only" +#~ msgstr "La semaine commence le" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "Les entrées de temps seront arrondies à cet intervalle" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Fuseau horaire" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "Format des dates" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "Format de l'heure" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "heures" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "heures" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Agenda" +#~ msgstr "Calendrier" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "Nom de l'entreprise" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "Le nom de votre entreprise" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "Adresse de votre entreprise" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "Paramètres des heures supplémentaires" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "Paramètres d'auto-inscription" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "Format de l'heure" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "Règles d'arrondi des temps" +#~ msgid "CSV Format" +#~ msgstr "Importation CSV" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "Arrondir les entrées de temps aux intervalles configurés" +#~ msgid "Filter by tags..." +#~ msgstr "Filtrer mes tâches" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "Mode minuterie active unique" +#~ msgid "Show billable entries only" +#~ msgstr "Aucune entrée de temps trouvée." -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "Montant facturable" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "Configuration du délai d'inactivité" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "Heures totales" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "Heures par projet" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "Créer une nouvelle entrée de temps" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "Sélectionnez un projet..." -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Factures récurrentes" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Créer un modèle de saisie du temps" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "Mettre à jour la facture récurrente" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "Navigation" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Views" +#~ msgstr "Voir" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Day View" +#~ msgstr "Vue Grille" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Week View" +#~ msgstr "Revoir" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "Month View" +#~ msgstr "Mois" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "Agenda View" +#~ msgstr "Vue du calendrier" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "La confidentialité d'abord" +#~ msgid "Create New Entry" +#~ msgstr "Créer un nouveau client" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Focus Filter" +#~ msgstr "Afficher les filtres" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Activer la télémétrie anonyme" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Aidez-nous à comprendre les modèles d'utilisation pour améliorer TimeTracker" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "Quelles données sont collectées ?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "Ce que nous collectons :" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "Empreinte digitale d'installation anonyme (hachée)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "Version de l'application et informations sur la plateforme" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Statistiques d'utilisation des fonctionnalités" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "Ce que nous ne collectons PAS :" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Aucun nom d'utilisateur ni e-mail" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Aucune donnée ni note de saisie du temps" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Aucune donnée client ou entreprise" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "Vous pouvez modifier cela à tout moment dans" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "En continuant, vous acceptez d'utiliser TimeTracker sous les" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "Licence GPL-3.0" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Terminer la configuration et continuer" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Modifier la tâche" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "Échec de la mise à jour du statut" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "Échec de la mise à jour de l'état de la tâche" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Colonne Kanban créée" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Colonne Kanban supprimée" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Colonnes Kanban réorganisées" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "La visibilité de la colonne Kanban a été modifiée" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Colonnes Kanban mises à jour" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Mise à jour" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "Échec de l'actualisation des colonnes Kanban" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Chargement des détails de la tâche..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Suivi" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Afficher tous les détails" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Retour aux tâches" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "Ajoutez une nouvelle tâche à votre projet pour diviser le travail en composants gérables" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Entrez un nom de tâche descriptif" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "Choisissez un nom clair et descriptif qui explique ce qui doit être fait" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "Fournissez des informations détaillées sur la tâche, les exigences et toute instruction spécifique..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "Facultatif : ajoutez du contexte, des exigences ou des instructions spécifiques pour la tâche" - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Sélectionnez le projet auquel cette tâche appartient" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Statut initial" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Fait" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Facultatif : définissez une date limite pour cette tâche" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Facultatif : estimez la durée de cette tâche" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Facultatif : Attribuez cette tâche à un membre de l'équipe" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "Effacer tous les caches" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "Balises pour la catégorisation" +#~ msgid "Close Modal" +#~ msgstr "Fermer" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Conseils pour la création de tâches" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Utilisez des verbes d’action et soyez précis sur ce qui doit être fait" +#~ msgid "Failed to load events" +#~ msgstr "Échec du chargement des tâches" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Estimations réalistes" +#~ msgid "Please select a project for new entries" +#~ msgstr "Sélectionnez un projet dans la liste déroulante" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Tenir compte de la complexité et des dépendances lors de l'estimation du temps" +#~ msgid "Please select a project first" +#~ msgstr "Sélectionnez un projet" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Fixer des délais" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Les dates d’échéance aident à prioriser le travail et à suivre les progrès" +#~ msgid "Entry created successfully" +#~ msgstr "Événement créé avec succès" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Questions prioritaires" +#~ msgid "Failed to create entry" +#~ msgstr "Échec de la suppression de l'événement" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "Utilisez les niveaux de priorité pour aider les membres de l'équipe à se concentrer sur ce qui est le plus important" +#~ msgid "Entry updated" +#~ msgstr "Dernière mise à jour" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Retour à la tâche" +#~ msgid "Failed to update entry" +#~ msgstr "Échec de la mise à jour du statut" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Mettre à jour les détails et les paramètres de la tâche pour « %(task)s »" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer cette note ?" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Informations sur la tâche" +#~ msgid "Delete Entry" +#~ msgstr "Supprimer l'entrée" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Tâche de mise à jour" +#~ msgid "Automatic Timer" +#~ msgstr "Démarrer la minuterie" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Estimation utilisée" +#~ msgid "Entry deleted" +#~ msgstr "Supprimé" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Réel" +#~ msgid "Failed to delete entry" +#~ msgstr "Échec de la suppression de l'événement" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Informations sur la tâche actuelle" +#~ msgid "Export started" +#~ msgstr "Exporter des données" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "Statut actuel" +#~ msgid "No recurring blocks yet" +#~ msgstr "Factures récurrentes" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Priorité actuelle" +#~ msgid "Unknown Project" +#~ msgstr "Aucun projet" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "Actuellement affecté à" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "Échec du chargement des tâches" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Date d'échéance actuelle" +#~ msgid "No events in this period" +#~ msgstr "Aucune tâche dans cette colonne." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Estimation actuelle" +#~ msgid "Failed to load agenda view" +#~ msgstr "Échec du chargement des activités" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Heures réelles" +#~ msgid "Failed to load event details" +#~ msgstr "Échec du chargement des tâches" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Commencé" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer cette note ?" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Modifier les conseils" +#~ msgid "Delete Recurring Block" +#~ msgstr "Mettre à jour la facture récurrente" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Changements de statut" +#~ msgid "Recurring block deleted" +#~ msgstr "Événement récurrent" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "Changer de statut peut affecter le suivi du temps et les calculs de progression" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Mises à jour des dates d'échéance" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Tenir compte de la charge de travail de l'équipe lors de l'ajustement des délais" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Modifications des affectations" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "Avertir les membres de l'équipe lors de la réaffectation des tâches" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Mise à jour..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Filtrer les tâches" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "L'extrémité avant" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Supprimer les tâches sélectionnées" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Modifier le statut des tâches sélectionnées" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Attribuer les tâches sélectionnées" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Attribuer des tâches" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Déplacer les tâches sélectionnées vers le projet" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Sélectionnez un projet" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Déplacer des tâches" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "Êtes-vous sûr de vouloir supprimer la tâche « {name} » ?" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "Impossible de supprimer la tâche « {name} », car elle comporte des entrées de temps. Veuillez d'abord supprimer les entrées de temps." +#~ msgid "Failed to delete recurring block" +#~ msgstr "Échec de la suppression de l'événement" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Supprimer la tâche" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Entrez la nouvelle date d'échéance (AAAA-MM-JJ) :" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "Mes tâches" +#~ msgid "Entry duplicated successfully" +#~ msgstr "Événement mis à jour avec succès" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Tâches assignées ou créées par vous" +#~ msgid "Failed to duplicate entry" +#~ msgstr "Échec de la suppression de l'événement" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "total" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "Filtrer mes tâches" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "Raccourcis clavier" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Nom ou description de la tâche" +#~ msgid "Edit Time Entry" +#~ msgstr "Nouvelle entrée de temps" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Toutes les priorités" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Type de tâche" +#~ msgid "Confirm Changes" +#~ msgstr "Confirmé" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "M'a été attribué" +#~ msgid "Confirm & Save" +#~ msgstr "Confirmé" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Créé par moi" +#~ msgid "Admin Mode" +#~ msgstr "Groupe d'administrateurs" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Afficher uniquement les retards" +#~ msgid "Admin Mode:" +#~ msgstr "Groupe d'administrateurs" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Créé par moi" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "Pagination de mes tâches" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Sélectionnez le projet auquel cette tâche appartient" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "Aucune tâche trouvée" +#~ msgid "Task (Optional)" +#~ msgstr "Tâche (facultatif)" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "Aucune tâche ne vous a été assignée ou créée par vous pour le moment." +#~ msgid "Select a specific task within the project" +#~ msgstr "La tâche sélectionnée n'est pas valide pour le projet choisi" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Créez votre première tâche" +#~ msgid "When the work started" +#~ msgstr "Date de début de la semaine" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Afficher toutes les tâches" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Tâches en retard" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Nécessite une attention immédiate" +#~ msgid "Time the work ended" +#~ msgstr "Contrat client terminé" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "articles" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "Il y a" +#~ msgid "Automatic" +#~ msgstr "Autorisation" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "Veuillez examiner et mettre à jour ces tâches pour éviter de nouveaux retards." +#~ msgid "How this entry was created" +#~ msgstr "Client créé" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "Exigible:" +#~ msgid "Duration:" +#~ msgstr "Durée" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "HNE:" +#~ msgid "Describe what you worked on" +#~ msgstr "Sur quoi as-tu travaillé ?" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Réel:" +#~ msgid "tag1, tag2" +#~ msgstr "étiquette1, étiquette2" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "Dates d'échéance" +#~ msgid "Internal invoice reference" +#~ msgstr "Aucune facture sélectionnée" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Numéro de reçu/facture" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "Dates d'échéance" +#~ msgid "Reason for Change" +#~ msgstr "Raison de l'archivage" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "Gestion de projet" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "Toutes les priorités" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "Aucune tâche en retard !" +#~ msgid "Task:" +#~ msgstr "Tâche" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "Super travail ! Toutes les tâches sont actuellement dans les délais." +#~ msgid "Start:" +#~ msgstr "Commencer" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Entrez la nouvelle date d'échéance (AAAA-MM-JJ) :" +#~ msgid "End:" +#~ msgstr "Fin" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "Etes-vous sûr de vouloir prolonger la date d'échéance jusqu'à" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "pour toutes les tâches en retard ?" +#~ msgid "Admin Notice" +#~ msgstr "Ajouter une note" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "Entrez une nouvelle priorité (faible/moyenne/élevée/urgente) :" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "Êtes-vous sûr de vouloir définir la priorité sur" +#~ msgid "Duplicate Entry" +#~ msgstr "Entrée en double" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Priorité invalide. Veuillez utiliser : faible, moyen, élevé ou urgent" +#~ msgid "Duplicate Time Entry" +#~ msgstr "Saisie de temps en double" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "Enregistrer l'heure manuellement" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "Échec de la mise à jour de l'objectif. Veuillez réessayer." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "Démarrer la tâche et la marquer comme En cours ?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Modifier le statut de la tâche" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "Marquer la tâche comme À faire ?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "Marquer la tâche comme terminée ?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Terminer la tâche" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Complet" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "Rouvrir la tâche pour réviser ?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Rouvrir la tâche" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Rouvrir" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "Détails et portée du projet" - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Créer un modèle de saisie du temps" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "par exemple, stand-up quotidien, réunion client" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "par exemple, 1,0, 0,5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Pré-remplir des notes pour ce type de saisie de temps" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "par exemple, réunion, développement, administration" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Modifier le modèle" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "Êtes-vous sûr de vouloir supprimer ce modèle ?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Supprimer le modèle" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "Créez votre première tâche" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "Modèles" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "Créez votre premier modèle d'e-mail pour personnaliser les e-mails de facture." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Statistiques d'utilisation" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Créer une copie d'une entrée précédente avec de nouvelles heures" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "Créer une nouvelle entrée de temps" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "Entrée en double :" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "Original:" +#~ msgstr "Original:" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "to" +#~ msgstr "à" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "Retour à Modifier" +#~ msgid "Project & task" +#~ msgstr "Projets" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "Date et heure" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "Demander l'approbation" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "Basculer les filtres" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "Aucune donnée ni note de saisie du temps" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "Aucune entrée de temps enregistrée pour l'instant" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "Pagination de mes tâches" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "Saisie manuelle du temps" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "Saisie du temps" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "Comment créer des entrées de temps groupées pour plusieurs jours ?" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "Entrée groupée" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "Projet sélectionné introuvable" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Les tâches se chargent après la sélection d'un projet" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "Plage de temps" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "Invité" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "Les entrées de temps seront arrondies à cet intervalle" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "Minuteries intelligentes" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "Sur quoi as-tu travaillé ?" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "étiquette1, étiquette2" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "Filtrer les factures" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "Entrées récentes" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "Entrée groupée" +#~ msgid "Apply filters" +#~ msgstr "Appliquer des filtres" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "Tendances hebdomadaires" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "Délai (jours)" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "Échec du chargement des tâches" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "Marchandises totales" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "La semaine commence le" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "Les entrées de temps seront arrondies à cet intervalle" - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "Calendrier" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "Format de l'heure" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "Importation CSV" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "Filtrer mes tâches" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "Aucune entrée de temps trouvée." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "Montant facturable" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "Heures totales" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "Heures par projet" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "Créer une nouvelle entrée de temps" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Sélectionnez un projet..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "Factures récurrentes" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "Créer un modèle de saisie du temps" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "Mettre à jour la facture récurrente" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "Navigation" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "Voir" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "Vue Grille" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "Revoir" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "Mois" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "Vue du calendrier" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "Créer un nouveau client" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "Afficher les filtres" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "Effacer tous les caches" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "Fermer" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "Suivez votre temps avec une minuterie visuelle" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "Achèvement estimé" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "Échec du chargement des tâches" +#~ msgid "Calculating..." +#~ msgstr "Calculateur..." -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "Sélectionnez un projet dans la liste déroulante" +#~ msgid "Based on average session duration" +#~ msgstr "Basé sur la durée moyenne des sessions" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "Sélectionnez un projet" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Aucune minuterie active. Commencez-en un ci-dessous !" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "Démarrer une nouvelle minuterie" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "Événement créé avec succès" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "Échec de la suppression de l'événement" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "Dernière mise à jour" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "Échec de la mise à jour du statut" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "Êtes-vous sûr de vouloir supprimer cette note ?" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "Supprimer l'entrée" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "Démarrer la minuterie" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "Supprimé" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "Échec de la suppression de l'événement" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "Exporter des données" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "Factures récurrentes" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "Aucun projet" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "Échec du chargement des tâches" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "Aucune tâche dans cette colonne." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "Échec du chargement des activités" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "Échec du chargement des tâches" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "Êtes-vous sûr de vouloir supprimer cette note ?" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "Mettre à jour la facture récurrente" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "Événement récurrent" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "Échec de la suppression de l'événement" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Entrez la nouvelle date d'échéance (AAAA-MM-JJ) :" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "Événement mis à jour avec succès" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "Échec de la suppression de l'événement" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Ajoutez des notes sur ce sur quoi vous travaillez..." -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "Raccourcis clavier" +#~ msgid "Or use a template" +#~ msgstr "Ou utilisez un modèle" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "Nouvelle entrée de temps" +#~ msgid "Recent Projects" +#~ msgstr "Projets récents" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "Les statistiques du jour" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "Confirmé" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "Confirmé" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "Groupe d'administrateurs" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "Groupe d'administrateurs" +#~ msgid "Approval" +#~ msgstr "Approuver" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "Sélectionnez le projet auquel cette tâche appartient" +#~ msgid "License status" +#~ msgstr "Statut actuel" -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "Tâche (facultatif)" +#~ msgid "Supporter license active" +#~ msgstr "Fonctionnalités prises en charge" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "La tâche sélectionnée n'est pas valide pour le projet choisi" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "Date de début de la semaine" +#~ msgid "Not activated" +#~ msgstr "Activer" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "Entrez le nom du client" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "Contrat client terminé" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "License key" +#~ msgstr "Licence" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "Autorisation" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "Client créé" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "Durée" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "Sur quoi as-tu travaillé ?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "étiquette1, étiquette2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "Aucune facture sélectionnée" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "Numéro de reçu/facture" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "Raison de l'archivage" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Validate" +#~ msgstr "Date" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "Tâche" +#~ msgid "Back to Settings" +#~ msgstr "Paramètres de sauvegarde" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "Commencer" +#~ msgid "Profile" +#~ msgstr "Profil" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "Fin" +#~ msgid "In progress" +#~ msgstr "En cours" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "Afficher toutes les entrées de temps" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "Ajouter une note" +#~ msgid "No recent time entries" +#~ msgstr "Aucune entrée de temps récente" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Gérer les paramètres et préférences de votre compte" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Entrée en double" +#~ msgid "Support & Community" +#~ msgstr "Open Source et Communauté" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Saisie de temps en double" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Enregistrer l'heure manuellement" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Créer une copie d'une entrée précédente avec de nouvelles heures" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Créer une nouvelle entrée de temps" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Entrée en double :" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Original:" +#~ msgid "Profile Information" +#~ msgstr "Informations sur le profil" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "à" +#~ msgid "Username cannot be changed" +#~ msgstr "Le nom d'utilisateur ne peut pas être modifié" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "Projets" +#~ msgid "Required for email notifications" +#~ msgstr "Obligatoire pour les notifications par e-mail" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "Date et heure" +#~ msgid "Notification Preferences" +#~ msgstr "Préférences de notifications" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "Activer les notifications par e-mail" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "Interrupteur principal pour toutes les notifications par e-mail" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Notifications de factures en retard" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "Invité" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Notifications d'affectation de tâches" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Notifications de commentaires et de mentions" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "E-mail de résumé du temps hebdomadaire" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "Sur quoi as-tu travaillé ?" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Activer les notifications par e-mail" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "Appliquer des filtres" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "Préférences d'affichage" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "System Default" +#~ msgstr "Système par défaut" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "Préférences d'arrondi du temps" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Configurez la façon dont vos entrées " +#~ "de temps sont arrondies. Cela affecte" +#~ " la façon dont les durées sont " +#~ "calculées lorsque vous arrêtez les " +#~ "chronomètres." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "Activer l'arrondi des temps" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Arrondir les entrées de temps aux intervalles configurés" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "Intervalle d'arrondi" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "Les entrées de temps seront arrondies à cet intervalle" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Suivez votre temps avec une minuterie visuelle" +#~ msgid "Rounding Method" +#~ msgstr "Méthode d'arrondi" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Achèvement estimé" +#~ msgid "Overtime Settings" +#~ msgstr "Paramètres des heures supplémentaires" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Calculateur..." +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "Basé sur la durée moyenne des sessions" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Aucune minuterie active. Commencez-en un ci-dessous !" +#~ msgid "Daily hours" +#~ msgstr "Horaires quotidiens" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Démarrer une nouvelle minuterie" +#~ msgid "Weekly hours" +#~ msgstr "Objectifs hebdomadaires" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Ajoutez des notes sur ce sur quoi vous travaillez..." +#~ msgid "Standard Hours Per Day" +#~ msgstr "Heures standard par jour" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "Ou utilisez un modèle" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Généralement 8 heures pour un travail à temps plein" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "Projets récents" +#~ msgid "Standard Hours Per Week" +#~ msgstr "Heures standard par jour" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "Les statistiques du jour" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "How it works" +#~ msgstr "Comment ça marche" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "Si vous travaillez plus que vos " +#~ "heures normales dans une journée, le " +#~ "temps supplémentaire sera enregistré comme " +#~ "heures supplémentaires dans les rapports " +#~ "et analyses." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "Approuver" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "Paramètres régionaux" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "Statut actuel" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "Fonctionnalités prises en charge" +#~ msgid "Time Format" +#~ msgstr "Format de l'heure" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "La semaine commence le" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "Activer" +#~ msgid "Sunday" +#~ msgstr "Dimanche" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Monday" +#~ msgstr "Lundi" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "Entrez le nom du client" +#~ msgid "Saturday" +#~ msgstr "Samedi" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "Vue du calendrier" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "Licence" +#~ msgid "Remember last view" +#~ msgstr "Membre depuis" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "Date" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "Créer un bon de commande" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "L'arrondi temporel est désactivé. Tous " +#~ "les temps seront enregistrés exactement " +#~ "comme suivis." -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "Paramètres de sauvegarde" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "" +#~ "Pas d'arrondi - les temps seront " +#~ "enregistrés exactement tels qu'ils sont " +#~ "suivis." -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Profil" +#~ msgid "Actual time:" +#~ msgstr "Heure réelle :" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "En cours" +#~ msgid "Rounded:" +#~ msgstr "Arrondi :" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Afficher toutes les entrées de temps" +#~ msgid "With " +#~ msgstr "Avec" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "Aucune entrée de temps récente" +#~ msgid " minute intervals" +#~ msgstr "intervalles de minutes" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Gérer les paramètres et préférences de votre compte" +#~ msgid "Create Weekly Goal" +#~ msgstr "Créer un objectif hebdomadaire" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "Open Source et Communauté" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Créer un objectif de temps hebdomadaire" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "Fixez-vous un objectif d’heures de travail cette semaine" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "Heures cibles" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "Combien d'heures souhaitez-vous travailler cette semaine ?" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "Date de début de la semaine" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "Laisser vide pour utiliser la semaine en cours (à partir de lundi)" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Informations sur le profil" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "Le nom d'utilisateur ne peut pas être modifié" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Obligatoire pour les notifications par e-mail" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Notes facultatives sur votre objectif..." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Préférences de notifications" +#~ msgid "Quick Presets" +#~ msgstr "Préréglages rapides" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Activer les notifications par e-mail" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Conseils pour fixer des objectifs" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Interrupteur principal pour toutes les notifications par e-mail" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "" +#~ "Soyez réaliste : envisagez les vacances," +#~ " les réunions et autres engagements" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Notifications de factures en retard" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "" +#~ "Commencez prudemment : vous pourrez " +#~ "toujours ajuster votre objectif plus " +#~ "tard" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Notifications d'affectation de tâches" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" +#~ "Suivez les progrès : consultez " +#~ "régulièrement votre tableau de bord pour" +#~ " rester sur la bonne voie" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Notifications de commentaires et de mentions" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "Temps plein typique : 40 heures par semaine (8 heures/jour, 5 jours)" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "E-mail de résumé du temps hebdomadaire" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Modifier l'objectif hebdomadaire" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Modifier l'objectif de temps hebdomadaire" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "Période de la semaine" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "Activer les notifications par e-mail" +#~ msgid "Current Progress" +#~ msgstr "Progrès actuels" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Êtes-vous sûr de vouloir supprimer cet objectif ?" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "Supprimer l'objectif" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "Objectifs de temps hebdomadaires" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Définissez et suivez vos objectifs d'heures hebdomadaires" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "Nouvel objectif" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "Objectifs totaux" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Préférences d'affichage" +#~ msgid "Success Rate" +#~ msgstr "Taux de réussite" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "Système par défaut" +#~ msgid "Current Week Goal" +#~ msgstr "Objectif de la semaine en cours" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Préférences d'arrondi du temps" +#~ msgid "Remaining Hours" +#~ msgstr "Heures restantes" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "Configurez la façon dont vos entrées de temps sont arrondies. Cela affecte la façon dont les durées sont calculées lorsque vous arrêtez les chronomètres." +#~ msgid "Days Remaining" +#~ msgstr "Jours restants" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Activer l'arrondi des temps" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Heures moyennes/jour nécessaires" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Arrondir les entrées de temps aux intervalles configurés" +#~ msgid "Edit Goal" +#~ msgstr "Modifier l'objectif" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Intervalle d'arrondi" +#~ msgid "No goal set for this week" +#~ msgstr "Aucun objectif fixé pour cette semaine" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "Les entrées de temps seront arrondies à cet intervalle" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "" +#~ "Créez un objectif de temps hebdomadaire" +#~ " pour commencer à suivre vos progrès" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Méthode d'arrondi" +#~ msgid "Goal History" +#~ msgstr "Historique des buts" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Paramètres des heures supplémentaires" +#~ msgid "Target" +#~ msgstr "Cible" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "Détails de l'objectif hebdomadaire" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "Horaires quotidiens" +#~ msgid "Daily Breakdown" +#~ msgstr "Répartition quotidienne" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "Objectifs hebdomadaires" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Heures standard par jour" +#~ msgid "Time Entries This Week" +#~ msgstr "Entrées de temps cette semaine" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Généralement 8 heures pour un travail à temps plein" +#~ msgid "No Project" +#~ msgstr "Aucun projet" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "Heures standard par jour" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Aucune entrée de temps enregistrée pour cette semaine pour le moment" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "Comment ça marche" +#~ msgid "Reference date" +#~ msgstr "Type de référence" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "Si vous travaillez plus que vos heures normales dans une journée, le temps supplémentaire sera enregistré comme heures supplémentaires dans les rapports et analyses." +#~ msgid "Create/Get Period" +#~ msgstr "Créer un bon de commande" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Start date" +#~ msgstr "Date de début" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "End date" +#~ msgstr "Date de fin" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Exports" +#~ msgstr "Exporter" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "Paramètres régionaux" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Format de l'heure" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "La semaine commence le" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "Dimanche" +#~ msgid "Audit Events CSV" +#~ msgstr "Modifier l'événement" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "Lundi" +#~ msgid "Timesheet Periods" +#~ msgstr "Période de la semaine" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "Samedi" +#~ msgid "Submit" +#~ msgstr "Sujet" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "Vue du calendrier" +#~ msgid "No timesheet periods yet." +#~ msgstr "Aucune entrée de temps enregistrée pour l'instant" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "Membre depuis" +#~ msgid "Leave Balances" +#~ msgstr "Enregistrer les modifications" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "Créer un bon de commande" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "L'arrondi temporel est désactivé. Tous les temps seront enregistrés exactement comme suivis." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "Pas d'arrondi - les temps seront enregistrés exactement tels qu'ils sont suivis." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Heure réelle :" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Arrondi :" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Avec" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "intervalles de minutes" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Créer un objectif hebdomadaire" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Créer un objectif de temps hebdomadaire" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "Fixez-vous un objectif d’heures de travail cette semaine" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Heures cibles" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "Combien d'heures souhaitez-vous travailler cette semaine ?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Date de début de la semaine" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "Laisser vide pour utiliser la semaine en cours (à partir de lundi)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "utilisateur" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Notes facultatives sur votre objectif..." +#~ msgid "No leave types configured." +#~ msgstr "Non configuré" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "Préréglages rapides" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Conseils pour fixer des objectifs" +#~ msgid "Select leave type" +#~ msgstr "Sélectionnez un client" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Soyez réaliste : envisagez les vacances, les réunions et autres engagements" +#~ msgid "Requested hours" +#~ msgstr "Heures estimées" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Commencez prudemment : vous pourrez toujours ajuster votre objectif plus tard" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Variables disponibles" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "Suivez les progrès : consultez régulièrement votre tableau de bord pour rester sur la bonne voie" +#~ msgid "Comment" +#~ msgstr "Commentaires" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Temps plein typique : 40 heures par semaine (8 heures/jour, 5 jours)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Modifier l'objectif hebdomadaire" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Modifier l'objectif de temps hebdomadaire" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Période de la semaine" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Progrès actuels" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "Êtes-vous sûr de vouloir supprimer cet objectif ?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Supprimer l'objectif" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Objectifs de temps hebdomadaires" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Définissez et suivez vos objectifs d'heures hebdomadaires" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Nouvel objectif" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Objectifs totaux" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Taux de réussite" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Objectif de la semaine en cours" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Heures restantes" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Jours restants" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Heures moyennes/jour nécessaires" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Modifier l'objectif" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "Aucun objectif fixé pour cette semaine" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "Créez un objectif de temps hebdomadaire pour commencer à suivre vos progrès" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Historique des buts" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Cible" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Détails de l'objectif hebdomadaire" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "Rejeté" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Répartition quotidienne" +#~ msgid "Allocated" +#~ msgstr "Créé" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "Temps" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Entrées de temps cette semaine" +#~ msgid "Utilization %" +#~ msgstr "Autorisation" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Aucun projet" +#~ msgid "No capacity data available." +#~ msgstr "Aucune donnée sur le taux de combustion disponible" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Aucune entrée de temps enregistrée pour cette semaine pour le moment" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "Type de référence" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "Créer un bon de commande" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "Date de début" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "Date de fin" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "Exporter" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "Activer le portail client" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "Remplacement du statut facturable" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "Modifier l'événement" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "Période de la semaine" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "Sujet" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "Aucune entrée de temps enregistrée pour l'instant" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "Enregistrer les modifications" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "Actif uniquement" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "Type d'événement" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "utilisateur" +#~ msgid "Accrual hours per month" +#~ msgstr "Heures réelles" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "Non configuré" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "Type d'événement" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "Sélectionnez un client" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "Heures estimées" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "Variables disponibles" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "Commentaires" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "Désactivé" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "Détails de l'entreprise" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "Rejeté" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "Créé" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "Temps" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "Autorisation" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "Aucune donnée sur le taux de combustion disponible" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "Nom du rôle" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "Remarques (facultatif)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "Ajouter du bien" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "Activer le portail client" +#~ msgid "No holidays configured." +#~ msgstr "Aucun webhook configuré" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "Remplacement du statut facturable" +#~ msgid "Support" +#~ msgstr "Soutien" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "Actif uniquement" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "Type d'événement" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "Heures réelles" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "Type d'événement" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "Désactivé" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "Détails de l'entreprise" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "Nom du rôle" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "Remarques (facultatif)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "Ajouter du bien" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "Aucun webhook configuré" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "Surpayé" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Soutien" +#~ msgid "Cash" +#~ msgstr "Espèces" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "Vérifier" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "Virement bancaire" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "Carte de crédit" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "Carte de débit" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "Bande" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "Surpayé" +#~ msgid "Company Card" +#~ msgstr "Carte d'entreprise" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "Espèces" +#~ msgid "Reimbursed" +#~ msgstr "Remboursé" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Vérifier" +#~ msgid "Processing" +#~ msgstr "Traitement" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Virement bancaire" +#~ msgid "80% Budget Warning" +#~ msgstr "Avertissement budgétaire à 80 %" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Carte de crédit" +#~ msgid "Budget Limit Reached" +#~ msgstr "Limite budgétaire atteinte" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Carte de débit" +#~ msgid "Info" +#~ msgstr "Informations" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Bande" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Carte d'entreprise" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Remboursé" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Traitement" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Facture n° : %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "Avertissement budgétaire à 80 %" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "Date d'émission : %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Limite budgétaire atteinte" +#~ msgid "Due Date: %(date)s" +#~ msgstr "Date d'échéance : %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Informations" +#~ msgid "Quote For:" +#~ msgstr "Devis pour :" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "Détails du devis :" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "Articles:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "Total:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "Facture n° : %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "Date d'émission : %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "Date d'échéance : %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Devis pour :" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Détails du devis :" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Articles:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Total:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Veuillez vous connecter pour accéder à cette page" +#~ msgid "Please log in to access this page" +#~ msgstr "Veuillez vous connecter pour accéder à cette page" diff --git a/translations/he/LC_MESSAGES/messages.po b/translations/he/LC_MESSAGES/messages.po index 19bc3d59..90bdb3c7 100644 --- a/translations/he/LC_MESSAGES/messages.po +++ b/translations/he/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: he\n" @@ -14,26619 +14,18096 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "אנא היכנס כדי לגשת לפורטל הלקוחות." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." msgstr "ההפעלה שלך פג או שהדף היה פתוח יותר מדי. אנא נסה שוב." -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "נדרשת גישת מנהל" +#~ msgid "Administrator access required" +#~ msgstr "נדרשת גישת מנהל" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "שם משתמש נדרש" +#~ msgid "Username is required" +#~ msgstr "שם משתמש נדרש" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "המשתמש כבר קיים" +#~ msgid "User already exists" +#~ msgstr "המשתמש כבר קיים" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "לא ניתן ליצור משתמש עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "המשתמש \"%(username)s\" נוצר בהצלחה" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "שם משתמש כבר קיים" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "אנא בחר לקוח בעת הפעלת גישה לפורטל לקוח." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "הסיסמאות אינן תואמות." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "לא ניתן לעדכן את המשתמש עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן ליצור משתמש עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "המשתמש \"%(username)s\" עודכן בהצלחה" +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "המשתמש \"%(username)s\" נוצר בהצלחה" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "לא ניתן למחוק את המנהל האחרון" +#~ msgid "Username already exists" +#~ msgstr "שם משתמש כבר קיים" -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "לא ניתן למחוק משתמש עם ערכי זמן קיימים" +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "אנא בחר לקוח בעת הפעלת גישה לפורטל לקוח." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "לא ניתן למחוק את המשתמש עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות." -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "המשתמש \"%(username)s\" נמחק בהצלחה" +#~ msgid "Passwords do not match." +#~ msgstr "הסיסמאות אינן תואמות." -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "הטלמטריה הופעלה. תודה שעזרת לנו להשתפר!" +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן לעדכן את המשתמש עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "המשתמש \"%(username)s\" עודכן בהצלחה" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "לא ניתן למחוק את המנהל האחרון" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "לא ניתן למחוק משתמש עם ערכי זמן קיימים" -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק את המשתמש עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "המשתמש \"%(username)s\" נמחק בהצלחה" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "אזור זמן לא חוקי: %(timezone)s" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "הטלמטריה הופעלה. תודה שעזרת לנו להשתפר!" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את ההגדרות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "ההגדרות עודכנו בהצלחה" +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "שגיאה בשמירת ההגדרות" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "אזור זמן לא חוקי: %(timezone)s" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את ההגדרות עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "לא ניתן היה לעדכן פריסת PDF עקב שגיאת מסד נתונים." +#~ msgid "Settings updated successfully" +#~ msgstr "ההגדרות עודכנו בהצלחה" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "פריסת PDF עודכנה בהצלחה" +#~ msgid "Invalid code." +#~ msgstr "" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "Error saving settings" +#~ msgstr "שגיאה בשמירת ההגדרות" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "לא ניתן לאפס את פריסת PDF עקב שגיאת מסד נתונים." +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "פריסת PDF מאופסת לברירות המחדל" +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "לא ניתן היה לעדכן פריסת PDF עקב שגיאת מסד נתונים." -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "לא נבחר קובץ" +#~ msgid "PDF layout updated successfully" +#~ msgstr "פריסת PDF עודכנה בהצלחה" -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "לא ניתן לאפס את פריסת PDF עקב שגיאת מסד נתונים." -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "PDF layout reset to defaults" +#~ msgstr "פריסת PDF מאופסת לברירות המחדל" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Invalid page size" +#~ msgstr "" -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "Template not found for this page size" +#~ msgstr "" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "No file uploaded" +#~ msgstr "" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "No file selected" +#~ msgstr "לא נבחר קובץ" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "לא נבחר קובץ לוגו" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "קובץ תמונה לא חוקי." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "לא ניתן לשמור את הלוגו עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "לוגו החברה הועלה בהצלחה! אתה יכול לראות את זה בסעיף \"לוגו החברה הנוכחי\" למעלה. זה יופיע בחשבוניות ובמסמכי PDF." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "סוג קובץ לא חוקי. סוגים מותרים: PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "לא ניתן להסיר את הלוגו עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "לוגו החברה הוסר בהצלחה. העלה לוגו חדש בקטע למטה במידת הצורך." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "אין לוגו להסיר" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "הגיבוי נכשל: הארכיון לא נוצר" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "הגיבוי נכשל: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "סוג קובץ לא חוקי" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "קובץ הגיבוי לא נמצא" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "הגיבוי \"%(filename)s\" נמחק בהצלחה" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "מחיקת הגיבוי נכשלה: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "סוג קובץ לא חוקי. אנא בחר ארכיון גיבוי .zip." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "קובץ הגיבוי לא נמצא." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "סוג קובץ לא חוקי. אנא העלה ארכיון גיבוי .zip." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "לא סופק קובץ גיבוי" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "השחזור התחיל. אתה יכול לעקוב אחר ההתקדמות בדף זה." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC אינו מופעל. הגדר את AUTH_METHOD ל-\"oidc\" או \"שניהם\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER אינו מוגדר" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "Could not import template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "Template imported successfully" +#~ msgstr "" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ מסמך גילוי הובא בהצלחה מ-%(url)s" +#~ msgid "Invoice not found" +#~ msgstr "" -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Quote not found" +#~ msgstr "" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ אחזור מסמך הגילוי נכשל: %(error)s" +#~ msgid "No logo file selected" +#~ msgstr "לא נבחר קובץ לוגו" -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ שגיאה לא צפויה: %(error)s" +#~ msgid "Invalid image file." +#~ msgstr "קובץ תמונה לא חוקי." -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "לא ניתן לשמור את הלוגו עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ לקוח OAuth רשום באפליקציה" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ לקוח OAuth אינו רשום" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ נכשל ביצירת לקוח OAuth: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s: %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ חסרים %(endpoint)s במסמך הגילוי" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ היקף \"%(scope)s\" נתמך על ידי הספק" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ היקף \"%(scope)s\" עשוי שלא להיות נתמך על ידי הספק (נתמך: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ הספק תומך בטענות: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ הטענה %(claim_type)s המוגדרת \"%(claim_name)s\" נתמכת" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ התביעה %(claim_type)s מוגדרת \"%(claim_name)s\" אינה ברשימת התביעות הנתמכות (ייתכן שעדיין יפעלו)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "בדיקת תצורת OIDC הושלמה" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "נדרש שם תבנית" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "נדרש שם תבנית" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "תבנית בשם זה כבר קיימת" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "לא ניתן ליצור תבנית דוא\"ל עקב שגיאת מסד נתונים." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "תבנית דוא\"ל נוצרה בהצלחה" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "לא ניתן היה לעדכן את תבנית הדוא\"ל עקב שגיאת מסד נתונים." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "תבנית דוא\"ל עודכנה בהצלחה" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "לא ניתן למחוק תבנית שנמצאת בשימוש על ידי חשבוניות או חשבוניות חוזרות" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "לא ניתן למחוק תבנית דוא\"ל עקב שגיאת מסד נתונים." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "תבנית הדוא\"ל \"%(name)s\" נמחקה בהצלחה" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "לוגו החברה הועלה בהצלחה! אתה יכול " +#~ "לראות את זה בסעיף \"לוגו החברה " +#~ "הנוכחי\" למעלה. זה יופיע בחשבוניות " +#~ "ובמסמכי PDF." -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "הפרויקט שנבחר אינו קיים או אינו פעיל" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "הוֹדָעָה" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "סוג קובץ לא חוקי. סוגים מותרים: PNG, JPG, JPEG, GIF, SVG, WEBP" -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "טבלת יומני ביקורת אינה קיימת. נא להפעיל: שדרוג flask db" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן להסיר את הלוגו עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "לוגו החברה הוסר בהצלחה. העלה לוגו חדש בקטע למטה במידת הצורך." -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "אין לוגו להסיר" -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "ברוך שובך, %(username)s!" +#~ msgid "Backup failed: archive not created" +#~ msgstr "הגיבוי נכשל: הארכיון לא נוצר" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "הגיבוי נכשל: %(error)s" -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Invalid file type" +#~ msgstr "סוג קובץ לא חוקי" -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "קובץ הגיבוי לא נמצא" -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "הגדר את הסיסמה שלך" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "הגיבוי \"%(filename)s\" נמחק בהצלחה" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "מחיקת הגיבוי נכשלה: %(error)s" -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "אסימון הגדרת סיסמה לא חוקי או שפג תוקפו. בבקשה בקש אחד חדש." +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "סוג קובץ לא חוקי. אנא בחר ארכיון גיבוי .zip." -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "פורטל לקוח אינו מופעל עבור לקוח זה." +#~ msgid "Backup file not found." +#~ msgstr "קובץ הגיבוי לא נמצא." -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "סוג קובץ לא חוקי. אנא העלה ארכיון גיבוי .zip." -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "לא ניתן להגדיר סיסמה עקב שגיאת מסד נתונים." +#~ msgid "No backup file provided" +#~ msgstr "לא סופק קובץ גיבוי" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "השחזור התחיל. אתה יכול לעקוב אחר ההתקדמות בדף זה." -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "OIDC אינו מופעל. הגדר את AUTH_METHOD ל-\"oidc\" או \"שניהם\"." -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER אינו מוגדר" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "לא ניתן ליצור את החשבון שלך עקב שגיאת מסד נתונים. אנא נסה שוב מאוחר יותר." +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "קַבָּלַת פָּנִים! החשבון שלך נוצר." +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "המשתמש לא נמצא. אנא צור קשר עם מנהל מערכת." +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "לא ניתן לעדכן את תפקיד החשבון שלך עקב שגיאת מסד נתונים." +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ מסמך גילוי הובא בהצלחה מ-%(url)s" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "החשבון מושבת. אנא צור קשר עם מנהל מערכת." +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ אחזור מסמך הגילוי נכשל: %(error)s" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ שגיאה לא צפויה: %(error)s" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "שגיאה בלתי צפויה במהלך הכניסה. אנא נסה שוב או בדוק את יומני השרת." +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ לקוח OAuth רשום באפליקציה" -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "ההפעלה שלך פג או שהדף היה פתוח יותר מדי. אנא נסה שוב." +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ לקוח OAuth אינו רשום" -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "שיטת אימות" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "שיטת אימות" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "לא ניתן ליצור את החשבון שלך עקב שגיאת מסד נתונים." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "שיטת אימות" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "לא ניתן לעדכן את תפקיד החשבון שלך עקב שגיאת מסד נתונים." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "להתראות, %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "סוג קובץ דמות לא חוקי. מותר: PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "שמירת הדמות בשרת נכשלה." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "הפרופיל עודכן בהצלחה" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "לא ניתן היה לעדכן את הפרופיל שלך עקב שגיאת מסד נתונים." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ נכשל ביצירת לקוח OAuth: %(error)s" -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s: %(url)s" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ חסרים %(endpoint)s במסמך הגילוי" -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ היקף \"%(scope)s\" נתמך על ידי הספק" -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ היקף \"%(scope)s\" עשוי שלא להיות " +#~ "נתמך על ידי הספק (נתמך: %(supported)s)" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ הספק תומך בטענות: %(claims)s" -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "האווטאר הוסר" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "✓ הטענה %(claim_type)s המוגדרת \"%(claim_name)s\" נתמכת" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "הסרת הדמות נכשלה." +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ התביעה %(claim_type)s מוגדרת " +#~ "\"%(claim_name)s\" אינה ברשימת התביעות הנתמכות" +#~ " (ייתכן שעדיין יפעלו)" -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "OIDC configuration test completed" +#~ msgstr "בדיקת תצורת OIDC הושלמה" -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Template name is required" +#~ msgstr "נדרש שם תבנית" -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "HTML template content is required" +#~ msgstr "נדרש שם תבנית" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "כניסה יחידה עדיין לא מוגדרת. אנא צור קשר עם מנהל מערכת." +#~ msgid "A template with this name already exists" +#~ msgstr "תבנית בשם זה כבר קיימת" -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "כניסה יחידה אינה מוגדרת." +#~ msgid "Could not create email template due to a database error." +#~ msgstr "לא ניתן ליצור תבנית דוא\"ל עקב שגיאת מסד נתונים." -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Email template created successfully" +#~ msgstr "תבנית דוא\"ל נוצרה בהצלחה" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "לא ניתן היה לעדכן את תבנית הדוא\"ל עקב שגיאת מסד נתונים." -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "האימות נכשל: חסרה תביעת מנפיק או נושא. אנא בדוק את תצורת OIDC." +#~ msgid "Email template updated successfully" +#~ msgstr "תבנית דוא\"ל עודכנה בהצלחה" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "חשבון משתמש אינו קיים והרישום העצמי מושבת." +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "לא ניתן למחוק תבנית שנמצאת בשימוש על ידי חשבוניות או חשבוניות חוזרות" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "לא ניתן ליצור את החשבון שלך עקב שגיאת מסד נתונים." +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "לא ניתן למחוק תבנית דוא\"ל עקב שגיאת מסד נתונים." -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "שגיאה בלתי צפויה במהלך התחברות SSO. אנא נסה שוב או פנה לתמיכה." +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "תבנית הדוא\"ל \"%(name)s\" נמחקה בהצלחה" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "אין לך גישה לפרויקט הזה." +#~ msgid "Task name and project are required" +#~ msgstr "" -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "לפרויקט זה אין תקציב מוגדר." +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "הפרויקט שנבחר אינו קיים או אינו פעיל" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "האירוע נוצר בהצלחה" +#~ msgid "message" +#~ msgstr "הוֹדָעָה" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "האירוע עודכן בהצלחה" +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "אין לך הרשאה למחוק את האירוע הזה." +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "טבלת יומני ביקורת אינה קיימת. נא להפעיל: שדרוג flask db" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "מחיקת האירוע נכשלה" +#~ msgid "You must change your password before continuing." +#~ msgstr "" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "האירוע נמחק בהצלחה" +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "שגיאה במחיקת אירוע: %(error)s" +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "ברוך שובך, %(username)s!" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "האירוע הועבר בהצלחה" +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "גודל האירוע השתנה בהצלחה" +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "אין לך הרשאה לצפות באירוע זה." +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "אין לך הרשאה לערוך את האירוע הזה." +#~ msgid "Reset your TimeTracker password" +#~ msgstr "הגדר את הסיסמה שלך" -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "תוכן הערה לא יכול להיות ריק" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "הערה נוספה בהצלחה" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "שגיאה בהוספת הערה" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "שגיאה בהוספת הערה: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "הערה אינה שייכת ללקוח זה" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "אין לך הרשאה לערוך הערה זו" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "שגיאה בעדכון ההערה" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "הערה עודכנה בהצלחה" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "שגיאה בעדכון הערה: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "אין לך הרשאה למחוק הערה זו" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "שגיאה במחיקת הערה" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "הערה נמחקה בהצלחה" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "שגיאה במחיקת הערה: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "אנא היכנס כדי לגשת לפורטל הלקוחות." +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "אסימון הגדרת סיסמה לא חוקי או שפג תוקפו. בבקשה בקש אחד חדש." -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "הגִישָׁה נִדחֲתָה" +#~ msgid "Password reset is not available for this account." +#~ msgstr "פורטל לקוח אינו מופעל עבור לקוח זה." -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 אסור" +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "Could not reset password due to a database error." +#~ msgstr "לא ניתן להגדיר סיסמה עקב שגיאת מסד נתונים." -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "Invalid username format" +#~ msgstr "" -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "עמוד לא נמצא" +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "הדף שאתה מחפש אינו קיים או הועבר." +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "לא ניתן ליצור את החשבון שלך עקב" +#~ " שגיאת מסד נתונים. אנא נסה שוב " +#~ "מאוחר יותר." -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "שגיאת שרת" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "קַבָּלַת פָּנִים! החשבון שלך נוצר." -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "המשתמש לא נמצא. אנא צור קשר עם מנהל מערכת." -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "לא ניתן לעדכן את תפקיד החשבון שלך עקב שגיאת מסד נתונים." -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "הגישה לפורטל לקוחות אינה מופעלת עבור חשבונך." +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "החשבון מושבת. אנא צור קשר עם מנהל מערכת." -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "חשבון הלקוח שלך אינו פעיל." +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "נדרשים שם משתמש וסיסמה." +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "שם משתמש או סיסמה לא חוקיים." +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "ברוך הבא, %(client_name)s!" +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "שגיאה בלתי צפויה במהלך הכניסה. אנא נסה שוב או בדוק את יומני השרת." -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "התנתקת." +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "ההפעלה שלך פג או שהדף היה פתוח יותר מדי. אנא נסה שוב." -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "אסימון הגדרת סיסמה לא חוקי או חסר." +#~ msgid "Invalid authentication code." +#~ msgstr "שיטת אימות" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "אסימון הגדרת סיסמה לא חוקי או שפג תוקפו. בבקשה בקש אחד חדש." +#~ msgid "Two-factor authentication enabled." +#~ msgstr "שיטת אימות" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "נדרשת סיסמה." +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "לא ניתן ליצור את החשבון שלך עקב שגיאת מסד נתונים." -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "לא ניתן להגדיר סיסמה עקב שגיאת מסד נתונים." +#~ msgid "Two-factor authentication disabled." +#~ msgstr "שיטת אימות" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "הסיסמה הוגדרה בהצלחה! כעת ניתן להיכנס לפורטל." +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "לא ניתן לעדכן את תפקיד החשבון שלך עקב שגיאת מסד נתונים." -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "לא ניתן לטעון נתוני פורטל לקוח." +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "להתראות, %(username)s!" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "סוג קובץ דמות לא חוקי. מותר: PNG, JPG, JPEG, GIF, WEBP" -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Failed to save avatar on server." +#~ msgstr "שמירת הדמות בשרת נכשלה." -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "Profile updated successfully" +#~ msgstr "הפרופיל עודכן בהצלחה" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "לא ניתן היה לעדכן את הפרופיל שלך עקב שגיאת מסד נתונים." -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "החשבונית לא נמצאה." +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "ציטוט לא נמצא." +#~ msgid "New password is required" +#~ msgstr "" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Current password is required" +#~ msgstr "" -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "Current password is incorrect" +#~ msgstr "" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "Could not update password due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "Avatar removed" +#~ msgstr "האווטאר הוסר" -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "הסרת הדמות נכשלה." -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "כניסה יחידה עדיין לא מוגדרת. אנא צור קשר עם מנהל מערכת." -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "כניסה יחידה אינה מוגדרת." -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "האימות נכשל: חסרה תביעת מנפיק או נושא. אנא בדוק את תצורת OIDC." -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "חשבון משתמש אינו קיים והרישום העצמי מושבת." -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "לא ניתן ליצור את החשבון שלך עקב שגיאת מסד נתונים." -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "שגיאה בלתי צפויה במהלך התחברות SSO. אנא נסה שוב או פנה לתמיכה." -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "אין לך גישה לפרויקט הזה." -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "לפרויקט זה אין תקציב מוגדר." -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Event created successfully" +#~ msgstr "האירוע נוצר בהצלחה" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "האירוע עודכן בהצלחה" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "אין לך הרשאה למחוק את האירוע הזה." -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "Failed to delete event" +#~ msgstr "מחיקת האירוע נכשלה" -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "Event deleted successfully" +#~ msgstr "האירוע נמחק בהצלחה" -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "שגיאה במחיקת אירוע: %(error)s" -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "האירוע הועבר בהצלחה" -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "לא ניתן לטעון נתוני פורטל לקוח." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "פורטל לקוחות" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "7 הימים האחרונים" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "תַקצִיר" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "סה\"כ שעות" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Event resized successfully" +#~ msgstr "גודל האירוע השתנה בהצלחה" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "בתשלום" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "בּוֹלֵט" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "שעות לפי פרויקט" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "פּרוֹיֶקט" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "שעות" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "שעות לחיוב" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "טווח זמן" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "תַאֲרִיך" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "הגִישָׁה נִדחֲתָה" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "אין לך הרשאה לצפות באירוע זה." -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "אין לך הרשאה לערוך את האירוע הזה." -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "אין לך הרשאה ליצור לקוחות" +#~ msgid "Note content cannot be empty" +#~ msgstr "תוכן הערה לא יכול להיות ריק" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "נדרש שם הלקוח" +#~ msgid "Note added successfully" +#~ msgstr "הערה נוספה בהצלחה" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "לקוח בשם זה כבר קיים" +#~ msgid "Error adding note" +#~ msgstr "שגיאה בהוספת הערה" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "שגיאה בהוספת הערה: %(error)s" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "פורמט תעריף שעתי לא חוקי" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "שעות בתשלום מראש חייבות להיות מספר חיובי." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "יום האיפוס בתשלום מראש חייב להיות בין 1 ל-28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "Note does not belong to this client" +#~ msgstr "הערה אינה שייכת ללקוח זה" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "לא ניתן ליצור לקוח עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "You do not have permission to edit this note" +#~ msgstr "אין לך הרשאה לערוך הערה זו" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "אין לך גישה לפרויקט הזה." +#~ msgid "Error updating note" +#~ msgstr "שגיאה בעדכון ההערה" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "אין לך הרשאה לערוך לקוחות" +#~ msgid "Note updated successfully" +#~ msgstr "הערה עודכנה בהצלחה" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "שם משתמש בפורטל נדרש בעת הפעלת גישה לפורטל." +#~ msgid "Error updating note: %(error)s" +#~ msgstr "שגיאה בעדכון הערה: %(error)s" -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "שם משתמש זה בפורטל כבר נמצא בשימוש על ידי לקוח אחר." +#~ msgid "You do not have permission to delete this note" +#~ msgstr "אין לך הרשאה למחוק הערה זו" -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את הלקוח עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Error deleting note" +#~ msgstr "שגיאה במחיקת הערה" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "אין לך הרשאה לשלוח מיילים לפורטל" +#~ msgid "Note deleted successfully" +#~ msgstr "הערה נמחקה בהצלחה" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "פורטל לקוח אינו מופעל עבור לקוח זה." +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "שגיאה במחיקת הערה: %(error)s" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "שם משתמש בפורטל לא הוגדר עבור לקוח זה." +#~ msgid "Access Denied" +#~ msgstr "הגִישָׁה נִדחֲתָה" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "כתובת הדוא\"ל של הלקוח לא מוגדרת. לא ניתן לשלוח דוא\"ל להגדרת סיסמה." +#~ msgid "403 Forbidden" +#~ msgstr "403 אסור" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "לא ניתן ליצור אסימון להגדרת סיסמה עקב שגיאת מסד נתונים." +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "דוא\"ל להגדרת סיסמה נשלח בהצלחה אל %(email)s" +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "שרת האימייל אינו מוגדר. אנא הגדר את הגדרות הדוא\"ל ב-Admin → תצורת דוא\"ל או הגדר את משתנה הסביבה MAIL_SERVER." +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "שליחת האימייל להגדרת סיסמה נכשלה. אנא בדוק את תצורת הדוא\"ל ואת יומני השרת לפרטים." +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "אירעה שגיאה בעת שליחת האימייל: %(error)s" +#~ msgid "Page Not Found" +#~ msgstr "עמוד לא נמצא" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "אין לך הרשאה לאחסן לקוחות בארכיון" +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "הלקוח כבר לא פעיל" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "הדף שאתה מחפש אינו קיים או הועבר." -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "אין לך הרשאה להפעיל לקוחות" +#~ msgid "Server Error" +#~ msgstr "שגיאת שרת" -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "הלקוח כבר פעיל" +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "אין לך הרשאה למחוק לקוחות" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "הגישה לפורטל לקוחות אינה מופעלת עבור חשבונך." -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Your client account is inactive." +#~ msgstr "חשבון הלקוח שלך אינו פעיל." -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "לא ניתן למחוק את הלקוח עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "לא נבחרו לקוחות למחיקה" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "לא ניתן למחוק לקוחות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "לא נמחקו לקוחות" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "אין לך הרשאה לשנות סטטוס לקוח" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "לא נבחרו לקוחות" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "סטטוס לא חוקי" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "לא ניתן לעדכן את סטטוס הלקוח עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "לא עודכנו לקוחות" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "לא סופק קובץ" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "סוג הקובץ אינו מותר" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "גודל הקובץ חורג מהגודל המרבי המותר (10 MB)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "לא ניתן להעלות קובץ מצורף עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "Username and password are required." +#~ msgstr "נדרשים שם משתמש וסיסמה." -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "הקובץ המצורף הועלה בהצלחה" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "הקובץ לא נמצא" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "לא ניתן למחוק את הקובץ המצורף עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "הקובץ המצורף נמחק בהצלחה" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "תוכן התגובה לא יכול להיות ריק" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "ההערה חייבת להיות משויכת לפרויקט, משימה או הצעת מחיר" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "לא ניתן לשייך תגובה למספר יעדים" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "הערת הורה לא חוקית" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "התגובה נוספה בהצלחה" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "שגיאה בהוספת הערה" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "שגיאה בהוספת הערה: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "אין לך הרשאה לערוך תגובה זו" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "התגובה עודכנה בהצלחה" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "שגיאה בעדכון הערה: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "אין לך הרשאה למחוק את התגובה הזו" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "התגובה נמחקה בהצלחה" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "שגיאה במחיקת הערה: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "Invalid username or password." +#~ msgstr "שם משתמש או סיסמה לא חוקיים." -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "ברוך הבא, %(client_name)s!" -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "אין לך הרשאה למחוק את הקובץ המצורף הזה" +#~ msgid "You have been logged out." +#~ msgstr "התנתקת." -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "אסימון הגדרת סיסמה לא חוקי או חסר." -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "אסימון הגדרת סיסמה לא חוקי או שפג תוקפו. בבקשה בקש אחד חדש." -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "איש הקשר נוצר בהצלחה" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "שגיאה ביצירת איש קשר: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "איש הקשר עודכן בהצלחה" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "שגיאה בעדכון איש הקשר: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "איש הקשר נמחק בהצלחה" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "שגיאה במחיקת איש קשר: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "איש קשר הוגדר כראשי" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "שגיאה בהגדרת איש קשר ראשי: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "התקשורת הוקלטה בהצלחה" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "שגיאה בהקלטת תקשורת: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Password is required." +#~ msgstr "נדרשת סיסמה." -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "נדרשת תווית" +#~ msgid "Could not set password due to a database error." +#~ msgstr "לא ניתן להגדיר סיסמה עקב שגיאת מסד נתונים." -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "הסיסמה הוגדרה בהצלחה! כעת ניתן להיכנס לפורטל." -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "לא ניתן לטעון נתוני פורטל לקוח." -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Invoice not found." +#~ msgstr "החשבונית לא נמצאה." -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Quote not found." +#~ msgstr "ציטוט לא נמצא." -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "ערך עסקה לא חוקי" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "העסקה נוצרה בהצלחה" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "שגיאה ביצירת עסקה: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "העסקה עודכנה בהצלחה" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "שגיאה בעדכון העסקה: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "העסקה נסגרה כמו זוכה" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "שגיאה בסגירת עסקה: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "העסקה נסגרה כאבודה" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "הפעילות תועדה בהצלחה" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "שגיאה בהקלטת פעילות: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "נדרש שם קטגוריה" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "קטגוריית הוצאות נוצרה בהצלחה" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "שגיאה ביצירת קטגוריית הוצאות" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "קטגוריית ההוצאות עודכנה בהצלחה" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "שגיאה בעדכון קטגוריית ההוצאות" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "קטגוריית ההוצאות הושבתה בהצלחה" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "שגיאה בביטול קטגוריית ההוצאות" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "כותרת נדרשת" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "נדרשת קטגוריה" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "נדרש סכום" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "נדרש תאריך הוצאה" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "פורמט תאריך לא חוקי" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "פורמט סכום לא חוקי" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "הוצאה נוצרה בהצלחה" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "שגיאה ביצירת הוצאה" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "אין לך הרשאה לצפות בהוצאה זו" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "אין לך הרשאה לערוך הוצאה זו" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "לא ניתן לערוך הוצאות מאושרות או מוחזרות" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "נא למלא את כל השדות הנדרשים" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "ההוצאה עודכנה בהצלחה" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "שגיאה בעדכון ההוצאה" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "אין לך הרשאה למחוק הוצאה זו" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "לא ניתן למחוק הוצאות שאושרו או מחוייבות" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "הוצאה נמחקה בהצלחה" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "שגיאה במחיקת הוצאה" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "לא נבחרו הוצאות למחיקה" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "לא ניתן למחוק הוצאות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "נמחקו בהצלחה %(count)d הוצאות" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "דילוג על %(count)d הוצאות: %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "לא נבחרו הוצאות" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "ערך סטטוס לא חוקי" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "לא ניתן היה לעדכן הוצאות עקב שגיאת מסד נתונים" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "עודכן בהצלחה %(count)d הוצאות ל-%(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "דילוג על %(count)d הוצאות: %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "דילוג על %(count)d הוצאות (ללא הרשאה)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "רק מנהלי מערכת יכולים לאשר הוצאות" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "ניתן לאשר רק הוצאות תלויות" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "ההוצאה אושרה בהצלחה" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "שגיאה באישור הוצאה" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "רק מנהלי מערכת יכולים לדחות הוצאות" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "ניתן לדחות רק הוצאות תלויות" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "נדרשת סיבת דחייה" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "הוצאה נדחתה" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "שגיאה בדחיית הוצאה" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "רק מנהלים יכולים לסמן הוצאות כמוחזרות" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "ניתן לסמן רק הוצאות מאושרות כמוחזרות" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "הוצאה זו אינה מסומנת כניתנת להחזר" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "הוצאה מסומנת כמוחזרת" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "שגיאה בסימון הוצאה כמוחזרה" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "OCR אינו זמין. אנא פנה למנהל המערכת שלך." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "סוג קובץ לא חוקי. סוגים מותרים: png, jpg, jpeg, gif, pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "הקבלה נסרקה בהצלחה! כעת תוכל ליצור הוצאה עם הנתונים שחולצו." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "שגיאה בסריקת קבלה. אנא נסה שוב או הזן את ההוצאה באופן ידני." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "לא נמצאו נתוני קבלה סרוקים. אנא סרוק תחילה קבלה." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "הוצאה נוצרה בהצלחה מקבלה שנסרקה" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "לא הוקצו הרשאות." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "לא ניתן לטעון נתוני פורטל לקוח." -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "Client Report" +#~ msgstr "פורטל לקוחות" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "7 הימים האחרונים" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Summary" +#~ msgstr "תַקצִיר" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "סה\"כ שעות" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Paid" +#~ msgstr "בתשלום" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "בּוֹלֵט" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "שעות לפי פרויקט" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "Project" +#~ msgstr "פּרוֹיֶקט" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "Hours" +#~ msgstr "שעות" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "REST API לאינטגרציות" +#~ msgid "Billable Hours" +#~ msgstr "שעות לחיוב" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "נדרש שם הלקוח" +#~ msgid "Time by Date" +#~ msgstr "טווח זמן" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "Date" +#~ msgstr "תַאֲרִיך" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "Access denied" +#~ msgstr "הגִישָׁה נִדחֲתָה" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "אין לך הרשאה ליצור לקוחות" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "נדרש שם הלקוח" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "לקוח בשם זה כבר קיים" -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "פורמט תעריף שעתי לא חוקי" -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "שעות בתשלום מראש חייבות להיות מספר חיובי." -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "יום האיפוס בתשלום מראש חייב להיות בין 1 ל-28." -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן ליצור לקוח עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "אין לך גישה לפרויקט הזה." -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "אין לך הרשאה לערוך לקוחות" -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "שם משתמש בפורטל נדרש בעת הפעלת גישה לפורטל." -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "This portal username is already in use by another client." +#~ msgstr "שם משתמש זה בפורטל כבר נמצא בשימוש על ידי לקוח אחר." -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את הלקוח עקב " +#~ "שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "אין לך הרשאה לשלוח מיילים לפורטל" -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "פורטל לקוח אינו מופעל עבור לקוח זה." -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "Portal username is not set for this client." +#~ msgstr "שם משתמש בפורטל לא הוגדר עבור לקוח זה." -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "כתובת הדוא\"ל של הלקוח לא מוגדרת. לא ניתן לשלוח דוא\"ל להגדרת סיסמה." -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "לא ניתן ליצור אסימון להגדרת סיסמה עקב שגיאת מסד נתונים." -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "דוא\"ל להגדרת סיסמה נשלח בהצלחה אל %(email)s" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "שרת האימייל אינו מוגדר. אנא הגדר " +#~ "את הגדרות הדוא\"ל ב-Admin → תצורת " +#~ "דוא\"ל או הגדר את משתנה הסביבה " +#~ "MAIL_SERVER." -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "שליחת האימייל להגדרת סיסמה נכשלה. אנא" +#~ " בדוק את תצורת הדוא\"ל ואת יומני " +#~ "השרת לפרטים." -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "אירעה שגיאה בעת שליחת האימייל: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "אין לך הרשאה לאחסן לקוחות בארכיון" + +#~ msgid "Client is already inactive" +#~ msgstr "הלקוח כבר לא פעיל" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "אין לך הרשאה להפעיל לקוחות" + +#~ msgid "Client is already active" +#~ msgstr "הלקוח כבר פעיל" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "אין לך הרשאה למחוק לקוחות" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק את הלקוח עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." + +#~ msgid "No clients selected for deletion" +#~ msgstr "לא נבחרו לקוחות למחיקה" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק לקוחות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "No clients were deleted" +#~ msgstr "לא נמחקו לקוחות" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "You do not have permission to change client status" +#~ msgstr "אין לך הרשאה לשנות סטטוס לקוח" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "No clients selected" +#~ msgstr "לא נבחרו לקוחות" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "Invalid status" +#~ msgstr "סטטוס לא חוקי" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "לא ניתן לעדכן את סטטוס הלקוח עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "No clients were updated" +#~ msgstr "לא עודכנו לקוחות" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "No file provided" +#~ msgstr "לא סופק קובץ" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "File type not allowed" +#~ msgstr "סוג הקובץ אינו מותר" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "גודל הקובץ חורג מהגודל המרבי המותר (10 MB)" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "לא ניתן להעלות קובץ מצורף עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "הקובץ המצורף הועלה בהצלחה" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "File not found" +#~ msgstr "הקובץ לא נמצא" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "לא ניתן למחוק את הקובץ המצורף עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "הקובץ המצורף נמחק בהצלחה" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "תוכן התגובה לא יכול להיות ריק" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "מִתקַדֵם" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "סְקִירָה" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "ההערה חייבת להיות משויכת לפרויקט, משימה או הצעת מחיר" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "לא ניתן לשייך תגובה למספר יעדים" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "הערת הורה לא חוקית" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "התגובה נוספה בהצלחה" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "חֶברָה" +#~ msgid "Error adding comment" +#~ msgstr "שגיאה בהוספת הערה" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "שגיאה בהוספת הערה: %(error)s" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "אין לך הרשאה לערוך תגובה זו" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Webhooks" +#~ msgid "Comment updated successfully" +#~ msgstr "התגובה עודכנה בהצלחה" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "שגיאה בעדכון הערה: %(error)s" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "פרויקטים" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "אין לך הרשאה למחוק את התגובה הזו" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "התגובה נמחקה בהצלחה" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "שגיאה במחיקת הערה: %(error)s" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "אין לך הרשאה למחוק את הקובץ המצורף הזה" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "איש הקשר נוצר בהצלחה" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "שגיאה ביצירת איש קשר: %(error)s" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "מק\"ט כבר קיים. אנא השתמש במק\"ט אחר." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "פריט מלאי נוצר בהצלחה." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "שגיאה ביצירת פריט מלאי: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "פריט המלאי עודכן בהצלחה." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "שגיאה בעדכון פריט מלאי: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "לא ניתן למחוק פריט מלאי עם מלאי קיים או היסטוריית תנועות." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "פריט מלאי נמחק בהצלחה." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "שגיאה במחיקת פריט מלאי: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "קוד המחסן כבר קיים. אנא השתמש בקוד אחר." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "המחסן נוצר בהצלחה." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "שגיאה ביצירת מחסן: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "המחסן עודכן בהצלחה." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "שגיאה בעדכון המחסן: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "לא ניתן למחוק מחסן עם מלאי קיים. נא להעביר או להסיר את כל המלאי תחילה." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "המחסן נמחק בהצלחה." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "שגיאה במחיקת מחסן: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "איש הקשר עודכן בהצלחה" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "שגיאה בעדכון איש הקשר: %(error)s" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "איש הקשר נמחק בהצלחה" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "שגיאה במחיקת איש קשר: %(error)s" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Contact set as primary" +#~ msgstr "איש קשר הוגדר כראשי" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "שגיאה בהגדרת איש קשר ראשי: %(error)s" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "התקשורת הוקלטה בהצלחה" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "שגיאה בהקלטת תקשורת: %(error)s" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "Label is required" +#~ msgstr "נדרשת תווית" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "תנועת המניה נרשמה בהצלחה." +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "שגיאה ברישום תנועת מלאי: %(error)s" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "מחסני מקור ויעד חייבים להיות שונים." +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "מלאי לא זמין במחסן המקור." +#~ msgid "Invalid deal value" +#~ msgstr "ערך עסקה לא חוקי" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "העסקה נוצרה בהצלחה" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "שגיאה ביצירת עסקה: %(error)s" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "העסקה עודכנה בהצלחה" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "העברת המלאי הושלמה בהצלחה." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "שגיאה ביצירת העברה: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "התאמת מלאי תועדה בהצלחה." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "התאמת שגיאה בהקלטת: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "ההזמנה מומשה בהצלחה." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "שגיאה במילוי ההזמנה: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "ההזמנה בוטלה בהצלחה." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "שגיאה בביטול ההזמנה: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "שגיאה בעדכון העסקה: %(error)s" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "הספק נוצר בהצלחה." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "שגיאה ביצירת ספק: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "קוד הספק כבר קיים. אנא השתמש בקוד אחר." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "הספק עודכן בהצלחה." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "שגיאה בעדכון הספק: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "לא ניתן למחוק ספק עם פריטי מלאי משויכים. הסר פריטים תחילה." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "הספק נמחק בהצלחה." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "שגיאה במחיקת ספק: %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "כותרת נדרשת" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "לא נמצאו ספקים." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "נדרש שם תפקיד" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "לא ניתן ליצור תפקיד עקב שגיאת מסד נתונים" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "הזמנת רכש נוצרה בהצלחה." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "שגיאה ביצירת הזמנת רכש: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "לא ניתן לערוך הזמנת רכש שהתקבלה." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "לא ניתן היה לעדכן את התפקיד עקב שגיאת מסד נתונים" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "הזמנת רכש עודכנה בהצלחה." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "שגיאה בעדכון הזמנת רכש: %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "לא ניתן היה לעדכן את תפקידי המשתמש עקב שגיאת מסד נתונים" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "הזמנת רכש מסומנת כנשלחה." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "שגיאה בשליחת הזמנת רכש: %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "לא ניתן ליצור תפקיד עקב שגיאת מסד נתונים" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "הזמנת הרכש בוטלה בהצלחה." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "שגיאה בביטול הזמנת רכש: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "לא ניתן למחוק הזמנת רכש שהתקבלה. בטל אותו במקום זאת." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "לא ניתן למחוק את התפקיד עקב שגיאת מסד נתונים" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "הזמנת רכש נמחקה בהצלחה." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "שגיאה במחיקת הזמנת רכש: %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "לא ניתן ליצור תפקיד עקב שגיאת מסד נתונים" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "הזמנת רכש מסומנת כמתקבלת והמלאי עודכן." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "שגיאה בקבלת הזמנת רכש: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "העסקה נסגרה כמו זוכה" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "שגיאה בסגירת עסקה: %(error)s" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "העסקה נסגרה כאבודה" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "הפעילות תועדה בהצלחה" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "שגיאה בהקלטת פעילות: %(error)s" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "נדרש שם קטגוריה" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "פרויקט, שם לקוח ותאריך יעד נדרשים" +#~ msgid "Expense category created successfully" +#~ msgstr "קטגוריית הוצאות נוצרה בהצלחה" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "פורמט תאריך יעד לא חוקי" +#~ msgid "Error creating expense category" +#~ msgstr "שגיאה ביצירת קטגוריית הוצאות" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "פורמט שיעור מס לא חוקי" +#~ msgid "Expense category updated successfully" +#~ msgstr "קטגוריית ההוצאות עודכנה בהצלחה" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "הפרויקט שנבחר לא נמצא" +#~ msgid "Error updating expense category" +#~ msgstr "שגיאה בעדכון קטגוריית ההוצאות" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "לא ניתן ליצור חשבונית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Expense category deactivated successfully" +#~ msgstr "קטגוריית ההוצאות הושבתה בהצלחה" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "אין לך הרשאה לצפות בחשבונית זו" +#~ msgid "Error deactivating expense category" +#~ msgstr "שגיאה בביטול קטגוריית ההוצאות" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Title is required" +#~ msgstr "כותרת נדרשת" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Category is required" +#~ msgstr "נדרשת קטגוריה" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Amount is required" +#~ msgstr "נדרש סכום" -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "Expense date is required" +#~ msgstr "נדרש תאריך הוצאה" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "פורמט תאריך לא חוקי" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "פורמט סכום לא חוקי" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "אין לך הרשאה לערוך חשבונית זו" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "אזהרה: לא ניתן לשמור מלאי עבור פריט %(item)s: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את החשבונית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "החשבונית עודכנה בהצלחה" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "אזהרה: לא ניתן היה לצמצם מלאי עבור פריט %(item)s: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "אין לך הרשאה למחוק חשבונית זו" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "ניתן לערוך רק טיוטות ציטוטים" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "לא ניתן למחוק חשבונית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "לא נבחרו חשבוניות למחיקה" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "לא ניתן למחוק חשבוניות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "לא נבחרו חשבוניות" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "לא ניתן היה לעדכן חשבוניות עקב שגיאת מסד נתונים" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "לא נבחרו כניסות זמן, עלויות, הוצאות או מוצרים נוספים" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "לא ניתן ליצור פריטים עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "פריטי חשבונית שנוצרו בהצלחה מכניסות זמן ועלויות" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "הוחל על %(hours)s שעות בתשלום מראש עבור %(client)s לפני חיוב מופרז." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "אין לך הרשאה לייצא חשבונית זו" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "הוצאה נוצרה בהצלחה" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "שגיאה ביצירת הוצאה" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "אין לך הרשאה לצפות בהוצאה זו" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "אין לך הרשאה לערוך הוצאה זו" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "לא ניתן לערוך הוצאות מאושרות או מוחזרות" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "יצירת PDF נכשל: %(err)s. גם החזרה נכשלה: %(fb)s" +#~ msgid "Please fill in all required fields" +#~ msgstr "נא למלא את כל השדות הנדרשים" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "אין לך הרשאה לשכפל חשבונית זו" +#~ msgid "Expense updated successfully" +#~ msgstr "ההוצאה עודכנה בהצלחה" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "לא ניתן היה לשכפל חשבונית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Error updating expense" +#~ msgstr "שגיאה בעדכון ההוצאה" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "לא ניתן היה לסיים חשבונית משוכפלת עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "אין לך הרשאה למחוק הוצאה זו" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "לא ניתן למחוק הוצאות שאושרו או מחוייבות" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "Expense deleted successfully" +#~ msgstr "הוצאה נמחקה בהצלחה" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "שגיאה במחיקת הוצאה" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "לא נבחרו הוצאות למחיקה" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק הוצאות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "נמחקו בהצלחה %(count)d הוצאות" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "דילוג על %(count)d הוצאות: %(errors)s" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "לא נבחרו הוצאות" -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "חשבונית מסומנת כנשלחה" +#~ msgid "Invalid status value" +#~ msgstr "ערך סטטוס לא חוקי" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "חשבונית מסומנת כשולמה" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "לא ניתן היה לעדכן הוצאות עקב שגיאת מסד נתונים" -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "עודכן בהצלחה %(count)d הוצאות ל-%(status)s" -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "דילוג על %(count)d הוצאות: %(errors)s" -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "דילוג על %(count)d הוצאות (ללא הרשאה)" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "רק מנהלי מערכת יכולים לאשר הוצאות" -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "ניתן לאשר רק הוצאות תלויות" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "ההוצאה אושרה בהצלחה" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Error approving expense" +#~ msgstr "שגיאה באישור הוצאה" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "רק מנהלי מערכת יכולים לדחות הוצאות" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "ניתן לדחות רק הוצאות תלויות" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "Rejection reason is required" +#~ msgstr "נדרשת סיבת דחייה" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "הוצאה נדחתה" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "שגיאה בדחיית הוצאה" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "רק מנהלים יכולים לסמן הוצאות כמוחזרות" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "ניתן לסמן רק הוצאות מאושרות כמוחזרות" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "הוצאה זו אינה מסומנת כניתנת להחזר" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "הוצאה מסומנת כמוחזרת" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "שגיאה בסימון הוצאה כמוחזרה" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "OCR אינו זמין. אנא פנה למנהל המערכת שלך." -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "סוג קובץ לא חוקי. סוגים מותרים: png, jpg, jpeg, gif, pdf" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "הקבלה נסרקה בהצלחה! כעת תוכל ליצור הוצאה עם הנתונים שחולצו." -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "שגיאה בסריקת קבלה. אנא נסה שוב או הזן את ההוצאה באופן ידני." -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "יש צורך במפתח ותווית" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "לא נמצאו נתוני קבלה סרוקים. אנא סרוק תחילה קבלה." -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "לא ניתן ליצור עמודה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "הוצאה נוצרה בהצלחה מקבלה שנסרקה" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את העמודה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Permission denied." +#~ msgstr "לא הוקצו הרשאות." -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "לא ניתן למחוק עמודות מערכת" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "לא ניתן למחוק את העמודה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "לא ניתן היה להחליף את העמודה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "הטיימר נעצר בהצלחה" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "הליד נוצר בהצלחה" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "שגיאה ביצירת ליד: %(error)s" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "הליד עודכן בהצלחה" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "שגיאה בעדכון הפניה: %(error)s" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "עופרת כבר הוסבה" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "הליד הומר ללקוח בהצלחה" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "שגיאה בהמרת לידים: %(error)s" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "הליד הומר לעסקה בהצלחה" +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "עופרת מסומנת כאבדה" +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "שגיאה בסימון ההובלה כאבדה: %(error)s" +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "REST API לאינטגרציות" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Linear API key is required." +#~ msgstr "נדרש שם הלקוח" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "הזנת קילומטראז' נוצרה בהצלחה" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "שגיאה ביצירת רישום קילומטראז'" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "אין לך הרשאה להציג את ערך הקילומטראז' הזה" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "אין לך הרשאה לערוך את ערך הקילומטראז' הזה" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "לא ניתן לערוך ערכי קילומטראז' מאושרים או מוחזרים" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "רישום הקילומטרז' עודכן בהצלחה" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "שגיאה בעדכון רשומת הקילומטראז'" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "אין לך הרשאה למחוק את ערך הקילומטראז' הזה" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "רשומת הקילומטראז' נמחקה בהצלחה" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "שגיאה במחיקת ערך קילומטראז'" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "לא נבחרו רשומות קילומטראז' למחיקה" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "לא ניתן למחוק ערכי קילומטראז' עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "נמחק בהצלחה %(count)d קילומטראז' entr%(plural)s" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "דילג על %(count)d קילומטראז' entr%(plural)s: %(errors)s" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "לא נבחרו ערכי קילומטראז'" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "לא ניתן היה לעדכן ערכי קילומטראז' עקב שגיאת מסד נתונים" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "עודכן בהצלחה את %(count)d קילומטראז' entr%(plural)s ל-%(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "דילג על %(count)d קילומטראז' entr%(plural)s (ללא הרשאה)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "רק מנהלי מערכת יכולים לאשר הזנת קילומטראז'" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "ניתן לאשר רק רישומי קילומטראז' ממתינים" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "הזנת קילומטראז' אושרה בהצלחה" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "שגיאה באישור הזנת קילומטראז'" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "רק מנהלי מערכת יכולים לדחות הזנת קילומטראז'" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "ניתן לדחות רק רישומי קילומטראז' ממתינים" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "הזנת קילומטראז' נדחתה" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "שגיאה בדחיית הזנת קילומטראז'" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "רק מנהלי מערכת יכולים לסמן כניסות קילומטראז' כמוחזרות" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "ניתן לסמן רק רישומי קילומטראז' מאושרים כמוחזרים" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "רישום קילומטראז מסומן כמוחזר" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "שגיאה בסימון רישום קילומטראז' כמוחזר" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "כותרת הצעת המחיר ולקוח נדרשים" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "הלקוח שנבחר לא נמצא" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "פורמט סכום כולל לא חוקי" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "פורמט שעות משוער לא חוקי" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "פורמט תאריך לא חוקי עבור תקף עד" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "לא ניתן ליצור הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "הציטוט נוצר בהצלחה" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "ניתן לערוך רק טיוטות ציטוטים" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את הצעת המחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "הצעת המחיר עודכנה בהצלחה" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "ניתן לשלוח רק טיוטות הצעות מחיר" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "לא ניתן לשלוח הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "הצעת המחיר נשלחה בהצלחה" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "לא ניתן לקבל ציטוט זה" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "לא ניתן לקבל ציטוט: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "לא ניתן לקבל הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "הצעת המחיר התקבלה והפרויקט נוצר בהצלחה" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "לא ניתן לדחות ציטוט זה" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "לא ניתן לדחות ציטוט: %(error)s" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "לא ניתן לדחות הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "ציטוט נדחה" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "ניתן למחוק רק טיוטות או ציטוטים שנדחו" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "לא ניתן למחוק ציטוט עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "הציטוט נמחק בהצלחה" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "פורמט לא חוקי מתאריך" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "פורמט לא חוקי עד תאריך" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "אין לך הרשאה לצפות בתשלום זה" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "נדרשים חשבונית, סכום ותאריך תשלום" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "החשבונית שנבחרה לא נמצאה" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "אין לך הרשאה להוסיף תשלומים לחשבונית זו" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "סכום התשלום חייב להיות גדול מאפס" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "סכום תשלום לא חוקי" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "פורמט תאריך תשלום לא חוקי" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "עמלת שער לא יכולה להיות שלילית" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "סכום עמלת שער לא חוקי" +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "לא ניתן ליצור תשלום עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "אין לך הרשאה לערוך תשלום זה" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את התשלום עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "התשלום עודכן בהצלחה" +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "אין לך הרשאה למחוק תשלום זה" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "לא ניתן למחוק תשלום עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "התשלום נמחק בהצלחה" +#~ msgid "Advanced" +#~ msgstr "מִתקַדֵם" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "לא נבחרו תשלומים למחיקה" +#~ msgid "Review" +#~ msgstr "סְקִירָה" -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "לא ניתן למחוק תשלומים עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "לא נבחרו תשלומים" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "לא ניתן היה לעדכן תשלומים עקב שגיאת מסד נתונים" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "תאריך ההתחלה חייב להיות לפני תאריך הסיום" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "לא נמצא תעריף ליום יום עבור מיקום זה. אנא הגדר תעריפים תחילה." +#~ msgid "Company" +#~ msgstr "חֶברָה" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "תביעת פיצויים נוצרה בהצלחה" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "שגיאה ביצירת תביעת דמי יום" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "אין לך הרשאה לצפות בתביעת דמי יום זו" +#~ msgid "Webhooks" +#~ msgstr "Webhooks" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "אין לך הרשאה לערוך תביעה זו לתשלום" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "לא ניתן לערוך תביעות ליום יומיים שאושרו או החזרו" +#~ msgid "Projects" +#~ msgstr "פרויקטים" -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "תביעת דמי היומיום עודכנה בהצלחה" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "שגיאה בעדכון תביעת דמי היומיום" +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "אין לך הרשאה למחוק את תביעת דמי היומיום הזו" +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "תביעת פיצויים נמחקה בהצלחה" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "שגיאה במחיקת תביעת דמי יום" +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "לא נבחרו תביעות ליום יומיים למחיקה" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "לא ניתן למחוק תביעות ליום יומיים עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "נמחקו בהצלחה %(count)d תביעות ליום יומיים" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "" +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "לא נבחרו תביעות פיצויים" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "לא ניתן היה לעדכן תביעות ליום יומיים עקב שגיאת מסד נתונים" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "עודכן בהצלחה %(count)d תביעות ליום יומיים ל-%(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "דילג על %(count)d תביעות ליום (ללא הרשאה)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "רק מנהלי מערכת יכולים לאשר תביעות דמי יום" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "ניתן לאשר רק תביעות ליום יומיים תלויות ועומדות" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "תביעת פיצויים אושרה בהצלחה" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "שגיאה באישור תביעת דמי היומיום" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "רק מנהלי מערכת יכולים לדחות תביעות דמי יום" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "ניתן לדחות רק תביעות דמי יום תלויות" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "תביעת דמי היומיום נדחתה" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "שגיאה בדחיית תביעת דמי היומיום" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "התעריף ליום יום נוצר בהצלחה" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "שגיאה ביצירת תעריף יומיים" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "התעריף ליום יומיים עודכן בהצלחה" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "שגיאה בעדכון התעריף ליום" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "לא ניתן למחוק שיעור: הוא נמצא בשימוש על ידי %(count)d תביעות ליום. השבת אותו במקום זאת." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "התעריף ליום יום נמחק בהצלחה" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "שגיאה במחיקת תעריף יומיים" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "אין לך הרשאה לגשת לדף זה" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "נדרש שם תפקיד" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "תפקיד בשם זה כבר קיים" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "לא ניתן ליצור תפקיד עקב שגיאת מסד נתונים" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "התפקיד נוצר בהצלחה" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "לא ניתן היה לעדכן את התפקיד עקב שגיאת מסד נתונים" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "התפקיד עודכן בהצלחה" +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "מק\"ט כבר קיים. אנא השתמש במק\"ט אחר." -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "אין לך הרשאה לבצע פעולה זו" +#~ msgid "Stock item created successfully." +#~ msgstr "פריט מלאי נוצר בהצלחה." -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "לא ניתן למחוק את תפקידי המערכת" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "שגיאה ביצירת פריט מלאי: %(error)s" -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "לא ניתן למחוק תפקיד שהוקצה למשתמשים. נא להקצות מחדש משתמשים תחילה." +#~ msgid "Stock item updated successfully." +#~ msgstr "פריט המלאי עודכן בהצלחה." -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "לא ניתן למחוק את התפקיד עקב שגיאת מסד נתונים" +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "שגיאה בעדכון פריט מלאי: %(error)s" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "התפקיד \"%(name)s\" נמחק בהצלחה" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "לא ניתן למחוק פריט מלאי עם מלאי קיים או היסטוריית תנועות." -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "Stock item deleted successfully." +#~ msgstr "פריט מלאי נמחק בהצלחה." -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "שגיאה במחיקת פריט מלאי: %(error)s" -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "קוד המחסן כבר קיים. אנא השתמש בקוד אחר." -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "לא ניתן היה לעדכן את תפקידי המשתמש עקב שגיאת מסד נתונים" +#~ msgid "Warehouse created successfully." +#~ msgstr "המחסן נוצר בהצלחה." -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "תפקידי המשתמש עודכנו בהצלחה" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "שגיאה ביצירת מחסן: %(error)s" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "המחסן עודכן בהצלחה." -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "שגיאה בעדכון המחסן: %(error)s" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "לא ניתן למחוק מחסן עם מלאי קיים. נא להעביר או להסיר את כל המלאי תחילה." -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "המחסן נמחק בהצלחה." -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "שגיאה במחיקת מחסן: %(error)s" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "נדרשים שם הפרויקט ולקוח" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "סכום תקציב לא חוקי" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "אחוז סף תקציב לא חוקי (0-100)" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "הפרויקט לא נמצא" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "אין לך הרשאה לאחסן פרויקטים בארכיון" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "הפרויקט כבר שמור בארכיון" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "אין לך הרשאה להוציא פרויקטים מהארכיון" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "הפרויקט כבר פעיל" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "אין לך הרשאה לבטל פרויקטים" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "הפרויקט כבר לא פעיל" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "אין לך הרשאה להפעיל פרויקטים" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "לא ניתן למחוק פרויקט עם ערכי זמן קיימים" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "לא ניתן למחוק את הפרויקט עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "אין לך הרשאה למחוק פרויקטים" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "לא נבחרו פרויקטים למחיקה" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "לא ניתן למחוק פרויקטים עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "אף פרויקט לא נמחק" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "אין לך הרשאה לשנות את סטטוס הפרויקט" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "לא נבחרו פרויקטים" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "תנועת המניה נרשמה בהצלחה." -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את סטטוס הפרויקט עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "לא עודכנו פרויקטים" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "שגיאה ברישום תנועת מלאי: %(error)s" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "הפרויקט כבר מועדף" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "מחסני מקור ויעד חייבים להיות שונים." -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "הפרויקט נוסף למועדפים" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "מלאי לא זמין במחסן המקור." -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "הוספת הפרויקט למועדפים נכשלה" +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "הפרויקט אינו מועדף" +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "הפרויקט הוסר מהמועדפים" +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "הסרת הפרויקט מהמועדפים נכשלה" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "העברת המלאי הושלמה בהצלחה." -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "נדרשים תיאור, קטגוריה, סכום ותאריך" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "שגיאה ביצירת העברה: %(error)s" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "לא ניתן להוסיף עלות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "התאמת מלאי תועדה בהצלחה." -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "העלות נוספה בהצלחה" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "התאמת שגיאה בהקלטת: %(error)s" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "עלות לא נמצאה" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "ההזמנה מומשה בהצלחה." -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "אין לך הרשאה לערוך עלות זו" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "שגיאה במילוי ההזמנה: %(error)s" -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את העלות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Reservation cancelled successfully." +#~ msgstr "ההזמנה בוטלה בהצלחה." -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "העלות עודכנה בהצלחה" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "שגיאה בביטול ההזמנה: %(error)s" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "אין לך הרשאה למחוק עלות זו" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "לא ניתן למחוק עלות שחויבה" +#~ msgid "Supplier created successfully." +#~ msgstr "הספק נוצר בהצלחה." -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "לא ניתן למחוק את העלות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "שגיאה ביצירת ספק: %(error)s" -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "יש לציין שם ומחיר יחידה" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "קוד הספק כבר קיים. אנא השתמש בקוד אחר." -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "פורמט כמות לא חוקי" +#~ msgid "Supplier updated successfully." +#~ msgstr "הספק עודכן בהצלחה." -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "פורמט מחיר יחידה לא חוקי" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "שגיאה בעדכון הספק: %(error)s" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "לא ניתן להוסיף טוב נוסף עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "טוב במיוחד נוסף בהצלחה" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "טוב במיוחד לא נמצא" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "אין לך הרשאה לערוך את הטוב הנוסף הזה" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן טוב במיוחד עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "טוב במיוחד עודכן בהצלחה" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "אין לך הרשאה למחוק את המוצר הנוסף הזה" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "לא ניתן למחוק מוצר נוסף שנוסף לחשבונית" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "לא ניתן היה למחוק טוב במיוחד עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "הפרויקט נוצר בהצלחה" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "פורמט סכום הנחה לא חוקי" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "יש לאשר הצעת מחיר לפני שניתן לשלוח אותה" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "לא ניתן לשלוח הצעת מחיר: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "אין לך הרשאה להעלות קבצים מצורפים לציטוט הזה" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "אין לך הרשאה להוריד את הקובץ המצורף הזה" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "אין לך הרשאה לבקש אישור להצעת מחיר זו" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "הצעת מחיר זו אינה דורשת אישור" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "לא ניתן לבקש אישור: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "לא ניתן לבקש אישור עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "האישור התבקש בהצלחה" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "הצעת מחיר זו אינה ממתינה לאישור" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "לא ניתן לאשר הצעת מחיר: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "לא ניתן לאשר הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "הצעת המחיר אושרה בהצלחה" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "לא ניתן לדחות ציטוט: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "אישור הצעת המחיר נדחה" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "לא ניתן ליצור תבנית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "התבנית נוצרה בהצלחה" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "לא ניתן למחוק ספק עם פריטי מלאי משויכים. הסר פריטים תחילה." -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "אין לך הרשאה ליצור תבנית מתוך ציטוט זה" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "לא ניתן לשמור תבנית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "התבנית נשמרה בהצלחה" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "אין לך הרשאה לייצא ציטוט זה" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "שגיאה ביצירת PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "נדרשת כתובת אימייל של הנמען" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "הצעת המחיר נשלחה בהצלחה אל %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "שליחת הצעת המחיר נכשלה: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "שגיאה בשליחת דוא\"ל: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "אין לך הרשאה לשכפל את הציטוט הזה" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "לא ניתן היה לשכפל הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "לא ניתן היה לסיים את הצעת המחיר המשוכפלת עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "ציטוט %(quote_number)s נוצר ככפול" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "אנא בחר פעולה ולפחות הצעת מחיר אחת" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "מזהי הצעת מחיר לא חוקיים" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "לא נמצאו ציטוטים או שאין לך הרשאה" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "%(count)d ציטוטים משוכפלים" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "השכפול של %(count)d ציטוטים נכשל" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "שגיאה בשכפול ציטוטים" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "סימנו %(count)d ציטוטים כנשלחו" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "לא ניתן לסמן %(count)d ציטוטים שנשלחו" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "שגיאה בעדכון ציטוטים" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "נמחקו %(count)d ציטוטים" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "לא ניתן למחוק %(count)d ציטוטים (ייתכן בשימוש)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "שגיאה במחיקת ציטוטים" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "פעולה לא חוקית" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "Supplier deleted successfully." +#~ msgstr "הספק נמחק בהצלחה." -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "שגיאה במחיקת ספק: %(error)s" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "נדרשים שם, פרויקט, לקוח, תדירות ותאריך ההפעלה הבא" +#~ msgid "Supplier is required." +#~ msgstr "כותרת נדרשת" -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "פורמט תאריך ההפעלה הבא לא חוקי" +#~ msgid "Supplier not found." +#~ msgstr "לא נמצאו ספקים." -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "פורמט תאריך סיום לא חוקי" +#~ msgid "Order date is required." +#~ msgstr "נדרש שם תפקיד" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "הפרויקט או הלקוח שנבחר לא נמצא" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "לא ניתן ליצור תפקיד עקב שגיאת מסד נתונים" -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "לא ניתן ליצור חשבונית חוזרת עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Purchase order created successfully." +#~ msgstr "הזמנת רכש נוצרה בהצלחה." -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "אין לך הרשאה לצפות בחשבונית החוזרת הזו" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "שגיאה ביצירת הזמנת רכש: %(error)s" -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "אין לך הרשאה לערוך חשבונית חוזרת זו" +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "לא ניתן לערוך הזמנת רכש שהתקבלה." -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן חשבונית חוזרת עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "לא ניתן היה לעדכן את התפקיד עקב שגיאת מסד נתונים" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "החשבונית החוזרת עודכנה בהצלחה" +#~ msgid "Purchase order updated successfully." +#~ msgstr "הזמנת רכש עודכנה בהצלחה." -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "אין לך הרשאה למחוק חשבונית חוזרת זו" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "שגיאה בעדכון הזמנת רכש: %(error)s" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "לא ניתן למחוק חשבונית חוזרת עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "לא ניתן היה לעדכן את תפקידי המשתמש עקב שגיאת מסד נתונים" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "Purchase order marked as sent." +#~ msgstr "הזמנת רכש מסומנת כנשלחה." -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "שגיאה בשליחת הזמנת רכש: %(error)s" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "לא ניתן ליצור תפקיד עקב שגיאת מסד נתונים" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "הַתחָלָה" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "סוֹף" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "הזמנת הרכש בוטלה בהצלחה." -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "מְשִׁימָה" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "הערות" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "ניתן לחיוב" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "לָקוּחַ" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "מִשׁתַמֵשׁ" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "כֵּן" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "לֹא" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "שגיאה בביטול הזמנת רכש: %(error)s" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "לא ניתן למחוק מסנן עקב שגיאת מסד נתונים" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "לא ניתן למחוק הזמנת רכש שהתקבלה. בטל אותו במקום זאת." -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "לא ניתן למחוק את התפקיד עקב שגיאת מסד נתונים" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "הזמנת רכש נמחקה בהצלחה." -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "שגיאה במחיקת הזמנת רכש: %(error)s" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "לא ניתן ליצור תפקיד עקב שגיאת מסד נתונים" -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "הזמנת רכש מסומנת כמתקבלת והמלאי עודכן." -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "שגיאה בקבלת הזמנת רכש: %(error)s" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "פרויקט, שם לקוח ותאריך יעד נדרשים" -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "לא ניתן היה לעדכן את ההגדרות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Invalid due date format" +#~ msgstr "פורמט תאריך יעד לא חוקי" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "ההתקנה הושלמה! תודה שעזרת לנו לשפר את TimeTracker." +#~ msgid "Invalid tax rate format" +#~ msgstr "פורמט שיעור מס לא חוקי" -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "Selected project not found" +#~ msgstr "הפרויקט שנבחר לא נמצא" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן ליצור חשבונית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "פרויקט ושם משימה נדרשים" +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "אין לך הרשאה לצפות בחשבונית זו" -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "הפרויקט שנבחר אינו קיים" +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "אין לך גישה למשימה זו" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "אתה יכול לערוך רק משימות שיצרת" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "נדרש שם משימה" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "נדרש פרויקט" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את הסטטוס עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "לא ניתן היה לעדכן את המשימה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "אין לך הרשאה לעדכן משימה זו" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "אתה יכול לעדכן רק משימות שיצרת" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "אתה יכול להקצות רק משימות שיצרת" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "המשתמש שנבחר אינו קיים" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "המשימה בוטלה" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "אתה יכול למחוק רק משימות שיצרת" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "לא ניתן למחוק משימה עם ערכי זמן קיימים" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "לא ניתן למחוק את המשימה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "לא נבחרו משימות למחיקה" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "לא ניתן למחוק משימות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "לא נבחרו משימות" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "לא ניתן היה לעדכן משימות עקב שגיאת מסד נתונים" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "הזן תאריך יעד חדש (YYYY-MM-DD):" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "נדרש תאריך הוצאה" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "פורמט תאריך לא חוקי" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "תמיכה במסד נתונים" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "%(count)d ציטוטים משוכפלים" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "לא נמצאו משימות" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "עודכן בהצלחה %(count)d הוצאות ל-%(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "דילוג על %(count)d הוצאות (ללא הרשאה)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "ערך עדיפות לא חוקי" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "לא נבחר משתמש להקצאה" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "נבחר משתמש לא חוקי" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "לא ניתן היה להקצות משימות עקב שגיאת מסד נתונים" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "לא נבחר פרויקט" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "נבחר פרויקט לא חוקי" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "לא ניתן היה להעביר משימות עקב שגיאת מסד נתונים" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "רק מנהלי מערכת יכולים להציג את כל המשימות שאחריות" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "אין לך הרשאה לערוך חשבונית זו" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "אזהרה: לא ניתן לשמור מלאי עבור פריט %(item)s: %(error)s" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את החשבונית עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "Invoice updated successfully" +#~ msgstr "החשבונית עודכנה בהצלחה" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "אזהרה: לא ניתן היה לצמצם מלאי עבור פריט %(item)s: %(error)s" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "אין לך הרשאה למחוק חשבונית זו" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "ניתן לערוך רק טיוטות ציטוטים" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק חשבונית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "No invoices selected for deletion" +#~ msgstr "לא נבחרו חשבוניות למחיקה" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק חשבוניות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "לא ניתן ליצור תבנית עקב שגיאת מסד נתונים" +#~ msgid "No invoices selected" +#~ msgstr "לא נבחרו חשבוניות" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "לא ניתן היה לעדכן את התבנית עקב שגיאת מסד נתונים" +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "לא ניתן היה לעדכן חשבוניות עקב שגיאת מסד נתונים" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "לא ניתן היה למחוק תבנית עקב שגיאת מסד נתונים" +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "לא נבחרו כניסות זמן, עלויות, הוצאות או מוצרים נוספים" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן ליצור פריטים עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "לא ניתן להפעיל טיימר עבור פרויקט ששמור בארכיון. אנא הסר את הפרויקט מהארכיון תחילה." +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "פריטי חשבונית שנוצרו בהצלחה מכניסות זמן ועלויות" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "לא ניתן להפעיל טיימר עבור פרויקט לא פעיל" +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "הוחל על %(hours)s שעות בתשלום מראש עבור %(client)s לפני חיוב מופרז." -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "המשימה שנבחרה אינה חוקית עבור הפרויקט שנבחר" +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "אין לך הרשאה לייצא חשבונית זו" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "אין לך גישה לפרויקט הזה." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "אין לך גישה למשימה זו" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "כבר יש לך טיימר פעיל. עצור את זה לפני שמתחילים חדש." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "לא ניתן היה להפעיל את הטיימר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "לֹא יְדוּעַ" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "לתבנית חייבת להיות פרויקט כדי להפעיל טיימר" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "לא ניתן להפעיל טיימר עבור פרויקט זה" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "אין טיימר פעיל לעצירה" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "אין פרויקט" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "אין טיימר פעיל לעצירה" +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "הטיימר נעצר" +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "לא ניתן ליצור לקוח. אנא נסה שוב." +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "יצירת PDF נכשל: %(err)s. גם החזרה נכשלה: %(fb)s" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "אין טיימר פעיל לעצירה" +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "אין לך הרשאה לשכפל חשבונית זו" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "לא ניתן היה לשכפל חשבונית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "לא ניתן ליצור לקוח. אנא נסה שוב." +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "לא ניתן היה לסיים חשבונית משוכפלת " +#~ "עקב שגיאת מסד נתונים. אנא בדוק את" +#~ " יומני השרת." -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "אין טיימר פעיל לעצירה" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "ערך סטטוס לא חוקי" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "אתה יכול לערוך רק את הטיימרים שלך" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "נבחרה משימה לא חוקית עבור הפרויקט שנבחר" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "שעת ההתחלה לא יכולה להיות בעתיד" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "פורמט תאריך/שעה התחלה לא חוקי" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "שעת הסיום חייבת להיות אחרי שעת ההתחלה" +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "פורמט תאריך/שעה סיום לא חוקי" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "הטיימר עודכן בהצלחה" +#~ msgid "Invoice marked as sent" +#~ msgstr "חשבונית מסומנת כנשלחה" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "Invoice marked as paid" +#~ msgstr "חשבונית מסומנת כשולמה" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "אתה יכול רק למחוק את הטיימרים שלך" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "לא ניתן למחוק טיימר פעיל" +#~ msgid "Client is required." +#~ msgstr "" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "לא ניתן למחוק טיימר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "Project must belong to the same client." +#~ msgstr "" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "פורמט תאריך/שעה לא חוקי" +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "כל השדות נדרשים" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "לא ניתן ליצור ערכי זמן עבור פרויקט בארכיון. אנא הסר את הפרויקט מהארכיון תחילה." +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "לא ניתן ליצור ערכי זמן עבור פרויקט לא פעיל" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "נבחרה משימה לא חוקית" +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "תאריך הסיום חייב להיות אחרי תאריך ההתחלה או שווה לו" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "טווח התאריכים לא יכול לעלות על 31 ימים" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "פורמט זמן לא חוקי" +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "לא נמצאו תאריכים חוקיים בטווח שנבחר" +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "לא ניתן ליצור ערכים בכמות גדולה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "Key and label are required" +#~ msgstr "יש צורך במפתח ותווית" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "אירעה שגיאה בעת יצירת ערכים בכמות גדולה. אנא נסה שוב." +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן ליצור עמודה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "אתה יכול רק לשכפל את הטיימרים שלך" +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את העמודה עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "אתה יכול לחדש רק את הטיימרים שלך" +#~ msgid "System columns cannot be deleted" +#~ msgstr "לא ניתן למחוק עמודות מערכת" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "הפרויקט כבר לא קיים" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק את העמודה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה להחליף את העמודה עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "לא ניתן היה לחדש את הטיימר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "Timer stopped successfully" +#~ msgstr "הטיימר נעצר בהצלחה" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "Lead created successfully" +#~ msgstr "הליד נוצר בהצלחה" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "נבחר אזור זמן לא חוקי" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "שגיאה ביצירת ליד: %(error)s" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "שעות סטנדרטיות ביום חייבות להיות בין 0.5 ל-24" +#~ msgid "Lead updated successfully" +#~ msgstr "הליד עודכן בהצלחה" -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "שעות סטנדרטיות ביום חייבות להיות בין 0.5 ל-24" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "שגיאה בעדכון הפניה: %(error)s" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "ההגדרות נשמרו בהצלחה" +#~ msgid "Lead has already been converted" +#~ msgstr "עופרת כבר הוסבה" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "שגיאה בשמירת ההגדרות: %(error)s" +#~ msgid "Lead converted to client successfully" +#~ msgstr "הליד הומר ללקוח בהצלחה" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "שגיאה בהמרת לידים: %(error)s" -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "תודה שבחרת ב-TimeTracker!" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "שגיאה בשמירת ההגדרות" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "הליד הומר לעסקה בהצלחה" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "העדפות עודכנו" +#~ msgid "Lead marked as lost" +#~ msgstr "עופרת מסומנת כאבדה" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "השפה עודכנה בהצלחה" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "שפה לא חוקית" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "השפה עודכנה ל-%(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "נדרש שם Webhook" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "נדרשת כתובת URL של Webhook" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "יש לבחור לפחות אירוע אחד" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook נוצר בהצלחה" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "שגיאה ביצירת webhook" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "שגיאה ביצירת webhook: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook עודכן בהצלחה" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "שגיאה בעדכון webhook: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook נמחק בהצלחה" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "שגיאה במחיקת webhook: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "אנא הזן שעות יעד חוקיות (יותר מ-0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "יעד כבר קיים לשבוע הזה. אנא ערוך את היעד הקיים במקום זאת." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "יעד זמן שבועי נוצר בהצלחה!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "לא הצליח ליצור מטרה. אנא נסה שוב." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "אין לך הרשאה לצפות ביעד זה" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "אין לך הרשאה לערוך יעד זה" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "יעד זמן שבועי עודכן בהצלחה!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "עדכון היעד נכשל. אנא נסה שוב." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "אין לך הרשאה למחוק יעד זה" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "יעד זמן שבועי נמחק בהצלחה" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "שגיאה בסימון ההובלה כאבדה: %(error)s" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "מחיקת היעד נכשלה. אנא נסה שוב." +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Mileage entry created successfully" +#~ msgstr "הזנת קילומטראז' נוצרה בהצלחה" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "עדכון סטטוס" +#~ msgid "Error creating mileage entry" +#~ msgstr "שגיאה ביצירת רישום קילומטראז'" -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "אין לך הרשאה להציג את ערך הקילומטראז' הזה" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "צור משימה" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "אין לך הרשאה לערוך את ערך הקילומטראז' הזה" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "לא ניתן לערוך ערכי קילומטראז' מאושרים או מוחזרים" -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "שלח אימייל" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "רישום הקילומטרז' עודכן בהצלחה" -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Error updating mileage entry" +#~ msgstr "שגיאה בעדכון רשומת הקילומטראז'" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "אין לך הרשאה למחוק את ערך הקילומטראז' הזה" -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "רשומת הקילומטראז' נמחקה בהצלחה" -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "Error deleting mileage entry" +#~ msgstr "שגיאה במחיקת ערך קילומטראז'" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "לא נבחרו רשומות קילומטראז' למחיקה" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "לא ניתן למחוק ערכי קילומטראז' עקב " +#~ "שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "בחר פרויקט" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "נמחק בהצלחה %(count)d קילומטראז' entr%(plural)s" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "רק מנהלי מערכת יכולים לדחות הזנת קילומטראז'" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "דילג על %(count)d קילומטראז' entr%(plural)s: %(errors)s" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "No mileage entries selected" +#~ msgstr "לא נבחרו ערכי קילומטראז'" -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "עדכונים חיים של WebSocket" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "לא ניתן היה לעדכן ערכי קילומטראז' עקב שגיאת מסד נתונים" -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "יש לציין שם ומחיר יחידה" +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "עודכן בהצלחה את %(count)d קילומטראז' entr%(plural)s ל-%(status)s" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "הלקוח נוצר" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "דילג על %(count)d קילומטראז' entr%(plural)s (ללא הרשאה)" -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "יש צורך במפתח ותווית" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "רק מנהלי מערכת יכולים לאשר הזנת קילומטראז'" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "ניתן לאשר רק רישומי קילומטראז' ממתינים" -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "בקש אישור" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "הזנת קילומטראז' אושרה בהצלחה" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "ציטוט נדחה" +#~ msgid "Error approving mileage entry" +#~ msgstr "שגיאה באישור הזנת קילומטראז'" -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "יש לציין שם ומחיר יחידה" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "רק מנהלי מערכת יכולים לדחות הזנת קילומטראז'" -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "תעריף לשעה" +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "ניתן לדחות רק רישומי קילומטראז' ממתינים" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "Mileage entry rejected" +#~ msgstr "הזנת קילומטראז' נדחתה" -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "שגיאה בדחיית הזנת קילומטראז'" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "נוֹתָר" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "הַצלָחָה" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "שְׁגִיאָה" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "אַזהָרָה" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "מֵידָע" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "טְעִינָה..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "חִסָכוֹן..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "מוחק..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "לְבַטֵל" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "לְאַשֵׁר" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "לִסְגוֹר" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "לְהַצִיל" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "לִמְחוֹק" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "לַעֲרוֹך" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "לְהוֹסִיף" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "לְהַסִיר" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "בְּסֵדֶר" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "האם אתה בטוח שברצונך למחוק את זה?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "יש לך שינויים שלא נשמרו. האם אתה בטוח שאתה רוצה לעזוב?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "הפעולה נכשלה" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "הפעולה הושלמה בהצלחה" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "לא נבחרו פריטים" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "קלט לא חוקי" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "שדה זה חובה" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "אין טיימר פעיל" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "הטיימר נעצר" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "עצירת הטיימר נכשלה" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "שגיאה בעצירת הטיימר" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "אין טופס לשמור" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "לא נמצא טיימר" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "הטיימר הופסק עקב חוסר פעילות" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "רק מנהלי מערכת יכולים לסמן כניסות קילומטראז' כמוחזרות" -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "דלג לתוכן" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "ניווט נייד" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "ניווט" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "לוח פקודות" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "הערות" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "החלף את סרגל הצד" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "לוּחַ מַחווָנִים" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "שָׁעוֹן עֶצֶר" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "כניסות זמן" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "דוחות" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "לוּחַ שָׁנָה" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "תצוגת לוח שנה" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "ניתן לסמן רק רישומי קילומטראז' מאושרים כמוחזרים" -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "מעקב אחר זמן" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "בקש אישור" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "רישום קילומטראז מסומן כמוחזר" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "שגיאה בסימון רישום קילומטראז' כמוחזר" -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "משימות" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "Quote title and client are required" +#~ msgstr "כותרת הצעת המחיר ולקוח נדרשים" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "מועצת קנבן" +#~ msgid "Selected client not found" +#~ msgstr "הלקוח שנבחר לא נמצא" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "יעדים שבועיים" +#~ msgid "Invalid total amount format" +#~ msgstr "פורמט סכום כולל לא חוקי" -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "Invalid estimated hours format" +#~ msgstr "פורמט שעות משוער לא חוקי" -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "תבניות הזנת זמן" +#~ msgid "Invalid date format for valid until" +#~ msgstr "פורמט תאריך לא חוקי עבור תקף עד" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן ליצור הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "לקוחות" +#~ msgid "Quote created successfully" +#~ msgstr "הציטוט נוצר בהצלחה" -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "Only draft quotes can be edited" +#~ msgstr "ניתן לערוך רק טיוטות ציטוטים" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את הצעת המחיר" +#~ " עקב שגיאת מסד נתונים. אנא בדוק " +#~ "את יומני השרת." -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "Quote updated successfully" +#~ msgstr "הצעת המחיר עודכנה בהצלחה" -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "ניתן לשלוח רק טיוטות הצעות מחיר" -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "ציטוטים" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "לא ניתן לשלוח הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "כספים והוצאות" +#~ msgid "Quote sent successfully" +#~ msgstr "הצעת המחיר נשלחה בהצלחה" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "This quote cannot be accepted" +#~ msgstr "לא ניתן לקבל ציטוט זה" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "לא ניתן לקבל ציטוט: %(error)s" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן לקבל הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "דוחות מתוזמנים" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "חשבוניות" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "הצעת המחיר התקבלה והפרויקט נוצר בהצלחה" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "This quote cannot be rejected" +#~ msgstr "לא ניתן לדחות ציטוט זה" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "חשבוניות חוזרות" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "תשלומים" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "הוצאות" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "מִספָּר הַמַיִלִים" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "פר דיים" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "התראות תקציב" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "מְלַאי" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "פריטי מלאי" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "מחסנים" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "ספקים" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "הזמנות רכש" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "רמות מלאי" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "תנועות מניות" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "העברות" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "התאמות" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "הזמנות" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "התראות מלאי נמוך" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "אנליטיקס" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "כלים ונתונים" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "ייבוא ​​/ ייצוא" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "מסננים שמורים" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "מנהל מערכת" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "לוח המחוונים לניהול" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "ניהול משתמשים" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "לא ניתן לדחות ציטוט: %(error)s" -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "תפקידים והרשאות" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "תבניות PDF" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "חשבונית PDF" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "ציטוט PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "הגדרות מערכת" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "הגדרות" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן לדחות הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "תצורת דואר אלקטרוני" +#~ msgid "Quote rejected" +#~ msgstr "ציטוט נדחה" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "תבניות דואר אלקטרוני" +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "ניתן למחוק רק טיוטות או ציטוטים שנדחו" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "הגדרות OIDC" +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק ציטוט עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Quote deleted successfully" +#~ msgstr "הציטוט נמחק בהצלחה" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "אסימוני API" +#~ msgid "Payment gateway created successfully." +#~ msgstr "" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "יומני ביקורת" +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Stripe API key not configured." +#~ msgstr "" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "קטגוריות הוצאות" +#~ msgid "Payment processed successfully." +#~ msgstr "" -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "תעריפים ליום" +#~ msgid "Invalid from date format" +#~ msgstr "פורמט לא חוקי מתאריך" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Invalid to date format" +#~ msgstr "פורמט לא חוקי עד תאריך" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "You do not have permission to view this payment" +#~ msgstr "אין לך הרשאה לצפות בתשלום זה" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "נדרשים חשבונית, סכום ותאריך תשלום" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "מידע מערכת" +#~ msgid "Selected invoice not found" +#~ msgstr "החשבונית שנבחרה לא נמצאה" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "גיבויים" +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "אין לך הרשאה להוסיף תשלומים לחשבונית זו" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "סכום התשלום חייב להיות גדול מאפס" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "אוֹדוֹת" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "עֶזרָה" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "אפשרויות ייצוא" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "תמיכה ב-TimeTracker" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "החלף את סרגל הצד" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "לְחַפֵּשׂ" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "נוֹשֵׂא" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "אפשרויות סינון" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "אוֹר" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "כֵּהֶה" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "מַעֲרֶכֶת" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "Invalid payment amount" +#~ msgstr "סכום תשלום לא חוקי" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "התחל טיימר" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "אֶל" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "הצג עזרה" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "שנה שפה" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "שָׂפָה" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "תפריט משתמש" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "תְמִיכָה" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "אוֹרֵחַ" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "הפרופיל שלי" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "ההגדרות שלי" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "רִשָׁיוֹן" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "Invalid payment date format" +#~ msgstr "פורמט תאריך תשלום לא חוקי" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "התנתק" +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "עמלת שער לא יכולה להיות שלילית" -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "נהנה מ-TimeTracker?" +#~ msgid "Invalid gateway fee amount" +#~ msgstr "סכום עמלת שער לא חוקי" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן ליצור תשלום עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "תמיכה ב-TimeTracker" +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "אין לך הרשאה לערוך תשלום זה" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את התשלום עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" +#~ msgid "Payment updated successfully" +#~ msgstr "התשלום עודכן בהצלחה" -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "אספקה" +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "אין לך הרשאה למחוק תשלום זה" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "לְפַטֵר" +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק תשלום עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "Payment deleted successfully" +#~ msgstr "התשלום נמחק בהצלחה" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "תאריך התחלה" +#~ msgid "No payments selected for deletion" +#~ msgstr "לא נבחרו תשלומים למחיקה" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "טען עוד" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק תשלומים עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "צפה במשימה" +#~ msgid "No payments selected" +#~ msgstr "לא נבחרו תשלומים" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "לא ניתן היה לעדכן תשלומים עקב שגיאת מסד נתונים" -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "פעולות מהירות" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "פעולות" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "זמן יומן" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "משימה חדשה" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "צפה בפרויקט" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "ערוך לקוח" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "הפעולה נכשלה" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "Start date must be before end date" +#~ msgstr "תאריך ההתחלה חייב להיות לפני תאריך הסיום" -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "החוזה הסתיים" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "לא נמצא תעריף ליום יום עבור מיקום זה. אנא הגדר תעריפים תחילה." -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "תצוגה מקדימה של לוגו" +#~ msgid "Per diem claim created successfully" +#~ msgstr "תביעת פיצויים נוצרה בהצלחה" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "Error creating per diem claim" +#~ msgstr "שגיאה ביצירת תביעת דמי יום" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "סוֹף" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "אין לך הרשאה לצפות בתביעת דמי יום זו" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "אין לך הרשאה לערוך תביעה זו לתשלום" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "לא ניתן לערוך תביעות ליום יומיים שאושרו או החזרו" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "תביעת דמי היומיום עודכנה בהצלחה" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Error updating per diem claim" +#~ msgstr "שגיאה בעדכון תביעת דמי היומיום" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "צור אסימון API" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "אסימון ה-API שלך" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "דוגמאות לשימוש" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "אתה בטוח שאתה רוצה" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "להשבית" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "לְהַפְעִיל" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "האסימון הזה?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "השבת את האסימון" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "הפעל אסימון" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "השבת" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "לְהַפְעִיל" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "האם אתה בטוח שברצונך למחוק את האסימון הזה? לא ניתן לבטל פעולה זו." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "מחק אסימון" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "צור גיבוי" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "שחזר גיבוי" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "גיבויים קיימים" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "מידע חשוב" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "אשר את המחיקה" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "נקה את המטמון" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "סטטוס ServiceWorker" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "נקה את כל המטמונים" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "פעולות ServiceWorker" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "רענון קשה ידני" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "אין לך הרשאה למחוק את תביעת דמי היומיום הזו" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "כל הזמן" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "תביעת פיצויים נמחקה בהצלחה" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "Error deleting per diem claim" +#~ msgstr "שגיאה במחיקת תביעת דמי יום" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "לא נבחרו תביעות ליום יומיים למחיקה" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "סך הפרויקטים" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "לא ניתן למחוק תביעות ליום יומיים " +#~ "עקב שגיאת מסד נתונים. אנא בדוק את" +#~ " יומני השרת." -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "פרויקטים פעילים" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "נמחקו בהצלחה %(count)d תביעות ליום יומיים" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "No per diem claims selected" +#~ msgstr "לא נבחרו תביעות פיצויים" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "לא ניתן היה לעדכן תביעות ליום יומיים עקב שגיאת מסד נתונים" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "עודכן בהצלחה %(count)d תביעות ליום יומיים ל-%(status)s" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "דילג על %(count)d תביעות ליום (ללא הרשאה)" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "רק מנהלי מערכת יכולים לאשר תביעות דמי יום" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "ניתן לאשר רק תביעות ליום יומיים תלויות ועומדות" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "תביעת פיצויים אושרה בהצלחה" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "Error approving per diem claim" +#~ msgstr "שגיאה באישור תביעת דמי היומיום" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "רק מנהלי מערכת יכולים לדחות תביעות דמי יום" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "מסד נתונים" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "ניתן לדחות רק תביעות דמי יום תלויות" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "Per diem claim rejected" +#~ msgstr "תביעת דמי היומיום נדחתה" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "שגיאה בדחיית תביעת דמי היומיום" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "Per diem rate created successfully" +#~ msgstr "התעריף ליום יום נוצר בהצלחה" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "משתמשי OIDC" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "משתמשים" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "מדורי ניהול" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "פעילות אחרונה" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "מֶשֶׁך" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "לא" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "תצורה ובדיקה של דואר אלקטרוני" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "הגדר ובדוק את משלוח הדוא\"ל" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "חזרה למנהל מערכת" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "הגדר את הגדרות הדוא\"ל כאן כדי לשמור אותן במסד הנתונים." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "הפעל תצורת דוא\"ל של מסד נתונים" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "שרת דואר" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "יציאת דואר" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "השתמש ב-TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "השתמש ב-SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "שם משתמש" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "סִיסמָה" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "השאר ריק כדי לשמור על עדכניות" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "שולח ברירת מחדל" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "אימייל של נמען" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "Error creating per diem rate" +#~ msgstr "שגיאה ביצירת תעריף יומיים" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "שמור תצורה" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "אִתחוּל" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "סטטוס תצורת דואר אלקטרוני" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "לְרַעֲנֵן" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "האימייל מוגדר!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "הגדרות הדוא\"ל שלך מוגדרות כראוי." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "האימייל אינו מוגדר" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "אנא הגדר את הגדרות הדוא\"ל באמצעות הטופס שלמעלה." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "שגיאות תצורה" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "אזהרות תצורה" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "הגדרות דוא\"ל נוכחיות" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "נָמָל" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "הגדרת סיסמה" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "שלח אימייל לבדיקה" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "כתובת דואר אלקטרוני של הנמען" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "מדריך תצורה" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "ספקי SMTP נפוצים" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "דורש סיסמת אפליקציה" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "הערות חשובות" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail דורש סיסמת אפליקציה אם 2FA מופעל" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "הפעל מחדש את האפליקציה לאחר שינוי הגדרות הדוא\"ל" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "בדוק את כללי חומת האש אם הודעות דוא\"ל לא נשלחות" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "להפקה, השתמש בשירות דוא\"ל ייעודי כמו SendGrid או Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "הסיסמה מוגדרת" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "לא הוגדרה סיסמה" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "שמירת התצורה נכשלה. אנא נסה שוב." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "הַצלָחָה!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "רענון הסטטוס נכשל. אנא נסה שוב." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "נא להזין כתובת אימייל חוקית" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "שְׁלִיחָה..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "שליחת האימייל לבדיקה נכשלה. אנא בדוק את התצורה שלך." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "התעריף ליום יומיים עודכן בהצלחה" -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "הגדר את OIDC באמצעות משתני סביבה אלה:" +#~ msgid "Error updating per diem rate" +#~ msgstr "שגיאה בעדכון התעריף ליום" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "שֵׁרוּת" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "לא ניתן למחוק שיעור: הוא נמצא " +#~ "בשימוש על ידי %(count)d תביעות ליום. " +#~ "השבת אותו במקום זאת." -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "התעריף ליום יום נמחק בהצלחה" -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "משתמשים" +#~ msgid "Error deleting per diem rate" +#~ msgstr "שגיאה במחיקת תעריף יומיים" -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "תביעת קבוצות" +#~ msgid "You do not have permission to access this page" +#~ msgstr "אין לך הרשאה לגשת לדף זה" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "Role name is required" +#~ msgstr "נדרש שם תפקיד" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "A role with this name already exists" +#~ msgstr "תפקיד בשם זה כבר קיים" -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "אָבֵד" +#~ msgid "Could not create role due to a database error" +#~ msgstr "לא ניתן ליצור תפקיד עקב שגיאת מסד נתונים" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "השתמש ב-SSL" +#~ msgid "Role created successfully" +#~ msgstr "התפקיד נוצר בהצלחה" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "הַתחָלָה" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "פסק זמן (שניות)" +#~ msgid "Could not update role due to a database error" +#~ msgstr "לא ניתן היה לעדכן את התפקיד עקב שגיאת מסד נתונים" -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "Role updated successfully" +#~ msgstr "התפקיד עודכן בהצלחה" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "אין לך הרשאה לבצע פעולה זו" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "לא ניתן למחוק את תפקידי המערכת" -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "לא ניתן למחוק תפקיד שהוקצה למשתמשים. נא להקצות מחדש משתמשים תחילה." -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "סִיסמָה" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "לא ניתן למחוק את התפקיד עקב שגיאת מסד נתונים" -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "הזן את הסיסמה שלך" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "התפקיד \"%(name)s\" נמחק בהצלחה" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "מבוסס על האחרון" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "לא ניתן היה לעדכן את תפקידי המשתמש עקב שגיאת מסד נתונים" -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "השתמש בתעריפים לפי שעה לפרויקט" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "זמן יומן" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "כתובת אימייל" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "שֵׁם פְּרַטִי" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "שֵׁם מִשׁפָּחָה" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "שיטת אימות" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "User roles updated successfully" +#~ msgstr "תפקידי המשתמש עודכנו בהצלחה" -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "פרויקטים מובילים" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "קבוצת ניהול" +#~ msgid "Template not found." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "שיטת אישור" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "פעיל בלבד" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "בדיקת תצורה" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "נדרשים שם הפרויקט ולקוח" -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "בדיקת תצורה" +#~ msgid "Invalid budget amount" +#~ msgstr "סכום תקציב לא חוקי" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "אחוז סף תקציב לא חוקי (0-100)" -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "בדיקת תצורה" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "הפניה למשתני סביבה" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "Project not found" +#~ msgstr "הפרויקט לא נמצא" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "קוֹדֵם" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "הַבָּא" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "סטטיסטיקות שימוש בתכונות" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "אין לך הרשאה לאחסן פרויקטים בארכיון" -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "קוד קופון אופציונלי" +#~ msgid "Project is already archived" +#~ msgstr "הפרויקט כבר שמור בארכיון" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "תשומת לב נדרשת" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "אין לך הרשאה להוציא פרויקטים מהארכיון" -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "נייד" +#~ msgid "Project is already active" +#~ msgstr "הפרויקט כבר פעיל" -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "אין לך הרשאה לבטל פרויקטים" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "סטָטוּס" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "פרטים" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "טען עוד" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "נִכשָׁל" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Project is already inactive" +#~ msgstr "הפרויקט כבר לא פעיל" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "אין לך הרשאה להפעיל פרויקטים" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "לא ניתן למחוק פרויקט עם ערכי זמן קיימים" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק את הפרויקט עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "אין לך הרשאה למחוק פרויקטים" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "No projects selected for deletion" +#~ msgstr "לא נבחרו פרויקטים למחיקה" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק פרויקטים עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "No projects were deleted" +#~ msgstr "אף פרויקט לא נמחק" -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "You do not have permission to change project status" +#~ msgstr "אין לך הרשאה לשנות את סטטוס הפרויקט" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "No projects selected" +#~ msgstr "לא נבחרו פרויקטים" -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את סטטוס הפרויקט" +#~ " עקב שגיאת מסד נתונים. אנא בדוק " +#~ "את יומני השרת." -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "No projects were updated" +#~ msgstr "לא עודכנו פרויקטים" -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Project is already in favorites" +#~ msgstr "הפרויקט כבר מועדף" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "כל הקטגוריות" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "ניהול פרויקטים" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "Project added to favorites" +#~ msgstr "הפרויקט נוסף למועדפים" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "Failed to add project to favorites" +#~ msgstr "הוספת הפרויקט למועדפים נכשלה" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Project is not in favorites" +#~ msgstr "הפרויקט אינו מועדף" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "מופעל" +#~ msgid "Project removed from favorites" +#~ msgstr "הפרויקט הוסר מהמועדפים" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "נָכֶה" +#~ msgid "Failed to remove project from favorites" +#~ msgstr "הסרת הפרויקט מהמועדפים נכשלה" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "נדרשים תיאור, קטגוריה, סכום ותאריך" -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "לא ניתן להוסיף עלות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "שמור שינויים" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "Cost added successfully" +#~ msgstr "העלות נוספה בהצלחה" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "פֶּתֶק" +#~ msgid "Cost not found" +#~ msgstr "עלות לא נמצאה" -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "אין לך הרשאה לערוך עלות זו" -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את העלות עקב " +#~ "שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "Cost updated successfully" +#~ msgstr "העלות עודכנה בהצלחה" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "אין לך הרשאה למחוק עלות זו" -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "לא ניתן למחוק עלות שחויבה" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק את העלות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "Name and unit price are required" +#~ msgstr "יש לציין שם ומחיר יחידה" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "Invalid quantity format" +#~ msgstr "פורמט כמות לא חוקי" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "לוח מחוונים לניפוי באגים של OIDC" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "בדוק תצורה, מטא נתונים של ספק ומשתמשי OIDC" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "Invalid unit price format" +#~ msgstr "פורמט מחיר יחידה לא חוקי" -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "בדיקת תצורה" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "תצורת OIDC" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "שיטת אישור" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "מנפיק" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "לא מוגדר" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "מזהה לקוח" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "סוד הלקוח" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "מַעֲרֶכֶת" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "לא מוגדר" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "כתובת URL להפניה מחדש" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "נוצר אוטומטית" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "היקפים" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "מיפוי תביעות" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "תביעת שם משתמש" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "תביעת דוא\"ל" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "תביעת שם מלא" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "תביעת קבוצות" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "קבוצת ניהול" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "הודעות דוא\"ל של מנהל מערכת" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI לאחר התנתקות" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "מטא נתונים של ספק" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "שגיאה בטעינת מטא נתונים:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "נקודת קצה גילוי:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "מטא נתונים של ספק נטען בהצלחה" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "נקודות קצה" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "הַרשָׁאָה" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "אֲסִימוֹן" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "מידע על משתמש" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "סיום סשן" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "תכונות נתמכות" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "סוגי תגובות" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "סוגי מענקים" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "שיטות אישור" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "תביעות" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "מטא נתונים של ספק לא נטענו. לחץ על \"בדוק תצורה\" כדי לאחזר." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "אֶלֶקטרוֹנִי" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "שם מלא" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "תַפְקִיד" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "כניסה אחרונה" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "נושא OIDC" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "לֹא פָּעִיל" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "לְעוֹלָם לֹא" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "עדיין לא התחברו משתמשים דרך OIDC." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "הפניה למשתני סביבה" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "הגדר את OIDC באמצעות משתני סביבה אלה:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "מִשְׁתַנֶה" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "תֵאוּר" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "דוּגמָה" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "שיטת אימות" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "כתובת אתר של ספק OIDC" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "מזהה לקוח מספק OIDC" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "סוד לקוח מספק OIDC" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "כתובת אתר להתקשרות חוזרת (אופציונלי, נוצר אוטומטית)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "היקפים מבוקשים" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "תביעה המכילה שם משתמש" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "תביעה המכילה אימייל" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "תביעה המכילה שם מלא" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "טענה המכילה קבוצות" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "שם קבוצה לתפקיד מנהל (אופציונלי)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "הודעות דוא\"ל לניהול מופרדות בפסיקים (אופציונלי)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "לא ניתן להוסיף טוב נוסף עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "Extra good added successfully" +#~ msgstr "טוב במיוחד נוסף בהצלחה" -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "Extra good not found" +#~ msgstr "טוב במיוחד לא נמצא" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "אין לך הרשאה לערוך את הטוב הנוסף הזה" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן טוב במיוחד עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "Extra good updated successfully" +#~ msgstr "טוב במיוחד עודכן בהצלחה" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "אין לך הרשאה למחוק את המוצר הנוסף הזה" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "לא ניתן למחוק מוצר נוסף שנוסף לחשבונית" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "לא ניתן היה למחוק טוב במיוחד עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "Project created successfully" +#~ msgstr "הפרויקט נוצר בהצלחה" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "שיטת אימות" +#~ msgid "Invalid discount amount format" +#~ msgstr "פורמט סכום הנחה לא חוקי" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "יש לאשר הצעת מחיר לפני שניתן לשלוח אותה" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "לא ניתן לשלוח הצעת מחיר: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "אין לך הרשאה להעלות קבצים מצורפים לציטוט הזה" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "אין לך הרשאה להוריד את הקובץ המצורף הזה" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "אין לך הרשאה לבקש אישור להצעת מחיר זו" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "This quote does not require approval" +#~ msgstr "הצעת מחיר זו אינה דורשת אישור" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "לא ניתן לבקש אישור: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "לא ניתן לבקש אישור עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Approval requested successfully" +#~ msgstr "האישור התבקש בהצלחה" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "This quote is not pending approval" +#~ msgstr "הצעת מחיר זו אינה ממתינה לאישור" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "לא ניתן לאשר הצעת מחיר: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן לאשר הצעת מחיר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Quote approved successfully" +#~ msgstr "הצעת המחיר אושרה בהצלחה" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "לא ניתן לדחות ציטוט: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "Quote approval rejected" +#~ msgstr "אישור הצעת המחיר נדחה" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן ליצור תבנית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Template created successfully" +#~ msgstr "התבנית נוצרה בהצלחה" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "אין לך הרשאה ליצור תבנית מתוך ציטוט זה" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן לשמור תבנית עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "התבנית נשמרה בהצלחה" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "אין לך הרשאה לייצא ציטוט זה" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "שגיאה ביצירת PDF: %(error)s" -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "Recipient email address is required" +#~ msgstr "נדרשת כתובת אימייל של הנמען" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "פרטי משתמש OIDC" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "פרופיל וזהות OIDC עבור משתמש זה" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "חזרה ל-OIDC Debug" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "פרופיל משתמש" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "פָּעִיל" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "שפה מועדפת" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "נוצר ב-" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "מידע OIDC" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "מנפיק OIDC" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "נושא OIDC (תת)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "מְקוֹמִי" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "משתמש זה נוצר או מקושר באמצעות OIDC. המנפיק והנושא משמשים לזיהוי ייחודי של המשתמש על פני הפעלות התחברות." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "למשתמש זה אין מידע OIDC. ייתכן שהם נוצרו באופן ידני או באמצעות רישום עצמי ללא OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "סטטיסטיקת פעילות" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "כניסות זמן" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "אַף לֹא אֶחָד" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "טיימר פעיל" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "משימות נוצרו" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "ערוך משתמש" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "הצג את כל המשתמשים" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "מעצב הצעות מחיר ב-PDF" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "מעצב ציטוטים חזותיים" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "גרור ושחרר אלמנטים כדי לעצב את פריסת הצעת המחיר שלך" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "כיצד להשתמש:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "לחץ על אלמנטים מהסרגל הצדדי השמאלי כדי להוסיף אותם לקנבס. לחץ על רכיבים כדי לבחור ולהתאים אותם בחלונית המאפיינים. השתמש בכלי היישור ובקיצורי המקלדת לעריכה מהירה יותר." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "קיצורי מקשים:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "הצעת המחיר נשלחה בהצלחה אל %(email)s" -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "טבלת פריטי ציטוט" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "שליחת הצעת המחיר נכשלה: %(error)s" -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "שגיאה בשליחת דוא\"ל: %(error)s" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "סה\"כ הוצאות" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "אין לך הרשאה לשכפל את הציטוט הזה" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לשכפל הצעת מחיר עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "חִסָכוֹן..." +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "לא ניתן היה לסיים את הצעת המחיר" +#~ " המשוכפלת עקב שגיאת מסד נתונים. אנא" +#~ " בדוק את יומני השרת." -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "ציטוט %(quote_number)s נוצר ככפול" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "Please select an action and at least one quote" +#~ msgstr "אנא בחר פעולה ולפחות הצעת מחיר אחת" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "Invalid quote IDs" +#~ msgstr "מזהי הצעת מחיר לא חוקיים" -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "מַעֲרֶכֶת" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "תיעוד" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "קנבס ברור" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "צור תצוגה מקדימה" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "שמור עיצוב" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "צפה בקוד" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "לא נמצאו ציטוטים או שאין לך הרשאה" -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "%(count)d ציטוטים משוכפלים" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "הצמד לרשת (10 פיקסלים)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "ארגז כלים" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "חיפוש אלמנטים ומשתנים..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "אלמנטים" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "משתנים" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "אלמנטים בסיסיים" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "טקסט מותאם אישית" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "טֶקסט" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "כּוֹתֶרֶת" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "קַו" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "מַלבֵּן" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "מַעְגָל" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "מידע על החברה" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "לוגו החברה" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "שם החברה" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "פרטי החברה" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "כְּתוֹבֶת" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "טֵלֵפוֹן" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "אֲתַר אִינטֶרנֶט" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "מזהה מס" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "פרטי חשבונית" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "מספר חשבונית" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "חשבונית" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "תאריך יעד" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "פרטי לקוח" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "שם הלקוח" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "כתובת הלקוח" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "טבלת פריטי ציטוט" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "סה\"כ הוצאות" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "סכום משנה" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "מַס" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "סכום כולל" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "תנאים" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "תשלום ופרויקט" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "תאריך תשלום" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "שיטת תשלום" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "מצב תשלום" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "סכום ששולם" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "שם הפרויקט" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "אימייל ללקוח" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "טלפון לקוח" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "קוד QR" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "ברקוד" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "מספר עמוד" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "תאריך נוכחי" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "סימן מים" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "מידע בנק" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "מַטְבֵּעַ" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "השכפול של %(count)d ציטוטים נכשל" -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "פריטי חשבונית" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "מספר חשבונית" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "סטטוס הצעת מחיר (טיוטה/נשלח/תשלום/איחור)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "תאריך הנפקה" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "תאריך יעד" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "סכום ביניים" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "שיעור מס (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "סכום מס" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "סכום כולל" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "קוד מטבע (EUR, USD וכו')" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "פריטי חשבונית" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "תנאים והגבלות" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "שדות לקוח" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "שם חברת הלקוח" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "כתובת אימייל של הלקוח" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "כתובת מלאה של הלקוח" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "איש קשר ללקוח" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "מספר טלפון של הלקוח" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "שדות תשלום" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "מצב תשלום" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "תאריך תשלום" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "אמצעי תשלום" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "מספר אסמכתא לתשלום" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "סכום ששולם" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "סכום יוצא דופן" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "הערות תשלום" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "שדות פרויקט" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "שם הפרויקט" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "קוד פרויקט" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "תיאור הפרויקט" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "הפניה לחיוב פרויקט" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "שדות חברה/הגדרות" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "שם החברה שלך" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "כתובת החברה שלך" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "האימייל של החברה שלך" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "הטלפון של החברה שלך" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "אתר החברה שלך" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "מספר תעודת זהות המס שלך" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "פרטי חשבון הבנק שלך" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "תנאי ברירת מחדל לחשבונית" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "הערות חשבונית ברירת מחדל" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "שדות תאריך/שעה" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "תאריך נוכחי" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "תאריך יצירת הצעת מחיר" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "ציטוט את תאריך העדכון האחרון" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "פריטי חשבונית" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "Error duplicating quotes" +#~ msgstr "שגיאה בשכפול ציטוטים" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "שירותים מבוססי זמן ועבודה לפי שעה" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "תיאור הפריט" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "כמות פריט" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "מחיר ליחידה של פריט" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "סכום כולל של פריט" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "סוף לולאה" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "סחורה נוספת" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "פרויקט סחורה נוספת" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "שם התפקיד" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "סכום כולל" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "עיצוב קנבס" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "גודל עמוד:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "לְהִתְמַקֵד" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "זום אאוט" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "מחק את נבחרות" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "נכסים" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "אַזהָרָה" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "רענן עמוד" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "אַזהָרָה" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "סימנו %(count)d ציטוטים כנשלחו" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "פורמט תאריך" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "לא ניתן לסמן %(count)d ציטוטים שנשלחו" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Error updating quotes" +#~ msgstr "שגיאה בעדכון ציטוטים" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "בחר אלמנט כדי לערוך את המאפיינים שלו" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "תצוגה מקדימה של PDF" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "נמחקו %(count)d ציטוטים" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "לא ניתן למחוק %(count)d ציטוטים (ייתכן בשימוש)" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Error deleting quotes" +#~ msgstr "שגיאה במחיקת ציטוטים" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "פעולה לא חוקית" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "נדרשים שם, פרויקט, לקוח, תדירות ותאריך ההפעלה הבא" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "Invalid next run date format" +#~ msgstr "פורמט תאריך ההפעלה הבא לא חוקי" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Invalid end date format" +#~ msgstr "פורמט תאריך סיום לא חוקי" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Selected project or client not found" +#~ msgstr "הפרויקט או הלקוח שנבחר לא נמצא" -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "לא ניתן ליצור חשבונית חוזרת עקב " +#~ "שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "אין לך הרשאה לצפות בחשבונית החוזרת הזו" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "אין לך הרשאה לערוך חשבונית חוזרת זו" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן חשבונית חוזרת " +#~ "עקב שגיאת מסד נתונים. אנא בדוק את" +#~ " יומני השרת." -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "קוד שנוצר" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "החשבונית החוזרת עודכנה בהצלחה" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "אין לך הרשאה למחוק חשבונית חוזרת זו" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "לא ניתן למחוק חשבונית חוזרת עקב " +#~ "שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "Start" +#~ msgstr "הַתחָלָה" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "End" +#~ msgstr "סוֹף" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "Task" +#~ msgstr "מְשִׁימָה" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "לנקות את כל הרכיבים?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "בָּרוּר" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Notes" +#~ msgstr "הערות" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "Billed" +#~ msgstr "ניתן לחיוב" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "Client" +#~ msgstr "לָקוּחַ" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "User" +#~ msgstr "מִשׁתַמֵשׁ" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "לאפס לברירות המחדל?" +#~ msgid "Yes" +#~ msgstr "כֵּן" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "אפס פריסת PDF" +#~ msgid "No" +#~ msgstr "לֹא" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "מעצב הצעות מחיר ב-PDF" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "לא ניתן למחוק מסנן עקב שגיאת מסד נתונים" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "מעצב ציטוטים חזותיים" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "גרור ושחרר אלמנטים כדי לעצב את פריסת הצעת המחיר שלך" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "טבלת פריטי ציטוט" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "טבלת פריטי ציטוט" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "ציטוט נתונים" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "מספר ציטוט" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "תאריך ציטוט" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "טבלת פריטי ציטוט" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "שדות ציטוט" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "מספר ציטוט" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "סטטוס הצעת מחיר (טיוטה/נשלח/תשלום/איחור)" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את ההגדרות עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "ציטוט הערות" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "ההתקנה הושלמה! תודה שעזרת לנו לשפר את TimeTracker." -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "סטטוס ציטוט" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "תאריך קבלת הצעת מחיר" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "תאריך יצירת הצעת מחיר" +#~ msgid "Project and task name are required" +#~ msgstr "פרויקט ושם משימה נדרשים" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "ציטוט את תאריך העדכון האחרון" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "לולאה של ציטוט פריטים" +#~ msgid "Selected project does not exist" +#~ msgstr "הפרויקט שנבחר אינו קיים" -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "עברו בלולאה בין פריטי חשבונית" +#~ msgid "Task not found" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "יישר שמאלה" +#~ msgid "You do not have access to this task" +#~ msgstr "אין לך גישה למשימה זו" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "מרכז אופקי" +#~ msgid "You can only edit tasks you created" +#~ msgstr "אתה יכול לערוך רק משימות שיצרת" -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "יישר ימינה" +#~ msgid "Task name is required" +#~ msgstr "נדרש שם משימה" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "יישר למעלה" +#~ msgid "Project is required" +#~ msgstr "נדרש פרויקט" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "מרכז אנכית" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את הסטטוס עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "יישר תחתית" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לעדכן את המשימה עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "You do not have permission to update this task" +#~ msgstr "אין לך הרשאה לעדכן משימה זו" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "You can only update tasks you created" +#~ msgstr "אתה יכול לעדכן רק משימות שיצרת" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "You can only assign tasks you created" +#~ msgstr "אתה יכול להקצות רק משימות שיצרת" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "Selected user does not exist" +#~ msgstr "המשתמש שנבחר אינו קיים" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "כתובת אימייל" +#~ msgid "Task unassigned" +#~ msgstr "המשימה בוטלה" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "You can only delete tasks you created" +#~ msgstr "אתה יכול למחוק רק משימות שיצרת" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "לא ניתן למחוק משימה עם ערכי זמן קיימים" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק את המשימה עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "לא נבחרו משימות למחיקה" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק משימות עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "לא נבחרו משימות" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "לא ניתן היה לעדכן משימות עקב שגיאת מסד נתונים" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "הזן תאריך יעד חדש (YYYY-MM-DD):" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "Due date is required" +#~ msgstr "נדרש תאריך הוצאה" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "פורמט תאריך לא חוקי" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "Database error" +#~ msgstr "תמיכה במסד נתונים" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "%(count)d ציטוטים משוכפלים" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "No tasks updated" +#~ msgstr "לא נמצאו משימות" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "עודכן בהצלחה %(count)d הוצאות ל-%(status)s" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "תבניות הזנת זמן" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "דילוג על %(count)d הוצאות (ללא הרשאה)" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "Invalid priority value" +#~ msgstr "ערך עדיפות לא חוקי" -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "No user selected for assignment" +#~ msgstr "לא נבחר משתמש להקצאה" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "נבחר משתמש לא חוקי" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "לא ניתן היה להקצות משימות עקב שגיאת מסד נתונים" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "No project selected" +#~ msgstr "לא נבחר פרויקט" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "נבחר פרויקט לא חוקי" -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "לא ניתן היה להעביר משימות עקב שגיאת מסד נתונים" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "רק מנהלי מערכת יכולים להציג את כל המשימות שאחריות" -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "מַפְתֵחַ" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "שלח אימייל" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "מַפְתֵחַ" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "קוד, שם, מייל" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "מיתוג חברה" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "ברירת מחדל של חשבונית" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "הגדרות גיבוי" +#~ msgid "Could not create template due to a database error" +#~ msgstr "לא ניתן ליצור תבנית עקב שגיאת מסד נתונים" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Could not update template due to a database error" +#~ msgstr "לא ניתן היה לעדכן את התבנית עקב שגיאת מסד נתונים" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "לא ניתן היה למחוק תבנית עקב שגיאת מסד נתונים" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "מופעל" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "אָבֵד" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "השתמש ב-SSL" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "השתמש ב-TLS" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "עַל" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "שֶׁל" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "תפריט משתמש" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "זמני טעינה מהירים יותר" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "תנאים והגבלות" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "ייצוא הגדרות" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "לא ניתן להפעיל טיימר עבור פרויקט " +#~ "ששמור בארכיון. אנא הסר את הפרויקט " +#~ "מהארכיון תחילה." -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "לא ניתן להפעיל טיימר עבור פרויקט לא פעיל" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "המשימה שנבחרה אינה חוקית עבור הפרויקט שנבחר" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "הַתאָמָה" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "לְהַעֲבִיר" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "מְכִירָה" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "הַשׂכָּרָה" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "לִרְכּוֹשׁ" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "You do not have access to this project" +#~ msgstr "אין לך גישה לפרויקט הזה." -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "You do not have access to this client" +#~ msgstr "אין לך גישה למשימה זו" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "זָמִין" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "ברירת מחדל של חשבונית" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "מַטְבֵּעַ" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "כבר יש לך טיימר פעיל. עצור את זה לפני שמתחילים חדש." -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "כתובת האתר של התמונה" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה להפעיל את הטיימר עקב" +#~ " שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "Unknown" +#~ msgstr "לֹא יְדוּעַ" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "קוד" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "צור אסימון API" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "לתבנית חייבת להיות פרויקט כדי להפעיל טיימר" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "השאר ריק כדי לשמור את הסיסמה הנוכחית" +#~ msgid "Cannot start timer for this project" +#~ msgstr "לא ניתן להפעיל טיימר עבור פרויקט זה" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "No active timer to stop" +#~ msgstr "אין טיימר פעיל לעצירה" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "No project" +#~ msgstr "אין פרויקט" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "פסק זמן (שניות)" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "סוג תוכן" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "תפקיד מערכת" +#~ msgid "No active timer to pause" +#~ msgstr "אין טיימר פעיל לעצירה" -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "תנאים והגבלות" +#~ msgid "Timer paused" +#~ msgstr "הטיימר נעצר" -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "פרטיות וניתוח" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "לא ניתן ליצור לקוח. אנא נסה שוב." -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "שמור הגדרות" +#~ msgid "No active timer to resume" +#~ msgstr "אין טיימר פעיל לעצירה" -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "העלה לוגו חדש" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "תצוגה מקדימה של לוגו" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "לא ניתן ליצור לקוח. אנא נסה שוב." -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "האם אתה בטוח שברצונך להסיר את לוגו החברה?" +#~ msgid "No active timer to adjust" +#~ msgstr "אין טיימר פעיל לעצירה" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "הסר לוגו" +#~ msgid "Invalid adjustment value" +#~ msgstr "ערך סטטוס לא חוקי" -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "You can only edit your own timers" +#~ msgstr "אתה יכול לערוך רק את הטיימרים שלך" -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "נבחרה משימה לא חוקית עבור הפרויקט שנבחר" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Start time cannot be in the future" +#~ msgstr "שעת ההתחלה לא יכולה להיות בעתיד" -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "בקש אישור" +#~ msgid "Invalid start date/time format" +#~ msgstr "פורמט תאריך/שעה התחלה לא חוקי" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "בדיקת תצורה" +#~ msgid "End time must be after start time" +#~ msgstr "שעת הסיום חייבת להיות אחרי שעת ההתחלה" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "הפעולה נכשלה" +#~ msgid "Invalid end date/time format" +#~ msgstr "פורמט תאריך/שעה סיום לא חוקי" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Timer updated successfully" +#~ msgstr "הטיימר עודכן בהצלחה" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "הפעולה נכשלה" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "לוח המחוונים של טלמטריה ואנליטיקה" +#~ msgid "You can only delete your own timers" +#~ msgstr "אתה יכול רק למחוק את הטיימרים שלך" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "מנהל → הגדרות" +#~ msgid "Cannot delete an active timer" +#~ msgstr "לא ניתן למחוק טיימר פעיל" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "לא ניתן למחוק טיימר עקב שגיאת מסד נתונים. אנא בדוק את יומני השרת." -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "השאר ריק כדי לשמור את הסיסמה הנוכחית" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "גישה לפורטל לקוחות" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "הוקצה ל" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "גישת מנהל" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "מעבר למערכת תפקידים חדשה" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "לְהַגֵר" +#~ msgid "Invalid date/time format" +#~ msgstr "פורמט תאריך/שעה לא חוקי" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "תפקידים" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "לא נמצאו משתמשים." +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "לא ניתן למחוק את המשתמש \"{name}\" כי יש לו {count} כניסות זמן. לא ניתן למחוק משתמשים עם ערכי זמן קיימים." +#~ msgid "All fields are required" +#~ msgstr "כל השדות נדרשים" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "לא ניתן למחוק משתמש" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "לא ניתן ליצור ערכי זמן עבור פרויקט" +#~ " בארכיון. אנא הסר את הפרויקט מהארכיון" +#~ " תחילה." -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "האם אתה בטוח שברצונך למחוק את המשתמש \"{name}\"? לא ניתן לבטל פעולה זו." +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "לא ניתן ליצור ערכי זמן עבור פרויקט לא פעיל" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "מחק משתמש" +#~ msgid "Invalid task selected" +#~ msgstr "נבחרה משימה לא חוקית" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "תאריך הסיום חייב להיות אחרי תאריך ההתחלה או שווה לו" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "טווח התאריכים לא יכול לעלות על 31 ימים" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Invalid time format" +#~ msgstr "פורמט זמן לא חוקי" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "לא נמצאו תאריכים חוקיים בטווח שנבחר" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "לא ניתן ליצור ערכים בכמות גדולה " +#~ "עקב שגיאת מסד נתונים. אנא בדוק את" +#~ " יומני השרת." -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "אירעה שגיאה בעת יצירת ערכים בכמות גדולה. אנא נסה שוב." -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "אתה יכול רק לשכפל את הטיימרים שלך" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "You can only resume your own timers" +#~ msgstr "אתה יכול לחדש רק את הטיימרים שלך" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "מַדבֵּקָה" +#~ msgid "Project no longer exists" +#~ msgstr "הפרויקט כבר לא קיים" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "לא ניתן היה לחדש את הטיימר עקב " +#~ "שגיאת מסד נתונים. אנא בדוק את " +#~ "יומני השרת." -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Invalid timezone selected" +#~ msgstr "נבחר אזור זמן לא חוקי" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "שעות סטנדרטיות ביום חייבות להיות בין 0.5 ל-24" -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "שעות סטנדרטיות ביום חייבות להיות בין 0.5 ל-24" -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "אופציונלי" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "Settings saved successfully" +#~ msgstr "ההגדרות נשמרו בהצלחה" -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "שגיאה בשמירת ההגדרות: %(error)s" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "תודה שבחרת ב-TimeTracker!" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "שגיאה בשמירת ההגדרות" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Preferences updated" +#~ msgstr "העדפות עודכנו" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "Language updated successfully" +#~ msgstr "השפה עודכנה בהצלחה" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "Invalid language" +#~ msgstr "שפה לא חוקית" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "השפה עודכנה ל-%(language)s" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "נדרש שם Webhook" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Webhook URL is required" +#~ msgstr "נדרשת כתובת URL של Webhook" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "יש לבחור לפחות אירוע אחד" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook נוצר בהצלחה" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Error creating webhook" +#~ msgstr "שגיאה ביצירת webhook" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "שגיאה ביצירת webhook: %(error)s" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "הגדר כתבנית ברירת מחדל" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "תבנית HTML" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "הודעה מותאמת אישית" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "משתנים נוספים" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "צור תבנית" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "משתנים זמינים" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "משתני חשבונית" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "משתנים אחרים" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "שלח אימייל לבדיקה" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook עודכן בהצלחה" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "אימייל של נמען" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "חשבונית" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "עדכון תבנית" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "שלח אימייל לבדיקה" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "לא נמצאו תבניות אימייל." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "צור את תבנית האימייל הראשונה שלך כדי להתאים אישית את הודעות הדוא\"ל של חשבוניות." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "צור תבנית אימייל" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "מחק תבנית אימייל" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "האם אתה בטוח שאתה רוצה למחוק" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "לא ניתן לבטל פעולה זו." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "שגיאה בעדכון webhook: %(error)s" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "מידע על תבנית" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook נמחק בהצלחה" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "שגיאה במחיקת webhook: %(error)s" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "אנא הזן שעות יעד חוקיות (יותר מ-0)" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "יעד כבר קיים לשבוע הזה. אנא ערוך את היעד הקיים במקום זאת." -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "יעד זמן שבועי נוצר בהצלחה!" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "לא הצליח ליצור מטרה. אנא נסה שוב." -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "אין לך הרשאה לצפות ביעד זה" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "אין לך הרשאה לערוך יעד זה" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "יעד זמן שבועי עודכן בהצלחה!" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "עדכון היעד נכשל. אנא נסה שוב." -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "אין לך הרשאה למחוק יעד זה" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "יעד זמן שבועי נמחק בהצלחה" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "מחיקת היעד נכשלה. אנא נסה שוב." -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Update Status" +#~ msgstr "עדכון סטטוס" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "Create Task" +#~ msgstr "צור משימה" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "Send Email" +#~ msgstr "שלח אימייל" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "Timesheet period rejected" +#~ msgstr "בחר פרויקט" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "Only admins can close periods" +#~ msgstr "רק מנהלי מערכת יכולים לדחות הזנת קילומטראז'" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "עדכונים חיים של WebSocket" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "יש לציין שם ומחיר יחידה" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "הלקוח נוצר" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "יש צורך במפתח ותווית" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Time-off request approved" +#~ msgstr "בקש אישור" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Time-off request rejected" +#~ msgstr "ציטוט נדחה" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "Name and date range are required" +#~ msgstr "יש לציין שם ומחיר יחידה" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "Holiday created" +#~ msgstr "תעריף לשעה" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "סמל" +#~ msgid "remaining" +#~ msgstr "נוֹתָר" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Success" +#~ msgstr "הַצלָחָה" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Error" +#~ msgstr "שְׁגִיאָה" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "Warning" +#~ msgstr "אַזהָרָה" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Information" +#~ msgstr "מֵידָע" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "שֵׁם" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "טְעִינָה..." -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Saving..." +#~ msgstr "חִסָכוֹן..." -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "מוחק..." -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Cancel" +#~ msgstr "לְבַטֵל" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "Confirm" +#~ msgstr "לְאַשֵׁר" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Close" +#~ msgstr "לִסְגוֹר" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Save" +#~ msgstr "לְהַצִיל" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Delete" +#~ msgstr "לִמְחוֹק" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "Edit" +#~ msgstr "לַעֲרוֹך" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "Add" +#~ msgstr "לְהוֹסִיף" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "הרשאות מערכת" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "כל ההרשאות הזמינות במערכת" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "חזרה לתפקידים" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "הרשאות" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "אין תיאור זמין" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "לגבי הרשאות" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "ההרשאות מגדירות אילו פעולות המשתמשים יכולים לבצע במערכת. הרשאות אלה מוקצות לתפקידים, ותפקידים מוקצים למשתמשים. זה מספק מערכת בקרת גישה גמישה ופרטנית." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "ערוך תפקיד" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "צור תפקיד חדש" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "שם התפקיד" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "שם ייחודי לתפקיד זה" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "תיאור אופציונלי של תפקיד זה" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "הרשאות" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "בחר את ההרשאות שתפקיד זה צריך להיות:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "החלף הכל" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Remove" +#~ msgstr "לְהַסִיר" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "OK" +#~ msgstr "בְּסֵדֶר" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "האם אתה בטוח שברצונך למחוק את זה?" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "עדכון תפקיד" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "צור תפקיד" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "נהל תפקידים והרשאותיהם" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "צפה בהרשאות" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "סך הכל תפקידים" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "תפקידי מערכת" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "תפקידים מותאמים אישית" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "משתמשים שהוקצו" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "סוּג" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "תפקיד ברירת מחדל" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "מִשׁתַמֵשׁ" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "אין משתמשים" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "מִנְהָג" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "נוֹף" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "הרשאות עבור" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "לא הוקצו הרשאות." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "לא נמצאו תפקידים." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "על תפקידים והרשאות" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "תפקידים הם אוספים של הרשאות שניתן להקצות למשתמשים. תפקידי מערכת מוגדרים מראש ולא ניתן למחוק או לשנות את שמם, אך ניתן ליצור תפקידים מותאמים אישית לצרכים הספציפיים שלך." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "האם אתה בטוח שברצונך למחוק את התפקיד" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "מחק תפקיד" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "אין תיאור" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "מידע על תפקידים" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "תפקיד מערכת" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "תפקיד מותאם אישית" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "סך ההרשאות" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "נוצר" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "משתמשים בעלי תפקיד זה" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "עדיין לא הוקצו משתמשים לתפקיד זה." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "לתפקיד זה לא הוקצו הרשאות." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "חזרה למשתמש" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "נהל תפקידים עבור" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "הקצה תפקידים" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "בחר את התפקידים שמשתמש זה צריך להיות. משתמשים יורשים את כל ההרשאות מהתפקידים שהוקצו להם." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "עדכון תפקידים" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "הרשאות אפקטיביות נוכחיות" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "אלו הן כל ההרשאות שיש למשתמש כרגע באמצעות תפקידיו:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "אין הרשאות (הקצאת תפקידים להענקת הרשאות)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "צור Webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "ערוך את Webhook" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "הגדר webhook לאינטגרציות" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "URL של Webhook" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "כתובת האתר שאליה יישלחו אירועי webhook" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "אירועים" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "בחר אילו אירועים צריכים להפעיל את ה-webhook הזה" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "שיטת HTTP" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "סוג תוכן" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "מקסימום מנסה שוב" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "נסה שוב עיכוב (שניות)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "פסק זמן (שניות)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "התחדש סוד" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "אזהרה: יצירת הסוד מחדש תבטל את תוקף הסוד הנוכחי" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "נהל שילובי webhook" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "כתובת אתר" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "סטָטִיסטִיקָה" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "סַך הַכֹּל" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "לא הוגדרו webhooks" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "צור את ה-Webhook הראשון שלך" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "פרטי Webhook" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "מִבְחָן" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "סוֹד" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(קטוע)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "סך כל משלוחים" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "מוּצלָח" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "משלוח אחרון" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "משלוחים אחרונים" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "מִקרֶה" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "לְנַסוֹת" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "תְגוּבָה" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "זְמַן" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "מנסה שוב" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "עדיין אין משלוחים" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "לשלוח אירוע בדיקת webhook?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "בדיקת webhook נשלחה בהצלחה!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "שְׁגִיאָה:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "שגיאה לא ידועה" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "שגיאה בשליחת בדיקת webhook:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "לוח המחוונים של Analytics" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "7 ימים אחרונים" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "30 הימים האחרונים" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "90 הימים האחרונים" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "אֶשׁתָקַד" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "ייצא כ-JSON" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "ייצא CSV" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "מדדי מפתח ותובנות לגבי מעקב אחר הזמן שלך" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "שעות יומיות ממוצעות" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "לַחֲזוֹר" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "זְמַן" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "מגמת שעות יומיות" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "ניתן לחיוב לעומת לא ניתן לחיוב" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "מגמות שבועיות" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "שעות לפני" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "יש לך שינויים שלא נשמרו. האם אתה בטוח שאתה רוצה לעזוב?" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "תשלומים לאורך זמן" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "שעות לפי שעה ביום" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "יעילות פרויקט" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "ביצועי משתמש" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "טעינת התרשימים נכשלה. אנא נסה שוב." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "רענון התרשימים נכשל. אנא נסה שוב." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "שעה ביום" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "הַכנָסָה" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "אִתחוּל" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "הפעולה נכשלה" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "יְצוּא" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "מדדי מפתח ותובנות ניתנות לפעולה" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "לעומת תקופה קודמת" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "בסך הכל" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "הכנסה פוטנציאלית" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "שיעור ממוצע:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "מְגַמָה" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "פרויקטים פעילים" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "תובנות והמלצות" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "מִצטַבֵּר" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "הפצה לחיוב" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "סקירת מצב המשימה" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "משימות הושלמו" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "בתהליך" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "לעשות" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "הכנסה לפי פרויקט" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "תשלומים לאורך זמן" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "דרכי תשלום" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "הכנסה מול תשלומים" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "שיעור איסוף" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "שיעור סיום הפרויקט" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "ניתן לחיוב" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "לא ניתן לחיוב" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "הושלם" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "בּוּטלָה" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "שיעור השלמה (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "סקירה כללית של תובנות לנייד" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "ממוצע יומי" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "שעות יומיות" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "פרויקטים מובילים" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "הפעולה הושלמה בהצלחה" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "No items selected" +#~ msgstr "לא נבחרו פריטים" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Invalid input" +#~ msgstr "קלט לא חוקי" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "כניסת זמן" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "This field is required" +#~ msgstr "שדה זה חובה" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "שעות" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "No active timer" +#~ msgstr "אין טיימר פעיל" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "לְאַשֵׁר" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "לִדחוֹת" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "הטיימר נעצר" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "עצירת הטיימר נכשלה" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "Error stopping timer" +#~ msgstr "שגיאה בעצירת הטיימר" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "No form to save" +#~ msgstr "אין טופס לשמור" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "No timer found" +#~ msgstr "לא נמצא טיימר" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "הטיימר הופסק עקב חוסר פעילות" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "דלג לתוכן" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "ניווט נייד" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "ניווט" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "לוח פקודות" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Commands" +#~ msgstr "הערות" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "החלף את סרגל הצד" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "אושר על ידי" +#~ msgid "Dashboard" +#~ msgstr "לוּחַ מַחווָנִים" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Timer" +#~ msgstr "שָׁעוֹן עֶצֶר" -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "פרסם תגובה" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "פרסם תגובה" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "סיבת הדחייה" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "עקוב אחר מי שינה מה ומתי" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "מסננים" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "סוג ישות" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "כל הסוגים" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "מזהה ישות" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "כל המשתמשים" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "פְּעוּלָה" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "כל הפעולות" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "מְעוּדכָּן" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "נמחק" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "טווח זמן" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "לְסַנֵן" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "חותמת זמן" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "יֵשׁוּת" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "שָׂדֶה" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "לְשַׁנוֹת" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "לְנַמֵק" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "שנה מידע" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "Time entries" +#~ msgstr "כניסות זמן" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "Reports" +#~ msgstr "דוחות" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Calendar" +#~ msgstr "לוּחַ שָׁנָה" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "תצוגת לוח שנה" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "מעקב אחר זמן" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "בקש אישור" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "בקש מידע" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "משימות" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "מועצת קנבן" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "יעדים שבועיים" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "בִּטָחוֹן" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "תבניות הזנת זמן" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (אימות ארגוני)" +#~ msgid "CRM" +#~ msgstr "CRM" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "Clients" +#~ msgstr "לקוחות" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "סיסמת פורטל" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "הגדר את הסיסמה שלך" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "Quotes" +#~ msgstr "ציטוטים" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "ללא שמות משתמש או מיילים" +#~ msgid "Finance & Expenses" +#~ msgstr "כספים והוצאות" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "שלח אימייל לבדיקה" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "חזרה למנהל מערכת" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "כְּנִיסָה לַמַעֲרֶכֶת" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "זמן מעקב. הישאר מאורגן." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "היכנס לחשבון שלך" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "פרטי פריט" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "הגדר את הסיסמה שלך" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "שיטת אימות" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "היכנס" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "טיפ: הזן שם משתמש חדש כדי ליצור את החשבון שלך." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "או להמשיך עם" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "כניסה יחידה" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "ערוך פרופיל" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "חבר מאז" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "הגדר סיסמה" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "הגדר סיסמה" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "הגדר סיסמה עבור חשבון פורטל הלקוחות שלך" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "הגדר סיסמה" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "אשר את הסיסמה" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "הגדר את הסיסמה שלך" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "הגדר סיסמה" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "שיטת אימות" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "קוד" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "דוחות מתוזמנים" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Invoices" +#~ msgstr "חשבוניות" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "הגישה לפורטל לקוחות אינה מופעלת עבור חשבונך." +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "נָכֶה" +#~ msgid "Recurring Invoices" +#~ msgstr "חשבוניות חוזרות" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "Payments" +#~ msgstr "תשלומים" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "Expenses" +#~ msgstr "הוצאות" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "Mileage" +#~ msgstr "מִספָּר הַמַיִלִים" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "פר דיים" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "התראות תקציב" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "Inventory" +#~ msgstr "מְלַאי" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "קוד שנוצר" +#~ msgid "Stock Items" +#~ msgstr "פריטי מלאי" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "מופעל" +#~ msgid "Warehouses" +#~ msgstr "מחסנים" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "ספקים" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "הזמנות רכש" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "רמות מלאי" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "התראות ותחזית תקציב" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "מעקב אחר תקציבי הפרויקט ותחזית סיום" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "התראות לא מאושרות" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "התראות קריטיות" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "פרויקטים עם תקציבים" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "התראות אזהרה" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "התראות פעילות" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "לְהוֹדוֹת" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "מצב תקציב הפרויקט" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "תַקצִיב" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "מְאוּכָּל" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "נוֹתָר" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "הִתקַדְמוּת" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "מֵעַל" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "מעל תקציב" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "קרִיטִי" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "בָּרִיא" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "לא נמצאו פרויקטים עם תקציבים" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "התראה אושרה בהצלחה" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "לא ניתן לאשר את ההתראה" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "ניתוח ותחזית תקציבית" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "חזרה ללוח המחוונים" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "צפה בפרויקט" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "תקציב כולל" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "ניתוח קצב צריבה" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "קצב צריבה יומי" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "קצב צריבה שבועי" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "קצב צריבה חודשי" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "סה\"כ תקופה" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "מבוסס על האחרון" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "ימים" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "אין נתוני קצב צריבה זמינים" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "הערכת השלמה" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "תאריך סיום משוער" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "ימים שנותרו" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "רמת ביטחון עצמי" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "אין אומדן סיום זמין" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "ניתוח מגמת עלויות" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "מְמוּצָע" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "הקצאת משאבים" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "עלות כוללת" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "תעריף לשעה" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "חבר צוות" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "עֲלוּת" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "שעות %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "% עלות" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "ערכים" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "תאריך ושעה" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "מִקוּם" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "תִזכּוֹרֶת" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "דקות לפני" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "שעות לפני" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "ימים לפני" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "מַחזוֹרִי" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "עַד" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "עודכן לאחרונה" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "חזרה ליומן" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "מחק את האירוע" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "האם אתה בטוח שברצונך למחוק את האירוע הזה? לא ניתן לבטל פעולה זו." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "ערוך אירוע" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "אירוע חדש" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "כּוֹתֶרֶת" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "תאריך התחלה" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "זמן התחלה" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "תאריך סיום" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "שעת סיום" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "אירוע כל היום" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "סוג אירוע" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "פְּגִישָׁה" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "פְּגִישָׁה" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "מוֹעֵד אַחֲרוֹן" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- אין --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "אין תזכורת" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 דקות לפני" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 דקות לפני" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 דקות לפני" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "שעה אחת לפני" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "יום אחד לפני" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "צֶבַע" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "בחר צבע לאירוע זה" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "אירוע פרטי" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "אירועים פרטיים גלויים רק לך" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "אירוע חוזר" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "זהו אירוע שחוזר על עצמו" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "דפוס הישנות" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "השתמש בפורמט RRULE (לדוגמה, FREQ=WEEKLY;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "תאריך סיום חזרה" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "עדכן את האירוע" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "צור אירוע" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "תנועות מניות" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "העברות" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "התאמות" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "Reservations" +#~ msgstr "הזמנות" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "התראות מלאי נמוך" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "Analytics" +#~ msgstr "אנליטיקס" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "כלים ונתונים" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "ייבוא ​​/ ייצוא" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "מסננים שמורים" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "Admin" +#~ msgstr "מנהל מערכת" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "לוח המחוונים לניהול" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "User Management" +#~ msgstr "ניהול משתמשים" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "הצג ונהל את האירועים, המשימות וערכי הזמן שלך" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "יְוֹם" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "שָׁבוּעַ" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "חוֹדֶשׁ" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "הַיוֹם" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "תפקידים והרשאות" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "טוען לוח שנה..." +#~ msgid "PDF Templates" +#~ msgstr "תבניות PDF" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "פרטי האירוע" +#~ msgid "Invoice PDF" +#~ msgstr "חשבונית PDF" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "ציטוט PDF" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "System Settings" +#~ msgstr "הגדרות מערכת" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "Settings" +#~ msgstr "הגדרות" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "תצורת דואר אלקטרוני" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "תבניות דואר אלקטרוני" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "OIDC Settings" +#~ msgstr "הגדרות OIDC" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "אסימוני API" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "יומני ביקורת" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "Expense Categories" +#~ msgstr "קטגוריות הוצאות" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "תעריפים ליום" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "System Info" +#~ msgstr "מידע מערכת" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "Backups" +#~ msgstr "גיבויים" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "About" +#~ msgstr "אוֹדוֹת" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "Help" +#~ msgstr "עֶזרָה" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Open support options" +#~ msgstr "אפשרויות ייצוא" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "ערוך הערת לקוח" +#~ msgid "Support TimeTracker" +#~ msgstr "תמיכה ב-TimeTracker" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "חזרה ללקוח" +#~ msgid "Open sidebar" +#~ msgstr "החלף את סרגל הצד" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "לָקוּחַ:" +#~ msgid "Search" +#~ msgstr "לְחַפֵּשׂ" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "נוצר ב" +#~ msgid "Theme" +#~ msgstr "נוֹשֵׂא" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "נערך לאחרונה בתאריך" +#~ msgid "Theme options" +#~ msgstr "אפשרויות סינון" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "הערה תוכן" +#~ msgid "Light" +#~ msgstr "אוֹר" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "הערה פנימית גלויה רק ​​לצוות שלך." +#~ msgid "Dark" +#~ msgstr "כֵּהֶה" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "סמן כחשוב" +#~ msgid "System" +#~ msgstr "מַעֲרֶכֶת" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "פורטל לקוחות" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "Start Timer" +#~ msgstr "התחל טיימר" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "הצג פרטים" +#~ msgid "Stop" +#~ msgstr "אֶל" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "AI Helper" +#~ msgstr "הצג עזרה" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "Change language" +#~ msgstr "שנה שפה" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "Language" +#~ msgstr "שָׂפָה" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "תָלוּי וְעוֹמֵד" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "מְאוּשָׁר" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "נִדחֶה" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "כֹּל" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "User menu" +#~ msgstr "תפריט משתמש" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "Supporter" +#~ msgstr "תְמִיכָה" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "הצג פרטים" +#~ msgid "Guest" +#~ msgstr "אוֹרֵחַ" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "My Profile" +#~ msgstr "הפרופיל שלי" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "My Settings" +#~ msgstr "ההגדרות שלי" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "License" +#~ msgstr "רִשָׁיוֹן" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "Logout" +#~ msgstr "התנתק" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "נהנה מ-TimeTracker?" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "Support / Get key" +#~ msgstr "תמיכה ב-TimeTracker" -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "סטטוס אישור" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "התבקש אישור" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "לא עודכנו פרויקטים" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "ברוך הבא, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "התאמה אישית של קיצורי דרך" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "סטָטִיסטִיקָה" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "מדורי ניהול" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "חשבוניות אחרונות" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "ערכים אחרונים בזמן" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "בחר לקוח..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "עצירת הטיימר נכשלה" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "PayPal" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Support / License" +#~ msgstr "אספקה" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "לְפַטֵר" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "Software update" +#~ msgstr "תאריך התחלה" -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Read more" +#~ msgstr "טען עוד" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "עבור אל לוח המחוונים" +#~ msgid "View Release" +#~ msgstr "צפה במשימה" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "לַחֲזוֹר" +#~ msgid "Quick actions dock" +#~ msgstr "פעולות מהירות" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "Actions" +#~ msgstr "פעולות" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "פרטי חשבונית" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "תאריך הנפקה" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "איחור של %(days)d ימים בחשבונית זו." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "פריטי חשבונית" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "כַּמוּת" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "מחיר ליחידה" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "Log Time" +#~ msgstr "זמן יומן" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "חזרה לחשבוניות" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "חשבוניות עבור %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "ללא תשלום" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "באיחור" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "סְכוּם" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "ימים באיחור" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "New Task" +#~ msgstr "משימה חדשה" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "New Project" +#~ msgstr "צפה בפרויקט" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "New Client" +#~ msgstr "ערוך לקוח" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "הפעולה נכשלה" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Context included" +#~ msgstr "החוזה הסתיים" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "תצוגה מקדימה של לוגו" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Send" +#~ msgstr "סוֹף" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "עֲדִיפוּת" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "הוקצה ל" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Create API Token" +#~ msgstr "צור אסימון API" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "לִפְתוֹחַ" +#~ msgid "Your API Token" +#~ msgstr "אסימון ה-API שלך" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Usage Examples" +#~ msgstr "דוגמאות לשימוש" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "Are you sure you want to" +#~ msgstr "אתה בטוח שאתה רוצה" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "deactivate" +#~ msgstr "להשבית" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "כניסה לפורטל לקוחות" +#~ msgid "activate" +#~ msgstr "לְהַפְעִיל" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "הצג את הפרויקטים והחשבוניות שלך" +#~ msgid "this token?" +#~ msgstr "האסימון הזה?" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "היכנס לפורטל לקוחות" +#~ msgid "Deactivate Token" +#~ msgstr "השבת את האסימון" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "הזן את אישורי הפורטל שלך כדי לגשת לפרויקטים ולחשבוניות שלך" +#~ msgid "Activate Token" +#~ msgstr "הפעל אסימון" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "portal_username" +#~ msgid "Deactivate" +#~ msgstr "השבת" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "הזן את הסיסמה שלך" +#~ msgid "Activate" +#~ msgstr "לְהַפְעִיל" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "האם אתה בטוח שברצונך למחוק את האסימון הזה? לא ניתן לבטל פעולה זו." -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "מחק אסימון" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "צור גיבוי" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "שחזר גיבוי" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "נָמוּך" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "בֵּינוֹנִי" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "גָבוֹהַ" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "דָחוּף" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "גיבויים קיימים" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "Important Information" +#~ msgstr "מידע חשוב" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "אשר את המחיקה" -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Clear Cache" +#~ msgstr "נקה את המטמון" -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "סטטוס ServiceWorker" -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "נקה את כל המטמונים" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "פעולות ServiceWorker" -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "רענון קשה ידני" -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "All time" +#~ msgstr "כל הזמן" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Total Projects" +#~ msgstr "סך הפרויקטים" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "הערות" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "הוסף תגובה" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "ההערה שלך" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Active Projects" +#~ msgstr "פרויקטים פעילים" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "פרסם תגובה" +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "חזרה לפרויקטים" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "פרויקטים עבור %(client_name)s" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "פרטי ציטוט" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "תקף עד" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "פג תוקף הציטוט הזה." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "ציטוט פריטים" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "מק\"ט" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "תנאים והגבלות" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "קבל ציטוט" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "דחה ציטוט" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "חזרה לציטוטים" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "Database" +#~ msgstr "מסד נתונים" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "ציטוטים עבור %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "פג תוקף" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "לא נמצאו ציטוטים." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "קוד פרויקט" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "מעל תקציב" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "OIDC Users" +#~ msgstr "משתמשי OIDC" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "תַקצִיר" +#~ msgid "users" +#~ msgstr "משתמשים" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "סכום כולל" +#~ msgid "Admin Sections" +#~ msgstr "מדורי ניהול" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "לא נבחרו משימות" +#~ msgid "Recent Activity" +#~ msgstr "פעילות אחרונה" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "אין פעילות ב-30 הימים האחרונים." +#~ msgid "Duration" +#~ msgstr "מֶשֶׁך" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "N/A" +#~ msgstr "לא" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "תצורה ובדיקה של דואר אלקטרוני" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "הגדר סיסמה" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "הגדר את הסיסמה שלך כדי להתחיל" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "הגדר את הסיסמה שלך" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "הגדר סיסמה עבור חשבון פורטל הלקוחות שלך" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "אשר את הסיסמה" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "אשר את הסיסמה שלך" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "ערכי זמן עבור %(client_name)s פרויקטים" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "כל הפרויקטים" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "מתאריך" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "עד היום" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "סך כל הכניסות" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "סה\"כ שעות" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "הגדר ובדוק את משלוח הדוא\"ל" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "חזרה למנהל מערכת" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "הגדר את הגדרות הדוא\"ל כאן כדי לשמור אותן במסד הנתונים." -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "חשבוניות אחרונות" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "הפעל תצורת דוא\"ל של מסד נתונים" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "הצג הכל" +#~ msgid "Mail Server" +#~ msgstr "שרת דואר" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "יציאת דואר" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "Use TLS" +#~ msgstr "השתמש ב-TLS" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "Use SSL" +#~ msgstr "השתמש ב-SSL" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Username" +#~ msgstr "שם משתמש" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "Password" +#~ msgstr "סִיסמָה" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "Leave empty to keep current" +#~ msgstr "השאר ריק כדי לשמור על עדכניות" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "שולח ברירת מחדל" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "אימייל של נמען" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "סך החשבוניות" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "שמור תצורה" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "ערכים אחרונים בזמן" +#~ msgid "Reset" +#~ msgstr "אִתחוּל" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "סטטוס תצורת דואר אלקטרוני" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "ייצוא ל-CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "צור לקוח" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "בחזרה ללקוחות" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "הוסף לקוח חדש לניהול פרויקטים וחיובים קשורים." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "הזן את שם הלקוח" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "תעריף שעתי ברירת מחדל" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "לְמָשָׁל 75.00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "שיעור זה יתמלא אוטומטית בעת יצירת פרויקטים עבור לקוח זה" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "תומך ב-Markdown" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "תיאור קצר של הלקוח או היקף הפרויקט" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "איש קשר" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "שם איש קשר ראשי" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@client.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "שעות תשלום חודשיות מראש" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "לְמָשָׁל 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "השאר ריק אם ללקוח זה אין הקצאה בתשלום מראש." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "יום איפוס בתשלום מראש" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "היום בחודש בו אופסו השעות בתשלום מראש (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "כתובת הלקוח" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "Refresh" +#~ msgstr "לְרַעֲנֵן" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "האימייל מוגדר!" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "בחר שם ברור ותיאורי עבור ארגון הלקוח." +#~ msgid "Your email settings are properly set up." +#~ msgstr "הגדרות הדוא\"ל שלך מוגדרות כראוי." -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "הגדר את התעריף השעתי הסטנדרטי עבור לקוח זה. זה יאוכלס אוטומטית בעת יצירת פרויקטים חדשים." +#~ msgid "Email is not configured" +#~ msgstr "האימייל אינו מוגדר" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "מידע ליצירת קשר" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "אנא הגדר את הגדרות הדוא\"ל באמצעות הטופס שלמעלה." -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "הוסף פרטים ליצירת קשר לתקשורת קלה ושמירה על תיעוד." +#~ msgid "Configuration Errors" +#~ msgstr "שגיאות תצורה" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "שעות בתשלום מראש" +#~ msgid "Configuration Warnings" +#~ msgstr "אזהרות תצורה" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "קבע את התצורה של שעות כלולות חודשיות ואת יום האיפוס אם ללקוח זה יש חבילה או חבילה בתשלום מראש." +#~ msgid "Current Email Settings" +#~ msgstr "הגדרות דוא\"ל נוכחיות" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "ספק הקשר לגבי הקשר עם הלקוח או סוגי פרויקטים טיפוסיים." +#~ msgid "Port" +#~ msgstr "נָמָל" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "ערוך לקוח" +#~ msgid "Password Set" +#~ msgstr "הגדרת סיסמה" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "אפשר גישה לפורטל עבור לקוח זה. לקוחות יכולים להתחבר עם אישורים משלהם כדי להציג פרויקטים, חשבוניות ורישומי זמן." +#~ msgid "Send Test Email" +#~ msgstr "שלח אימייל לבדיקה" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "הפעל את פורטל הלקוחות" +#~ msgid "Recipient Email Address" +#~ msgstr "כתובת דואר אלקטרוני של הנמען" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "Configuration Guide" +#~ msgstr "מדריך תצורה" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Common SMTP Providers" +#~ msgstr "ספקי SMTP נפוצים" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "שם משתמש בפורטל" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "שם משתמש ייחודי לכניסה לפורטל" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "סיסמת פורטל" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "השאר ריק כדי לשמור את הסיסמה הנוכחית" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "הגדר סיסמה חדשה או השאר ריק כדי לשמור על עדכניות" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "שם משתמש נוכחי של הפורטל" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "עדכן לקוח" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "שלח אימייל להגדרת סיסמה" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "שלח אימייל אל %(email)s עם קישור להגדרת סיסמת הפורטל שלהם." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "כתובת דוא\"ל נדרשת כדי לשלוח דוא\"ל להגדרת סיסמה. נא להגדיר את כתובת הדוא\"ל של הלקוח למעלה." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "סטטיסטיקת לקוחות" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "הערכה עלות כוללת" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "סינון לקוחות" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "החלף מסננים" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "הסתר מסננים" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "הצג מסננים" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "Requires app password" +#~ msgstr "דורש סיסמת אפליקציה" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "לא נמצאו ערכי זמן ללא חיוב עבור פרויקט זה." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "כניסות זמן ללא חיוב" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "פריטי חשבונית" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "לסמן את הלקוח כלא פעיל?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "שנה סטטוס לקוח" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "סמן לא פעיל" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "להפעיל את הלקוח?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "הפעל את הלקוח" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "מחק לקוח" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "פרויקטים טוטאליים ופעילים" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "לְנַהֵל" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "יְסוֹדִי" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "אנשי קשר נוספים" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "עדיין אין אנשי קשר" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "הוסף איש קשר" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "פרטי קשר מדור קודם" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "התוכנית כוללת %(hours)s שעות לכל מחזור. מאפס ביום %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "תחילת מחזור נוכחי" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "שעות שנותרו" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "ח" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "צרכו את המחזור הזה" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Important Notes" +#~ msgstr "הערות חשובות" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail דורש סיסמת אפליקציה אם 2FA מופעל" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "הפעל מחדש את האפליקציה לאחר שינוי הגדרות הדוא\"ל" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "בדוק את כללי חומת האש אם הודעות דוא\"ל לא נשלחות" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "להפקה, השתמש בשירות דוא\"ל ייעודי כמו SendGrid או Amazon SES" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "password is set" +#~ msgstr "הסיסמה מוגדרת" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "לקוח גלוי" +#~ msgid "no password set" +#~ msgstr "לא הוגדרה סיסמה" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "שמירת התצורה נכשלה. אנא נסה שוב." -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Success!" +#~ msgstr "הַצלָחָה!" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "רענון הסטטוס נכשל. אנא נסה שוב." -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "בארכיון" +#~ msgid "Please enter a valid email address" +#~ msgstr "נא להזין כתובת אימייל חוקית" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "שְׁלִיחָה..." -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "שליחת האימייל לבדיקה נכשלה. אנא בדוק את התצורה שלך." -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "הערות פנימיות" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "הוסף הערה" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "הוסף הערה פנימית על לקוח זה..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "שמור הערה" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "עָרוּך" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "חָשׁוּב" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "בטל את הסימון" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "סמן חשוב" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "עדיין אין הערות. הוסף הערה כדי לעקוב אחר מידע חשוב על לקוח זה." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "ערך משוער" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "צור חשבונית" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "צור חשבונית" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "צור חשבונית" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "האם אתה בטוח שברצונך למחוק הערה זו?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "מחק הערה" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "נערך ב-" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "תְגוּבָה" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "הגדר את OIDC באמצעות משתני סביבה אלה:" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Server" +#~ msgstr "שֵׁרוּת" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "כתוב את תשובתך..." +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "Users" +#~ msgstr "משתמשים" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "Groups" +#~ msgstr "תביעת קבוצות" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "שתף את המחשבות, העדכונים או השאלות שלך..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "אתה יכול להשתמש במעברי שורות כדי לעצב את ההערה שלך." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "הוסף תמונה" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "אין תגובות עדיין" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "התחל את השיחה על ידי הוספת התגובה הראשונה." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "הוסף תגובה ראשונה" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "ערוך תגובה" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "בְּחֲזָרָה" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "עריכת הערה על:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "פורסם במקור ב" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "תוכן תגובה" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "כל הפעילויות" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "תבניות זמן" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "אין פעילות אחרונה" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "הפעילות תופיע כאן תוך כדי עבודה" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "טען עוד" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "טעינת הפעילויות נכשלה" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "אָבֵד" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "השתמש ב-SSL" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "StartTLS" +#~ msgstr "הַתחָלָה" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "פסק זמן (שניות)" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "בחר לקוח..." +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "Bind password" +#~ msgstr "סִיסמָה" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "Enter bind password" +#~ msgstr "הזן את הסיסמה שלך" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Base DN" +#~ msgstr "מבוסס על האחרון" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "User object class" +#~ msgstr "השתמש בתעריפים לפי שעה לפרויקט" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Login attribute" +#~ msgstr "זמן יומן" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Email attribute" +#~ msgstr "כתובת אימייל" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "First name attribute" +#~ msgstr "שֵׁם פְּרַטִי" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "שֵׁם מִשׁפָּחָה" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "שיטת אימות" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Group object class" +#~ msgstr "פרויקטים מובילים" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "קבוצת ניהול" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "AUTH_METHOD" +#~ msgstr "שיטת אישור" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "פעיל בלבד" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "בדיקת תצורה" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "נַעֲשָׂה" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "מרכז העזרה של TimeTracker" +#~ msgid "Test connection" +#~ msgstr "בדיקת תצורה" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "בַּיִת" +#~ msgid "Generate configuration" +#~ msgstr "בדיקת תצורה" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "עימוד המשימות שלי" +#~ msgid "Environment variables (.env)" +#~ msgstr "הפניה למשתני סביבה" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "שִׂיחָה" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "הוֹדָעָה" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "כיוון" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "יוצא" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "נכנסת" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "נוֹשֵׂא" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "מתוזמן" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "תאריך מעקב" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "תוכן/הערות" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "שמור תקשורת" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "שֵׁם פְּרַטִי" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "שֵׁם מִשׁפָּחָה" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "נייד" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "מַחלָקָה" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "מַגָע" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "חיוב" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "טֶכנִי" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "הגדר כאיש קשר ראשי" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "תגים" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "שמור איש קשר" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "הגדר ראשי" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "לא נמצאו אנשי קשר" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "הוסף איש קשר ראשון" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "איש קשר ראשי" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "היסטוריית תקשורת" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "הוסף תקשורת" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "לא נרשמה תקשורת" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "לְהַפְעִיל" +#~ msgid "Previous" +#~ msgstr "קוֹדֵם" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "Next" +#~ msgstr "הַבָּא" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "שם העסקה" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "בחר לקוח" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "בחר איש קשר" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "שָׁלָב" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "ערך עסקה" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "הסתברות זכייה" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "תאריך סגירה צפוי" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "ציטוט קשור" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "בחר הצעת מחיר" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "שמור עסקה" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "ווֹן" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "אָבֵד" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "כל השלבים" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "עֵרֶך" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "הִסתַבְּרוּת" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "סגור צפוי" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "לא נמצאו עסקאות" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "צור עסקה ראשונה" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "Feature Module Load Status" +#~ msgstr "סטטיסטיקות שימוש בתכונות" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "Optional loaded:" +#~ msgstr "קוד קופון אופציונלי" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "Attention needed" +#~ msgstr "תשומת לב נדרשת" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "Module" +#~ msgstr "נייד" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "פרויקט קשור" +#~ msgid "Status" +#~ msgstr "סטָטוּס" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Details" +#~ msgstr "פרטים" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Loaded" +#~ msgstr "טען עוד" -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "Failed" +#~ msgstr "נִכשָׁל" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "היסטוריית יעדים" +#~ msgid "—" +#~ msgstr "" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "צפה בפרטים המלאים" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "הזכירו אותך" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "הצג משימה ותשובה" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "חֶשׁבּוֹנִית" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "חשבונית באיחור" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "צפה בחשבונית" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "לְצַטֵט" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "אישור הצעת מחיר נדחה" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "צפה בציטוט" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "התבקש אישור" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "סקירת הצעת מחיר" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "הצעת המחיר אושרה" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "פג תוקף הציטוט" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "ציטוט יפוג בקרוב" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "ציטוט נשלח" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "הקצאת משימה" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "צפה במשימה" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "פרטי הבדיקה" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "הסיכום השבועי שלך" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 בקשה רעה" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "בקשה לא חוקית" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "הבקשה שביצעת אינה חוקית או מכילה שגיאות. זה יכול לנבוע מ:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "נתוני טופס חסרים או לא חוקיים" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "פרמטרי בקשה שגויים" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "אין לך הרשאה לגשת למשאב זה. זה יכול לנבוע מ:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "אין מספיק הרשאות" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "לא מחובר" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "הגבלות גישה למשאבים" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "משהו השתבש אצלנו. אנא נסה שוב מאוחר יותר." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "נסה שוב" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "אירעה שגיאה במהלך עיבוד הבקשה שלך." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "רענן עמוד" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "עבור אל התחברות" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "למשל, נסיעות, ארוחות, ציוד משרדי" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "למשל, נסיעות, ארוחות" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "תיאור קצר של קטגוריה זו..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "למשל, פא-מטוס, פא-כלים" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "למשל, 19.00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "קָטֵגוֹרִיָה" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "מידע בסיסי" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "למשל, טיסה לברלין" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "פרטים נוספים על ההוצאה..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "קָטֵגוֹרִיָה" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "פרטי תשלום" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "מִקוּם" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "פרטי תשלום" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "למשל, לופטהנזה" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "מידע נוסף" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "מספר קבלה/חשבונית" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "למשל, INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "למשל, כנס, פגישת לקוח, דחוף" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "הערות נוספות..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "אופציונלי" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "סינון הוצאות" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "מחק הוצאות נבחרות" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "שנה סטטוס עבור הוצאות נבחרות" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "משויך ל" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "דחיית הוצאה" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "הסבר מדוע הוצאה זו נדחית..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "האם אתה בטוח שברצונך למחוק הוצאה זו?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "מחק הוצאות" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "ייבוא/ייצוא נתונים" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "ייבוא/ייצוא" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "ייבא נתונים ממעקבי זמן אחרים או ייצא את הנתונים שלך לצורך תאימות GDPR וגיבויים" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "ייבוא ​​נתונים" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "ייבא ערכי זמן מקובץ CSV" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "בחר קובץ CSV" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "הורד תבנית" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "All Categories" +#~ msgstr "כל הקטגוריות" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Project Management" +#~ msgstr "ניהול פרויקטים" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "מופעל" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "ייבוא ​​ממסלול Toggl" +#~ msgid "Disabled" +#~ msgstr "נָכֶה" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "ייבא ערכי זמן ממסלול Toggl" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "ייבוא ​​מ- Toggl" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "ייבוא ​​מקציר" +#~ msgid "Save Changes" +#~ msgstr "שמור שינויים" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "יבא ערכי זמן מ-Harvest" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "שחזר מגיבוי" +#~ msgid "Note" +#~ msgstr "פֶּתֶק" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "ייבוא ​​היסטוריית" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "ייצוא נתונים" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "ייצוא נתונים מלא (GDPR)" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "ייצא את כל הנתונים האישיים שלך" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "ייצא כ-JSON" +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "ייצא כ-ZIP" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "ייצוא מסונן" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "ייצא נתונים ספציפיים עם מסננים" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "לוח מחוונים לניפוי באגים של OIDC" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "ייצוא עם מסננים" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "בדוק תצורה, מטא נתונים של ספק ומשתמשי OIDC" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "Test Configuration" +#~ msgstr "בדיקת תצורה" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "OIDC Configuration" +#~ msgstr "תצורת OIDC" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "צור גיבוי מלא של מסד הנתונים" +#~ msgid "Auth Method" +#~ msgstr "שיטת אישור" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "ייצוא היסטוריה" +#~ msgid "Issuer" +#~ msgstr "מנפיק" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "אסימון API" +#~ msgid "Not configured" +#~ msgstr "לא מוגדר" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "מזהה סביבת עבודה" +#~ msgid "Client ID" +#~ msgstr "מזהה לקוח" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "יְבוּא" +#~ msgid "Client Secret" +#~ msgstr "סוד הלקוח" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "מזהה חשבון" +#~ msgid "Set" +#~ msgstr "מַעֲרֶכֶת" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Not set" +#~ msgstr "לא מוגדר" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "כתובת URL להפניה מחדש" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "נוצר אוטומטית" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "Scopes" +#~ msgstr "היקפים" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "מיפוי תביעות" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "תביעת שם משתמש" + +#~ msgid "Email Claim" +#~ msgstr "תביעת דוא\"ל" + +#~ msgid "Full Name Claim" +#~ msgstr "תביעת שם מלא" + +#~ msgid "Groups Claim" +#~ msgstr "תביעת קבוצות" + +#~ msgid "Admin Group" +#~ msgstr "קבוצת ניהול" + +#~ msgid "Admin Emails" +#~ msgstr "הודעות דוא\"ל של מנהל מערכת" + +#~ msgid "Post-Logout URI" +#~ msgstr "URI לאחר התנתקות" + +#~ msgid "Provider Metadata" +#~ msgstr "מטא נתונים של ספק" + +#~ msgid "Error loading metadata:" +#~ msgstr "שגיאה בטעינת מטא נתונים:" + +#~ msgid "Discovery endpoint:" +#~ msgstr "נקודת קצה גילוי:" + +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "מטא נתונים של ספק נטען בהצלחה" + +#~ msgid "Endpoints" +#~ msgstr "נקודות קצה" + +#~ msgid "Authorization" +#~ msgstr "הַרשָׁאָה" + +#~ msgid "Token" +#~ msgstr "אֲסִימוֹן" + +#~ msgid "UserInfo" +#~ msgstr "מידע על משתמש" + +#~ msgid "End Session" +#~ msgstr "סיום סשן" + +#~ msgid "JWKS URI" +#~ msgstr "JWKS URI" + +#~ msgid "Supported Features" +#~ msgstr "תכונות נתמכות" + +#~ msgid "Response Types" +#~ msgstr "סוגי תגובות" + +#~ msgid "Grant Types" +#~ msgstr "סוגי מענקים" + +#~ msgid "Auth Methods" +#~ msgstr "שיטות אישור" + +#~ msgid "Claims" +#~ msgstr "תביעות" + +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "מטא נתונים של ספק לא נטענו. לחץ על \"בדוק תצורה\" כדי לאחזר." + +#~ msgid "Email" +#~ msgstr "אֶלֶקטרוֹנִי" + +#~ msgid "Full Name" +#~ msgstr "שם מלא" + +#~ msgid "Role" +#~ msgstr "תַפְקִיד" + +#~ msgid "Last Login" +#~ msgstr "כניסה אחרונה" + +#~ msgid "OIDC Subject" +#~ msgstr "נושא OIDC" + +#~ msgid "Inactive" +#~ msgstr "לֹא פָּעִיל" + +#~ msgid "Never" +#~ msgstr "לְעוֹלָם לֹא" + +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "עדיין לא התחברו משתמשים דרך OIDC." + +#~ msgid "Environment Variables Reference" +#~ msgstr "הפניה למשתני סביבה" + +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "הגדר את OIDC באמצעות משתני סביבה אלה:" + +#~ msgid "Variable" +#~ msgstr "מִשְׁתַנֶה" + +#~ msgid "Description" +#~ msgstr "תֵאוּר" + +#~ msgid "Example" +#~ msgstr "דוּגמָה" + +#~ msgid "Authentication method" +#~ msgstr "שיטת אימות" + +#~ msgid "OIDC provider issuer URL" +#~ msgstr "כתובת אתר של ספק OIDC" + +#~ msgid "Client ID from OIDC provider" +#~ msgstr "מזהה לקוח מספק OIDC" + +#~ msgid "Client secret from OIDC provider" +#~ msgstr "סוד לקוח מספק OIDC" + +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "כתובת אתר להתקשרות חוזרת (אופציונלי, נוצר אוטומטית)" + +#~ msgid "Requested scopes" +#~ msgstr "היקפים מבוקשים" + +#~ msgid "Claim containing username" +#~ msgstr "תביעה המכילה שם משתמש" + +#~ msgid "Claim containing email" +#~ msgstr "תביעה המכילה אימייל" + +#~ msgid "Claim containing full name" +#~ msgstr "תביעה המכילה שם מלא" + +#~ msgid "Claim containing groups" +#~ msgstr "טענה המכילה קבוצות" + +#~ msgid "Group name for admin role (optional)" +#~ msgstr "שם קבוצה לתפקיד מנהל (אופציונלי)" + +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "הודעות דוא\"ל לניהול מופרדות בפסיקים (אופציונלי)" + +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" + +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" + +#~ msgid "Basic Config" +#~ msgstr "" + +#~ msgid "Test Connection" +#~ msgstr "" + +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" + +#~ msgid "OIDC Issuer URL" +#~ msgstr "" + +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" + +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" + +#~ msgid "Enter client secret" +#~ msgstr "" + +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" + +#~ msgid "Authentication Method" +#~ msgstr "שיטת אימות" + +#~ msgid "OIDC Only" +#~ msgstr "" + +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" + +#~ msgid "Both" +#~ msgstr "" + +#~ msgid "SSO and local password authentication" +#~ msgstr "" + +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" + +#~ msgid "Step 2: Test Connection" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" + +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" + +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" + +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" + +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" + +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" + +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" + +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" + +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" + +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" + +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" + +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" + +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" + +#~ msgid "Generate Configuration" +#~ msgstr "" + +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" + +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" + +#~ msgid "OIDC User Details" +#~ msgstr "פרטי משתמש OIDC" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "פרופיל וזהות OIDC עבור משתמש זה" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "חזרה ל-OIDC Debug" + +#~ msgid "User Profile" +#~ msgstr "פרופיל משתמש" + +#~ msgid "Active" +#~ msgstr "פָּעִיל" + +#~ msgid "Preferred Language" +#~ msgstr "שפה מועדפת" + +#~ msgid "Created At" +#~ msgstr "נוצר ב-" + +#~ msgid "OIDC Information" +#~ msgstr "מידע OIDC" + +#~ msgid "OIDC Issuer" +#~ msgstr "מנפיק OIDC" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "נושא OIDC (תת)" + +#~ msgid "Local" +#~ msgstr "מְקוֹמִי" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "משתמש זה נוצר או מקושר באמצעות " +#~ "OIDC. המנפיק והנושא משמשים לזיהוי ייחודי" +#~ " של המשתמש על פני הפעלות התחברות." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "למשתמש זה אין מידע OIDC. ייתכן שהם" +#~ " נוצרו באופן ידני או באמצעות רישום" +#~ " עצמי ללא OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "סטטיסטיקת פעילות" + +#~ msgid "Time Entries" +#~ msgstr "כניסות זמן" + +#~ msgid "None" +#~ msgstr "אַף לֹא אֶחָד" + +#~ msgid "Active Timer" +#~ msgstr "טיימר פעיל" + +#~ msgid "Tasks Created" +#~ msgstr "משימות נוצרו" + +#~ msgid "Edit User" +#~ msgstr "ערוך משתמש" + +#~ msgid "View All Users" +#~ msgstr "הצג את כל המשתמשים" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "מעצב הצעות מחיר ב-PDF" + +#~ msgid "Visual Invoice Designer" +#~ msgstr "מעצב ציטוטים חזותיים" + +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "גרור ושחרר אלמנטים כדי לעצב את פריסת הצעת המחיר שלך" + +#~ msgid "How to use:" +#~ msgstr "כיצד להשתמש:" + +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "לחץ על אלמנטים מהסרגל הצדדי השמאלי " +#~ "כדי להוסיף אותם לקנבס. לחץ על " +#~ "רכיבים כדי לבחור ולהתאים אותם בחלונית" +#~ " המאפיינים. השתמש בכלי היישור ובקיצורי " +#~ "המקלדת לעריכה מהירה יותר." + +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "קיצורי מקשים:" + +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" + +#~ msgid "Items Table:" +#~ msgstr "טבלת פריטי ציטוט" + +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" + +#~ msgid "Expenses Table:" +#~ msgstr "סה\"כ הוצאות" + +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" + +#~ msgid "Saving:" +#~ msgstr "חִסָכוֹן..." + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" + +#~ msgid "Preview:" +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" + +#~ msgid "See" +#~ msgstr "מַעֲרֶכֶת" + +#~ msgid "for full documentation." +#~ msgstr "תיעוד" + +#~ msgid "Clear Canvas" +#~ msgstr "קנבס ברור" + +#~ msgid "Generate Preview" +#~ msgstr "צור תצוגה מקדימה" + +#~ msgid "Save Design" +#~ msgstr "שמור עיצוב" + +#~ msgid "View Code" +#~ msgstr "צפה בקוד" + +#~ msgid "Export JSON" +#~ msgstr "" + +#~ msgid "Import JSON" +#~ msgstr "" + +#~ msgid "Snap to Grid (10px)" +#~ msgstr "הצמד לרשת (10 פיקסלים)" + +#~ msgid "Toolbox" +#~ msgstr "ארגז כלים" + +#~ msgid "Search elements & variables..." +#~ msgstr "חיפוש אלמנטים ומשתנים..." + +#~ msgid "Elements" +#~ msgstr "אלמנטים" + +#~ msgid "Variables" +#~ msgstr "משתנים" + +#~ msgid "Basic Elements" +#~ msgstr "אלמנטים בסיסיים" + +#~ msgid "Custom Text" +#~ msgstr "טקסט מותאם אישית" + +#~ msgid "Text" +#~ msgstr "טֶקסט" + +#~ msgid "Heading" +#~ msgstr "כּוֹתֶרֶת" + +#~ msgid "Line" +#~ msgstr "קַו" + +#~ msgid "Rectangle" +#~ msgstr "מַלבֵּן" + +#~ msgid "Circle" +#~ msgstr "מַעְגָל" + +#~ msgid "Company Info" +#~ msgstr "מידע על החברה" + +#~ msgid "Company Logo" +#~ msgstr "לוגו החברה" + +#~ msgid "Company Name" +#~ msgstr "שם החברה" + +#~ msgid "Company Details" +#~ msgstr "פרטי החברה" + +#~ msgid "Address" +#~ msgstr "כְּתוֹבֶת" + +#~ msgid "Phone" +#~ msgstr "טֵלֵפוֹן" + +#~ msgid "Website" +#~ msgstr "אֲתַר אִינטֶרנֶט" + +#~ msgid "Tax ID" +#~ msgstr "מזהה מס" + +#~ msgid "Invoice Data" +#~ msgstr "פרטי חשבונית" + +#~ msgid "Invoice Number" +#~ msgstr "מספר חשבונית" + +#~ msgid "Invoice Date" +#~ msgstr "חשבונית" + +#~ msgid "Due Date" +#~ msgstr "תאריך יעד" + +#~ msgid "Client Info" +#~ msgstr "פרטי לקוח" + +#~ msgid "Client Name" +#~ msgstr "שם הלקוח" + +#~ msgid "Client Address" +#~ msgstr "כתובת הלקוח" + +#~ msgid "Items Table" +#~ msgstr "טבלת פריטי ציטוט" + +#~ msgid "Expenses Table" +#~ msgstr "סה\"כ הוצאות" + +#~ msgid "Subtotal" +#~ msgstr "סכום משנה" + +#~ msgid "Tax" +#~ msgstr "מַס" + +#~ msgid "Total Amount" +#~ msgstr "סכום כולל" + +#~ msgid "Terms" +#~ msgstr "תנאים" + +#~ msgid "Payment & Project" +#~ msgstr "תשלום ופרויקט" + +#~ msgid "Payment Date" +#~ msgstr "תאריך תשלום" + +#~ msgid "Payment Method" +#~ msgstr "שיטת תשלום" + +#~ msgid "Payment Status" +#~ msgstr "מצב תשלום" + +#~ msgid "Amount Paid" +#~ msgstr "סכום ששולם" + +#~ msgid "Project Name" +#~ msgstr "שם הפרויקט" + +#~ msgid "Client Email" +#~ msgstr "אימייל ללקוח" + +#~ msgid "Client Phone" +#~ msgstr "טלפון לקוח" + +#~ msgid "QR Code" +#~ msgstr "קוד QR" + +#~ msgid "Barcode" +#~ msgstr "ברקוד" + +#~ msgid "Page Number" +#~ msgstr "מספר עמוד" + +#~ msgid "Current Date" +#~ msgstr "תאריך נוכחי" + +#~ msgid "Watermark" +#~ msgstr "סימן מים" + +#~ msgid "Bank Info" +#~ msgstr "מידע בנק" + +#~ msgid "Currency" +#~ msgstr "מַטְבֵּעַ" + +#~ msgid "Decorative Image" +#~ msgstr "" + +#~ msgid "Invoice Fields" +#~ msgstr "פריטי חשבונית" + +#~ msgid "Invoice number" +#~ msgstr "מספר חשבונית" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "סטטוס הצעת מחיר (טיוטה/נשלח/תשלום/איחור)" + +#~ msgid "Issue date" +#~ msgstr "תאריך הנפקה" + +#~ msgid "Due date" +#~ msgstr "תאריך יעד" + +#~ msgid "Subtotal amount" +#~ msgstr "סכום ביניים" + +#~ msgid "Tax rate (%)" +#~ msgstr "שיעור מס (%)" + +#~ msgid "Tax amount" +#~ msgstr "סכום מס" + +#~ msgid "Total amount" +#~ msgstr "סכום כולל" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "קוד מטבע (EUR, USD וכו')" + +#~ msgid "Invoice notes" +#~ msgstr "פריטי חשבונית" + +#~ msgid "Terms & conditions" +#~ msgstr "תנאים והגבלות" + +#~ msgid "Client Fields" +#~ msgstr "שדות לקוח" + +#~ msgid "Client company name" +#~ msgstr "שם חברת הלקוח" + +#~ msgid "Client email address" +#~ msgstr "כתובת אימייל של הלקוח" + +#~ msgid "Client full address" +#~ msgstr "כתובת מלאה של הלקוח" + +#~ msgid "Client contact person" +#~ msgstr "איש קשר ללקוח" + +#~ msgid "Client phone number" +#~ msgstr "מספר טלפון של הלקוח" + +#~ msgid "Payment Fields" +#~ msgstr "שדות תשלום" + +#~ msgid "Payment status" +#~ msgstr "מצב תשלום" + +#~ msgid "Payment date" +#~ msgstr "תאריך תשלום" + +#~ msgid "Payment method" +#~ msgstr "אמצעי תשלום" + +#~ msgid "Payment reference number" +#~ msgstr "מספר אסמכתא לתשלום" + +#~ msgid "Amount paid" +#~ msgstr "סכום ששולם" + +#~ msgid "Outstanding amount" +#~ msgstr "סכום יוצא דופן" + +#~ msgid "Payment notes" +#~ msgstr "הערות תשלום" + +#~ msgid "Project Fields" +#~ msgstr "שדות פרויקט" + +#~ msgid "Project name" +#~ msgstr "שם הפרויקט" + +#~ msgid "Project code" +#~ msgstr "קוד פרויקט" + +#~ msgid "Project description" +#~ msgstr "תיאור הפרויקט" + +#~ msgid "Project billing reference" +#~ msgstr "הפניה לחיוב פרויקט" + +#~ msgid "Company/Settings Fields" +#~ msgstr "שדות חברה/הגדרות" + +#~ msgid "Your company name" +#~ msgstr "שם החברה שלך" + +#~ msgid "Your company address" +#~ msgstr "כתובת החברה שלך" + +#~ msgid "Your company email" +#~ msgstr "האימייל של החברה שלך" + +#~ msgid "Your company phone" +#~ msgstr "הטלפון של החברה שלך" + +#~ msgid "Your company website" +#~ msgstr "אתר החברה שלך" + +#~ msgid "Your tax ID number" +#~ msgstr "מספר תעודת זהות המס שלך" + +#~ msgid "Your bank account info" +#~ msgstr "פרטי חשבון הבנק שלך" + +#~ msgid "Default invoice terms" +#~ msgstr "תנאי ברירת מחדל לחשבונית" + +#~ msgid "Default invoice notes" +#~ msgstr "הערות חשבונית ברירת מחדל" + +#~ msgid "Date/Time Fields" +#~ msgstr "שדות תאריך/שעה" + +#~ msgid "Current date" +#~ msgstr "תאריך נוכחי" + +#~ msgid "Invoice creation date" +#~ msgstr "תאריך יצירת הצעת מחיר" + +#~ msgid "Invoice last update date" +#~ msgstr "ציטוט את תאריך העדכון האחרון" + +#~ msgid "Invoice Items Loop" +#~ msgstr "פריטי חשבונית" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" + +#~ msgid "Time-based items only" +#~ msgstr "שירותים מבוססי זמן ועבודה לפי שעה" + +#~ msgid "Item description" +#~ msgstr "תיאור הפריט" + +#~ msgid "Item quantity" +#~ msgstr "כמות פריט" + +#~ msgid "Item unit price" +#~ msgstr "מחיר ליחידה של פריט" + +#~ msgid "Item total amount" +#~ msgstr "סכום כולל של פריט" + +#~ msgid "End loop" +#~ msgstr "סוף לולאה" + +#~ msgid "Extra Goods Loop" +#~ msgstr "סחורה נוספת" + +#~ msgid "Loop through extra goods only" +#~ msgstr "פרויקט סחורה נוספת" + +#~ msgid "Good name" +#~ msgstr "שם התפקיד" + +#~ msgid "Good total amount" +#~ msgstr "סכום כולל" + +#~ msgid "Design Canvas" +#~ msgstr "עיצוב קנבס" + +#~ msgid "Page Size:" +#~ msgstr "גודל עמוד:" + +#~ msgid "Zoom In" +#~ msgstr "לְהִתְמַקֵד" + +#~ msgid "Zoom Out" +#~ msgstr "זום אאוט" + +#~ msgid "Delete Selected" +#~ msgstr "מחק את נבחרות" + +#~ msgid "Properties" +#~ msgstr "נכסים" + +#~ msgid "Warnings" +#~ msgstr "אַזהָרָה" + +#~ msgid "Refresh warnings" +#~ msgstr "רענן עמוד" + +#~ msgid "No warnings" +#~ msgstr "אַזהָרָה" + +#~ msgid "Template Settings" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "פורמט תאריך" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "בחר אלמנט כדי לערוך את המאפיינים שלו" + +#~ msgid "PDF Preview" +#~ msgstr "תצוגה מקדימה של PDF" + +#~ msgid "Page Size" +#~ msgstr "" + +#~ msgid "Refresh Preview" +#~ msgstr "" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "" + +#~ msgid "Close Preview" +#~ msgstr "" + +#~ msgid "Zoom Level" +#~ msgstr "" + +#~ msgid "Reset Zoom" +#~ msgstr "" + +#~ msgid "Fit to Width" +#~ msgstr "" + +#~ msgid "Fit Width" +#~ msgstr "" + +#~ msgid "Fit to Height" +#~ msgstr "" + +#~ msgid "Fit Height" +#~ msgstr "" + +#~ msgid "Actual Size" +#~ msgstr "" + +#~ msgid "Generating preview..." +#~ msgstr "" + +#~ msgid "Preview Error" +#~ msgstr "" + +#~ msgid "Retry" +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "קוד שנוצר" + +#~ msgid "Change Image" +#~ msgstr "" + +#~ msgid "Upload Image" +#~ msgstr "" + +#~ msgid "Remove Image" +#~ msgstr "" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "" + +#~ msgid "Uploading..." +#~ msgstr "" + +#~ msgid "Error: Image update function not found" +#~ msgstr "" + +#~ msgid "Failed to upload image" +#~ msgstr "" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "לנקות את כל הרכיבים?" + +#~ msgid "Clear" +#~ msgstr "בָּרוּר" + +#~ msgid "Exit Fullscreen" +#~ msgstr "" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "לאפס לברירות המחדל?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "אפס פריסת PDF" + +#~ msgid "Error importing template" +#~ msgstr "" + +#~ msgid "PDF Quote Designer" +#~ msgstr "מעצב הצעות מחיר ב-PDF" + +#~ msgid "Visual Quote Designer" +#~ msgstr "מעצב ציטוטים חזותיים" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "גרור ושחרר אלמנטים כדי לעצב את פריסת הצעת המחיר שלך" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "טבלת פריטי ציטוט" + +#~ msgid "Quote Items Table:" +#~ msgstr "טבלת פריטי ציטוט" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" + +#~ msgid "Quote Data" +#~ msgstr "ציטוט נתונים" + +#~ msgid "Quote Number" +#~ msgstr "מספר ציטוט" + +#~ msgid "Quote Date" +#~ msgstr "תאריך ציטוט" + +#~ msgid "Quote Items Table" +#~ msgstr "טבלת פריטי ציטוט" + +#~ msgid "Quote Fields" +#~ msgstr "שדות ציטוט" + +#~ msgid "Quote number" +#~ msgstr "מספר ציטוט" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "סטטוס הצעת מחיר (טיוטה/נשלח/תשלום/איחור)" + +#~ msgid "Quote notes" +#~ msgstr "ציטוט הערות" + +#~ msgid "Quote status" +#~ msgstr "סטטוס ציטוט" + +#~ msgid "Quote accepted date" +#~ msgstr "תאריך קבלת הצעת מחיר" + +#~ msgid "Quote creation date" +#~ msgstr "תאריך יצירת הצעת מחיר" + +#~ msgid "Quote last update date" +#~ msgstr "ציטוט את תאריך העדכון האחרון" + +#~ msgid "Quote Items Loop" +#~ msgstr "לולאה של ציטוט פריטים" + +#~ msgid "Loop through invoice items" +#~ msgstr "עברו בלולאה בין פריטי חשבונית" + +#~ msgid "Align Left" +#~ msgstr "יישר שמאלה" + +#~ msgid "Center Horizontally" +#~ msgstr "מרכז אופקי" + +#~ msgid "Align Right" +#~ msgstr "יישר ימינה" + +#~ msgid "Align Top" +#~ msgstr "יישר למעלה" + +#~ msgid "Center Vertically" +#~ msgstr "מרכז אנכית" + +#~ msgid "Align Bottom" +#~ msgstr "יישר תחתית" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "" + +#~ msgid "Email Mappings" +#~ msgstr "" + +#~ msgid "Add Mapping" +#~ msgstr "" + +#~ msgid "Salesman Initial" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "כתובת אימייל" + +#~ msgid "Pattern/Domain" +#~ msgstr "" + +#~ msgid "Add Email Mapping" +#~ msgstr "" + +#~ msgid "1-20 letters only" +#~ msgstr "" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" + +#~ msgid "Direct Email Address" +#~ msgstr "" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" + +#~ msgid "Edit Email Mapping" +#~ msgstr "" + +#~ msgid "Error saving mapping" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" + +#~ msgid "Error deleting mapping" +#~ msgstr "" + +#~ msgid "Time Entry Requirements" +#~ msgstr "תבניות הזנת זמן" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" + +#~ msgid "Require description when logging time" +#~ msgstr "" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" + +#~ msgid "Support visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "מַפְתֵחַ" + +#~ msgid "— key sent by email." +#~ msgstr "שלח אימייל" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "מַפְתֵחַ" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "קוד, שם, מייל" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "מיתוג חברה" + +#~ msgid "Invoice Defaults" +#~ msgstr "ברירת מחדל של חשבונית" + +#~ msgid "Backup Settings" +#~ msgstr "הגדרות גיבוי" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "מופעל" + +#~ msgid "Host" +#~ msgstr "אָבֵד" + +#~ msgid "SSL" +#~ msgstr "השתמש ב-SSL" + +#~ msgid "TLS" +#~ msgstr "השתמש ב-TLS" + +#~ msgid "on" +#~ msgstr "עַל" + +#~ msgid "off" +#~ msgstr "שֶׁל" + +#~ msgid "User DN" +#~ msgstr "תפריט משתמש" + +#~ msgid "User login attribute" +#~ msgstr "זמני טעינה מהירים יותר" + +#~ msgid "Test LDAP Connection" +#~ msgstr "תנאים והגבלות" + +#~ msgid "Export Settings" +#~ msgstr "ייצוא הגדרות" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "הַתאָמָה" + +#~ msgid "Transfer" +#~ msgstr "לְהַעֲבִיר" + +#~ msgid "Sale" +#~ msgstr "מְכִירָה" + +#~ msgid "Rent" +#~ msgstr "הַשׂכָּרָה" + +#~ msgid "Purchase" +#~ msgstr "לִרְכּוֹשׁ" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "זָמִין" + +#~ msgid "Use environment default" +#~ msgstr "ברירת מחדל של חשבונית" + +#~ msgid "currently" +#~ msgstr "מַטְבֵּעַ" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "כתובת האתר של התמונה" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "קוד" + +#~ msgid "Hosted API key" +#~ msgstr "צור אסימון API" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "השאר ריק כדי לשמור את הסיסמה הנוכחית" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "פסק זמן (שניות)" + +#~ msgid "Context limit" +#~ msgstr "סוג תוכן" + +#~ msgid "System prompt" +#~ msgstr "תפקיד מערכת" + +#~ msgid "Test AI connection" +#~ msgstr "תנאים והגבלות" + +#~ msgid "Privacy & Analytics" +#~ msgstr "פרטיות וניתוח" + +#~ msgid "Save Settings" +#~ msgstr "שמור הגדרות" + +#~ msgid "Upload New Logo" +#~ msgstr "העלה לוגו חדש" + +#~ msgid "Logo Preview" +#~ msgstr "תצוגה מקדימה של לוגו" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "האם אתה בטוח שברצונך להסיר את לוגו החברה?" + +#~ msgid "Remove Logo" +#~ msgstr "הסר לוגו" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "בקש אישור" + +#~ msgid "Testing connection..." +#~ msgstr "בדיקת תצורה" + +#~ msgid "Connection failed." +#~ msgstr "הפעולה נכשלה" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "הפעולה נכשלה" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "לוח המחוונים של טלמטריה ואנליטיקה" + +#~ msgid "Admin → Settings" +#~ msgstr "מנהל → הגדרות" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "השאר ריק כדי לשמור את הסיסמה הנוכחית" + +#~ msgid "Client Portal Access" +#~ msgstr "גישה לפורטל לקוחות" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "הוקצה ל" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "גישת מנהל" + +#~ msgid "Migrate to new role system" +#~ msgstr "מעבר למערכת תפקידים חדשה" + +#~ msgid "Migrate" +#~ msgstr "לְהַגֵר" + +#~ msgid "Roles" +#~ msgstr "תפקידים" + +#~ msgid "No users found." +#~ msgstr "לא נמצאו משתמשים." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "לא ניתן למחוק את המשתמש \"{name}\" " +#~ "כי יש לו {count} כניסות זמן. לא" +#~ " ניתן למחוק משתמשים עם ערכי זמן " +#~ "קיימים." + +#~ msgid "Cannot Delete User" +#~ msgstr "לא ניתן למחוק משתמש" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "האם אתה בטוח שברצונך למחוק את המשתמש \"{name}\"? לא ניתן לבטל פעולה זו." + +#~ msgid "Delete User" +#~ msgstr "מחק משתמש" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "מַדבֵּקָה" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "אופציונלי" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "הגדר כתבנית ברירת מחדל" + +#~ msgid "HTML Template" +#~ msgstr "תבנית HTML" + +#~ msgid "Custom Message" +#~ msgstr "הודעה מותאמת אישית" + +#~ msgid "More Variables" +#~ msgstr "משתנים נוספים" + +#~ msgid "Create Template" +#~ msgstr "צור תבנית" + +#~ msgid "Available Variables" +#~ msgstr "משתנים זמינים" + +#~ msgid "Invoice Variables" +#~ msgstr "משתני חשבונית" + +#~ msgid "Other Variables" +#~ msgstr "משתנים אחרים" + +#~ msgid "Send test email" +#~ msgstr "שלח אימייל לבדיקה" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "אימייל של נמען" + +#~ msgid "Invoice ID" +#~ msgstr "חשבונית" + +#~ msgid "Update Template" +#~ msgstr "עדכון תבנית" + +#~ msgid "Failed to send test email." +#~ msgstr "שלח אימייל לבדיקה" + +#~ msgid "No email templates found." +#~ msgstr "לא נמצאו תבניות אימייל." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" +#~ "צור את תבנית האימייל הראשונה שלך " +#~ "כדי להתאים אישית את הודעות הדוא\"ל " +#~ "של חשבוניות." + +#~ msgid "Create Email Template" +#~ msgstr "צור תבנית אימייל" + +#~ msgid "Delete Email Template" +#~ msgstr "מחק תבנית אימייל" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "האם אתה בטוח שאתה רוצה למחוק" + +#~ msgid "This action cannot be undone." +#~ msgstr "לא ניתן לבטל פעולה זו." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "מידע על תבנית" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "סמל" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "שֵׁם" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "הרשאות מערכת" + +#~ msgid "All available permissions in the system" +#~ msgstr "כל ההרשאות הזמינות במערכת" + +#~ msgid "Back to Roles" +#~ msgstr "חזרה לתפקידים" + +#~ msgid "permissions" +#~ msgstr "הרשאות" + +#~ msgid "No description available" +#~ msgstr "אין תיאור זמין" + +#~ msgid "About Permissions" +#~ msgstr "לגבי הרשאות" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "ההרשאות מגדירות אילו פעולות המשתמשים " +#~ "יכולים לבצע במערכת. הרשאות אלה מוקצות" +#~ " לתפקידים, ותפקידים מוקצים למשתמשים. זה " +#~ "מספק מערכת בקרת גישה גמישה ופרטנית." + +#~ msgid "Edit Role" +#~ msgstr "ערוך תפקיד" + +#~ msgid "Create New Role" +#~ msgstr "צור תפקיד חדש" + +#~ msgid "Role Name" +#~ msgstr "שם התפקיד" + +#~ msgid "A unique name for this role" +#~ msgstr "שם ייחודי לתפקיד זה" + +#~ msgid "Optional description of this role" +#~ msgstr "תיאור אופציונלי של תפקיד זה" + +#~ msgid "Permissions" +#~ msgstr "הרשאות" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "בחר את ההרשאות שתפקיד זה צריך להיות:" + +#~ msgid "Toggle All" +#~ msgstr "החלף הכל" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "עדכון תפקיד" + +#~ msgid "Create Role" +#~ msgstr "צור תפקיד" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "נהל תפקידים והרשאותיהם" + +#~ msgid "View Permissions" +#~ msgstr "צפה בהרשאות" + +#~ msgid "Total Roles" +#~ msgstr "סך הכל תפקידים" + +#~ msgid "System Roles" +#~ msgstr "תפקידי מערכת" + +#~ msgid "Custom Roles" +#~ msgstr "תפקידים מותאמים אישית" + +#~ msgid "Assigned Users" +#~ msgstr "משתמשים שהוקצו" + +#~ msgid "Type" +#~ msgstr "סוּג" + +#~ msgid "Default role" +#~ msgstr "תפקיד ברירת מחדל" + +#~ msgid "user" +#~ msgstr "מִשׁתַמֵשׁ" + +#~ msgid "No users" +#~ msgstr "אין משתמשים" + +#~ msgid "Custom" +#~ msgstr "מִנְהָג" + +#~ msgid "View" +#~ msgstr "נוֹף" + +#~ msgid "Permissions for" +#~ msgstr "הרשאות עבור" + +#~ msgid "No permissions assigned." +#~ msgstr "לא הוקצו הרשאות." + +#~ msgid "No roles found." +#~ msgstr "לא נמצאו תפקידים." + +#~ msgid "About Roles & Permissions" +#~ msgstr "על תפקידים והרשאות" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "תפקידים הם אוספים של הרשאות שניתן " +#~ "להקצות למשתמשים. תפקידי מערכת מוגדרים " +#~ "מראש ולא ניתן למחוק או לשנות את" +#~ " שמם, אך ניתן ליצור תפקידים מותאמים" +#~ " אישית לצרכים הספציפיים שלך." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "האם אתה בטוח שברצונך למחוק את התפקיד" + +#~ msgid "Delete Role" +#~ msgstr "מחק תפקיד" + +#~ msgid "No description" +#~ msgstr "אין תיאור" + +#~ msgid "Role Information" +#~ msgstr "מידע על תפקידים" + +#~ msgid "System Role" +#~ msgstr "תפקיד מערכת" + +#~ msgid "Custom Role" +#~ msgstr "תפקיד מותאם אישית" + +#~ msgid "Total Permissions" +#~ msgstr "סך ההרשאות" + +#~ msgid "Created" +#~ msgstr "נוצר" + +#~ msgid "Users with this Role" +#~ msgstr "משתמשים בעלי תפקיד זה" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "עדיין לא הוקצו משתמשים לתפקיד זה." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "לתפקיד זה לא הוקצו הרשאות." + +#~ msgid "Back to User" +#~ msgstr "חזרה למשתמש" + +#~ msgid "Manage Roles for" +#~ msgstr "נהל תפקידים עבור" + +#~ msgid "Assign Roles" +#~ msgstr "הקצה תפקידים" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "בחר את התפקידים שמשתמש זה צריך " +#~ "להיות. משתמשים יורשים את כל ההרשאות " +#~ "מהתפקידים שהוקצו להם." + +#~ msgid "Update Roles" +#~ msgstr "עדכון תפקידים" + +#~ msgid "Current Effective Permissions" +#~ msgstr "הרשאות אפקטיביות נוכחיות" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "אלו הן כל ההרשאות שיש למשתמש כרגע באמצעות תפקידיו:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "אין הרשאות (הקצאת תפקידים להענקת הרשאות)" + +#~ msgid "Create Webhook" +#~ msgstr "צור Webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "ערוך את Webhook" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "הגדר webhook לאינטגרציות" + +#~ msgid "Webhook URL" +#~ msgstr "URL של Webhook" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "כתובת האתר שאליה יישלחו אירועי webhook" + +#~ msgid "Events" +#~ msgstr "אירועים" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "בחר אילו אירועים צריכים להפעיל את ה-webhook הזה" + +#~ msgid "HTTP Method" +#~ msgstr "שיטת HTTP" + +#~ msgid "Content Type" +#~ msgstr "סוג תוכן" + +#~ msgid "Max Retries" +#~ msgstr "מקסימום מנסה שוב" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "נסה שוב עיכוב (שניות)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "פסק זמן (שניות)" + +#~ msgid "Regenerate Secret" +#~ msgstr "התחדש סוד" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "אזהרה: יצירת הסוד מחדש תבטל את תוקף הסוד הנוכחי" + +#~ msgid "Manage webhook integrations" +#~ msgstr "נהל שילובי webhook" + +#~ msgid "URL" +#~ msgstr "כתובת אתר" + +#~ msgid "Statistics" +#~ msgstr "סטָטִיסטִיקָה" + +#~ msgid "Total" +#~ msgstr "סַך הַכֹּל" + +#~ msgid "No webhooks configured" +#~ msgstr "לא הוגדרו webhooks" + +#~ msgid "Create Your First Webhook" +#~ msgstr "צור את ה-Webhook הראשון שלך" + +#~ msgid "Webhook details" +#~ msgstr "פרטי Webhook" + +#~ msgid "Test" +#~ msgstr "מִבְחָן" + +#~ msgid "Secret" +#~ msgstr "סוֹד" + +#~ msgid "(truncated)" +#~ msgstr "(קטוע)" + +#~ msgid "Total Deliveries" +#~ msgstr "סך כל משלוחים" + +#~ msgid "Successful" +#~ msgstr "מוּצלָח" + +#~ msgid "Last Delivery" +#~ msgstr "משלוח אחרון" + +#~ msgid "Recent Deliveries" +#~ msgstr "משלוחים אחרונים" + +#~ msgid "Event" +#~ msgstr "מִקרֶה" + +#~ msgid "Attempt" +#~ msgstr "לְנַסוֹת" + +#~ msgid "Response" +#~ msgstr "תְגוּבָה" + +#~ msgid "Time" +#~ msgstr "זְמַן" + +#~ msgid "Retrying" +#~ msgstr "מנסה שוב" + +#~ msgid "No deliveries yet" +#~ msgstr "עדיין אין משלוחים" + +#~ msgid "Send a test webhook event?" +#~ msgstr "לשלוח אירוע בדיקת webhook?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "בדיקת webhook נשלחה בהצלחה!" + +#~ msgid "Error:" +#~ msgstr "שְׁגִיאָה:" + +#~ msgid "Unknown error" +#~ msgstr "שגיאה לא ידועה" + +#~ msgid "Error sending test webhook:" +#~ msgstr "שגיאה בשליחת בדיקת webhook:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "לוח המחוונים של Analytics" + +#~ msgid "Last 7 days" +#~ msgstr "7 ימים אחרונים" + +#~ msgid "Last 30 days" +#~ msgstr "30 הימים האחרונים" + +#~ msgid "Last 90 days" +#~ msgstr "90 הימים האחרונים" + +#~ msgid "Last year" +#~ msgstr "אֶשׁתָקַד" + +#~ msgid "Export all charts as PNG" +#~ msgstr "ייצא כ-JSON" + +#~ msgid "Export Charts" +#~ msgstr "ייצא CSV" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "מדדי מפתח ותובנות לגבי מעקב אחר הזמן שלך" + +#~ msgid "Avg Daily Hours" +#~ msgstr "שעות יומיות ממוצעות" + +#~ msgid "Regular" +#~ msgstr "לַחֲזוֹר" + +#~ msgid "Overtime" +#~ msgstr "זְמַן" + +#~ msgid "Daily Hours Trend" +#~ msgstr "מגמת שעות יומיות" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "ניתן לחיוב לעומת לא ניתן לחיוב" + +#~ msgid "Weekly Trends" +#~ msgstr "מגמות שבועיות" + +#~ msgid "Hours Forecast" +#~ msgstr "שעות לפני" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "תשלומים לאורך זמן" + +#~ msgid "Hours by Time of Day" +#~ msgstr "שעות לפי שעה ביום" + +#~ msgid "Project Efficiency" +#~ msgstr "יעילות פרויקט" + +#~ msgid "User Performance" +#~ msgstr "ביצועי משתמש" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "טעינת התרשימים נכשלה. אנא נסה שוב." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "רענון התרשימים נכשל. אנא נסה שוב." + +#~ msgid "Hour of Day" +#~ msgstr "שעה ביום" + +#~ msgid "Revenue" +#~ msgstr "הַכנָסָה" + +#~ msgid "Forecast" +#~ msgstr "אִתחוּל" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "יְצוּא" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "מדדי מפתח ותובנות ניתנות לפעולה" + +#~ msgid "vs previous period" +#~ msgstr "לעומת תקופה קודמת" + +#~ msgid "of total" +#~ msgstr "בסך הכל" + +#~ msgid "Potential Revenue" +#~ msgstr "הכנסה פוטנציאלית" + +#~ msgid "Avg rate:" +#~ msgstr "שיעור ממוצע:" + +#~ msgid "Trend" +#~ msgstr "מְגַמָה" + +#~ msgid "active projects" +#~ msgstr "פרויקטים פעילים" + +#~ msgid "Insights & Recommendations" +#~ msgstr "תובנות והמלצות" + +#~ msgid "Cumulative" +#~ msgstr "מִצטַבֵּר" + +#~ msgid "Billable Distribution" +#~ msgstr "הפצה לחיוב" + +#~ msgid "Task Status Overview" +#~ msgstr "סקירת מצב המשימה" + +#~ msgid "Tasks Completed" +#~ msgstr "משימות הושלמו" + +#~ msgid "In Progress" +#~ msgstr "בתהליך" + +#~ msgid "To Do" +#~ msgstr "לעשות" + +#~ msgid "Revenue by Project" +#~ msgstr "הכנסה לפי פרויקט" + +#~ msgid "Payments Over Time" +#~ msgstr "תשלומים לאורך זמן" + +#~ msgid "Payment Methods" +#~ msgstr "דרכי תשלום" + +#~ msgid "Revenue vs Payments" +#~ msgstr "הכנסה מול תשלומים" + +#~ msgid "Collection Rate" +#~ msgstr "שיעור איסוף" + +#~ msgid "Project Completion Rate" +#~ msgstr "שיעור סיום הפרויקט" + +#~ msgid "Billable" +#~ msgstr "ניתן לחיוב" + +#~ msgid "Non-Billable" +#~ msgstr "לא ניתן לחיוב" + +#~ msgid "Completed" +#~ msgstr "הושלם" + +#~ msgid "Cancelled" +#~ msgstr "בּוּטלָה" + +#~ msgid "Completion Rate (%)" +#~ msgstr "שיעור השלמה (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "סקירה כללית של תובנות לנייד" + +#~ msgid "Daily Avg" +#~ msgstr "ממוצע יומי" + +#~ msgid "Daily Hours" +#~ msgstr "שעות יומיות" + +#~ msgid "Top Projects" +#~ msgstr "פרויקטים מובילים" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "כניסת זמן" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "שעות" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "לְאַשֵׁר" + +#~ msgid "Reject" +#~ msgstr "לִדחוֹת" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "אושר על ידי" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "פרסם תגובה" + +#~ msgid "Approval comment" +#~ msgstr "פרסם תגובה" + +#~ msgid "Rejection reason" +#~ msgstr "סיבת הדחייה" + +#~ msgid "Track who changed what and when" +#~ msgstr "עקוב אחר מי שינה מה ומתי" + +#~ msgid "Filters" +#~ msgstr "מסננים" + +#~ msgid "Entity Type" +#~ msgstr "סוג ישות" + +#~ msgid "All Types" +#~ msgstr "כל הסוגים" + +#~ msgid "Entity ID" +#~ msgstr "מזהה ישות" + +#~ msgid "All Users" +#~ msgstr "כל המשתמשים" + +#~ msgid "Action" +#~ msgstr "פְּעוּלָה" + +#~ msgid "All Actions" +#~ msgstr "כל הפעולות" + +#~ msgid "Updated" +#~ msgstr "מְעוּדכָּן" + +#~ msgid "Deleted" +#~ msgstr "נמחק" + +#~ msgid "Time Range" +#~ msgstr "טווח זמן" + +#~ msgid "Filter" +#~ msgstr "לְסַנֵן" + +#~ msgid "Timestamp" +#~ msgstr "חותמת זמן" + +#~ msgid "Entity" +#~ msgstr "יֵשׁוּת" + +#~ msgid "Field" +#~ msgstr "שָׂדֶה" + +#~ msgid "Change" +#~ msgstr "לְשַׁנוֹת" + +#~ msgid "Reason" +#~ msgstr "לְנַמֵק" + +#~ msgid "Change Information" +#~ msgstr "שנה מידע" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "בקש מידע" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "בִּטָחוֹן" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (אימות ארגוני)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "סיסמת פורטל" + +#~ msgid "Reset your password" +#~ msgstr "הגדר את הסיסמה שלך" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "ללא שמות משתמש או מיילים" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "שלח אימייל לבדיקה" + +#~ msgid "Back to sign in" +#~ msgstr "חזרה למנהל מערכת" + +#~ msgid "Login" +#~ msgstr "כְּנִיסָה לַמַעֲרֶכֶת" + +#~ msgid "Track time. Stay organized." +#~ msgstr "זמן מעקב. הישאר מאורגן." + +#~ msgid "Sign in to your account" +#~ msgstr "היכנס לחשבון שלך" + +#~ msgid "Demo credentials" +#~ msgstr "פרטי פריט" + +#~ msgid "Forgot your password?" +#~ msgstr "הגדר את הסיסמה שלך" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "שיטת אימות" + +#~ msgid "Sign in" +#~ msgstr "היכנס" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "טיפ: הזן שם משתמש חדש כדי ליצור את החשבון שלך." + +#~ msgid "Or continue with" +#~ msgstr "או להמשיך עם" + +#~ msgid "Single Sign-On" +#~ msgstr "כניסה יחידה" + +#~ msgid "Edit Profile" +#~ msgstr "ערוך פרופיל" + +#~ msgid "Member Since" +#~ msgstr "חבר מאז" + +#~ msgid "Reset password" +#~ msgstr "הגדר סיסמה" + +#~ msgid "Choose a new password" +#~ msgstr "הגדר סיסמה" + +#~ msgid "Enter a new password for your account." +#~ msgstr "הגדר סיסמה עבור חשבון פורטל הלקוחות שלך" + +#~ msgid "New password" +#~ msgstr "הגדר סיסמה" + +#~ msgid "At least 8 characters" +#~ msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות" + +#~ msgid "Confirm password" +#~ msgstr "אשר את הסיסמה" + +#~ msgid "Repeat your new password" +#~ msgstr "הגדר את הסיסמה שלך" + +#~ msgid "Update password" +#~ msgstr "הגדר סיסמה" + +#~ msgid "Enter authentication code" +#~ msgstr "שיטת אימות" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "קוד" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "הגישה לפורטל לקוחות אינה מופעלת עבור חשבונך." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "נָכֶה" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "קוד שנוצר" + +#~ msgid "Enable 2FA" +#~ msgstr "מופעל" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "התראות ותחזית תקציב" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "מעקב אחר תקציבי הפרויקט ותחזית סיום" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "התראות לא מאושרות" + +#~ msgid "Critical Alerts" +#~ msgstr "התראות קריטיות" + +#~ msgid "Projects with Budgets" +#~ msgstr "פרויקטים עם תקציבים" + +#~ msgid "Warning Alerts" +#~ msgstr "התראות אזהרה" + +#~ msgid "Active Alerts" +#~ msgstr "התראות פעילות" + +#~ msgid "Acknowledge" +#~ msgstr "לְהוֹדוֹת" + +#~ msgid "Project Budget Status" +#~ msgstr "מצב תקציב הפרויקט" + +#~ msgid "Budget" +#~ msgstr "תַקצִיב" + +#~ msgid "Consumed" +#~ msgstr "מְאוּכָּל" + +#~ msgid "Remaining" +#~ msgstr "נוֹתָר" + +#~ msgid "Progress" +#~ msgstr "הִתקַדְמוּת" + +#~ msgid "over" +#~ msgstr "מֵעַל" + +#~ msgid "Over Budget" +#~ msgstr "מעל תקציב" + +#~ msgid "Critical" +#~ msgstr "קרִיטִי" + +#~ msgid "Healthy" +#~ msgstr "בָּרִיא" + +#~ msgid "No projects with budgets found" +#~ msgstr "לא נמצאו פרויקטים עם תקציבים" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "התראה אושרה בהצלחה" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "לא ניתן לאשר את ההתראה" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "ניתוח ותחזית תקציבית" + +#~ msgid "Back to Dashboard" +#~ msgstr "חזרה ללוח המחוונים" + +#~ msgid "View Project" +#~ msgstr "צפה בפרויקט" + +#~ msgid "Total Budget" +#~ msgstr "תקציב כולל" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "ניתוח קצב צריבה" + +#~ msgid "Daily Burn Rate" +#~ msgstr "קצב צריבה יומי" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "קצב צריבה שבועי" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "קצב צריבה חודשי" + +#~ msgid "Period Total" +#~ msgstr "סה\"כ תקופה" + +#~ msgid "Based on last" +#~ msgstr "מבוסס על האחרון" + +#~ msgid "days" +#~ msgstr "ימים" + +#~ msgid "No burn rate data available" +#~ msgstr "אין נתוני קצב צריבה זמינים" + +#~ msgid "Completion Estimate" +#~ msgstr "הערכת השלמה" + +#~ msgid "Estimated Completion Date" +#~ msgstr "תאריך סיום משוער" + +#~ msgid "days remaining" +#~ msgstr "ימים שנותרו" + +#~ msgid "Confidence Level" +#~ msgstr "רמת ביטחון עצמי" + +#~ msgid "No completion estimate available" +#~ msgstr "אין אומדן סיום זמין" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "ניתוח מגמת עלויות" + +#~ msgid "Average" +#~ msgstr "מְמוּצָע" + +#~ msgid "Resource Allocation" +#~ msgstr "הקצאת משאבים" + +#~ msgid "Total Cost" +#~ msgstr "עלות כוללת" + +#~ msgid "Hourly Rate" +#~ msgstr "תעריף לשעה" + +#~ msgid "Team Member" +#~ msgstr "חבר צוות" + +#~ msgid "Cost" +#~ msgstr "עֲלוּת" + +#~ msgid "Hours %" +#~ msgstr "שעות %" + +#~ msgid "Cost %" +#~ msgstr "% עלות" + +#~ msgid "Entries" +#~ msgstr "ערכים" + +#~ msgid "Date & Time" +#~ msgstr "תאריך ושעה" + +#~ msgid "Location" +#~ msgstr "מִקוּם" + +#~ msgid "Reminder" +#~ msgstr "תִזכּוֹרֶת" + +#~ msgid "minutes before" +#~ msgstr "דקות לפני" + +#~ msgid "hours before" +#~ msgstr "שעות לפני" + +#~ msgid "days before" +#~ msgstr "ימים לפני" + +#~ msgid "Recurring" +#~ msgstr "מַחזוֹרִי" + +#~ msgid "Until" +#~ msgstr "עַד" + +#~ msgid "Last Updated" +#~ msgstr "עודכן לאחרונה" + +#~ msgid "Back to Calendar" +#~ msgstr "חזרה ליומן" + +#~ msgid "Delete Event" +#~ msgstr "מחק את האירוע" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "האם אתה בטוח שברצונך למחוק את האירוע הזה? לא ניתן לבטל פעולה זו." + +#~ msgid "Edit Event" +#~ msgstr "ערוך אירוע" + +#~ msgid "New Event" +#~ msgstr "אירוע חדש" + +#~ msgid "Title" +#~ msgstr "כּוֹתֶרֶת" + +#~ msgid "Start Date" +#~ msgstr "תאריך התחלה" + +#~ msgid "Start Time" +#~ msgstr "זמן התחלה" + +#~ msgid "End Date" +#~ msgstr "תאריך סיום" + +#~ msgid "End Time" +#~ msgstr "שעת סיום" + +#~ msgid "All Day Event" +#~ msgstr "אירוע כל היום" + +#~ msgid "Event Type" +#~ msgstr "סוג אירוע" + +#~ msgid "Meeting" +#~ msgstr "פְּגִישָׁה" + +#~ msgid "Appointment" +#~ msgstr "פְּגִישָׁה" + +#~ msgid "Deadline" +#~ msgstr "מוֹעֵד אַחֲרוֹן" + +#~ msgid "-- None --" +#~ msgstr "-- אין --" + +#~ msgid "No reminder" +#~ msgstr "אין תזכורת" + +#~ msgid "5 minutes before" +#~ msgstr "5 דקות לפני" + +#~ msgid "15 minutes before" +#~ msgstr "15 דקות לפני" + +#~ msgid "30 minutes before" +#~ msgstr "30 דקות לפני" + +#~ msgid "1 hour before" +#~ msgstr "שעה אחת לפני" + +#~ msgid "1 day before" +#~ msgstr "יום אחד לפני" + +#~ msgid "Color" +#~ msgstr "צֶבַע" + +#~ msgid "Choose a color for this event" +#~ msgstr "בחר צבע לאירוע זה" + +#~ msgid "Private Event" +#~ msgstr "אירוע פרטי" + +#~ msgid "Private events are only visible to you" +#~ msgstr "אירועים פרטיים גלויים רק לך" + +#~ msgid "Recurring Event" +#~ msgstr "אירוע חוזר" + +#~ msgid "This is a recurring event" +#~ msgstr "זהו אירוע שחוזר על עצמו" + +#~ msgid "Recurrence Pattern" +#~ msgstr "דפוס הישנות" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "השתמש בפורמט RRULE (לדוגמה, FREQ=WEEKLY;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "תאריך סיום חזרה" + +#~ msgid "Update Event" +#~ msgstr "עדכן את האירוע" + +#~ msgid "Create Event" +#~ msgstr "צור אירוע" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "הצג ונהל את האירועים, המשימות וערכי הזמן שלך" + +#~ msgid "Day" +#~ msgstr "יְוֹם" + +#~ msgid "Week" +#~ msgstr "שָׁבוּעַ" + +#~ msgid "Month" +#~ msgstr "חוֹדֶשׁ" + +#~ msgid "Today" +#~ msgstr "הַיוֹם" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "טוען לוח שנה..." + +#~ msgid "Event Details" +#~ msgstr "פרטי האירוע" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "ערוך הערת לקוח" + +#~ msgid "Back to Client" +#~ msgstr "חזרה ללקוח" + +#~ msgid "Client:" +#~ msgstr "לָקוּחַ:" + +#~ msgid "Created on" +#~ msgstr "נוצר ב" + +#~ msgid "Last edited on" +#~ msgstr "נערך לאחרונה בתאריך" + +#~ msgid "Note Content" +#~ msgstr "הערה תוכן" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "הערה פנימית גלויה רק ​​לצוות שלך." + +#~ msgid "Mark as important" +#~ msgstr "סמן כחשוב" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "פורטל לקוחות" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "הצג פרטים" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "תָלוּי וְעוֹמֵד" + +#~ msgid "Approved" +#~ msgstr "מְאוּשָׁר" + +#~ msgid "Rejected" +#~ msgstr "נִדחֶה" + +#~ msgid "All" +#~ msgstr "כֹּל" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "הצג פרטים" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "סטטוס אישור" + +#~ msgid "A time entry approval was requested." +#~ msgstr "התבקש אישור" + +#~ msgid "An approval was updated." +#~ msgstr "לא עודכנו פרויקטים" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "ברוך הבא, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "התאמה אישית של קיצורי דרך" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "סטָטִיסטִיקָה" + +#~ msgid "Pending actions" +#~ msgstr "מדורי ניהול" + +#~ msgid "Recent invoices" +#~ msgstr "חשבוניות אחרונות" + +#~ msgid "Recent time entries" +#~ msgstr "ערכים אחרונים בזמן" + +#~ msgid "Select at least one widget." +#~ msgstr "בחר לקוח..." + +#~ msgid "Failed to save." +#~ msgstr "עצירת הטיימר נכשלה" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "עבור אל לוח המחוונים" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "לַחֲזוֹר" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "פרטי חשבונית" + +#~ msgid "Issue Date" +#~ msgstr "תאריך הנפקה" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "איחור של %(days)d ימים בחשבונית זו." + +#~ msgid "Invoice Items" +#~ msgstr "פריטי חשבונית" + +#~ msgid "Quantity" +#~ msgstr "כַּמוּת" + +#~ msgid "Unit Price" +#~ msgstr "מחיר ליחידה" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "חזרה לחשבוניות" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "חשבוניות עבור %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "ללא תשלום" + +#~ msgid "Overdue" +#~ msgstr "באיחור" + +#~ msgid "Amount" +#~ msgstr "סְכוּם" + +#~ msgid "days overdue" +#~ msgstr "ימים באיחור" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "עֲדִיפוּת" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "הוקצה ל" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "לִפְתוֹחַ" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "כניסה לפורטל לקוחות" + +#~ msgid "View your projects and invoices" +#~ msgstr "הצג את הפרויקטים והחשבוניות שלך" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "היכנס לפורטל לקוחות" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "הזן את אישורי הפורטל שלך כדי לגשת לפרויקטים ולחשבוניות שלך" + +#~ msgid "portal_username" +#~ msgstr "portal_username" + +#~ msgid "Enter your password" +#~ msgstr "הזן את הסיסמה שלך" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "נָמוּך" + +#~ msgid "Medium" +#~ msgstr "בֵּינוֹנִי" + +#~ msgid "High" +#~ msgstr "גָבוֹהַ" + +#~ msgid "Urgent" +#~ msgstr "דָחוּף" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "הערות" + +#~ msgid "Add Comment" +#~ msgstr "הוסף תגובה" + +#~ msgid "Your Comment" +#~ msgstr "ההערה שלך" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "פרסם תגובה" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "חזרה לפרויקטים" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "פרויקטים עבור %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "פרטי ציטוט" + +#~ msgid "Valid Until" +#~ msgstr "תקף עד" + +#~ msgid "This quote has expired." +#~ msgstr "פג תוקף הציטוט הזה." + +#~ msgid "Quote Items" +#~ msgstr "ציטוט פריטים" + +#~ msgid "SKU" +#~ msgstr "מק\"ט" + +#~ msgid "Terms & Conditions" +#~ msgstr "תנאים והגבלות" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "קבל ציטוט" + +#~ msgid "Reject Quote" +#~ msgstr "דחה ציטוט" + +#~ msgid "Back to Quotes" +#~ msgstr "חזרה לציטוטים" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "ציטוטים עבור %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "פג תוקף" + +#~ msgid "No quotes found." +#~ msgstr "לא נמצאו ציטוטים." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "קוד פרויקט" + +#~ msgid "Est. / Budget" +#~ msgstr "מעל תקציב" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "תַקצִיר" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "סכום כולל" + +#~ msgid "No tasks yet." +#~ msgstr "לא נבחרו משימות" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "אין פעילות ב-30 הימים האחרונים." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "הגדר סיסמה" + +#~ msgid "Set your password to get started" +#~ msgstr "הגדר את הסיסמה שלך כדי להתחיל" + +#~ msgid "Set Your Password" +#~ msgstr "הגדר את הסיסמה שלך" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "הגדר סיסמה עבור חשבון פורטל הלקוחות שלך" + +#~ msgid "Confirm Password" +#~ msgstr "אשר את הסיסמה" + +#~ msgid "Confirm your password" +#~ msgstr "אשר את הסיסמה שלך" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "ערכי זמן עבור %(client_name)s פרויקטים" + +#~ msgid "All Projects" +#~ msgstr "כל הפרויקטים" + +#~ msgid "From Date" +#~ msgstr "מתאריך" + +#~ msgid "To Date" +#~ msgstr "עד היום" + +#~ msgid "Total entries" +#~ msgstr "סך כל הכניסות" + +#~ msgid "Total hours" +#~ msgstr "סה\"כ שעות" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "חשבוניות אחרונות" + +#~ msgid "View All" +#~ msgstr "הצג הכל" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "סך החשבוניות" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "ערכים אחרונים בזמן" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "ייצוא ל-CSV" + +#~ msgid "Create Client" +#~ msgstr "צור לקוח" + +#~ msgid "Back to Clients" +#~ msgstr "בחזרה ללקוחות" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "הוסף לקוח חדש לניהול פרויקטים וחיובים קשורים." + +#~ msgid "Enter client name" +#~ msgstr "הזן את שם הלקוח" + +#~ msgid "Default Hourly Rate" +#~ msgstr "תעריף שעתי ברירת מחדל" + +#~ msgid "e.g. 75.00" +#~ msgstr "לְמָשָׁל 75.00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "שיעור זה יתמלא אוטומטית בעת יצירת פרויקטים עבור לקוח זה" + +#~ msgid "Supports Markdown" +#~ msgstr "תומך ב-Markdown" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "תיאור קצר של הלקוח או היקף הפרויקט" + +#~ msgid "Contact Person" +#~ msgstr "איש קשר" + +#~ msgid "Primary contact name" +#~ msgstr "שם איש קשר ראשי" + +#~ msgid "contact@client.com" +#~ msgstr "contact@client.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "שעות תשלום חודשיות מראש" + +#~ msgid "e.g. 50" +#~ msgstr "לְמָשָׁל 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "השאר ריק אם ללקוח זה אין הקצאה בתשלום מראש." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "יום איפוס בתשלום מראש" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "היום בחודש בו אופסו השעות בתשלום מראש (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "כתובת הלקוח" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "בחר שם ברור ותיאורי עבור ארגון הלקוח." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "הגדר את התעריף השעתי הסטנדרטי עבור " +#~ "לקוח זה. זה יאוכלס אוטומטית בעת " +#~ "יצירת פרויקטים חדשים." + +#~ msgid "Contact Information" +#~ msgstr "מידע ליצירת קשר" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "הוסף פרטים ליצירת קשר לתקשורת קלה ושמירה על תיעוד." + +#~ msgid "Prepaid Hours" +#~ msgstr "שעות בתשלום מראש" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "קבע את התצורה של שעות כלולות " +#~ "חודשיות ואת יום האיפוס אם ללקוח זה" +#~ " יש חבילה או חבילה בתשלום מראש." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "ספק הקשר לגבי הקשר עם הלקוח או סוגי פרויקטים טיפוסיים." + +#~ msgid "Edit Client" +#~ msgstr "ערוך לקוח" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "אפשר גישה לפורטל עבור לקוח זה. " +#~ "לקוחות יכולים להתחבר עם אישורים משלהם" +#~ " כדי להציג פרויקטים, חשבוניות ורישומי " +#~ "זמן." + +#~ msgid "Enable Client Portal" +#~ msgstr "הפעל את פורטל הלקוחות" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "שם משתמש בפורטל" + +#~ msgid "Unique username for portal login" +#~ msgstr "שם משתמש ייחודי לכניסה לפורטל" + +#~ msgid "Portal Password" +#~ msgstr "סיסמת פורטל" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "השאר ריק כדי לשמור את הסיסמה הנוכחית" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "הגדר סיסמה חדשה או השאר ריק כדי לשמור על עדכניות" + +#~ msgid "Current portal username" +#~ msgstr "שם משתמש נוכחי של הפורטל" + +#~ msgid "Update Client" +#~ msgstr "עדכן לקוח" + +#~ msgid "Send Password Setup Email" +#~ msgstr "שלח אימייל להגדרת סיסמה" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "שלח אימייל אל %(email)s עם קישור להגדרת סיסמת הפורטל שלהם." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "כתובת דוא\"ל נדרשת כדי לשלוח דוא\"ל " +#~ "להגדרת סיסמה. נא להגדיר את כתובת " +#~ "הדוא\"ל של הלקוח למעלה." + +#~ msgid "Client Statistics" +#~ msgstr "סטטיסטיקת לקוחות" + +#~ msgid "Est. Total Cost" +#~ msgstr "הערכה עלות כוללת" + +#~ msgid "Filter Clients" +#~ msgstr "סינון לקוחות" + +#~ msgid "Toggle Filters" +#~ msgstr "החלף מסננים" + +#~ msgid "Hide Filters" +#~ msgstr "הסתר מסננים" + +#~ msgid "Show Filters" +#~ msgstr "הצג מסננים" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "לא נמצאו ערכי זמן ללא חיוב עבור פרויקט זה." + +#~ msgid "No unbilled time" +#~ msgstr "כניסות זמן ללא חיוב" + +#~ msgid "Invoice unbilled time" +#~ msgstr "פריטי חשבונית" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "לסמן את הלקוח כלא פעיל?" + +#~ msgid "Change Client Status" +#~ msgstr "שנה סטטוס לקוח" + +#~ msgid "Mark Inactive" +#~ msgstr "סמן לא פעיל" + +#~ msgid "Activate client?" +#~ msgstr "להפעיל את הלקוח?" + +#~ msgid "Activate Client" +#~ msgstr "הפעל את הלקוח" + +#~ msgid "Delete Client" +#~ msgstr "מחק לקוח" + +#~ msgid "Client details and associated projects." +#~ msgstr "פרויקטים טוטאליים ופעילים" + +#~ msgid "Manage" +#~ msgstr "לְנַהֵל" + +#~ msgid "Primary" +#~ msgstr "יְסוֹדִי" + +#~ msgid "more contact(s)" +#~ msgstr "אנשי קשר נוספים" + +#~ msgid "No contacts yet" +#~ msgstr "עדיין אין אנשי קשר" + +#~ msgid "Add Contact" +#~ msgstr "הוסף איש קשר" + +#~ msgid "Legacy Contact Info" +#~ msgstr "פרטי קשר מדור קודם" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "התוכנית כוללת %(hours)s שעות לכל מחזור. מאפס ביום %(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "תחילת מחזור נוכחי" + +#~ msgid "Remaining hours" +#~ msgstr "שעות שנותרו" + +#~ msgid "h" +#~ msgstr "ח" + +#~ msgid "Consumed this cycle" +#~ msgstr "צרכו את המחזור הזה" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "לקוח גלוי" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "בארכיון" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "הערות פנימיות" + +#~ msgid "Add Note" +#~ msgstr "הוסף הערה" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "הוסף הערה פנימית על לקוח זה..." + +#~ msgid "Save Note" +#~ msgstr "שמור הערה" + +#~ msgid "edited" +#~ msgstr "עָרוּך" + +#~ msgid "Important" +#~ msgstr "חָשׁוּב" + +#~ msgid "Unmark" +#~ msgstr "בטל את הסימון" + +#~ msgid "Mark Important" +#~ msgstr "סמן חשוב" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "עדיין אין הערות. הוסף הערה כדי לעקוב אחר מידע חשוב על לקוח זה." + +#~ msgid "Estimated total" +#~ msgstr "ערך משוער" + +#~ msgid "Create a draft invoice?" +#~ msgstr "צור חשבונית" + +#~ msgid "Create invoice" +#~ msgstr "צור חשבונית" + +#~ msgid "Could not create invoice." +#~ msgstr "צור חשבונית" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "האם אתה בטוח שברצונך למחוק הערה זו?" + +#~ msgid "Delete Note" +#~ msgstr "מחק הערה" + +#~ msgid "Edited on" +#~ msgstr "נערך ב-" + +#~ msgid "Reply" +#~ msgstr "תְגוּבָה" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "כתוב את תשובתך..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "שתף את המחשבות, העדכונים או השאלות שלך..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "אתה יכול להשתמש במעברי שורות כדי לעצב את ההערה שלך." + +#~ msgid "Add Image" +#~ msgstr "הוסף תמונה" + +#~ msgid "No comments yet" +#~ msgstr "אין תגובות עדיין" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "התחל את השיחה על ידי הוספת התגובה הראשונה." + +#~ msgid "Add First Comment" +#~ msgstr "הוסף תגובה ראשונה" + +#~ msgid "Edit Comment" +#~ msgstr "ערוך תגובה" + +#~ msgid "Back" +#~ msgstr "בְּחֲזָרָה" + +#~ msgid "Editing comment on:" +#~ msgstr "עריכת הערה על:" + +#~ msgid "Originally posted on" +#~ msgstr "פורסם במקור ב" + +#~ msgid "Comment Content" +#~ msgstr "תוכן תגובה" + +#~ msgid "All Activities" +#~ msgstr "כל הפעילויות" + +#~ msgid "Time Templates" +#~ msgstr "תבניות זמן" + +#~ msgid "No recent activity" +#~ msgstr "אין פעילות אחרונה" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "הפעילות תופיע כאן תוך כדי עבודה" + +#~ msgid "Load More" +#~ msgstr "טען עוד" + +#~ msgid "Failed to load activities" +#~ msgstr "טעינת הפעילויות נכשלה" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "בחר לקוח..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "נַעֲשָׂה" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "מרכז העזרה של TimeTracker" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "בַּיִת" + +#~ msgid "Pagination" +#~ msgstr "עימוד המשימות שלי" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "שִׂיחָה" + +#~ msgid "Message" +#~ msgstr "הוֹדָעָה" + +#~ msgid "Direction" +#~ msgstr "כיוון" + +#~ msgid "Outbound" +#~ msgstr "יוצא" + +#~ msgid "Inbound" +#~ msgstr "נכנסת" + +#~ msgid "Subject" +#~ msgstr "נוֹשֵׂא" + +#~ msgid "Scheduled" +#~ msgstr "מתוזמן" + +#~ msgid "Follow-up Date" +#~ msgstr "תאריך מעקב" + +#~ msgid "Content/Notes" +#~ msgstr "תוכן/הערות" + +#~ msgid "Save Communication" +#~ msgstr "שמור תקשורת" + +#~ msgid "First Name" +#~ msgstr "שֵׁם פְּרַטִי" + +#~ msgid "Last Name" +#~ msgstr "שֵׁם מִשׁפָּחָה" + +#~ msgid "Mobile" +#~ msgstr "נייד" + +#~ msgid "Department" +#~ msgstr "מַחלָקָה" + +#~ msgid "Contact" +#~ msgstr "מַגָע" + +#~ msgid "Billing" +#~ msgstr "חיוב" + +#~ msgid "Technical" +#~ msgstr "טֶכנִי" + +#~ msgid "Set as primary contact" +#~ msgstr "הגדר כאיש קשר ראשי" + +#~ msgid "Tags" +#~ msgstr "תגים" + +#~ msgid "Save Contact" +#~ msgstr "שמור איש קשר" + +#~ msgid "Set Primary" +#~ msgstr "הגדר ראשי" + +#~ msgid "No contacts found" +#~ msgstr "לא נמצאו אנשי קשר" + +#~ msgid "Add First Contact" +#~ msgstr "הוסף איש קשר ראשון" + +#~ msgid "Primary Contact" +#~ msgstr "איש קשר ראשי" + +#~ msgid "Communication History" +#~ msgstr "היסטוריית תקשורת" + +#~ msgid "Add Communication" +#~ msgstr "הוסף תקשורת" + +#~ msgid "No communications recorded" +#~ msgstr "לא נרשמה תקשורת" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "לְהַפְעִיל" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "שם העסקה" + +#~ msgid "Select Client" +#~ msgstr "בחר לקוח" + +#~ msgid "Select Contact" +#~ msgstr "בחר איש קשר" + +#~ msgid "Stage" +#~ msgstr "שָׁלָב" + +#~ msgid "Deal Value" +#~ msgstr "ערך עסקה" + +#~ msgid "Win Probability" +#~ msgstr "הסתברות זכייה" + +#~ msgid "Expected Close Date" +#~ msgstr "תאריך סגירה צפוי" + +#~ msgid "Related Quote" +#~ msgstr "ציטוט קשור" + +#~ msgid "Select Quote" +#~ msgstr "בחר הצעת מחיר" + +#~ msgid "Save Deal" +#~ msgstr "שמור עסקה" + +#~ msgid "Won" +#~ msgstr "ווֹן" + +#~ msgid "Lost" +#~ msgstr "אָבֵד" + +#~ msgid "All Stages" +#~ msgstr "כל השלבים" + +#~ msgid "Value" +#~ msgstr "עֵרֶך" + +#~ msgid "Probability" +#~ msgstr "הִסתַבְּרוּת" + +#~ msgid "Expected Close" +#~ msgstr "סגור צפוי" + +#~ msgid "No deals found" +#~ msgstr "לא נמצאו עסקאות" + +#~ msgid "Create First Deal" +#~ msgstr "צור עסקה ראשונה" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "פרויקט קשור" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "היסטוריית יעדים" + +#~ msgid "View full history" +#~ msgstr "צפה בפרטים המלאים" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "הזכירו אותך" + +#~ msgid "View Task & Reply" +#~ msgstr "הצג משימה ותשובה" + +#~ msgid "Invoice" +#~ msgstr "חֶשׁבּוֹנִית" + +#~ msgid "Invoice Overdue" +#~ msgstr "חשבונית באיחור" + +#~ msgid "View Invoice" +#~ msgstr "צפה בחשבונית" + +#~ msgid "Quote" +#~ msgstr "לְצַטֵט" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "אישור הצעת מחיר נדחה" + +#~ msgid "View Quote" +#~ msgstr "צפה בציטוט" + +#~ msgid "Approval Requested" +#~ msgstr "התבקש אישור" + +#~ msgid "Review Quote" +#~ msgstr "סקירת הצעת מחיר" + +#~ msgid "Quote Approved" +#~ msgstr "הצעת המחיר אושרה" + +#~ msgid "Quote Expired" +#~ msgstr "פג תוקף הציטוט" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "ציטוט יפוג בקרוב" + +#~ msgid "Quote Sent" +#~ msgstr "ציטוט נשלח" + +#~ msgid "Task Assignment" +#~ msgstr "הקצאת משימה" + +#~ msgid "View Task" +#~ msgstr "צפה במשימה" + +#~ msgid "Test Details" +#~ msgstr "פרטי הבדיקה" + +#~ msgid "Your Weekly Summary" +#~ msgstr "הסיכום השבועי שלך" + +#~ msgid "400 Bad Request" +#~ msgstr "400 בקשה רעה" + +#~ msgid "Invalid Request" +#~ msgstr "בקשה לא חוקית" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "הבקשה שביצעת אינה חוקית או מכילה שגיאות. זה יכול לנבוע מ:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "נתוני טופס חסרים או לא חוקיים" + +#~ msgid "Malformed request parameters" +#~ msgstr "פרמטרי בקשה שגויים" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "אין לך הרשאה לגשת למשאב זה. זה יכול לנבוע מ:" + +#~ msgid "Insufficient privileges" +#~ msgstr "אין מספיק הרשאות" + +#~ msgid "Not logged in" +#~ msgstr "לא מחובר" + +#~ msgid "Resource access restrictions" +#~ msgstr "הגבלות גישה למשאבים" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "משהו השתבש אצלנו. אנא נסה שוב מאוחר יותר." + +#~ msgid "Try Again" +#~ msgstr "נסה שוב" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "אירעה שגיאה במהלך עיבוד הבקשה שלך." + +#~ msgid "Refresh Page" +#~ msgstr "רענן עמוד" + +#~ msgid "Go to Login" +#~ msgstr "עבור אל התחברות" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "למשל, נסיעות, ארוחות, ציוד משרדי" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "למשל, נסיעות, ארוחות" + +#~ msgid "Brief description of this category..." +#~ msgstr "תיאור קצר של קטגוריה זו..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "למשל, פא-מטוס, פא-כלים" + +#~ msgid "e.g., 19.00" +#~ msgstr "למשל, 19.00" + +#~ msgid "Category" +#~ msgstr "קָטֵגוֹרִיָה" + +#~ msgid "Basic Information" +#~ msgstr "מידע בסיסי" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "למשל, טיסה לברלין" + +#~ msgid "Additional details about the expense..." +#~ msgstr "פרטים נוספים על ההוצאה..." + +#~ msgid "Select Category" +#~ msgstr "קָטֵגוֹרִיָה" + +#~ msgid "Amount Details" +#~ msgstr "פרטי תשלום" + +#~ msgid "Association" +#~ msgstr "מִקוּם" + +#~ msgid "Payment Details" +#~ msgstr "פרטי תשלום" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "למשל, לופטהנזה" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "מידע נוסף" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "מספר קבלה/חשבונית" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "למשל, INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "למשל, כנס, פגישת לקוח, דחוף" + +#~ msgid "Additional notes..." +#~ msgstr "הערות נוספות..." + +#~ msgid "Options" +#~ msgstr "אופציונלי" + +#~ msgid "Filter Expenses" +#~ msgstr "סינון הוצאות" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "מחק הוצאות נבחרות" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "שנה סטטוס עבור הוצאות נבחרות" + +#~ msgid "Associated With" +#~ msgstr "משויך ל" + +#~ msgid "Reject Expense" +#~ msgstr "דחיית הוצאה" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "הסבר מדוע הוצאה זו נדחית..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "האם אתה בטוח שברצונך למחוק הוצאה זו?" + +#~ msgid "Delete Expense" +#~ msgstr "מחק הוצאות" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "ייבוא/ייצוא נתונים" + +#~ msgid "Import/Export" +#~ msgstr "ייבוא/ייצוא" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "ייבא נתונים ממעקבי זמן אחרים או " +#~ "ייצא את הנתונים שלך לצורך תאימות " +#~ "GDPR וגיבויים" + +#~ msgid "Import Data" +#~ msgstr "ייבוא ​​נתונים" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "ייבא ערכי זמן מקובץ CSV" + +#~ msgid "Choose CSV File" +#~ msgstr "בחר קובץ CSV" + +#~ msgid "Download Template" +#~ msgstr "הורד תבנית" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "ייבוא ​​ממסלול Toggl" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "ייבא ערכי זמן ממסלול Toggl" + +#~ msgid "Import from Toggl" +#~ msgstr "ייבוא ​​מ- Toggl" + +#~ msgid "Import from Harvest" +#~ msgstr "ייבוא ​​מקציר" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "יבא ערכי זמן מ-Harvest" + +#~ msgid "Restore from Backup" +#~ msgstr "שחזר מגיבוי" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "ייבוא ​​היסטוריית" + +#~ msgid "Export Data" +#~ msgstr "ייצוא נתונים" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "ייצוא נתונים מלא (GDPR)" + +#~ msgid "Export all your personal data" +#~ msgstr "ייצא את כל הנתונים האישיים שלך" + +#~ msgid "Export as JSON" +#~ msgstr "ייצא כ-JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "ייצא כ-ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "ייצוא מסונן" + +#~ msgid "Export specific data with filters" +#~ msgstr "ייצא נתונים ספציפיים עם מסננים" + +#~ msgid "Export with Filters" +#~ msgstr "ייצוא עם מסננים" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "צור גיבוי מלא של מסד הנתונים" + +#~ msgid "Export History" +#~ msgstr "ייצוא היסטוריה" + +#~ msgid "API Token" +#~ msgstr "אסימון API" + +#~ msgid "Workspace ID" +#~ msgstr "מזהה סביבת עבודה" + +#~ msgid "Import" +#~ msgstr "יְבוּא" + +#~ msgid "Account ID" +#~ msgstr "מזהה חשבון" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "שילוב זמן" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "אֶשׁתָקַד" + +#~ msgid "Last status" +#~ msgstr "עדכון סטטוס" + +#~ msgid "Credentials" +#~ msgstr "פרטים" + +#~ msgid "Last error" +#~ msgstr "אֶשׁתָקַד" + +#~ msgid "Partial" +#~ msgstr "חֶלקִי" + +#~ msgid "Needs refresh" +#~ msgstr "לְרַעֲנֵן" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "צור אסימון API" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "צור אסימון API" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "השאר ריק כדי לשמור על עדכניות" + +#~ msgid "Enter API secret" +#~ msgstr "התחדש סוד" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "פריט מלאי" + +#~ msgid "Select Item" +#~ msgstr "בחר פריט" + +#~ msgid "Warehouse" +#~ msgstr "מַחסָן" + +#~ msgid "Select Warehouse" +#~ msgstr "בחר מחסן" + +#~ msgid "Adjustment Quantity" +#~ msgstr "כמות התאמה" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "השתמש בערכים חיוביים כדי להגדיל את המניה, בערכים שליליים כדי להקטין" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "למשל, תיקון ספירה פיזית, נזק, פריטים שנמצאו" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "פרטים נוספים על התאמה זו" + +#~ msgid "Record Adjustment" +#~ msgstr "התאמת שיא" + +#~ msgid "All Warehouses" +#~ msgstr "כל המחסנים" + +#~ msgid "All Items" +#~ msgstr "כל הפריטים" + +#~ msgid "Date From" +#~ msgstr "תאריך מ" + +#~ msgid "Date To" +#~ msgstr "תאריך ל" + +#~ msgid "Item" +#~ msgstr "פָּרִיט" + +#~ msgid "No adjustments found." +#~ msgstr "לא נמצאו התאמות." + +#~ msgid "On Hand" +#~ msgstr "בהישג יד" + +#~ msgid "Reorder Point" +#~ msgstr "נקודת סדר מחדש" + +#~ msgid "Shortfall" +#~ msgstr "גֵרוּעַ" + +#~ msgid "Reorder Qty" +#~ msgstr "הזמנה מחדש של כמות" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "אין התראות על מלאי נמוך. כל הפריטים נמצאים מעל לנקודת ההזמנה מחדש." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "השתמש בערכים חיוביים עבור תוספות, שליליות עבור הסרות" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "סוג תנועה" + +#~ msgid "Return" +#~ msgstr "לַחֲזוֹר" + +#~ msgid "Waste" +#~ msgstr "לְבַזבֵּז" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "למשל, תיקון ספירה פיזית" + +#~ msgid "Record Movement" +#~ msgstr "שיא תנועה" + +#~ msgid "Reference Type" +#~ msgstr "סוג התייחסות" + +#~ msgid "Manual" +#~ msgstr "יָדָנִי" + +#~ msgid "Unit Cost" +#~ msgstr "עלות יחידה" + +#~ msgid "Reference" +#~ msgstr "הַפנָיָה" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "לא נמצאו תנועות במניות." + +#~ msgid "Supplier" +#~ msgstr "סַפָּק" + +#~ msgid "Select Supplier" +#~ msgstr "בחר ספק" + +#~ msgid "Order Date" +#~ msgstr "תאריך הזמנה" + +#~ msgid "Expected Delivery Date" +#~ msgstr "תאריך אספקה ​​צפוי" + +#~ msgid "Notes visible to supplier" +#~ msgstr "הערות גלויות לספק" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "הערות פנימיות (לא גלויות לספק)" + +#~ msgid "Items" +#~ msgstr "פריטים" + +#~ msgid "Add Item" +#~ msgstr "הוסף פריט" + +#~ msgid "Qty" +#~ msgstr "כמות" + +#~ msgid "Supplier SKU" +#~ msgstr "מק\"ט של ספק" + +#~ msgid "Create Purchase Order" +#~ msgstr "צור הזמנת רכש" + +#~ msgid "Draft" +#~ msgstr "טְיוּטָה" + +#~ msgid "Sent" +#~ msgstr "נשלח" + +#~ msgid "Confirmed" +#~ msgstr "מְאוּשָׁר" + +#~ msgid "Received" +#~ msgstr "התקבל" + +#~ msgid "All Suppliers" +#~ msgstr "כל הספקים" + +#~ msgid "PO Number" +#~ msgstr "מספר PO" + +#~ msgid "Expected Delivery" +#~ msgstr "משלוח צפוי" + +#~ msgid "No purchase orders found." +#~ msgstr "לא נמצאו הזמנות רכש." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "האם אתה בטוח שברצונך לבטל הזמנת רכש זו?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "האם אתה בטוח שברצונך למחוק את הזמנת הרכש הזו?" + +#~ msgid "Purchase Order Details" +#~ msgstr "פרטי הזמנת רכש" + +#~ msgid "Received Date" +#~ msgstr "תאריך קבלת" + +#~ msgid "Quantity Ordered" +#~ msgstr "כמות שהוזמנה" + +#~ msgid "Quantity Received" +#~ msgstr "כמות שהתקבלה" + +#~ msgid "Line Total" +#~ msgstr "סה\"כ שורה" + +#~ msgid "Shipping" +#~ msgstr "מִשׁלוֹחַ" + +#~ msgid "Receive Purchase Order" +#~ msgstr "קבלת הזמנת רכש" + +#~ msgid "Mark as Received" +#~ msgstr "סמן כמתקבל" + +#~ msgid "No items in this purchase order." +#~ msgstr "אין פריטים בהזמנת רכש זו." + +#~ msgid "Total Items" +#~ msgstr "סך הכל פריטים" + +#~ msgid "Total Warehouses" +#~ msgstr "סך הכל מחסנים" + +#~ msgid "Total Inventory Value" +#~ msgstr "ערך מלאי כולל" + +#~ msgid "Low Stock Items" +#~ msgstr "פריטים במלאי נמוך" + +#~ msgid "Available Reports" +#~ msgstr "דוחות זמינים" + +#~ msgid "Stock Valuation" +#~ msgstr "הערכת שווי מלאי" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "הצג את ערך המלאי לפי מחסן" + +#~ msgid "Movement History" +#~ msgstr "היסטוריית תנועה" + +#~ msgid "Detailed movement log" +#~ msgstr "יומן תנועה מפורט" + +#~ msgid "Turnover Analysis" +#~ msgstr "ניתוח מחזור" + +#~ msgid "Inventory turnover rates" +#~ msgstr "שיעורי מחזור מלאי" + +#~ msgid "Low Stock Report" +#~ msgstr "דוח מלאי נמוך" + +#~ msgid "Items below reorder point" +#~ msgstr "פריטים מתחת לנקודת ההזמנה מחדש" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "נמצאו %(count)s פריטים מתחת לנקודת ההזמנה מחדש שלהם." + +#~ msgid "Quantity On Hand" +#~ msgstr "כמות בהישג יד" + +#~ msgid "Reorder Quantity" +#~ msgstr "הזמנה מחדש של כמות" + +#~ msgid "Create PO" +#~ msgstr "צור PO" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "כל רמות המלאי טובות" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "אין פריטים כרגע מתחת לנקודת ההזמנה מחדש שלהם." + +#~ msgid "No movements found." +#~ msgstr "לא נמצאו תנועות." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "שיעור מחזור מציין כמה פעמים מלאי " +#~ "נמכר והוחלף בשנה. שיעורים גבוהים יותר" +#~ " מעידים על פריטים שנעים מהר יותר." + +#~ msgid "Total Sold" +#~ msgstr "סך הכל נמכר" + +#~ msgid "Avg Stock Level" +#~ msgstr "רמת מלאי ממוצעת" + +#~ msgid "Turnover Rate" +#~ msgstr "קצב תחלופה" + +#~ msgid "Fast Moving" +#~ msgstr "תנועה מהירה" + +#~ msgid "Normal" +#~ msgstr "נוֹרמָלִי" + +#~ msgid "Slow Moving" +#~ msgstr "תנועה איטית" + +#~ msgid "Very Slow" +#~ msgstr "מאוד איטי" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "לא נמצאו נתוני מכירות עבור התקופה שנבחרה." + +#~ msgid "Inventory Valuation" +#~ msgstr "הערכת שווי מלאי" + +#~ msgid "Total Value" +#~ msgstr "ערך כולל" + +#~ msgid "No items found with cost information." +#~ msgstr "לא נמצאו פריטים עם פרטי עלות." + +#~ msgid "Reserved" +#~ msgstr "שָׁמוּר" + +#~ msgid "Fulfilled" +#~ msgstr "מילא" + +#~ msgid "Reserved At" +#~ msgstr "שמור ב-" + +#~ msgid "Expires At" +#~ msgstr "יפוג בשעה" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "למלא את ההזמנה הזו?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "לבטל את ההזמנה הזו?" + +#~ msgid "No reservations found." +#~ msgstr "לא נמצאו הזמנות." + +#~ msgid "Unit" +#~ msgstr "יְחִידָה" + +#~ msgid "Default Cost" +#~ msgstr "עלות ברירת מחדל" + +#~ msgid "Default Price" +#~ msgstr "מחיר ברירת מחדל" + +#~ msgid "Image URL" +#~ msgstr "כתובת האתר של התמונה" + +#~ msgid "Track Inventory" +#~ msgstr "עקוב אחר מלאי" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "נהל מספר ספקים עבור פריט זה בתמחור שונה." + +#~ msgid "MOQ" +#~ msgstr "MOQ" + +#~ msgid "Lead Time (days)" +#~ msgstr "זמן אספקה ​​(ימים)" + +#~ msgid "Preferred" +#~ msgstr "מועדף" + +#~ msgid "Add Supplier" +#~ msgstr "הוסף ספק" + +#~ msgid "No movement history found for this item." +#~ msgstr "לא נמצאה היסטוריית תנועה עבור פריט זה." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "מק\"ט, שם, ברקוד..." + +#~ msgid "Active Only" +#~ msgstr "פעיל בלבד" + +#~ msgid "Total Qty" +#~ msgstr "סה\"כ כמות" + +#~ msgid "Available" +#~ msgstr "זָמִין" + +#~ msgid "Low Stock" +#~ msgstr "מלאי נמוך" + +#~ msgid "No stock items found." +#~ msgstr "לא נמצאו פריטים במלאי." + +#~ msgid "Item Details" +#~ msgstr "פרטי פריט" + +#~ msgid "Trackable" +#~ msgstr "ניתן למעקב" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "רמות המלאי לפי מחסן" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "תנועות מניות אחרונות" + +#~ msgid "Total On Hand" +#~ msgstr "סך הכל בהישג יד" + +#~ msgid "Total Reserved" +#~ msgstr "סה\"כ שמורות" + +#~ msgid "Total Available" +#~ msgstr "סך הכל זמין" + +#~ msgid "Low Stock Alert" +#~ msgstr "התראת מלאי נמוך" + +#~ msgid "This item is not trackable." +#~ msgstr "פריט זה אינו ניתן למעקב." + +#~ msgid "Active Reservations" +#~ msgstr "הזמנות פעילות" + +#~ msgid "Quantity Reserved" +#~ msgstr "כמות שמורה" + +#~ msgid "Last Counted" +#~ msgstr "נספר אחרון" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "לא נמצא מלאי עבור פריט זה באף מחסן." + +#~ msgid "No stock levels found." +#~ msgstr "לא נמצאו רמות מלאי." + +#~ msgid "Low Stock Only" +#~ msgstr "מלאי נמוך בלבד" + +#~ msgid "Oversold" +#~ msgstr "מכירת יתר" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "לא נמצאו פריטי מלאי במחסן זה." + +#~ msgid "Supplier Code" +#~ msgstr "קוד ספק" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "קוד ייחודי עבור ספק זה (למשל, SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "תנאי תשלום" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "למשל, Net 30, Net 60" + +#~ msgid "Code, name, email" +#~ msgstr "קוד, שם, מייל" + +#~ msgid "No suppliers found." +#~ msgstr "לא נמצאו ספקים." + +#~ msgid "Supplier Details" +#~ msgstr "פרטי ספק" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "פריטי מלאי של ספק זה" + +#~ msgid "Lead Time" +#~ msgstr "זמן אספקה" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "אין פריטי מלאי המשויכים לספק זה." + +#~ msgid "Preferred Items" +#~ msgstr "פריטים מועדפים" + +#~ msgid "From Warehouse" +#~ msgstr "ממחסן" + +#~ msgid "Select Source Warehouse" +#~ msgstr "בחר במחסן מקור" + +#~ msgid "To Warehouse" +#~ msgstr "למחסן" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "בחר במחסן יעד" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "הערות אופציונליות לגבי העברה זו" + +#~ msgid "Create Transfer" +#~ msgstr "צור העברה" + +#~ msgid "No transfers found." +#~ msgstr "לא נמצאו העברות." + +#~ msgid "Warehouse Code" +#~ msgstr "קוד מחסן" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "קוד ייחודי למחסן זה (לדוגמה, WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "אימייל ליצירת קשר" + +#~ msgid "Contact Phone" +#~ msgstr "טלפון ליצירת קשר" + +#~ msgid "No warehouses found." +#~ msgstr "לא נמצאו מחסנים." + +#~ msgid "Warehouse Details" +#~ msgstr "פרטי מחסן" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "אין פריטים במלאי במחסן זה." + +#~ msgid "Total Quantity" +#~ msgstr "כמות כוללת" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "בקש אישור" + +#~ msgid "Approval Status" +#~ msgstr "סטטוס אישור" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "סיבת הדחייה" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "פעולות מהירות" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "ייצוא לאקסל" + +#~ msgid "Partially Paid" +#~ msgstr "בתשלום חלקית" + +#~ msgid "Fully Paid" +#~ msgstr "בתשלום מלא" + +#~ msgid "Create Invoice" +#~ msgstr "צור חשבונית" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "הפק חשבונית חדשה עבור פרויקט ולקוח" + +#~ msgid "Select a project" +#~ msgstr "בחר פרויקט" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "בחירת פרויקט תמלא אוטומטית את פרטי הלקוח" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "שיעור מס (%)" + +#~ msgid "Tips" +#~ msgstr "טיפים" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "בחר את הפרויקט הנכון למילוי אוטומטי של פרטי הלקוח." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "אתה יכול להתאים אישית הערות ותנאים לפני שליחת החשבונית." + +#~ msgid "Edit Invoice" +#~ msgstr "ערוך חשבונית" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "עדכן את פרטי החשבונית, הפריטים והתנאים" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "שירותים מבוססי זמן ועבודה לפי שעה" + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "בחר פריט מלאי" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "למשל, שירותי פיתוח אתרים" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "הסר פריט" + +#~ msgid "Items Subtotal" +#~ msgstr "סכום משנה של פריטים" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "הוצאות לחיוב כגון נסיעות, ארוחות וחומרים" + +#~ msgid "Add Expense" +#~ msgstr "הוסף הוצאה" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "למשל, נסיעה לפגישת לקוחות" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "הוצאה מקושרת - לא ניתן לערוך את הכותרת" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "הוצאה מקושרת - לא ניתן לערוך את התיאור" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "הוצאה מקושרת - לא ניתן לערוך קטגוריה" + +#~ msgid "Travel" +#~ msgstr "לִנְסוֹעַ" + +#~ msgid "Meals" +#~ msgstr "ארוחות" + +#~ msgid "Accommodation" +#~ msgstr "דִיוּר" + +#~ msgid "Supplies" +#~ msgstr "אספקה" + +#~ msgid "Software" +#~ msgstr "תוֹכנָה" + +#~ msgid "Equipment" +#~ msgstr "צִיוּד" + +#~ msgid "Services" +#~ msgstr "שירותים" + +#~ msgid "Marketing" +#~ msgstr "שיווק" + +#~ msgid "Training" +#~ msgstr "הַדְרָכָה" + +#~ msgid "Other" +#~ msgstr "אַחֵר" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "הוצאה צמודה - לא ניתן לערוך סכום" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "הוצאה מקושרת - לא ניתן לערוך תאריך" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "בטל קישור הוצאות לחשבונית" + +#~ msgid "Expenses Subtotal" +#~ msgstr "סה\"כ הוצאות" + +#~ msgid "Extra Goods" +#~ msgstr "סחורה נוספת" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "מוצרים, חומרים, רישיונות וסחורות אחרות" + +#~ msgid "Add Good" +#~ msgstr "הוסף טוב" + +#~ msgid "Price" +#~ msgstr "מְחִיר" + +#~ msgid "e.g., Software License" +#~ msgstr "למשל, רישיון תוכנה" + +#~ msgid "Product" +#~ msgstr "מוּצָר" + +#~ msgid "Service" +#~ msgstr "שֵׁרוּת" + +#~ msgid "Material" +#~ msgstr "חוֹמֶר" + +#~ msgid "Remove good" +#~ msgstr "הסר טוב" + +#~ msgid "Goods Subtotal" +#~ msgstr "סה\"כ סחורות" + +#~ msgid "Live Preview" +#~ msgstr "תצוגה מקדימה חיה" + +#~ msgid "Payment" +#~ msgstr "תַשְׁלוּם" + +#~ msgid "Goods" +#~ msgstr "סְחוֹרוֹת" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "הפק מזמן/עלויות" + +#~ msgid "Record Payment" +#~ msgstr "שיא תשלום" + +#~ msgid "Export PDF" +#~ msgstr "ייצוא PDF" + +#~ msgid "Export CSV" +#~ msgstr "ייצא CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "חשבונית כפולה" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "האם אתה בטוח שברצונך לבטל את הקישור של הוצאה זו מהחשבונית?" + +#~ msgid "Unlink Expense" +#~ msgstr "ביטול קישור הוצאות" + +#~ msgid "Unlink" +#~ msgstr "בטל את הקישור" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "הוסף לפחות פריט, הוצאה או מוצר נוסף אחד לחשבונית" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "הפק מזמן, עלויות וסחורות" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "בחר כניסות זמן ללא חיוב, עלויות " +#~ "פרויקט וסחורות נוספות להוספה לחשבונית זו" + +#~ msgid "Back to Edit" +#~ msgstr "חזרה לעריכה" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "כניסות זמן ללא חיוב" + +#~ msgid "entries" +#~ msgstr "ערכים" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "לא נמצאו ערכי זמן ללא חיוב עבור פרויקט זה." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "עלויות פרויקט ללא חשבונית" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "לא נמצאו עלויות ללא חשבונית עבור פרויקט זה." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "הוצאות הניתנות לחיוב ללא חשבונית" + +#~ msgid "Vendor" +#~ msgstr "מוֹכֵר" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "לא נמצאו הוצאות ניתנות לחיוב ללא חשבונית עבור פרויקט זה." + +#~ msgid "Project Extra Goods" +#~ msgstr "פרויקט סחורה נוספת" + +#~ msgid "No extra goods found for this project." +#~ msgstr "לא נמצאו מוצרים נוספים עבור הפרויקט הזה." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "הוסף נבחרים לחשבונית" + +#~ msgid "Selection Summary" +#~ msgstr "סיכום בחירה" + +#~ msgid "Total available hours" +#~ msgstr "סה\"כ שעות פנויות" + +#~ msgid "Total available costs" +#~ msgstr "סך העלויות הזמינות" + +#~ msgid "Total available expenses" +#~ msgstr "סך ההוצאות הזמינות" + +#~ msgid "Total available goods" +#~ msgstr "סך הסחורה הזמינה" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "סקירת שעות בתשלום מראש" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "התוכנית כוללת %(hours)s שעות לכל מחזור (מתאפסים ביום %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "נצרך: %(consumed)s h • נשאר: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "עדיין לא נרשם שימוש בתשלום מראש עבור התקופה שנבחרה." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "אתה יכול לבחור מספר כניסות זמן, עלויות, הוצאות וסחורות נוספות." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "ערכי זמן מקובצים לפי משימה או פרויקט בעת יצירת הפריט." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "עלויות וסחורות נוספות מתווספות כפריטי חשבונית בודדים." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "ההוצאות צמודות לחשבונית ומופיעות בסעיף נפרד." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "אנא בחר פעם אחת לפחות כניסה, עלות, הוצאה או מוצר נוסף" + +#~ msgid "Filter Invoices" +#~ msgstr "סינון חשבוניות" + +#~ msgid "Invoice number or client" +#~ msgstr "מספר חשבונית או לקוח" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "מחק חשבוניות נבחרות" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "שנה סטטוס עבור חשבוניות נבחרות" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "מחק חשבונית" + +#~ msgid "Warning:" +#~ msgstr "אַזהָרָה:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "האם אתה בטוח שברצונך למחוק חשבונית" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "כל פריטי החשבונית, הסחורה הנוספת ורישומי" +#~ " התשלום המשויכים לחשבונית זו יימחקו " +#~ "לצמיתות." + +#~ msgid "INVOICE" +#~ msgstr "חֶשׁבּוֹנִית" + +#~ msgid "Invoice #" +#~ msgstr "חשבונית מס'" + +#~ msgid "Bill To" +#~ msgstr "ביל טו" + +#~ msgid "Quantity (Hours)" +#~ msgstr "כמות (שעות)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "נוצר מ-%(num)d ערכי זמן" + +#~ msgid "Expense" +#~ msgstr "הוֹצָאָה" + +#~ msgid "Subtotal:" +#~ msgstr "סכום ביניים:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "מס (%(rate).2f%%):" + +#~ msgid "Total Amount:" +#~ msgstr "סכום כולל:" + +#~ msgid "Notes:" +#~ msgstr "הערות:" + +#~ msgid "Terms:" +#~ msgstr "תנאים:" + +#~ msgid "Payment Information:" +#~ msgstr "פרטי תשלום:" + +#~ msgid "Terms & Conditions:" +#~ msgstr "תנאים והגבלות:" + +#~ msgid "Download UBL" +#~ msgstr "" + +#~ msgid "Pay Online" +#~ msgstr "" + +#~ msgid "Payment Reference" +#~ msgstr "" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" + +#~ msgid "Invoice Approval" +#~ msgstr "" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" + +#~ msgid "Payment History" +#~ msgstr "היסטוריית תשלומים" + +#~ msgid "Send Invoice via Email" +#~ msgstr "שלח חשבונית בדוא\"ל" + +#~ msgid "Edit Issue" +#~ msgstr "" + +#~ msgid "Unassigned" +#~ msgstr "לא הוקצה" + +#~ msgid "Create Issue" +#~ msgstr "" + +#~ msgid "Filter Issues" +#~ msgstr "" + +#~ msgid "Search by title or description" +#~ msgstr "" + +#~ msgid "Apply Filters" +#~ msgstr "החל מסננים" + +#~ msgid "Page" +#~ msgstr "עַמוּד" + +#~ msgid "of" +#~ msgstr "שֶׁל" + +#~ msgid "No issues found" +#~ msgstr "לא נמצאו משתמשים." + +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" + +#~ msgid "Create New Issue" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" + +#~ msgid "Delete Issue" +#~ msgstr "" + +#~ msgid "Task Management" +#~ msgstr "ניהול משימות" + +#~ msgid "Link to existing task" +#~ msgstr "" + +#~ msgid "Select a task" +#~ msgstr "" + +#~ msgid "Link" +#~ msgstr "" + +#~ msgid "Create new task from this issue" +#~ msgstr "" + +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "Kanban" +#~ msgstr "קנבן" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "נהל עמודות" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "גרור משימות בין עמודות כדי לעדכן את הסטטוס שלהן" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "לוח Kanban" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "moved to" +#~ msgstr "עבר ל" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "אין משימות בעמודה זו." -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "נהל עמודות Kanban" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "התאם אישית את עמודות לוח הקנבן ומצבי המשימות שלך" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "Project:" +#~ msgstr "פּרוֹיֶקט:" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "עמודות גלובליות" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "Add Column" +#~ msgstr "הוסף עמודה" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "רשימת עמודות Kanban" -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Key" +#~ msgstr "מַפְתֵחַ" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Complete?" +#~ msgstr "לְהַשְׁלִים?" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "גרור כדי לסדר מחדש" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Edit column" +#~ msgstr "ערוך עמודה" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "החלף מצב פעיל" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "לא נמצאו עמודות קנבן. צור את העמודה הראשונה שלך כדי להתחיל." -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Tips:" +#~ msgstr "טיפים:" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "גרור ושחרר שורות כדי לסדר מחדש עמודות" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "לא ניתן למחוק את עמודות המערכת " +#~ "(מטלות, בתהליך, בוצע) אך ניתן להתאים " +#~ "אותן" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "עמודות המסומנות כ\"השלמות\" יסמנו משימות " +#~ "כמושלמות כאשר הן נגררות לעמודה זו" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "עמודות לא פעילות מוסתרות מלוח הקנבן אך משימות עם סטטוס זה נשארות נגישות" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "מחק את עמודת Kanban" -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "האם אתה בטוח שברצונך למחוק את העמודה?" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Key:" +#~ msgstr "מַפְתֵחַ:" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "הערה: משימות עם סטטוס זה יישארו " +#~ "נגישות אך העמודה לא תופיע עוד בלוח" +#~ " הקנבן." -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "מחק עמודה" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "עמודות מסודרות מחדש בהצלחה" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "הסדר מחדש של העמודות נכשל. אנא נסה שוב." -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "צור עמודת Kanban" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "הוסף עמודה חדשה ללוח הקנבן שלך" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "צור טופס עמודת Kanban" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Column Label" +#~ msgstr "תווית עמודה" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "למשל, בבדיקה, חסומה, בדיקה" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "שם התצוגה המוצג על לוח הקנבן" -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "Column Key" +#~ msgstr "מפתח עמודה" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "למשל, in_review, blocked, testing" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "מזהה ייחודי (אותיות קטנות, ללא רווחים," +#~ " השתמש בקו תחתון). נוצר אוטומטית " +#~ "מהתווית אם ריקה." -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "Global (for all projects)" +#~ msgstr "גלובלי (לכל הפרויקטים)" -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "בחר פרויקט כדי ליצור עמודות ספציפיות " +#~ "לפרויקט, או השאר בתור גלובלי עבור " +#~ "כל הפרויקטים" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "Icon Class" +#~ msgstr "כיתת אייקונים" -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "שילוב זמן" +#~ msgid "Font Awesome icon class" +#~ msgstr "כיתת אייקונים של גופן מדהים" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "Browse icons" +#~ msgstr "עיין בסמלים" -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "אֶשׁתָקַד" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "עדכון סטטוס" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "פרטים" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "אֶשׁתָקַד" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "חֶלקִי" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "לְרַעֲנֵן" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "ראשי (כחול)" -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "Secondary (Gray)" +#~ msgstr "משני (אפור)" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "הצלחה (ירוק)" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "Danger (Red)" +#~ msgstr "סכנה (אדום)" -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "אזהרה (צהוב)" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Info (Cyan)" +#~ msgstr "מידע (ציאן)" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "כיתת צבע של Bootstrap לסטיילינג" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Mark as Complete State" +#~ msgstr "סמן כמצב שלם" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "משימות שהועברו לעמודה זו יסומנו כמושלמות" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "Create Column" +#~ msgstr "צור עמודה" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "Note:" +#~ msgstr "פֶּתֶק:" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "העמודה תתווסף בסוף הלוח. תוכל לסדר מחדש עמודות מאוחר יותר מדף הניהול." -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "ערוך את עמודת Kanban" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "שנה את הגדרות העמודות" -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "צור אסימון API" +#~ msgid "Edit Kanban Column form" +#~ msgstr "ערוך טופס עמודת Kanban" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "לא ניתן לשנות את המפתח לאחר היצירה" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "זוהי עמודה ספציפית לפרויקט" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "זוהי עמודה גלובלית (עבור כל הפרויקטים)" -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "צור אסימון API" +#~ msgid "Preview" +#~ msgstr "תצוגה מקדימה" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "עמודות לא פעילות מוסתרות מלוח הקנבן" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "השאר ריק כדי לשמור על עדכניות" +#~ msgid "System Column:" +#~ msgstr "עמודת מערכת:" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "התחדש סוד" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "זוהי עמודת מערכת. אתה יכול להתאים " +#~ "אישית את המראה שלו אבל לא יכול " +#~ "למחוק אותו." -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "החלף מצב כהה" -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "Decrease quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "Adjustment quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Increase quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Kiosk adjustment" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Physical count" +#~ msgstr "" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Found" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Damaged" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Apply stock adjustment" +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Apply Adjustment" +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Undo last adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Undo Last Adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Transfer quantity" +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Transfer stock" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Transfer Stock" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Stop timer" +#~ msgstr "" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "Stop Timer" +#~ msgstr "עצור טיימר" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "אין משימה" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "על מה אתה עובד?" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "תַקצִיר" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "מָקוֹר" + +#~ msgid "Website, referral, ad..." +#~ msgstr "אתר, הפניה, מודעה..." + +#~ msgid "Lead Score" +#~ msgstr "ציון מוביל" + +#~ msgid "Estimated Value" +#~ msgstr "ערך משוער" + +#~ msgid "Save Lead" +#~ msgstr "שמור ליד" + +#~ msgid "Name, company, email..." +#~ msgstr "שם, חברה, מייל..." + +#~ msgid "All Statuses" +#~ msgstr "כל הסטטוסים" + +#~ msgid "Website, referral..." +#~ msgstr "אתר, הפניה..." + +#~ msgid "Score" +#~ msgstr "צִיוּן" + +#~ msgid "No leads found" +#~ msgstr "לא נמצאו לידים" + +#~ msgid "Create First Lead" +#~ msgstr "צור ליד ראשון" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "מעקב מקצועי וניהול פרויקטים בזמן" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "אפליקציית מעקב מקיפה מבוססת אינטרנט " +#~ "שנבנתה עם Flask, הכוללת ניהול פרויקטים," +#~ " ארגון לקוחות, ניהול משימות, חשבוניות " +#~ "וניתוחים מתקדמים." + +#~ msgid "Invoicing" +#~ msgstr "חשבונית" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "טיימרים חכמים" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "מעקב בזמן אמת עם זיהוי סרק ועדכונים חיים" + +#~ msgid "Client Management" +#~ msgstr "ניהול לקוחות" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "ארגן לקוחות עם אנשי קשר, תעריפים וקשרי פרויקטים" + +#~ msgid "Task System" +#~ msgstr "מערכת משימות" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "חלקו פרויקטים למשימות בעזרת מעקב אחר התקדמות" + +#~ msgid "PDF Invoices" +#~ msgstr "חשבוניות PDF" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "הפקת חשבוניות מקצועיות מזמן מעקב" + +#~ msgid "Core Features" +#~ msgstr "תכונות ליבה" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "טיימרים להפעלה/עצירה עם שיוך פרויקט ומשימות" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "הזנת זמן ידנית עם הערות ותגים" + +#~ msgid "Client and project organization" +#~ msgstr "ארגון לקוח ופרויקט" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "גישה מבוססת תפקידים ופרופילי משתמשים" + +#~ msgid "Advanced Features" +#~ msgstr "תכונות מתקדמות" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "חשבונית PDF ממותגת עם מעקב מס ותשלומים" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "ניתוח חזותי ודיווח מפורט" + +#~ msgid "REST API for integrations" +#~ msgstr "REST API לאינטגרציות" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "יכולות PWA וממשק משתמש ידידותי לנייד" + +#~ msgid "Platform Support" +#~ msgstr "תמיכה בפלטפורמה" + +#~ msgid "Web Application" +#~ msgstr "יישום אינטרנט" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "דפדפנים שולחניים (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "עיצוב רספונסיבי לנייד" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "אפליקציית אינטרנט מתקדמת (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "ממשק טאבלט ידידותי למגע" + +#~ msgid "Operating Systems" +#~ msgstr "מערכות הפעלה" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "חלונות, macOS, לינוקס" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "אנדרואיד ו-iOS (דפדפן)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "תמיכה ב-Raspberry Pi" + +#~ msgid "Dockerized deployment" +#~ msgstr "פריסה מעוגנת" + +#~ msgid "Database Support" +#~ msgstr "תמיכה במסד נתונים" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (מומלץ)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (מפתח/בדיקה)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "העברות אוטומטיות עם Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "כלי גיבוי ושחזור" + +#~ msgid "Technical Specifications" +#~ msgstr "מפרט טכני" + +#~ msgid "Technology Stack" +#~ msgstr "מחסנית טכנולוגיה" + +#~ msgid "Backend" +#~ msgstr "אחורי" + +#~ msgid "Frontend" +#~ msgstr "חזית" + +#~ msgid "Deployment" +#~ msgstr "פְּרִיסָה" + +#~ msgid "Key Capabilities" +#~ msgstr "יכולות מפתח" + +#~ msgid "Real-time" +#~ msgstr "בזמן אמת" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "קוד פתוח וקהילה" + +#~ msgid "Open Source Benefits" +#~ msgstr "יתרונות קוד פתוח" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "קוד מקור מלא זמין ב-GitHub" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "מורשה תחת GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "פיתוח מונחה קהילה" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "מעקב אחר בעיות שקוף ודוחות באגים" + +#~ msgid "Deployment Options" +#~ msgstr "אפשרויות פריסה" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "תמונות דוקר (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "פריסה באירוח עצמי עם שליטה מלאה" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "מוכן לענן עם תצורות Compose" + +#~ msgid "View on GitHub" +#~ msgstr "הצג ב-GitHub" + +#~ msgid "Support updates" +#~ msgstr "תכונות נתמכות" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "קבלת עזרה ומשאבים" + +#~ msgid "Documentation" +#~ msgstr "תיעוד" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "מדריכים שלב אחר שלב לכל התכונות." + +#~ msgid "View Help" +#~ msgstr "הצג עזרה" + +#~ msgid "System Information" +#~ msgstr "מידע מערכת" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "מצב, גרסאות ופרטי תצורה." + +#~ msgid "Admin access required" +#~ msgstr "נדרשת גישת מנהל" + +#~ msgid "Community Support" +#~ msgstr "תמיכה בקהילה" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "דווח על בעיות, בקש תכונות, תרום." + +#~ msgid "GitHub Issues" +#~ msgstr "בעיות GitHub" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "הצג את כל ערכי הזמנים" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "הנה סקירה מהירה של העבודה שלך." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "טיימרים להפעלה/עצירה עם שיוך פרויקט ומשימות" + +#~ msgid "Repeat last" +#~ msgstr "נוצר ב-" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "טיימרים להפעלה/עצירה עם שיוך פרויקט ומשימות" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "הַפסָקָה" + +#~ msgid "Break" +#~ msgstr "בְּחֲזָרָה" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "התחיל ב" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "הַתאָמָה" + +#~ msgid "Subtract 15 min" +#~ msgstr "" + +#~ msgid "Subtract 5 min" +#~ msgstr "" + +#~ msgid "Add 5 min" +#~ msgstr "מנהל מערכת" + +#~ msgid "Add 15 min" +#~ msgstr "מנהל מערכת" + +#~ msgid "Resume timer" +#~ msgstr "טיימרים חכמים" + +#~ msgid "Resume" +#~ msgstr "אִתחוּל" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "הַפסָקָה" + +#~ msgid "Stop and save current time" +#~ msgstr "" + +#~ msgid "Stop & save" +#~ msgstr "" + +#~ msgid "No active timer." +#~ msgstr "אין טיימר פעיל." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" + +#~ msgid "Resume last session" +#~ msgstr "סיום סשן" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" + +#~ msgid "Today's Hours" +#~ msgstr "" + +#~ msgid "overtime" +#~ msgstr "זְמַן" + +#~ msgid "Week's Hours" +#~ msgstr "" + +#~ msgid "Month's Hours" +#~ msgstr "" + +#~ msgid "Overtime (YTD)" +#~ msgstr "הגדרות שעות נוספות" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" + +#~ msgid "Loading insights…" +#~ msgstr "" + +#~ msgid "Value insights" +#~ msgstr "יישר ימינה" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "זמן מעקב. הישאר מאורגן." + +#~ msgid "Total hours tracked" +#~ msgstr "סך שעות העבודה" + +#~ msgid "Active days" +#~ msgstr "התראות פעילות" + +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" + +#~ msgid "Hours per day last seven days" +#~ msgstr "" + +#~ msgid "Most productive day" +#~ msgstr "" + +#~ msgid "Avg session length" +#~ msgstr "" + +#~ msgid "Estimated value tracked" +#~ msgstr "ערך משוער" + +#~ msgid "This week vs last week" +#~ msgstr "" + +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" + +#~ msgid "hrs this week" +#~ msgstr "כניסות זמן השבוע" + +#~ msgid "vs last week" +#~ msgstr "" + +#~ msgid "This week" +#~ msgstr "שָׁבוּעַ" + +#~ msgid "Last week" +#~ msgstr "אֶשׁתָקַד" + +#~ msgid "Could not load comparison." +#~ msgstr "" + +#~ msgid "This week and last week hours by day" +#~ msgstr "" + +#~ msgid "Recent Entries" +#~ msgstr "ערכים אחרונים" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "View all" +#~ msgstr "הצג הכל" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "המשך - התחל טיימר חדש עם אותם מאפיינים" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "ערוך ערך" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "ערך כפול" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "מחק ערך" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "לא נמצאו ערכים אחרונים." -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "יעד שבועי" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "ימים נותרו" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "Need" +#~ msgstr "צוֹרֶך" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "להגיע למטרה" -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "אין יעד שבועי" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "הגדר יעד שבועי למעקב אחר ההתקדמות שלך" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "צור יעד" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "פרויקטים מובילים (30 ימים)" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "View report" +#~ msgstr "דוח משתמש" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "תרשימי עוגה של חלוקת זמן" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "אין פעילות ב-30 הימים האחרונים." -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "התחל מעקב אחר זמן" -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "פרויקטים מובילים (30 ימים)" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "אין פעילות ב-30 הימים האחרונים." -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "%(count)d ציטוטים משוכפלים" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "שגיאה ביצירת PDF: %(error)s" -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "תמיכה בפלטפורמה" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "מדריך להתחלה מהירה" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "All templates" +#~ msgstr "תבניות דואר אלקטרוני" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "משימה (אופציונלי)" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "הערות (אופציונלי)" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "משימה (אופציונלי)" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "למשל, פגישה, פיתוח, ניהול" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "תמיכה בפיתוח" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "תיעוד מלא ומדריך למשתמש" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "ניווט מהיר" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "סנן קטעים..." -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "התחלה מהירה" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "דוחות ואנליטיקס" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "תכונות פרודוקטיביות" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "תכונות אדמין" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "שימוש בנייד" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "תיעוד" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "פתרון בעיות" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "מרכז העזרה של TimeTracker" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "כל מה שאתה צריך לדעת כדי להפיק את המרב מ-TimeTracker" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "התחל מעקב אחר זמן" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "צפה בפרויקטים" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "הפקת דוחות" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "אסימוני API" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "מדריך להתחלה מהירה" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "For New Users" +#~ msgstr "למשתמשים חדשים" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "התחבר עם שם המשתמש שלך (אין צורך בסיסמה)" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "חקור את לוח המחוונים כדי לראות את הסקירה הכללית שלך" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "התחל את הטיימר הראשון שלך בפרויקט קיים" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "הצג את ערכי הזמן שלך בדוחות" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "למנהלים" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "הגדר לקוחות בקטע ניהול לקוחות" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "צור פרויקטים והקצה אותם ללקוחות" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "קבע את הגדרות המערכת (אזור זמן, מטבע וכו')" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "נהל משתמשים והרשאות" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "טיפ מקצועי:" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "השתמש בממשק הידידותי לנייד כדי לעקוב " +#~ "אחר זמן בדרכים. הטיימר ממשיך לפעול " +#~ "גם אם אתה סוגר את הדפדפן שלך!" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "מעקב בזמן אמת עם זיהוי סרק אוטומטי ועדכוני WebSocket" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "כניסה ידנית" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "רישום זמן באופן ידני עם זמני התחלה וסיום מותאמים אישית" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "הפעלת טיימר" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "נווט אל דף הטיימר או לוח המחוונים" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "בחר פרויקט מהתפריט הנפתח" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "אפשר לבחור משימה למעקב מפורט יותר" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "הוסף הערות לגבי מה שאתה עובד עליו (אופציונלי)" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "הוסף תגים מופרדים בפסיקים (אופציונלי)" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "לחץ על \"התחל טיימר\"" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "תכונות טיימר" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "תצוגת משך זמן אמת" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "Continues running if browser closes" +#~ msgstr "ממשיך לפעול אם הדפדפן נסגר" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "פריט מלאי" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "בחר פריט" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "מַחסָן" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "בחר מחסן" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "כמות התאמה" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "השתמש בערכים חיוביים כדי להגדיל את המניה, בערכים שליליים כדי להקטין" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "למשל, תיקון ספירה פיזית, נזק, פריטים שנמצאו" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "פרטים נוספים על התאמה זו" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "התאמת שיא" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "כל המחסנים" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "כל הפריטים" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "תאריך מ" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "תאריך ל" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "פָּרִיט" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "לא נמצאו התאמות." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "בהישג יד" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "נקודת סדר מחדש" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "גֵרוּעַ" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "הזמנה מחדש של כמות" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "אין התראות על מלאי נמוך. כל הפריטים נמצאים מעל לנקודת ההזמנה מחדש." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "זיהוי סרק אוטומטי (ניתן להגדרה)" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "One active timer per user (configurable)" +#~ msgstr "טיימר פעיל אחד לכל משתמש (ניתן להגדרה)" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "WebSocket live updates" +#~ msgstr "עדכונים חיים של WebSocket" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "השתמש בערכים חיוביים עבור תוספות, שליליות עבור הסרות" +#~ msgid "Manual Time Entry" +#~ msgstr "הזנת זמן ידנית" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "צור רשומות זמן באופן ידני כאשר אתה" +#~ " צריך לתעד זמן שהייה מחוץ למחשב " +#~ "או להתאים ערכים קיימים." -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "Required Information" +#~ msgstr "מידע נדרש" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "Project selection" +#~ msgstr "בחירת פרויקט" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "סוג תנועה" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "לַחֲזוֹר" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "לְבַזבֵּז" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "תאריך ושעת התחלה" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "End date and time" +#~ msgstr "תאריך ושעה סיום" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "מידע אופציונלי" -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "הקצאת משימה" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "תיאור/הערות" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "תגים לסיווג" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "ביטול סטטוס בר חיוב" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "תכונות מתקדמות להזנת זמן" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "כניסה בתפזורת" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "צור מספר ערכי זמן במשך ימים רצופים" +#~ " עם אותו פרויקט ומשך זמן. מושלם " +#~ "עבור דפוסי עבודה רגילים." -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "למשל, תיקון ספירה פיזית" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "שיא תנועה" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "סוג התייחסות" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "יָדָנִי" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "עלות יחידה" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "הַפנָיָה" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Templates" +#~ msgstr "תבניות" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "לא נמצאו תנועות במניות." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "סַפָּק" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "בחר ספק" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "תאריך הזמנה" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "תאריך אספקה ​​צפוי" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "הערות גלויות לספק" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "הערות פנימיות (לא גלויות לספק)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "פריטים" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "הוסף פריט" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "כמות" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "מק\"ט של ספק" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "צור הזמנת רכש" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "טְיוּטָה" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "נשלח" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "מְאוּשָׁר" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "התקבל" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "כל הספקים" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "מספר PO" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "משלוח צפוי" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "לא נמצאו הזמנות רכש." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "האם אתה בטוח שברצונך לבטל הזמנת רכש זו?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "האם אתה בטוח שברצונך למחוק את הזמנת הרכש הזו?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "פרטי הזמנת רכש" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "תאריך קבלת" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "כמות שהוזמנה" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "כמות שהתקבלה" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "סה\"כ שורה" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "מִשׁלוֹחַ" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "קבלת הזמנת רכש" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "סמן כמתקבל" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "אין פריטים בהזמנת רכש זו." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "סך הכל פריטים" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "סך הכל מחסנים" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "ערך מלאי כולל" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "פריטים במלאי נמוך" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "דוחות זמינים" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "הערכת שווי מלאי" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "הצג את ערך המלאי לפי מחסן" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "היסטוריית תנועה" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "יומן תנועה מפורט" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "ניתוח מחזור" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "שיעורי מחזור מלאי" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "דוח מלאי נמוך" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "פריטים מתחת לנקודת ההזמנה מחדש" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "נמצאו %(count)s פריטים מתחת לנקודת ההזמנה מחדש שלהם." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "כמות בהישג יד" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "הזמנה מחדש של כמות" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "צור PO" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "כל רמות המלאי טובות" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "אין פריטים כרגע מתחת לנקודת ההזמנה מחדש שלהם." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "לא נמצאו תנועות." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "שיעור מחזור מציין כמה פעמים מלאי נמכר והוחלף בשנה. שיעורים גבוהים יותר מעידים על פריטים שנעים מהר יותר." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "סך הכל נמכר" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "רמת מלאי ממוצעת" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "קצב תחלופה" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "תנועה מהירה" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "נוֹרמָלִי" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "תנועה איטית" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "מאוד איטי" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "לא נמצאו נתוני מכירות עבור התקופה שנבחרה." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "הערכת שווי מלאי" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "ערך כולל" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "לא נמצאו פריטים עם פרטי עלות." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "שָׁמוּר" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "מילא" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "שמור ב-" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "יפוג בשעה" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "למלא את ההזמנה הזו?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "לבטל את ההזמנה הזו?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "לא נמצאו הזמנות." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "יְחִידָה" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "עלות ברירת מחדל" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "מחיר ברירת מחדל" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "כתובת האתר של התמונה" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "עקוב אחר מלאי" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "נהל מספר ספקים עבור פריט זה בתמחור שונה." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "MOQ" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "זמן אספקה ​​(ימים)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "מועדף" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "הוסף ספק" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "לא נמצאה היסטוריית תנועה עבור פריט זה." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "מק\"ט, שם, ברקוד..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "פעיל בלבד" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "סה\"כ כמות" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "זָמִין" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "מלאי נמוך" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "לא נמצאו פריטים במלאי." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "פרטי פריט" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "ניתן למעקב" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "רמות המלאי לפי מחסן" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "שמור ערכי זמן בשימוש תכוף כתבניות " +#~ "לשימוש חוזר מהיר. שומר פרויקט, משימה " +#~ "והערות." -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "דמיין את רשומות הזמן שלך בלוח שנה." +#~ " גרור ושחרר כדי לתזמן מחדש או " +#~ "לחץ על תאריכים כדי להוסיף ערכים." -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "Project Information" +#~ msgstr "מידע על הפרויקט" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "תנועות מניות אחרונות" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "סך הכל בהישג יד" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "סה\"כ שמורות" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "סך הכל זמין" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "התראת מלאי נמוך" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "פריט זה אינו ניתן למעקב." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "הזמנות פעילות" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "כמות שמורה" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "נספר אחרון" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "לא נמצא מלאי עבור פריט זה באף מחסן." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "לא נמצאו רמות מלאי." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "מלאי נמוך בלבד" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "מכירת יתר" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "לא נמצאו פריטי מלאי במחסן זה." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "קוד ספק" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "קוד ייחודי עבור ספק זה (למשל, SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "תנאי תשלום" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "למשל, Net 30, Net 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "קוד, שם, מייל" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "לא נמצאו ספקים." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "פרטי ספק" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "פריטי מלאי של ספק זה" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "זמן אספקה" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "אין פריטי מלאי המשויכים לספק זה." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "פריטים מועדפים" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "ממחסן" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "בחר במחסן מקור" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "למחסן" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "בחר במחסן יעד" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "הערות אופציונליות לגבי העברה זו" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "צור העברה" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "לא נמצאו העברות." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "קוד מחסן" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "קוד ייחודי למחסן זה (לדוגמה, WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "אימייל ליצירת קשר" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "טלפון ליצירת קשר" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "לא נמצאו מחסנים." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "פרטי מחסן" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "אין פריטים במלאי במחסן זה." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "כמות כוללת" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "שם פרויקט תיאורי" -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "ארגון לקוחות משויך" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "פרטי הפרויקט והיקפו" -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "פעיל, הושלם או הועבר לארכיון" -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "Billing Information" +#~ msgstr "פרטי חיוב" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "האם יש לעקוב אחר זמן לחיוב" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "Rate for billable time calculations" +#~ msgstr "תעריף עבור חישובי זמן לחיוב" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Billing Reference" +#~ msgstr "אסמכתא לחיוב" -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "מספר PO או קוד חיוב" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "תפעול פרויקט" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "Create new projects with client relationships" +#~ msgstr "יצירת פרויקטים חדשים עם קשרי לקוחות" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "בקש אישור" +#~ msgid "Edit existing projects to update details" +#~ msgstr "ערוך פרויקטים קיימים כדי לעדכן פרטים" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "סטטוס אישור" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "ארכיון פרויקטים כדי להסתיר מפני טיימרים (שומר נתונים)" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "מחק פרויקטים (מסיר את כל ערכי הזמן המשויכים)" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Best Practices" +#~ msgstr "שיטות עבודה מומלצות" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Use descriptive project names" +#~ msgstr "השתמש בשמות פרויקטים תיאוריים" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "הגדר תעריפים לשעה מדויקים לחיוב" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "סיבת הדחייה" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "העבר לארכיון במקום למחוק כשאפשר" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "Use billing references for external tracking" +#~ msgstr "השתמש באסמכתאות לחיוב למעקב חיצוני" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "פעולות מהירות" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "מערכת ניהול הלקוחות מסייעת לארגן את " +#~ "עבודתך על ידי ארגוני לקוחות, מניעת " +#~ "שגיאות וייעול יצירת הפרויקט." -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "Client Information" +#~ msgstr "מידע לקוח" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "ייצוא לאקסל" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "בתשלום חלקית" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "בתשלום מלא" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "צור חשבונית" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "הפק חשבונית חדשה עבור פרויקט ולקוח" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "בחר פרויקט" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "בחירת פרויקט תמלא אוטומטית את פרטי הלקוח" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Organization Name" +#~ msgstr "שם הארגון" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Company or client name" +#~ msgstr "שם חברה או לקוח" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "שיעור מס (%)" +#~ msgid "Primary contact details" +#~ msgstr "פרטי קשר ראשיים" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "טיפים" +#~ msgid "Email & Phone" +#~ msgstr "דואר אלקטרוני וטלפון" -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "בחר את הפרויקט הנכון למילוי אוטומטי של פרטי הלקוח." +#~ msgid "Contact information" +#~ msgstr "פרטי התקשרות" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "אתה יכול להתאים אישית הערות ותנאים לפני שליחת החשבונית." +#~ msgid "Business address" +#~ msgstr "כתובת העסק" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "ערוך חשבונית" +#~ msgid "Benefits" +#~ msgstr "הטבות" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "עדכן את פרטי החשבונית, הפריטים והתנאים" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "בחירת תפריט נפתח מונעת שגיאות הקלדה" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "שירותים מבוססי זמן ועבודה לפי שעה" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "תעריפי ברירת מחדל מאכלסים פרויקטים באופן אוטומטי" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "מתן שמות לקוחות עקביים" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Easier project organization" +#~ msgstr "ארגון פרויקט קל יותר" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Project Count" +#~ msgstr "ספירת פרויקטים" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "בחר פריט מלאי" +#~ msgid "Total and active projects" +#~ msgstr "פרויקטים טוטאליים ופעילים" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "למשל, שירותי פיתוח אתרים" +#~ msgid "Total hours worked" +#~ msgstr "סך שעות העבודה" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "הערכת עלות" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "הסר פריט" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "סכום משנה של פריטים" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "הוצאות לחיוב כגון נסיעות, ארוחות וחומרים" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "הוסף הוצאה" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "למשל, נסיעה לפגישת לקוחות" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "הוצאה מקושרת - לא ניתן לערוך את הכותרת" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "הוצאה מקושרת - לא ניתן לערוך את התיאור" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "הוצאה מקושרת - לא ניתן לערוך קטגוריה" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "לִנְסוֹעַ" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "ארוחות" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "דִיוּר" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "אספקה" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "תוֹכנָה" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "צִיוּד" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "שירותים" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "שיווק" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "הַדְרָכָה" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "אַחֵר" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "הוצאה צמודה - לא ניתן לערוך סכום" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "הוצאה מקושרת - לא ניתן לערוך תאריך" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "בטל קישור הוצאות לחשבונית" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "סה\"כ הוצאות" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "סחורה נוספת" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "מוצרים, חומרים, רישיונות וסחורות אחרות" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "הוסף טוב" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "מְחִיר" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "למשל, רישיון תוכנה" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "מוּצָר" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "שֵׁרוּת" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "חוֹמֶר" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "הסר טוב" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "סה\"כ סחורות" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "תצוגה מקדימה חיה" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "תַשְׁלוּם" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "סְחוֹרוֹת" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "הפק מזמן/עלויות" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "שיא תשלום" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "ייצוא PDF" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "ייצא CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "חשבונית כפולה" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "האם אתה בטוח שברצונך לבטל את הקישור של הוצאה זו מהחשבונית?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "ביטול קישור הוצאות" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "בטל את הקישור" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "הוסף לפחות פריט, הוצאה או מוצר נוסף אחד לחשבונית" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "הפק מזמן, עלויות וסחורות" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "בחר כניסות זמן ללא חיוב, עלויות פרויקט וסחורות נוספות להוספה לחשבונית זו" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "חזרה לעריכה" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "כניסות זמן ללא חיוב" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "ערכים" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "לא נמצאו ערכי זמן ללא חיוב עבור פרויקט זה." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "עלויות פרויקט ללא חשבונית" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "לא נמצאו עלויות ללא חשבונית עבור פרויקט זה." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "הוצאות הניתנות לחיוב ללא חשבונית" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "מוֹכֵר" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "לא נמצאו הוצאות ניתנות לחיוב ללא חשבונית עבור פרויקט זה." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "פרויקט סחורה נוספת" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "לא נמצאו מוצרים נוספים עבור הפרויקט הזה." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "הוסף נבחרים לחשבונית" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "סיכום בחירה" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "סה\"כ שעות פנויות" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "סך העלויות הזמינות" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "סך ההוצאות הזמינות" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "סך הסחורה הזמינה" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "סקירת שעות בתשלום מראש" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "התוכנית כוללת %(hours)s שעות לכל מחזור (מתאפסים ביום %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "נצרך: %(consumed)s h • נשאר: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "עדיין לא נרשם שימוש בתשלום מראש עבור התקופה שנבחרה." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "אתה יכול לבחור מספר כניסות זמן, עלויות, הוצאות וסחורות נוספות." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "ערכי זמן מקובצים לפי משימה או פרויקט בעת יצירת הפריט." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "עלויות וסחורות נוספות מתווספות כפריטי חשבונית בודדים." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "ההוצאות צמודות לחשבונית ומופיעות בסעיף נפרד." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "אנא בחר פעם אחת לפחות כניסה, עלות, הוצאה או מוצר נוסף" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "סינון חשבוניות" +#~ msgid "Estimated billing amounts" +#~ msgstr "סכומי חיוב משוערים" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "מספר חשבונית או לקוח" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "חלק פרויקטים למשימות הניתנות לניהול עם מעקב מפורט וניטור התקדמות." -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "מחק חשבוניות נבחרות" +#~ msgid "Task Properties" +#~ msgstr "מאפייני משימה" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "שנה סטטוס עבור חשבוניות נבחרות" +#~ msgid "Name & Description" +#~ msgstr "שם ותיאור" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "זיהוי משימה ברור" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "רמות עדיפות" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "נמוך, בינוני, גבוה, דחוף" -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "מחק חשבונית" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "אַזהָרָה:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "האם אתה בטוח שברצונך למחוק חשבונית" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "כל פריטי החשבונית, הסחורה הנוספת ורישומי התשלום המשויכים לחשבונית זו יימחקו לצמיתות." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "חֶשׁבּוֹנִית" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "חשבונית מס'" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "ביל טו" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "כמות (שעות)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "נוצר מ-%(num)d ערכי זמן" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "הוֹצָאָה" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "סכום ביניים:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "מס (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "סכום כולל:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "הערות:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "תנאים:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "פרטי תשלום:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "תנאים והגבלות:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "תאריכי יעד" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "Deadline tracking" +#~ msgstr "מעקב אחר מועדים" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Assignment" +#~ msgstr "מְשִׁימָה" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "בעלות על משימה" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "מעקב סטטוס" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "To Do - לא התחיל" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "היסטוריית תשלומים" +#~ msgid "In Progress - Currently working" +#~ msgstr "בתהליך - עובד כרגע" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "שלח חשבונית בדוא\"ל" +#~ msgid "Review - Ready for review" +#~ msgstr "סקירה - מוכן לסקירה" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "בוצע - הושלם" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "לא הוקצה" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "מבוטל - אין צורך" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "תכונות מעקב אחר זמן" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "Start timers directly from tasks" +#~ msgstr "הפעל טיימרים ישירות ממשימות" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "החל מסננים" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "עַמוּד" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "שֶׁל" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "לא נמצאו משתמשים." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "קישור כניסות זמן למשימות ספציפיות" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "עקוב אחר שעות משוערות לעומת שעות בפועל" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "עקוב אחר התקדמות המשימה באופן אוטומטי" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "Task Views" +#~ msgstr "תצוגות משימות" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "ניהול משימות" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "המשימות שלי - המשימות שהוקצו לך" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "כל המשימות - רשימת משימות מלאה" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "משימות באיחור - פריטים שהועברו" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "משימות פרויקט - משימות בתוך פרויקטים" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Collaboration Features" +#~ msgstr "תכונות שיתוף פעולה" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "הערות למשימה - דיונים משורשרים על משימות" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "קנבן" +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "תמיכה ב-Markdown - עיצוב עשיר בתיאורים" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "נהל עמודות" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "אזכורי משתמשים - תגים חברי צוות (אם מופעל)" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "גרור משימות בין עמודות כדי לעדכן את הסטטוס שלהן" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "קבצים מצורפים - צרף קבצים למשימות (אם מופעל)" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "לוח Kanban" +#~ msgid "Markdown Formatting" +#~ msgstr "עיצוב Markdown" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "עבר ל" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "תיאורי משימות ופרויקטים תומכים ב-Markdown:" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "אין משימות בעמודה זו." +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**מודגש**, *נטוי*, ~~קו חוצה~~" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "נהל עמודות Kanban" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# כותרות, - רשימות, [קישורים](כתובת אתר)" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "התאם אישית את עמודות לוח הקנבן ומצבי המשימות שלך" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```קוביות קוד```, טבלאות, תמונות" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "פּרוֹיֶקט:" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "דמיין את זרימת העבודה שלך עם לוח" +#~ " Kanban גרור ושחרר לניהול משימות " +#~ "אינטואיטיבי." -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "עמודות גלובליות" +#~ msgid "Board Features" +#~ msgstr "תכונות לוח" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "הוסף עמודה" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "עמודות הניתנות להתאמה אישית התואמות את סטטוסי המשימות" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "רשימת עמודות Kanban" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "גרור ושחרר משימות בין עמודות" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "מַפְתֵחַ" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "סנן לפי פרויקט, משתמש או עדיפות" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "לְהַשְׁלִים?" +#~ msgid "Quick search across all tasks" +#~ msgstr "חיפוש מהיר בכל המשימות" -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "גרור כדי לסדר מחדש" +#~ msgid "Using the Kanban Board" +#~ msgstr "שימוש בלוח Kanban" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "ערוך עמודה" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "גישה מתפריט המשימות או מדף הפרויקט" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "החלף מצב פעיל" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "גרור משימות לעמודות שונות כדי לשנות סטטוס" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "לא נמצאו עמודות קנבן. צור את העמודה הראשונה שלך כדי להתחיל." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "טיפים:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "גרור ושחרר שורות כדי לסדר מחדש עמודות" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "לא ניתן למחוק את עמודות המערכת (מטלות, בתהליך, בוצע) אך ניתן להתאים אותן" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "עמודות המסומנות כ\"השלמות\" יסמנו משימות כמושלמות כאשר הן נגררות לעמודה זו" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "עמודות לא פעילות מוסתרות מלוח הקנבן אך משימות עם סטטוס זה נשארות נגישות" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "מחק את עמודת Kanban" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "האם אתה בטוח שברצונך למחוק את העמודה?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "מַפְתֵחַ:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "הערה: משימות עם סטטוס זה יישארו נגישות אך העמודה לא תופיע עוד בלוח הקנבן." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "מחק עמודה" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "עמודות מסודרות מחדש בהצלחה" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "הסדר מחדש של העמודות נכשל. אנא נסה שוב." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "צור עמודת Kanban" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "הוסף עמודה חדשה ללוח הקנבן שלך" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "צור טופס עמודת Kanban" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "תווית עמודה" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "למשל, בבדיקה, חסומה, בדיקה" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "שם התצוגה המוצג על לוח הקנבן" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "מפתח עמודה" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "למשל, in_review, blocked, testing" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "מזהה ייחודי (אותיות קטנות, ללא רווחים, השתמש בקו תחתון). נוצר אוטומטית מהתווית אם ריקה." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "גלובלי (לכל הפרויקטים)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "בחר פרויקט כדי ליצור עמודות ספציפיות לפרויקט, או השאר בתור גלובלי עבור כל הפרויקטים" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "כיתת אייקונים" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "כיתת אייקונים של גופן מדהים" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "עיין בסמלים" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "ראשי (כחול)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "משני (אפור)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "הצלחה (ירוק)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "סכנה (אדום)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "אזהרה (צהוב)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "מידע (ציאן)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "כיתת צבע של Bootstrap לסטיילינג" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "סמן כמצב שלם" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "משימות שהועברו לעמודה זו יסומנו כמושלמות" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "צור עמודה" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "פֶּתֶק:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "העמודה תתווסף בסוף הלוח. תוכל לסדר מחדש עמודות מאוחר יותר מדף הניהול." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "ערוך את עמודת Kanban" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "שנה את הגדרות העמודות" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "ערוך טופס עמודת Kanban" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "לא ניתן לשנות את המפתח לאחר היצירה" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "זוהי עמודה ספציפית לפרויקט" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "זוהי עמודה גלובלית (עבור כל הפרויקטים)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "תצוגה מקדימה" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "עמודות לא פעילות מוסתרות מלוח הקנבן" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "עמודת מערכת:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "זוהי עמודת מערכת. אתה יכול להתאים אישית את המראה שלו אבל לא יכול למחוק אותו." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "לחץ על כרטיס משימה כדי להציג/לערוך פרטים" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "השתמש במסננים כדי להתמקד בעבודה ספציפית" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "החלף מצב כהה" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "לוח Kanban מושלם לתכנון ספרינט " +#~ "ולסטנדאפים יומיומיים. כל עמודה מייצגת " +#~ "שלב בתהליך העבודה שלך!" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "מעקב אחר הוצאות" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "עקוב אחר הוצאות העסק, נהל קבלות וטפל ביעילות בהחזרים." -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "תכונות הוצאות" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "סיווג הוצאות (נסיעות, ארוחות, אספקה ​​וכו')" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "צרף תמונות קבלה ומסמכים" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "עקוב אחר סכומים, מס ואמצעי תשלום" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "תהליך אישור עבור בקשות הוצאות" -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "חיוב והחזר" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "סמן הוצאות כניתנות לחיוב ללקוחות" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "כלול הוצאות בחשבוניות הלקוח" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "עקוב אחר מצב החזר" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "קישור הוצאות לפרויקטים ספציפיים" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "שיא הוצאות" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "הזינו פרטים והעלו קבלה" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "שלח לאישור" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Admin reviews and approves" +#~ msgstr "מנהל סוקר ומאשר" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "חשבונית/החזר" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "הוסף לחשבונית או החזר" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "עקוב אחר תשלום" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "מעקב אחר מצב ההחזר" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Professional Invoicing" +#~ msgstr "חשבונית מקצועית" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "יצירת PDF מקצועית" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Company branding and logos" +#~ msgstr "מיתוג חברה ולוגו" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "מספור חשבוניות אוטומטי" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "חישובי מס" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Time Integration" +#~ msgstr "שילוב זמן" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Generate from time entries" +#~ msgstr "צור מכניסות זמן" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "עצור טיימר" +#~ msgid "Smart grouping by task/project" +#~ msgstr "קיבוץ חכם לפי משימה/פרויקט" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "מניעת חיוב כפול" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "השתמש בתעריפים לפי שעה לפרויקט" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "הגדרת פרטי הלקוח והפרויקט" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "אין משימה" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Add Items" +#~ msgstr "הוסף פריטים" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "על מה אתה עובד?" +#~ msgid "Generate from time or add manually" +#~ msgstr "צור מזמן או הוסף באופן ידני" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "בדוק ושלח" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "ייצא PDF ועדכון סטטוס" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "מעקב אחר מצב ותשלומים" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Standard Reports" +#~ msgstr "דוחות סטנדרטיים" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "דוח פרויקט - פירוט זמן לפי פרויקט" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "דוח משתמש - מדדי ביצועים בודדים" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "דוח סיכום - מדדי מפתח ומגמות" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "דוח כניסת זמן - יומני זמן מפורטים" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Export Options" +#~ msgstr "אפשרויות ייצוא" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "ייצוא CSV - לניתוח חיצוני" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "Configurable delimiters" +#~ msgstr "תוחמים ניתנים להגדרה" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Custom date ranges" +#~ msgstr "טווחי תאריכים מותאמים אישית" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "Filtered data export" +#~ msgstr "ייצוא נתונים מסוננים" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "אפשרויות סינון" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "טווח תאריכים - תאריכי התחלה וסיום מותאמים אישית" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "תַקצִיר" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "פרויקט - סינון לפי פרויקטים ספציפיים" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "User - Filter by team members" +#~ msgstr "משתמש - סינון לפי חברי צוות" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "מָקוֹר" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "אתר, הפניה, מודעה..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "ציון מוביל" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "ערך משוער" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "שמור ליד" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "שם, חברה, מייל..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "כל הסטטוסים" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "אתר, הפניה..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "צִיוּן" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "לא נמצאו לידים" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "צור ליד ראשון" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "Client - Filter by client organization" +#~ msgstr "לקוח - סינון לפי ארגון לקוח" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "מסננים שמורים - שמור מסננים בשימוש תכוף" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Visual Analytics" +#~ msgstr "אנליטיקה חזותית" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Interactive bar charts" +#~ msgstr "תרשימי עמודות אינטראקטיביים" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "Time distribution pie charts" +#~ msgstr "תרשימי עוגה של חלוקת זמן" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "מעקב מקצועי וניהול פרויקטים בזמן" +#~ msgid "Trend analysis over time" +#~ msgstr "ניתוח מגמות לאורך זמן" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "אפליקציית מעקב מקיפה מבוססת אינטרנט שנבנתה עם Flask, הכוללת ניהול פרויקטים, ארגון לקוחות, ניהול משימות, חשבוניות וניתוחים מתקדמים." +#~ msgid "Mobile-optimized charts" +#~ msgstr "תרשימים מותאמים לנייד" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "חשבונית" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "השתמש במסננים שמורים כדי לגשת במהירות" +#~ " לתצוגות הדוחות הנפוצות ביותר שלך. " +#~ "שמור מסננים לביקורות שבועיות, חיוב חודשי" +#~ " או מעקב אחר פרויקטים ספציפיים!" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "שפר את היעילות שלך עם קיצורי מקשים, לוח פקודות ותכונות אוטומציה." -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "טיימרים חכמים" +#~ msgid "Command Palette" +#~ msgstr "לוח פקודות" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "מעקב בזמן אמת עם זיהוי סרק ועדכונים חיים" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "גש לכל תכונה באופן מיידי מבלי לעזוב את המקלדת" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "ניהול לקוחות" +#~ msgid "Opening the Command Palette" +#~ msgstr "פתיחת לוח הפקודות" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "ארגן לקוחות עם אנשי קשר, תעריפים וקשרי פרויקטים" +#~ msgid "Press the question mark key" +#~ msgstr "הקש על מקש סימן השאלה" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "מערכת משימות" +#~ msgid "Quick search" +#~ msgstr "חיפוש מהיר" -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "חלקו פרויקטים למשימות בעזרת מעקב אחר התקדמות" +#~ msgid "Go to Projects" +#~ msgstr "עבור אל פרויקטים" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "חשבוניות PDF" +#~ msgid "Go to Tasks" +#~ msgstr "עבור אל משימות" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "הפקת חשבוניות מקצועיות מזמן מעקב" +#~ msgid "New Time Entry" +#~ msgstr "כניסת זמן חדשה" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "תכונות ליבה" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "קיצורי מקלדת" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "טיימרים להפעלה/עצירה עם שיוך פרויקט ומשימות" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "נווט מהר יותר עם פקודות מונעות " +#~ "מקלדת. הקש Shift+? כדי לראות את כל" +#~ " קיצורי הדרך." -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "הזנת זמן ידנית עם הערות ותגים" +#~ msgid "Global Search" +#~ msgstr "חיפוש גלובלי" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "ארגון לקוח ופרויקט" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "מצא במהירות פרויקטים, משימות, לקוחות ורשומות זמן מכל מקום באפליקציה." -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "גישה מבוססת תפקידים ופרופילי משתמשים" +#~ msgid "Email Notifications" +#~ msgstr "הודעות אימייל" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "תכונות מתקדמות" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "קבל הודעה על הקצאות משימות, חשבוניות " +#~ "באיחור וסיכומים שבועיים באמצעות דואר " +#~ "אלקטרוני." -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "חשבונית PDF ממותגת עם מעקב מס ותשלומים" +#~ msgid "Administrator Features" +#~ msgstr "תכונות מנהל" -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "ניתוח חזותי ודיווח מפורט" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "צור משתמשים חדשים עם אימות גמיש" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "REST API לאינטגרציות" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "הקצה תפקידים מותאמים אישית עם הרשאות ספציפיות" -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "יכולות PWA וממשק משתמש ידידותי לנייד" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "הפעל/השבת חשבונות משתמש" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "תמיכה בפלטפורמה" +#~ msgid "View user statistics and activity" +#~ msgstr "הצג נתונים סטטיסטיים ופעילות של משתמשים" -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "יישום אינטרנט" +#~ msgid "Generate API tokens for users" +#~ msgstr "צור אסימוני API עבור משתמשים" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "דפדפנים שולחניים (Chrome, Firefox, Safari, Edge)" +#~ msgid "Access Control" +#~ msgstr "בקרת גישה" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "עיצוב רספונסיבי לנייד" +#~ msgid "Granular role-based permissions system" +#~ msgstr "מערכת הרשאות מבוססת תפקידים מפורטת" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "אפליקציית אינטרנט מתקדמת (PWA)" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "תפקידים מותאמים אישית עם גישה עדינה" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "ממשק טאבלט ידידותי למגע" +#~ msgid "User data access controls" +#~ msgstr "בקרות גישה לנתוני משתמש" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "מערכות הפעלה" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "שילוב OIDC/SSO (Azure AD, Authelia וכו')" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "חלונות, macOS, לינוקס" +#~ msgid "API token management for integrations" +#~ msgstr "ניהול אסימון API עבור אינטגרציות" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "אנדרואיד ו-iOS (דפדפן)" +#~ msgid "Authentication Methods" +#~ msgstr "שיטות אימות" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "תמיכה ב-Raspberry Pi" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "שם משתמש בלבד (שימוש פנימי פשוט)" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "פריסה מעוגנת" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (אימות ארגוני)" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "תמיכה במסד נתונים" +#~ msgid "Both methods simultaneously" +#~ msgstr "שתי השיטות בו זמנית" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (מומלץ)" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "הקצאת תפקידים אוטומטית באמצעות קבוצות" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (מפתח/בדיקה)" +#~ msgid "Role & Permission Management" +#~ msgstr "ניהול תפקידים והרשאות" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "העברות אוטומטיות עם Flask-Migrate" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "צור תפקידים מותאמים אישית מעבר ל-Admin/User" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "כלי גיבוי ושחזור" +#~ msgid "Set granular permissions per feature" +#~ msgstr "הגדר הרשאות מפורטות לכל תכונה" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "מפרט טכני" +#~ msgid "Assign users to multiple roles" +#~ msgstr "הקצה משתמשים למספר תפקידים" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "מחסנית טכנולוגיה" +#~ msgid "View and manage all permissions" +#~ msgstr "הצג ונהל את כל ההרשאות" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "אחורי" +#~ msgid "General Settings" +#~ msgstr "הגדרות כלליות" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "חזית" +#~ msgid "Timezone and locale settings" +#~ msgstr "הגדרות אזור זמן ומקום" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "פְּרִיסָה" +#~ msgid "Currency configuration" +#~ msgstr "תצורת מטבע" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "יכולות מפתח" +#~ msgid "Time rounding rules" +#~ msgstr "כללי עיגול זמן" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "בזמן אמת" +#~ msgid "Self-registration settings" +#~ msgstr "הגדרות רישום עצמי" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "Timer Settings" +#~ msgstr "הגדרות טיימר" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "קוד פתוח וקהילה" +#~ msgid "Idle timeout configuration" +#~ msgstr "תצורת פסק זמן לא פעיל" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "יתרונות קוד פתוח" +#~ msgid "Single active timer mode" +#~ msgstr "מצב טיימר פעיל יחיד" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "קוד מקור מלא זמין ב-GitHub" +#~ msgid "Timer display preferences" +#~ msgstr "העדפות תצוגת טיימר" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "מורשה תחת GPL v3.0" +#~ msgid "Notification settings" +#~ msgstr "הגדרות התראות" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "פיתוח מונחה קהילה" +#~ msgid "Database Management" +#~ msgstr "ניהול מסדי נתונים" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "מעקב אחר בעיות שקוף ודוחות באגים" +#~ msgid "Create manual database backups" +#~ msgstr "צור גיבויים ידניים של מסדי נתונים" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "אפשרויות פריסה" +#~ msgid "View database migration status" +#~ msgstr "הצג סטטוס העברת מסד נתונים" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "תמונות דוקר (GHCR)" +#~ msgid "Monitor database performance" +#~ msgstr "מעקב אחר ביצועי מסד הנתונים" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "פריסה באירוח עצמי עם שליטה מלאה" +#~ msgid "Clean up old data and logs" +#~ msgstr "נקה נתונים ויומנים ישנים" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "מוכן לענן עם תצורות Compose" +#~ msgid "System Monitoring" +#~ msgstr "ניטור מערכת" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "הצג ב-GitHub" +#~ msgid "View system information and health" +#~ msgstr "הצג מידע מערכת ובריאות" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "תכונות נתמכות" +#~ msgid "Monitor application performance" +#~ msgstr "עקוב אחר ביצועי האפליקציה" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Review system logs and errors" +#~ msgstr "סקור יומני מערכת ושגיאות" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "תכונות ידידותיות לנייד" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "מותאם לטלפונים וטאבלטים" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "קבלת עזרה ומשאבים" +#~ msgid "Touch-friendly interface" +#~ msgstr "ממשק ידידותי למגע" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "תיעוד" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "פריסות מותאמות לכל גדלי המסך" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "מדריכים שלב אחר שלב לכל התכונות." +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "ניגודיות גבוהה לנראות בחוץ" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "הצג עזרה" +#~ msgid "Mobile Navigation" +#~ msgstr "ניווט נייד" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "מידע מערכת" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "סרגל הלשונית התחתונה לגישה נוחה" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "מצב, גרסאות ופרטי תצורה." +#~ msgid "Quick access to dashboard" +#~ msgstr "גישה מהירה ללוח המחוונים" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "נדרשת גישת מנהל" +#~ msgid "One-tap time logging" +#~ msgstr "רישום בזמן לחיצה אחת" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "תמיכה בקהילה" +#~ msgid "Mobile-optimized reports" +#~ msgstr "דוחות מותאמים לנייד" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "דווח על בעיות, בקש תכונות, תרום." +#~ msgid "Installation" +#~ msgstr "הַתקָנָה" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "בעיות GitHub" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "פתח את TimeTracker בדפדפן הנייד שלך" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "חפש את האפשרות \"הוסף למסך הבית\"." -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "הצג את כל ערכי הזמנים" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "הנה סקירה מהירה של העבודה שלך." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "טיימרים להפעלה/עצירה עם שיוך פרויקט ומשימות" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "נוצר ב-" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "טיימרים להפעלה/עצירה עם שיוך פרויקט ומשימות" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "עקוב אחר הנחיות ההתקנה הספציפיות לדפדפן" -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "הַפסָקָה" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "הפעל ממסך הבית שלך כמו אפליקציה מקורית" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "בְּחֲזָרָה" +#~ msgid "PWA Benefits" +#~ msgstr "יתרונות PWA" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "יכולת לא מקוונת לפונקציות בסיסיות" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Faster loading times" +#~ msgstr "זמני טעינה מהירים יותר" -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "התחיל ב" +#~ msgid "Native app-like experience" +#~ msgstr "חוויה מקורית דמוית אפליקציה" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "הודעות דחיפה (כאשר נתמכות)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "תרשימי עמודות אינטראקטיביים" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "מפרט טכני" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "תיעוד" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "פתרון בעיות ושאלות נפוצות" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "מה קורה אם אשכח לעצור את הטיימר שלי?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "הטיימר ימשיך לפעול עד שתפסיק אותו " +#~ "ידנית. אתה יכול לראות את הטיימר " +#~ "הפעיל שלך בלוח המחוונים ובדף הטיימר. " +#~ "הטיימר ממשיך גם אם אתה סוגר את " +#~ "הדפדפן או מאתחל את המכשיר. אם " +#~ "זיהוי סרק מופעל, הטיימר עשוי להשהות " +#~ "אוטומטית לאחר פרק הזמן הקצוב שהוגדר." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "האם אוכל לערוך ערכי זמן לאחר יצירתם?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "כן, אתה יכול לערוך כל רשומת זמן" +#~ " על ידי לחיצה על כפתור העריכה " +#~ "ברשימת הזנת הזמן. אתה יכול לשנות " +#~ "את הפרויקט, זמני התחלה/סיום, הערות, " +#~ "תגים, סטטוס בר חיוב והקצאת משימות. " +#~ "מנהלי מערכת יכולים לערוך את כל " +#~ "הערכים, בעוד שמשתמשים רגילים יכולים " +#~ "לערוך רק את הערכים שלהם." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "כיצד אוכל לעקוב אחר זמן עבור מספר פרויקטים?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "כברירת מחדל, אתה יכול להיות רק " +#~ "טיימר פעיל אחד בכל פעם. כדי להחליף" +#~ " פרויקטים, עצור את הטיימר הנוכחי שלך" +#~ " והתחל פרויקט חדש עבור הפרויקט השונה." +#~ " לחלופין, ניתן ליצור הזנות זמן ידניות" +#~ " לעבודה קודמת או להגדיר את המערכת " +#~ "כך שתאפשר מספר טיימרים פעילים (הגדרת " +#~ "מנהל)." + +#~ msgid "How do I export my time data?" +#~ msgstr "איך אני מייצא את נתוני הזמן שלי?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "עבור לדף הדוחות והשתמש בתכונה \"ייצוא" +#~ " CSV\". אתה יכול להחיל מסננים כדי " +#~ "לייצא נתונים ספציפיים, או לייצא ערכי " +#~ "כל הזמן. קובץ ה-CSV כולל פרטי הזנת" +#~ " כל הזמנים וניתן לפתוח אותו ב-Excel" +#~ " או ביישומי גיליונות אלקטרוניים אחרים. " +#~ "אתה יכול גם להגדיר את המפריד עבור" +#~ " תקנים אזוריים שונים." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "מה ההבדל בין זמן בר חיוב לזמן שאינו ניתן לחיוב?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "ניתן לעקוב אחר הזמן הניתן לחיוב " +#~ "למטרות חיוב הלקוח ויכול להיות משויך " +#~ "אליו תעריף שעתי. זמן שאינו ניתן " +#~ "לחיוב מיועד לעבודה פנימית שאינה מחויבת" +#~ " מלקוחות. ניתן לסמן ערכי זמן בודדים" +#~ " כניתנים לחיוב או שאינם ניתנים לחיוב," +#~ " ולפרויקטים יכולים להיות הגדרות ברירת " +#~ "מחדל לחיוב. הבחנה זו חיונית עבור " +#~ "חשבוניות מדויקות וניתוח רווחיות." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "איך אני יוצר חשבונית מכניסות הזמן שלי?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "נווט אל חשבוניות ← צור חשבונית, " +#~ "הגדר את פרטי הלקוח והפרויקט, ולאחר " +#~ "מכן השתמש ב\"צור מכניסות זמן\" כדי " +#~ "ליצור אוטומטית פריטי חשבונית מהזמן שלך" +#~ " במעקב. ניתן לסנן לפי טווח תאריכים" +#~ " ופרויקט, והמערכת תקבץ את כניסות הזמן" +#~ " בצורה חכמה. סקור את הפריטים שנוצרו" +#~ " וייצא כקובץ PDF מקצועי." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "האם אוכל להשתמש ב-TimeTracker במכשיר הנייד שלי?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "כֵּן! TimeTracker מגיב באופן מלא ועובד" +#~ " נהדר במכשירים ניידים. אתה יכול " +#~ "להתקין אותו כאפליקציית אינטרנט מתקדמת " +#~ "(PWA) לחוויה דמוית מקור. הממשק הנייד " +#~ "כולל סרגל כרטיסיות תחתון לניווט קל " +#~ "ופקדים מותאמים למגע למעקב אחר זמן " +#~ "בדרכים." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "כיצד אוכל להשתמש בפלטת הפקודות ובקיצורי המקלדת?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "הקש על מקש סימן השאלה (?) כדי " +#~ "לפתוח את לוח הפקודות. משם, תוכל " +#~ "להקליד כדי לחפש כל פעולה או יעד" +#~ " ניווט. השתמש ברצפי מקלדת כמו \"g " +#~ "d\" עבור לוח המחוונים, \"g p\" " +#~ "עבור Projects, או \"n e\" עבור New" +#~ " Entry. הקש Shift+? כדי לראות את " +#~ "כל קיצורי הדרך הזמינים. הקש Ctrl+K " +#~ "(או Cmd+K ב-Mac) לחיפוש מהיר." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "כיצד אוכל ליצור ערכים בכמות גדולה למספר ימים?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "נווט לעבודה ← הזנת זמן בכמות " +#~ "גדולה. בחר את הפרויקט שלך, בחר " +#~ "טווח תאריכים, קבע את זמני ההתחלה " +#~ "והסיום היומיים שלך, ודלג על סופי " +#~ "שבוע. המערכת תיצור כניסות זמן זהות " +#~ "לכל יום בטווח. זה מושלם עבור רישום" +#~ " דפוסי עבודה קבועים או מילוי זמן " +#~ "עבר כאשר עבדת שעות עקביות." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "מהן תבניות הזנת זמן וכיצד אני משתמש בהן?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "תבניות הזנת זמן מאפשרות לך לשמור " +#~ "תצורות הזנת זמן בשימוש תכוף. בעת " +#~ "יצירת הזנת זמן ידנית, סמן את " +#~ "\"שמור כתבנית\" כדי לשמור את הפרויקט," +#~ " המשימה וההערות. מאוחר יותר, בעת " +#~ "יצירת ערכים חדשים, תוכל לבחור תבנית " +#~ "למילוי מהיר של פרטים אלה. התבניות " +#~ "הן אישיות וגלויות רק לך." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "כיצד אוכל לעקוב אחר הוצאות ולהוסיף אותן לחשבוניות?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "עבור אל הוצאות ← הוצאה חדשה כדי" +#~ " לרשום הוצאות עסקיות. העלה תמונות " +#~ "קבלה, סיווג את ההוצאה וסמן אותה " +#~ "כניתנת לחיוב במידת הצורך. בעת יצירת " +#~ "חשבוניות, תוכל לכלול הוצאות אלו כפריטי" +#~ " שורה. הוצאות תומכות בתהליכי עבודה של" +#~ " אישור, מעקב אחר החזרים וניתן לקשר" +#~ " אותן לפרויקטים ספציפיים." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "האם אני יכול להשתמש ב-Markdown בתיאורים?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "כֵּן! תיאורי פרויקטים ומשימות תומכים " +#~ "בעיצוב Markdown מלא. אתה יכול להשתמש " +#~ "מודגש, נטוי, כותרות, רשימות, קישורים, " +#~ "בלוקי קוד, טבלאות ותמונות. זה מאפשר " +#~ "לך ליצור תיעוד עשיר ומעוצב היטב " +#~ "ישירות בפרויקטים ובמשימות שלך. עורך " +#~ "Markdown כולל מצב תצוגה מקדימה ותומך " +#~ "בערכת נושא כהה." + +#~ msgid "Where can I get additional help?" +#~ msgstr "היכן אוכל לקבל עזרה נוספת?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "דווח על בעיות ובקש תכונות" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "כמנהל, אתה יכול לגשת למידע נוסף על המערכת ולאבחון ב-" + +#~ msgid "section." +#~ msgstr "סָעִיף." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "עדיין צריך עזרה?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "לא מוצא את מה שאתה מחפש? להלן משאבים נוספים:" + +#~ msgid "Complete Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Documentation Index" +#~ msgstr "" -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "הַתאָמָה" +#~ msgid "Getting Started" +#~ msgstr "" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "מנהל מערכת" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "מנהל מערכת" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "טיימרים חכמים" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "אִתחוּל" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "מאגר GitHub" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "הַפסָקָה" +#~ msgid "Report Issue" +#~ msgstr "דווח על בעיה" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Open support" +#~ msgstr "תְמִיכָה" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "אין טיימר פעיל." +#~ msgid "Search Results" +#~ msgstr "תוצאות חיפוש" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "חפש הערות או תגים" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "סיום סשן" +#~ msgid "Results" +#~ msgstr "תוצאות" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "האם אתה בטוח שברצונך למחוק את רשומת הזמן הזו? לא ניתן לבטל פעולה זו." -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "No results found" +#~ msgstr "לא נמצאו תוצאות" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "זְמַן" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "נסה שאילתה אחרת או בדוק את האיות שלך." -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "למשל, פגישת לקוח, ביקור באתר" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "פרטים נוספים..." -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "הגדרות שעות נוספות" +#~ msgid "e.g., Office, Home" +#~ msgstr "למשל, משרד, בית" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "למשל, אתר לקוח, שדה תעופה" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "למשל, 12345" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "למשל, 12400" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "יישר ימינה" +#~ msgid "e.g., VW Golf" +#~ msgstr "למשל, פולקסווגן גולף" -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "זמן מעקב. הישאר מאורגן." +#~ msgid "e.g., ABC-123" +#~ msgstr "למשל, ABC-123" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "סך שעות העבודה" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "מעקב אחר זמן" -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "התראות פעילות" +#~ msgid "Back to Mileage" +#~ msgstr "חזרה לתפקידים" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "תאריך מ" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "Add Point" +#~ msgstr "הוסף הערה" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "מעקב אחר הוצאות" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "ערך משוער" +#~ msgid "Track ID" +#~ msgstr "במעקב" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Idle" +#~ msgstr "כּוֹתֶרֶת" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "כניסות זמן השבוע" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Tracking" +#~ msgstr "מעקב אחר זמן" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "שָׁבוּעַ" +#~ msgid "GPS tracking started" +#~ msgstr "התחל מעקב אחר זמן" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "אֶשׁתָקַד" +#~ msgid "Track point added" +#~ msgstr "עקוב אחר תשלום" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "GPS tracking stopped" +#~ msgstr "התחל מעקב אחר זמן" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Expense created" +#~ msgstr "הוצאה נדחתה" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "ערכים אחרונים" +#~ msgid "Filter Mileage" +#~ msgstr "פילטר קילומטראז'" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "הצג הכל" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "המשך - התחל טיימר חדש עם אותם מאפיינים" +#~ msgid "Purpose, location..." +#~ msgstr "מטרה, מיקום..." -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "ערוך ערך" +#~ msgid "Optional approval notes..." +#~ msgstr "הערות אישור אופציונליות..." -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "ערך כפול" +#~ msgid "Rejection reason (required)" +#~ msgstr "סיבת דחייה (חובה)" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "מחק ערך" +#~ msgid "More navigation" +#~ msgstr "ניווט נייד" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "לא נמצאו ערכים אחרונים." +#~ msgid "Main" +#~ msgstr "אֶלֶקטרוֹנִי" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "הקלד פקודה או חיפוש..." -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "יעד שבועי" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "ימים נותרו" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "צוֹרֶך" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "להגיע למטרה" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "אין יעד שבועי" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "הגדר יעד שבועי למעקב אחר ההתקדמות שלך" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "צור יעד" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "פרויקטים מובילים (30 ימים)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "דוח משתמש" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "תרשימי עוגה של חלוקת זמן" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "אין פעילות ב-30 הימים האחרונים." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "התחל מעקב אחר זמן" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "פרויקטים מובילים (30 ימים)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "אין פעילות ב-30 הימים האחרונים." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "%(count)d ציטוטים משוכפלים" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "שגיאה ביצירת PDF: %(error)s" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "תמיכה בפלטפורמה" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "מדריך להתחלה מהירה" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "תבניות דואר אלקטרוני" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "משימה (אופציונלי)" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "הערות (אופציונלי)" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "משימה (אופציונלי)" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "למשל, פגישה, פיתוח, ניהול" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "הקלט תשלום חדש" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "סך התשלומים" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "עמלות שער" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Filter Payments" +#~ msgstr "סינון תשלומים" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "ID" +#~ msgstr "בתשלום" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "מחק תשלומים נבחרים" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "שנה סטטוס עבור תשלומים נבחרים" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "חשבונית קשורה" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "למשל, נסיעת עסקים לברלין" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "למשל, DE, US, GB" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "תמיכה בפיתוח" +#~ msgid "e.g., Berlin" +#~ msgstr "למשל, ברלין" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "סינון תביעות" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "מחק תביעות נבחרות" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "שנה סטטוס עבור תביעות נבחרות" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "הערות נוספות לגבי תעריף זה..." -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "האם אתה בטוח שברצונך למחוק את התעריף הזה ליום יום?" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "מחק תעריף ליום" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "פרויקט בר חיוב" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "שעות משוערות" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "סכום תקציב" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "שם המשימה" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "קוד פרויקט" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "Create Project" +#~ msgstr "צור פרויקט" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "תיעוד מלא ומדריך למשתמש" +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "ניווט מהיר" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "סנן קטעים..." +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "התחלה מהירה" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "דוחות ואנליטיקס" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "תכונות פרודוקטיביות" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "תכונות אדמין" +#~ msgid "Kanban board columns" +#~ msgstr "עמודות לוח Kanban" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "שימוש בנייד" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "תיעוד" +#~ msgid "Edit swimlane" +#~ msgstr "ערוך את נתיב השחייה" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "פתרון בעיות" +#~ msgid "Column" +#~ msgstr "עַמוּדָה" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "מרכז העזרה של TimeTracker" +#~ msgid "List View" +#~ msgstr "תצוגת רשימה" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "כל מה שאתה צריך לדעת כדי להפיק את המרב מ-TimeTracker" +#~ msgid "Grid View" +#~ msgstr "תצוגת רשת" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "התחל מעקב אחר זמן" +#~ msgid "Rate" +#~ msgstr "תַאֲרִיך" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "צפה בפרויקטים" +#~ msgid "Edit Project" +#~ msgstr "ערוך פרויקט" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "הפקת דוחות" +#~ msgid "Add Cost" +#~ msgstr "הוסף הערה" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "אסימוני API" +#~ msgid "Add Cost to Project" +#~ msgstr "חזרה לפרויקט" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "למשל, נסיעה לפגישת לקוחות" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "מדריך להתחלה מהירה" +#~ msgid "Brief description of the cost" +#~ msgstr "תיאור קצר של קטגוריה זו..." -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "למשתמשים חדשים" +#~ msgid "Select category" +#~ msgstr "קָטֵגוֹרִיָה" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "התחבר עם שם המשתמש שלך (אין צורך בסיסמה)" +#~ msgid "Materials" +#~ msgstr "חוֹמֶר" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "חקור את לוח המחוונים כדי לראות את הסקירה הכללית שלך" +#~ msgid "Software/Licenses" +#~ msgstr "למשל, רישיון תוכנה" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "התחל את הטיימר הראשון שלך בפרויקט קיים" +#~ msgid "Additional details about this cost" +#~ msgstr "פרטים נוספים על התאמה זו" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "הצג את ערכי הזמן שלך בדוחות" +#~ msgid "Billable to client" +#~ msgstr "חזרה ללקוח" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "למנהלים" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "הגדר לקוחות בקטע ניהול לקוחות" +#~ msgid "Add Extra Good" +#~ msgstr "הוסף את Extra Good" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "צור פרויקטים והקצה אותם ללקוחות" +#~ msgid "Add a product or service to" +#~ msgstr "הוסף מוצר או שירות ל" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "קבע את הגדרות המערכת (אזור זמן, מטבע וכו')" +#~ msgid "Back to Project" +#~ msgstr "חזרה לפרויקט" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "נהל משתמשים והרשאות" +#~ msgid "SKU/Product Code" +#~ msgstr "מק\"ט/קוד מוצר" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "טיפ מקצועי:" +#~ msgid "What happens when you archive a project?" +#~ msgstr "מה קורה כשאתה מעביר פרויקט לארכיון?" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "השתמש בממשק הידידותי לנייד כדי לעקוב אחר זמן בדרכים. הטיימר ממשיך לפעול גם אם אתה סוגר את הדפדפן שלך!" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "הפרויקט יוסתר מרשימות פרויקטים פעילות" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "מעקב בזמן אמת עם זיהוי סרק אוטומטי ועדכוני WebSocket" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "לא ניתן להוסיף ערכי זמן חדשים לפרויקט זה" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "כניסה ידנית" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "הנתונים והזמנים הקיימים נשמרים" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "רישום זמן באופן ידני עם זמני התחלה וסיום מותאמים אישית" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "ניתן להסיר את הפרויקט מאוחר יותר במידת הצורך" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "הפעלת טיימר" +#~ msgid "Reason for Archiving" +#~ msgstr "סיבה לארכיון" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "למשל, הפרויקט הושלם, חוזה הלקוח הסתיים, הפרויקט בוטל וכו'." -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "נווט אל דף הטיימר או לוח המחוונים" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "הוספת סיבה מסייעת בארגון הפרויקט והתייחסות עתידית." -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "בחר פרויקט מהתפריט הנפתח" +#~ msgid "Quick Select" +#~ msgstr "בחירה מהירה" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "אפשר לבחור משימה למעקב מפורט יותר" +#~ msgid "Project completed successfully" +#~ msgstr "הפרויקט הסתיים בהצלחה" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "הוסף הערות לגבי מה שאתה עובד עליו (אופציונלי)" +#~ msgid "Project Completed" +#~ msgstr "הפרויקט הושלם" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "הוסף תגים מופרדים בפסיקים (אופציונלי)" +#~ msgid "Client contract ended" +#~ msgstr "חוזה הלקוח הסתיים" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "לחץ על \"התחל טיימר\"" +#~ msgid "Contract Ended" +#~ msgstr "החוזה הסתיים" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "תכונות טיימר" +#~ msgid "Project cancelled by client" +#~ msgstr "הפרויקט בוטל על ידי הלקוח" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "תצוגת משך זמן אמת" +#~ msgid "Project on hold indefinitely" +#~ msgstr "הפרויקט בהמתנה ללא הגבלת זמן" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "On Hold" +#~ msgstr "בהמתנה" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Maintenance period ended" +#~ msgstr "תקופת התחזוקה הסתיימה" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Maintenance Ended" +#~ msgstr "התחזוקה הסתיימה" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "ממשיך לפעול אם הדפדפן נסגר" +#~ msgid "Archive Project" +#~ msgstr "פרויקט ארכיון" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "זיהוי סרק אוטומטי (ניתן להגדרה)" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "הגדר פרויקט חדש כדי לארגן את העבודה שלך ולעקוב אחר זמן ביעילות" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "טיימר פעיל אחד לכל משתמש (ניתן להגדרה)" +#~ msgid "Enter a descriptive project name" +#~ msgstr "הזן שם פרויקט תיאורי" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "עדכונים חיים של WebSocket" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "בחר שם ברור ותיאורי המסביר את היקף הפרויקט" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "הזנת זמן ידנית" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "קוד קצר, למשל, ABC" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "צור רשומות זמן באופן ידני כאשר אתה צריך לתעד זמן שהייה מחוץ למחשב או להתאים ערכים קיימים." +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "אופציונלי: תג קצר מוצג בכרטיסי Kanban" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "מידע נדרש" +#~ msgid "Create new client" +#~ msgstr "צור לקוח חדש" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "בחירת פרויקט" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "ספק מידע מפורט על הפרויקט, היעדים והתוצרים..." -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "תאריך ושעת התחלה" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "אופציונלי: הוסף הקשר, יעדים או דרישות ספציפיות עבור הפרויקט" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "תאריך ושעה סיום" +#~ msgid "Enable billing for this project" +#~ msgstr "אפשר חיוב עבור פרויקט זה" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "מידע אופציונלי" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "השאר ריק עבור פרויקטים שאינם ניתנים לחיוב" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "הקצאת משימה" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "מספר הזמנה, הפניה לחוזה וכו'." -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "תיאור/הערות" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "אופציונלי: הוסף מספר סימוכין או מזהה למטרות חיוב" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "תגים לסיווג" +#~ msgid "e.g. 10000.00" +#~ msgstr "לְמָשָׁל 10000.00" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "ביטול סטטוס בר חיוב" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "אופציונלי: הגדר תקציב פרויקט כולל למעקב אחר ההוצאה" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "תכונות מתקדמות להזנת זמן" +#~ msgid "Alert Threshold (%)" +#~ msgstr "סף התראה (%)" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "כניסה בתפזורת" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "הודע כאשר התקציב שנצרך חורג מהסף הזה" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "צור מספר ערכי זמן במשך ימים רצופים עם אותו פרויקט ומשך זמן. מושלם עבור דפוסי עבודה רגילים." +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "תבניות" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "שמור ערכי זמן בשימוש תכוף כתבניות לשימוש חוזר מהיר. שומר פרויקט, משימה והערות." +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "דמיין את רשומות הזמן שלך בלוח שנה. גרור ושחרר כדי לתזמן מחדש או לחץ על תאריכים כדי להוסיף ערכים." +#~ msgid "Project Creation Tips" +#~ msgstr "טיפים ליצירת פרויקטים" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "מידע על הפרויקט" +#~ msgid "Clear Naming" +#~ msgstr "נקה שמות" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "שם פרויקט תיאורי" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "השתמש בשמות תיאוריים המציינים בבירור את מטרת הפרויקט" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "ארגון לקוחות משויך" +#~ msgid "Billing Setup" +#~ msgstr "הגדרת חיוב" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "פרטי הפרויקט והיקפו" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "הגדר תעריפים מתאימים לשעה בהתבסס על מורכבות הפרויקט ותקציב הלקוח" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "פעיל, הושלם או הועבר לארכיון" +#~ msgid "Detailed Description" +#~ msgstr "תיאור מפורט" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "פרטי חיוב" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "כלול יעדי פרויקט, תוצרים ודרישות מפתח" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "האם יש לעקוב אחר זמן לחיוב" +#~ msgid "Client Selection" +#~ msgstr "בחירת לקוח" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "תעריף עבור חישובי זמן לחיוב" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "בחר את הלקוח הנכון כדי להבטיח ארגון נכון של הפרויקט" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "אסמכתא לחיוב" +#~ msgid "Creating..." +#~ msgstr "יוצר..." -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "מספר PO או קוד חיוב" +#~ msgid "Could not create client. Please try again." +#~ msgstr "לא ניתן ליצור לקוח. אנא נסה שוב." -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "תפעול פרויקט" +#~ msgid "Client created" +#~ msgstr "הלקוח נוצר" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "יצירת פרויקטים חדשים עם קשרי לקוחות" +#~ msgid "Network error while creating client" +#~ msgstr "שגיאת רשת בעת יצירת לקוח" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "ערוך פרויקטים קיימים כדי לעדכן פרטים" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "לוח מחוונים וניתוח פרויקטים" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "ארכיון פרויקטים כדי להסתיר מפני טיימרים (שומר נתונים)" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "מחק פרויקטים (מסיר את כל ערכי הזמן המשויכים)" +#~ msgid "Budget Analysis" +#~ msgstr "ניתוח תקציב" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "שיטות עבודה מומלצות" +#~ msgid "All Time" +#~ msgstr "כל הזמן" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "השתמש בשמות פרויקטים תיאוריים" +#~ msgid "Last 7 Days" +#~ msgstr "7 הימים האחרונים" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "הגדר תעריפים לשעה מדויקים לחיוב" +#~ msgid "Last 30 Days" +#~ msgstr "30 הימים האחרונים" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "העבר לארכיון במקום למחוק כשאפשר" +#~ msgid "Last 3 Months" +#~ msgstr "3 חודשים אחרונים" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "השתמש באסמכתאות לחיוב למעקב חיצוני" +#~ msgid "Last Year" +#~ msgstr "אֶשׁתָקַד" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "מערכת ניהול הלקוחות מסייעת לארגן את עבודתך על ידי ארגוני לקוחות, מניעת שגיאות וייעול יצירת הפרויקט." +#~ msgid "estimated" +#~ msgstr "מְשׁוֹעָר" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "מידע לקוח" +#~ msgid "Budget Used" +#~ msgstr "תקציב בשימוש" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "שם הארגון" +#~ msgid "of budget" +#~ msgstr "של תקציב" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "שם חברה או לקוח" +#~ msgid "Tasks Complete" +#~ msgstr "משימות הושלמו" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "פרטי קשר ראשיים" +#~ msgid "completion" +#~ msgstr "סִיוּם" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "דואר אלקטרוני וטלפון" +#~ msgid "Team Members" +#~ msgstr "חברי צוות" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "פרטי התקשרות" +#~ msgid "contributing" +#~ msgstr "תורם" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "כתובת העסק" +#~ msgid "Budget vs. Actual" +#~ msgstr "תקציב לעומת בפועל" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "הטבות" +#~ msgid "No budget set for this project" +#~ msgstr "לא הוגדר תקציב לפרויקט זה" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "בחירת תפריט נפתח מונעת שגיאות הקלדה" +#~ msgid "Task Status Distribution" +#~ msgstr "חלוקת סטטוס המשימות" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "תעריפי ברירת מחדל מאכלסים פרויקטים באופן אוטומטי" +#~ msgid "No tasks created yet" +#~ msgstr "עדיין לא נוצרו משימות" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "מתן שמות לקוחות עקביים" +#~ msgid "Team Member Contributions" +#~ msgstr "תרומות חברי צוות" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "ארגון פרויקט קל יותר" +#~ msgid "No time entries recorded yet" +#~ msgstr "עדיין לא נרשמו כניסות זמן" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "ספירת פרויקטים" +#~ msgid "Time Tracking Timeline" +#~ msgstr "ציר זמן מעקב זמן" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "פרויקטים טוטאליים ופעילים" +#~ msgid "Select a time period to view timeline" +#~ msgstr "בחר פרק זמן כדי להציג את ציר הזמן" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "סך שעות העבודה" +#~ msgid "Team Member Details" +#~ msgstr "פרטי חבר צוות" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "הערכת עלות" +#~ msgid "tasks" +#~ msgstr "משימות" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "סכומי חיוב משוערים" +#~ msgid "No team members have logged time yet" +#~ msgstr "אין חברי צוות שרשמו עדיין זמן" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "חלק פרויקטים למשימות הניתנות לניהול עם מעקב מפורט וניטור התקדמות." +#~ msgid "Attention Required" +#~ msgstr "תשומת לב נדרשת" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "מאפייני משימה" +#~ msgid "task(s) are overdue" +#~ msgstr "משימות באיחור" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "שם ותיאור" +#~ msgid "Edit Cost" +#~ msgstr "עלות יחידה" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "זיהוי משימה ברור" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "רמות עדיפות" +#~ msgid "Update Cost" +#~ msgstr "עדכון תפקידים" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "נמוך, בינוני, גבוה, דחוף" +#~ msgid "Edit Extra Good" +#~ msgstr "ערוך Extra Good" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "תאריכי יעד" +#~ msgid "Manage products and services for this project" +#~ msgstr "ניהול מוצרים ושירותים עבור פרויקט זה" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "מעקב אחר מועדים" +#~ msgid "Total Goods" +#~ msgstr "סך סחורות" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "מְשִׁימָה" +#~ msgid "Billable Amount" +#~ msgstr "סכום בר חיוב" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "בעלות על משימה" +#~ msgid "Categories" +#~ msgstr "קטגוריות" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "מעקב סטטוס" +#~ msgid "Invoiced" +#~ msgstr "חשבונית" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "To Do - לא התחיל" +#~ msgid "Non-billable" +#~ msgstr "לא ניתן לחיוב" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "בתהליך - עובד כרגע" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "האם אתה בטוח שברצונך למחוק את הטוב הנוסף הזה?" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "סקירה - מוכן לסקירה" +#~ msgid "Delete Extra Good" +#~ msgstr "מחק את Extra Good" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "בוצע - הושלם" +#~ msgid "No extra goods found for this project" +#~ msgstr "לא נמצאו מוצרים נוספים עבור הפרויקט הזה" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "מבוטל - אין צורך" +#~ msgid "Add Your First Good" +#~ msgstr "הוסף את הטוב הראשון שלך" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "תכונות מעקב אחר זמן" +#~ msgid "Breakdown by Category" +#~ msgstr "פירוט לפי קטגוריות" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "הפעל טיימרים ישירות ממשימות" +#~ msgid "item(s)" +#~ msgstr "פריט(ים)" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "קישור כניסות זמן למשימות ספציפיות" +#~ msgid "Filter Projects" +#~ msgstr "סינון פרויקטים" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "עקוב אחר שעות משוערות לעומת שעות בפועל" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "עקוב אחר התקדמות המשימה באופן אוטומטי" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "תצוגות משימות" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "המשימות שלי - המשימות שהוקצו לך" +#~ msgid "Mark project as Inactive?" +#~ msgstr "לסמן את הפרויקט כלא פעיל?" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "כל המשימות - רשימת משימות מלאה" +#~ msgid "Change Project Status" +#~ msgstr "שנה סטטוס הפרויקט" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "משימות באיחור - פריטים שהועברו" +#~ msgid "Activate project?" +#~ msgstr "להפעיל את הפרויקט?" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "משימות פרויקט - משימות בתוך פרויקטים" +#~ msgid "Activate Project" +#~ msgstr "הפעל את הפרויקט" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "תכונות שיתוף פעולה" +#~ msgid "Archive" +#~ msgstr "ארכיון" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "הערות למשימה - דיונים משורשרים על משימות" +#~ msgid "Unarchive project?" +#~ msgstr "להוציא את הפרויקט מהארכיון?" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "תמיכה ב-Markdown - עיצוב עשיר בתיאורים" +#~ msgid "Unarchive Project" +#~ msgstr "הוצאת פרויקט מהארכיון" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "אזכורי משתמשים - תגים חברי צוות (אם מופעל)" +#~ msgid "Unarchive" +#~ msgstr "הוצא מהארכיון" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "קבצים מצורפים - צרף קבצים למשימות (אם מופעל)" +#~ msgid "Delete Project" +#~ msgstr "מחק את הפרויקט" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "עיצוב Markdown" +#~ msgid "Archive Information" +#~ msgstr "מידע בארכיון" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "תיאורי משימות ופרויקטים תומכים ב-Markdown:" +#~ msgid "Archived on:" +#~ msgstr "בארכיון ב:" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**מודגש**, *נטוי*, ~~קו חוצה~~" +#~ msgid "Archived by:" +#~ msgstr "בארכיון על ידי:" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# כותרות, - רשימות, [קישורים](כתובת אתר)" +#~ msgid "Reason:" +#~ msgstr "לְנַמֵק:" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```קוביות קוד```, טבלאות, תמונות" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "דמיין את זרימת העבודה שלך עם לוח Kanban גרור ושחרר לניהול משימות אינטואיטיבי." +#~ msgid "Budget Overview" +#~ msgstr "סקירת תקציב" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "תכונות לוח" +#~ msgid "Over" +#~ msgstr "מֵעַל" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "עמודות הניתנות להתאמה אישית התואמות את סטטוסי המשימות" +#~ msgid "View Full Budget Analysis" +#~ msgstr "צפה בניתוח התקציב המלא" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "גרור ושחרר משימות בין עמודות" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "סנן לפי פרויקט, משתמש או עדיפות" +#~ msgid "Tasks for this project" +#~ msgstr "משימות לפרויקט זה" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "חיפוש מהיר בכל המשימות" +#~ msgid "Due" +#~ msgstr "בשל" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "שימוש בלוח Kanban" +#~ msgid "Estimated" +#~ msgstr "מְשׁוֹעָר" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "גישה מתפריט המשימות או מדף הפרויקט" +#~ msgid "No tasks for this project." +#~ msgstr "אין משימות עבור הפרויקט הזה." -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "גרור משימות לעמודות שונות כדי לשנות סטטוס" +#~ msgid "Move up" +#~ msgstr "עבר ל" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "לחץ על כרטיס משימה כדי להציג/לערוך פרטים" +#~ msgid "Move down" +#~ msgstr "עבר ל" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "השתמש במסננים כדי להתמקד בעבודה ספציפית" +#~ msgid "Manual entry" +#~ msgstr "כניסה ידנית" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "לוח Kanban מושלם לתכנון ספרינט ולסטנדאפים יומיומיים. כל עמודה מייצגת שלב בתהליך העבודה שלך!" +#~ msgid "From stock" +#~ msgstr "מלאי נמוך" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "מעקב אחר הוצאות" +#~ msgid "Duplicate" +#~ msgstr "לְשַׁכְפֵּל" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "עקוב אחר הוצאות העסק, נהל קבלות וטפל ביעילות בהחזרים." +#~ msgid "Mark as Sent" +#~ msgstr "סמן כנשלח" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "תכונות הוצאות" +#~ msgid "Accepted" +#~ msgstr "מְקוּבָּל" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "סיווג הוצאות (נסיעות, ארוחות, אספקה ​​וכו')" +#~ msgid "Create Your First Quote" +#~ msgstr "צור את הציטוט הראשון שלך" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "צרף תמונות קבלה ומסמכים" +#~ msgid "Learn More" +#~ msgstr "למידע נוסף" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "עקוב אחר סכומים, מס ואמצעי תשלום" +#~ msgid "Back to Quote" +#~ msgstr "חזרה לציטוט" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "תהליך אישור עבור בקשות הוצאות" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "קבלת הצעת מחיר זו תיצור פרויקט חדש עם התקציב מתוך הצעת המחיר." -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "חיוב והחזר" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "הפרויקט ייווצר עם התקציב מתוך הצעת המחיר" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "סמן הוצאות כניתנות לחיוב ללקוחות" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "קבל הצעת מחיר וצור פרויקט" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "כלול הוצאות בחשבוניות הלקוח" +#~ msgid "Create Quote" +#~ msgstr "צור הצעת מחיר" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "עקוב אחר מצב החזר" +#~ msgid "Quote title" +#~ msgstr "כותרת ציטוט" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "קישור הוצאות לפרויקטים ספציפיים" +#~ msgid "Quote description" +#~ msgstr "תיאור ציטוט" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "שיא הוצאות" +#~ msgid "Quote line items" +#~ msgstr "ציטוט פריטים" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "הזינו פרטים והעלו קבלה" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "שלח לאישור" +#~ msgid "Add line" +#~ msgstr "מוֹעֵד אַחֲרוֹן" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "מנהל סוקר ומאשר" +#~ msgid "Line type" +#~ msgstr "סוג תוכן" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "חשבונית/החזר" +#~ msgid "Stock" +#~ msgstr "מלאי נמוך" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "הוסף לחשבונית או החזר" +#~ msgid "Line items subtotal" +#~ msgstr "סכום משנה של פריטים" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "עקוב אחר תשלום" +#~ msgid "Costs" +#~ msgstr "עֲלוּת" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "מעקב אחר מצב ההחזר" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "למשל, נסיעות, ארוחות" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "חשבונית מקצועית" +#~ msgid "Add cost" +#~ msgstr "הוסף הערה" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "יצירת PDF מקצועית" +#~ msgid "Costs subtotal" +#~ msgstr "סכום משנה של פריטים" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "מיתוג חברה ולוגו" +#~ msgid "Extra goods" +#~ msgstr "סחורה נוספת" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "מספור חשבוניות אוטומטי" +#~ msgid "Products, licenses, hardware" +#~ msgstr "מוצרים, חומרים, רישיונות וסחורות אחרות" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "חישובי מס" +#~ msgid "Add good" +#~ msgstr "הוסף טוב" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "שילוב זמן" +#~ msgid "Goods subtotal" +#~ msgstr "סה\"כ סחורות" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "צור מכניסות זמן" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "סה\"כ ציטוטים" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "קיבוץ חכם לפי משימה/פרויקט" +#~ msgid "Financial Details" +#~ msgstr "פרטים פיננסיים" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "מניעת חיוב כפול" +#~ msgid "Select payment terms" +#~ msgstr "בחר תנאי תשלום" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "השתמש בתעריפים לפי שעה לפרויקט" +#~ msgid "Due on Receipt" +#~ msgstr "לפירעון בקבלה" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "הגדרת פרטי הלקוח והפרויקט" +#~ msgid "Or enter custom payment terms" +#~ msgstr "או הזן תנאי תשלום מותאמים אישית" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "הוסף פריטים" +#~ msgid "Use custom terms" +#~ msgstr "השתמש במונחים מותאמים אישית" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "צור מזמן או הוסף באופן ידני" +#~ msgid "Discount" +#~ msgstr "דִיסקוֹנט" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "בדוק ושלח" +#~ msgid "Discount Type" +#~ msgstr "סוג הנחה" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "ייצא PDF ועדכון סטטוס" +#~ msgid "No Discount" +#~ msgstr "אין הנחה" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "מעקב אחר מצב ותשלומים" +#~ msgid "Percentage (%)" +#~ msgstr "אחוז (%)" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "דוחות סטנדרטיים" +#~ msgid "Fixed Amount" +#~ msgstr "סכום קבוע" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "דוח פרויקט - פירוט זמן לפי פרויקט" +#~ msgid "Discount Amount" +#~ msgstr "סכום הנחה" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "דוח משתמש - מדדי ביצועים בודדים" +#~ msgid "0.00" +#~ msgstr "0.00" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "דוח סיכום - מדדי מפתח ומגמות" +#~ msgid "Coupon Code" +#~ msgstr "קוד קופון" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "דוח כניסת זמן - יומני זמן מפורטים" +#~ msgid "Optional coupon code" +#~ msgstr "קוד קופון אופציונלי" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "אפשרויות ייצוא" +#~ msgid "Discount Reason" +#~ msgstr "סיבת ההנחה" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "ייצוא CSV - לניתוח חיצוני" +#~ msgid "Reason for discount" +#~ msgstr "סיבה להנחה" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "תוחמים ניתנים להגדרה" +#~ msgid "Approval Workflow" +#~ msgstr "זרימת עבודה של אישור" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "טווחי תאריכים מותאמים אישית" +#~ msgid "Requires approval before sending" +#~ msgstr "דורש אישור לפני השליחה" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "ייצוא נתונים מסוננים" +#~ msgid "Additional Information" +#~ msgstr "מידע נוסף" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "אפשרויות סינון" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "הערות פנימיות (לא גלויות ללקוח)" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "טווח תאריכים - תאריכי התחלה וסיום מותאמים אישית" +#~ msgid "These notes are only visible to your team" +#~ msgstr "הערות אלו גלויות רק לצוות שלך" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "פרויקט - סינון לפי פרויקטים ספציפיים" +#~ msgid "Terms and Conditions" +#~ msgstr "תנאים והגבלות" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "משתמש - סינון לפי חברי צוות" +#~ msgid "Terms and conditions" +#~ msgstr "תנאים והגבלות" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "לקוח - סינון לפי ארגון לקוח" +#~ msgid "These terms will be visible to the client" +#~ msgstr "תנאים אלו יהיו גלויים ללקוח" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "מסננים שמורים - שמור מסננים בשימוש תכוף" +#~ msgid "Edit Quote" +#~ msgstr "ערוך ציטוט" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "אנליטיקה חזותית" +#~ msgid "Client cannot be changed" +#~ msgstr "לא ניתן לשנות את הלקוח" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "תרשימי עמודות אינטראקטיביים" +#~ msgid "Update Quote" +#~ msgstr "עדכון הצעת מחיר" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "תרשימי עוגה של חלוקת זמן" +#~ msgid "Total Quotes" +#~ msgstr "סה\"כ ציטוטים" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "ניתוח מגמות לאורך זמן" +#~ msgid "Acceptance Rate" +#~ msgstr "שיעור קבלה" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "תרשימים מותאמים לנייד" +#~ msgid "Avg Quote Value" +#~ msgstr "ערך ציטוט ממוצע" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "השתמש במסננים שמורים כדי לגשת במהירות לתצוגות הדוחות הנפוצות ביותר שלך. שמור מסננים לביקורות שבועיות, חיוב חודשי או מעקב אחר פרויקטים ספציפיים!" +#~ msgid "Quotes by Status" +#~ msgstr "ציטוטים לפי סטטוס" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "שפר את היעילות שלך עם קיצורי מקשים, לוח פקודות ותכונות אוטומציה." +#~ msgid "Top Clients by Quotes" +#~ msgstr "לקוחות מובילים לפי ציטוטים" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "לוח פקודות" +#~ msgid "Filter Quotes" +#~ msgstr "סינון ציטוטים" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "גש לכל תכונה באופן מיידי מבלי לעזוב את המקלדת" +#~ msgid "Search quotes..." +#~ msgstr "חפש ציטוטים..." -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "פתיחת לוח הפקודות" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "האם אתה בטוח שאתה רוצה לשכפל" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "הקש על מקש סימן השאלה" +#~ msgid "quote(s)?" +#~ msgstr "ציטוטים?" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "חיפוש מהיר" +#~ msgid "Are you sure you want to mark" +#~ msgstr "האם אתה בטוח שאתה רוצה לסמן" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "עבור אל פרויקטים" +#~ msgid "quote(s) as sent?" +#~ msgstr "ציטוטים כפי שנשלחו?" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "עבור אל משימות" +#~ msgid "QUOTE" +#~ msgstr "לְצַטֵט" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "כניסת זמן חדשה" +#~ msgid "Quote #" +#~ msgstr "ציטוט #" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "קיצורי מקלדת" +#~ msgid "Quote For" +#~ msgstr "ציטוט עבור" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "נווט מהר יותר עם פקודות מונעות מקלדת. הקש Shift+? כדי לראות את כל קיצורי הדרך." +#~ msgid "Subtotal After Discount:" +#~ msgstr "סכום ביניים לאחר הנחה:" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "חיפוש גלובלי" +#~ msgid "Description:" +#~ msgstr "תֵאוּר:" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "מצא במהירות פרויקטים, משימות, לקוחות ורשומות זמן מכל מקום באפליקציה." +#~ msgid "Subtotal After Discount" +#~ msgstr "סכום ביניים לאחר הנחה" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "הודעות אימייל" +#~ msgid "Approval not yet requested" +#~ msgstr "טרם התבקש אישור" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "קבל הודעה על הקצאות משימות, חשבוניות באיחור וסיכומים שבועיים באמצעות דואר אלקטרוני." +#~ msgid "Pending approval" +#~ msgstr "ממתין לאישור" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "תכונות מנהל" +#~ msgid "Rejected by" +#~ msgstr "נדחה על ידי" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "צור משתמשים חדשים עם אימות גמיש" +#~ msgid "Request Approval Again" +#~ msgstr "בקש אישור שוב" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "הקצה תפקידים מותאמים אישית עם הרשאות ספציפיות" +#~ msgid "Send Quote" +#~ msgstr "שלח הצעת מחיר" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "הפעל/השבת חשבונות משתמש" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "האם אתה בטוח שברצונך לדחות את הציטוט הזה?" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "הצג נתונים סטטיסטיים ופעילות של משתמשים" +#~ msgid "Delete Quote" +#~ msgstr "מחק ציטוט" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "צור אסימוני API עבור משתמשים" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "הערה פנימית (לא גלויה ללקוח)" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "בקרת גישה" +#~ msgid "Internal" +#~ msgstr "פְּנִימִי" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "מערכת הרשאות מבוססת תפקידים מפורטת" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "האם אתה בטוח שברצונך למחוק את התגובה הזו?" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "תפקידים מותאמים אישית עם גישה עדינה" +#~ msgid "Write a reply..." +#~ msgstr "כתוב תשובה..." -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "בקרות גישה לנתוני משתמש" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "אין תגובות עדיין. התחל את השיחה על ידי הוספת התגובה הראשונה." -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "שילוב OIDC/SSO (Azure AD, Authelia וכו')" +#~ msgid "Sent At" +#~ msgstr "נשלח ב-" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "ניהול אסימון API עבור אינטגרציות" +#~ msgid "Accepted At" +#~ msgstr "התקבל ב" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "שיטות אימות" +#~ msgid "Send Quote via Email" +#~ msgstr "שלח הצעת מחיר בדוא\"ל" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "שם משתמש בלבד (שימוש פנימי פשוט)" +#~ msgid "Recipient Email" +#~ msgstr "אימייל של נמען" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (אימות ארגוני)" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "ציטוט %(quote_number)s" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "שתי השיטות בו זמנית" +#~ msgid "Custom Message (Optional)" +#~ msgstr "הודעה מותאמת אישית (אופציונלי)" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "הקצאת תפקידים אוטומטית באמצעות קבוצות" +#~ msgid "Add a custom message to the email..." +#~ msgstr "הוסף הודעה מותאמת אישית למייל..." -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "ניהול תפקידים והרשאות" +#~ msgid "Attach PDF" +#~ msgstr "צרף PDF" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "צור תפקידים מותאמים אישית מעבר ל-Admin/User" +#~ msgid "Approve Quote" +#~ msgstr "אשר הצעת מחיר" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "הגדר הרשאות מפורטות לכל תכונה" +#~ msgid "Notes (Optional)" +#~ msgstr "הערות (אופציונלי)" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "הקצה משתמשים למספר תפקידים" +#~ msgid "Add approval notes..." +#~ msgstr "הוסף הערות אישור..." -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "הצג ונהל את כל ההרשאות" +#~ msgid "Reject Quote Approval" +#~ msgstr "דחיית אישור הצעת מחיר" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "הגדרות כלליות" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "נא לספק סיבה לדחייה..." -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "הגדרות אזור זמן ומקום" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "האם אתה בטוח שברצונך למחוק את הציטוט הזה? לא ניתן לבטל פעולה זו." -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "תצורת מטבע" +#~ msgid "Create Recurring Invoice" +#~ msgstr "צור חשבונית חוזרת" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "כללי עיגול זמן" +#~ msgid "Update Recurring Invoice" +#~ msgstr "עדכון חשבונית חוזרת" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "הגדרות רישום עצמי" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "אוטומציה של הפקת חשבוניות עבור חיוב מבוסס מנוי" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "הגדרות טיימר" +#~ msgid "Frequency" +#~ msgstr "תֶדֶר" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "תצורת פסק זמן לא פעיל" +#~ msgid "Next Run" +#~ msgstr "הריצה הבאה" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "מצב טיימר פעיל יחיד" +#~ msgid "Generate Now" +#~ msgstr "צור עכשיו" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "העדפות תצוגת טיימר" +#~ msgid "Template Details" +#~ msgstr "פרטי תבנית" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "הגדרות התראות" +#~ msgid "Invoice Settings" +#~ msgstr "הגדרות חשבונית" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "ניהול מסדי נתונים" +#~ msgid "Recently Generated Invoices" +#~ msgstr "חשבוניות שהופקו לאחרונה" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "צור גיבויים ידניים של מסדי נתונים" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "הצג סטטוס העברת מסד נתונים" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "מעקב אחר ביצועי מסד הנתונים" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "נקה נתונים ויומנים ישנים" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "ניטור מערכת" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "הצג מידע מערכת ובריאות" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "עקוב אחר ביצועי האפליקציה" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "סקור יומני מערכת ושגיאות" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "תכונות ידידותיות לנייד" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "מותאם לטלפונים וטאבלטים" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "ממשק ידידותי למגע" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "פריסות מותאמות לכל גדלי המסך" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "ניגודיות גבוהה לנראות בחוץ" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "ניווט נייד" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "סרגל הלשונית התחתונה לגישה נוחה" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "גישה מהירה ללוח המחוונים" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "רישום בזמן לחיצה אחת" +#~ msgid "Assign To" +#~ msgstr "הקצה ל" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "דוחות מותאמים לנייד" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "הַתקָנָה" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "פתח את TimeTracker בדפדפן הנייד שלך" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "חפש את האפשרות \"הוסף למסך הבית\"." +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "עקוב אחר הנחיות ההתקנה הספציפיות לדפדפן" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "הפעל ממסך הבית שלך כמו אפליקציה מקורית" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "יתרונות PWA" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "יכולת לא מקוונת לפונקציות בסיסיות" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "זמני טעינה מהירים יותר" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "חוויה מקורית דמוית אפליקציה" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "הודעות דחיפה (כאשר נתמכות)" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "תרשימי עמודות אינטראקטיביים" +#~ msgid "Add table to report" +#~ msgstr "דוחות זמינים" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "מפרט טכני" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Add chart to report" +#~ msgstr "דוחות סטנדרטיים" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "תיעוד" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "פתרון בעיות ושאלות נפוצות" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "מה קורה אם אשכח לעצור את הטיימר שלי?" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "הטיימר ימשיך לפעול עד שתפסיק אותו ידנית. אתה יכול לראות את הטיימר הפעיל שלך בלוח המחוונים ובדף הטיימר. הטיימר ממשיך גם אם אתה סוגר את הדפדפן או מאתחל את המכשיר. אם זיהוי סרק מופעל, הטיימר עשוי להשהות אוטומטית לאחר פרק הזמן הקצוב שהוגדר." +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "האם אוכל לערוך ערכי זמן לאחר יצירתם?" +#~ msgid "Add summary to report" +#~ msgstr "דוח סיכום" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "כן, אתה יכול לערוך כל רשומת זמן על ידי לחיצה על כפתור העריכה ברשימת הזנת הזמן. אתה יכול לשנות את הפרויקט, זמני התחלה/סיום, הערות, תגים, סטטוס בר חיוב והקצאת משימות. מנהלי מערכת יכולים לערוך את כל הערכים, בעוד שמשתמשים רגילים יכולים לערוך רק את הערכים שלהם." +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "כיצד אוכל לעקוב אחר זמן עבור מספר פרויקטים?" +#~ msgid "Report canvas" +#~ msgstr "קנבס ברור" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "כברירת מחדל, אתה יכול להיות רק טיימר פעיל אחד בכל פעם. כדי להחליף פרויקטים, עצור את הטיימר הנוכחי שלך והתחל פרויקט חדש עבור הפרויקט השונה. לחלופין, ניתן ליצור הזנות זמן ידניות לעבודה קודמת או להגדיר את המערכת כך שתאפשר מספר טיימרים פעילים (הגדרת מנהל)." +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "איך אני מייצא את נתוני הזמן שלי?" +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "עבור לדף הדוחות והשתמש בתכונה \"ייצוא CSV\". אתה יכול להחיל מסננים כדי לייצא נתונים ספציפיים, או לייצא ערכי כל הזמן. קובץ ה-CSV כולל פרטי הזנת כל הזמנים וניתן לפתוח אותו ב-Excel או ביישומי גיליונות אלקטרוניים אחרים. אתה יכול גם להגדיר את המפריד עבור תקנים אזוריים שונים." +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "מה ההבדל בין זמן בר חיוב לזמן שאינו ניתן לחיוב?" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "ניתן לעקוב אחר הזמן הניתן לחיוב למטרות חיוב הלקוח ויכול להיות משויך אליו תעריף שעתי. זמן שאינו ניתן לחיוב מיועד לעבודה פנימית שאינה מחויבת מלקוחות. ניתן לסמן ערכי זמן בודדים כניתנים לחיוב או שאינם ניתנים לחיוב, ולפרויקטים יכולים להיות הגדרות ברירת מחדל לחיוב. הבחנה זו חיונית עבור חשבוניות מדויקות וניתוח רווחיות." +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "איך אני יוצר חשבונית מכניסות הזמן שלי?" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "נווט אל חשבוניות ← צור חשבונית, הגדר את פרטי הלקוח והפרויקט, ולאחר מכן השתמש ב\"צור מכניסות זמן\" כדי ליצור אוטומטית פריטי חשבונית מהזמן שלך במעקב. ניתן לסנן לפי טווח תאריכים ופרויקט, והמערכת תקבץ את כניסות הזמן בצורה חכמה. סקור את הפריטים שנוצרו וייצא כקובץ PDF מקצועי." +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "האם אוכל להשתמש ב-TimeTracker במכשיר הנייד שלי?" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "כֵּן! TimeTracker מגיב באופן מלא ועובד נהדר במכשירים ניידים. אתה יכול להתקין אותו כאפליקציית אינטרנט מתקדמת (PWA) לחוויה דמוית מקור. הממשק הנייד כולל סרגל כרטיסיות תחתון לניווט קל ופקדים מותאמים למגע למעקב אחר זמן בדרכים." +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "כיצד אוכל להשתמש בפלטת הפקודות ובקיצורי המקלדת?" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "הקש על מקש סימן השאלה (?) כדי לפתוח את לוח הפקודות. משם, תוכל להקליד כדי לחפש כל פעולה או יעד ניווט. השתמש ברצפי מקלדת כמו \"g d\" עבור לוח המחוונים, \"g p\" עבור Projects, או \"n e\" עבור New Entry. הקש Shift+? כדי לראות את כל קיצורי הדרך הזמינים. הקש Ctrl+K (או Cmd+K ב-Mac) לחיפוש מהיר." +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "כיצד אוכל ליצור ערכים בכמות גדולה למספר ימים?" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "נווט לעבודה ← הזנת זמן בכמות גדולה. בחר את הפרויקט שלך, בחר טווח תאריכים, קבע את זמני ההתחלה והסיום היומיים שלך, ודלג על סופי שבוע. המערכת תיצור כניסות זמן זהות לכל יום בטווח. זה מושלם עבור רישום דפוסי עבודה קבועים או מילוי זמן עבר כאשר עבדת שעות עקביות." +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "מהן תבניות הזנת זמן וכיצד אני משתמש בהן?" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "תבניות הזנת זמן מאפשרות לך לשמור תצורות הזנת זמן בשימוש תכוף. בעת יצירת הזנת זמן ידנית, סמן את \"שמור כתבנית\" כדי לשמור את הפרויקט, המשימה וההערות. מאוחר יותר, בעת יצירת ערכים חדשים, תוכל לבחור תבנית למילוי מהיר של פרטים אלה. התבניות הן אישיות וגלויות רק לך." +#~ msgid "Private" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "כיצד אוכל לעקוב אחר הוצאות ולהוסיף אותן לחשבוניות?" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "עבור אל הוצאות ← הוצאה חדשה כדי לרשום הוצאות עסקיות. העלה תמונות קבלה, סיווג את ההוצאה וסמן אותה כניתנת לחיוב במידת הצורך. בעת יצירת חשבוניות, תוכל לכלול הוצאות אלו כפריטי שורה. הוצאות תומכות בתהליכי עבודה של אישור, מעקב אחר החזרים וניתן לקשר אותן לפרויקטים ספציפיים." +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "האם אני יכול להשתמש ב-Markdown בתיאורים?" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "כֵּן! תיאורי פרויקטים ומשימות תומכים בעיצוב Markdown מלא. אתה יכול להשתמש מודגש, נטוי, כותרות, רשימות, קישורים, בלוקי קוד, טבלאות ותמונות. זה מאפשר לך ליצור תיעוד עשיר ומעוצב היטב ישירות בפרויקטים ובמשימות שלך. עורך Markdown כולל מצב תצוגה מקדימה ותומך בערכת נושא כהה." +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "היכן אוכל לקבל עזרה נוספת?" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "דווח על בעיות ובקש תכונות" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "כמנהל, אתה יכול לגשת למידע נוסף על המערכת ולאבחון ב-" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "סָעִיף." +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "עדיין צריך עזרה?" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "לא מוצא את מה שאתה מחפש? להלן משאבים נוספים:" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "מאגר GitHub" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "דווח על בעיה" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "Export Time Entries" +#~ msgstr "ערכים אחרונים בזמן" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "תְמִיכָה" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "תוצאות חיפוש" +#~ msgid "Export format" +#~ msgstr "פורמט ייצוא" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "חפש הערות או תגים" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "למשל, פיתוח, מפגש, דחוף" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "תוצאות" +#~ msgid "Reset Filters" +#~ msgstr "מסננים שמורים" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "האם אתה בטוח שברצונך למחוק את רשומת הזמן הזו? לא ניתן לבטל פעולה זו." +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "לא נמצאו תוצאות" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "נסה שאילתה אחרת או בדוק את האיות שלך." +#~ msgid "Please select both start and end dates." +#~ msgstr "טווח תאריכים - תאריכי התחלה וסיום מותאמים אישית" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "למשל, פגישת לקוח, ביקור באתר" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "תאריך ההתחלה חייב להיות לפני תאריך הסיום" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "פרטים נוספים..." +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "למשל, משרד, בית" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "למשל, אתר לקוח, שדה תעופה" +#~ msgid "Payments Received" +#~ msgstr "שדות תשלום" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "למשל, 12345" +#~ msgid "Net Received" +#~ msgstr "התקבל" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "למשל, 12400" +#~ msgid "After fees" +#~ msgstr "עמלות שער" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "למשל, פולקסווגן גולף" +#~ msgid "Date Range & Comparison" +#~ msgstr "טווח תאריכים והשוואה" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "למשל, ABC-123" +#~ msgid "Quick Date Ranges" +#~ msgstr "טווחי תאריכים מהירים" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "מעקב אחר זמן" +#~ msgid "This Week" +#~ msgstr "שָׁבוּעַ" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "חזרה לתפקידים" +#~ msgid "This Month" +#~ msgstr "חוֹדֶשׁ" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "This Year" +#~ msgstr "אֶשׁתָקַד" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "תאריך מ" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "הוסף הערה" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "מעקב אחר הוצאות" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "במעקב" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "כּוֹתֶרֶת" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "טווחי תאריכים מותאמים אישית" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "Comparison View" +#~ msgstr "תצוגת השוואה" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "מעקב אחר זמן" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "התחל מעקב אחר זמן" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "עקוב אחר תשלום" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "התחל מעקב אחר זמן" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "הוצאה נדחתה" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "פילטר קילומטראז'" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "תצוגה מקדימה חיה" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "מטרה, מיקום..." +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "הערות אישור אופציונליות..." +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "סיבת דחייה (חובה)" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "ניווט נייד" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "אֶלֶקטרוֹנִי" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "הקלד פקודה או חיפוש..." +#~ msgid "Comparison Results" +#~ msgstr "תוצאות השוואה" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "ייצוא דוחות" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "פורמט ייצוא" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "ייצוא דוחות" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "דוחות מתוזמנים" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "ייבוא ​​CSV" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "יְצוּא" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "Report Types" +#~ msgstr "סוגי דוחות" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "דו\"ח פרויקט" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "User Report" +#~ msgstr "דוח משתמש" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "דוח סיכום" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "דוח משימות" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "כניסות זמן" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "ערכים אחרונים" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "No scheduled reports yet." +#~ msgstr "דוחות מתוזמנים" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Add Scheduled Report" +#~ msgstr "דוחות מתוזמנים" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Please set a date range" +#~ msgstr "טווחי תאריכים מותאמים אישית" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "הקלט תשלום חדש" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "סך התשלומים" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "עמלות שער" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "סינון תשלומים" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "בתשלום" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "מחק תשלומים נבחרים" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "שנה סטטוס עבור תשלומים נבחרים" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "חשבונית קשורה" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "למשל, נסיעת עסקים לברלין" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "למשל, DE, US, GB" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "למשל, ברלין" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "סינון תביעות" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "מחק תביעות נבחרות" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "שנה סטטוס עבור תביעות נבחרות" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "הערות נוספות לגבי תעריף זה..." +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "האם אתה בטוח שברצונך למחוק את התעריף הזה ליום יום?" +#~ msgid "No data for the selected period." +#~ msgstr "לא נמצאו נתוני מכירות עבור התקופה שנבחרה." -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "מחק תעריף ליום" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "פרויקט בר חיוב" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "שעות משוערות" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "סכום תקציב" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "שם המשימה" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "קוד פרויקט" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "צור פרויקט" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "עמודות לוח Kanban" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "ערוך את נתיב השחייה" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "עַמוּדָה" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "תצוגת רשימה" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "תצוגת רשת" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "תַאֲרִיך" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "ערוך פרויקט" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "הוסף הערה" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "חזרה לפרויקט" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "למשל, נסיעה לפגישת לקוחות" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "תיאור קצר של קטגוריה זו..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "קָטֵגוֹרִיָה" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "חוֹמֶר" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "למשל, רישיון תוכנה" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "פרטים נוספים על התאמה זו" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "חזרה ללקוח" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "הוסף את Extra Good" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "הוסף מוצר או שירות ל" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "חזרה לפרויקט" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "מק\"ט/קוד מוצר" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "מה קורה כשאתה מעביר פרויקט לארכיון?" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "הפרויקט יוסתר מרשימות פרויקטים פעילות" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "לא ניתן להוסיף ערכי זמן חדשים לפרויקט זה" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "הנתונים והזמנים הקיימים נשמרים" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "ניתן להסיר את הפרויקט מאוחר יותר במידת הצורך" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "סיבה לארכיון" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "פרויקטים מובילים (30 ימים)" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "למשל, הפרויקט הושלם, חוזה הלקוח הסתיים, הפרויקט בוטל וכו'." +#~ msgid "Time distribution by project" +#~ msgstr "תרשימי עוגה של חלוקת זמן" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "הוספת סיבה מסייעת בארגון הפרויקט והתייחסות עתידית." +#~ msgid "No project data for the last 30 days." +#~ msgstr "אין פעילות ב-30 הימים האחרונים." -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "בחירה מהירה" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "הפרויקט הסתיים בהצלחה" +#~ msgid "Daily hours trend" +#~ msgstr "מגמת שעות יומיות" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "הפרויקט הושלם" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "חוזה הלקוח הסתיים" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "החוזה הסתיים" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "הפרויקט בוטל על ידי הלקוח" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "הפרויקט בהמתנה ללא הגבלת זמן" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "בהמתנה" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "תקופת התחזוקה הסתיימה" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "התחזוקה הסתיימה" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "פרויקט ארכיון" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "הגדר פרויקט חדש כדי לארגן את העבודה שלך ולעקוב אחר זמן ביעילות" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "הזן שם פרויקט תיאורי" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "בחר שם ברור ותיאורי המסביר את היקף הפרויקט" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "קוד קצר, למשל, ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "אופציונלי: תג קצר מוצג בכרטיסי Kanban" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "צור לקוח חדש" +#~ msgid "No trend data." +#~ msgstr "ציטוט נתונים" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "ספק מידע מפורט על הפרויקט, היעדים והתוצרים..." +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "פרויקטים מובילים (30 ימים)" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "אופציונלי: הוסף הקשר, יעדים או דרישות ספציפיות עבור הפרויקט" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "לא נמצאו נתוני מכירות עבור התקופה שנבחרה." -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "אפשר חיוב עבור פרויקט זה" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "השאר ריק עבור פרויקטים שאינם ניתנים לחיוב" +#~ msgid "All Clients" +#~ msgstr "לקוחות" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "מספר הזמנה, הפניה לחוזה וכו'." +#~ msgid "All Tasks" +#~ msgstr "הצג את כל המשימות" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "אופציונלי: הוסף מספר סימוכין או מזהה למטרות חיוב" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "לא נמצאו נתוני מכירות עבור התקופה שנבחרה." -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "לְמָשָׁל 10000.00" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "אופציונלי: הגדר תקציב פרויקט כולל למעקב אחר ההוצאה" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "סף התראה (%)" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "הודע כאשר התקציב שנצרך חורג מהסף הזה" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "טיפים ליצירת פרויקטים" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "נקה שמות" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "נסה שאילתה אחרת או בדוק את האיות שלך." -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "השתמש בשמות תיאוריים המציינים בבירור את מטרת הפרויקט" +#~ msgid "About Overtime Tracking" +#~ msgstr "על מעקב שעות נוספות" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "הגדרת חיוב" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "הגדר תעריפים מתאימים לשעה בהתבסס על מורכבות הפרויקט ותקציב הלקוח" +#~ msgid "Back to Reports" +#~ msgstr "חזרה לתפקידים" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "תיאור מפורט" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "כניסות זמן השבוע" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "כלול יעדי פרויקט, תוצרים ודרישות מפתח" +#~ msgid "Top projects this week" +#~ msgstr "פרויקטים מובילים" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "בחירת לקוח" +#~ msgid "No time logged this week yet." +#~ msgstr "עדיין לא נרשמו כניסות זמן לשבוע זה" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "בחר את הלקוח הנכון כדי להבטיח ארגון נכון של הפרויקט" +#~ msgid "Apply filter" +#~ msgstr "החל מסנן" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "יוצר..." +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "האם אתה בטוח שברצונך למחוק מסנן זה?" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "לא ניתן ליצור לקוח. אנא נסה שוב." +#~ msgid "Delete Filter" +#~ msgstr "מחק מסנן" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "הלקוח נוצר" +#~ msgid "Go to Reports" +#~ msgstr "דוח מלאי נמוך" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "שגיאת רשת בעת יצירת לקוח" +#~ msgid "No saved filters yet" +#~ msgstr "מסננים שמורים" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "לוח מחוונים וניתוח פרויקטים" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "Customize Shortcuts" +#~ msgstr "התאמה אישית של קיצורי דרך" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "ניתוח תקציב" +#~ msgid "Search shortcuts..." +#~ msgstr "חיפוש קיצורי דרך..." -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "כל הזמן" +#~ msgid "Save changes" +#~ msgstr "שמור שינויים" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "7 הימים האחרונים" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "30 הימים האחרונים" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "3 חודשים אחרונים" +#~ msgid "Click to record" +#~ msgstr "גרור כדי לסדר מחדש" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "אֶשׁתָקַד" +#~ msgid "Revert" +#~ msgstr "אִתחוּל" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "מְשׁוֹעָר" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "תקציב בשימוש" +#~ msgid "Failed to save" +#~ msgstr "עצירת הטיימר נכשלה" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "של תקציב" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "משימות הושלמו" +#~ msgid "Failed to save shortcuts." +#~ msgstr "עדכון הסטטוס נכשל" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "סִיוּם" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "זה יאפס את כל קיצורי המקלדת לערכי ברירת המחדל שלהם. לְהַמשִׁיך?" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "חברי צוות" +#~ msgid "Reset to Defaults" +#~ msgstr "אפס לברירות מחדל" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "תורם" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "לאפס לברירות המחדל?" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "תקציב לעומת בפועל" +#~ msgid "Failed to reset" +#~ msgstr "הסרת הדמות נכשלה." -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "לא הוגדר תקציב לפרויקט זה" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "אפס לברירות מחדל" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "חלוקת סטטוס המשימות" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "עדכון הסטטוס נכשל" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "עדיין לא נוצרו משימות" +#~ msgid "Failed to load shortcuts." +#~ msgstr "טעינת המשימות נכשלה" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "תרומות חברי צוות" +#~ msgid "Welcome" +#~ msgstr "קַבָּלַת פָּנִים" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "עדיין לא נרשמו כניסות זמן" +#~ msgid "Privacy First" +#~ msgstr "פרטיות ראשית" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "ציר זמן מעקב זמן" +#~ msgid "Self-hosted on your server" +#~ msgstr "מתארח בעצמך בשרת שלך" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "בחר פרק זמן כדי להציג את ציר הזמן" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "טלמטריה אנונימית (הצטרפות)" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "פרטי חבר צוות" +#~ msgid "No PII collected ever" +#~ msgstr "מעולם לא נאסף PII" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "משימות" +#~ msgid "Open source & transparent" +#~ msgstr "קוד פתוח ושקוף" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "אין חברי צוות שרשמו עדיין זמן" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "תשומת לב נדרשת" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "משימות באיחור" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "עלות יחידה" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "ברוכים הבאים ל-TimeTracker" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "בוא נתקין אותך תוך רגע" -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "עדכון תפקידים" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "ערוך Extra Good" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "ניהול מוצרים ושירותים עבור פרויקט זה" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "סך סחורות" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "סכום בר חיוב" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "קטגוריות" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "חשבונית" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "לא ניתן לחיוב" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "האם אתה בטוח שברצונך למחוק את הטוב הנוסף הזה?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "מחק את Extra Good" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "לא נמצאו מוצרים נוספים עבור הפרויקט הזה" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "הוסף את הטוב הראשון שלך" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "פירוט לפי קטגוריות" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "פריט(ים)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "סינון פרויקטים" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "תודה שבחרת ב-TimeTracker!" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "הנתונים שלך נשארים בשרת שלך, ויש לך שליטה מלאה." -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "Region & time" +#~ msgstr "שעת סיום" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "לסמן את הפרויקט כלא פעיל?" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "שנה סטטוס הפרויקט" +#~ msgid "Timezone" +#~ msgstr "אזור זמן" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "להפעיל את הפרויקט?" +#~ msgid "Date format" +#~ msgstr "פורמט תאריך" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "הפעל את הפרויקט" +#~ msgid "Time format" +#~ msgstr "פורמט זמן" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "ארכיון" +#~ msgid "24-hour" +#~ msgstr "שעות" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "להוציא את הפרויקט מהארכיון?" +#~ msgid "12-hour" +#~ msgstr "שעות" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "הוצאת פרויקט מהארכיון" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "הוצא מהארכיון" +#~ msgid "Company name" +#~ msgstr "שם החברה" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "מחק את הפרויקט" +#~ msgid "Your Company Name" +#~ msgstr "שם החברה שלך" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "מידע בארכיון" +#~ msgid "Your Company Address" +#~ msgstr "כתובת החברה שלך" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "בארכיון ב:" +#~ msgid "App behavior and timer settings." +#~ msgstr "הגדרות שעות נוספות" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "בארכיון על ידי:" +#~ msgid "Allow self-registration" +#~ msgstr "הגדרות רישום עצמי" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "לְנַמֵק:" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "כללי עיגול זמן" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "סקירת תקציב" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "סיבוב כניסות זמן למרווחים מוגדרים" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "מֵעַל" +#~ msgid "Single active timer per user" +#~ msgstr "מצב טיימר פעיל יחיד" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "צפה בניתוח התקציב המלא" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "תצורת פסק זמן לא פעיל" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "משימות לפרויקט זה" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "בשל" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "מְשׁוֹעָר" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "אין משימות עבור הפרויקט הזה." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "עבר ל" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "עבר ל" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "כניסה ידנית" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "מלאי נמוך" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "לְשַׁכְפֵּל" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "סמן כנשלח" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "מְקוּבָּל" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "צור את הציטוט הראשון שלך" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "למידע נוסף" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "חזרה לציטוט" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "קבלת הצעת מחיר זו תיצור פרויקט חדש עם התקציב מתוך הצעת המחיר." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "הפרויקט ייווצר עם התקציב מתוך הצעת המחיר" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "קבל הצעת מחיר וצור פרויקט" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "צור הצעת מחיר" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "כותרת ציטוט" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "תיאור ציטוט" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "ציטוט פריטים" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "מוֹעֵד אַחֲרוֹן" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "סוג תוכן" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "מלאי נמוך" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "סכום משנה של פריטים" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "עֲלוּת" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "למשל, נסיעות, ארוחות" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "הוסף הערה" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "סכום משנה של פריטים" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "סחורה נוספת" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "מוצרים, חומרים, רישיונות וסחורות אחרות" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "הוסף טוב" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "סה\"כ סחורות" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "סה\"כ ציטוטים" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "פרטים פיננסיים" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "בחר תנאי תשלום" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "לפירעון בקבלה" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "או הזן תנאי תשלום מותאמים אישית" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "השתמש במונחים מותאמים אישית" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "דִיסקוֹנט" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "סוג הנחה" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "אין הנחה" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "אחוז (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "סכום קבוע" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "סכום הנחה" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0.00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "קוד קופון" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "קוד קופון אופציונלי" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "סיבת ההנחה" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "סיבה להנחה" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "זרימת עבודה של אישור" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "דורש אישור לפני השליחה" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "מידע נוסף" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "הערות פנימיות (לא גלויות ללקוח)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "הערות אלו גלויות רק לצוות שלך" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "תנאים והגבלות" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "תנאים והגבלות" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "תנאים אלו יהיו גלויים ללקוח" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "ערוך ציטוט" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "לא ניתן לשנות את הלקוח" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "עדכון הצעת מחיר" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "סה\"כ ציטוטים" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "שיעור קבלה" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "ערך ציטוט ממוצע" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "ציטוטים לפי סטטוס" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "לקוחות מובילים לפי ציטוטים" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "סינון ציטוטים" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "חפש ציטוטים..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "האם אתה בטוח שאתה רוצה לשכפל" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "ציטוטים?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "האם אתה בטוח שאתה רוצה לסמן" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "ציטוטים כפי שנשלחו?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "לְצַטֵט" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "ציטוט #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "ציטוט עבור" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "סכום ביניים לאחר הנחה:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "תֵאוּר:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "סכום ביניים לאחר הנחה" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "טרם התבקש אישור" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "ממתין לאישור" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "נדחה על ידי" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "בקש אישור שוב" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "שלח הצעת מחיר" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "האם אתה בטוח שברצונך לדחות את הציטוט הזה?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "מחק ציטוט" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "הערה פנימית (לא גלויה ללקוח)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "פְּנִימִי" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "האם אתה בטוח שברצונך למחוק את התגובה הזו?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "כתוב תשובה..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "אין תגובות עדיין. התחל את השיחה על ידי הוספת התגובה הראשונה." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "נשלח ב-" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "התקבל ב" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "שלח הצעת מחיר בדוא\"ל" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "אימייל של נמען" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "ציטוט %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "הודעה מותאמת אישית (אופציונלי)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "הוסף הודעה מותאמת אישית למייל..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "צרף PDF" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "אשר הצעת מחיר" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "הערות (אופציונלי)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "הוסף הערות אישור..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "דחיית אישור הצעת מחיר" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "נא לספק סיבה לדחייה..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "האם אתה בטוח שברצונך למחוק את הציטוט הזה? לא ניתן לבטל פעולה זו." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "צור חשבונית חוזרת" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "עדכון חשבונית חוזרת" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "אוטומציה של הפקת חשבוניות עבור חיוב מבוסס מנוי" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "תֶדֶר" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "הריצה הבאה" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "צור עכשיו" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "פרטי תבנית" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "הגדרות חשבונית" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "חשבוניות שהופקו לאחרונה" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "פרטיות ראשית" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "הקצה ל" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "אפשר טלמטריה אנונימית" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "עזרו לנו להבין דפוסי שימוש כדי לשפר את TimeTracker" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "אילו נתונים נאספים?" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "מה אנחנו אוספים:" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "טביעת אצבע של התקנה אנונימית (גיבוב)" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Application version & platform info" +#~ msgstr "גרסת אפליקציה ופרטי פלטפורמה" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "סטטיסטיקות שימוש בתכונות" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "מה אנחנו לא אוספים:" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "ללא שמות משתמש או מיילים" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "אין נתוני הזנת זמן או הערות" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "אין נתוני לקוחות או עסקים" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "אתה יכול לשנות את זה בכל עת ב" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "דוחות זמינים" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "על ידי המשך, אתה מסכים להשתמש ב-TimeTracker תחת" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "רישיון GPL-3.0" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "דוחות סטנדרטיים" +#~ msgid "Complete Setup & Continue" +#~ msgstr "השלם את ההגדרה והמשך" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "ערוך משימה" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "עדכון הסטטוס נכשל" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "עדכון סטטוס המשימה נכשל" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "עמודת Kanban נוצרה" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "עמודת Kanban נמחקה" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "דוח סיכום" +#~ msgid "Kanban columns reordered" +#~ msgstr "סידור מחדש של עמודות Kanban" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "נראות העמודות Kanban השתנתה" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "קנבס ברור" +#~ msgid "Kanban columns updated" +#~ msgstr "עמודות Kanban עודכנו" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Update" +#~ msgstr "לְעַדְכֵּן" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "רענון עמודות קנבן נכשל" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "טוען פרטי משימה..." -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Tracked" +#~ msgstr "במעקב" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "צפה בפרטים המלאים" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "חזרה למשימות" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "הוסף משימה חדשה לפרויקט שלך כדי לפרק את העבודה לרכיבים הניתנים לניהול" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "הזן שם משימה תיאורי" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "בחרו שם ברור ותיאורי המסביר מה צריך לעשות" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "ספק מידע מפורט על המשימה, הדרישות וכל הוראות ספציפיות..." -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "אופציונלי: הוסף הקשר, דרישות או הוראות ספציפיות עבור המשימה" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "בחר את הפרויקט אליו שייכת משימה זו" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "מצב ראשוני" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Done" +#~ msgstr "נַעֲשָׂה" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "אופציונלי: הגדר מועד אחרון למשימה זו" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "אופציונלי: הערך כמה זמן תארך משימה זו" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "אופציונלי: הקצה משימה זו לחבר צוות" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "תגים לסיווג" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "טיפים ליצירת משימות" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "השתמשו בפעלי פעולה והיו ספציפיים לגבי מה שצריך לעשות" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "הערכות מציאותיות" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "שקול מורכבות ותלות בעת הערכת זמן" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "קבע מועדים" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "תאריכי יעד עוזרים לתעדף עבודה ולעקוב אחר ההתקדמות" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "יש חשיבות לעדיפות" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "השתמש ברמות עדיפות כדי לעזור לחברי הצוות להתמקד במה שהכי חשוב" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "חזרה למשימה" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "עדכן את פרטי המשימה וההגדרות עבור \"%(task)s\"" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "מידע על משימה" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "עדכון משימה" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "נעשה שימוש בהערכה" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Actual" +#~ msgstr "מַמָשִׁי" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "Current Task Info" +#~ msgstr "מידע על משימה נוכחית" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Current Status" +#~ msgstr "מצב נוכחי" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "עדיפות נוכחית" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "מוקצה כרגע ל" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "תאריך יעד נוכחי" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "ערכים אחרונים בזמן" +#~ msgid "Current Estimate" +#~ msgstr "הערכה נוכחית" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "שעות בפועל" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "פורמט ייצוא" +#~ msgid "Started" +#~ msgstr "התחיל" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "למשל, פיתוח, מפגש, דחוף" +#~ msgid "Edit Tips" +#~ msgstr "ערוך עצות" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "מסננים שמורים" +#~ msgid "Status Changes" +#~ msgstr "שינויים בסטטוס" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "שינוי הסטטוס עשוי להשפיע על מעקב אחר זמן וחישובי ההתקדמות" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "עדכוני תאריך יעד" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "טווח תאריכים - תאריכי התחלה וסיום מותאמים אישית" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "שקול עומס עבודה בצוות בעת התאמת מועדים" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "תאריך ההתחלה חייב להיות לפני תאריך הסיום" +#~ msgid "Assignment Changes" +#~ msgstr "שינויים במשימה" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "הודע לחברי הצוות בעת הקצאה מחדש של משימות" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "Updating..." +#~ msgstr "עִדכּוּן..." -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "שדות תשלום" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "התקבל" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "עמלות שער" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "טווח תאריכים והשוואה" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "טווחי תאריכים מהירים" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "שָׁבוּעַ" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "חוֹדֶשׁ" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "אֶשׁתָקַד" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "טווחי תאריכים מותאמים אישית" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "תצוגת השוואה" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "תצוגה מקדימה חיה" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "משימות סינון" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "חזית" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "מחק משימות נבחרות" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "שנה סטטוס עבור משימות נבחרות" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "הקצה משימות נבחרות" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "תוצאות השוואה" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "ייצוא דוחות" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "פורמט ייצוא" - -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "ייצוא דוחות" - -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "דוחות מתוזמנים" - -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "ייבוא ​​CSV" - -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "יְצוּא" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "סוגי דוחות" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "דו\"ח פרויקט" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "דוח משתמש" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "דוח סיכום" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "דוח משימות" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "כניסות זמן" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "הקצה משימות" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "העבר משימות נבחרות לפרויקט" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "בחר פרויקט" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "העבר משימות" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "האם אתה בטוח שברצונך למחוק את המשימה \"{name}\"?" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "ערכים אחרונים" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "לא ניתן למחוק את המשימה \"{name}\" " +#~ "כי יש לה ערכות זמן. נא למחוק " +#~ "תחילה את ערכי הזמן." -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "דוחות מתוזמנים" +#~ msgid "Delete Task" +#~ msgstr "מחק את המשימה" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "דוחות מתוזמנים" +#~ msgid "My Tasks" +#~ msgstr "המשימות שלי" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "טווחי תאריכים מותאמים אישית" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "משימות שהוקצו או נוצרו על ידך" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "total" +#~ msgstr "סַך הַכֹּל" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "סנן את המשימות שלי" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "שם או תיאור המשימה" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "כל סדרי העדיפויות" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "סוג משימה" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "הוקצה לי" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "נוצר על ידי" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "הצג איחור בלבד" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "נוצר על ידי" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "עימוד המשימות שלי" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "לא נמצאו משימות" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "עדיין אין לך משימות שהוקצו לך או שנוצרו על ידך." -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "צור את המשימה הראשונה שלך" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "הצג את כל המשימות" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "משימות באיחור" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "דורש התייחסות מיידית" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "items" +#~ msgstr "פריטים" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "There are" +#~ msgstr "יֵשׁ" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "לא נמצאו נתוני מכירות עבור התקופה שנבחרה." +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "אנא בדוק ועדכן משימות אלה כדי למנוע עיכובים נוספים." -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Due:" +#~ msgstr "בשל:" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Est:" +#~ msgstr "משוער:" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Actual:" +#~ msgstr "מַמָשִׁי:" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "תאריכי יעד" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "תאריכי יעד" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "ניהול פרויקטים" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "כל סדרי העדיפויות" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "אין משימות באיחור!" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "עבודה נהדרת! כל המשימות נמצאות כרגע בלוח הזמנים." -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "הזן תאריך יעד חדש (YYYY-MM-DD):" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "האם אתה בטוח שאתה רוצה להאריך את תאריך היעד ל" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "עבור כל המשימות המאחרות?" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "הזן עדיפות חדשה (נמוכה/בינונית/גבוהה/דחוף):" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "האם אתה בטוח שאתה רוצה להגדיר עדיפות ל" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "עדיפות לא חוקית. אנא השתמש ב: נמוך, בינוני, גבוה או דחוף" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "עדכון היעד נכשל. אנא נסה שוב." -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "להתחיל את המשימה ולסמן כבעיצומה?" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "שנה סטטוס משימה" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "לסמן את המשימה כמטלה?" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "לסמן את המשימה כבוצעה?" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "השלם משימה" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Complete" +#~ msgstr "לְהַשְׁלִים" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "לפתוח מחדש את המשימה לבדיקה?" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "פתח מחדש את המשימה" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "פתח מחדש" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "פרטי הפרויקט והיקפו" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "צור תבנית הזנת זמן" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "למשל, סטנדאפ יומי, פגישת לקוחות" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "למשל, 1.0, 0.5" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "מלא מראש הערות עבור סוג זה של הזנת זמן" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "למשל, פגישה, פיתוח, ניהול" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "ערוך תבנית" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "האם אתה בטוח שברצונך למחוק תבנית זו?" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "מחק תבנית" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "Create Your First Template" +#~ msgstr "צור את המשימה הראשונה שלך" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "תבניות" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" +#~ "צור את תבנית האימייל הראשונה שלך " +#~ "כדי להתאים אישית את הודעות הדוא\"ל " +#~ "של חשבוניות." -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "Usage Statistics" +#~ msgstr "סטטיסטיקת שימוש" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "פרויקטים מובילים (30 ימים)" +#~ msgid "selected" +#~ msgstr "" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "תרשימי עוגה של חלוקת זמן" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "אין פעילות ב-30 הימים האחרונים." +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "מגמת שעות יומיות" +#~ msgid "Click to edit" +#~ msgstr "חזרה לעריכה" -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "ציטוט נתונים" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "פרויקטים מובילים (30 ימים)" +#~ msgid "Request approval" +#~ msgstr "בקש אישור" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "לא נמצאו נתוני מכירות עבור התקופה שנבחרה." +#~ msgid "Clear filters" +#~ msgstr "החלף מסננים" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "אין נתוני הזנת זמן או הערות" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "לקוחות" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "הצג את כל המשימות" +#~ msgid "No time entries yet" +#~ msgstr "עדיין לא נרשמו כניסות זמן" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "לא נמצאו נתוני מכירות עבור התקופה שנבחרה." +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "עימוד המשימות שלי" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "הזנת זמן ידנית" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "כניסת זמן" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "כיצד אוכל ליצור ערכים בכמות גדולה למספר ימים?" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "כניסה בתפזורת" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "הפרויקט שנבחר לא נמצא" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "משימות נטענות לאחר בחירת פרויקט" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "טווח זמן" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "נסה שאילתה אחרת או בדוק את האיות שלך." +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "על מעקב שעות נוספות" +#~ msgid "Entries will be created for these dates" +#~ msgstr "כניסות הזמן יעוגלו למרווח זה" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "טיימרים חכמים" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "חזרה לתפקידים" - -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "כניסות זמן השבוע" - -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "פרויקטים מובילים" - -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "עדיין לא נרשמו כניסות זמן לשבוע זה" - -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "החל מסנן" - -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "האם אתה בטוח שברצונך למחוק מסנן זה?" - -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "מחק מסנן" - -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "דוח מלאי נמוך" - -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "מסננים שמורים" - -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "התאמה אישית של קיצורי דרך" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "חיפוש קיצורי דרך..." +#~ msgid "tag1, tag2, tag3" +#~ msgstr "תג1, תג2" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "שמור שינויים" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "סינון חשבוניות" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Create Entries" +#~ msgstr "ערכים אחרונים" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "גרור כדי לסדר מחדש" +#~ msgid "Bulk Entry Tips" +#~ msgstr "כניסה בתפזורת" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "אִתחוּל" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "Skip Weekends" +#~ msgstr "מגמות שבועיות" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "עצירת הטיימר נכשלה" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "זמן אספקה ​​(ימים)" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "עדכון הסטטוס נכשל" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "זה יאפס את כל קיצורי המקלדת לערכי ברירת המחדל שלהם. לְהַמשִׁיך?" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "אפס לברירות מחדל" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "לאפס לברירות המחדל?" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "הסרת הדמות נכשלה." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "אפס לברירות מחדל" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "עדכון הסטטוס נכשל" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "טעינת המשימות נכשלה" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "קַבָּלַת פָּנִים" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "פרטיות ראשית" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "מתארח בעצמך בשרת שלך" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "טלמטריה אנונימית (הצטרפות)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "מעולם לא נאסף PII" - -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "קוד פתוח ושקוף" - -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "ברוכים הבאים ל-TimeTracker" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "בוא נתקין אותך תוך רגע" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "תודה שבחרת ב-TimeTracker!" +#~ msgid "Failed to load tasks" +#~ msgstr "טעינת המשימות נכשלה" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "הנתונים שלך נשארים בשרת שלך, ויש לך שליטה מלאה." +#~ msgid "Total days" +#~ msgstr "סך סחורות" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "שעת סיום" +#~ msgid "Weekdays only" +#~ msgstr "השבוע מתחיל ב" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "כניסות הזמן יעוגלו למרווח זה" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "אזור זמן" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "פורמט תאריך" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "פורמט זמן" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "שעות" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "שעות" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Agenda" +#~ msgstr "לוּחַ שָׁנָה" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "שם החברה" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "שם החברה שלך" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "כתובת החברה שלך" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "הגדרות שעות נוספות" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "הגדרות רישום עצמי" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "פורמט זמן" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "כללי עיגול זמן" +#~ msgid "CSV Format" +#~ msgstr "ייבוא ​​CSV" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "סיבוב כניסות זמן למרווחים מוגדרים" +#~ msgid "Filter by tags..." +#~ msgstr "סנן את המשימות שלי" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "מצב טיימר פעיל יחיד" +#~ msgid "Show billable entries only" +#~ msgstr "לא נמצאו רשומות זמן." -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "סכום בר חיוב" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "תצורת פסק זמן לא פעיל" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "סה\"כ שעות" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "שעות לפי פרויקט" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "צור רשומת זמן חדשה" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "בחר פרויקט..." -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "חשבוניות חוזרות" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "צור תבנית הזנת זמן" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "עדכון חשבונית חוזרת" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "ניווט" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Views" +#~ msgstr "נוֹף" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Day View" +#~ msgstr "תצוגת רשת" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Week View" +#~ msgstr "סְקִירָה" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "Month View" +#~ msgstr "חוֹדֶשׁ" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "Agenda View" +#~ msgstr "תצוגת לוח שנה" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "פרטיות ראשית" +#~ msgid "Create New Entry" +#~ msgstr "צור לקוח חדש" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Focus Filter" +#~ msgstr "הצג מסננים" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "אפשר טלמטריה אנונימית" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "עזרו לנו להבין דפוסי שימוש כדי לשפר את TimeTracker" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "אילו נתונים נאספים?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "מה אנחנו אוספים:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "טביעת אצבע של התקנה אנונימית (גיבוב)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "גרסת אפליקציה ופרטי פלטפורמה" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "סטטיסטיקות שימוש בתכונות" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "מה אנחנו לא אוספים:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "ללא שמות משתמש או מיילים" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "אין נתוני הזנת זמן או הערות" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "אין נתוני לקוחות או עסקים" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "אתה יכול לשנות את זה בכל עת ב" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "על ידי המשך, אתה מסכים להשתמש ב-TimeTracker תחת" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "רישיון GPL-3.0" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "השלם את ההגדרה והמשך" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "ערוך משימה" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "עדכון הסטטוס נכשל" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "עדכון סטטוס המשימה נכשל" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "עמודת Kanban נוצרה" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "עמודת Kanban נמחקה" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "סידור מחדש של עמודות Kanban" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "נראות העמודות Kanban השתנתה" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "עמודות Kanban עודכנו" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "לְעַדְכֵּן" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "רענון עמודות קנבן נכשל" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "טוען פרטי משימה..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "במעקב" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "צפה בפרטים המלאים" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "חזרה למשימות" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "הוסף משימה חדשה לפרויקט שלך כדי לפרק את העבודה לרכיבים הניתנים לניהול" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "הזן שם משימה תיאורי" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "בחרו שם ברור ותיאורי המסביר מה צריך לעשות" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "ספק מידע מפורט על המשימה, הדרישות וכל הוראות ספציפיות..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "אופציונלי: הוסף הקשר, דרישות או הוראות ספציפיות עבור המשימה" - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "בחר את הפרויקט אליו שייכת משימה זו" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "מצב ראשוני" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "נַעֲשָׂה" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "אופציונלי: הגדר מועד אחרון למשימה זו" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "אופציונלי: הערך כמה זמן תארך משימה זו" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "אופציונלי: הקצה משימה זו לחבר צוות" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "נקה את כל המטמונים" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "תגים לסיווג" +#~ msgid "Close Modal" +#~ msgstr "לִסְגוֹר" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "טיפים ליצירת משימות" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "השתמשו בפעלי פעולה והיו ספציפיים לגבי מה שצריך לעשות" +#~ msgid "Failed to load events" +#~ msgstr "טעינת המשימות נכשלה" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "הערכות מציאותיות" +#~ msgid "Please select a project for new entries" +#~ msgstr "בחר פרויקט מהתפריט הנפתח" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "שקול מורכבות ותלות בעת הערכת זמן" +#~ msgid "Please select a project first" +#~ msgstr "בחר פרויקט" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "קבע מועדים" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "תאריכי יעד עוזרים לתעדף עבודה ולעקוב אחר ההתקדמות" +#~ msgid "Entry created successfully" +#~ msgstr "האירוע נוצר בהצלחה" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "יש חשיבות לעדיפות" +#~ msgid "Failed to create entry" +#~ msgstr "מחיקת האירוע נכשלה" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "השתמש ברמות עדיפות כדי לעזור לחברי הצוות להתמקד במה שהכי חשוב" +#~ msgid "Entry updated" +#~ msgstr "עודכן לאחרונה" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "חזרה למשימה" +#~ msgid "Failed to update entry" +#~ msgstr "עדכון הסטטוס נכשל" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "עדכן את פרטי המשימה וההגדרות עבור \"%(task)s\"" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "האם אתה בטוח שברצונך למחוק הערה זו?" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "מידע על משימה" +#~ msgid "Delete Entry" +#~ msgstr "מחק ערך" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "עדכון משימה" +#~ msgid "Automatic Timer" +#~ msgstr "התחל טיימר" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "נעשה שימוש בהערכה" +#~ msgid "Entry deleted" +#~ msgstr "נמחק" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "מַמָשִׁי" +#~ msgid "Failed to delete entry" +#~ msgstr "מחיקת האירוע נכשלה" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "מידע על משימה נוכחית" +#~ msgid "Export started" +#~ msgstr "ייצוא נתונים" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "מצב נוכחי" +#~ msgid "No recurring blocks yet" +#~ msgstr "חשבוניות חוזרות" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "עדיפות נוכחית" +#~ msgid "Unknown Project" +#~ msgstr "אין פרויקט" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "מוקצה כרגע ל" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "טעינת המשימות נכשלה" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "תאריך יעד נוכחי" +#~ msgid "No events in this period" +#~ msgstr "אין משימות בעמודה זו." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "הערכה נוכחית" +#~ msgid "Failed to load agenda view" +#~ msgstr "טעינת הפעילויות נכשלה" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "שעות בפועל" +#~ msgid "Failed to load event details" +#~ msgstr "טעינת המשימות נכשלה" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "התחיל" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "האם אתה בטוח שברצונך למחוק הערה זו?" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "ערוך עצות" +#~ msgid "Delete Recurring Block" +#~ msgstr "עדכון חשבונית חוזרת" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "שינויים בסטטוס" +#~ msgid "Recurring block deleted" +#~ msgstr "אירוע חוזר" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "שינוי הסטטוס עשוי להשפיע על מעקב אחר זמן וחישובי ההתקדמות" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "עדכוני תאריך יעד" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "שקול עומס עבודה בצוות בעת התאמת מועדים" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "שינויים במשימה" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "הודע לחברי הצוות בעת הקצאה מחדש של משימות" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "עִדכּוּן..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "משימות סינון" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "חזית" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "מחק משימות נבחרות" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "שנה סטטוס עבור משימות נבחרות" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "הקצה משימות נבחרות" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "הקצה משימות" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "העבר משימות נבחרות לפרויקט" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "בחר פרויקט" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "העבר משימות" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "האם אתה בטוח שברצונך למחוק את המשימה \"{name}\"?" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "לא ניתן למחוק את המשימה \"{name}\" כי יש לה ערכות זמן. נא למחוק תחילה את ערכי הזמן." +#~ msgid "Failed to delete recurring block" +#~ msgstr "מחיקת האירוע נכשלה" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "מחק את המשימה" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "הזן תאריך יעד חדש (YYYY-MM-DD):" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "המשימות שלי" +#~ msgid "Entry duplicated successfully" +#~ msgstr "האירוע עודכן בהצלחה" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "משימות שהוקצו או נוצרו על ידך" +#~ msgid "Failed to duplicate entry" +#~ msgstr "מחיקת האירוע נכשלה" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "סַך הַכֹּל" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "סנן את המשימות שלי" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "קיצורי מקלדת" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "שם או תיאור המשימה" +#~ msgid "Edit Time Entry" +#~ msgstr "כניסת זמן חדשה" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "כל סדרי העדיפויות" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "סוג משימה" +#~ msgid "Confirm Changes" +#~ msgstr "מְאוּשָׁר" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "הוקצה לי" +#~ msgid "Confirm & Save" +#~ msgstr "מְאוּשָׁר" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "נוצר על ידי" +#~ msgid "Admin Mode" +#~ msgstr "קבוצת ניהול" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "הצג איחור בלבד" +#~ msgid "Admin Mode:" +#~ msgstr "קבוצת ניהול" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "נוצר על ידי" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "עימוד המשימות שלי" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "בחר את הפרויקט אליו שייכת משימה זו" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "לא נמצאו משימות" +#~ msgid "Task (Optional)" +#~ msgstr "משימה (אופציונלי)" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "עדיין אין לך משימות שהוקצו לך או שנוצרו על ידך." +#~ msgid "Select a specific task within the project" +#~ msgstr "המשימה שנבחרה אינה חוקית עבור הפרויקט שנבחר" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "צור את המשימה הראשונה שלך" +#~ msgid "When the work started" +#~ msgstr "תאריך תחילת השבוע" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "הצג את כל המשימות" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "משימות באיחור" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "דורש התייחסות מיידית" +#~ msgid "Time the work ended" +#~ msgstr "חוזה הלקוח הסתיים" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "פריטים" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "יֵשׁ" +#~ msgid "Automatic" +#~ msgstr "הַרשָׁאָה" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "אנא בדוק ועדכן משימות אלה כדי למנוע עיכובים נוספים." +#~ msgid "How this entry was created" +#~ msgstr "הלקוח נוצר" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "בשל:" +#~ msgid "Duration:" +#~ msgstr "מֶשֶׁך" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "משוער:" +#~ msgid "Describe what you worked on" +#~ msgstr "על מה עבדת?" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "מַמָשִׁי:" +#~ msgid "tag1, tag2" +#~ msgstr "תג1, תג2" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "תאריכי יעד" +#~ msgid "Internal invoice reference" +#~ msgstr "לא נבחרו חשבוניות" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "מספר קבלה/חשבונית" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "תאריכי יעד" +#~ msgid "Reason for Change" +#~ msgstr "סיבה לארכיון" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "ניהול פרויקטים" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "כל סדרי העדיפויות" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "אין משימות באיחור!" +#~ msgid "Task:" +#~ msgstr "מְשִׁימָה" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "עבודה נהדרת! כל המשימות נמצאות כרגע בלוח הזמנים." +#~ msgid "Start:" +#~ msgstr "הַתחָלָה" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "הזן תאריך יעד חדש (YYYY-MM-DD):" +#~ msgid "End:" +#~ msgstr "סוֹף" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "האם אתה בטוח שאתה רוצה להאריך את תאריך היעד ל" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "עבור כל המשימות המאחרות?" +#~ msgid "Admin Notice" +#~ msgstr "הוסף הערה" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "הזן עדיפות חדשה (נמוכה/בינונית/גבוהה/דחוף):" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "האם אתה בטוח שאתה רוצה להגדיר עדיפות ל" +#~ msgid "Duplicate Entry" +#~ msgstr "ערך כפול" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "עדיפות לא חוקית. אנא השתמש ב: נמוך, בינוני, גבוה או דחוף" +#~ msgid "Duplicate Time Entry" +#~ msgstr "כפול הזנת זמן" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "רישום זמן באופן ידני" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "עדכון היעד נכשל. אנא נסה שוב." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "להתחיל את המשימה ולסמן כבעיצומה?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "שנה סטטוס משימה" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "לסמן את המשימה כמטלה?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "לסמן את המשימה כבוצעה?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "השלם משימה" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "לְהַשְׁלִים" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "לפתוח מחדש את המשימה לבדיקה?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "פתח מחדש את המשימה" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "פתח מחדש" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "פרטי הפרויקט והיקפו" - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "צור תבנית הזנת זמן" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "למשל, סטנדאפ יומי, פגישת לקוחות" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "למשל, 1.0, 0.5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "מלא מראש הערות עבור סוג זה של הזנת זמן" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "למשל, פגישה, פיתוח, ניהול" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "ערוך תבנית" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "האם אתה בטוח שברצונך למחוק תבנית זו?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "מחק תבנית" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "צור את המשימה הראשונה שלך" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "תבניות" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "צור את תבנית האימייל הראשונה שלך כדי להתאים אישית את הודעות הדוא\"ל של חשבוניות." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "סטטיסטיקת שימוש" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "צור עותק של ערך קודם עם זמנים חדשים" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "צור רשומת זמן חדשה" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "שכפול ערך:" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "Original:" +#~ msgstr "מְקוֹרִי:" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "to" +#~ msgstr "אֶל" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "חזרה לעריכה" +#~ msgid "Project & task" +#~ msgstr "פרויקטים" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "תאריך ושעה" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "בקש אישור" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "החלף מסננים" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "אין נתוני הזנת זמן או הערות" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "עדיין לא נרשמו כניסות זמן" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "עימוד המשימות שלי" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "הזנת זמן ידנית" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "כניסת זמן" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "כיצד אוכל ליצור ערכים בכמות גדולה למספר ימים?" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "כניסה בתפזורת" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "הפרויקט שנבחר לא נמצא" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "משימות נטענות לאחר בחירת פרויקט" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "טווח זמן" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "אוֹרֵחַ" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "כניסות הזמן יעוגלו למרווח זה" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "טיימרים חכמים" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "על מה עבדת?" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "תג1, תג2" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "סינון חשבוניות" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "ערכים אחרונים" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "כניסה בתפזורת" +#~ msgid "Apply filters" +#~ msgstr "החל מסננים" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "מגמות שבועיות" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "זמן אספקה ​​(ימים)" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "טעינת המשימות נכשלה" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "סך סחורות" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "השבוע מתחיל ב" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "כניסות הזמן יעוגלו למרווח זה" - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "לוּחַ שָׁנָה" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "פורמט זמן" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "ייבוא ​​CSV" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "סנן את המשימות שלי" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "לא נמצאו רשומות זמן." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "סכום בר חיוב" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "סה\"כ שעות" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "שעות לפי פרויקט" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "צור רשומת זמן חדשה" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "בחר פרויקט..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "חשבוניות חוזרות" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "צור תבנית הזנת זמן" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "עדכון חשבונית חוזרת" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "ניווט" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "נוֹף" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "תצוגת רשת" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "סְקִירָה" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "חוֹדֶשׁ" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "תצוגת לוח שנה" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "צור לקוח חדש" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "הצג מסננים" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "נקה את כל המטמונים" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "לִסְגוֹר" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "עקוב אחר הזמן שלך עם טיימר ויזואלי" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "סיום משוער" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "טעינת המשימות נכשלה" +#~ msgid "Calculating..." +#~ msgstr "מחשב..." -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "בחר פרויקט מהתפריט הנפתח" +#~ msgid "Based on average session duration" +#~ msgstr "מבוסס על משך הפגישה הממוצע" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "בחר פרויקט" +#~ msgid "No active timer. Start one below!" +#~ msgstr "אין טיימר פעיל. התחל אחד למטה!" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "התחל טיימר חדש" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "האירוע נוצר בהצלחה" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "מחיקת האירוע נכשלה" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "עודכן לאחרונה" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "עדכון הסטטוס נכשל" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "האם אתה בטוח שברצונך למחוק הערה זו?" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "מחק ערך" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "התחל טיימר" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "נמחק" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "מחיקת האירוע נכשלה" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "ייצוא נתונים" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "חשבוניות חוזרות" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "אין פרויקט" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "טעינת המשימות נכשלה" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "אין משימות בעמודה זו." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "טעינת הפעילויות נכשלה" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "טעינת המשימות נכשלה" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "האם אתה בטוח שברצונך למחוק הערה זו?" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "עדכון חשבונית חוזרת" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "אירוע חוזר" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "מחיקת האירוע נכשלה" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "הזן תאריך יעד חדש (YYYY-MM-DD):" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "האירוע עודכן בהצלחה" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "מחיקת האירוע נכשלה" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "הוסף הערות לגבי מה שאתה עובד עליו..." -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "קיצורי מקלדת" +#~ msgid "Or use a template" +#~ msgstr "או השתמש בתבנית" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "כניסת זמן חדשה" +#~ msgid "Recent Projects" +#~ msgstr "פרויקטים אחרונים" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "הסטטיסטיקה של היום" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "מְאוּשָׁר" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "מְאוּשָׁר" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "קבוצת ניהול" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "קבוצת ניהול" +#~ msgid "Approval" +#~ msgstr "לְאַשֵׁר" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "בחר את הפרויקט אליו שייכת משימה זו" +#~ msgid "License status" +#~ msgstr "מצב נוכחי" -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "משימה (אופציונלי)" +#~ msgid "Supporter license active" +#~ msgstr "תכונות נתמכות" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "המשימה שנבחרה אינה חוקית עבור הפרויקט שנבחר" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "תאריך תחילת השבוע" +#~ msgid "Not activated" +#~ msgstr "לְהַפְעִיל" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "הזן את שם הלקוח" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "חוזה הלקוח הסתיים" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "License key" +#~ msgstr "רִשָׁיוֹן" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "הַרשָׁאָה" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "הלקוח נוצר" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "מֶשֶׁך" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "על מה עבדת?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "תג1, תג2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "לא נבחרו חשבוניות" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "מספר קבלה/חשבונית" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "סיבה לארכיון" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Validate" +#~ msgstr "תַאֲרִיך" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "מְשִׁימָה" +#~ msgid "Back to Settings" +#~ msgstr "הגדרות גיבוי" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "הַתחָלָה" +#~ msgid "Profile" +#~ msgstr "פּרוֹפִיל" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "סוֹף" +#~ msgid "In progress" +#~ msgstr "בתהליך" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "הצג את כל ערכי הזמנים" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "הוסף הערה" +#~ msgid "No recent time entries" +#~ msgstr "אין רשומות בזמן אחרון" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "נהל את הגדרות והעדפות החשבון שלך" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "ערך כפול" +#~ msgid "Support & Community" +#~ msgstr "קוד פתוח וקהילה" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "כפול הזנת זמן" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "רישום זמן באופן ידני" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "צור עותק של ערך קודם עם זמנים חדשים" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "צור רשומת זמן חדשה" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "שכפול ערך:" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "מְקוֹרִי:" +#~ msgid "Profile Information" +#~ msgstr "מידע על פרופיל" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "אֶל" +#~ msgid "Username cannot be changed" +#~ msgstr "לא ניתן לשנות את שם המשתמש" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "פרויקטים" +#~ msgid "Required for email notifications" +#~ msgstr "נדרש עבור התראות באימייל" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "תאריך ושעה" +#~ msgid "Notification Preferences" +#~ msgstr "העדפות הודעה" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "אפשר הודעות אימייל" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "מתג ראשי לכל הודעות האימייל" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "הודעות על חשבונית באיחור" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "אוֹרֵחַ" +#~ msgid "Task Assignment Notifications" +#~ msgstr "הודעות על הקצאת משימות" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "הערות ואזכור" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "אימייל לסיכום זמן שבועי" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "על מה עבדת?" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "אפשר הודעות אימייל" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "החל מסננים" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "העדפות תצוגה" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "System Default" +#~ msgstr "מערכת ברירת מחדל" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "העדפות עיגול זמן" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "הגדר כיצד כניסות הזמן שלך מעוגלות. " +#~ "זה משפיע על אופן חישוב משכי הזמן" +#~ " בעת ​​עצירת טיימרים." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "אפשר עיגול זמן" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "סיבוב כניסות זמן למרווחים מוגדרים" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "מרווח עיגול" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "כניסות הזמן יעוגלו למרווח זה" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "עקוב אחר הזמן שלך עם טיימר ויזואלי" +#~ msgid "Rounding Method" +#~ msgstr "שיטת עיגול" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "סיום משוער" +#~ msgid "Overtime Settings" +#~ msgstr "הגדרות שעות נוספות" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "מחשב..." +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "מבוסס על משך הפגישה הממוצע" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "אין טיימר פעיל. התחל אחד למטה!" +#~ msgid "Daily hours" +#~ msgstr "שעות יומיות" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "התחל טיימר חדש" +#~ msgid "Weekly hours" +#~ msgstr "יעדים שבועיים" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "הוסף הערות לגבי מה שאתה עובד עליו..." +#~ msgid "Standard Hours Per Day" +#~ msgstr "שעות רגילות ליום" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "או השתמש בתבנית" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "בדרך כלל 8 שעות למשרה מלאה" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "פרויקטים אחרונים" +#~ msgid "Standard Hours Per Week" +#~ msgstr "שעות רגילות ליום" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "הסטטיסטיקה של היום" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "How it works" +#~ msgstr "איך זה עובד" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "אם אתה עובד יותר מהשעות הרגילות " +#~ "שלך ביום, הזמן הנוסף יעקוב כשעות " +#~ "נוספות בדוחות ובניתוח." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "לְאַשֵׁר" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "הגדרות אזוריות" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "מצב נוכחי" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "תכונות נתמכות" +#~ msgid "Time Format" +#~ msgstr "פורמט זמן" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "השבוע מתחיל ב" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "לְהַפְעִיל" +#~ msgid "Sunday" +#~ msgstr "יוֹם רִאשׁוֹן" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Monday" +#~ msgstr "יוֹם שֵׁנִי" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "הזן את שם הלקוח" +#~ msgid "Saturday" +#~ msgstr "שַׁבָּת" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "תצוגת לוח שנה" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "רִשָׁיוֹן" +#~ msgid "Remember last view" +#~ msgstr "חבר מאז" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "תַאֲרִיך" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "צור הזמנת רכש" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "עיגול הזמן מושבת. כל הזמנים יתועדו בדיוק לפי המעקב." -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "הגדרות גיבוי" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "אין עיגול - הזמנים יירשמו בדיוק כפי שנרשמו." -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "פּרוֹפִיל" +#~ msgid "Actual time:" +#~ msgstr "זמן בפועל:" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "בתהליך" +#~ msgid "Rounded:" +#~ msgstr "מְעוּגָל:" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "הצג את כל ערכי הזמנים" +#~ msgid "With " +#~ msgstr "עִם" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "אין רשומות בזמן אחרון" +#~ msgid " minute intervals" +#~ msgstr "מרווחי דקות" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "נהל את הגדרות והעדפות החשבון שלך" +#~ msgid "Create Weekly Goal" +#~ msgstr "צור יעד שבועי" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "קוד פתוח וקהילה" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "צור יעד שבועי זמן" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "הגדר יעד לשעות עבודה השבוע" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "שעות יעד" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "כמה שעות אתה רוצה לעבוד השבוע?" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "תאריך תחילת השבוע" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "השאר ריק כדי להשתמש בשבוע הנוכחי (החל מיום שני)" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "מידע על פרופיל" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "לא ניתן לשנות את שם המשתמש" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "נדרש עבור התראות באימייל" +#~ msgid "Optional notes about your goal..." +#~ msgstr "הערות אופציונליות לגבי המטרה שלך..." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "העדפות הודעה" +#~ msgid "Quick Presets" +#~ msgstr "הגדרות מהירות מראש" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "אפשר הודעות אימייל" +#~ msgid "Tips for Setting Goals" +#~ msgstr "טיפים להגדרת יעדים" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "מתג ראשי לכל הודעות האימייל" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "היו מציאותיים: שקול חגים, פגישות והתחייבויות אחרות" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "הודעות על חשבונית באיחור" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "התחל שמרני: אתה תמיד יכול להתאים את המטרה שלך מאוחר יותר" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "הודעות על הקצאת משימות" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "עקוב אחר התקדמות: בדוק את לוח המחוונים שלך באופן קבוע כדי להישאר במסלול" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "הערות ואזכור" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "משרה מלאה בדרך כלל: 40 שעות שבועיות (8 שעות ביום, 5 ימים)" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "אימייל לסיכום זמן שבועי" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "ערוך יעד שבועי" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "ערוך את יעד הזמן השבועי" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "תקופת שבוע" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "אפשר הודעות אימייל" +#~ msgid "Current Progress" +#~ msgstr "התקדמות נוכחית" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "האם אתה בטוח שברצונך למחוק יעד זה?" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "מחק את היעד" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "יעדי זמן שבועיים" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "הגדר ועקוב אחר יעדי השעות השבועיות שלך" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "מטרה חדשה" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "סך המטרות" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "העדפות תצוגה" +#~ msgid "Success Rate" +#~ msgstr "שיעור הצלחה" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "מערכת ברירת מחדל" +#~ msgid "Current Week Goal" +#~ msgstr "יעד השבוע הנוכחי" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "העדפות עיגול זמן" +#~ msgid "Remaining Hours" +#~ msgstr "שעות הנותרות" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "הגדר כיצד כניסות הזמן שלך מעוגלות. זה משפיע על אופן חישוב משכי הזמן בעת ​​עצירת טיימרים." +#~ msgid "Days Remaining" +#~ msgstr "ימים שנותרו" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "אפשר עיגול זמן" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "ממוצע שעות/יום דרושים" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "סיבוב כניסות זמן למרווחים מוגדרים" +#~ msgid "Edit Goal" +#~ msgstr "ערוך יעד" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "מרווח עיגול" +#~ msgid "No goal set for this week" +#~ msgstr "לא נקבעה יעד לשבוע זה" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "כניסות הזמן יעוגלו למרווח זה" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "צור יעד שבועי לזמן כדי להתחיל לעקוב אחר ההתקדמות שלך" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "שיטת עיגול" +#~ msgid "Goal History" +#~ msgstr "היסטוריית יעדים" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "הגדרות שעות נוספות" +#~ msgid "Target" +#~ msgstr "יַעַד" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "פרטי יעד שבועי" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "שעות יומיות" +#~ msgid "Daily Breakdown" +#~ msgstr "פירוט יומי" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "יעדים שבועיים" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "שעות רגילות ליום" +#~ msgid "Time Entries This Week" +#~ msgstr "כניסות זמן השבוע" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "בדרך כלל 8 שעות למשרה מלאה" +#~ msgid "No Project" +#~ msgstr "אין פרויקט" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "שעות רגילות ליום" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "עדיין לא נרשמו כניסות זמן לשבוע זה" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "איך זה עובד" +#~ msgid "Reference date" +#~ msgstr "סוג התייחסות" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "אם אתה עובד יותר מהשעות הרגילות שלך ביום, הזמן הנוסף יעקוב כשעות נוספות בדוחות ובניתוח." +#~ msgid "Create/Get Period" +#~ msgstr "צור PO" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Start date" +#~ msgstr "תאריך התחלה" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "End date" +#~ msgstr "תאריך סיום" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Exports" +#~ msgstr "יְצוּא" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "הגדרות אזוריות" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "פורמט זמן" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "השבוע מתחיל ב" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "יוֹם רִאשׁוֹן" +#~ msgid "Audit Events CSV" +#~ msgstr "ערוך אירוע" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "יוֹם שֵׁנִי" +#~ msgid "Timesheet Periods" +#~ msgstr "תקופת שבוע" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "שַׁבָּת" +#~ msgid "Submit" +#~ msgstr "נוֹשֵׂא" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "תצוגת לוח שנה" +#~ msgid "No timesheet periods yet." +#~ msgstr "עדיין לא נרשמו כניסות זמן" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "חבר מאז" +#~ msgid "Leave Balances" +#~ msgstr "שמור שינויים" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "צור הזמנת רכש" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "עיגול הזמן מושבת. כל הזמנים יתועדו בדיוק לפי המעקב." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "אין עיגול - הזמנים יירשמו בדיוק כפי שנרשמו." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "זמן בפועל:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "מְעוּגָל:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "עִם" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "מרווחי דקות" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "צור יעד שבועי" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "צור יעד שבועי זמן" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "הגדר יעד לשעות עבודה השבוע" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "שעות יעד" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "כמה שעות אתה רוצה לעבוד השבוע?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "תאריך תחילת השבוע" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "השאר ריק כדי להשתמש בשבוע הנוכחי (החל מיום שני)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "מִשׁתַמֵשׁ" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "הערות אופציונליות לגבי המטרה שלך..." +#~ msgid "No leave types configured." +#~ msgstr "לא מוגדר" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "הגדרות מהירות מראש" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "טיפים להגדרת יעדים" +#~ msgid "Select leave type" +#~ msgstr "בחר לקוח" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "היו מציאותיים: שקול חגים, פגישות והתחייבויות אחרות" +#~ msgid "Requested hours" +#~ msgstr "שעות משוערות" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "התחל שמרני: אתה תמיד יכול להתאים את המטרה שלך מאוחר יותר" +#~ msgid "Available overtime (YTD)" +#~ msgstr "משתנים זמינים" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "עקוב אחר התקדמות: בדוק את לוח המחוונים שלך באופן קבוע כדי להישאר במסלול" +#~ msgid "Comment" +#~ msgstr "הערות" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "משרה מלאה בדרך כלל: 40 שעות שבועיות (8 שעות ביום, 5 ימים)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "ערוך יעד שבועי" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "ערוך את יעד הזמן השבועי" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "תקופת שבוע" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "התקדמות נוכחית" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "האם אתה בטוח שברצונך למחוק יעד זה?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "מחק את היעד" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "יעדי זמן שבועיים" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "הגדר ועקוב אחר יעדי השעות השבועיות שלך" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "מטרה חדשה" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "סך המטרות" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "שיעור הצלחה" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "יעד השבוע הנוכחי" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "שעות הנותרות" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "ימים שנותרו" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "ממוצע שעות/יום דרושים" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "ערוך יעד" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "לא נקבעה יעד לשבוע זה" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "צור יעד שבועי לזמן כדי להתחיל לעקוב אחר ההתקדמות שלך" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "היסטוריית יעדים" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "יַעַד" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "פרטי יעד שבועי" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "נִדחֶה" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "פירוט יומי" +#~ msgid "Allocated" +#~ msgstr "נוצר" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "זְמַן" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "כניסות זמן השבוע" +#~ msgid "Utilization %" +#~ msgstr "הַרשָׁאָה" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "אין פרויקט" +#~ msgid "No capacity data available." +#~ msgstr "אין נתוני קצב צריבה זמינים" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "עדיין לא נרשמו כניסות זמן לשבוע זה" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "סוג התייחסות" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "צור PO" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "תאריך התחלה" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "תאריך סיום" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "יְצוּא" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "הפעל את פורטל הלקוחות" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "ביטול סטטוס בר חיוב" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "ערוך אירוע" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "תקופת שבוע" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "נוֹשֵׂא" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "עדיין לא נרשמו כניסות זמן" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "שמור שינויים" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "פעיל בלבד" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "סוג אירוע" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "מִשׁתַמֵשׁ" +#~ msgid "Accrual hours per month" +#~ msgstr "שעות בפועל" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "לא מוגדר" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "סוג אירוע" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "בחר לקוח" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "שעות משוערות" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "משתנים זמינים" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "הערות" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "נָכֶה" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "פרטי החברה" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "נִדחֶה" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "נוצר" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "זְמַן" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "הַרשָׁאָה" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "אין נתוני קצב צריבה זמינים" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "שם התפקיד" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "הערות (אופציונלי)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "הוסף טוב" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "הפעל את פורטל הלקוחות" +#~ msgid "No holidays configured." +#~ msgstr "לא הוגדרו webhooks" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "ביטול סטטוס בר חיוב" +#~ msgid "Support" +#~ msgstr "תְמִיכָה" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "פעיל בלבד" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "סוג אירוע" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "שעות בפועל" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "סוג אירוע" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "נָכֶה" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "פרטי החברה" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "שם התפקיד" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "הערות (אופציונלי)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "הוסף טוב" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "לא הוגדרו webhooks" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "תשלום יתר" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "תְמִיכָה" +#~ msgid "Cash" +#~ msgstr "מְזוּמָנִים" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "לִבדוֹק" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "העברה בנקאית" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "כרטיס אשראי" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "כרטיס חיוב" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "פַּס" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "תשלום יתר" +#~ msgid "Company Card" +#~ msgstr "" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "מְזוּמָנִים" +#~ msgid "Reimbursed" +#~ msgstr "הוחזר" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "לִבדוֹק" +#~ msgid "Processing" +#~ msgstr "עיבוד" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "העברה בנקאית" +#~ msgid "80% Budget Warning" +#~ msgstr "אזהרת תקציב 80%." -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "כרטיס אשראי" +#~ msgid "Budget Limit Reached" +#~ msgstr "הגעת למגבלת התקציב" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "כרטיס חיוב" +#~ msgid "Info" +#~ msgstr "מידע" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "פַּס" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "הוחזר" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "עיבוד" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "מספר חשבונית: %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "אזהרת תקציב 80%." +#~ msgid "Issue Date: %(date)s" +#~ msgstr "תאריך הנפקה: %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "הגעת למגבלת התקציב" +#~ msgid "Due Date: %(date)s" +#~ msgstr "תאריך יעד: %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "מידע" +#~ msgid "Quote For:" +#~ msgstr "ציטוט עבור:" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "פרטי הצעת מחיר:" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "פריטים:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "סַך הַכֹּל:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "מספר חשבונית: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "תאריך הנפקה: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "תאריך יעד: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "ציטוט עבור:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "פרטי הצעת מחיר:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "פריטים:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "סַך הַכֹּל:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "אנא היכנס כדי לגשת לדף זה" +#~ msgid "Please log in to access this page" +#~ msgstr "אנא היכנס כדי לגשת לדף זה" diff --git a/translations/it/LC_MESSAGES/messages.po b/translations/it/LC_MESSAGES/messages.po index 7f6d5366..d8ced230 100644 --- a/translations/it/LC_MESSAGES/messages.po +++ b/translations/it/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: it\n" @@ -14,26619 +14,18619 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "Effettua il login per accedere al portale clienti." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." -msgstr "La tua sessione è scaduta o la pagina è rimasta aperta troppo a lungo. Per favore riprova." +msgstr "" +"La tua sessione è scaduta o la pagina è rimasta aperta troppo a lungo. " +"Per favore riprova." + +#~ msgid "Administrator access required" +#~ msgstr "È richiesto l'accesso come amministratore" -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "È richiesto l'accesso come amministratore" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "Username is required" +#~ msgstr "Il nome utente è obbligatorio" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "Il nome utente è obbligatorio" +#~ msgid "User already exists" +#~ msgstr "L'utente esiste già" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "L'utente esiste già" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile creare l'utente a causa di" +#~ " un errore del database. Controlla i" +#~ " log del server." -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "L'utente \"%(username)s\" è stato creato correttamente" -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "Impossibile creare l'utente a causa di un errore del database. Controlla i log del server." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "L'utente \"%(username)s\" è stato creato correttamente" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "Il nome utente esiste già" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Seleziona un cliente quando abiliti l'accesso al portale clienti." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "La password deve contenere almeno 8 caratteri." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "Le password non corrispondono." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "Impossibile aggiornare l'utente a causa di un errore del database. Controlla i log del server." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "Username already exists" +#~ msgstr "Il nome utente esiste già" -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "L'utente \"%(username)s\" è stato aggiornato correttamente" +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "Seleziona un cliente quando abiliti l'accesso al portale clienti." -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "Impossibile eliminare l'ultimo amministratore" +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "La password deve contenere almeno 8 caratteri." -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "Impossibile eliminare l'utente con voci di orario esistenti" +#~ msgid "Passwords do not match." +#~ msgstr "Le password non corrispondono." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "Impossibile eliminare l'utente a causa di un errore del database. Controlla i log del server." +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare l'utente a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "L'utente \"%(username)s\" è stato eliminato correttamente" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "La telemetria è stata abilitata. Grazie per averci aiutato a migliorare!" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "L'utente \"%(username)s\" è stato aggiornato correttamente" -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "Impossibile eliminare l'ultimo amministratore" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "Impossibile eliminare l'utente con voci di orario esistenti" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare l'utente a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "L'utente \"%(username)s\" è stato eliminato correttamente" -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "" +#~ "La telemetria è stata abilitata. Grazie" +#~ " per averci aiutato a migliorare!" -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "Fuso orario non valido: %(timezone)s" +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "Impossibile aggiornare le impostazioni a causa di un errore del database. Controlla i log del server." +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Impostazioni aggiornate con successo" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Errore durante il salvataggio delle impostazioni" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "Fuso orario non valido: %(timezone)s" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare le impostazioni a " +#~ "causa di un errore del database. " +#~ "Controlla i log del server." -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "Settings updated successfully" +#~ msgstr "Impostazioni aggiornate con successo" -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "Invalid code." +#~ msgstr "" -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "Impossibile aggiornare il layout PDF a causa di un errore del database." +#~ msgid "Error saving settings" +#~ msgstr "Errore durante il salvataggio delle impostazioni" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "Layout PDF aggiornato con successo" +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "Impossibile aggiornare il layout PDF a causa di un errore del database." + +#~ msgid "PDF layout updated successfully" +#~ msgstr "Layout PDF aggiornato con successo" + +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" + +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "" +#~ "Impossibile reimpostare il layout del " +#~ "PDF a causa di un errore del " +#~ "database." + +#~ msgid "PDF layout reset to defaults" +#~ msgstr "Layout PDF ripristinato ai valori predefiniti" + +#~ msgid "Invalid page size" +#~ msgstr "" + +#~ msgid "Template not found for this page size" +#~ msgstr "" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "No file uploaded" +#~ msgstr "" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "Impossibile reimpostare il layout del PDF a causa di un errore del database." +#~ msgid "No file selected" +#~ msgstr "Nessun file selezionato" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "Layout PDF ripristinato ai valori predefiniti" +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Could not import template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "Template imported successfully" +#~ msgstr "" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Nessun file selezionato" +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "Invoice not found" +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "Quote not found" +#~ msgstr "" -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "No logo file selected" +#~ msgstr "Nessun file del logo selezionato" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Invalid image file." +#~ msgstr "File immagine non valido." -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "Impossibile salvare il logo a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "Logo aziendale caricato con successo! " +#~ "Puoi vederlo nella sezione \"Logo " +#~ "dell'azienda attuale\" sopra. Apparirà su " +#~ "fatture e documenti PDF." -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "" +#~ "Tipo di file non valido. Tipi " +#~ "consentiti: PNG, JPG, JPEG, GIF, SVG," +#~ " WEBP" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "Nessun file del logo selezionato" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "File immagine non valido." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "Impossibile salvare il logo a causa di un errore del database. Controlla i log del server." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "Logo aziendale caricato con successo! Puoi vederlo nella sezione \"Logo dell'azienda attuale\" sopra. Apparirà su fatture e documenti PDF." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "Tipo di file non valido. Tipi consentiti: PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "Impossibile rimuovere il logo a causa di un errore del database. Controlla i log del server." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "Logo aziendale rimosso correttamente. Se necessario, carica un nuovo logo nella sezione seguente." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "Nessun logo da rimuovere" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "Backup fallito: archivio non creato" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "Backup non riuscito: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Tipo di file non valido" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "File di backup non trovato" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "Backup \"%(filename)s\" eliminato con successo" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "Impossibile eliminare il backup: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "Tipo di file non valido. Seleziona un archivio di backup .zip." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "File di backup non trovato." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "Tipo di file non valido. Carica un archivio di backup .zip." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "Nessun file di backup fornito" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "Ripristino avviato. Puoi monitorare i progressi in questa pagina." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC non è abilitato. Imposta AUTH_METHOD su \"oidc\" o \"entrambi\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER non è configurato" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile rimuovere il logo a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "Logo aziendale rimosso correttamente. Se " +#~ "necessario, carica un nuovo logo nella" +#~ " sezione seguente." -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "Nessun logo da rimuovere" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "Backup failed: archive not created" +#~ msgstr "Backup fallito: archivio non creato" -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "Backup non riuscito: %(error)s" -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ Documento di rilevamento recuperato correttamente da %(url)s" +#~ msgid "Invalid file type" +#~ msgstr "Tipo di file non valido" -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "File di backup non trovato" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ Impossibile recuperare il documento di rilevamento: %(error)s" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "Backup \"%(filename)s\" eliminato con successo" -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ Errore imprevisto: %(error)s" +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "Impossibile eliminare il backup: %(error)s" -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "Tipo di file non valido. Seleziona un archivio di backup .zip." -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ Il client OAuth è registrato nell'applicazione" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ Il client OAuth non è registrato" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ Impossibile creare il client OAuth: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s: %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ %(endpoint) mancanti nel documento di rilevamento" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ L'ambito \"%(scope)s\" è supportato dal provider" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ L'ambito \"%(scope)s\" potrebbe non essere supportato dal provider (supportato: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ Il fornitore supporta le affermazioni: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ L'attestazione %(claim_type)s configurata \"%(claim_name)s\" è supportata" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ Rivendicazione %(claim_type)s \"%(claim_name)s\" configurata non nell'elenco delle rivendicazioni supportate (potrebbe comunque funzionare)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "Test di configurazione OIDC completato" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "Il nome del modello è obbligatorio" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "Il nome del modello è obbligatorio" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "Esiste già un modello con questo nome" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "Impossibile creare il modello di email a causa di un errore del database." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "Modello di email creato correttamente" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "Impossibile aggiornare il modello di email a causa di un errore del database." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "Modello email aggiornato correttamente" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "Impossibile eliminare il modello utilizzato da fatture o fatture ricorrenti" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "Impossibile eliminare il modello di email a causa di un errore del database." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "Modello email \"%(name)s\" eliminato correttamente" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "Backup file not found." +#~ msgstr "File di backup non trovato." -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "Il progetto selezionato non esiste o è inattivo" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "messaggio" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "Tipo di file non valido. Carica un archivio di backup .zip." -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "La tabella dei log di controllo non esiste. Si prega di eseguire: aggiornamento db flask" +#~ msgid "No backup file provided" +#~ msgstr "Nessun file di backup fornito" -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "Ripristino avviato. Puoi monitorare i progressi in questa pagina." -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "OIDC non è abilitato. Imposta AUTH_METHOD su \"oidc\" o \"entrambi\"." -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "Bentornato, %(username)s!" +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER non è configurato" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "Imposta la tua password" +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" + +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ Documento di rilevamento recuperato correttamente da %(url)s" + +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Token di configurazione della password non valido o scaduto. Si prega di richiederne uno nuovo." +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ Impossibile recuperare il documento di rilevamento: %(error)s" -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "Il portale clienti non è abilitato per questo cliente." +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ Errore imprevisto: %(error)s" -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "Impossibile impostare la password a causa di un errore del database." +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ Il client OAuth è registrato nell'applicazione" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ Il client OAuth non è registrato" -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ Impossibile creare il client OAuth: %(error)s" -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s: %(url)s" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ %(endpoint) mancanti nel documento di rilevamento" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ L'ambito \"%(scope)s\" è supportato dal provider" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "Impossibile creare il tuo account a causa di un errore nel database. Per favore riprova più tardi." +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ L'ambito \"%(scope)s\" potrebbe non " +#~ "essere supportato dal provider (supportato:" +#~ " %(supported)s)" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "Benvenuto! Il tuo account è stato creato." +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ Il fornitore supporta le affermazioni: %(claims)s" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Utente non trovato. Contatta un amministratore." +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "" +#~ "✓ L'attestazione %(claim_type)s configurata " +#~ "\"%(claim_name)s\" è supportata" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "Impossibile aggiornare il ruolo del tuo account a causa di un errore del database." +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ Rivendicazione %(claim_type)s \"%(claim_name)s\"" +#~ " configurata non nell'elenco delle " +#~ "rivendicazioni supportate (potrebbe comunque " +#~ "funzionare)" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "L'account è disabilitato. Contatta un amministratore." +#~ msgid "OIDC configuration test completed" +#~ msgstr "Test di configurazione OIDC completato" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "Template name is required" +#~ msgstr "Il nome del modello è obbligatorio" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "HTML template content is required" +#~ msgstr "Il nome del modello è obbligatorio" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "A template with this name already exists" +#~ msgstr "Esiste già un modello con questo nome" -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "Errore imprevisto durante l'accesso. Riprova o controlla i log del server." - -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "La tua sessione è scaduta o la pagina è rimasta aperta troppo a lungo. Per favore riprova." - -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "Metodo di autenticazione" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "Metodo di autenticazione" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "Impossibile creare il tuo account a causa di un errore nel database." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "Metodo di autenticazione" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "Impossibile aggiornare il ruolo del tuo account a causa di un errore del database." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "Addio, %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "Tipo di file avatar non valido. Consentiti: PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "Impossibile salvare l'avatar sul server." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Profilo aggiornato con successo" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "Impossibile aggiornare il tuo profilo a causa di un errore nel database." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "Could not create email template due to a database error." +#~ msgstr "" +#~ "Impossibile creare il modello di email" +#~ " a causa di un errore del " +#~ "database." -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "Email template created successfully" +#~ msgstr "Modello di email creato correttamente" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "" +#~ "Impossibile aggiornare il modello di " +#~ "email a causa di un errore del " +#~ "database." -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "Email template updated successfully" +#~ msgstr "Modello email aggiornato correttamente" -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" +#~ "Impossibile eliminare il modello utilizzato" +#~ " da fatture o fatture ricorrenti" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "" +#~ "Impossibile eliminare il modello di " +#~ "email a causa di un errore del " +#~ "database." -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar rimosso" +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "Modello email \"%(name)s\" eliminato correttamente" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "Impossibile rimuovere l'avatar." +#~ msgid "Task name and project are required" +#~ msgstr "" + +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "Il progetto selezionato non esiste o è inattivo" + +#~ msgid "message" +#~ msgstr "messaggio" + +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" + +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" +#~ "La tabella dei log di controllo " +#~ "non esiste. Si prega di eseguire: " +#~ "aggiornamento db flask" + +#~ msgid "You must change your password before continuing." +#~ msgstr "" + +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" + +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "Bentornato, %(username)s!" + +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" + +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" + +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" + +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Imposta la tua password" + +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "" +#~ "Token di configurazione della password " +#~ "non valido o scaduto. Si prega di" +#~ " richiederne uno nuovo." -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "Password reset is not available for this account." +#~ msgstr "Il portale clienti non è abilitato per questo cliente." -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Could not reset password due to a database error." +#~ msgstr "Impossibile impostare la password a causa di un errore del database." -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "Il Single Sign-On non è ancora configurato. Contatta un amministratore." +#~ msgid "Invalid username format" +#~ msgstr "" -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "Il Single Sign-On non è configurato." +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "Autenticazione non riuscita: emittente o reclamo del soggetto mancante. Controlla la configurazione OIDC." +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "L'account utente non esiste e l'autoregistrazione è disabilitata." +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "Impossibile creare il tuo account a " +#~ "causa di un errore nel database. " +#~ "Per favore riprova più tardi." -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "Impossibile creare il tuo account a causa di un errore nel database." +#~ msgid "Welcome! Your account has been created." +#~ msgstr "Benvenuto! Il tuo account è stato creato." -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "Errore imprevisto durante l'accesso SSO. Riprova o contatta l'assistenza." +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Utente non trovato. Contatta un amministratore." -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "Non hai accesso a questo progetto." +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "" +#~ "Impossibile aggiornare il ruolo del tuo" +#~ " account a causa di un errore " +#~ "del database." -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Questo progetto non ha un budget stabilito." +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "L'account è disabilitato. Contatta un amministratore." -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Evento creato con successo" +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Evento aggiornato con successo" +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "Non hai l'autorizzazione per eliminare questo evento." +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "Impossibile eliminare l'evento" +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" +#~ "Errore imprevisto durante l'accesso. Riprova" +#~ " o controlla i log del server." + +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "" +#~ "La tua sessione è scaduta o la " +#~ "pagina è rimasta aperta troppo a " +#~ "lungo. Per favore riprova." + +#~ msgid "Invalid authentication code." +#~ msgstr "Metodo di autenticazione" + +#~ msgid "Two-factor authentication enabled." +#~ msgstr "Metodo di autenticazione" + +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "Impossibile creare il tuo account a causa di un errore nel database." + +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Metodo di autenticazione" + +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "" +#~ "Impossibile aggiornare il ruolo del tuo" +#~ " account a causa di un errore " +#~ "del database." + +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "Addio, %(username)s!" + +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "Tipo di file avatar non valido. Consentiti: PNG, JPG, JPEG, GIF, WEBP" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Evento eliminato con successo" +#~ msgid "Failed to save avatar on server." +#~ msgstr "Impossibile salvare l'avatar sul server." -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "Errore durante l'eliminazione dell'evento: %(error)s" +#~ msgid "Profile updated successfully" +#~ msgstr "Profilo aggiornato con successo" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "L'evento è stato spostato con successo" +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "" +#~ "Impossibile aggiornare il tuo profilo a" +#~ " causa di un errore nel database." -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "Evento ridimensionato correttamente" +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "Non hai l'autorizzazione per visualizzare questo evento." +#~ msgid "New password is required" +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "Non hai l'autorizzazione per modificare questo evento." +#~ msgid "Current password is required" +#~ msgstr "" -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "Current password is incorrect" +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "Il contenuto della nota non può essere vuoto" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Nota aggiunta con successo" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Errore durante l'aggiunta della nota" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Errore durante l'aggiunta della nota: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "La nota non appartiene a questo client" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "Non hai l'autorizzazione per modificare questa nota" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Errore durante l'aggiornamento della nota" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Nota aggiornata con successo" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Errore durante l'aggiornamento della nota: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "Non hai l'autorizzazione per eliminare questa nota" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Errore durante l'eliminazione della nota" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Nota eliminata con successo" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "Errore durante l'eliminazione della nota: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "Effettua il login per accedere al portale clienti." +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Accesso negato" +#~ msgid "Could not update password due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Proibito" +#~ msgid "Avatar removed" +#~ msgstr "Avatar rimosso" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "Impossibile rimuovere l'avatar." -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Pagina non trovata" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "Il Single Sign-On non è ancora configurato. Contatta un amministratore." -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "Il Single Sign-On non è configurato." -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "La pagina che stai cercando non esiste o è stata spostata." +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Errore del server" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "Autenticazione non riuscita: emittente o " +#~ "reclamo del soggetto mancante. Controlla " +#~ "la configurazione OIDC." -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "L'account utente non esiste e l'autoregistrazione è disabilitata." -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "L'accesso al portale clienti non è abilitato per il tuo account." +#~ msgid "Could not create your account due to a database error." +#~ msgstr "Impossibile creare il tuo account a causa di un errore nel database." -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "Il tuo account cliente è inattivo." +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Errore imprevisto durante l'accesso SSO. " +#~ "Riprova o contatta l'assistenza." -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Sono richiesti nome utente e password." +#~ msgid "You do not have access to this project." +#~ msgstr "Non hai accesso a questo progetto." -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Nome utente o password non validi." +#~ msgid "This project does not have a budget set." +#~ msgstr "Questo progetto non ha un budget stabilito." -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "Benvenuto, %(client_name)s!" +#~ msgid "Event created successfully" +#~ msgstr "Evento creato con successo" -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "Sei stato disconnesso." +#~ msgid "Event updated successfully" +#~ msgstr "Evento aggiornato con successo" -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Token di configurazione della password non valido o mancante." +#~ msgid "You do not have permission to delete this event." +#~ msgstr "Non hai l'autorizzazione per eliminare questo evento." -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "Token di configurazione della password non valido o scaduto. Si prega di richiederne uno nuovo." +#~ msgid "Failed to delete event" +#~ msgstr "Impossibile eliminare l'evento" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "È richiesta la password." +#~ msgid "Event deleted successfully" +#~ msgstr "Evento eliminato con successo" -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "Impossibile impostare la password a causa di un errore del database." +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "Errore durante l'eliminazione dell'evento: %(error)s" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "Password impostata con successo! Ora puoi accedere al portale." +#~ msgid "Event moved successfully" +#~ msgstr "L'evento è stato spostato con successo" -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "Impossibile caricare i dati del portale clienti." +#~ msgid "Event resized successfully" +#~ msgstr "Evento ridimensionato correttamente" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "Non hai l'autorizzazione per visualizzare questo evento." -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "Non hai l'autorizzazione per modificare questo evento." -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "Il contenuto della nota non può essere vuoto" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Fattura non trovata." +#~ msgid "Note added successfully" +#~ msgstr "Nota aggiunta con successo" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Citazione non trovata." +#~ msgid "Error adding note" +#~ msgstr "Errore durante l'aggiunta della nota" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Errore durante l'aggiunta della nota: %(error)s" -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "Note does not belong to this client" +#~ msgstr "La nota non appartiene a questo client" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "You do not have permission to edit this note" +#~ msgstr "Non hai l'autorizzazione per modificare questa nota" -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "Error updating note" +#~ msgstr "Errore durante l'aggiornamento della nota" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "Note updated successfully" +#~ msgstr "Nota aggiornata con successo" -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Errore durante l'aggiornamento della nota: %(error)s" -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "You do not have permission to delete this note" +#~ msgstr "Non hai l'autorizzazione per eliminare questa nota" -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "Error deleting note" +#~ msgstr "Errore durante l'eliminazione della nota" -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "Note deleted successfully" +#~ msgstr "Nota eliminata con successo" -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "Errore durante l'eliminazione della nota: %(error)s" -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "Access Denied" +#~ msgstr "Accesso negato" -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "403 Forbidden" +#~ msgstr "403 Proibito" -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "Page Not Found" +#~ msgstr "Pagina non trovata" -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "La pagina che stai cercando non esiste o è stata spostata." -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Server Error" +#~ msgstr "Errore del server" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "L'accesso al portale clienti non è abilitato per il tuo account." -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "Your client account is inactive." +#~ msgstr "Il tuo account cliente è inattivo." -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Username and password are required." +#~ msgstr "Sono richiesti nome utente e password." -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "Invalid username or password." +#~ msgstr "Nome utente o password non validi." -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "Impossibile caricare i dati del portale clienti." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "Portale clienti" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "Ultimi 7 giorni" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Riepilogo" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Ore totali" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "Benvenuto, %(client_name)s!" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Pagato" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Eccezionale" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Ore per progetto" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Progetto" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Ore" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Ore fatturabili" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "Intervallo di tempo" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Data" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Accesso negato" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "You have been logged out." +#~ msgstr "Sei stato disconnesso." -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Token di configurazione della password non valido o mancante." -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "" +#~ "Token di configurazione della password " +#~ "non valido o scaduto. Si prega di" +#~ " richiederne uno nuovo." -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "Non hai l'autorizzazione per creare clienti" +#~ msgid "Password is required." +#~ msgstr "È richiesta la password." -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "Il nome del cliente è obbligatorio" +#~ msgid "Could not set password due to a database error." +#~ msgstr "Impossibile impostare la password a causa di un errore del database." -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "Esiste già un client con questo nome" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "Password impostata con successo! Ora puoi accedere al portale." -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "Impossibile caricare i dati del portale clienti." -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Formato tariffa oraria non valido" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "Le ore prepagate devono essere un numero positivo." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "Il giorno del ripristino prepagato deve essere compreso tra 1 e 28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "Impossibile creare il client a causa di un errore del database. Controlla i log del server." +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "Non hai accesso a questo progetto." +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "Non hai l'autorizzazione per modificare i clienti" +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "Il nome utente del portale è richiesto quando si abilita l'accesso al portale." +#~ msgid "Invoice not found." +#~ msgstr "Fattura non trovata." -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Questo nome utente del portale è già utilizzato da un altro client." +#~ msgid "Quote not found." +#~ msgstr "Citazione non trovata." -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "Impossibile aggiornare il client a causa di un errore del database. Controlla i log del server." +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "Non hai l'autorizzazione per inviare email al portale" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "Il portale clienti non è abilitato per questo cliente." +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "Il nome utente del portale non è impostato per questo client." +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "L'indirizzo e-mail del cliente non è impostato. Impossibile inviare e-mail di configurazione della password." +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "Impossibile generare il token di configurazione della password a causa di un errore del database." +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "E-mail di configurazione della password inviata correttamente a %(email)s" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "Il server di posta elettronica non è configurato. Configurare le impostazioni e-mail in Amministrazione → Configurazione e-mail o impostare la variabile di ambiente MAIL_SERVER." +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "Impossibile inviare l'e-mail di configurazione della password. Per i dettagli, controlla la configurazione dell'e-mail e i registri del server." +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "Si è verificato un errore durante l'invio dell'e-mail: %(error)s" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "Non hai l'autorizzazione per archiviare i client" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "Il cliente è già inattivo" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "Non hai l'autorizzazione per attivare i client" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "Il cliente è già attivo" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "Non hai l'autorizzazione per eliminare i client" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "Impossibile eliminare il client a causa di un errore del database. Controlla i log del server." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "Nessun client selezionato per l'eliminazione" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "Impossibile eliminare i client a causa di un errore del database. Controlla i log del server." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "Nessun cliente è stato eliminato" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "Non hai l'autorizzazione per modificare lo stato del cliente" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "Nessun cliente selezionato" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Stato non valido" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "Impossibile aggiornare lo stato del client a causa di un errore del database. Controlla i log del server." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "Nessun client è stato aggiornato" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "Nessun file fornito" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Tipo di file non consentito" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "La dimensione del file supera la dimensione massima consentita (10 MB)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "Impossibile caricare l'allegato a causa di un errore del database. Controlla i log del server." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "Allegato caricato con successo" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "File non trovato" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "Impossibile eliminare l'allegato a causa di un errore del database. Controlla i log del server." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "Allegato eliminato con successo" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "Il contenuto del commento non può essere vuoto" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "Il commento deve essere associato a un progetto, un'attività o un preventivo" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "Il commento non può essere associato a più destinazioni" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Commento genitore non valido" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Commento aggiunto con successo" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Errore durante l'aggiunta del commento" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Errore durante l'aggiunta del commento: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "Non hai il permesso per modificare questo commento" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Commento aggiornato con successo" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Errore durante l'aggiornamento del commento: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "Non hai il permesso per eliminare questo commento" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Commento eliminato con successo" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Errore durante l'eliminazione del commento: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "Non hai l'autorizzazione per eliminare questo allegato" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Contatto creato con successo" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Errore durante la creazione del contatto: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Contatto aggiornato con successo" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Errore durante l'aggiornamento del contatto: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Contatto eliminato con successo" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "Errore durante l'eliminazione del contatto: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Contatto impostato come primario" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "Errore durante l'impostazione del contatto principale: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Comunicazione registrata con successo" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Errore durante la registrazione della comunicazione: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "L'etichetta è obbligatoria" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "Impossibile caricare i dati del portale clienti." -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "Client Report" +#~ msgstr "Portale clienti" -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "Ultimi 7 giorni" -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "Summary" +#~ msgstr "Riepilogo" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "Ore totali" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Paid" +#~ msgstr "Pagato" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "Eccezionale" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "Ore per progetto" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "Project" +#~ msgstr "Progetto" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Hours" +#~ msgstr "Ore" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "Billable Hours" +#~ msgstr "Ore fatturabili" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Time by Date" +#~ msgstr "Intervallo di tempo" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Date" +#~ msgstr "Data" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "Access denied" +#~ msgstr "Accesso negato" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Valore dell'offerta non valido" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Offerta creata correttamente" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Errore durante la creazione dell'offerta: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Offerta aggiornata con successo" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Errore durante l'aggiornamento dell'offerta: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Affare chiuso come vinto" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Errore durante la chiusura dell'offerta: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Affare chiuso come perduto" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Attività registrata con successo" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Errore durante la registrazione dell'attività: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "Il nome della categoria è obbligatorio" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Categoria di spesa creata correttamente" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Errore durante la creazione della categoria di spesa" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Categoria di spesa aggiornata correttamente" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Errore durante l'aggiornamento della categoria di spesa" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Categoria di spesa disattivata con successo" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Errore durante la disattivazione della categoria di spesa" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "Il titolo è obbligatorio" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "La categoria è obbligatoria" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "L'importo è obbligatorio" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "La data di spesa è obbligatoria" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Formato data non valido" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Formato importo non valido" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "Non hai l'autorizzazione per creare clienti" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Spesa creata con successo" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Errore nella creazione della spesa" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "Non hai l'autorizzazione per visualizzare questa spesa" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "Non hai l'autorizzazione per modificare questa spesa" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "Non è possibile modificare le spese approvate o rimborsate" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Si prega di compilare tutti i campi obbligatori" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Spese aggiornate con successo" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Errore durante l'aggiornamento della spesa" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "Non hai l'autorizzazione per eliminare questa spesa" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "Impossibile eliminare le spese approvate o fatturate" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Spesa eliminata correttamente" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Errore durante l'eliminazione della spesa" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "Nessuna spesa selezionata per l'eliminazione" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "Impossibile eliminare le spese a causa di un errore nel database. Controlla i log del server." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "%(count)d spese eliminate correttamente" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "%(count)d spese saltate: %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "Nessuna spesa selezionata" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Valore di stato non valido" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "Impossibile aggiornare le spese a causa di un errore del database" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "%(count)d spese aggiornate a %(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "%(count)d spese saltate: %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "%(count)d spesa/e saltata/e (nessuna autorizzazione)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Solo gli amministratori possono approvare le spese" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Possono essere approvate solo le spese pendenti" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Spesa approvata con successo" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Errore nell'approvazione della spesa" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Solo gli amministratori possono rifiutare le spese" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Possono essere rifiutate solo le spese pendenti" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Il motivo del rifiuto è obbligatorio" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Spesa respinta" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Errore nel rifiuto della spesa" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Solo gli amministratori possono contrassegnare le spese come rimborsate" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Solo le spese approvate possono essere contrassegnate come rimborsate" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Questa spesa non è contrassegnata come rimborsabile" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Spesa contrassegnata come rimborsata" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Errore nel contrassegnare la spesa come rimborsata" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "L'OCR non è disponibile. Contatta il tuo amministratore." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Tipo di file non valido. Tipi consentiti: png, jpg, jpeg, gif, pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "Ricevuta scansionata con successo! Ora puoi creare una spesa con i dati estratti." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "Errore durante la scansione della ricevuta. Riprova o inserisci la spesa manualmente." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "Nessun dato della ricevuta scansionata trovato. Per favore scansiona prima una ricevuta." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Spesa creata correttamente dalla ricevuta scansionata" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "Nessuna autorizzazione assegnata." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "Il nome del cliente è obbligatorio" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "Esiste già un client con questo nome" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "Formato tariffa oraria non valido" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "Le ore prepagate devono essere un numero positivo." -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "Il giorno del ripristino prepagato deve essere compreso tra 1 e 28." -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile creare il client a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "Non hai accesso a questo progetto." -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "Non hai l'autorizzazione per modificare i clienti" -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "" +#~ "Il nome utente del portale è " +#~ "richiesto quando si abilita l'accesso al" +#~ " portale." -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "This portal username is already in use by another client." +#~ msgstr "Questo nome utente del portale è già utilizzato da un altro client." -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare il client a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." + +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "Non hai l'autorizzazione per inviare email al portale" + +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "Il portale clienti non è abilitato per questo cliente." + +#~ msgid "Portal username is not set for this client." +#~ msgstr "Il nome utente del portale non è impostato per questo client." + +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "L'indirizzo e-mail del cliente non è " +#~ "impostato. Impossibile inviare e-mail di " +#~ "configurazione della password." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "" +#~ "Impossibile generare il token di " +#~ "configurazione della password a causa di" +#~ " un errore del database." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "" +#~ "E-mail di configurazione della password " +#~ "inviata correttamente a %(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "Il server di posta elettronica non " +#~ "è configurato. Configurare le impostazioni " +#~ "e-mail in Amministrazione → Configurazione " +#~ "e-mail o impostare la variabile di " +#~ "ambiente MAIL_SERVER." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "Impossibile inviare l'e-mail di configurazione" +#~ " della password. Per i dettagli, " +#~ "controlla la configurazione dell'e-mail e " +#~ "i registri del server." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "Si è verificato un errore durante l'invio dell'e-mail: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "Non hai l'autorizzazione per archiviare i client" + +#~ msgid "Client is already inactive" +#~ msgstr "Il cliente è già inattivo" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "Non hai l'autorizzazione per attivare i client" + +#~ msgid "Client is already active" +#~ msgstr "Il cliente è già attivo" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "Non hai l'autorizzazione per eliminare i client" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare il client a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." + +#~ msgid "No clients selected for deletion" +#~ msgstr "Nessun client selezionato per l'eliminazione" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare i client a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." + +#~ msgid "No clients were deleted" +#~ msgstr "Nessun cliente è stato eliminato" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "Non hai l'autorizzazione per modificare lo stato del cliente" + +#~ msgid "No clients selected" +#~ msgstr "Nessun cliente selezionato" + +#~ msgid "Invalid status" +#~ msgstr "Stato non valido" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossibile aggiornare lo stato del " +#~ "client a causa di un errore del" +#~ " database. Controlla i log del " +#~ "server." + +#~ msgid "No clients were updated" +#~ msgstr "Nessun client è stato aggiornato" + +#~ msgid "No file provided" +#~ msgstr "Nessun file fornito" + +#~ msgid "File type not allowed" +#~ msgstr "Tipo di file non consentito" + +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "La dimensione del file supera la dimensione massima consentita (10 MB)" + +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Impossibile caricare l'allegato a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "Allegato caricato con successo" -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "File not found" +#~ msgstr "File non trovato" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Impossibile eliminare l'allegato a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "Allegato eliminato con successo" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "Il contenuto del commento non può essere vuoto" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "" +#~ "Il commento deve essere associato a " +#~ "un progetto, un'attività o un preventivo" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "Il commento non può essere associato a più destinazioni" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "Commento genitore non valido" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "Commento aggiunto con successo" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "Errore durante l'aggiunta del commento" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Errore durante l'aggiunta del commento: %(error)s" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "API REST per integrazioni" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "Non hai il permesso per modificare questo commento" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "Il nome del cliente è obbligatorio" +#~ msgid "Comment updated successfully" +#~ msgstr "Commento aggiornato con successo" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Errore durante l'aggiornamento del commento: %(error)s" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "Non hai il permesso per eliminare questo commento" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "Commento eliminato con successo" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Errore durante l'eliminazione del commento: %(error)s" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "Non hai l'autorizzazione per eliminare questo allegato" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "Contatto creato con successo" -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Errore durante la creazione del contatto: %(error)s" -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "Contatto aggiornato con successo" -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Errore durante l'aggiornamento del contatto: %(error)s" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "Contatto eliminato con successo" -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "Errore durante l'eliminazione del contatto: %(error)s" -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "Contact set as primary" +#~ msgstr "Contatto impostato come primario" -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "Errore durante l'impostazione del contatto principale: %(error)s" -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "Comunicazione registrata con successo" -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Errore durante la registrazione della comunicazione: %(error)s" -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "Label is required" +#~ msgstr "L'etichetta è obbligatoria" -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "Valore dell'offerta non valido" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "Offerta creata correttamente" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Errore durante la creazione dell'offerta: %(error)s" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "Offerta aggiornata con successo" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Errore durante l'aggiornamento dell'offerta: %(error)s" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "Affare chiuso come vinto" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Errore durante la chiusura dell'offerta: %(error)s" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Avanzato" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Revisione" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "Affare chiuso come perduto" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "Attività registrata con successo" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Errore durante la registrazione dell'attività: %(error)s" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "Il nome della categoria è obbligatorio" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Azienda" +#~ msgid "Expense category created successfully" +#~ msgstr "Categoria di spesa creata correttamente" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "Errore durante la creazione della categoria di spesa" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "Categoria di spesa aggiornata correttamente" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Webhook" +#~ msgid "Error updating expense category" +#~ msgstr "Errore durante l'aggiornamento della categoria di spesa" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Categoria di spesa disattivata con successo" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Progetti" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "Error deactivating expense category" +#~ msgstr "Errore durante la disattivazione della categoria di spesa" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "Title is required" +#~ msgstr "Il titolo è obbligatorio" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "Category is required" +#~ msgstr "La categoria è obbligatoria" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Amount is required" +#~ msgstr "L'importo è obbligatorio" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Expense date is required" +#~ msgstr "La data di spesa è obbligatoria" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "Formato data non valido" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "Formato importo non valido" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "Lo SKU esiste già. Utilizza uno SKU diverso." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Articolo in stock creato con successo." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "Errore durante la creazione dell'articolo in stock: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Articolo in stock aggiornato correttamente." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "Errore durante l'aggiornamento dell'articolo in stock: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "Impossibile eliminare l'articolo in stock con stock esistente o cronologia dei movimenti." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "Articolo in stock eliminato con successo." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "Errore durante l'eliminazione dell'articolo in stock: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "Il codice magazzino esiste già. Si prega di utilizzare un codice diverso." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Magazzino creato con successo." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Errore durante la creazione del magazzino: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Magazzino aggiornato con successo." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "Errore durante l'aggiornamento del magazzino: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "Impossibile eliminare il magazzino con stock esistente. Si prega di trasferire o rimuovere prima tutto lo stock." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Magazzino eliminato con successo." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Errore durante l'eliminazione del magazzino: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "Spesa creata con successo" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "Errore nella creazione della spesa" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "Non hai l'autorizzazione per visualizzare questa spesa" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "Non hai l'autorizzazione per modificare questa spesa" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "Non è possibile modificare le spese approvate o rimborsate" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Please fill in all required fields" +#~ msgstr "Si prega di compilare tutti i campi obbligatori" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Expense updated successfully" +#~ msgstr "Spese aggiornate con successo" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "Error updating expense" +#~ msgstr "Errore durante l'aggiornamento della spesa" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "Non hai l'autorizzazione per eliminare questa spesa" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "Impossibile eliminare le spese approvate o fatturate" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Expense deleted successfully" +#~ msgstr "Spesa eliminata correttamente" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "Errore durante l'eliminazione della spesa" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "Nessuna spesa selezionata per l'eliminazione" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare le spese a causa" +#~ " di un errore nel database. Controlla" +#~ " i log del server." -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "%(count)d spese eliminate correttamente" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "%(count)d spese saltate: %(errors)s" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "Nessuna spesa selezionata" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Invalid status value" +#~ msgstr "Valore di stato non valido" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "Impossibile aggiornare le spese a causa di un errore del database" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "%(count)d spese aggiornate a %(status)s" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "%(count)d spese saltate: %(errors)s" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "%(count)d spesa/e saltata/e (nessuna autorizzazione)" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Solo gli amministratori possono approvare le spese" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "Movimento delle azioni registrato con successo." +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Possono essere approvate solo le spese pendenti" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "Spesa approvata con successo" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "Errore durante la registrazione del movimento delle scorte: %(error)s" +#~ msgid "Error approving expense" +#~ msgstr "Errore nell'approvazione della spesa" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "I magazzini di origine e di destinazione devono essere diversi." +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Solo gli amministratori possono rifiutare le spese" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Stock insufficiente disponibile nel magazzino di origine." +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Possono essere rifiutate solo le spese pendenti" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "Rejection reason is required" +#~ msgstr "Il motivo del rifiuto è obbligatorio" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "Spesa respinta" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "Errore nel rifiuto della spesa" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "Trasferimento azioni completato con successo." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Errore durante la creazione del trasferimento: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "Adeguamento delle scorte registrato con successo." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Regolazione errore registrazione: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Prenotazione completata con successo." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Errore durante l'adempimento della prenotazione: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "Prenotazione annullata con successo." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "Errore durante l'annullamento della prenotazione: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "Solo gli amministratori possono contrassegnare le spese come rimborsate" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "Fornitore creato con successo." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Errore durante la creazione del fornitore: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "Il codice fornitore esiste già. Si prega di utilizzare un codice diverso." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "Fornitore aggiornato con successo." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Errore durante l'aggiornamento del fornitore: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "Impossibile eliminare il fornitore con articoli in stock associati. Rimuovere prima gli elementi." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "Fornitore eliminato correttamente." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Errore durante l'eliminazione del fornitore: %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "Il titolo è obbligatorio" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "Nessun fornitore trovato." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "Il nome del ruolo è obbligatorio" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "Impossibile creare il ruolo a causa di un errore del database" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Ordine d'acquisto creato con successo." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Errore durante la creazione dell'ordine d'acquisto: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "Non è possibile modificare un ordine d'acquisto ricevuto." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "Impossibile aggiornare il ruolo a causa di un errore del database" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Ordine d'acquisto aggiornato con successo." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Errore durante l'aggiornamento dell'ordine d'acquisto: %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "Impossibile aggiornare i ruoli utente a causa di un errore del database" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Ordine d'acquisto contrassegnato come inviato." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Errore durante l'invio dell'ordine di acquisto: %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "Impossibile creare il ruolo a causa di un errore del database" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Ordine d'acquisto annullato con successo." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Errore durante l'annullamento dell'ordine di acquisto: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "Impossibile eliminare un ordine d'acquisto ricevuto. Annullalo invece." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "Impossibile eliminare il ruolo a causa di un errore del database" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Ordine d'acquisto eliminato con successo." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Errore durante l'eliminazione dell'ordine d'acquisto: %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "Impossibile creare il ruolo a causa di un errore del database" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Ordine d'acquisto contrassegnato come ricevuto e stock aggiornato." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Errore nella ricezione dell'ordine d'acquisto: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Solo le spese approvate possono essere contrassegnate come rimborsate" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Questa spesa non è contrassegnata come rimborsabile" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Spesa contrassegnata come rimborsata" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Errore nel contrassegnare la spesa come rimborsata" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "L'OCR non è disponibile. Contatta il tuo amministratore." -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Tipo di file non valido. Tipi consentiti: png, jpg, jpeg, gif, pdf" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "Sono obbligatori il progetto, il nome del cliente e la data di scadenza" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "Ricevuta scansionata con successo! Ora " +#~ "puoi creare una spesa con i dati" +#~ " estratti." -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Formato della data di scadenza non valido" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Errore durante la scansione della " +#~ "ricevuta. Riprova o inserisci la spesa" +#~ " manualmente." -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Formato aliquota fiscale non valido" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "Nessun dato della ricevuta scansionata " +#~ "trovato. Per favore scansiona prima una" +#~ " ricevuta." -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Progetto selezionato non trovato" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Spesa creata correttamente dalla ricevuta scansionata" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "Impossibile creare la fattura a causa di un errore nel database. Controlla i log del server." +#~ msgid "Permission denied." +#~ msgstr "Nessuna autorizzazione assegnata." -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "Non hai l'autorizzazione per visualizzare questa fattura" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "Non hai l'autorizzazione per modificare questa fattura" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "Avviso: impossibile prenotare lo stock per l'articolo %(item)s: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "Impossibile aggiornare la fattura a causa di un errore nel database. Controlla i log del server." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "Fattura aggiornata correttamente" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "Avviso: impossibile ridurre le scorte per l'articolo %(item)s: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "Non hai l'autorizzazione per eliminare questa fattura" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "È possibile modificare solo le bozze delle citazioni" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "Impossibile eliminare la fattura a causa di un errore nel database. Controlla i log del server." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "Nessuna fattura selezionata per l'eliminazione" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "Impossibile eliminare le fatture a causa di un errore nel database. Controlla i log del server." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "Nessuna fattura selezionata" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "Impossibile aggiornare le fatture a causa di un errore nel database" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "Nessuna voce temporale, costo, spesa o merce extra selezionata" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "Impossibile generare elementi a causa di un errore del database. Controlla i log del server." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "Elementi della fattura generati correttamente da inserimenti di ore e costi" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "Applicate %(hours)s ore prepagate per %(client)s prima della fatturazione in eccesso." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "Non hai l'autorizzazione per esportare questa fattura" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "Generazione PDF non riuscita: %(err)s. Anche il fallback non è riuscito: %(fb)s" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "Non sei autorizzato a duplicare questa fattura" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "Impossibile duplicare la fattura a causa di un errore nel database. Controlla i log del server." +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "Impossibile finalizzare la fattura duplicata a causa di un errore nel database. Controlla i log del server." +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "API REST per integrazioni" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "Linear API key is required." +#~ msgstr "Il nome del cliente è obbligatorio" -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Fattura contrassegnata come inviata" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Fattura contrassegnata come pagata" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "Sono necessarie chiave ed etichetta" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "Impossibile creare la colonna a causa di un errore del database. Controlla i log del server." +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "Impossibile aggiornare la colonna a causa di un errore del database. Controlla i log del server." +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "Non è possibile eliminare le colonne di sistema" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "Impossibile eliminare la colonna a causa di un errore del database. Controlla i log del server." +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "Impossibile attivare/disattivare la colonna a causa di un errore del database. Controlla i log del server." +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "Il timer è stato interrotto correttamente" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Lead creato correttamente" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Errore durante la creazione del lead: %(error)s" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Lead aggiornato correttamente" +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Errore durante l'aggiornamento del lead: %(error)s" +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "Il lead è già stato convertito" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Lead convertito in cliente con successo" +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Errore durante la conversione del lead: %(error)s" +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Lead convertito in transazione riuscita" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Lead contrassegnato come perso" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "Errore nel contrassegnare il lead come perso: %(error)s" +#~ msgid "Advanced" +#~ msgstr "Avanzato" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "Review" +#~ msgstr "Revisione" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Company" +#~ msgstr "Azienda" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Webhooks" +#~ msgstr "Webhook" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Projects" +#~ msgstr "Progetti" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Inserimento delle miglia creato correttamente" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Errore durante la creazione dell'immissione del chilometraggio" +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "Non hai l'autorizzazione per visualizzare questa voce di chilometraggio" +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "Non hai l'autorizzazione per modificare questa voce di chilometraggio" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "Non è possibile modificare le voci relative alle miglia approvate o rimborsate" +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Voce del chilometraggio aggiornata correttamente" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Errore durante l'aggiornamento dell'immissione del chilometraggio" +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "Non hai l'autorizzazione per eliminare questa voce di miglia" +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "Inserimento miglia eliminato correttamente" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Errore durante l'eliminazione dell'inserimento del chilometraggio" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "Nessuna voce di chilometraggio selezionata per l'eliminazione" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "Impossibile eliminare le voci relative al chilometraggio a causa di un errore nel database. Controlla i log del server." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "Eliminazione di %(count)d miglia in entrata%(plural)s" +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "Lo SKU esiste già. Utilizza uno SKU diverso." -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "%(count)d inserimento chilometraggio saltato%(plural)s: %(errors)s" +#~ msgid "Stock item created successfully." +#~ msgstr "Articolo in stock creato con successo." -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "Nessuna voce di chilometraggio selezionata" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "Errore durante la creazione dell'articolo in stock: %(error)s" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "Impossibile aggiornare le voci relative al chilometraggio a causa di un errore nel database" +#~ msgid "Stock item updated successfully." +#~ msgstr "Articolo in stock aggiornato correttamente." -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "Aggiornamento %(count)d miglia miglia%(plural)s aggiornato con successo a %(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "%(count)d miglia inserite %(plural)s saltate (nessuna autorizzazione)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Solo gli amministratori possono approvare le voci relative alle miglia" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Possono essere approvati solo gli inserimenti di miglia in sospeso" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Inserimento delle miglia approvato con successo" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Errore durante l'approvazione dell'immissione delle miglia" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Solo gli amministratori possono rifiutare le voci relative alle miglia" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "È possibile rifiutare solo gli inserimenti di miglia in sospeso" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Inserimento miglia rifiutato" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Errore durante il rifiuto dell'immissione delle miglia" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "Solo gli amministratori possono contrassegnare le miglia come rimborsate" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "Solo le miglia approvate possono essere contrassegnate come rimborsate" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Voce di chilometraggio contrassegnata come rimborsata" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Errore nel contrassegnare l'inserimento delle miglia come rimborsato" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "Il titolo del preventivo e il cliente sono obbligatori" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Cliente selezionato non trovato" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Formato importo totale non valido" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Formato orario stimato non valido" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Formato data non valido per valido fino al" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "Impossibile creare il preventivo a causa di un errore nel database. Controlla i log del server." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Preventivo creato con successo" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "È possibile modificare solo le bozze delle citazioni" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "Impossibile aggiornare il preventivo a causa di un errore nel database. Controlla i log del server." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "Preventivo aggiornato con successo" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "È possibile inviare solo bozze di preventivo" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "Impossibile inviare il preventivo a causa di un errore nel database. Controlla i log del server." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Preventivo inviato con successo" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Questa citazione non può essere accettata" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "Impossibile accettare il preventivo: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "Impossibile accettare il preventivo a causa di un errore nel database. Controlla i log del server." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Preventivo accettato e progetto creato con successo" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Questa citazione non può essere rifiutata" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "Impossibile rifiutare la citazione: %(error)s" +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "Errore durante l'aggiornamento dell'articolo in stock: %(error)s" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "Impossibile rifiutare il preventivo a causa di un errore nel database. Controlla i log del server." +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "Impossibile eliminare l'articolo in stock " +#~ "con stock esistente o cronologia dei " +#~ "movimenti." -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Citazione rifiutata" +#~ msgid "Stock item deleted successfully." +#~ msgstr "Articolo in stock eliminato con successo." -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "È possibile eliminare solo i preventivi bozza o rifiutati" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "Errore durante l'eliminazione dell'articolo in stock: %(error)s" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "Impossibile eliminare il preventivo a causa di un errore nel database. Controlla i log del server." +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "" +#~ "Il codice magazzino esiste già. Si " +#~ "prega di utilizzare un codice diverso." -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Preventivo eliminato con successo" +#~ msgid "Warehouse created successfully." +#~ msgstr "Magazzino creato con successo." -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Errore durante la creazione del magazzino: %(error)s" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "Magazzino aggiornato con successo." -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "Errore durante l'aggiornamento del magazzino: %(error)s" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "Impossibile eliminare il magazzino con " +#~ "stock esistente. Si prega di trasferire" +#~ " o rimuovere prima tutto lo stock." -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "Non valido dal formato data" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Magazzino eliminato con successo." -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Formato data non valido" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Errore durante l'eliminazione del magazzino: %(error)s" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "Non hai l'autorizzazione per visualizzare questo pagamento" +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "Sono richiesti fattura, importo e data di pagamento" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "Fattura selezionata non trovata" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "Non hai l'autorizzazione per aggiungere pagamenti a questa fattura" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "L'importo del pagamento deve essere maggiore di zero" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Importo del pagamento non valido" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Formato della data di pagamento non valido" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "La tariffa del gateway non può essere negativa" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Importo della tariffa gateway non valido" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "Impossibile creare il pagamento a causa di un errore nel database. Controlla i log del server." +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "Non hai l'autorizzazione per modificare questo pagamento" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "Impossibile aggiornare il pagamento a causa di un errore nel database. Controlla i log del server." +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Pagamento aggiornato con successo" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "Non hai l'autorizzazione per eliminare questo pagamento" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "Impossibile eliminare il pagamento a causa di un errore nel database. Controlla i log del server." +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Pagamento eliminato con successo" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "Nessun pagamento selezionato per l'eliminazione" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "Impossibile eliminare i pagamenti a causa di un errore nel database. Controlla i log del server." +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "Nessun pagamento selezionato" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "Impossibile aggiornare i pagamenti a causa di un errore nel database" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "La data di inizio deve essere antecedente alla data di fine" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "Nessuna tariffa giornaliera trovata per questa località. Configura prima le tariffe." +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Richiesta di diaria creata correttamente" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Errore durante la creazione della richiesta di diaria" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "Movimento delle azioni registrato con successo." -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "Non disponi dell'autorizzazione per visualizzare questa richiesta di diaria" +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "Non sei autorizzato a modificare questa richiesta di diaria" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "Errore durante la registrazione del movimento delle scorte: %(error)s" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "Non è possibile modificare le richieste giornaliere approvate o rimborsate" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "I magazzini di origine e di destinazione devono essere diversi." -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "Richiesta giornaliera aggiornata correttamente" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Stock insufficiente disponibile nel magazzino di origine." -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Errore durante l'aggiornamento della richiesta di diaria" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "Non hai l'autorizzazione per eliminare questa richiesta di diaria" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Richiesta di diaria eliminata correttamente" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Errore durante l'eliminazione della richiesta di diaria" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "Nessuna richiesta di diaria selezionata per l'eliminazione" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "Impossibile eliminare le richieste di diaria a causa di un errore del database. Controlla i log del server." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "%(count)d richieste giornaliere eliminate correttamente" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "%(count)d richieste giornaliere ignorate: %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "Nessuna indennità giornaliera selezionata" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "Impossibile aggiornare le richieste giornaliere a causa di un errore nel database" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "%(count)d richieste giornaliere aggiornate con successo a %(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "%(count)d richieste giornaliere ignorate (nessuna autorizzazione)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Solo gli amministratori possono approvare le richieste di diaria" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Possono essere approvate solo le richieste di diaria pendenti" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Richiesta di diaria approvata con successo" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Errore nell'approvazione della richiesta di diaria giornaliera" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Solo gli amministratori possono respingere le richieste di diaria" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Solo le richieste di diaria pendenti possono essere respinte" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Richiesta di diaria respinta" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Errore durante il rifiuto della richiesta di diaria" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Tariffa giornaliera creata con successo" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Errore durante la creazione della tariffa giornaliera" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Tariffa giornaliera aggiornata con successo" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Errore durante l'aggiornamento della tariffa giornaliera" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "Impossibile eliminare la tariffa: è utilizzata da %(count)d richieste giornaliere. Disattivalo invece." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "Tariffa giornaliera eliminata correttamente" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Errore durante l'eliminazione della tariffa giornaliera" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "Non hai il permesso per accedere a questa pagina" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "Il nome del ruolo è obbligatorio" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "Esiste già un ruolo con questo nome" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "Impossibile creare il ruolo a causa di un errore del database" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Ruolo creato con successo" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "Impossibile aggiornare il ruolo a causa di un errore del database" +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Ruolo aggiornato con successo" +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "Non hai l'autorizzazione per eseguire questa azione" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "Trasferimento azioni completato con successo." -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "I ruoli di sistema non possono essere eliminati" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Errore durante la creazione del trasferimento: %(error)s" -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "Impossibile eliminare il ruolo assegnato agli utenti. Riassegna prima gli utenti." +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "Adeguamento delle scorte registrato con successo." -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "Impossibile eliminare il ruolo a causa di un errore del database" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Regolazione errore registrazione: %(error)s" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "Il ruolo \"%(name)s\" è stato eliminato con successo" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Prenotazione completata con successo." -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Errore durante l'adempimento della prenotazione: %(error)s" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "Reservation cancelled successfully." +#~ msgstr "Prenotazione annullata con successo." -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "Errore durante l'annullamento della prenotazione: %(error)s" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "Impossibile aggiornare i ruoli utente a causa di un errore del database" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Ruoli utente aggiornati correttamente" +#~ msgid "Supplier created successfully." +#~ msgstr "Fornitore creato con successo." -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Errore durante la creazione del fornitore: %(error)s" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "" +#~ "Il codice fornitore esiste già. Si " +#~ "prega di utilizzare un codice diverso." -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "Supplier updated successfully." +#~ msgstr "Fornitore aggiornato con successo." -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Errore durante l'aggiornamento del fornitore: %(error)s" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "Impossibile eliminare il fornitore con " +#~ "articoli in stock associati. Rimuovere " +#~ "prima gli elementi." -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "Supplier deleted successfully." +#~ msgstr "Fornitore eliminato correttamente." -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Errore durante l'eliminazione del fornitore: %(error)s" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Supplier is required." +#~ msgstr "Il titolo è obbligatorio" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "Il nome del progetto e il cliente sono obbligatori" +#~ msgid "Supplier not found." +#~ msgstr "Nessun fornitore trovato." -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Importo del budget non valido" +#~ msgid "Order date is required." +#~ msgstr "Il nome del ruolo è obbligatorio" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Percentuale soglia budget non valida (0-100)" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "Impossibile creare il ruolo a causa di un errore del database" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "Purchase order created successfully." +#~ msgstr "Ordine d'acquisto creato con successo." -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Progetto non trovato" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Errore durante la creazione dell'ordine d'acquisto: %(error)s" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "Non è possibile modificare un ordine d'acquisto ricevuto." -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "Non hai l'autorizzazione per archiviare progetti" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "Impossibile aggiornare il ruolo a causa di un errore del database" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "Il progetto è già archiviato" +#~ msgid "Purchase order updated successfully." +#~ msgstr "Ordine d'acquisto aggiornato con successo." -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "Non hai l'autorizzazione per annullare l'archiviazione dei progetti" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Errore durante l'aggiornamento dell'ordine d'acquisto: %(error)s" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "Il progetto è già attivo" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "Impossibile aggiornare i ruoli utente a causa di un errore del database" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "Non hai l'autorizzazione per disattivare i progetti" +#~ msgid "Purchase order marked as sent." +#~ msgstr "Ordine d'acquisto contrassegnato come inviato." -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "Il progetto è già inattivo" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Errore durante l'invio dell'ordine di acquisto: %(error)s" -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "Non hai i permessi per attivare progetti" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "Impossibile creare il ruolo a causa di un errore del database" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "Impossibile eliminare il progetto con voci di orario esistenti" +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Ordine d'acquisto annullato con successo." -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "Impossibile eliminare il progetto a causa di un errore del database. Controlla i log del server." +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Errore durante l'annullamento dell'ordine di acquisto: %(error)s" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "Non hai l'autorizzazione per eliminare progetti" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "Impossibile eliminare un ordine d'acquisto ricevuto. Annullalo invece." -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "Nessun progetto selezionato per l'eliminazione" +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "Impossibile eliminare il ruolo a causa di un errore del database" -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "Impossibile eliminare i progetti a causa di un errore del database. Controlla i log del server." +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Ordine d'acquisto eliminato con successo." -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "Nessun progetto è stato eliminato" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Errore durante l'eliminazione dell'ordine d'acquisto: %(error)s" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "Non hai l'autorizzazione per modificare lo stato del progetto" +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "Impossibile creare il ruolo a causa di un errore del database" -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "Nessun progetto selezionato" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "Ordine d'acquisto contrassegnato come ricevuto e stock aggiornato." -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "Impossibile aggiornare lo stato del progetto a causa di un errore del database. Controlla i log del server." +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Errore nella ricezione dell'ordine d'acquisto: %(error)s" -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "Nessun progetto è stato aggiornato" +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "Il progetto è già tra i preferiti" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Progetto aggiunto ai preferiti" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "Impossibile aggiungere il progetto ai preferiti" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "Il progetto non è tra i preferiti" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Progetto rimosso dai preferiti" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "Impossibile rimuovere il progetto dai preferiti" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "Sono obbligatori il progetto, il nome del cliente e la data di scadenza" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "Descrizione, categoria, importo e data sono obbligatori" +#~ msgid "Invalid due date format" +#~ msgstr "Formato della data di scadenza non valido" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "Impossibile aggiungere costi a causa di un errore del database. Controlla i log del server." +#~ msgid "Invalid tax rate format" +#~ msgstr "Formato aliquota fiscale non valido" -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Costo aggiunto correttamente" +#~ msgid "Selected project not found" +#~ msgstr "Progetto selezionato non trovato" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Costo non trovato" +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile creare la fattura a causa" +#~ " di un errore nel database. Controlla" +#~ " i log del server." -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "Non hai l'autorizzazione per modificare questo costo" +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "Non hai l'autorizzazione per visualizzare questa fattura" -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "Impossibile aggiornare il costo a causa di un errore del database. Controlla i log del server." +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Costo aggiornato correttamente" +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "Non hai l'autorizzazione per eliminare questo costo" +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "Impossibile eliminare il costo fatturato" +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "Impossibile eliminare il costo a causa di un errore del database. Controlla i log del server." +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Nome e prezzo unitario sono obbligatori" +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Formato quantità non valido" +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Formato del prezzo unitario non valido" +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "Non hai l'autorizzazione per modificare questa fattura" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "Impossibile aggiungere extra a causa di un errore del database. Controlla i log del server." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Extra buono aggiunto con successo" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Extra buono non trovato" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "Non hai l'autorizzazione per modificare questo bene extra" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "Impossibile aggiornare extra a causa di un errore del database. Controlla i log del server." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Extra buono aggiornato con successo" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "Non hai l'autorizzazione per eliminare questo bene extra" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "Impossibile eliminare la merce extra aggiunta a una fattura" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "Impossibile eliminare il buono extra a causa di un errore del database. Controlla i log del server." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Progetto creato con successo" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Formato importo sconto non valido" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "Il preventivo deve essere approvato prima di poter essere inviato" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "Impossibile inviare il preventivo: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "Non hai l'autorizzazione per caricare allegati a questo preventivo" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "Non hai l'autorizzazione per scaricare questo allegato" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "Non hai l'autorizzazione per richiedere l'approvazione per questo preventivo" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Questo preventivo non necessita di approvazione" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "Impossibile richiedere l'approvazione: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "Impossibile richiedere l'approvazione a causa di un errore del database. Controlla i log del server." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Approvazione richiesta con successo" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Questo preventivo non è in attesa di approvazione" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "Impossibile approvare il preventivo: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "Impossibile approvare il preventivo a causa di un errore nel database. Controlla i log del server." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Preventivo approvato con successo" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "Impossibile rifiutare la citazione: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Approvazione del preventivo rifiutata" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "Impossibile creare il modello a causa di un errore del database. Controlla i log del server." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Modello creato con successo" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Avviso: impossibile prenotare lo stock " +#~ "per l'articolo %(item)s: %(error)s" + +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare la fattura a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." + +#~ msgid "Invoice updated successfully" +#~ msgstr "Fattura aggiornata correttamente" + +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Avviso: impossibile ridurre le scorte " +#~ "per l'articolo %(item)s: %(error)s" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "Non hai l'autorizzazione per eliminare questa fattura" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "È possibile modificare solo le bozze delle citazioni" + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare la fattura a causa" +#~ " di un errore nel database. Controlla" +#~ " i log del server." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "Nessuna fattura selezionata per l'eliminazione" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare le fatture a causa" +#~ " di un errore nel database. Controlla" +#~ " i log del server." + +#~ msgid "No invoices selected" +#~ msgstr "Nessuna fattura selezionata" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "Impossibile aggiornare le fatture a causa di un errore nel database" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "Nessuna voce temporale, costo, spesa o merce extra selezionata" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile generare elementi a causa di" +#~ " un errore del database. Controlla i" +#~ " log del server." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "" +#~ "Elementi della fattura generati correttamente" +#~ " da inserimenti di ore e costi" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "Applicate %(hours)s ore prepagate per " +#~ "%(client)s prima della fatturazione in " +#~ "eccesso." + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "Non hai l'autorizzazione per esportare questa fattura" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" + +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" + +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" + +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "" +#~ "Generazione PDF non riuscita: %(err)s. " +#~ "Anche il fallback non è riuscito: " +#~ "%(fb)s" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "Non hai il permesso per creare un modello da questo preventivo" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "Impossibile salvare il modello a causa di un errore del database. Controlla i log del server." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Modello salvato con successo" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "Non hai il permesso per esportare questo preventivo" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Errore durante la generazione del PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "L'indirizzo email del destinatario è obbligatorio" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Preventivo inviato con successo a %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "Impossibile inviare il preventivo: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Errore durante l'invio dell'e-mail: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "Non hai il permesso di duplicare questo preventivo" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "Impossibile duplicare il preventivo a causa di un errore nel database. Controlla i log del server." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "Impossibile finalizzare il preventivo duplicato a causa di un errore nel database. Controlla i log del server." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "Citazione %(quote_number)s creata come duplicata" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Seleziona un'azione e almeno un preventivo" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "ID preventivo non validi" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "Nessuna citazione trovata o non hai il permesso" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "%(count)d virgolette duplicate" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "Impossibile duplicare %(count)d virgolette" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Errore durante la duplicazione delle virgolette" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "%(count)d citazioni contrassegnate come inviate" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "Impossibile contrassegnare %(count)d virgolette come inviate" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Errore durante l'aggiornamento delle virgolette" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "%(count)d virgolette eliminate" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "Impossibile eliminare %(count)d virgolette (potrebbero essere in uso)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Errore durante l'eliminazione delle virgolette" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Azione non valida" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "Non sei autorizzato a duplicare questa fattura" -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Impossibile duplicare la fattura a causa" +#~ " di un errore nel database. Controlla" +#~ " i log del server." -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "Sono richiesti nome, progetto, cliente, frequenza e data di prossima esecuzione" +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Impossibile finalizzare la fattura duplicata" +#~ " a causa di un errore nel " +#~ "database. Controlla i log del server." -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Formato della data della prossima esecuzione non valido" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Formato della data di fine non valido" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Progetto o cliente selezionato non trovato" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "Impossibile creare una fattura ricorrente a causa di un errore nel database. Controlla i log del server." +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "Non hai l'autorizzazione per visualizzare questa fattura ricorrente" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "Non hai l'autorizzazione per modificare questa fattura ricorrente" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "Impossibile aggiornare la fattura ricorrente a causa di un errore nel database. Controlla i log del server." +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Fattura ricorrente aggiornata correttamente" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "Non hai l'autorizzazione per eliminare questa fattura ricorrente" +#~ msgid "Invoice marked as sent" +#~ msgstr "Fattura contrassegnata come inviata" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "Impossibile eliminare la fattura ricorrente a causa di un errore nel database. Controlla i log del server." +#~ msgid "Invoice marked as paid" +#~ msgstr "Fattura contrassegnata come pagata" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Client is required." +#~ msgstr "" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Inizio" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "FINE" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Compito" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Note" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "Fatturabile" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Cliente" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Utente" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "SÌ" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "NO" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "Impossibile eliminare il filtro a causa di un errore del database" +#~ msgid "Project must belong to the same client." +#~ msgstr "" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "Impossibile aggiornare le impostazioni a causa di un errore del database. Controlla i log del server." +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "Configurazione completata! Grazie per averci aiutato a migliorare TimeTracker." +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "Key and label are required" +#~ msgstr "Sono necessarie chiave ed etichetta" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile creare la colonna a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "Il nome del progetto e dell'attività sono obbligatori" +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare la colonna a " +#~ "causa di un errore del database. " +#~ "Controlla i log del server." -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "System columns cannot be deleted" +#~ msgstr "Non è possibile eliminare le colonne di sistema" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "Il progetto selezionato non esiste" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare la colonna a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile attivare/disattivare la colonna a" +#~ " causa di un errore del database. " +#~ "Controlla i log del server." -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "Non hai accesso a questa attività" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Puoi modificare solo le attività che hai creato" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "Il nome dell'attività è obbligatorio" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "Il progetto è richiesto" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "Impossibile aggiornare lo stato a causa di un errore del database. Controlla i log del server." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "Impossibile aggiornare l'attività a causa di un errore del database. Controlla i log del server." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "Non hai l'autorizzazione per aggiornare questa attività" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "Puoi aggiornare solo le attività che hai creato" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "Puoi assegnare solo le attività che hai creato" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "L'utente selezionato non esiste" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Compito non assegnato" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Puoi eliminare solo le attività che hai creato" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "Impossibile eliminare l'attività con voci di orario esistenti" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "Impossibile eliminare l'attività a causa di un errore del database. Controlla i log del server." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "Nessuna attività selezionata per l'eliminazione" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "Impossibile eliminare le attività a causa di un errore del database. Controlla i log del server." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "Nessuna attività selezionata" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "Impossibile aggiornare le attività a causa di un errore del database" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Inserisci la nuova data di scadenza (AAAA-MM-GG):" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "La data di spesa è obbligatoria" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Formato data non valido" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "Supporto della banca dati" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "%(count)d virgolette duplicate" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "Nessuna attività trovata" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "%(count)d spese aggiornate a %(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "%(count)d spesa/e saltata/e (nessuna autorizzazione)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Valore di priorità non valido" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Nessun utente selezionato per l'assegnazione" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Utente non valido selezionato" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "Impossibile assegnare attività a causa di un errore del database" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Nessun progetto selezionato" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Selezionato progetto non valido" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "Impossibile spostare le attività a causa di un errore del database" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Solo gli amministratori possono visualizzare tutte le attività scadute" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "Timer stopped successfully" +#~ msgstr "Il timer è stato interrotto correttamente" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "Lead created successfully" +#~ msgstr "Lead creato correttamente" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Errore durante la creazione del lead: %(error)s" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Lead updated successfully" +#~ msgstr "Lead aggiornato correttamente" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Errore durante l'aggiornamento del lead: %(error)s" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "Lead has already been converted" +#~ msgstr "Il lead è già stato convertito" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "Lead converted to client successfully" +#~ msgstr "Lead convertito in cliente con successo" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Errore durante la conversione del lead: %(error)s" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "Impossibile creare il modello a causa di un errore del database" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Lead convertito in transazione riuscita" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "Impossibile aggiornare il modello a causa di un errore del database" +#~ msgid "Lead marked as lost" +#~ msgstr "Lead contrassegnato come perso" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "Impossibile eliminare il modello a causa di un errore del database" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "Errore nel contrassegnare il lead come perso: %(error)s" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "Impossibile avviare il timer per un progetto archiviato. Per favore, annulla prima l'archiviazione del progetto." +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "Impossibile avviare il timer per un progetto inattivo" +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "L'attività selezionata non è valida per il progetto scelto" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "Non hai accesso a questo progetto." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "Non hai accesso a questa attività" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Hai già un timer attivo. Interrompetelo prima di iniziarne uno nuovo." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "Impossibile avviare il timer a causa di un errore del database. Controlla i log del server." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Sconosciuto" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "Il modello deve avere un progetto per avviare un timer" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "Impossibile avviare il timer per questo progetto" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "Nessun timer attivo da interrompere" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Nessun progetto" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "Nessun timer attivo da interrompere" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "Il timer si è fermato" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "Impossibile creare il cliente. Per favore riprova." +#~ msgid "Mileage entry created successfully" +#~ msgstr "Inserimento delle miglia creato correttamente" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "Nessun timer attivo da interrompere" +#~ msgid "Error creating mileage entry" +#~ msgstr "Errore durante la creazione dell'immissione del chilometraggio" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "Non hai l'autorizzazione per visualizzare questa voce di chilometraggio" -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "Impossibile creare il cliente. Per favore riprova." +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "Non hai l'autorizzazione per modificare questa voce di chilometraggio" -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "Nessun timer attivo da interrompere" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "" +#~ "Non è possibile modificare le voci " +#~ "relative alle miglia approvate o " +#~ "rimborsate" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "Valore di stato non valido" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Voce del chilometraggio aggiornata correttamente" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "Puoi modificare solo i tuoi timer" +#~ msgid "Error updating mileage entry" +#~ msgstr "Errore durante l'aggiornamento dell'immissione del chilometraggio" -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Attività non valida selezionata per il progetto scelto" +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "Non hai l'autorizzazione per eliminare questa voce di miglia" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "L'ora di inizio non può essere futura" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "Inserimento miglia eliminato correttamente" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Formato data/ora di inizio non valido" +#~ msgid "Error deleting mileage entry" +#~ msgstr "Errore durante l'eliminazione dell'inserimento del chilometraggio" -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "L'ora di fine deve essere successiva all'ora di inizio" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "Nessuna voce di chilometraggio selezionata per l'eliminazione" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Formato data/ora di fine non valido" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossibile eliminare le voci relative " +#~ "al chilometraggio a causa di un " +#~ "errore nel database. Controlla i log " +#~ "del server." -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Il timer è stato aggiornato correttamente" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "Eliminazione di %(count)d miglia in entrata%(plural)s" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "%(count)d inserimento chilometraggio saltato%(plural)s: %(errors)s" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Puoi eliminare solo i tuoi timer" +#~ msgid "No mileage entries selected" +#~ msgstr "Nessuna voce di chilometraggio selezionata" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "Impossibile eliminare un timer attivo" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "" +#~ "Impossibile aggiornare le voci relative " +#~ "al chilometraggio a causa di un " +#~ "errore nel database" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "Impossibile eliminare il timer a causa di un errore del database. Controlla i log del server." +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "" +#~ "Aggiornamento %(count)d miglia miglia%(plural)s " +#~ "aggiornato con successo a %(status)s" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "%(count)d miglia inserite %(plural)s saltate (nessuna autorizzazione)" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Solo gli amministratori possono approvare le voci relative alle miglia" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Possono essere approvati solo gli inserimenti di miglia in sospeso" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Inserimento delle miglia approvato con successo" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Error approving mileage entry" +#~ msgstr "Errore durante l'approvazione dell'immissione delle miglia" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Solo gli amministratori possono rifiutare le voci relative alle miglia" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "È possibile rifiutare solo gli inserimenti di miglia in sospeso" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Formato data/ora non valido" +#~ msgid "Mileage entry rejected" +#~ msgstr "Inserimento miglia rifiutato" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Errore durante il rifiuto dell'immissione delle miglia" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "" +#~ "Solo gli amministratori possono contrassegnare" +#~ " le miglia come rimborsate" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Tutti i campi sono obbligatori" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "Solo le miglia approvate possono essere contrassegnate come rimborsate" -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "Impossibile creare voci di orario per un progetto archiviato. Per favore, annulla prima l'archiviazione del progetto." +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Voce di chilometraggio contrassegnata come rimborsata" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "Impossibile creare voci di orario per un progetto inattivo" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Errore nel contrassegnare l'inserimento delle miglia come rimborsato" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Attività selezionata non valida" +#~ msgid "Quote title and client are required" +#~ msgstr "Il titolo del preventivo e il cliente sono obbligatori" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "La data di fine deve essere successiva o uguale alla data di inizio" +#~ msgid "Selected client not found" +#~ msgstr "Cliente selezionato non trovato" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "L'intervallo di date non può superare i 31 giorni" +#~ msgid "Invalid total amount format" +#~ msgstr "Formato importo totale non valido" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Formato ora non valido" +#~ msgid "Invalid estimated hours format" +#~ msgstr "Formato orario stimato non valido" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "Nessuna data valida trovata nell'intervallo selezionato" +#~ msgid "Invalid date format for valid until" +#~ msgstr "Formato data non valido per valido fino al" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "Impossibile creare voci in blocco a causa di un errore del database. Controlla i log del server." +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile creare il preventivo a causa" +#~ " di un errore nel database. Controlla" +#~ " i log del server." -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "Si è verificato un errore durante la creazione di voci collettive. Per favore riprova." +#~ msgid "Quote created successfully" +#~ msgstr "Preventivo creato con successo" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Puoi duplicare solo i tuoi timer" +#~ msgid "Only draft quotes can be edited" +#~ msgstr "È possibile modificare solo le bozze delle citazioni" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "Puoi ripristinare solo i tuoi timer" +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare il preventivo a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "Il progetto non esiste più" +#~ msgid "Quote updated successfully" +#~ msgstr "Preventivo aggiornato con successo" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "È possibile inviare solo bozze di preventivo" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "Impossibile inviare il preventivo a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "Impossibile riprendere il timer a causa di un errore del database. Controlla i log del server." +#~ msgid "Quote sent successfully" +#~ msgstr "Preventivo inviato con successo" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "This quote cannot be accepted" +#~ msgstr "Questa citazione non può essere accettata" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "Impossibile accettare il preventivo: %(error)s" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile accettare il preventivo a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Preventivo accettato e progetto creato con successo" -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "This quote cannot be rejected" +#~ msgstr "Questa citazione non può essere rifiutata" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "Impossibile rifiutare la citazione: %(error)s" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Selezionato fuso orario non valido" +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile rifiutare il preventivo a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." + +#~ msgid "Quote rejected" +#~ msgstr "Citazione rifiutata" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "L'orario standard giornaliero deve essere compreso tra 0,5 e 24" +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "È possibile eliminare solo i preventivi bozza o rifiutati" -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "L'orario standard giornaliero deve essere compreso tra 0,5 e 24" +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare il preventivo a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." + +#~ msgid "Quote deleted successfully" +#~ msgstr "Preventivo eliminato con successo" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "" + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Stripe API key not configured." +#~ msgstr "" + +#~ msgid "Payment processed successfully." +#~ msgstr "" + +#~ msgid "Invalid from date format" +#~ msgstr "Non valido dal formato data" + +#~ msgid "Invalid to date format" +#~ msgstr "Formato data non valido" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "Non hai l'autorizzazione per visualizzare questo pagamento" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "Sono richiesti fattura, importo e data di pagamento" + +#~ msgid "Selected invoice not found" +#~ msgstr "Fattura selezionata non trovata" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "Non hai l'autorizzazione per aggiungere pagamenti a questa fattura" + +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "L'importo del pagamento deve essere maggiore di zero" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Impostazioni salvate con successo" +#~ msgid "Invalid payment amount" +#~ msgstr "Importo del pagamento non valido" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Errore durante il salvataggio delle impostazioni: %(error)s" +#~ msgid "Invalid payment date format" +#~ msgstr "Formato della data di pagamento non valido" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "La tariffa del gateway non può essere negativa" -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "Grazie per aver scelto TimeTracker!" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "Errore durante il salvataggio delle impostazioni" +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Importo della tariffa gateway non valido" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Preferenze aggiornate" +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile creare il pagamento a causa" +#~ " di un errore nel database. Controlla" +#~ " i log del server." + +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "Non hai l'autorizzazione per modificare questo pagamento" + +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare il pagamento a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Lingua aggiornata con successo" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Lingua non valida" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "Lingua aggiornata a %(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "Il nome del webhook è obbligatorio" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "L'URL del webhook è obbligatorio" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "È necessario selezionare almeno un evento" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook creato correttamente" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Errore durante la creazione del webhook" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "Errore durante la creazione del webhook: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook aggiornato correttamente" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "Errore durante l'aggiornamento del webhook: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook eliminato correttamente" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "Errore durante l'eliminazione del webhook: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Inserisci un orario target valido (maggiore di 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "Esiste già un obiettivo per questa settimana. Modifica invece l'obiettivo esistente." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "Obiettivo di tempo settimanale creato con successo!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "Impossibile creare l'obiettivo. Per favore riprova." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "Non hai l'autorizzazione per visualizzare questo obiettivo" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "Non hai l'autorizzazione per modificare questo obiettivo" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "Obiettivo temporale settimanale aggiornato con successo!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "Impossibile aggiornare l'obiettivo. Per favore riprova." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "Non hai l'autorizzazione per eliminare questo obiettivo" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "Obiettivo temporale settimanale eliminato correttamente" +#~ msgid "Payment updated successfully" +#~ msgstr "Pagamento aggiornato con successo" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "Impossibile eliminare l'obiettivo. Per favore riprova." +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "Non hai l'autorizzazione per eliminare questo pagamento" + +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare il pagamento a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "Payment deleted successfully" +#~ msgstr "Pagamento eliminato con successo" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "No payments selected for deletion" +#~ msgstr "Nessun pagamento selezionato per l'eliminazione" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare i pagamenti a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "No payments selected" +#~ msgstr "Nessun pagamento selezionato" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "Impossibile aggiornare i pagamenti a causa di un errore nel database" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "Start date must be before end date" +#~ msgstr "La data di inizio deve essere antecedente alla data di fine" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "Nessuna tariffa giornaliera trovata per " +#~ "questa località. Configura prima le " +#~ "tariffe." -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "Per diem claim created successfully" +#~ msgstr "Richiesta di diaria creata correttamente" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "Error creating per diem claim" +#~ msgstr "Errore durante la creazione della richiesta di diaria" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "" +#~ "Non disponi dell'autorizzazione per " +#~ "visualizzare questa richiesta di diaria" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "Non sei autorizzato a modificare questa richiesta di diaria" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Aggiorna stato" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "" +#~ "Non è possibile modificare le richieste" +#~ " giornaliere approvate o rimborsate" -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Richiesta giornaliera aggiornata correttamente" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Crea attività" +#~ msgid "Error updating per diem claim" +#~ msgstr "Errore durante l'aggiornamento della richiesta di diaria" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "Non hai l'autorizzazione per eliminare questa richiesta di diaria" -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "Invia e-mail" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Richiesta di diaria eliminata correttamente" -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Error deleting per diem claim" +#~ msgstr "Errore durante l'eliminazione della richiesta di diaria" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "Nessuna richiesta di diaria selezionata per l'eliminazione" -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Impossibile eliminare le richieste di " +#~ "diaria a causa di un errore del" +#~ " database. Controlla i log del " +#~ "server." -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "%(count)d richieste giornaliere eliminate correttamente" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "%(count)d richieste giornaliere ignorate: %(errors)s" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "No per diem claims selected" +#~ msgstr "Nessuna indennità giornaliera selezionata" -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "Seleziona Progetto" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "" +#~ "Impossibile aggiornare le richieste " +#~ "giornaliere a causa di un errore " +#~ "nel database" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "Solo gli amministratori possono rifiutare le voci relative alle miglia" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "%(count)d richieste giornaliere aggiornate con successo a %(status)s" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "%(count)d richieste giornaliere ignorate (nessuna autorizzazione)" -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "Aggiornamenti in tempo reale di WebSocket" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "Solo gli amministratori possono approvare le richieste di diaria" -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "Nome e prezzo unitario sono obbligatori" +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "Possono essere approvate solo le richieste di diaria pendenti" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "Cliente creato" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Richiesta di diaria approvata con successo" -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "Sono necessarie chiave ed etichetta" +#~ msgid "Error approving per diem claim" +#~ msgstr "Errore nell'approvazione della richiesta di diaria giornaliera" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "Solo gli amministratori possono respingere le richieste di diaria" -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "Richiedi approvazione" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "Solo le richieste di diaria pendenti possono essere respinte" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "Citazione rifiutata" +#~ msgid "Per diem claim rejected" +#~ msgstr "Richiesta di diaria respinta" -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "Nome e prezzo unitario sono obbligatori" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Errore durante il rifiuto della richiesta di diaria" -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "Tariffa oraria" +#~ msgid "Per diem rate created successfully" +#~ msgstr "Tariffa giornaliera creata con successo" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "Error creating per diem rate" +#~ msgstr "Errore durante la creazione della tariffa giornaliera" -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Tariffa giornaliera aggiornata con successo" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "rimanente" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Successo" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Errore" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Avvertimento" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Informazioni" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Caricamento..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Risparmio..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "Eliminazione..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Cancellare" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Confermare" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Vicino" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Salva" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Eliminare" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Modificare" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Aggiungere" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Rimuovere" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "OK" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "Sei sicuro di voler eliminare questo?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "Sono presenti modifiche non salvate. Sei sicuro di voler partire?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "Operazione fallita" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Operazione completata con successo" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "Nessun elemento selezionato" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Immissione non valida" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Questo campo è obbligatorio" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Nessun timer attivo" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Il timer si è fermato" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "Impossibile arrestare il timer" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Errore durante l'arresto del timer" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "Nessun modulo da salvare" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "Nessun timer trovato" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Il timer si è fermato per inattività" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "Error updating per diem rate" +#~ msgstr "Errore durante l'aggiornamento della tariffa giornaliera" -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Vai al contenuto" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "Navigazione mobile" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navigazione" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "Tavolozza dei comandi" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "Commenti" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Attiva/disattiva la barra laterale" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Pannello di controllo" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Timer" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "Voci di tempo" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Rapporti" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Calendario" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Visualizzazione calendario" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "Impossibile eliminare la tariffa: è " +#~ "utilizzata da %(count)d richieste giornaliere." +#~ " Disattivalo invece." -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Monitoraggio del tempo" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "Richiedi approvazione" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "Tariffa giornaliera eliminata correttamente" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "Error deleting per diem rate" +#~ msgstr "Errore durante l'eliminazione della tariffa giornaliera" -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Compiti" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "You do not have permission to access this page" +#~ msgstr "Non hai il permesso per accedere a questa pagina" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Tabellone Kanban" +#~ msgid "Role name is required" +#~ msgstr "Il nome del ruolo è obbligatorio" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Obiettivi settimanali" +#~ msgid "A role with this name already exists" +#~ msgstr "Esiste già un ruolo con questo nome" -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "Could not create role due to a database error" +#~ msgstr "Impossibile creare il ruolo a causa di un errore del database" -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Modelli di immissione del tempo" +#~ msgid "Role created successfully" +#~ msgstr "Ruolo creato con successo" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Clienti" +#~ msgid "Could not update role due to a database error" +#~ msgstr "Impossibile aggiornare il ruolo a causa di un errore del database" -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "Role updated successfully" +#~ msgstr "Ruolo aggiornato con successo" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "Non hai l'autorizzazione per eseguire questa azione" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "I ruoli di sistema non possono essere eliminati" -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "Impossibile eliminare il ruolo assegnato " +#~ "agli utenti. Riassegna prima gli utenti." -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Citazioni" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "Impossibile eliminare il ruolo a causa di un errore del database" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Finanze e spese" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Il ruolo \"%(name)s\" è stato eliminato con successo" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Rapporti pianificati" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Fatture" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "Impossibile aggiornare i ruoli utente a causa di un errore del database" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "User roles updated successfully" +#~ msgstr "Ruoli utente aggiornati correttamente" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Fatture ricorrenti" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Pagamenti" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Spese" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Chilometraggio" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Al giorno" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Avvisi sul budget" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Inventario" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Articoli in stock" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Magazzini" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Fornitori" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Ordini di acquisto" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Livelli delle scorte" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Movimenti di borsa" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Trasferimenti" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Aggiustamenti" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Prenotazioni" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Avvisi di scorte basse" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Analitica" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Strumenti e dati" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Importa/Esporta" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Filtri salvati" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Ammin" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Pannello di amministrazione" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Gestione utenti" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Ruoli e autorizzazioni" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "Modelli PDF" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "PDF della fattura" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Citazione PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Impostazioni di sistema" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Impostazioni" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "Template not found." +#~ msgstr "" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "Configurazione e-mail" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "Modelli di posta elettronica" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "Impostazioni OIDC" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "Token API" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Registri di controllo" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "Il nome del progetto e il cliente sono obbligatori" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Categorie di spesa" +#~ msgid "Invalid budget amount" +#~ msgstr "Importo del budget non valido" -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Tariffe giornaliere" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Percentuale soglia budget non valida (0-100)" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Project not found" +#~ msgstr "Progetto non trovato" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Informazioni sul sistema" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "Non hai l'autorizzazione per archiviare progetti" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Backup" +#~ msgid "Project is already archived" +#~ msgstr "Il progetto è già archiviato" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "Non hai l'autorizzazione per annullare l'archiviazione dei progetti" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "Di" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Aiuto" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "Opzioni di esportazione" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Supporta TimeTracker" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "Attiva/disattiva la barra laterale" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Ricerca" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Tema" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "Opzioni filtro" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Leggero" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Buio" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "Sistema" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "Project is already active" +#~ msgstr "Il progetto è già attivo" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Avvia il timer" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "A" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "Visualizza la Guida" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Cambia lingua" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Lingua" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Menù utente" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "Supporto" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Ospite" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Il mio profilo" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Le mie impostazioni" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Licenza" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "Non hai l'autorizzazione per disattivare i progetti" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Esci" +#~ msgid "Project is already inactive" +#~ msgstr "Il progetto è già inattivo" -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "Ti piace TimeTracker?" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "Non hai i permessi per attivare progetti" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "Impossibile eliminare il progetto con voci di orario esistenti" -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "Supporta TimeTracker" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare il progetto a " +#~ "causa di un errore del database. " +#~ "Controlla i log del server." -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "Non hai l'autorizzazione per eliminare progetti" -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" +#~ msgid "No projects selected for deletion" +#~ msgstr "Nessun progetto selezionato per l'eliminazione" -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "Forniture" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare i progetti a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Congedare" +#~ msgid "No projects were deleted" +#~ msgstr "Nessun progetto è stato eliminato" -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "You do not have permission to change project status" +#~ msgstr "Non hai l'autorizzazione per modificare lo stato del progetto" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "Data di inizio" +#~ msgid "No projects selected" +#~ msgstr "Nessun progetto selezionato" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "Carica altro" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossibile aggiornare lo stato del " +#~ "progetto a causa di un errore del" +#~ " database. Controlla i log del " +#~ "server." -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "Visualizza attività" +#~ msgid "No projects were updated" +#~ msgstr "Nessun progetto è stato aggiornato" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "Project is already in favorites" +#~ msgstr "Il progetto è già tra i preferiti" -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "Azioni rapide" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Azioni" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Registra l'ora" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Nuovo compito" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "Visualizza progetto" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "Modifica cliente" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "Operazione fallita" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "Project added to favorites" +#~ msgstr "Progetto aggiunto ai preferiti" -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "Contratto terminato" +#~ msgid "Failed to add project to favorites" +#~ msgstr "Impossibile aggiungere il progetto ai preferiti" -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "Anteprima del logo" +#~ msgid "Project is not in favorites" +#~ msgstr "Il progetto non è tra i preferiti" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "Project removed from favorites" +#~ msgstr "Progetto rimosso dai preferiti" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "FINE" +#~ msgid "Failed to remove project from favorites" +#~ msgstr "Impossibile rimuovere il progetto dai preferiti" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "Descrizione, categoria, importo e data sono obbligatori" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "Impossibile aggiungere costi a causa di" +#~ " un errore del database. Controlla i" +#~ " log del server." -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "Cost added successfully" +#~ msgstr "Costo aggiunto correttamente" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Cost not found" +#~ msgstr "Costo non trovato" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "Crea token API" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "Il tuo token API" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Esempi di utilizzo" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "Sei sicuro di volerlo fare?" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "disattivare" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "attivare" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "questo gettone?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Disattiva gettone" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Attiva gettone" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Disattivare" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Attivare" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "Sei sicuro di voler eliminare questo token? Questa azione non può essere annullata." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Elimina gettone" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Crea backup" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Ripristina backup" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Backup esistenti" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Informazioni importanti" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Conferma l'eliminazione" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Cancella cache" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "Stato di ServiceWorker" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Cancella tutte le cache" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "Azioni ServiceWorker" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Aggiornamento manuale manuale" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "Non hai l'autorizzazione per modificare questo costo" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Tutto il tempo" +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare il costo a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." + +#~ msgid "Cost updated successfully" +#~ msgstr "Costo aggiornato correttamente" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "Non hai l'autorizzazione per eliminare questo costo" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "Impossibile eliminare il costo fatturato" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare il costo a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." + +#~ msgid "Name and unit price are required" +#~ msgstr "Nome e prezzo unitario sono obbligatori" + +#~ msgid "Invalid quantity format" +#~ msgstr "Formato quantità non valido" + +#~ msgid "Invalid unit price format" +#~ msgstr "Formato del prezzo unitario non valido" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossibile aggiungere extra a causa di" +#~ " un errore del database. Controlla i" +#~ " log del server." + +#~ msgid "Extra good added successfully" +#~ msgstr "Extra buono aggiunto con successo" + +#~ msgid "Extra good not found" +#~ msgstr "Extra buono non trovato" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "Non hai l'autorizzazione per modificare questo bene extra" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossibile aggiornare extra a causa di" +#~ " un errore del database. Controlla i" +#~ " log del server." + +#~ msgid "Extra good updated successfully" +#~ msgstr "Extra buono aggiornato con successo" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "Non hai l'autorizzazione per eliminare questo bene extra" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "Impossibile eliminare la merce extra aggiunta a una fattura" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossibile eliminare il buono extra a" +#~ " causa di un errore del database. " +#~ "Controlla i log del server." + +#~ msgid "Project created successfully" +#~ msgstr "Progetto creato con successo" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Formato importo sconto non valido" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "Il preventivo deve essere approvato prima di poter essere inviato" + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "Impossibile inviare il preventivo: %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "Non hai l'autorizzazione per caricare allegati a questo preventivo" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "Non hai l'autorizzazione per scaricare questo allegato" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "" +#~ "Non hai l'autorizzazione per richiedere " +#~ "l'approvazione per questo preventivo" + +#~ msgid "This quote does not require approval" +#~ msgstr "Questo preventivo non necessita di approvazione" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "Impossibile richiedere l'approvazione: %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Impossibile richiedere l'approvazione a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." + +#~ msgid "Approval requested successfully" +#~ msgstr "Approvazione richiesta con successo" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Questo preventivo non è in attesa di approvazione" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "Impossibile approvare il preventivo: %(error)s" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile approvare il preventivo a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." + +#~ msgid "Quote approved successfully" +#~ msgstr "Preventivo approvato con successo" + +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "Impossibile rifiutare la citazione: %(error)s" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "Quote approval rejected" +#~ msgstr "Approvazione del preventivo rifiutata" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile creare il modello a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Progetti totali" +#~ msgid "Template created successfully" +#~ msgstr "Modello creato con successo" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Progetti attivi" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "Non hai il permesso per creare un modello da questo preventivo" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile salvare il modello a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "Modello salvato con successo" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "Non hai il permesso per esportare questo preventivo" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Errore durante la generazione del PDF: %(error)s" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Recipient email address is required" +#~ msgstr "L'indirizzo email del destinatario è obbligatorio" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Preventivo inviato con successo a %(email)s" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "Impossibile inviare il preventivo: %(error)s" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Errore durante l'invio dell'e-mail: %(error)s" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "Non hai il permesso di duplicare questo preventivo" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Banca dati" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile duplicare il preventivo a " +#~ "causa di un errore nel database. " +#~ "Controlla i log del server." -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Impossibile finalizzare il preventivo " +#~ "duplicato a causa di un errore nel" +#~ " database. Controlla i log del " +#~ "server." + +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "Citazione %(quote_number)s creata come duplicata" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Seleziona un'azione e almeno un preventivo" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "Invalid quote IDs" +#~ msgstr "ID preventivo non validi" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "Utenti OIDC" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "utenti" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Sezioni amministrative" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Attività recente" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Durata" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "N / A" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "Configurazione e test della posta elettronica" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Configurare e testare la consegna della posta elettronica" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Torna all'amministrazione" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "Configura qui le impostazioni email per salvarle nel database." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Abilita la configurazione della posta elettronica del database" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "Server di posta" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Porto di posta" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Utilizza TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Utilizza SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Nome utente" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Password" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "Lascia vuoto per rimanere aggiornato" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Mittente predefinito" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "E-mail del destinatario" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "Nessuna citazione trovata o non hai il permesso" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Salva configurazione" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Reset" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "Stato della configurazione e-mail" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Aggiorna" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "L'e-mail è configurata!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "Le tue impostazioni email sono configurate correttamente." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "L'e-mail non è configurata" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "Configura le impostazioni email utilizzando il modulo sopra." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Errori di configurazione" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Avvisi di configurazione" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Impostazioni e-mail correnti" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Porta" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Imposta password" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Invia e-mail di prova" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "Indirizzo e-mail del destinatario" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Guida alla configurazione" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Provider SMTP comuni" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Richiede la password dell'app" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Note importanti" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail richiede una password per l'app se 2FA è abilitato" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Riavviare l'applicazione dopo aver modificato le impostazioni e-mail" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Controlla le regole del firewall se le e-mail non vengono inviate" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "Per la produzione, utilizza un servizio di posta elettronica dedicato come SendGrid o Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "la password è impostata" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "nessuna password impostata" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "Impossibile salvare la configurazione. Per favore riprova." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "Successo!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "Impossibile aggiornare lo stato. Per favore riprova." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "Si prega di inserire un indirizzo email valido" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Invio..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "Impossibile inviare l'e-mail di prova. Controlla la tua configurazione." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "%(count)d virgolette duplicate" -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Configura OIDC utilizzando queste variabili di ambiente:" +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "Impossibile duplicare %(count)d virgolette" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "Servizio" +#~ msgid "Error duplicating quotes" +#~ msgstr "Errore durante la duplicazione delle virgolette" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "%(count)d citazioni contrassegnate come inviate" -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Utenti" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "Impossibile contrassegnare %(count)d virgolette come inviate" -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "Reclamo dei gruppi" +#~ msgid "Error updating quotes" +#~ msgstr "Errore durante l'aggiornamento delle virgolette" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "%(count)d virgolette eliminate" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "Impossibile eliminare %(count)d virgolette (potrebbero essere in uso)" -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "Perduto" +#~ msgid "Error deleting quotes" +#~ msgstr "Errore durante l'eliminazione delle virgolette" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "Utilizza SSL" +#~ msgid "Invalid action" +#~ msgstr "Azione non valida" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "Inizio" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "Timeout (secondi)" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "" +#~ "Sono richiesti nome, progetto, cliente, " +#~ "frequenza e data di prossima esecuzione" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "Invalid next run date format" +#~ msgstr "Formato della data della prossima esecuzione non valido" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "Invalid end date format" +#~ msgstr "Formato della data di fine non valido" -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "Selected project or client not found" +#~ msgstr "Progetto o cliente selezionato non trovato" -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "Password" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Impossibile creare una fattura ricorrente " +#~ "a causa di un errore nel database." +#~ " Controlla i log del server." -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "Inserisci la tua password" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "Non hai l'autorizzazione per visualizzare questa fattura ricorrente" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "Non hai l'autorizzazione per modificare questa fattura ricorrente" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Impossibile aggiornare la fattura ricorrente" +#~ " a causa di un errore nel " +#~ "database. Controlla i log del server." -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "Basato sull'ultimo" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Fattura ricorrente aggiornata correttamente" -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "Non hai l'autorizzazione per eliminare questa fattura ricorrente" -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "Utilizza le tariffe orarie del progetto" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "Registra l'ora" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "Indirizzo e-mail" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "Nome di battesimo" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "Cognome" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "Metodo di autenticazione" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Impossibile eliminare la fattura ricorrente" +#~ " a causa di un errore nel " +#~ "database. Controlla i log del server." -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "I migliori progetti" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "Gruppo di amministrazione" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "Metodo di autenticazione" +#~ msgid "Start" +#~ msgstr "Inizio" -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "Solo attivo" +#~ msgid "End" +#~ msgstr "FINE" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "Task" +#~ msgstr "Compito" -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "Prova di configurazione" +#~ msgid "Notes" +#~ msgstr "Note" -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "Billed" +#~ msgstr "Fatturabile" -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "Prova di configurazione" +#~ msgid "Client" +#~ msgstr "Cliente" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "User" +#~ msgstr "Utente" -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "Prova di configurazione" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "Riferimento alle variabili d'ambiente" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Yes" +#~ msgstr "SÌ" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "No" +#~ msgstr "NO" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Precedente" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Prossimo" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "Statistiche sull'utilizzo delle funzionalità" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "Impossibile eliminare il filtro a causa di un errore del database" -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "Codice coupon opzionale" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "Attenzione richiesta" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "Mobile" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Stato" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Dettagli" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "Carica altro" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Fallito" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "Impossibile aggiornare le impostazioni a " +#~ "causa di un errore del database. " +#~ "Controlla i log del server." -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "" +#~ "Configurazione completata! Grazie per averci" +#~ " aiutato a migliorare TimeTracker." -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Tutte le categorie" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Gestione del progetto" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "Project and task name are required" +#~ msgstr "Il nome del progetto e dell'attività sono obbligatori" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Selected project does not exist" +#~ msgstr "Il progetto selezionato non esiste" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Abilitato" +#~ msgid "Task not found" +#~ msgstr "" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Disabilitato" +#~ msgid "You do not have access to this task" +#~ msgstr "Non hai accesso a questa attività" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "You can only edit tasks you created" +#~ msgstr "Puoi modificare solo le attività che hai creato" -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "Task name is required" +#~ msgstr "Il nome dell'attività è obbligatorio" -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Salva modifiche" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "Project is required" +#~ msgstr "Il progetto è richiesto" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Nota" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare lo stato a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile aggiornare l'attività a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "You do not have permission to update this task" +#~ msgstr "Non hai l'autorizzazione per aggiornare questa attività" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "You can only update tasks you created" +#~ msgstr "Puoi aggiornare solo le attività che hai creato" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "You can only assign tasks you created" +#~ msgstr "Puoi assegnare solo le attività che hai creato" -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "Selected user does not exist" +#~ msgstr "L'utente selezionato non esiste" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "Task unassigned" +#~ msgstr "Compito non assegnato" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "You can only delete tasks you created" +#~ msgstr "Puoi eliminare solo le attività che hai creato" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "Impossibile eliminare l'attività con voci di orario esistenti" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "Pannello di debug OIDC" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "Ispeziona la configurazione, i metadati del provider e gli utenti OIDC" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare l'attività a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Prova di configurazione" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "Configurazione OIDC" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Metodo di autenticazione" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Emittente" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "Non configurato" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "ID cliente" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Segreto del cliente" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Impostato" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "Non impostato" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "Reindirizzare l'URI" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Generato automaticamente" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Ambiti" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Mappatura delle rivendicazioni" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Reclamo nome utente" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "Reclamo via e-mail" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Richiesta di nome completo" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Reclamo dei gruppi" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Gruppo di amministrazione" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "E-mail di amministrazione" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI post-disconnessione" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Metadati del fornitore" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Errore durante il caricamento dei metadati:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Endpoint di rilevamento:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Metadati del provider caricati correttamente" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Endpoint" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Autorizzazione" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Gettone" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Informazioni utente" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Fine sessione" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "URI JWKS" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Funzionalità supportate" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Tipi di risposta" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Tipi di sovvenzione" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Metodi di autenticazione" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Affermazioni" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "Metadati del provider non caricati. Fare clic su \"Configurazione di prova\" per recuperare." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "E-mail" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Nome e cognome" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Ruolo" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Ultimo accesso" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "Oggetto OIDC" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Inattivo" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Mai" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Nessun utente ha ancora effettuato l'accesso tramite OIDC." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Riferimento alle variabili d'ambiente" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Configura OIDC utilizzando queste variabili di ambiente:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Variabile" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Descrizione" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "Esempio" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Metodo di autenticazione" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "URL dell'emittente del provider OIDC" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "ID cliente dal provider OIDC" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Segreto client dal provider OIDC" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "URL di richiamata (facoltativo, generato automaticamente)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Ambiti richiesti" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Attestazione contenente nome utente" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Reclamo contenente email" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Richiesta contenente il nome completo" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Attestazione contenente gruppi" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Nome del gruppo per il ruolo di amministratore (facoltativo)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "E-mail di amministrazione separate da virgole (facoltativo)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "Nessuna attività selezionata per l'eliminazione" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare le attività a " +#~ "causa di un errore del database. " +#~ "Controlla i log del server." -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "Nessuna attività selezionata" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "Impossibile aggiornare le attività a causa di un errore del database" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Inserisci la nuova data di scadenza (AAAA-MM-GG):" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "Due date is required" +#~ msgstr "La data di spesa è obbligatoria" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Formato data non valido" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "Database error" +#~ msgstr "Supporto della banca dati" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "%(count)d virgolette duplicate" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "No tasks updated" +#~ msgstr "Nessuna attività trovata" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Metodo di autenticazione" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "%(count)d spese aggiornate a %(status)s" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "%(count)d spesa/e saltata/e (nessuna autorizzazione)" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "Invalid priority value" +#~ msgstr "Valore di priorità non valido" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "No user selected for assignment" +#~ msgstr "Nessun utente selezionato per l'assegnazione" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "Utente non valido selezionato" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "Impossibile assegnare attività a causa di un errore del database" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "No project selected" +#~ msgstr "Nessun progetto selezionato" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "Selezionato progetto non valido" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "Impossibile spostare le attività a causa di un errore del database" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "Solo gli amministratori possono visualizzare tutte le attività scadute" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "Could not create template due to a database error" +#~ msgstr "Impossibile creare il modello a causa di un errore del database" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "Dettagli utente OIDC" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Profilo e identità OIDC per questo utente" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Torna al debug OIDC" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Profilo utente" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Attivo" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Lingua preferita" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Creato a" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "Informazioni OIDC" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "Emittente OIDC" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "Oggetto OIDC (sottotitolo)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Locale" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "Questo utente è stato creato o collegato tramite OIDC. L'emittente e l'oggetto vengono utilizzati per identificare in modo univoco l'utente attraverso le sessioni di accesso." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "Questo utente non dispone di informazioni OIDC. Potrebbero essere stati creati manualmente o tramite autoregistrazione senza OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Statistiche delle attività" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Voci di tempo" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Nessuno" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Temporizzatore attivo" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Attività create" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Modifica utente" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Visualizza tutti gli utenti" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "Progettista di preventivi PDF" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "Designer di citazioni visive" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "Trascina e rilascia gli elementi per progettare il layout del tuo preventivo" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Come usare:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "Fai clic sugli elementi dalla barra laterale sinistra per aggiungerli all'area di disegno. Fare clic sugli elementi per selezionarli e personalizzarli nel pannello delle proprietà. Utilizza gli strumenti di allineamento e le scorciatoie da tastiera per una modifica più rapida." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Scorciatoie da tastiera:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "Could not update template due to a database error" +#~ msgstr "Impossibile aggiornare il modello a causa di un errore del database" -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "Tabella elementi preventivo" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "Impossibile eliminare il modello a causa di un errore del database" -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "Totale parziale delle spese" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "Impossibile avviare il timer per un " +#~ "progetto archiviato. Per favore, annulla " +#~ "prima l'archiviazione del progetto." -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "Impossibile avviare il timer per un progetto inattivo" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "Risparmio..." +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "L'attività selezionata non è valida per il progetto scelto" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "You do not have access to this project" +#~ msgstr "Non hai accesso a questo progetto." -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "Impostato" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "Documentazione" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Tela trasparente" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Genera anteprima" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Salva disegno" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Visualizza codice" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "You do not have access to this client" +#~ msgstr "Non hai accesso a questa attività" -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "Hai già un timer attivo. Interrompetelo prima di iniziarne uno nuovo." -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Blocca sulla griglia (10px)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Cassetta degli attrezzi" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Cerca elementi e variabili..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Elementi" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "Variabili" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Elementi di base" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Testo personalizzato" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Testo" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Intestazione" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Linea" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Rettangolo" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Cerchio" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Informazioni sull'azienda" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Logo aziendale" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "Nome dell'azienda" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Dettagli dell'azienda" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "Indirizzo" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Telefono" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Sito web" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "Codice fiscale" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "Dettagli della fattura" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Numero della fattura" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "Fatturato" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Scadenza" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Informazioni sul cliente" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Nome del cliente" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Indirizzo del cliente" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "Tabella elementi preventivo" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "Totale parziale delle spese" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Totale parziale" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Tassare" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Importo totale" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Termini" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "Pagamento e progetto" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Data di pagamento" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Metodo di pagamento" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Stato del pagamento" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Importo pagato" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Nome del progetto" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "E-mail del cliente" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Telefono cliente" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "Codice QR" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Codice a barre" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Numero di pagina" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Data corrente" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Filigrana" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Informazioni bancarie" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Valuta" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile avviare il timer a causa " +#~ "di un errore del database. Controlla " +#~ "i log del server." -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "Elementi della fattura" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "Numero della fattura" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Stato del preventivo (bozza/inviato/pagato/scaduto)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Data di emissione" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Scadenza" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Importo subtotale" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Aliquota fiscale (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Importo fiscale" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Importo totale" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Codice valuta (EUR, USD, ecc.)" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "Elementi della fattura" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Termini e condizioni" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Campi cliente" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Nome dell'azienda cliente" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "Indirizzo e-mail del cliente" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "Indirizzo completo del cliente" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Persona di contatto del cliente" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Numero di telefono del cliente" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Campi di pagamento" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "Stato del pagamento" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "Data di pagamento" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Metodo di pagamento" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Numero di riferimento del pagamento" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Importo pagato" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Importo eccezionale" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Note di pagamento" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Campi del progetto" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Nome del progetto" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "Codice del progetto" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Descrizione del progetto" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Riferimento per la fatturazione del progetto" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Campi Azienda/Impostazioni" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "Il nome della tua azienda" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "L'indirizzo della tua azienda" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "La tua email aziendale" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Il tuo telefono aziendale" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Il tuo sito web aziendale" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "Il tuo codice fiscale" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "Informazioni sul tuo conto bancario" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Termini di fattura predefiniti" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Note fattura predefinite" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Campi data/ora" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "Data attuale" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "Data di creazione del preventivo" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "Citare la data dell'ultimo aggiornamento" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "Elementi della fattura" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "Unknown" +#~ msgstr "Sconosciuto" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "Servizi a tempo e lavoro orario" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Descrizione dell'articolo" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Quantità dell'articolo" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Prezzo unitario dell'articolo" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Importo totale dell'articolo" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Fine del ciclo" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "Beni extra" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "Progetto di beni extra" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "Nome del ruolo" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "Importo totale" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Tela di disegno" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Dimensioni della pagina:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Zoom avanti" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Rimpicciolisci" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Elimina selezionato" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Proprietà" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "Avvertimento" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "Aggiorna pagina" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "Avvertimento" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Formato data" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "Il modello deve avere un progetto per avviare un timer" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Cannot start timer for this project" +#~ msgstr "Impossibile avviare il timer per questo progetto" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Seleziona un elemento per modificarne le proprietà" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "Anteprima PDF" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "No active timer to stop" +#~ msgstr "Nessun timer attivo da interrompere" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "No project" +#~ msgstr "Nessun progetto" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "No active timer to pause" +#~ msgstr "Nessun timer attivo da interrompere" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Timer paused" +#~ msgstr "Il timer si è fermato" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "Impossibile creare il cliente. Per favore riprova." -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "No active timer to resume" +#~ msgstr "Nessun timer attivo da interrompere" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "Impossibile creare il cliente. Per favore riprova." -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "No active timer to adjust" +#~ msgstr "Nessun timer attivo da interrompere" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "Invalid adjustment value" +#~ msgstr "Valore di stato non valido" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "You can only edit your own timers" +#~ msgstr "Puoi modificare solo i tuoi timer" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Attività non valida selezionata per il progetto scelto" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Codice generato" +#~ msgid "Start time cannot be in the future" +#~ msgstr "L'ora di inizio non può essere futura" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "Invalid start date/time format" +#~ msgstr "Formato data/ora di inizio non valido" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "End time must be after start time" +#~ msgstr "L'ora di fine deve essere successiva all'ora di inizio" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "Formato data/ora di fine non valido" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "Timer updated successfully" +#~ msgstr "Il timer è stato aggiornato correttamente" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "You can only delete your own timers" +#~ msgstr "Puoi eliminare solo i tuoi timer" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "Cannot delete an active timer" +#~ msgstr "Impossibile eliminare un timer attivo" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile eliminare il timer a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "Cancellare tutti gli elementi?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Chiaro" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "Ripristinare le impostazioni predefinite?" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "Reimposta layout PDF" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "Invalid date/time format" +#~ msgstr "Formato data/ora non valido" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "Progettista di preventivi PDF" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Designer di citazioni visive" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Trascina e rilascia gli elementi per progettare il layout del tuo preventivo" +#~ msgid "All fields are required" +#~ msgstr "Tutti i campi sono obbligatori" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "Tabella elementi preventivo" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "Impossibile creare voci di orario per" +#~ " un progetto archiviato. Per favore, " +#~ "annulla prima l'archiviazione del progetto." -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "Tabella elementi preventivo" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "Impossibile creare voci di orario per un progetto inattivo" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Invalid task selected" +#~ msgstr "Attività selezionata non valida" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "La data di fine deve essere successiva o uguale alla data di inizio" -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "L'intervallo di date non può superare i 31 giorni" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Dati preventivo" +#~ msgid "Invalid time format" +#~ msgstr "Formato ora non valido" -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Numero preventivo" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "Nessuna data valida trovata nell'intervallo selezionato" -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Data del preventivo" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Impossibile creare voci in blocco a " +#~ "causa di un errore del database. " +#~ "Controlla i log del server." -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Tabella elementi preventivo" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "" +#~ "Si è verificato un errore durante " +#~ "la creazione di voci collettive. Per " +#~ "favore riprova." -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Campi preventivo" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Puoi duplicare solo i tuoi timer" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Numero preventivo" +#~ msgid "You can only resume your own timers" +#~ msgstr "Puoi ripristinare solo i tuoi timer" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Stato del preventivo (bozza/inviato/pagato/scaduto)" +#~ msgid "Project no longer exists" +#~ msgstr "Il progetto non esiste più" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Note di citazione" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Stato del preventivo" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Data di accettazione del preventivo" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Impossibile riprendere il timer a causa" +#~ " di un errore del database. Controlla" +#~ " i log del server." -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Data di creazione del preventivo" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Citare la data dell'ultimo aggiornamento" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Ciclo di elementi di citazione" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Passa in rassegna gli elementi della fattura" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Allinea a sinistra" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Centra orizzontalmente" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Allinea a destra" +#~ msgid "Invalid timezone selected" +#~ msgstr "Selezionato fuso orario non valido" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Allinea in alto" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "L'orario standard giornaliero deve essere compreso tra 0,5 e 24" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Centra verticalmente" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "L'orario standard giornaliero deve essere compreso tra 0,5 e 24" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Allinea in basso" +#~ msgid "Settings saved successfully" +#~ msgstr "Impostazioni salvate con successo" -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Errore durante il salvataggio delle impostazioni: %(error)s" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "Grazie per aver scelto TimeTracker!" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "Errore durante il salvataggio delle impostazioni" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "Indirizzo e-mail" +#~ msgid "Preferences updated" +#~ msgstr "Preferenze aggiornate" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "Language updated successfully" +#~ msgstr "Lingua aggiornata con successo" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "Invalid language" +#~ msgstr "Lingua non valida" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "Lingua aggiornata a %(language)s" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "Il nome del webhook è obbligatorio" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "Webhook URL is required" +#~ msgstr "L'URL del webhook è obbligatorio" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "È necessario selezionare almeno un evento" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook creato correttamente" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Error creating webhook" +#~ msgstr "Errore durante la creazione del webhook" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "Errore durante la creazione del webhook: %(error)s" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook aggiornato correttamente" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "Errore durante l'aggiornamento del webhook: %(error)s" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook eliminato correttamente" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "Errore durante l'eliminazione del webhook: %(error)s" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Inserisci un orario target valido (maggiore di 0)" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "Modelli di immissione del tempo" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "Esiste già un obiettivo per questa " +#~ "settimana. Modifica invece l'obiettivo " +#~ "esistente." -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Obiettivo di tempo settimanale creato con successo!" -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "Impossibile creare l'obiettivo. Per favore riprova." -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "Non hai l'autorizzazione per visualizzare questo obiettivo" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "Non hai l'autorizzazione per modificare questo obiettivo" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Obiettivo temporale settimanale aggiornato con successo!" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "Impossibile aggiornare l'obiettivo. Per favore riprova." -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "Non hai l'autorizzazione per eliminare questo obiettivo" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Obiettivo temporale settimanale eliminato correttamente" -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "Impossibile eliminare l'obiettivo. Per favore riprova." -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "Chiave" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "Invia e-mail" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "Chiave" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "Codice, nome, email" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Marchio aziendale" +#~ msgid "Update Status" +#~ msgstr "Aggiorna stato" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Impostazioni predefinite della fattura" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Impostazioni di backup" +#~ msgid "Create Task" +#~ msgstr "Crea attività" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "Send Email" +#~ msgstr "Invia e-mail" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "Abilitato" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "Perduto" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "Utilizza SSL" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "Utilizza TLS" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "SU" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "Di" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "Menù utente" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "Tempi di caricamento più rapidi" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "Termini e Condizioni" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Impostazioni di esportazione" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Regolazione" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Trasferire" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Vendita" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Noleggio" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Acquistare" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "Timesheet period rejected" +#~ msgstr "Seleziona Progetto" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "Only admins can close periods" +#~ msgstr "Solo gli amministratori possono rifiutare le voci relative alle miglia" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "Disponibile" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "Impostazioni predefinite della fattura" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "Valuta" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "URL dell'immagine" +#~ msgid "Timesheet policy updated" +#~ msgstr "Aggiornamenti in tempo reale di WebSocket" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "Nome e prezzo unitario sono obbligatori" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "Codice" +#~ msgid "Leave type created" +#~ msgstr "Cliente creato" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "Crea token API" +#~ msgid "Leave type and date range are required" +#~ msgstr "Sono necessarie chiave ed etichetta" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "Lascia vuoto per mantenere la password corrente" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "Time-off request approved" +#~ msgstr "Richiedi approvazione" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Time-off request rejected" +#~ msgstr "Citazione rifiutata" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "Timeout (secondi)" +#~ msgid "Name and date range are required" +#~ msgstr "Nome e prezzo unitario sono obbligatori" -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "Tipo di contenuto" +#~ msgid "Holiday created" +#~ msgstr "Tariffa oraria" -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "Ruolo del sistema" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "Termini e Condizioni" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Privacy e analisi" +#~ msgid "remaining" +#~ msgstr "rimanente" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Salva impostazioni" +#~ msgid "Success" +#~ msgstr "Successo" -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Carica nuovo logo" +#~ msgid "Error" +#~ msgstr "Errore" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Anteprima del logo" +#~ msgid "Warning" +#~ msgstr "Avvertimento" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "Sei sicuro di voler rimuovere il logo dell'azienda?" +#~ msgid "Information" +#~ msgstr "Informazioni" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Rimuovi logo" +#~ msgid "Loading..." +#~ msgstr "Caricamento..." -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "Saving..." +#~ msgstr "Risparmio..." -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "Eliminazione..." -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Cancel" +#~ msgstr "Cancellare" -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "Richiedi approvazione" +#~ msgid "Confirm" +#~ msgstr "Confermare" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "Prova di configurazione" +#~ msgid "Close" +#~ msgstr "Vicino" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "Operazione fallita" +#~ msgid "Save" +#~ msgstr "Salva" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Delete" +#~ msgstr "Eliminare" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "Operazione fallita" +#~ msgid "Edit" +#~ msgstr "Modificare" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Dashboard di telemetria e analisi" +#~ msgid "Add" +#~ msgstr "Aggiungere" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Amministrazione → Impostazioni" +#~ msgid "Remove" +#~ msgstr "Rimuovere" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "OK" +#~ msgstr "OK" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "Lascia vuoto per mantenere la password corrente" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Sei sicuro di voler eliminare questo?" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Accesso al portale clienti" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "Sono presenti modifiche non salvate. Sei sicuro di voler partire?" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "Operazione fallita" -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "Assegnato a" +#~ msgid "Operation completed successfully" +#~ msgstr "Operazione completata con successo" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "No items selected" +#~ msgstr "Nessun elemento selezionato" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Accesso amministratore" +#~ msgid "Invalid input" +#~ msgstr "Immissione non valida" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Migrazione al nuovo sistema di ruoli" +#~ msgid "This field is required" +#~ msgstr "Questo campo è obbligatorio" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Migrare" +#~ msgid "No active timer" +#~ msgstr "Nessun timer attivo" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Ruoli" +#~ msgid "Timer stopped" +#~ msgstr "Il timer si è fermato" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "Nessun utente trovato." +#~ msgid "Failed to stop timer" +#~ msgstr "Impossibile arrestare il timer" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "Impossibile eliminare l'utente \"{name}\" perché ha {count} voci di tempo. Gli utenti con voci di orario esistenti non possono essere eliminati." +#~ msgid "Error stopping timer" +#~ msgstr "Errore durante l'arresto del timer" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "Impossibile eliminare l'utente" +#~ msgid "No form to save" +#~ msgstr "Nessun modulo da salvare" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "Sei sicuro di voler eliminare l'utente \"{name}\"? Questa azione non può essere annullata." +#~ msgid "No timer found" +#~ msgstr "Nessun timer trovato" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Elimina utente" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Il timer si è fermato per inattività" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "Vai al contenuto" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "Navigazione mobile" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "Navigazione" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "Tavolozza dei comandi" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Commands" +#~ msgstr "Commenti" -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "Attiva/disattiva la barra laterale" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "Dashboard" +#~ msgstr "Pannello di controllo" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Etichetta" +#~ msgid "Timer" +#~ msgstr "Timer" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Time entries" +#~ msgstr "Voci di tempo" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "Reports" +#~ msgstr "Rapporti" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "Calendar" +#~ msgstr "Calendario" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "Visualizzazione calendario" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "Monitoraggio del tempo" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "Richiedi approvazione" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "Compiti" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "Tabellone Kanban" -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Opzionale" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "Obiettivi settimanali" -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "Modelli di immissione del tempo" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "CRM" +#~ msgstr "CRM" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Clients" +#~ msgstr "Clienti" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "Citazioni" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "Finanze e spese" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "Rapporti pianificati" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Imposta come modello predefinito" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "Modello HTML" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Messaggio personalizzato" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Più variabili" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Crea modello" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Variabili disponibili" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Variabili della fattura" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Altre variabili" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "Invia e-mail di prova" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Invoices" +#~ msgstr "Fatture" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "E-mail del destinatario" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "Fatturato" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Aggiorna modello" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "Invia e-mail di prova" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "Nessun modello di email trovato." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "Crea il tuo primo modello di email per personalizzare le email di fatturazione." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "Crea modello di posta elettronica" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "Elimina modello e-mail" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "Sei sicuro di voler eliminare?" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Questa azione non può essere annullata." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Informazioni sul modello" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "Fatture ricorrenti" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "Payments" +#~ msgstr "Pagamenti" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "Expenses" +#~ msgstr "Spese" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "Mileage" +#~ msgstr "Chilometraggio" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "Al giorno" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "Avvisi sul budget" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "Inventory" +#~ msgstr "Inventario" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "Articoli in stock" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Warehouses" +#~ msgstr "Magazzini" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "Fornitori" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "Ordini di acquisto" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "Livelli delle scorte" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "Movimenti di borsa" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "Trasferimenti" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "Aggiustamenti" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Reservations" +#~ msgstr "Prenotazioni" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "Avvisi di scorte basse" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "Analytics" +#~ msgstr "Analitica" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "Strumenti e dati" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "Importa/Esporta" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "Filtri salvati" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Admin" +#~ msgstr "Ammin" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "Pannello di amministrazione" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "User Management" +#~ msgstr "Gestione utenti" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "Ruoli e autorizzazioni" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "PDF Templates" +#~ msgstr "Modelli PDF" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "Invoice PDF" +#~ msgstr "PDF della fattura" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "Citazione PDF" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "System Settings" +#~ msgstr "Impostazioni di sistema" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "Settings" +#~ msgstr "Impostazioni" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "Configurazione e-mail" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "Modelli di posta elettronica" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "OIDC Settings" +#~ msgstr "Impostazioni OIDC" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "Token API" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "Registri di controllo" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Expense Categories" +#~ msgstr "Categorie di spesa" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "Tariffe giornaliere" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "System Info" +#~ msgstr "Informazioni sul sistema" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "Backups" +#~ msgstr "Backup" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "About" +#~ msgstr "Di" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Icona" +#~ msgid "Help" +#~ msgstr "Aiuto" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Open support options" +#~ msgstr "Opzioni di esportazione" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Support TimeTracker" +#~ msgstr "Supporta TimeTracker" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "Open sidebar" +#~ msgstr "Attiva/disattiva la barra laterale" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Search" +#~ msgstr "Ricerca" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Nome" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Theme" +#~ msgstr "Tema" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Theme options" +#~ msgstr "Opzioni filtro" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "Light" +#~ msgstr "Leggero" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Dark" +#~ msgstr "Buio" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "System" +#~ msgstr "Sistema" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Start Timer" +#~ msgstr "Avvia il timer" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Stop" +#~ msgstr "A" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "AI Helper" +#~ msgstr "Visualizza la Guida" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "Change language" +#~ msgstr "Cambia lingua" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Autorizzazioni di sistema" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Tutte le autorizzazioni disponibili nel sistema" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Torniamo ai ruoli" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "autorizzazioni" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "Nessuna descrizione disponibile" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "Informazioni sulle autorizzazioni" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "Le autorizzazioni definiscono quali azioni gli utenti possono eseguire nel sistema. Queste autorizzazioni vengono assegnate ai ruoli e i ruoli vengono assegnati agli utenti. Ciò fornisce un sistema di controllo degli accessi flessibile e granulare." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Modifica ruolo" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Crea nuovo ruolo" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Nome del ruolo" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Un nome univoco per questo ruolo" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Descrizione facoltativa di questo ruolo" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Autorizzazioni" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Seleziona le autorizzazioni che questo ruolo dovrebbe avere:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Attiva/disattiva tutto" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Language" +#~ msgstr "Lingua" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "User menu" +#~ msgstr "Menù utente" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Supporter" +#~ msgstr "Supporto" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Aggiorna ruolo" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Crea ruolo" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Gestire i ruoli e le relative autorizzazioni" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Visualizza autorizzazioni" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Ruoli totali" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Ruoli di sistema" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Ruoli personalizzati" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Utenti assegnati" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Tipo" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Ruolo predefinito" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "utente" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Nessun utente" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Costume" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Visualizzazione" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Autorizzazioni per" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "Nessuna autorizzazione assegnata." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "Nessun ruolo trovato." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "Informazioni su ruoli e autorizzazioni" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "I ruoli sono raccolte di autorizzazioni che possono essere assegnate agli utenti. I ruoli di sistema sono predefiniti e non possono essere eliminati o rinominati, ma è possibile creare ruoli personalizzati per esigenze specifiche." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "Sei sicuro di voler eliminare il ruolo?" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Elimina ruolo" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Nessuna descrizione" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Informazioni sul ruolo" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Ruolo del sistema" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Ruolo personalizzato" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Autorizzazioni totali" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Creato" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Utenti con questo ruolo" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Nessun utente ancora assegnato a questo ruolo." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "A questo ruolo non sono assegnate autorizzazioni." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Torna all'utente" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Gestisci ruoli per" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Assegnare ruoli" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "Seleziona i ruoli che questo utente dovrebbe avere. Gli utenti ereditano tutte le autorizzazioni dai ruoli assegnati." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Aggiorna ruoli" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Autorizzazioni effettive attuali" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "Queste sono tutte le autorizzazioni attualmente di cui dispone l'utente tramite i propri ruoli:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Nessuna autorizzazione (assegna ruoli per concedere autorizzazioni)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Crea webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Modifica webhook" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Configura il webhook per le integrazioni" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "URL del webhook" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "L'URL a cui verranno inviati gli eventi webhook" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Eventi" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Seleziona quali eventi dovrebbero attivare questo webhook" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "Metodo HTTP" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Tipo di contenuto" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Numero massimo di tentativi" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Ritardo tentativi (secondi)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Timeout (secondi)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Rigenera il segreto" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Avviso: la rigenerazione del segreto invaliderà il segreto corrente" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Gestisci le integrazioni webhook" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Statistiche" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Totale" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "Nessun webhook configurato" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Crea il tuo primo webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Dettagli del webhook" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Test" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Segreto" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(troncato)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Consegne totali" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Riuscito" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Ultima consegna" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Consegne recenti" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Evento" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Tentativo" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Risposta" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Tempo" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Nuovo tentativo" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Nessuna consegna ancora" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "Inviare un evento webhook di prova?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "Webhook di prova inviato con successo!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Errore:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Errore sconosciuto" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Errore durante l'invio del webhook di prova:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Pannello di analisi" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "Ultimi 7 giorni" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "Ultimi 30 giorni" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "Ultimi 90 giorni" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "L'anno scorso" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "Esporta come JSON" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "Esporta CSV" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Metriche e approfondimenti chiave sul monitoraggio del tempo" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Ore giornaliere medie" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "Ritorno" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "Tempo" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Andamento delle ore giornaliere" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Fatturabile vs non fatturabile" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Tendenze settimanali" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "ore prima" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Guest" +#~ msgstr "Ospite" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "Pagamenti nel tempo" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Ore per ora del giorno" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Efficienza del progetto" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Prestazioni dell'utente" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "Impossibile caricare i grafici. Per favore riprova." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "Impossibile aggiornare i grafici. Per favore riprova." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Ora del giorno" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Reddito" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "Reset" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "My Profile" +#~ msgstr "Il mio profilo" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Esportare" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Metriche chiave e informazioni utili" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "rispetto al periodo precedente" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "del totale" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Entrate potenziali" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Tasso medio:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "Tendenza" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "progetti attivi" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Approfondimenti e consigli" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Cumulativo" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Distribuzione fatturabile" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Panoramica dello stato delle attività" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Attività completate" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "In corso" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Fare" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Entrate per progetto" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Pagamenti nel tempo" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Metodi di pagamento" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Entrate vs pagamenti" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Tasso di raccolta" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Tasso di completamento del progetto" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "Fatturabile" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "Non fatturabile" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Completato" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Annullato" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Tasso di completamento (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Panoramica degli approfondimenti sui dispositivi mobili" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Media giornaliera" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Orari giornalieri" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "I migliori progetti" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "My Settings" +#~ msgstr "Le mie impostazioni" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "License" +#~ msgstr "Licenza" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Inserimento dell'ora" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "Logout" +#~ msgstr "Esci" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "ore" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Ti piace TimeTracker?" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Approvare" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Rifiutare" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "Support / Get key" +#~ msgstr "Supporta TimeTracker" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "PayPal" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Support / License" +#~ msgstr "Forniture" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "Congedare" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "Software update" +#~ msgstr "Data di inizio" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "Read more" +#~ msgstr "Carica altro" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "View Release" +#~ msgstr "Visualizza attività" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Quick actions dock" +#~ msgstr "Azioni rapide" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Actions" +#~ msgstr "Azioni" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Approvato da" +#~ msgid "Log Time" +#~ msgstr "Registra l'ora" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "New Task" +#~ msgstr "Nuovo compito" -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "Pubblica commento" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "Pubblica commento" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "Motivo del rifiuto" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Tieni traccia di chi ha cambiato cosa e quando" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Filtri" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Tipo di entità" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Tutti i tipi" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "Identificativo dell'entità" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Tutti gli utenti" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Azione" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Tutte le azioni" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Aggiornato" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Eliminato" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Intervallo di tempo" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Filtro" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Timestamp" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Entità" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "Campo" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Modifica" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Motivo" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Modifica informazioni" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "New Project" +#~ msgstr "Visualizza progetto" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "New Client" +#~ msgstr "Modifica cliente" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "Operazione fallita" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "Context included" +#~ msgstr "Contratto terminato" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "Anteprima del logo" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Richiedi informazioni" +#~ msgid "Send" +#~ msgstr "FINE" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Create API Token" +#~ msgstr "Crea token API" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Sicurezza" +#~ msgid "Your API Token" +#~ msgstr "Il tuo token API" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "Usage Examples" +#~ msgstr "Esempi di utilizzo" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (autenticazione aziendale)" +#~ msgid "Are you sure you want to" +#~ msgstr "Sei sicuro di volerlo fare?" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "deactivate" +#~ msgstr "disattivare" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "La password deve contenere almeno 8 caratteri" +#~ msgid "activate" +#~ msgstr "attivare" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "this token?" +#~ msgstr "questo gettone?" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "Password del portale" +#~ msgid "Deactivate Token" +#~ msgstr "Disattiva gettone" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "Imposta la tua password" +#~ msgid "Activate Token" +#~ msgstr "Attiva gettone" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "Deactivate" +#~ msgstr "Disattivare" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "Nessun nome utente o e-mail" +#~ msgid "Activate" +#~ msgstr "Attivare" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Sei sicuro di voler eliminare questo " +#~ "token? Questa azione non può essere " +#~ "annullata." -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "Invia e-mail di prova" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "Torna all'amministrazione" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Login" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Tieni traccia del tempo. Rimani organizzato." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Accedi al tuo account" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "Dettagli articolo" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "Imposta la tua password" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "Metodo di autenticazione" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "Registrazione" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "Elimina gettone" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Suggerimento: inserisci un nuovo nome utente per creare il tuo account." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "Oppure continua con" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Accesso singolo" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Modifica profilo" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Membro dal" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "Imposta password" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "Imposta password" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "Imposta una password per il tuo account del portale clienti" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "Imposta password" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "La password deve contenere almeno 8 caratteri" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "Conferma password" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "Imposta la tua password" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "Imposta password" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "Metodo di autenticazione" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "Crea backup" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Codice" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "Ripristina backup" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "Backup esistenti" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "L'accesso al portale clienti non è abilitato per il tuo account." +#~ msgid "Important Information" +#~ msgstr "Informazioni importanti" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "Conferma l'eliminazione" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "Disabilitato" +#~ msgid "Clear Cache" +#~ msgstr "Cancella cache" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "Stato di ServiceWorker" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "Cancella tutte le cache" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "Azioni ServiceWorker" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "Aggiornamento manuale manuale" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "All time" +#~ msgstr "Tutto il tempo" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "Codice generato" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "Abilitato" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "Total Projects" +#~ msgstr "Progetti totali" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "Active Projects" +#~ msgstr "Progetti attivi" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Avvisi e previsioni sul budget" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Monitorare i budget del progetto e prevederne il completamento" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Avvisi non riconosciuti" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Avvisi critici" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Progetti con budget" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Avvisi di avviso" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Avvisi attivi" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Riconoscere" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Stato del budget del progetto" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Bilancio" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Consumato" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Rimanente" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Progressi" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "Sopra" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Oltre il budget" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Critico" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "Salutare" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "Nessun progetto con budget trovato" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Avviso confermato con successo" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "Impossibile riconoscere l'avviso" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Analisi e previsioni del budget" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Torna alla dashboard" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Visualizza progetto" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Bilancio totale" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Analisi della velocità di combustione" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Tasso di combustione giornaliero" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Tasso di combustione settimanale" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Tasso di combustione mensile" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Totale periodo" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Basato sull'ultimo" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "giorni" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "Nessun dato disponibile sulla velocità di combustione" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Stima di completamento" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Data di completamento stimata" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "giorni rimanenti" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Livello di fiducia" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "Nessuna stima di completamento disponibile" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Analisi dell'andamento dei costi" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Media" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Allocazione delle risorse" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Costo totale" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Tariffa oraria" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Membro della squadra" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Costo" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Ore %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Costo %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "Voci" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Data e ora" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Posizione" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Promemoria" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "minuti prima" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "ore prima" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "giorni prima" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Ricorrente" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Fino a" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Ultimo aggiornamento" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Torna al Calendario" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Elimina evento" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "Sei sicuro di voler eliminare questo evento? Questa azione non può essere annullata." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Modifica evento" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Nuovo evento" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Titolo" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Data di inizio" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Ora di inizio" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Data di fine" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Ora di fine" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Evento per tutta la giornata" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Tipo di evento" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Incontro" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Appuntamento" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Scadenza" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- Nessuno --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Nessun promemoria" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 minuti prima" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 minuti prima" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 minuti prima" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 ora prima" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 giorno prima" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Colore" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Scegli un colore per questo evento" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Evento privato" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Gli eventi privati ​​sono visibili solo a te" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Evento ricorrente" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "Questo è un evento ricorrente" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Modello di ricorrenza" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Utilizza il formato RRULE (ad esempio, FREQ=SETTIMANALE;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Data di fine della ricorrenza" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Aggiorna evento" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Crea evento" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "Database" +#~ msgstr "Banca dati" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Visualizza e gestisci eventi, attività e voci di orario" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Giorno" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Settimana" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Mese" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "Oggi" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Caricamento calendario..." +#~ msgid "OIDC Users" +#~ msgstr "Utenti OIDC" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Dettagli dell'evento" +#~ msgid "users" +#~ msgstr "utenti" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "Sezioni amministrative" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "Recent Activity" +#~ msgstr "Attività recente" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "Duration" +#~ msgstr "Durata" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "N/A" +#~ msgstr "N / A" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "Configurazione e test della posta elettronica" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "Configurare e testare la consegna della posta elettronica" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "Torna all'amministrazione" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "Configura qui le impostazioni email per salvarle nel database." -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Abilita la configurazione della posta elettronica del database" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "Mail Server" +#~ msgstr "Server di posta" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "Porto di posta" -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "Use TLS" +#~ msgstr "Utilizza TLS" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "Use SSL" +#~ msgstr "Utilizza SSL" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Username" +#~ msgstr "Nome utente" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "Password" +#~ msgstr "Password" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "Leave empty to keep current" +#~ msgstr "Lascia vuoto per rimanere aggiornato" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "Mittente predefinito" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "E-mail del destinatario" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "Salva configurazione" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "Reset" +#~ msgstr "Reset" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "Stato della configurazione e-mail" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Modifica nota cliente" +#~ msgid "Refresh" +#~ msgstr "Aggiorna" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Torniamo al cliente" +#~ msgid "Email is configured!" +#~ msgstr "L'e-mail è configurata!" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Cliente:" +#~ msgid "Your email settings are properly set up." +#~ msgstr "Le tue impostazioni email sono configurate correttamente." -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Creato il" +#~ msgid "Email is not configured" +#~ msgstr "L'e-mail non è configurata" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Ultima modifica il" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "Configura le impostazioni email utilizzando il modulo sopra." -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Nota contenuto" +#~ msgid "Configuration Errors" +#~ msgstr "Errori di configurazione" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Nota interna visibile solo al tuo team." +#~ msgid "Configuration Warnings" +#~ msgstr "Avvisi di configurazione" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Segna come importante" +#~ msgid "Current Email Settings" +#~ msgstr "Impostazioni e-mail correnti" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "Port" +#~ msgstr "Porta" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Portale clienti" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "Password Set" +#~ msgstr "Imposta password" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "Visualizza dettagli" +#~ msgid "Send Test Email" +#~ msgstr "Invia e-mail di prova" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "Recipient Email Address" +#~ msgstr "Indirizzo e-mail del destinatario" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "Configuration Guide" +#~ msgstr "Guida alla configurazione" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "Common SMTP Providers" +#~ msgstr "Provider SMTP comuni" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "In attesa di" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Approvato" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Respinto" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Tutto" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Requires app password" +#~ msgstr "Richiede la password dell'app" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "Important Notes" +#~ msgstr "Note importanti" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Visualizza dettagli" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail richiede una password per l'app se 2FA è abilitato" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "Riavviare l'applicazione dopo aver modificato le impostazioni e-mail" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "Controlla le regole del firewall se le e-mail non vengono inviate" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "Per la produzione, utilizza un servizio" +#~ " di posta elettronica dedicato come " +#~ "SendGrid o Amazon SES" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "password is set" +#~ msgstr "la password è impostata" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "no password set" +#~ msgstr "nessuna password impostata" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "Impossibile salvare la configurazione. Per favore riprova." -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "Success!" +#~ msgstr "Successo!" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "Impossibile aggiornare lo stato. Per favore riprova." -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "Stato di approvazione" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "Approvazione richiesta" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "Nessun progetto è stato aggiornato" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "Benvenuto, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "Personalizza le scorciatoie" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "Si prega di inserire un indirizzo email valido" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "Statistiche" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "Sezioni amministrative" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "Fatture recenti" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "Voci temporali recenti" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "Seleziona un cliente..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "Impossibile arrestare il timer" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "Invio..." -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "Impossibile inviare l'e-mail di prova. Controlla la tua configurazione." -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Configura OIDC utilizzando queste variabili di ambiente:" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "Server" +#~ msgstr "Servizio" -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Vai alla dashboard" +#~ msgid "Users" +#~ msgstr "Utenti" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Groups" +#~ msgstr "Reclamo dei gruppi" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Torna indietro" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Dettagli della fattura" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Data di emissione" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "Questa fattura è scaduta di %(days)d giorni." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Elementi della fattura" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Quantità" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Prezzo unitario" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "Perduto" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Torniamo alle fatture" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "Fatture per %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "Non pagato" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "In ritardo" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Quantità" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "giorni di ritardo" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "Utilizza SSL" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "StartTLS" +#~ msgstr "Inizio" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Timeout (secondi)" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "Bind password" +#~ msgstr "Password" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Enter bind password" +#~ msgstr "Inserisci la tua password" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Priorità" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "Assegnato a" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Base DN" +#~ msgstr "Basato sull'ultimo" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "User object class" +#~ msgstr "Utilizza le tariffe orarie del progetto" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Aprire" +#~ msgid "Login attribute" +#~ msgstr "Registra l'ora" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Email attribute" +#~ msgstr "Indirizzo e-mail" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "First name attribute" +#~ msgstr "Nome di battesimo" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "Cognome" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Accesso al portale clienti" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Metodo di autenticazione" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Visualizza i tuoi progetti e fatture" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Accedi al Portale Clienti" +#~ msgid "Group object class" +#~ msgstr "I migliori progetti" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "Inserisci le credenziali del tuo portale per accedere ai tuoi progetti e fatture" +#~ msgid "Admin group (CN)" +#~ msgstr "Gruppo di amministrazione" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "nome_utente_portale" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Inserisci la tua password" +#~ msgid "AUTH_METHOD" +#~ msgstr "Metodo di autenticazione" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "Solo attivo" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Prova di configurazione" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Basso" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Medio" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Alto" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Urgente" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "Test connection" +#~ msgstr "Prova di configurazione" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Generate configuration" +#~ msgstr "Prova di configurazione" -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "Environment variables (.env)" +#~ msgstr "Riferimento alle variabili d'ambiente" -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "Previous" +#~ msgstr "Precedente" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Next" +#~ msgstr "Prossimo" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Feature Module Load Status" +#~ msgstr "Statistiche sull'utilizzo delle funzionalità" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Optional loaded:" +#~ msgstr "Codice coupon opzionale" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Commenti" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Aggiungi commento" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Il tuo commento" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Attention needed" +#~ msgstr "Attenzione richiesta" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Pubblica commento" +#~ msgid "Module" +#~ msgstr "Mobile" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "Status" +#~ msgstr "Stato" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Torna a Progetti" +#~ msgid "Details" +#~ msgstr "Dettagli" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "Progetti per %(client_name)s" +#~ msgid "Loaded" +#~ msgstr "Carica altro" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "Failed" +#~ msgstr "Fallito" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "—" +#~ msgstr "" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Dettagli preventivo" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Valido fino al" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Questo preventivo è scaduto." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Elementi di preventivo" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "SKU" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Termini e condizioni" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Accetta preventivo" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Rifiuta citazione" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Torniamo alle citazioni" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "Preventivi per %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Scaduto" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "Nessuna quotazione trovata." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "Codice del progetto" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "Oltre il budget" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "Riepilogo" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "Importo totale" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "Nessuna attività selezionata" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "Nessuna attività negli ultimi 30 giorni." +#~ msgid "All Categories" +#~ msgstr "Tutte le categorie" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Project Management" +#~ msgstr "Gestione del progetto" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Imposta password" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Imposta la tua password per iniziare" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Imposta la tua password" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Imposta una password per il tuo account del portale clienti" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "Conferma password" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Conferma la tua password" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "Voci temporali per i progetti %(client_name)s" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Tutti i progetti" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "Dalla data" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "Ad oggi" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Voci totali" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Ore totali" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "Abilitato" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Fatture recenti" +#~ msgid "Disabled" +#~ msgstr "Disabilitato" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Visualizza tutto" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "Save Changes" +#~ msgstr "Salva modifiche" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Note" +#~ msgstr "Nota" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Fatture totali" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Voci temporali recenti" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Esporta in CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Crea cliente" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Torniamo ai Clienti" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "Aggiungi un nuovo cliente per gestire i progetti correlati e la fatturazione." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Inserisci il nome del cliente" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Tariffa oraria predefinita" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "per esempio. 75,00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "Questa tariffa verrà compilata automaticamente durante la creazione di progetti per questo cliente" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Supporta il ribasso" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Breve descrizione del cliente o dell'ambito del progetto" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Referente" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Nome del contatto principale" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contatto@cliente.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Ore mensili prepagate" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "per esempio. 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "Lascia vuoto se questo cliente non ha allocazione prepagata." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Giorno di ripristino prepagato" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Giorno del mese in cui vengono ripristinate le ore prepagate (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Indirizzo del cliente" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "Pannello di debug OIDC" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "Ispeziona la configurazione, i metadati del provider e gli utenti OIDC" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Scegli un nome chiaro e descrittivo per l'organizzazione cliente." +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "Imposta la tariffa oraria standard per questo cliente. Questo verrà popolato automaticamente durante la creazione di nuovi progetti." +#~ msgid "Test Configuration" +#~ msgstr "Prova di configurazione" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Informazioni sui contatti" +#~ msgid "OIDC Configuration" +#~ msgstr "Configurazione OIDC" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "Aggiungi i dettagli di contatto per facilitare la comunicazione e la tenuta dei registri." +#~ msgid "Auth Method" +#~ msgstr "Metodo di autenticazione" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Ore prepagate" +#~ msgid "Issuer" +#~ msgstr "Emittente" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "Configura le ore mensili incluse e il giorno di reimpostazione se questo cliente ha un acconto o un pacchetto prepagato." +#~ msgid "Not configured" +#~ msgstr "Non configurato" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "Fornire il contesto sulla relazione con il cliente o sui tipi di progetto tipici." +#~ msgid "Client ID" +#~ msgstr "ID cliente" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "Modifica cliente" +#~ msgid "Client Secret" +#~ msgstr "Segreto del cliente" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "Abilita l'accesso al portale per questo cliente. I clienti possono accedere con le proprie credenziali per visualizzare progetti, fatture e registrazioni orarie." +#~ msgid "Set" +#~ msgstr "Impostato" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Abilita il portale clienti" +#~ msgid "Not set" +#~ msgstr "Non impostato" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "Reindirizzare l'URI" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "Generato automaticamente" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Nome utente del portale" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Nome utente univoco per l'accesso al portale" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Password del portale" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "Lascia vuoto per mantenere la password corrente" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Imposta una nuova password o lascia vuoto per rimanere aggiornato" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Nome utente corrente del portale" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Aggiorna cliente" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Invia e-mail di configurazione della password" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "Invia un'e-mail a %(email)s con un collegamento per impostare la password del portale." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "L'indirizzo e-mail è necessario per inviare l'e-mail di configurazione della password. Imposta l'indirizzo email del cliente sopra." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Statistiche del cliente" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "Est. Costo totale" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Filtra clienti" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Attiva/disattiva i filtri" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Nascondi filtri" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Mostra filtri" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "Scopes" +#~ msgstr "Ambiti" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "Nessuna voce di tempo non fatturata trovata per questo progetto." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "Voci di tempo non fatturate" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "Elementi della fattura" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "Contrassegnare il cliente come inattivo?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Modifica lo stato del cliente" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Segna come inattivo" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "Attivare il cliente?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Attiva cliente" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Elimina cliente" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "Progetti totali e attivi" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Maneggio" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Primario" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "più contatti" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Nessun contatto ancora" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Aggiungi contatto" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Informazioni di contatto precedenti" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "Il piano include %(hours)s ore per ciclo. Si reimposta il giorno %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Inizio del ciclo corrente" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Ore rimanenti" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "H" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "Consumato questo ciclo" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "Mappatura delle rivendicazioni" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "Reclamo nome utente" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Email Claim" +#~ msgstr "Reclamo via e-mail" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "Full Name Claim" +#~ msgstr "Richiesta di nome completo" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "Groups Claim" +#~ msgstr "Reclamo dei gruppi" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "Admin Group" +#~ msgstr "Gruppo di amministrazione" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Cliente visibile" +#~ msgid "Admin Emails" +#~ msgstr "E-mail di amministrazione" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "Post-Logout URI" +#~ msgstr "URI post-disconnessione" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Provider Metadata" +#~ msgstr "Metadati del fornitore" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Error loading metadata:" +#~ msgstr "Errore durante il caricamento dei metadati:" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Archiviato" +#~ msgid "Discovery endpoint:" +#~ msgstr "Endpoint di rilevamento:" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Metadati del provider caricati correttamente" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Endpoints" +#~ msgstr "Endpoint" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "Authorization" +#~ msgstr "Autorizzazione" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Note interne" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Aggiungi nota" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Aggiungi una nota interna su questo cliente..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Salva nota" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "modificato" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Importante" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Deseleziona" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Segna Importante" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "Nessuna nota ancora. Aggiungi una nota per tenere traccia delle informazioni importanti su questo cliente." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "Valore stimato" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "Crea fattura" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "Crea fattura" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "Crea fattura" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "Sei sicuro di voler eliminare questa nota?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Elimina nota" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Modificato il" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Rispondere" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "Token" +#~ msgstr "Gettone" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "UserInfo" +#~ msgstr "Informazioni utente" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Scrivi la tua risposta..." +#~ msgid "End Session" +#~ msgstr "Fine sessione" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "JWKS URI" +#~ msgstr "URI JWKS" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "Supported Features" +#~ msgstr "Funzionalità supportate" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Condividi i tuoi pensieri, aggiornamenti o domande..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "Puoi utilizzare le interruzioni di riga per formattare il tuo commento." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Aggiungi immagine" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Nessun commento ancora" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Inizia la conversazione aggiungendo il primo commento." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Aggiungi il primo commento" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Modifica commento" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Indietro" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "Modifica del commento su:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Originariamente pubblicato su" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Contenuto del commento" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Tutte le attività" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Modelli temporali" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Nessuna attività recente" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "L'attività verrà visualizzata qui mentre lavori" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Carica altro" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "Impossibile caricare le attività" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Response Types" +#~ msgstr "Tipi di risposta" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "Tipi di sovvenzione" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "Auth Methods" +#~ msgstr "Metodi di autenticazione" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "Claims" +#~ msgstr "Affermazioni" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Metadati del provider non caricati. Fare" +#~ " clic su \"Configurazione di prova\" " +#~ "per recuperare." -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "Email" +#~ msgstr "E-mail" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "Full Name" +#~ msgstr "Nome e cognome" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Role" +#~ msgstr "Ruolo" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Seleziona un cliente..." +#~ msgid "Last Login" +#~ msgstr "Ultimo accesso" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "OIDC Subject" +#~ msgstr "Oggetto OIDC" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "Inactive" +#~ msgstr "Inattivo" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "Never" +#~ msgstr "Mai" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Nessun utente ha ancora effettuato l'accesso tramite OIDC." -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Environment Variables Reference" +#~ msgstr "Riferimento alle variabili d'ambiente" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Configura OIDC utilizzando queste variabili di ambiente:" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "Variable" +#~ msgstr "Variabile" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "Description" +#~ msgstr "Descrizione" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Example" +#~ msgstr "Esempio" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Authentication method" +#~ msgstr "Metodo di autenticazione" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "OIDC provider issuer URL" +#~ msgstr "URL dell'emittente del provider OIDC" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Client ID from OIDC provider" +#~ msgstr "ID cliente dal provider OIDC" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Segreto client dal provider OIDC" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "URL di richiamata (facoltativo, generato automaticamente)" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Requested scopes" +#~ msgstr "Ambiti richiesti" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Claim containing username" +#~ msgstr "Attestazione contenente nome utente" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Claim containing email" +#~ msgstr "Reclamo contenente email" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Claim containing full name" +#~ msgstr "Richiesta contenente il nome completo" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "Claim containing groups" +#~ msgstr "Attestazione contenente gruppi" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Nome del gruppo per il ruolo di amministratore (facoltativo)" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "E-mail di amministrazione separate da virgole (facoltativo)" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "Fatto" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "Centro assistenza di TimeTracker" +#~ msgid "Basic Config" +#~ msgstr "" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Test Connection" +#~ msgstr "" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Casa" +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "L'impaginazione dei miei compiti" +#~ msgid "OIDC Issuer URL" +#~ msgstr "" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Chiamata" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Messaggio" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Direzione" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "In uscita" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "In entrata" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Soggetto" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Programmato" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Data di follow-up" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Contenuto/Note" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Salva comunicazione" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Nome di battesimo" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Cognome" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "Mobile" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "Dipartimento" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Contatto" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Fatturazione" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Tecnico" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Imposta come contatto principale" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Tag" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Salva contatto" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Imposta primario" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "Nessun contatto trovato" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Aggiungi il primo contatto" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Contatto principale" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Storia della comunicazione" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Aggiungi comunicazione" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "Nessuna comunicazione registrata" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "Enter client secret" +#~ msgstr "" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "Attivare" +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "Authentication Method" +#~ msgstr "Metodo di autenticazione" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Nome dell'affare" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Seleziona Cliente" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Seleziona Contatto" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Palcoscenico" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Valore dell'affare" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Vinci la probabilità" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Data di chiusura prevista" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Citazione correlata" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Seleziona Preventivo" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Salva affare" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Vinto" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Perduto" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Tutte le fasi" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Valore" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Probabilità" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Chiusura prevista" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "Nessuna offerta trovata" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Crea il primo affare" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "OIDC Only" +#~ msgstr "" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "Both" +#~ msgstr "" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "SSO and local password authentication" +#~ msgstr "" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Step 2: Test Connection" +#~ msgstr "" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Progetto correlato" +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "Storia degli obiettivi" +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "Visualizza i dettagli completi" +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Sei stato menzionato" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Visualizza attività e risposta" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Fattura" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Fattura scaduta" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Visualizza fattura" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Citazione" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Approvazione preventivo rifiutata" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Visualizza preventivo" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Approvazione richiesta" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Rivedi preventivo" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Preventivo approvato" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "Preventivo scaduto" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "Preventivo in scadenza" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Preventivo inviato" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Assegnazione dei compiti" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Visualizza attività" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Dettagli della prova" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "Il tuo riepilogo settimanale" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 Richiesta errata" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Richiesta non valida" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "La richiesta effettuata non è valida o contiene errori. Ciò potrebbe essere dovuto a:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Dati del modulo mancanti o non validi" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Parametri della richiesta non validi" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "Non hai l'autorizzazione per accedere a questa risorsa. Ciò potrebbe essere dovuto a:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Privilegi insufficienti" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "Non effettuato l'accesso" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Restrizioni di accesso alle risorse" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Qualcosa è andato storto da parte nostra. Per favore riprova più tardi." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Riprova" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Si è verificato un errore durante l'elaborazione della tua richiesta." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Aggiorna pagina" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Vai su Accedi" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "ad esempio viaggi, pasti, forniture per ufficio" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "ad esempio VIAGGI, PASTI" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Breve descrizione di questa categoria..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "ad esempio, fa-plane, fa-utensili" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "ad esempio, 19:00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Categoria" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Informazioni di base" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "ad esempio, Volo per Berlino" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Ulteriori dettagli sulla spesa..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "Categoria" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "Dettagli di pagamento" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "Posizione" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Dettagli di pagamento" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "ad esempio Lufthansa" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "Informazioni aggiuntive" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Numero di ricevuta/fattura" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "ad esempio, INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "ad esempio conferenza, riunione con un cliente, urgente" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Note aggiuntive..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "Opzionale" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Filtra le spese" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Elimina le spese selezionate" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Modifica stato per le spese selezionate" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Associato a" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Rifiutare la spesa" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Spiegare perché questa spesa viene rifiutata..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "Sei sicuro di voler eliminare questa spesa?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Elimina spesa" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Importa/Esporta dati" +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Importa/Esporta" +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "Importa dati da altri time tracker o esporta i tuoi dati per la conformità GDPR e i backup" +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Importa dati" +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Importa voci di orario da un file CSV" +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Scegli File CSV" +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Scarica modello" +#~ msgid "Generate Configuration" +#~ msgstr "" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "OIDC User Details" +#~ msgstr "Dettagli utente OIDC" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Profilo e identità OIDC per questo utente" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Back to OIDC Debug" +#~ msgstr "Torna al debug OIDC" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "User Profile" +#~ msgstr "Profilo utente" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Active" +#~ msgstr "Attivo" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Importa da traccia Toggl" +#~ msgid "Preferred Language" +#~ msgstr "Lingua preferita" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Importa voci di tempo da Toggl Track" +#~ msgid "Created At" +#~ msgstr "Creato a" + +#~ msgid "OIDC Information" +#~ msgstr "Informazioni OIDC" + +#~ msgid "OIDC Issuer" +#~ msgstr "Emittente OIDC" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Importa da Toggl" +#~ msgid "OIDC Subject (sub)" +#~ msgstr "Oggetto OIDC (sottotitolo)" + +#~ msgid "Local" +#~ msgstr "Locale" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Questo utente è stato creato o " +#~ "collegato tramite OIDC. L'emittente e " +#~ "l'oggetto vengono utilizzati per identificare" +#~ " in modo univoco l'utente attraverso " +#~ "le sessioni di accesso." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Questo utente non dispone di " +#~ "informazioni OIDC. Potrebbero essere stati " +#~ "creati manualmente o tramite autoregistrazione" +#~ " senza OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "Statistiche delle attività" + +#~ msgid "Time Entries" +#~ msgstr "Voci di tempo" + +#~ msgid "None" +#~ msgstr "Nessuno" + +#~ msgid "Active Timer" +#~ msgstr "Temporizzatore attivo" + +#~ msgid "Tasks Created" +#~ msgstr "Attività create" + +#~ msgid "Edit User" +#~ msgstr "Modifica utente" + +#~ msgid "View All Users" +#~ msgstr "Visualizza tutti gli utenti" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "Progettista di preventivi PDF" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Importazione dalla raccolta" +#~ msgid "Visual Invoice Designer" +#~ msgstr "Designer di citazioni visive" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Importa voci di tempo da Harvest" +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "" +#~ "Trascina e rilascia gli elementi per " +#~ "progettare il layout del tuo preventivo" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Ripristina dal backup" +#~ msgid "How to use:" +#~ msgstr "Come usare:" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Fai clic sugli elementi dalla barra " +#~ "laterale sinistra per aggiungerli all'area " +#~ "di disegno. Fare clic sugli elementi " +#~ "per selezionarli e personalizzarli nel " +#~ "pannello delle proprietà. Utilizza gli " +#~ "strumenti di allineamento e le " +#~ "scorciatoie da tastiera per una modifica" +#~ " più rapida." -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Importa cronologia" +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Scorciatoie da tastiera:" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Esporta dati" +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Esportazione completa dei dati (GDPR)" +#~ msgid "Items Table:" +#~ msgstr "Tabella elementi preventivo" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Esporta tutti i tuoi dati personali" +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Esporta come JSON" +#~ msgid "Expenses Table:" +#~ msgstr "Totale parziale delle spese" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Esporta come ZIP" +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Esportazione filtrata" +#~ msgid "Saving:" +#~ msgstr "Risparmio..." -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Esporta dati specifici con filtri" +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Esporta con filtri" +#~ msgid "Preview:" +#~ msgstr "" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "See" +#~ msgstr "Impostato" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "for full documentation." +#~ msgstr "Documentazione" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Crea un backup completo del database" +#~ msgid "Clear Canvas" +#~ msgstr "Tela trasparente" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Esporta cronologia" +#~ msgid "Generate Preview" +#~ msgstr "Genera anteprima" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "Token API" +#~ msgid "Save Design" +#~ msgstr "Salva disegno" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "ID dell'area di lavoro" +#~ msgid "View Code" +#~ msgstr "Visualizza codice" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Importare" +#~ msgid "Export JSON" +#~ msgstr "" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "ID conto" +#~ msgid "Import JSON" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Blocca sulla griglia (10px)" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "Toolbox" +#~ msgstr "Cassetta degli attrezzi" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Search elements & variables..." +#~ msgstr "Cerca elementi e variabili..." -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "Elements" +#~ msgstr "Elementi" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "Variables" +#~ msgstr "Variabili" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Basic Elements" +#~ msgstr "Elementi di base" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "Custom Text" +#~ msgstr "Testo personalizzato" + +#~ msgid "Text" +#~ msgstr "Testo" + +#~ msgid "Heading" +#~ msgstr "Intestazione" + +#~ msgid "Line" +#~ msgstr "Linea" + +#~ msgid "Rectangle" +#~ msgstr "Rettangolo" + +#~ msgid "Circle" +#~ msgstr "Cerchio" + +#~ msgid "Company Info" +#~ msgstr "Informazioni sull'azienda" + +#~ msgid "Company Logo" +#~ msgstr "Logo aziendale" + +#~ msgid "Company Name" +#~ msgstr "Nome dell'azienda" + +#~ msgid "Company Details" +#~ msgstr "Dettagli dell'azienda" + +#~ msgid "Address" +#~ msgstr "Indirizzo" + +#~ msgid "Phone" +#~ msgstr "Telefono" + +#~ msgid "Website" +#~ msgstr "Sito web" + +#~ msgid "Tax ID" +#~ msgstr "Codice fiscale" + +#~ msgid "Invoice Data" +#~ msgstr "Dettagli della fattura" + +#~ msgid "Invoice Number" +#~ msgstr "Numero della fattura" + +#~ msgid "Invoice Date" +#~ msgstr "Fatturato" + +#~ msgid "Due Date" +#~ msgstr "Scadenza" + +#~ msgid "Client Info" +#~ msgstr "Informazioni sul cliente" + +#~ msgid "Client Name" +#~ msgstr "Nome del cliente" + +#~ msgid "Client Address" +#~ msgstr "Indirizzo del cliente" + +#~ msgid "Items Table" +#~ msgstr "Tabella elementi preventivo" + +#~ msgid "Expenses Table" +#~ msgstr "Totale parziale delle spese" + +#~ msgid "Subtotal" +#~ msgstr "Totale parziale" + +#~ msgid "Tax" +#~ msgstr "Tassare" + +#~ msgid "Total Amount" +#~ msgstr "Importo totale" + +#~ msgid "Terms" +#~ msgstr "Termini" + +#~ msgid "Payment & Project" +#~ msgstr "Pagamento e progetto" + +#~ msgid "Payment Date" +#~ msgstr "Data di pagamento" + +#~ msgid "Payment Method" +#~ msgstr "Metodo di pagamento" + +#~ msgid "Payment Status" +#~ msgstr "Stato del pagamento" + +#~ msgid "Amount Paid" +#~ msgstr "Importo pagato" + +#~ msgid "Project Name" +#~ msgstr "Nome del progetto" + +#~ msgid "Client Email" +#~ msgstr "E-mail del cliente" + +#~ msgid "Client Phone" +#~ msgstr "Telefono cliente" + +#~ msgid "QR Code" +#~ msgstr "Codice QR" + +#~ msgid "Barcode" +#~ msgstr "Codice a barre" + +#~ msgid "Page Number" +#~ msgstr "Numero di pagina" + +#~ msgid "Current Date" +#~ msgstr "Data corrente" + +#~ msgid "Watermark" +#~ msgstr "Filigrana" + +#~ msgid "Bank Info" +#~ msgstr "Informazioni bancarie" + +#~ msgid "Currency" +#~ msgstr "Valuta" + +#~ msgid "Decorative Image" +#~ msgstr "" + +#~ msgid "Invoice Fields" +#~ msgstr "Elementi della fattura" + +#~ msgid "Invoice number" +#~ msgstr "Numero della fattura" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Stato del preventivo (bozza/inviato/pagato/scaduto)" + +#~ msgid "Issue date" +#~ msgstr "Data di emissione" + +#~ msgid "Due date" +#~ msgstr "Scadenza" + +#~ msgid "Subtotal amount" +#~ msgstr "Importo subtotale" + +#~ msgid "Tax rate (%)" +#~ msgstr "Aliquota fiscale (%)" + +#~ msgid "Tax amount" +#~ msgstr "Importo fiscale" + +#~ msgid "Total amount" +#~ msgstr "Importo totale" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Codice valuta (EUR, USD, ecc.)" + +#~ msgid "Invoice notes" +#~ msgstr "Elementi della fattura" + +#~ msgid "Terms & conditions" +#~ msgstr "Termini e condizioni" + +#~ msgid "Client Fields" +#~ msgstr "Campi cliente" + +#~ msgid "Client company name" +#~ msgstr "Nome dell'azienda cliente" + +#~ msgid "Client email address" +#~ msgstr "Indirizzo e-mail del cliente" + +#~ msgid "Client full address" +#~ msgstr "Indirizzo completo del cliente" + +#~ msgid "Client contact person" +#~ msgstr "Persona di contatto del cliente" + +#~ msgid "Client phone number" +#~ msgstr "Numero di telefono del cliente" + +#~ msgid "Payment Fields" +#~ msgstr "Campi di pagamento" + +#~ msgid "Payment status" +#~ msgstr "Stato del pagamento" + +#~ msgid "Payment date" +#~ msgstr "Data di pagamento" + +#~ msgid "Payment method" +#~ msgstr "Metodo di pagamento" + +#~ msgid "Payment reference number" +#~ msgstr "Numero di riferimento del pagamento" + +#~ msgid "Amount paid" +#~ msgstr "Importo pagato" + +#~ msgid "Outstanding amount" +#~ msgstr "Importo eccezionale" + +#~ msgid "Payment notes" +#~ msgstr "Note di pagamento" + +#~ msgid "Project Fields" +#~ msgstr "Campi del progetto" + +#~ msgid "Project name" +#~ msgstr "Nome del progetto" + +#~ msgid "Project code" +#~ msgstr "Codice del progetto" + +#~ msgid "Project description" +#~ msgstr "Descrizione del progetto" + +#~ msgid "Project billing reference" +#~ msgstr "Riferimento per la fatturazione del progetto" + +#~ msgid "Company/Settings Fields" +#~ msgstr "Campi Azienda/Impostazioni" + +#~ msgid "Your company name" +#~ msgstr "Il nome della tua azienda" + +#~ msgid "Your company address" +#~ msgstr "L'indirizzo della tua azienda" + +#~ msgid "Your company email" +#~ msgstr "La tua email aziendale" + +#~ msgid "Your company phone" +#~ msgstr "Il tuo telefono aziendale" + +#~ msgid "Your company website" +#~ msgstr "Il tuo sito web aziendale" + +#~ msgid "Your tax ID number" +#~ msgstr "Il tuo codice fiscale" + +#~ msgid "Your bank account info" +#~ msgstr "Informazioni sul tuo conto bancario" + +#~ msgid "Default invoice terms" +#~ msgstr "Termini di fattura predefiniti" + +#~ msgid "Default invoice notes" +#~ msgstr "Note fattura predefinite" + +#~ msgid "Date/Time Fields" +#~ msgstr "Campi data/ora" + +#~ msgid "Current date" +#~ msgstr "Data attuale" + +#~ msgid "Invoice creation date" +#~ msgstr "Data di creazione del preventivo" + +#~ msgid "Invoice last update date" +#~ msgstr "Citare la data dell'ultimo aggiornamento" + +#~ msgid "Invoice Items Loop" +#~ msgstr "Elementi della fattura" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" + +#~ msgid "Time-based items only" +#~ msgstr "Servizi a tempo e lavoro orario" + +#~ msgid "Item description" +#~ msgstr "Descrizione dell'articolo" + +#~ msgid "Item quantity" +#~ msgstr "Quantità dell'articolo" + +#~ msgid "Item unit price" +#~ msgstr "Prezzo unitario dell'articolo" + +#~ msgid "Item total amount" +#~ msgstr "Importo totale dell'articolo" + +#~ msgid "End loop" +#~ msgstr "Fine del ciclo" + +#~ msgid "Extra Goods Loop" +#~ msgstr "Beni extra" + +#~ msgid "Loop through extra goods only" +#~ msgstr "Progetto di beni extra" + +#~ msgid "Good name" +#~ msgstr "Nome del ruolo" + +#~ msgid "Good total amount" +#~ msgstr "Importo totale" + +#~ msgid "Design Canvas" +#~ msgstr "Tela di disegno" + +#~ msgid "Page Size:" +#~ msgstr "Dimensioni della pagina:" + +#~ msgid "Zoom In" +#~ msgstr "Zoom avanti" + +#~ msgid "Zoom Out" +#~ msgstr "Rimpicciolisci" + +#~ msgid "Delete Selected" +#~ msgstr "Elimina selezionato" + +#~ msgid "Properties" +#~ msgstr "Proprietà" + +#~ msgid "Warnings" +#~ msgstr "Avvertimento" + +#~ msgid "Refresh warnings" +#~ msgstr "Aggiorna pagina" + +#~ msgid "No warnings" +#~ msgstr "Avvertimento" + +#~ msgid "Template Settings" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "Formato data" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "Seleziona un elemento per modificarne le proprietà" + +#~ msgid "PDF Preview" +#~ msgstr "Anteprima PDF" + +#~ msgid "Page Size" +#~ msgstr "" + +#~ msgid "Refresh Preview" +#~ msgstr "" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "" + +#~ msgid "Close Preview" +#~ msgstr "" + +#~ msgid "Zoom Level" +#~ msgstr "" + +#~ msgid "Reset Zoom" +#~ msgstr "" + +#~ msgid "Fit to Width" +#~ msgstr "" + +#~ msgid "Fit Width" +#~ msgstr "" + +#~ msgid "Fit to Height" +#~ msgstr "" + +#~ msgid "Fit Height" +#~ msgstr "" + +#~ msgid "Actual Size" +#~ msgstr "" + +#~ msgid "Generating preview..." +#~ msgstr "" + +#~ msgid "Preview Error" +#~ msgstr "" + +#~ msgid "Retry" +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "Codice generato" + +#~ msgid "Change Image" +#~ msgstr "" + +#~ msgid "Upload Image" +#~ msgstr "" + +#~ msgid "Remove Image" +#~ msgstr "" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "" + +#~ msgid "Uploading..." +#~ msgstr "" + +#~ msgid "Error: Image update function not found" +#~ msgstr "" + +#~ msgid "Failed to upload image" +#~ msgstr "" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "Cancellare tutti gli elementi?" + +#~ msgid "Clear" +#~ msgstr "Chiaro" + +#~ msgid "Exit Fullscreen" +#~ msgstr "" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "Ripristinare le impostazioni predefinite?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "Reimposta layout PDF" + +#~ msgid "Error importing template" +#~ msgstr "" + +#~ msgid "PDF Quote Designer" +#~ msgstr "Progettista di preventivi PDF" + +#~ msgid "Visual Quote Designer" +#~ msgstr "Designer di citazioni visive" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "" +#~ "Trascina e rilascia gli elementi per " +#~ "progettare il layout del tuo preventivo" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Tabella elementi preventivo" + +#~ msgid "Quote Items Table:" +#~ msgstr "Tabella elementi preventivo" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" + +#~ msgid "Quote Data" +#~ msgstr "Dati preventivo" + +#~ msgid "Quote Number" +#~ msgstr "Numero preventivo" + +#~ msgid "Quote Date" +#~ msgstr "Data del preventivo" + +#~ msgid "Quote Items Table" +#~ msgstr "Tabella elementi preventivo" + +#~ msgid "Quote Fields" +#~ msgstr "Campi preventivo" + +#~ msgid "Quote number" +#~ msgstr "Numero preventivo" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Stato del preventivo (bozza/inviato/pagato/scaduto)" + +#~ msgid "Quote notes" +#~ msgstr "Note di citazione" + +#~ msgid "Quote status" +#~ msgstr "Stato del preventivo" + +#~ msgid "Quote accepted date" +#~ msgstr "Data di accettazione del preventivo" + +#~ msgid "Quote creation date" +#~ msgstr "Data di creazione del preventivo" + +#~ msgid "Quote last update date" +#~ msgstr "Citare la data dell'ultimo aggiornamento" + +#~ msgid "Quote Items Loop" +#~ msgstr "Ciclo di elementi di citazione" + +#~ msgid "Loop through invoice items" +#~ msgstr "Passa in rassegna gli elementi della fattura" + +#~ msgid "Align Left" +#~ msgstr "Allinea a sinistra" + +#~ msgid "Center Horizontally" +#~ msgstr "Centra orizzontalmente" + +#~ msgid "Align Right" +#~ msgstr "Allinea a destra" + +#~ msgid "Align Top" +#~ msgstr "Allinea in alto" + +#~ msgid "Center Vertically" +#~ msgstr "Centra verticalmente" + +#~ msgid "Align Bottom" +#~ msgstr "Allinea in basso" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "" + +#~ msgid "Email Mappings" +#~ msgstr "" + +#~ msgid "Add Mapping" +#~ msgstr "" + +#~ msgid "Salesman Initial" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "Indirizzo e-mail" + +#~ msgid "Pattern/Domain" +#~ msgstr "" + +#~ msgid "Add Email Mapping" +#~ msgstr "" + +#~ msgid "1-20 letters only" +#~ msgstr "" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" + +#~ msgid "Direct Email Address" +#~ msgstr "" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" + +#~ msgid "Edit Email Mapping" +#~ msgstr "" + +#~ msgid "Error saving mapping" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" + +#~ msgid "Error deleting mapping" +#~ msgstr "" + +#~ msgid "Time Entry Requirements" +#~ msgstr "Modelli di immissione del tempo" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" + +#~ msgid "Require description when logging time" +#~ msgstr "" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" + +#~ msgid "Support visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "Chiave" + +#~ msgid "— key sent by email." +#~ msgstr "Invia e-mail" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "Chiave" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "Codice, nome, email" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "Marchio aziendale" + +#~ msgid "Invoice Defaults" +#~ msgstr "Impostazioni predefinite della fattura" + +#~ msgid "Backup Settings" +#~ msgstr "Impostazioni di backup" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "Abilitato" + +#~ msgid "Host" +#~ msgstr "Perduto" + +#~ msgid "SSL" +#~ msgstr "Utilizza SSL" + +#~ msgid "TLS" +#~ msgstr "Utilizza TLS" + +#~ msgid "on" +#~ msgstr "SU" + +#~ msgid "off" +#~ msgstr "Di" + +#~ msgid "User DN" +#~ msgstr "Menù utente" + +#~ msgid "User login attribute" +#~ msgstr "Tempi di caricamento più rapidi" + +#~ msgid "Test LDAP Connection" +#~ msgstr "Termini e Condizioni" + +#~ msgid "Export Settings" +#~ msgstr "Impostazioni di esportazione" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "Regolazione" + +#~ msgid "Transfer" +#~ msgstr "Trasferire" + +#~ msgid "Sale" +#~ msgstr "Vendita" + +#~ msgid "Rent" +#~ msgstr "Noleggio" + +#~ msgid "Purchase" +#~ msgstr "Acquistare" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "Disponibile" + +#~ msgid "Use environment default" +#~ msgstr "Impostazioni predefinite della fattura" + +#~ msgid "currently" +#~ msgstr "Valuta" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "URL dell'immagine" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "Codice" + +#~ msgid "Hosted API key" +#~ msgstr "Crea token API" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "Lascia vuoto per mantenere la password corrente" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "Timeout (secondi)" + +#~ msgid "Context limit" +#~ msgstr "Tipo di contenuto" + +#~ msgid "System prompt" +#~ msgstr "Ruolo del sistema" + +#~ msgid "Test AI connection" +#~ msgstr "Termini e Condizioni" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Privacy e analisi" + +#~ msgid "Save Settings" +#~ msgstr "Salva impostazioni" + +#~ msgid "Upload New Logo" +#~ msgstr "Carica nuovo logo" + +#~ msgid "Logo Preview" +#~ msgstr "Anteprima del logo" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Sei sicuro di voler rimuovere il logo dell'azienda?" + +#~ msgid "Remove Logo" +#~ msgstr "Rimuovi logo" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "Richiedi approvazione" + +#~ msgid "Testing connection..." +#~ msgstr "Prova di configurazione" + +#~ msgid "Connection failed." +#~ msgstr "Operazione fallita" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "Operazione fallita" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Dashboard di telemetria e analisi" + +#~ msgid "Admin → Settings" +#~ msgstr "Amministrazione → Impostazioni" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "Lascia vuoto per mantenere la password corrente" + +#~ msgid "Client Portal Access" +#~ msgstr "Accesso al portale clienti" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "Assegnato a" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "Accesso amministratore" + +#~ msgid "Migrate to new role system" +#~ msgstr "Migrazione al nuovo sistema di ruoli" + +#~ msgid "Migrate" +#~ msgstr "Migrare" + +#~ msgid "Roles" +#~ msgstr "Ruoli" + +#~ msgid "No users found." +#~ msgstr "Nessun utente trovato." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "Impossibile eliminare l'utente \"{name}\" " +#~ "perché ha {count} voci di tempo. " +#~ "Gli utenti con voci di orario " +#~ "esistenti non possono essere eliminati." + +#~ msgid "Cannot Delete User" +#~ msgstr "Impossibile eliminare l'utente" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Sei sicuro di voler eliminare l'utente" +#~ " \"{name}\"? Questa azione non può " +#~ "essere annullata." + +#~ msgid "Delete User" +#~ msgstr "Elimina utente" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "Etichetta" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "Opzionale" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "Imposta come modello predefinito" + +#~ msgid "HTML Template" +#~ msgstr "Modello HTML" + +#~ msgid "Custom Message" +#~ msgstr "Messaggio personalizzato" + +#~ msgid "More Variables" +#~ msgstr "Più variabili" + +#~ msgid "Create Template" +#~ msgstr "Crea modello" + +#~ msgid "Available Variables" +#~ msgstr "Variabili disponibili" + +#~ msgid "Invoice Variables" +#~ msgstr "Variabili della fattura" + +#~ msgid "Other Variables" +#~ msgstr "Altre variabili" + +#~ msgid "Send test email" +#~ msgstr "Invia e-mail di prova" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "E-mail del destinatario" + +#~ msgid "Invoice ID" +#~ msgstr "Fatturato" + +#~ msgid "Update Template" +#~ msgstr "Aggiorna modello" + +#~ msgid "Failed to send test email." +#~ msgstr "Invia e-mail di prova" + +#~ msgid "No email templates found." +#~ msgstr "Nessun modello di email trovato." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" +#~ "Crea il tuo primo modello di email" +#~ " per personalizzare le email di " +#~ "fatturazione." + +#~ msgid "Create Email Template" +#~ msgstr "Crea modello di posta elettronica" + +#~ msgid "Delete Email Template" +#~ msgstr "Elimina modello e-mail" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "Sei sicuro di voler eliminare?" + +#~ msgid "This action cannot be undone." +#~ msgstr "Questa azione non può essere annullata." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "Informazioni sul modello" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "Icona" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "Autorizzazioni di sistema" + +#~ msgid "All available permissions in the system" +#~ msgstr "Tutte le autorizzazioni disponibili nel sistema" + +#~ msgid "Back to Roles" +#~ msgstr "Torniamo ai ruoli" + +#~ msgid "permissions" +#~ msgstr "autorizzazioni" + +#~ msgid "No description available" +#~ msgstr "Nessuna descrizione disponibile" + +#~ msgid "About Permissions" +#~ msgstr "Informazioni sulle autorizzazioni" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Le autorizzazioni definiscono quali azioni " +#~ "gli utenti possono eseguire nel sistema." +#~ " Queste autorizzazioni vengono assegnate ai" +#~ " ruoli e i ruoli vengono assegnati" +#~ " agli utenti. Ciò fornisce un sistema" +#~ " di controllo degli accessi flessibile " +#~ "e granulare." + +#~ msgid "Edit Role" +#~ msgstr "Modifica ruolo" + +#~ msgid "Create New Role" +#~ msgstr "Crea nuovo ruolo" + +#~ msgid "Role Name" +#~ msgstr "Nome del ruolo" + +#~ msgid "A unique name for this role" +#~ msgstr "Un nome univoco per questo ruolo" + +#~ msgid "Optional description of this role" +#~ msgstr "Descrizione facoltativa di questo ruolo" + +#~ msgid "Permissions" +#~ msgstr "Autorizzazioni" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Seleziona le autorizzazioni che questo ruolo dovrebbe avere:" + +#~ msgid "Toggle All" +#~ msgstr "Attiva/disattiva tutto" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "Aggiorna ruolo" + +#~ msgid "Create Role" +#~ msgstr "Crea ruolo" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Gestire i ruoli e le relative autorizzazioni" + +#~ msgid "View Permissions" +#~ msgstr "Visualizza autorizzazioni" + +#~ msgid "Total Roles" +#~ msgstr "Ruoli totali" + +#~ msgid "System Roles" +#~ msgstr "Ruoli di sistema" + +#~ msgid "Custom Roles" +#~ msgstr "Ruoli personalizzati" + +#~ msgid "Assigned Users" +#~ msgstr "Utenti assegnati" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Default role" +#~ msgstr "Ruolo predefinito" + +#~ msgid "user" +#~ msgstr "utente" + +#~ msgid "No users" +#~ msgstr "Nessun utente" + +#~ msgid "Custom" +#~ msgstr "Costume" + +#~ msgid "View" +#~ msgstr "Visualizzazione" + +#~ msgid "Permissions for" +#~ msgstr "Autorizzazioni per" + +#~ msgid "No permissions assigned." +#~ msgstr "Nessuna autorizzazione assegnata." + +#~ msgid "No roles found." +#~ msgstr "Nessun ruolo trovato." + +#~ msgid "About Roles & Permissions" +#~ msgstr "Informazioni su ruoli e autorizzazioni" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "I ruoli sono raccolte di autorizzazioni" +#~ " che possono essere assegnate agli " +#~ "utenti. I ruoli di sistema sono " +#~ "predefiniti e non possono essere " +#~ "eliminati o rinominati, ma è possibile" +#~ " creare ruoli personalizzati per esigenze" +#~ " specifiche." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "Sei sicuro di voler eliminare il ruolo?" + +#~ msgid "Delete Role" +#~ msgstr "Elimina ruolo" + +#~ msgid "No description" +#~ msgstr "Nessuna descrizione" + +#~ msgid "Role Information" +#~ msgstr "Informazioni sul ruolo" + +#~ msgid "System Role" +#~ msgstr "Ruolo del sistema" + +#~ msgid "Custom Role" +#~ msgstr "Ruolo personalizzato" + +#~ msgid "Total Permissions" +#~ msgstr "Autorizzazioni totali" + +#~ msgid "Created" +#~ msgstr "Creato" + +#~ msgid "Users with this Role" +#~ msgstr "Utenti con questo ruolo" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Nessun utente ancora assegnato a questo ruolo." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "A questo ruolo non sono assegnate autorizzazioni." + +#~ msgid "Back to User" +#~ msgstr "Torna all'utente" + +#~ msgid "Manage Roles for" +#~ msgstr "Gestisci ruoli per" + +#~ msgid "Assign Roles" +#~ msgstr "Assegnare ruoli" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Seleziona i ruoli che questo utente " +#~ "dovrebbe avere. Gli utenti ereditano " +#~ "tutte le autorizzazioni dai ruoli " +#~ "assegnati." + +#~ msgid "Update Roles" +#~ msgstr "Aggiorna ruoli" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Autorizzazioni effettive attuali" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "" +#~ "Queste sono tutte le autorizzazioni " +#~ "attualmente di cui dispone l'utente " +#~ "tramite i propri ruoli:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "Nessuna autorizzazione (assegna ruoli per concedere autorizzazioni)" + +#~ msgid "Create Webhook" +#~ msgstr "Crea webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Modifica webhook" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Configura il webhook per le integrazioni" + +#~ msgid "Webhook URL" +#~ msgstr "URL del webhook" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "L'URL a cui verranno inviati gli eventi webhook" + +#~ msgid "Events" +#~ msgstr "Eventi" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Seleziona quali eventi dovrebbero attivare questo webhook" + +#~ msgid "HTTP Method" +#~ msgstr "Metodo HTTP" + +#~ msgid "Content Type" +#~ msgstr "Tipo di contenuto" + +#~ msgid "Max Retries" +#~ msgstr "Numero massimo di tentativi" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Ritardo tentativi (secondi)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Timeout (secondi)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Rigenera il segreto" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "Avviso: la rigenerazione del segreto invaliderà il segreto corrente" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Gestisci le integrazioni webhook" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "Statistics" +#~ msgstr "Statistiche" + +#~ msgid "Total" +#~ msgstr "Totale" + +#~ msgid "No webhooks configured" +#~ msgstr "Nessun webhook configurato" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Crea il tuo primo webhook" + +#~ msgid "Webhook details" +#~ msgstr "Dettagli del webhook" + +#~ msgid "Test" +#~ msgstr "Test" + +#~ msgid "Secret" +#~ msgstr "Segreto" + +#~ msgid "(truncated)" +#~ msgstr "(troncato)" + +#~ msgid "Total Deliveries" +#~ msgstr "Consegne totali" + +#~ msgid "Successful" +#~ msgstr "Riuscito" + +#~ msgid "Last Delivery" +#~ msgstr "Ultima consegna" + +#~ msgid "Recent Deliveries" +#~ msgstr "Consegne recenti" + +#~ msgid "Event" +#~ msgstr "Evento" + +#~ msgid "Attempt" +#~ msgstr "Tentativo" + +#~ msgid "Response" +#~ msgstr "Risposta" + +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Retrying" +#~ msgstr "Nuovo tentativo" + +#~ msgid "No deliveries yet" +#~ msgstr "Nessuna consegna ancora" + +#~ msgid "Send a test webhook event?" +#~ msgstr "Inviare un evento webhook di prova?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "Webhook di prova inviato con successo!" + +#~ msgid "Error:" +#~ msgstr "Errore:" + +#~ msgid "Unknown error" +#~ msgstr "Errore sconosciuto" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Errore durante l'invio del webhook di prova:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Pannello di analisi" + +#~ msgid "Last 7 days" +#~ msgstr "Ultimi 7 giorni" + +#~ msgid "Last 30 days" +#~ msgstr "Ultimi 30 giorni" + +#~ msgid "Last 90 days" +#~ msgstr "Ultimi 90 giorni" + +#~ msgid "Last year" +#~ msgstr "L'anno scorso" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Esporta come JSON" + +#~ msgid "Export Charts" +#~ msgstr "Esporta CSV" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Metriche e approfondimenti chiave sul monitoraggio del tempo" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Ore giornaliere medie" + +#~ msgid "Regular" +#~ msgstr "Ritorno" + +#~ msgid "Overtime" +#~ msgstr "Tempo" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Andamento delle ore giornaliere" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Fatturabile vs non fatturabile" + +#~ msgid "Weekly Trends" +#~ msgstr "Tendenze settimanali" + +#~ msgid "Hours Forecast" +#~ msgstr "ore prima" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Pagamenti nel tempo" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Ore per ora del giorno" + +#~ msgid "Project Efficiency" +#~ msgstr "Efficienza del progetto" + +#~ msgid "User Performance" +#~ msgstr "Prestazioni dell'utente" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "Impossibile caricare i grafici. Per favore riprova." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "Impossibile aggiornare i grafici. Per favore riprova." + +#~ msgid "Hour of Day" +#~ msgstr "Ora del giorno" + +#~ msgid "Revenue" +#~ msgstr "Reddito" + +#~ msgid "Forecast" +#~ msgstr "Reset" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "Esportare" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Metriche chiave e informazioni utili" + +#~ msgid "vs previous period" +#~ msgstr "rispetto al periodo precedente" + +#~ msgid "of total" +#~ msgstr "del totale" + +#~ msgid "Potential Revenue" +#~ msgstr "Entrate potenziali" + +#~ msgid "Avg rate:" +#~ msgstr "Tasso medio:" + +#~ msgid "Trend" +#~ msgstr "Tendenza" + +#~ msgid "active projects" +#~ msgstr "progetti attivi" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Approfondimenti e consigli" + +#~ msgid "Cumulative" +#~ msgstr "Cumulativo" + +#~ msgid "Billable Distribution" +#~ msgstr "Distribuzione fatturabile" + +#~ msgid "Task Status Overview" +#~ msgstr "Panoramica dello stato delle attività" + +#~ msgid "Tasks Completed" +#~ msgstr "Attività completate" + +#~ msgid "In Progress" +#~ msgstr "In corso" + +#~ msgid "To Do" +#~ msgstr "Fare" + +#~ msgid "Revenue by Project" +#~ msgstr "Entrate per progetto" + +#~ msgid "Payments Over Time" +#~ msgstr "Pagamenti nel tempo" + +#~ msgid "Payment Methods" +#~ msgstr "Metodi di pagamento" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Entrate vs pagamenti" + +#~ msgid "Collection Rate" +#~ msgstr "Tasso di raccolta" + +#~ msgid "Project Completion Rate" +#~ msgstr "Tasso di completamento del progetto" + +#~ msgid "Billable" +#~ msgstr "Fatturabile" + +#~ msgid "Non-Billable" +#~ msgstr "Non fatturabile" + +#~ msgid "Completed" +#~ msgstr "Completato" + +#~ msgid "Cancelled" +#~ msgstr "Annullato" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Tasso di completamento (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Panoramica degli approfondimenti sui dispositivi mobili" + +#~ msgid "Daily Avg" +#~ msgstr "Media giornaliera" + +#~ msgid "Daily Hours" +#~ msgstr "Orari giornalieri" + +#~ msgid "Top Projects" +#~ msgstr "I migliori progetti" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "Inserimento dell'ora" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "ore" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "Approvare" + +#~ msgid "Reject" +#~ msgstr "Rifiutare" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "Approvato da" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "Pubblica commento" + +#~ msgid "Approval comment" +#~ msgstr "Pubblica commento" + +#~ msgid "Rejection reason" +#~ msgstr "Motivo del rifiuto" + +#~ msgid "Track who changed what and when" +#~ msgstr "Tieni traccia di chi ha cambiato cosa e quando" + +#~ msgid "Filters" +#~ msgstr "Filtri" + +#~ msgid "Entity Type" +#~ msgstr "Tipo di entità" + +#~ msgid "All Types" +#~ msgstr "Tutti i tipi" + +#~ msgid "Entity ID" +#~ msgstr "Identificativo dell'entità" + +#~ msgid "All Users" +#~ msgstr "Tutti gli utenti" + +#~ msgid "Action" +#~ msgstr "Azione" + +#~ msgid "All Actions" +#~ msgstr "Tutte le azioni" + +#~ msgid "Updated" +#~ msgstr "Aggiornato" + +#~ msgid "Deleted" +#~ msgstr "Eliminato" + +#~ msgid "Time Range" +#~ msgstr "Intervallo di tempo" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Timestamp" +#~ msgstr "Timestamp" + +#~ msgid "Entity" +#~ msgstr "Entità" + +#~ msgid "Field" +#~ msgstr "Campo" + +#~ msgid "Change" +#~ msgstr "Modifica" + +#~ msgid "Reason" +#~ msgstr "Motivo" + +#~ msgid "Change Information" +#~ msgstr "Modifica informazioni" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "Richiedi informazioni" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "Sicurezza" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (autenticazione aziendale)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "La password deve contenere almeno 8 caratteri" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "Password del portale" + +#~ msgid "Reset your password" +#~ msgstr "Imposta la tua password" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "Nessun nome utente o e-mail" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "Invia e-mail di prova" + +#~ msgid "Back to sign in" +#~ msgstr "Torna all'amministrazione" + +#~ msgid "Login" +#~ msgstr "Login" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Tieni traccia del tempo. Rimani organizzato." + +#~ msgid "Sign in to your account" +#~ msgstr "Accedi al tuo account" + +#~ msgid "Demo credentials" +#~ msgstr "Dettagli articolo" + +#~ msgid "Forgot your password?" +#~ msgstr "Imposta la tua password" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "Metodo di autenticazione" + +#~ msgid "Sign in" +#~ msgstr "Registrazione" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "Suggerimento: inserisci un nuovo nome utente per creare il tuo account." + +#~ msgid "Or continue with" +#~ msgstr "Oppure continua con" + +#~ msgid "Single Sign-On" +#~ msgstr "Accesso singolo" + +#~ msgid "Edit Profile" +#~ msgstr "Modifica profilo" + +#~ msgid "Member Since" +#~ msgstr "Membro dal" + +#~ msgid "Reset password" +#~ msgstr "Imposta password" + +#~ msgid "Choose a new password" +#~ msgstr "Imposta password" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Imposta una password per il tuo account del portale clienti" + +#~ msgid "New password" +#~ msgstr "Imposta password" + +#~ msgid "At least 8 characters" +#~ msgstr "La password deve contenere almeno 8 caratteri" + +#~ msgid "Confirm password" +#~ msgstr "Conferma password" + +#~ msgid "Repeat your new password" +#~ msgstr "Imposta la tua password" + +#~ msgid "Update password" +#~ msgstr "Imposta password" + +#~ msgid "Enter authentication code" +#~ msgstr "Metodo di autenticazione" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "Codice" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "L'accesso al portale clienti non è abilitato per il tuo account." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "Disabilitato" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Codice generato" + +#~ msgid "Enable 2FA" +#~ msgstr "Abilitato" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Avvisi e previsioni sul budget" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "Monitorare i budget del progetto e prevederne il completamento" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Avvisi non riconosciuti" + +#~ msgid "Critical Alerts" +#~ msgstr "Avvisi critici" + +#~ msgid "Projects with Budgets" +#~ msgstr "Progetti con budget" + +#~ msgid "Warning Alerts" +#~ msgstr "Avvisi di avviso" + +#~ msgid "Active Alerts" +#~ msgstr "Avvisi attivi" + +#~ msgid "Acknowledge" +#~ msgstr "Riconoscere" + +#~ msgid "Project Budget Status" +#~ msgstr "Stato del budget del progetto" + +#~ msgid "Budget" +#~ msgstr "Bilancio" + +#~ msgid "Consumed" +#~ msgstr "Consumato" + +#~ msgid "Remaining" +#~ msgstr "Rimanente" + +#~ msgid "Progress" +#~ msgstr "Progressi" + +#~ msgid "over" +#~ msgstr "Sopra" + +#~ msgid "Over Budget" +#~ msgstr "Oltre il budget" + +#~ msgid "Critical" +#~ msgstr "Critico" + +#~ msgid "Healthy" +#~ msgstr "Salutare" + +#~ msgid "No projects with budgets found" +#~ msgstr "Nessun progetto con budget trovato" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Avviso confermato con successo" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "Impossibile riconoscere l'avviso" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Analisi e previsioni del budget" + +#~ msgid "Back to Dashboard" +#~ msgstr "Torna alla dashboard" + +#~ msgid "View Project" +#~ msgstr "Visualizza progetto" + +#~ msgid "Total Budget" +#~ msgstr "Bilancio totale" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Analisi della velocità di combustione" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Tasso di combustione giornaliero" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Tasso di combustione settimanale" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Tasso di combustione mensile" + +#~ msgid "Period Total" +#~ msgstr "Totale periodo" + +#~ msgid "Based on last" +#~ msgstr "Basato sull'ultimo" + +#~ msgid "days" +#~ msgstr "giorni" + +#~ msgid "No burn rate data available" +#~ msgstr "Nessun dato disponibile sulla velocità di combustione" + +#~ msgid "Completion Estimate" +#~ msgstr "Stima di completamento" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Data di completamento stimata" + +#~ msgid "days remaining" +#~ msgstr "giorni rimanenti" + +#~ msgid "Confidence Level" +#~ msgstr "Livello di fiducia" + +#~ msgid "No completion estimate available" +#~ msgstr "Nessuna stima di completamento disponibile" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Analisi dell'andamento dei costi" + +#~ msgid "Average" +#~ msgstr "Media" + +#~ msgid "Resource Allocation" +#~ msgstr "Allocazione delle risorse" + +#~ msgid "Total Cost" +#~ msgstr "Costo totale" + +#~ msgid "Hourly Rate" +#~ msgstr "Tariffa oraria" + +#~ msgid "Team Member" +#~ msgstr "Membro della squadra" + +#~ msgid "Cost" +#~ msgstr "Costo" + +#~ msgid "Hours %" +#~ msgstr "Ore %" + +#~ msgid "Cost %" +#~ msgstr "Costo %" + +#~ msgid "Entries" +#~ msgstr "Voci" + +#~ msgid "Date & Time" +#~ msgstr "Data e ora" + +#~ msgid "Location" +#~ msgstr "Posizione" + +#~ msgid "Reminder" +#~ msgstr "Promemoria" + +#~ msgid "minutes before" +#~ msgstr "minuti prima" + +#~ msgid "hours before" +#~ msgstr "ore prima" + +#~ msgid "days before" +#~ msgstr "giorni prima" + +#~ msgid "Recurring" +#~ msgstr "Ricorrente" + +#~ msgid "Until" +#~ msgstr "Fino a" + +#~ msgid "Last Updated" +#~ msgstr "Ultimo aggiornamento" + +#~ msgid "Back to Calendar" +#~ msgstr "Torna al Calendario" + +#~ msgid "Delete Event" +#~ msgstr "Elimina evento" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Sei sicuro di voler eliminare questo " +#~ "evento? Questa azione non può essere " +#~ "annullata." + +#~ msgid "Edit Event" +#~ msgstr "Modifica evento" + +#~ msgid "New Event" +#~ msgstr "Nuovo evento" + +#~ msgid "Title" +#~ msgstr "Titolo" + +#~ msgid "Start Date" +#~ msgstr "Data di inizio" + +#~ msgid "Start Time" +#~ msgstr "Ora di inizio" + +#~ msgid "End Date" +#~ msgstr "Data di fine" + +#~ msgid "End Time" +#~ msgstr "Ora di fine" + +#~ msgid "All Day Event" +#~ msgstr "Evento per tutta la giornata" + +#~ msgid "Event Type" +#~ msgstr "Tipo di evento" + +#~ msgid "Meeting" +#~ msgstr "Incontro" + +#~ msgid "Appointment" +#~ msgstr "Appuntamento" + +#~ msgid "Deadline" +#~ msgstr "Scadenza" + +#~ msgid "-- None --" +#~ msgstr "-- Nessuno --" + +#~ msgid "No reminder" +#~ msgstr "Nessun promemoria" + +#~ msgid "5 minutes before" +#~ msgstr "5 minuti prima" + +#~ msgid "15 minutes before" +#~ msgstr "15 minuti prima" + +#~ msgid "30 minutes before" +#~ msgstr "30 minuti prima" + +#~ msgid "1 hour before" +#~ msgstr "1 ora prima" + +#~ msgid "1 day before" +#~ msgstr "1 giorno prima" + +#~ msgid "Color" +#~ msgstr "Colore" + +#~ msgid "Choose a color for this event" +#~ msgstr "Scegli un colore per questo evento" + +#~ msgid "Private Event" +#~ msgstr "Evento privato" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Gli eventi privati ​​sono visibili solo a te" + +#~ msgid "Recurring Event" +#~ msgstr "Evento ricorrente" + +#~ msgid "This is a recurring event" +#~ msgstr "Questo è un evento ricorrente" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Modello di ricorrenza" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Utilizza il formato RRULE (ad esempio, FREQ=SETTIMANALE;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Data di fine della ricorrenza" + +#~ msgid "Update Event" +#~ msgstr "Aggiorna evento" + +#~ msgid "Create Event" +#~ msgstr "Crea evento" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Visualizza e gestisci eventi, attività e voci di orario" + +#~ msgid "Day" +#~ msgstr "Giorno" + +#~ msgid "Week" +#~ msgstr "Settimana" + +#~ msgid "Month" +#~ msgstr "Mese" + +#~ msgid "Today" +#~ msgstr "Oggi" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "Caricamento calendario..." + +#~ msgid "Event Details" +#~ msgstr "Dettagli dell'evento" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "Modifica nota cliente" + +#~ msgid "Back to Client" +#~ msgstr "Torniamo al cliente" + +#~ msgid "Client:" +#~ msgstr "Cliente:" + +#~ msgid "Created on" +#~ msgstr "Creato il" + +#~ msgid "Last edited on" +#~ msgstr "Ultima modifica il" + +#~ msgid "Note Content" +#~ msgstr "Nota contenuto" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Nota interna visibile solo al tuo team." + +#~ msgid "Mark as important" +#~ msgstr "Segna come importante" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "Portale clienti" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "Visualizza dettagli" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "In attesa di" + +#~ msgid "Approved" +#~ msgstr "Approvato" + +#~ msgid "Rejected" +#~ msgstr "Respinto" + +#~ msgid "All" +#~ msgstr "Tutto" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "Visualizza dettagli" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "Stato di approvazione" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Approvazione richiesta" + +#~ msgid "An approval was updated." +#~ msgstr "Nessun progetto è stato aggiornato" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "Benvenuto, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "Personalizza le scorciatoie" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "Statistiche" + +#~ msgid "Pending actions" +#~ msgstr "Sezioni amministrative" + +#~ msgid "Recent invoices" +#~ msgstr "Fatture recenti" + +#~ msgid "Recent time entries" +#~ msgstr "Voci temporali recenti" + +#~ msgid "Select at least one widget." +#~ msgstr "Seleziona un cliente..." + +#~ msgid "Failed to save." +#~ msgstr "Impossibile arrestare il timer" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "Vai alla dashboard" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "Torna indietro" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "Dettagli della fattura" + +#~ msgid "Issue Date" +#~ msgstr "Data di emissione" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "Questa fattura è scaduta di %(days)d giorni." + +#~ msgid "Invoice Items" +#~ msgstr "Elementi della fattura" + +#~ msgid "Quantity" +#~ msgstr "Quantità" + +#~ msgid "Unit Price" +#~ msgstr "Prezzo unitario" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "Torniamo alle fatture" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "Fatture per %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "Non pagato" + +#~ msgid "Overdue" +#~ msgstr "In ritardo" + +#~ msgid "Amount" +#~ msgstr "Quantità" + +#~ msgid "days overdue" +#~ msgstr "giorni di ritardo" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "Priorità" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "Assegnato a" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "Aprire" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "Accesso al portale clienti" + +#~ msgid "View your projects and invoices" +#~ msgstr "Visualizza i tuoi progetti e fatture" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Accedi al Portale Clienti" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "Inserisci le credenziali del tuo portale" +#~ " per accedere ai tuoi progetti e " +#~ "fatture" + +#~ msgid "portal_username" +#~ msgstr "nome_utente_portale" + +#~ msgid "Enter your password" +#~ msgstr "Inserisci la tua password" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "Basso" + +#~ msgid "Medium" +#~ msgstr "Medio" + +#~ msgid "High" +#~ msgstr "Alto" + +#~ msgid "Urgent" +#~ msgstr "Urgente" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "Commenti" + +#~ msgid "Add Comment" +#~ msgstr "Aggiungi commento" + +#~ msgid "Your Comment" +#~ msgstr "Il tuo commento" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "Pubblica commento" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "Torna a Progetti" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "Progetti per %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "Dettagli preventivo" + +#~ msgid "Valid Until" +#~ msgstr "Valido fino al" + +#~ msgid "This quote has expired." +#~ msgstr "Questo preventivo è scaduto." + +#~ msgid "Quote Items" +#~ msgstr "Elementi di preventivo" + +#~ msgid "SKU" +#~ msgstr "SKU" + +#~ msgid "Terms & Conditions" +#~ msgstr "Termini e condizioni" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "Accetta preventivo" + +#~ msgid "Reject Quote" +#~ msgstr "Rifiuta citazione" + +#~ msgid "Back to Quotes" +#~ msgstr "Torniamo alle citazioni" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "Preventivi per %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "Scaduto" + +#~ msgid "No quotes found." +#~ msgstr "Nessuna quotazione trovata." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "Codice del progetto" + +#~ msgid "Est. / Budget" +#~ msgstr "Oltre il budget" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "Riepilogo" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "Importo totale" + +#~ msgid "No tasks yet." +#~ msgstr "Nessuna attività selezionata" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Nessuna attività negli ultimi 30 giorni." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "Imposta password" + +#~ msgid "Set your password to get started" +#~ msgstr "Imposta la tua password per iniziare" + +#~ msgid "Set Your Password" +#~ msgstr "Imposta la tua password" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Imposta una password per il tuo account del portale clienti" + +#~ msgid "Confirm Password" +#~ msgstr "Conferma password" + +#~ msgid "Confirm your password" +#~ msgstr "Conferma la tua password" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "Voci temporali per i progetti %(client_name)s" + +#~ msgid "All Projects" +#~ msgstr "Tutti i progetti" + +#~ msgid "From Date" +#~ msgstr "Dalla data" + +#~ msgid "To Date" +#~ msgstr "Ad oggi" + +#~ msgid "Total entries" +#~ msgstr "Voci totali" + +#~ msgid "Total hours" +#~ msgstr "Ore totali" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "Fatture recenti" + +#~ msgid "View All" +#~ msgstr "Visualizza tutto" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "Fatture totali" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "Voci temporali recenti" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "Esporta in CSV" + +#~ msgid "Create Client" +#~ msgstr "Crea cliente" + +#~ msgid "Back to Clients" +#~ msgstr "Torniamo ai Clienti" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" +#~ "Aggiungi un nuovo cliente per gestire" +#~ " i progetti correlati e la " +#~ "fatturazione." + +#~ msgid "Enter client name" +#~ msgstr "Inserisci il nome del cliente" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Tariffa oraria predefinita" + +#~ msgid "e.g. 75.00" +#~ msgstr "per esempio. 75,00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Questa tariffa verrà compilata automaticamente" +#~ " durante la creazione di progetti per" +#~ " questo cliente" + +#~ msgid "Supports Markdown" +#~ msgstr "Supporta il ribasso" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Breve descrizione del cliente o dell'ambito del progetto" + +#~ msgid "Contact Person" +#~ msgstr "Referente" + +#~ msgid "Primary contact name" +#~ msgstr "Nome del contatto principale" + +#~ msgid "contact@client.com" +#~ msgstr "contatto@cliente.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Ore mensili prepagate" + +#~ msgid "e.g. 50" +#~ msgstr "per esempio. 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "Lascia vuoto se questo cliente non ha allocazione prepagata." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Giorno di ripristino prepagato" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Giorno del mese in cui vengono ripristinate le ore prepagate (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Indirizzo del cliente" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "Scegli un nome chiaro e descrittivo per l'organizzazione cliente." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Imposta la tariffa oraria standard per" +#~ " questo cliente. Questo verrà popolato " +#~ "automaticamente durante la creazione di " +#~ "nuovi progetti." + +#~ msgid "Contact Information" +#~ msgstr "Informazioni sui contatti" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "" +#~ "Aggiungi i dettagli di contatto per " +#~ "facilitare la comunicazione e la tenuta" +#~ " dei registri." + +#~ msgid "Prepaid Hours" +#~ msgstr "Ore prepagate" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Configura le ore mensili incluse e " +#~ "il giorno di reimpostazione se questo" +#~ " cliente ha un acconto o un " +#~ "pacchetto prepagato." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "" +#~ "Fornire il contesto sulla relazione con" +#~ " il cliente o sui tipi di " +#~ "progetto tipici." + +#~ msgid "Edit Client" +#~ msgstr "Modifica cliente" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Abilita l'accesso al portale per questo" +#~ " cliente. I clienti possono accedere " +#~ "con le proprie credenziali per " +#~ "visualizzare progetti, fatture e registrazioni" +#~ " orarie." + +#~ msgid "Enable Client Portal" +#~ msgstr "Abilita il portale clienti" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "Nome utente del portale" + +#~ msgid "Unique username for portal login" +#~ msgstr "Nome utente univoco per l'accesso al portale" + +#~ msgid "Portal Password" +#~ msgstr "Password del portale" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "Lascia vuoto per mantenere la password corrente" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "Imposta una nuova password o lascia vuoto per rimanere aggiornato" + +#~ msgid "Current portal username" +#~ msgstr "Nome utente corrente del portale" + +#~ msgid "Update Client" +#~ msgstr "Aggiorna cliente" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Invia e-mail di configurazione della password" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Invia un'e-mail a %(email)s con un " +#~ "collegamento per impostare la password " +#~ "del portale." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "L'indirizzo e-mail è necessario per " +#~ "inviare l'e-mail di configurazione della " +#~ "password. Imposta l'indirizzo email del " +#~ "cliente sopra." + +#~ msgid "Client Statistics" +#~ msgstr "Statistiche del cliente" + +#~ msgid "Est. Total Cost" +#~ msgstr "Est. Costo totale" + +#~ msgid "Filter Clients" +#~ msgstr "Filtra clienti" + +#~ msgid "Toggle Filters" +#~ msgstr "Attiva/disattiva i filtri" + +#~ msgid "Hide Filters" +#~ msgstr "Nascondi filtri" + +#~ msgid "Show Filters" +#~ msgstr "Mostra filtri" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "Nessuna voce di tempo non fatturata trovata per questo progetto." + +#~ msgid "No unbilled time" +#~ msgstr "Voci di tempo non fatturate" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Elementi della fattura" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "Contrassegnare il cliente come inattivo?" + +#~ msgid "Change Client Status" +#~ msgstr "Modifica lo stato del cliente" + +#~ msgid "Mark Inactive" +#~ msgstr "Segna come inattivo" + +#~ msgid "Activate client?" +#~ msgstr "Attivare il cliente?" + +#~ msgid "Activate Client" +#~ msgstr "Attiva cliente" + +#~ msgid "Delete Client" +#~ msgstr "Elimina cliente" + +#~ msgid "Client details and associated projects." +#~ msgstr "Progetti totali e attivi" + +#~ msgid "Manage" +#~ msgstr "Maneggio" + +#~ msgid "Primary" +#~ msgstr "Primario" + +#~ msgid "more contact(s)" +#~ msgstr "più contatti" + +#~ msgid "No contacts yet" +#~ msgstr "Nessun contatto ancora" + +#~ msgid "Add Contact" +#~ msgstr "Aggiungi contatto" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Informazioni di contatto precedenti" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "Il piano include %(hours)s ore per " +#~ "ciclo. Si reimposta il giorno %(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "Inizio del ciclo corrente" + +#~ msgid "Remaining hours" +#~ msgstr "Ore rimanenti" + +#~ msgid "h" +#~ msgstr "H" + +#~ msgid "Consumed this cycle" +#~ msgstr "Consumato questo ciclo" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "Cliente visibile" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "Archiviato" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "Note interne" + +#~ msgid "Add Note" +#~ msgstr "Aggiungi nota" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Aggiungi una nota interna su questo cliente..." + +#~ msgid "Save Note" +#~ msgstr "Salva nota" + +#~ msgid "edited" +#~ msgstr "modificato" + +#~ msgid "Important" +#~ msgstr "Importante" + +#~ msgid "Unmark" +#~ msgstr "Deseleziona" + +#~ msgid "Mark Important" +#~ msgstr "Segna Importante" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Nessuna nota ancora. Aggiungi una nota" +#~ " per tenere traccia delle informazioni " +#~ "importanti su questo cliente." + +#~ msgid "Estimated total" +#~ msgstr "Valore stimato" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Crea fattura" + +#~ msgid "Create invoice" +#~ msgstr "Crea fattura" + +#~ msgid "Could not create invoice." +#~ msgstr "Crea fattura" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "Sei sicuro di voler eliminare questa nota?" + +#~ msgid "Delete Note" +#~ msgstr "Elimina nota" + +#~ msgid "Edited on" +#~ msgstr "Modificato il" + +#~ msgid "Reply" +#~ msgstr "Rispondere" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "Scrivi la tua risposta..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Condividi i tuoi pensieri, aggiornamenti o domande..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "Puoi utilizzare le interruzioni di riga per formattare il tuo commento." + +#~ msgid "Add Image" +#~ msgstr "Aggiungi immagine" + +#~ msgid "No comments yet" +#~ msgstr "Nessun commento ancora" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "Inizia la conversazione aggiungendo il primo commento." + +#~ msgid "Add First Comment" +#~ msgstr "Aggiungi il primo commento" + +#~ msgid "Edit Comment" +#~ msgstr "Modifica commento" + +#~ msgid "Back" +#~ msgstr "Indietro" + +#~ msgid "Editing comment on:" +#~ msgstr "Modifica del commento su:" + +#~ msgid "Originally posted on" +#~ msgstr "Originariamente pubblicato su" + +#~ msgid "Comment Content" +#~ msgstr "Contenuto del commento" + +#~ msgid "All Activities" +#~ msgstr "Tutte le attività" + +#~ msgid "Time Templates" +#~ msgstr "Modelli temporali" + +#~ msgid "No recent activity" +#~ msgstr "Nessuna attività recente" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "L'attività verrà visualizzata qui mentre lavori" + +#~ msgid "Load More" +#~ msgstr "Carica altro" + +#~ msgid "Failed to load activities" +#~ msgstr "Impossibile caricare le attività" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "Seleziona un cliente..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "Fatto" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "Centro assistenza di TimeTracker" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "Casa" + +#~ msgid "Pagination" +#~ msgstr "L'impaginazione dei miei compiti" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "Chiamata" + +#~ msgid "Message" +#~ msgstr "Messaggio" + +#~ msgid "Direction" +#~ msgstr "Direzione" + +#~ msgid "Outbound" +#~ msgstr "In uscita" + +#~ msgid "Inbound" +#~ msgstr "In entrata" + +#~ msgid "Subject" +#~ msgstr "Soggetto" + +#~ msgid "Scheduled" +#~ msgstr "Programmato" + +#~ msgid "Follow-up Date" +#~ msgstr "Data di follow-up" + +#~ msgid "Content/Notes" +#~ msgstr "Contenuto/Note" + +#~ msgid "Save Communication" +#~ msgstr "Salva comunicazione" + +#~ msgid "First Name" +#~ msgstr "Nome di battesimo" + +#~ msgid "Last Name" +#~ msgstr "Cognome" + +#~ msgid "Mobile" +#~ msgstr "Mobile" + +#~ msgid "Department" +#~ msgstr "Dipartimento" + +#~ msgid "Contact" +#~ msgstr "Contatto" + +#~ msgid "Billing" +#~ msgstr "Fatturazione" + +#~ msgid "Technical" +#~ msgstr "Tecnico" + +#~ msgid "Set as primary contact" +#~ msgstr "Imposta come contatto principale" + +#~ msgid "Tags" +#~ msgstr "Tag" + +#~ msgid "Save Contact" +#~ msgstr "Salva contatto" + +#~ msgid "Set Primary" +#~ msgstr "Imposta primario" + +#~ msgid "No contacts found" +#~ msgstr "Nessun contatto trovato" + +#~ msgid "Add First Contact" +#~ msgstr "Aggiungi il primo contatto" + +#~ msgid "Primary Contact" +#~ msgstr "Contatto principale" + +#~ msgid "Communication History" +#~ msgstr "Storia della comunicazione" + +#~ msgid "Add Communication" +#~ msgstr "Aggiungi comunicazione" + +#~ msgid "No communications recorded" +#~ msgstr "Nessuna comunicazione registrata" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "Attivare" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "Nome dell'affare" + +#~ msgid "Select Client" +#~ msgstr "Seleziona Cliente" + +#~ msgid "Select Contact" +#~ msgstr "Seleziona Contatto" + +#~ msgid "Stage" +#~ msgstr "Palcoscenico" + +#~ msgid "Deal Value" +#~ msgstr "Valore dell'affare" + +#~ msgid "Win Probability" +#~ msgstr "Vinci la probabilità" + +#~ msgid "Expected Close Date" +#~ msgstr "Data di chiusura prevista" + +#~ msgid "Related Quote" +#~ msgstr "Citazione correlata" + +#~ msgid "Select Quote" +#~ msgstr "Seleziona Preventivo" + +#~ msgid "Save Deal" +#~ msgstr "Salva affare" + +#~ msgid "Won" +#~ msgstr "Vinto" + +#~ msgid "Lost" +#~ msgstr "Perduto" + +#~ msgid "All Stages" +#~ msgstr "Tutte le fasi" + +#~ msgid "Value" +#~ msgstr "Valore" + +#~ msgid "Probability" +#~ msgstr "Probabilità" + +#~ msgid "Expected Close" +#~ msgstr "Chiusura prevista" + +#~ msgid "No deals found" +#~ msgstr "Nessuna offerta trovata" + +#~ msgid "Create First Deal" +#~ msgstr "Crea il primo affare" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "Progetto correlato" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "Storia degli obiettivi" + +#~ msgid "View full history" +#~ msgstr "Visualizza i dettagli completi" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "Sei stato menzionato" + +#~ msgid "View Task & Reply" +#~ msgstr "Visualizza attività e risposta" + +#~ msgid "Invoice" +#~ msgstr "Fattura" + +#~ msgid "Invoice Overdue" +#~ msgstr "Fattura scaduta" + +#~ msgid "View Invoice" +#~ msgstr "Visualizza fattura" + +#~ msgid "Quote" +#~ msgstr "Citazione" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Approvazione preventivo rifiutata" + +#~ msgid "View Quote" +#~ msgstr "Visualizza preventivo" + +#~ msgid "Approval Requested" +#~ msgstr "Approvazione richiesta" + +#~ msgid "Review Quote" +#~ msgstr "Rivedi preventivo" + +#~ msgid "Quote Approved" +#~ msgstr "Preventivo approvato" + +#~ msgid "Quote Expired" +#~ msgstr "Preventivo scaduto" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "Preventivo in scadenza" + +#~ msgid "Quote Sent" +#~ msgstr "Preventivo inviato" + +#~ msgid "Task Assignment" +#~ msgstr "Assegnazione dei compiti" + +#~ msgid "View Task" +#~ msgstr "Visualizza attività" + +#~ msgid "Test Details" +#~ msgstr "Dettagli della prova" + +#~ msgid "Your Weekly Summary" +#~ msgstr "Il tuo riepilogo settimanale" + +#~ msgid "400 Bad Request" +#~ msgstr "400 Richiesta errata" + +#~ msgid "Invalid Request" +#~ msgstr "Richiesta non valida" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "La richiesta effettuata non è valida " +#~ "o contiene errori. Ciò potrebbe essere" +#~ " dovuto a:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Dati del modulo mancanti o non validi" + +#~ msgid "Malformed request parameters" +#~ msgstr "Parametri della richiesta non validi" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "" +#~ "Non hai l'autorizzazione per accedere a" +#~ " questa risorsa. Ciò potrebbe essere " +#~ "dovuto a:" + +#~ msgid "Insufficient privileges" +#~ msgstr "Privilegi insufficienti" + +#~ msgid "Not logged in" +#~ msgstr "Non effettuato l'accesso" + +#~ msgid "Resource access restrictions" +#~ msgstr "Restrizioni di accesso alle risorse" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "Qualcosa è andato storto da parte nostra. Per favore riprova più tardi." + +#~ msgid "Try Again" +#~ msgstr "Riprova" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Si è verificato un errore durante l'elaborazione della tua richiesta." + +#~ msgid "Refresh Page" +#~ msgstr "Aggiorna pagina" + +#~ msgid "Go to Login" +#~ msgstr "Vai su Accedi" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "ad esempio viaggi, pasti, forniture per ufficio" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "ad esempio VIAGGI, PASTI" + +#~ msgid "Brief description of this category..." +#~ msgstr "Breve descrizione di questa categoria..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "ad esempio, fa-plane, fa-utensili" + +#~ msgid "e.g., 19.00" +#~ msgstr "ad esempio, 19:00" + +#~ msgid "Category" +#~ msgstr "Categoria" + +#~ msgid "Basic Information" +#~ msgstr "Informazioni di base" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "ad esempio, Volo per Berlino" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Ulteriori dettagli sulla spesa..." + +#~ msgid "Select Category" +#~ msgstr "Categoria" + +#~ msgid "Amount Details" +#~ msgstr "Dettagli di pagamento" + +#~ msgid "Association" +#~ msgstr "Posizione" + +#~ msgid "Payment Details" +#~ msgstr "Dettagli di pagamento" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "ad esempio Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "Informazioni aggiuntive" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Numero di ricevuta/fattura" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "ad esempio, INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "ad esempio conferenza, riunione con un cliente, urgente" + +#~ msgid "Additional notes..." +#~ msgstr "Note aggiuntive..." + +#~ msgid "Options" +#~ msgstr "Opzionale" + +#~ msgid "Filter Expenses" +#~ msgstr "Filtra le spese" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Elimina le spese selezionate" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Modifica stato per le spese selezionate" + +#~ msgid "Associated With" +#~ msgstr "Associato a" + +#~ msgid "Reject Expense" +#~ msgstr "Rifiutare la spesa" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Spiegare perché questa spesa viene rifiutata..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "Sei sicuro di voler eliminare questa spesa?" + +#~ msgid "Delete Expense" +#~ msgstr "Elimina spesa" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "Importa/Esporta dati" + +#~ msgid "Import/Export" +#~ msgstr "Importa/Esporta" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Importa dati da altri time tracker " +#~ "o esporta i tuoi dati per la " +#~ "conformità GDPR e i backup" + +#~ msgid "Import Data" +#~ msgstr "Importa dati" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Importa voci di orario da un file CSV" + +#~ msgid "Choose CSV File" +#~ msgstr "Scegli File CSV" + +#~ msgid "Download Template" +#~ msgstr "Scarica modello" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Importa da traccia Toggl" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Importa voci di tempo da Toggl Track" + +#~ msgid "Import from Toggl" +#~ msgstr "Importa da Toggl" + +#~ msgid "Import from Harvest" +#~ msgstr "Importazione dalla raccolta" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Importa voci di tempo da Harvest" + +#~ msgid "Restore from Backup" +#~ msgstr "Ripristina dal backup" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "Importa cronologia" + +#~ msgid "Export Data" +#~ msgstr "Esporta dati" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Esportazione completa dei dati (GDPR)" + +#~ msgid "Export all your personal data" +#~ msgstr "Esporta tutti i tuoi dati personali" + +#~ msgid "Export as JSON" +#~ msgstr "Esporta come JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "Esporta come ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "Esportazione filtrata" + +#~ msgid "Export specific data with filters" +#~ msgstr "Esporta dati specifici con filtri" + +#~ msgid "Export with Filters" +#~ msgstr "Esporta con filtri" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "Crea un backup completo del database" + +#~ msgid "Export History" +#~ msgstr "Esporta cronologia" + +#~ msgid "API Token" +#~ msgstr "Token API" + +#~ msgid "Workspace ID" +#~ msgstr "ID dell'area di lavoro" + +#~ msgid "Import" +#~ msgstr "Importare" + +#~ msgid "Account ID" +#~ msgstr "ID conto" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "Integrazione temporale" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "L'anno scorso" + +#~ msgid "Last status" +#~ msgstr "Aggiorna stato" + +#~ msgid "Credentials" +#~ msgstr "Dettagli" + +#~ msgid "Last error" +#~ msgstr "L'anno scorso" + +#~ msgid "Partial" +#~ msgstr "Parziale" + +#~ msgid "Needs refresh" +#~ msgstr "Aggiorna" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "Crea token API" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "Crea token API" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "Lascia vuoto per rimanere aggiornato" + +#~ msgid "Enter API secret" +#~ msgstr "Rigenera il segreto" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "Articolo in stock" + +#~ msgid "Select Item" +#~ msgstr "Seleziona elemento" + +#~ msgid "Warehouse" +#~ msgstr "Magazzino" + +#~ msgid "Select Warehouse" +#~ msgstr "Seleziona Magazzino" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Quantità di regolazione" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Utilizzare valori positivi per aumentare " +#~ "lo stock, valori negativi per diminuirlo" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "ad esempio, Correzione del conteggio fisico, Danni, Oggetti trovati" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Ulteriori dettagli su questa regolazione" + +#~ msgid "Record Adjustment" +#~ msgstr "Regolazione della registrazione" + +#~ msgid "All Warehouses" +#~ msgstr "Tutti i magazzini" + +#~ msgid "All Items" +#~ msgstr "Tutti gli articoli" + +#~ msgid "Date From" +#~ msgstr "Data da" + +#~ msgid "Date To" +#~ msgstr "Data a" + +#~ msgid "Item" +#~ msgstr "Articolo" + +#~ msgid "No adjustments found." +#~ msgstr "Nessuna modifica trovata." + +#~ msgid "On Hand" +#~ msgstr "A portata di mano" + +#~ msgid "Reorder Point" +#~ msgstr "Punto di riordino" + +#~ msgid "Shortfall" +#~ msgstr "Carenza" + +#~ msgid "Reorder Qty" +#~ msgstr "Riordina quantità" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "" +#~ "Nessun avviso di stock in esaurimento." +#~ " Tutti gli articoli sono al di " +#~ "sopra del punto di riordino." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "Utilizzare valori positivi per le aggiunte, negativi per le rimozioni" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "Tipo di movimento" + +#~ msgid "Return" +#~ msgstr "Ritorno" + +#~ msgid "Waste" +#~ msgstr "Sciupare" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "ad esempio, correzione del conteggio fisico" + +#~ msgid "Record Movement" +#~ msgstr "Registra il movimento" + +#~ msgid "Reference Type" +#~ msgstr "Tipo di riferimento" + +#~ msgid "Manual" +#~ msgstr "Manuale" + +#~ msgid "Unit Cost" +#~ msgstr "Costo unitario" + +#~ msgid "Reference" +#~ msgstr "Riferimento" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "Nessun movimento di borsa trovato." + +#~ msgid "Supplier" +#~ msgstr "Fornitore" + +#~ msgid "Select Supplier" +#~ msgstr "Seleziona fornitore" + +#~ msgid "Order Date" +#~ msgstr "Data dell'ordine" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Data di consegna prevista" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Note visibili al fornitore" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Note interne (non visibili al fornitore)" + +#~ msgid "Items" +#~ msgstr "Elementi" + +#~ msgid "Add Item" +#~ msgstr "Aggiungi articolo" + +#~ msgid "Qty" +#~ msgstr "Qtà" + +#~ msgid "Supplier SKU" +#~ msgstr "SKU del fornitore" + +#~ msgid "Create Purchase Order" +#~ msgstr "Crea ordine d'acquisto" + +#~ msgid "Draft" +#~ msgstr "Bozza" + +#~ msgid "Sent" +#~ msgstr "Inviato" + +#~ msgid "Confirmed" +#~ msgstr "Confermato" + +#~ msgid "Received" +#~ msgstr "Ricevuto" + +#~ msgid "All Suppliers" +#~ msgstr "Tutti i fornitori" + +#~ msgid "PO Number" +#~ msgstr "Numero dell'ordine d'acquisto" + +#~ msgid "Expected Delivery" +#~ msgstr "Consegna prevista" + +#~ msgid "No purchase orders found." +#~ msgstr "Nessun ordine di acquisto trovato." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "Sei sicuro di voler annullare questo ordine di acquisto?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "Sei sicuro di voler eliminare questo ordine d'acquisto?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Dettagli dell'ordine di acquisto" + +#~ msgid "Received Date" +#~ msgstr "Data di ricezione" + +#~ msgid "Quantity Ordered" +#~ msgstr "Quantità ordinata" + +#~ msgid "Quantity Received" +#~ msgstr "Quantità ricevuta" + +#~ msgid "Line Total" +#~ msgstr "Totale riga" + +#~ msgid "Shipping" +#~ msgstr "Spedizione" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Ricevi l'ordine di acquisto" + +#~ msgid "Mark as Received" +#~ msgstr "Contrassegna come ricevuto" + +#~ msgid "No items in this purchase order." +#~ msgstr "Nessun articolo in questo ordine di acquisto." + +#~ msgid "Total Items" +#~ msgstr "Articoli totali" + +#~ msgid "Total Warehouses" +#~ msgstr "Magazzini totali" + +#~ msgid "Total Inventory Value" +#~ msgstr "Valore totale dell'inventario" + +#~ msgid "Low Stock Items" +#~ msgstr "Articoli a stock basso" + +#~ msgid "Available Reports" +#~ msgstr "Rapporti disponibili" + +#~ msgid "Stock Valuation" +#~ msgstr "Valutazione delle azioni" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Visualizza il valore dell'inventario per magazzino" + +#~ msgid "Movement History" +#~ msgstr "Storia del movimento" + +#~ msgid "Detailed movement log" +#~ msgstr "Registro dettagliato dei movimenti" + +#~ msgid "Turnover Analysis" +#~ msgstr "Analisi del fatturato" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Tassi di rotazione delle scorte" + +#~ msgid "Low Stock Report" +#~ msgstr "Rapporto sulle scorte basse" + +#~ msgid "Items below reorder point" +#~ msgstr "Articoli sotto il punto di riordino" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "Trovati %(count)s articoli sotto il punto di riordino." + +#~ msgid "Quantity On Hand" +#~ msgstr "Quantità a portata di mano" + +#~ msgid "Reorder Quantity" +#~ msgstr "Riordina quantità" + +#~ msgid "Create PO" +#~ msgstr "Crea ordine d'acquisto" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Tutti i livelli delle scorte sono buoni" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Nessun articolo è attualmente al di sotto del punto di riordino." + +#~ msgid "No movements found." +#~ msgstr "Nessun movimento trovato." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "Il tasso di turnover indica quante " +#~ "volte l'inventario viene venduto e " +#~ "sostituito in un anno. Tassi più " +#~ "alti indicano articoli che si muovono" +#~ " più velocemente." + +#~ msgid "Total Sold" +#~ msgstr "Totale venduto" + +#~ msgid "Avg Stock Level" +#~ msgstr "Livello medio delle scorte" + +#~ msgid "Turnover Rate" +#~ msgstr "Tasso di fatturato" + +#~ msgid "Fast Moving" +#~ msgstr "Movimento veloce" + +#~ msgid "Normal" +#~ msgstr "Normale" + +#~ msgid "Slow Moving" +#~ msgstr "Movimento lento" + +#~ msgid "Very Slow" +#~ msgstr "Molto lento" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "Nessun dato di vendita trovato per il periodo selezionato." + +#~ msgid "Inventory Valuation" +#~ msgstr "Valutazione dell'inventario" + +#~ msgid "Total Value" +#~ msgstr "Valore totale" + +#~ msgid "No items found with cost information." +#~ msgstr "Nessun articolo trovato con informazioni sui costi." + +#~ msgid "Reserved" +#~ msgstr "Prenotato" + +#~ msgid "Fulfilled" +#~ msgstr "Soddisfatto" + +#~ msgid "Reserved At" +#~ msgstr "Riservato a" + +#~ msgid "Expires At" +#~ msgstr "Scade alle" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "Soddisfare questa prenotazione?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "Cancellare questa prenotazione?" + +#~ msgid "No reservations found." +#~ msgstr "Nessuna prenotazione trovata." + +#~ msgid "Unit" +#~ msgstr "Unità" + +#~ msgid "Default Cost" +#~ msgstr "Costo predefinito" + +#~ msgid "Default Price" +#~ msgstr "Prezzo predefinito" + +#~ msgid "Image URL" +#~ msgstr "URL dell'immagine" + +#~ msgid "Track Inventory" +#~ msgstr "Tieni traccia dell'inventario" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "Gestisci più fornitori per questo articolo con prezzi diversi." + +#~ msgid "MOQ" +#~ msgstr "MOQ" + +#~ msgid "Lead Time (days)" +#~ msgstr "Tempi di consegna (giorni)" + +#~ msgid "Preferred" +#~ msgstr "Preferito" + +#~ msgid "Add Supplier" +#~ msgstr "Aggiungi fornitore" + +#~ msgid "No movement history found for this item." +#~ msgstr "Nessuna cronologia dei movimenti trovata per questo articolo." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU, nome, codice a barre..." + +#~ msgid "Active Only" +#~ msgstr "Solo attivo" + +#~ msgid "Total Qty" +#~ msgstr "Qtà totale" + +#~ msgid "Available" +#~ msgstr "Disponibile" + +#~ msgid "Low Stock" +#~ msgstr "Scorte basse" + +#~ msgid "No stock items found." +#~ msgstr "Nessun articolo in stock trovato." + +#~ msgid "Item Details" +#~ msgstr "Dettagli articolo" + +#~ msgid "Trackable" +#~ msgstr "Tracciabile" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Livelli delle scorte per magazzino" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Movimenti azionari recenti" + +#~ msgid "Total On Hand" +#~ msgstr "Totale a portata di mano" + +#~ msgid "Total Reserved" +#~ msgstr "Totale riservato" + +#~ msgid "Total Available" +#~ msgstr "Totale disponibile" + +#~ msgid "Low Stock Alert" +#~ msgstr "Avviso di scorte in esaurimento" + +#~ msgid "This item is not trackable." +#~ msgstr "Questo articolo non è tracciabile." + +#~ msgid "Active Reservations" +#~ msgstr "Prenotazioni attive" + +#~ msgid "Quantity Reserved" +#~ msgstr "Quantità riservata" + +#~ msgid "Last Counted" +#~ msgstr "Ultimo contato" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "Nessuno stock trovato per questo articolo in nessun magazzino." + +#~ msgid "No stock levels found." +#~ msgstr "Nessun livello di scorte trovato." + +#~ msgid "Low Stock Only" +#~ msgstr "Solo scorte basse" + +#~ msgid "Oversold" +#~ msgstr "Ipervenduto" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "Nessun articolo in stock trovato in questo magazzino." + +#~ msgid "Supplier Code" +#~ msgstr "Codice Fornitore" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Codice univoco per questo fornitore (ad esempio, SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Termini di pagamento" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "ad esempio, Netto 30, Netto 60" + +#~ msgid "Code, name, email" +#~ msgstr "Codice, nome, email" + +#~ msgid "No suppliers found." +#~ msgstr "Nessun fornitore trovato." + +#~ msgid "Supplier Details" +#~ msgstr "Dettagli del fornitore" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Articoli in stock da questo fornitore" + +#~ msgid "Lead Time" +#~ msgstr "Tempi di consegna" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "Nessun articolo in stock associato a questo fornitore." + +#~ msgid "Preferred Items" +#~ msgstr "Articoli preferiti" + +#~ msgid "From Warehouse" +#~ msgstr "Dal magazzino" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Seleziona Magazzino di origine" + +#~ msgid "To Warehouse" +#~ msgstr "Al magazzino" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Seleziona Magazzino di destinazione" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Note facoltative su questo trasferimento" + +#~ msgid "Create Transfer" +#~ msgstr "Crea trasferimento" + +#~ msgid "No transfers found." +#~ msgstr "Nessun trasferimento trovato." + +#~ msgid "Warehouse Code" +#~ msgstr "Codice Magazzino" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Codice univoco per questo magazzino (ad esempio, WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "Contatto e-mail" + +#~ msgid "Contact Phone" +#~ msgstr "Contatta il telefono" + +#~ msgid "No warehouses found." +#~ msgstr "Nessun magazzino trovato." + +#~ msgid "Warehouse Details" +#~ msgstr "Dettagli del magazzino" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "Nessun articolo in stock in questo magazzino." + +#~ msgid "Total Quantity" +#~ msgstr "Quantità totale" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "Richiedi approvazione" + +#~ msgid "Approval Status" +#~ msgstr "Stato di approvazione" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "Motivo del rifiuto" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "Azioni rapide" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "Esporta in Excel" + +#~ msgid "Partially Paid" +#~ msgstr "Parzialmente pagato" + +#~ msgid "Fully Paid" +#~ msgstr "Interamente pagato" + +#~ msgid "Create Invoice" +#~ msgstr "Crea fattura" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Genera una nuova fattura per un progetto e un cliente" + +#~ msgid "Select a project" +#~ msgstr "Seleziona un progetto" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "" +#~ "Selezionando un progetto verranno compilati" +#~ " automaticamente i dettagli del cliente" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Aliquota fiscale (%)" + +#~ msgid "Tips" +#~ msgstr "Suggerimenti" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "" +#~ "Scegli il progetto corretto per " +#~ "compilare automaticamente i dettagli del " +#~ "cliente." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "Puoi personalizzare note e termini prima di inviare la fattura." + +#~ msgid "Edit Invoice" +#~ msgstr "Modifica fattura" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Aggiorna i dettagli, gli articoli e i termini della fattura" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Servizi a tempo e lavoro orario" + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "Seleziona articolo in stock" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "ad esempio, servizi di sviluppo Web" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "Rimuovi l'articolo" + +#~ msgid "Items Subtotal" +#~ msgstr "Totale parziale degli articoli" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "Spese fatturabili come viaggio, pasti e materiali" + +#~ msgid "Add Expense" +#~ msgstr "Aggiungi spesa" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "ad esempio, Viaggio alla riunione del cliente" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Spesa collegata: il titolo non può essere modificato" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Spesa collegata: la descrizione non può essere modificata" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Spesa collegata: la categoria non può essere modificata" + +#~ msgid "Travel" +#~ msgstr "Viaggio" + +#~ msgid "Meals" +#~ msgstr "Pasti" + +#~ msgid "Accommodation" +#~ msgstr "Alloggio" + +#~ msgid "Supplies" +#~ msgstr "Forniture" + +#~ msgid "Software" +#~ msgstr "Software" + +#~ msgid "Equipment" +#~ msgstr "Attrezzatura" + +#~ msgid "Services" +#~ msgstr "Servizi" + +#~ msgid "Marketing" +#~ msgstr "Marketing" + +#~ msgid "Training" +#~ msgstr "Formazione" + +#~ msgid "Other" +#~ msgstr "Altro" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Spesa collegata: l'importo non può essere modificato" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Spesa collegata: la data non può essere modificata" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Scollegare la spesa dalla fattura" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Totale parziale delle spese" + +#~ msgid "Extra Goods" +#~ msgstr "Beni extra" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Prodotti, materiali, licenze e altri beni" + +#~ msgid "Add Good" +#~ msgstr "Aggiungi bene" + +#~ msgid "Price" +#~ msgstr "Prezzo" + +#~ msgid "e.g., Software License" +#~ msgstr "ad esempio, Licenza software" + +#~ msgid "Product" +#~ msgstr "Prodotto" + +#~ msgid "Service" +#~ msgstr "Servizio" + +#~ msgid "Material" +#~ msgstr "Materiale" + +#~ msgid "Remove good" +#~ msgstr "Rimuovi bene" + +#~ msgid "Goods Subtotal" +#~ msgstr "Totale parziale delle merci" + +#~ msgid "Live Preview" +#~ msgstr "Anteprima dal vivo" + +#~ msgid "Payment" +#~ msgstr "Pagamento" + +#~ msgid "Goods" +#~ msgstr "Merce" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Genera da tempi/costi" + +#~ msgid "Record Payment" +#~ msgstr "Registra il pagamento" + +#~ msgid "Export PDF" +#~ msgstr "Esporta PDF" + +#~ msgid "Export CSV" +#~ msgstr "Esporta CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Fattura duplicata" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "Sei sicuro di voler scollegare questa spesa dalla fattura?" + +#~ msgid "Unlink Expense" +#~ msgstr "Scollega Spese" + +#~ msgid "Unlink" +#~ msgstr "Scollega" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "Aggiungi almeno un articolo, una spesa o un bene extra alla fattura" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Genera da tempo, costi e merci" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Seleziona le voci orarie non fatturate," +#~ " i costi del progetto e le " +#~ "merci extra da aggiungere a questa " +#~ "fattura" + +#~ msgid "Back to Edit" +#~ msgstr "Torna a Modifica" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Voci di tempo non fatturate" + +#~ msgid "entries" +#~ msgstr "voci" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "Nessuna voce di tempo non fatturata trovata per questo progetto." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Costi del progetto non fatturati" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "Nessun costo non fatturato trovato per questo progetto." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Spese fatturabili non fatturate" + +#~ msgid "Vendor" +#~ msgstr "Venditore" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "Nessuna spesa fatturabile non fatturata trovata per questo progetto." + +#~ msgid "Project Extra Goods" +#~ msgstr "Progetto di beni extra" + +#~ msgid "No extra goods found for this project." +#~ msgstr "Nessun bene extra trovato per questo progetto." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Aggiungi selezionato alla fattura" + +#~ msgid "Selection Summary" +#~ msgstr "Riepilogo della selezione" + +#~ msgid "Total available hours" +#~ msgstr "Totale ore disponibili" + +#~ msgid "Total available costs" +#~ msgstr "Costi totali disponibili" + +#~ msgid "Total available expenses" +#~ msgstr "Spese totali disponibili" + +#~ msgid "Total available goods" +#~ msgstr "Beni disponibili totali" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Panoramica delle ore prepagate" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" +#~ "Il piano include %(hours)s ore per " +#~ "ciclo (si ripristina il giorno %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "Consumato: %(consumed)s h • Restante: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "Nessun utilizzo prepagato ancora registrato per il periodo selezionato." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "È possibile selezionare più voci temporali, costi, spese e merci extra." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "Le voci orarie vengono raggruppate per" +#~ " attività o progetto al momento della" +#~ " creazione dell'elemento." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "" +#~ "I costi e le merci extra vengono" +#~ " aggiunti come singole voci della " +#~ "fattura." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "" +#~ "Le spese sono collegate alla fattura " +#~ "e compaiono in una sezione separata." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "" +#~ "Seleziona almeno una volta l'immissione, " +#~ "il costo, la spesa o il bene " +#~ "extra" + +#~ msgid "Filter Invoices" +#~ msgstr "Filtra fatture" + +#~ msgid "Invoice number or client" +#~ msgstr "Numero di fattura o cliente" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "Elimina fatture selezionate" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Modifica stato per fatture selezionate" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "Elimina fattura" + +#~ msgid "Warning:" +#~ msgstr "Avvertimento:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Sei sicuro di voler eliminare la fattura?" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Tutte le voci della fattura, le " +#~ "merci extra e i record di " +#~ "pagamento associati a questa fattura " +#~ "verranno eliminati definitivamente." + +#~ msgid "INVOICE" +#~ msgstr "FATTURA" + +#~ msgid "Invoice #" +#~ msgstr "Fattura #" + +#~ msgid "Bill To" +#~ msgstr "Disegno di legge per" + +#~ msgid "Quantity (Hours)" +#~ msgstr "Quantità (ore)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "Generato da %(num)d voci di tempo" + +#~ msgid "Expense" +#~ msgstr "Spese" + +#~ msgid "Subtotal:" +#~ msgstr "Totale parziale:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "Tasse (%(rate).2f%%):" + +#~ msgid "Total Amount:" +#~ msgstr "Importo totale:" + +#~ msgid "Notes:" +#~ msgstr "Note:" + +#~ msgid "Terms:" +#~ msgstr "Termini:" + +#~ msgid "Payment Information:" +#~ msgstr "Informazioni sul pagamento:" + +#~ msgid "Terms & Conditions:" +#~ msgstr "Termini e condizioni:" + +#~ msgid "Download UBL" +#~ msgstr "" + +#~ msgid "Pay Online" +#~ msgstr "" + +#~ msgid "Payment Reference" +#~ msgstr "" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" + +#~ msgid "Invoice Approval" +#~ msgstr "" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" + +#~ msgid "Payment History" +#~ msgstr "Cronologia dei pagamenti" + +#~ msgid "Send Invoice via Email" +#~ msgstr "Invia fattura tramite e-mail" + +#~ msgid "Edit Issue" +#~ msgstr "" + +#~ msgid "Unassigned" +#~ msgstr "Non assegnato" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "Create Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Filter Issues" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Search by title or description" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Apply Filters" +#~ msgstr "Applica filtri" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Page" +#~ msgstr "Pagina" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "of" +#~ msgstr "Di" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "No issues found" +#~ msgstr "Nessun utente trovato." -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Create New Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "Delete Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Task Management" +#~ msgstr "Gestione delle attività" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Link to existing task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Select a task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Link" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Kanban" +#~ msgstr "Kanban" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "Gestisci colonne" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "Trascina le attività tra le colonne per aggiornarne lo stato" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "Tabellone Kanban" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "moved to" +#~ msgstr "trasferito a" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "Nessuna attività in questa colonna." -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "Gestisci colonne Kanban" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "Personalizza le colonne della bacheca Kanban e gli stati delle attività" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "Project:" +#~ msgstr "Progetto:" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "Colonne globali" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "Add Column" +#~ msgstr "Aggiungi colonna" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "Elenco colonne Kanban" -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "Key" +#~ msgstr "Chiave" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "Complete?" +#~ msgstr "Completare?" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "Trascina per riordinare" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Edit column" +#~ msgstr "Modifica colonna" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "Attiva/disattiva lo stato attivo" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "Nessuna colonna kanban trovata. Crea la tua prima colonna per iniziare." -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "Tips:" +#~ msgstr "Suggerimenti:" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Trascina e rilascia le righe per riordinare le colonne" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "Le colonne di sistema (todo, " +#~ "in_progress, done) non possono essere " +#~ "eliminate ma possono essere personalizzate" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "Le colonne contrassegnate come \"Completate\"" +#~ " contrassegneranno le attività come " +#~ "completate quando vengono trascinate in " +#~ "quella colonna" -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Le colonne inattive vengono nascoste " +#~ "dalla bacheca kanban ma le attività " +#~ "con tale stato rimangono accessibili" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "Elimina colonna Kanban" -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "Integrazione temporale" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Sei sicuro di voler eliminare la colonna?" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "Key:" +#~ msgstr "Chiave:" -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "L'anno scorso" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "Aggiorna stato" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "Dettagli" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "L'anno scorso" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Parziale" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "Aggiorna" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Nota: le attività con questo stato " +#~ "rimarranno accessibili ma la colonna non" +#~ " verrà più visualizzata nella bacheca " +#~ "kanban." -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "Elimina colonna" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "Colonne riordinate correttamente" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "Impossibile riordinare le colonne. Per favore riprova." -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "Crea colonna Kanban" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Aggiungi una nuova colonna alla tua bacheca kanban" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "Crea modulo Colonna Kanban" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Column Label" +#~ msgstr "Etichetta della colonna" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "ad esempio, In revisione, Bloccato, In fase di test" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "Il nome visualizzato mostrato nella bacheca kanban" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "Column Key" +#~ msgstr "Chiave di colonna" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "ad esempio, in_review, bloccato, in prova" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Identificatore univoco (lettere minuscole, " +#~ "senza spazi, utilizzare trattini bassi). " +#~ "Generato automaticamente dall'etichetta se " +#~ "vuota." + +#~ msgid "Global (for all projects)" +#~ msgstr "Globale (per tutti i progetti)" + +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Seleziona un progetto per creare colonne" +#~ " specifiche del progetto o lascialo " +#~ "come Globale per tutti i progetti" + +#~ msgid "Icon Class" +#~ msgstr "Classe di icone" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "Classe di icone Font Awesome" -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "Crea token API" +#~ msgid "Browse icons" +#~ msgstr "Sfoglia le icone" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "Primario (blu)" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "Secondary (Gray)" +#~ msgstr "Secondario (grigio)" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "Successo (verde)" -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "Crea token API" +#~ msgid "Danger (Red)" +#~ msgstr "Pericolo (rosso)" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "Avviso (giallo)" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "Lascia vuoto per rimanere aggiornato" +#~ msgid "Info (Cyan)" +#~ msgstr "Informazioni (ciano)" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "Rigenera il segreto" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Classe di colori Bootstrap per lo styling" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "Mark as Complete State" +#~ msgstr "Contrassegna come stato completo" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "" +#~ "Le attività spostate in questa colonna" +#~ " verranno contrassegnate come completate" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "Create Column" +#~ msgstr "Crea colonna" -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Note:" +#~ msgstr "Nota:" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "La colonna verrà aggiunta alla fine " +#~ "della scheda. Puoi riordinare le colonne" +#~ " in un secondo momento dalla pagina" +#~ " di gestione." -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "Modifica colonna Kanban" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "Modifica le impostazioni della colonna" -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Edit Kanban Column form" +#~ msgstr "Modifica il modulo Colonna Kanban" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "La chiave non può essere modificata dopo la creazione" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "Questa è una colonna specifica del progetto" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Questa è una colonna globale (per tutti i progetti)" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "Preview" +#~ msgstr "Anteprima" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Le colonne inattive vengono nascoste dalla bacheca kanban" -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "System Column:" +#~ msgstr "Colonna di sistema:" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Questa è una colonna di sistema. " +#~ "Puoi personalizzarne l'aspetto ma non " +#~ "puoi eliminarlo." -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "Attiva/disattiva la modalità oscura" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "Decrease quantity" +#~ msgstr "" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "Adjustment quantity" +#~ msgstr "" + +#~ msgid "Increase quantity" +#~ msgstr "" + +#~ msgid "Kiosk adjustment" +#~ msgstr "" + +#~ msgid "Physical count" +#~ msgstr "" + +#~ msgid "Found" +#~ msgstr "" + +#~ msgid "Damaged" +#~ msgstr "" + +#~ msgid "Apply stock adjustment" +#~ msgstr "" + +#~ msgid "Apply Adjustment" +#~ msgstr "" + +#~ msgid "Undo last adjustment" +#~ msgstr "" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "" + +#~ msgid "Transfer quantity" +#~ msgstr "" + +#~ msgid "Transfer stock" +#~ msgstr "" + +#~ msgid "Transfer Stock" +#~ msgstr "" + +#~ msgid "Stop timer" +#~ msgstr "" + +#~ msgid "Stop Timer" +#~ msgstr "Arresta il timer" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "Nessun compito" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "A cosa stai lavorando?" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "Riepilogo" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "Fonte" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Sito web, referral, annuncio..." + +#~ msgid "Lead Score" +#~ msgstr "Punteggio principale" + +#~ msgid "Estimated Value" +#~ msgstr "Valore stimato" + +#~ msgid "Save Lead" +#~ msgstr "Salva piombo" + +#~ msgid "Name, company, email..." +#~ msgstr "Nome, azienda, email..." + +#~ msgid "All Statuses" +#~ msgstr "Tutti gli stati" + +#~ msgid "Website, referral..." +#~ msgstr "Sito web, riferimento..." + +#~ msgid "Score" +#~ msgstr "Punto" + +#~ msgid "No leads found" +#~ msgstr "Nessun lead trovato" + +#~ msgid "Create First Lead" +#~ msgstr "Crea il primo lead" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Monitoraggio professionale del tempo e gestione dei progetti" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "Un'applicazione completa di monitoraggio del" +#~ " tempo basata sul Web creata con " +#~ "Flask, che include gestione dei " +#~ "progetti, organizzazione del cliente, gestione" +#~ " delle attività, fatturazione e analisi " +#~ "avanzate." + +#~ msgid "Invoicing" +#~ msgstr "Fatturazione" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "Temporizzatori intelligenti" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "" +#~ "Monitoraggio in tempo reale con " +#~ "rilevamento di inattività e aggiornamenti " +#~ "in tempo reale" + +#~ msgid "Client Management" +#~ msgstr "Gestione del cliente" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "Organizza i clienti con contatti, tariffe e relazioni di progetto" + +#~ msgid "Task System" +#~ msgstr "Sistema di attività" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Suddividi i progetti in attività con il monitoraggio dei progressi" + +#~ msgid "PDF Invoices" +#~ msgstr "Fatture PDF" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Genera fatture professionali dal tempo tracciato" + +#~ msgid "Core Features" +#~ msgstr "Caratteristiche principali" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Avvia/arresta timer con associazione di progetto e attività" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Inserimento manuale del tempo con note e tag" + +#~ msgid "Client and project organization" +#~ msgstr "Organizzazione del cliente e del progetto" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Accesso basato sui ruoli e profili utente" + +#~ msgid "Advanced Features" +#~ msgstr "Funzionalità avanzate" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Fatturazione PDF brandizzata con tracciamento di imposte e pagamenti" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Analisi visiva e reporting dettagliato" + +#~ msgid "REST API for integrations" +#~ msgstr "API REST per integrazioni" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "" +#~ "Funzionalità PWA e interfaccia utente " +#~ "ottimizzata per dispositivi mobili" + +#~ msgid "Platform Support" +#~ msgstr "Supporto della piattaforma" + +#~ msgid "Web Application" +#~ msgstr "Applicazione Web" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Browser desktop (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Design reattivo per dispositivi mobili" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "App Web progressiva (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Interfaccia tablet intuitiva" + +#~ msgid "Operating Systems" +#~ msgstr "Sistemi operativi" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android e iOS (browser)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Supporto per Raspberry Pi" + +#~ msgid "Dockerized deployment" +#~ msgstr "Distribuzione dockerizzata" + +#~ msgid "Database Support" +#~ msgstr "Supporto della banca dati" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (consigliato)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (sviluppo/test)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Migrazioni automatiche con Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Strumenti di backup e ripristino" + +#~ msgid "Technical Specifications" +#~ msgstr "Specifiche tecniche" + +#~ msgid "Technology Stack" +#~ msgstr "Pila tecnologica" + +#~ msgid "Backend" +#~ msgstr "Backend" + +#~ msgid "Frontend" +#~ msgstr "Fine frontale" + +#~ msgid "Deployment" +#~ msgstr "Distribuzione" + +#~ msgid "Key Capabilities" +#~ msgstr "Capacità chiave" + +#~ msgid "Real-time" +#~ msgstr "In tempo reale" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "Open Source e comunità" + +#~ msgid "Open Source Benefits" +#~ msgstr "Vantaggi dell'open source" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Codice sorgente completo disponibile su GitHub" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Concesso in licenza con GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "Sviluppo guidato dalla comunità" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Monitoraggio trasparente dei problemi e segnalazioni di bug" + +#~ msgid "Deployment Options" +#~ msgstr "Opzioni di distribuzione" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Immagini Docker (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Distribuzione self-hosted con controllo completo" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Predisposizione per il cloud con configurazioni Compose" + +#~ msgid "View on GitHub" +#~ msgstr "Visualizza su GitHub" + +#~ msgid "Support updates" +#~ msgstr "Funzionalità supportate" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "Ottenere aiuto e risorse" + +#~ msgid "Documentation" +#~ msgstr "Documentazione" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Guide dettagliate per tutte le funzionalità." + +#~ msgid "View Help" +#~ msgstr "Visualizza la Guida" + +#~ msgid "System Information" +#~ msgstr "Informazioni di sistema" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Stato, versioni e dettagli di configurazione." + +#~ msgid "Admin access required" +#~ msgstr "È richiesto l'accesso amministrativo" + +#~ msgid "Community Support" +#~ msgstr "Supporto comunitario" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "Segnala problemi, richiedi funzionalità, contribuisci." + +#~ msgid "GitHub Issues" +#~ msgstr "Problemi di GitHub" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "Visualizza tutte le voci relative all'orario" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "Ecco una rapida panoramica del tuo lavoro." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "Avvia/arresta timer con associazione di progetto e attività" + +#~ msgid "Repeat last" +#~ msgstr "Creato a" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Avvia/arresta timer con associazione di progetto e attività" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "Pausa" + +#~ msgid "Break" +#~ msgstr "Indietro" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "Iniziato alle" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "Regolazione" + +#~ msgid "Subtract 15 min" +#~ msgstr "" + +#~ msgid "Subtract 5 min" +#~ msgstr "" + +#~ msgid "Add 5 min" +#~ msgstr "Ammin" + +#~ msgid "Add 15 min" +#~ msgstr "Ammin" + +#~ msgid "Resume timer" +#~ msgstr "Temporizzatori intelligenti" + +#~ msgid "Resume" +#~ msgstr "Reset" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "Pausa" + +#~ msgid "Stop and save current time" +#~ msgstr "" + +#~ msgid "Stop & save" +#~ msgstr "" + +#~ msgid "No active timer." +#~ msgstr "Nessun timer attivo." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" + +#~ msgid "Resume last session" +#~ msgstr "Fine sessione" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" + +#~ msgid "Today's Hours" +#~ msgstr "" + +#~ msgid "overtime" +#~ msgstr "Tempo" + +#~ msgid "Week's Hours" +#~ msgstr "" + +#~ msgid "Month's Hours" +#~ msgstr "" + +#~ msgid "Overtime (YTD)" +#~ msgstr "Impostazioni degli straordinari" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" + +#~ msgid "Loading insights…" +#~ msgstr "" + +#~ msgid "Value insights" +#~ msgstr "Allinea a destra" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "Tieni traccia del tempo. Rimani organizzato." + +#~ msgid "Total hours tracked" +#~ msgstr "Totale ore lavorate" + +#~ msgid "Active days" +#~ msgstr "Avvisi attivi" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "Hours per day last seven days" +#~ msgstr "" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "Most productive day" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "Avg session length" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "Estimated value tracked" +#~ msgstr "Valore stimato" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "This week vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "hrs this week" +#~ msgstr "Voci di tempo questa settimana" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "This week" +#~ msgstr "Settimana" -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "Last week" +#~ msgstr "L'anno scorso" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "Voci recenti" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "View all" +#~ msgstr "Visualizza tutto" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Riprendi: avvia un nuovo timer con le stesse proprietà" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "Modifica voce" -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "Voce duplicata" -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "Elimina la voce" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "Nessuna voce recente trovata." -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "Obiettivo settimanale" -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "Giorni rimasti" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "Need" +#~ msgstr "Bisogno" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "per raggiungere l'obiettivo" -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "Nessun obiettivo settimanale" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "" +#~ "Imposta un obiettivo temporale settimanale " +#~ "per monitorare i tuoi progressi" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "Crea obiettivo" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Principali progetti (30 giorni)" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "View report" +#~ msgstr "Rapporto utente" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Grafici a torta della distribuzione temporale" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Nessuna attività negli ultimi 30 giorni." -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Inizia a monitorare il tempo" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "Principali progetti (30 giorni)" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "Nessuna attività negli ultimi 30 giorni." -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "%(count)d virgolette duplicate" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Errore durante la generazione del PDF: %(error)s" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "Supporto della piattaforma" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "La password deve contenere almeno 8 caratteri" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "Guida rapida" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "All templates" +#~ msgstr "Modelli di posta elettronica" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "Compito (facoltativo)" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "Note (facoltativo)" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "Compito (facoltativo)" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "ad esempio, riunione, sviluppo, amministrazione" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "Sostenere lo sviluppo" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "Documentazione completa e guida per l'utente" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "Navigazione rapida" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "Filtra sezioni..." -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "Avvio rapido" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "Report e analisi" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "Caratteristiche di produttività" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "Funzionalità di amministrazione" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "Utilizzo mobile" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "Documentazione" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "Risoluzione dei problemi" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "Centro assistenza di TimeTracker" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "Tutto quello che devi sapere per ottenere il massimo da TimeTracker" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "Inizia a monitorare il tempo" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "Visualizza progetti" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "Genera report" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "Token API" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "Guida rapida" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "For New Users" +#~ msgstr "Per i nuovi utenti" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Accedi con il tuo nome utente (non è richiesta alcuna password)" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Esplora la dashboard per visualizzare la panoramica" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Avvia il tuo primo timer su un progetto esistente" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "Visualizza le tue voci di tempo nei rapporti" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "Per gli amministratori" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Configura i clienti nella sezione Gestione clienti" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Crea progetti e assegnali ai clienti" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Configurare le impostazioni di sistema (fuso orario, valuta, ecc.)" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "Gestisci utenti e autorizzazioni" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "Suggerimento professionale:" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Utilizza l'interfaccia ottimizzata per " +#~ "dispositivi mobili per tenere traccia " +#~ "del tempo in movimento. Il timer " +#~ "continua a funzionare anche se chiudi" +#~ " il browser!" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Monitoraggio in tempo reale con " +#~ "rilevamento automatico di inattività e " +#~ "aggiornamenti WebSocket" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "Inserimento manuale" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Articolo in stock" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Seleziona elemento" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Magazzino" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Seleziona Magazzino" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Quantità di regolazione" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "Utilizzare valori positivi per aumentare lo stock, valori negativi per diminuirlo" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "ad esempio, Correzione del conteggio fisico, Danni, Oggetti trovati" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Ulteriori dettagli su questa regolazione" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Regolazione della registrazione" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Tutti i magazzini" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Tutti gli articoli" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Data da" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Data a" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Articolo" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "Nessuna modifica trovata." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "A portata di mano" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Punto di riordino" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Carenza" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Riordina quantità" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "Nessun avviso di stock in esaurimento. Tutti gli articoli sono al di sopra del punto di riordino." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "Registra l'ora manualmente con orari di inizio e fine personalizzati" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "Avvio di un timer" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Utilizzare valori positivi per le aggiunte, negativi per le rimozioni" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Passare alla pagina Timer o alla dashboard" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "Seleziona un progetto dal menu a discesa" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "" +#~ "Facoltativamente, seleziona un'attività per un" +#~ " monitoraggio più dettagliato" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Aggiungi note su ciò su cui stai lavorando (facoltativo)" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Tipo di movimento" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Ritorno" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Sciupare" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Aggiungi tag separati da virgole (facoltativo)" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Fare clic su \"Avvia timer\"" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "Funzionalità del timer" -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "Visualizzazione della durata in tempo reale" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" + +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" + +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" + +#~ msgid "Continues running if browser closes" +#~ msgstr "Continua a funzionare se il browser si chiude" + +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Rilevamento automatico del minimo (configurabile)" + +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Un timer attivo per utente (configurabile)" + +#~ msgid "WebSocket live updates" +#~ msgstr "Aggiornamenti in tempo reale di WebSocket" + +#~ msgid "Manual Time Entry" +#~ msgstr "Inserimento manuale dell'ora" + +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Crea manualmente voci di orario quando" +#~ " è necessario registrare il tempo " +#~ "trascorso lontano dal computer o " +#~ "modificare le voci esistenti." -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Required Information" +#~ msgstr "Informazioni richieste" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "Project selection" +#~ msgstr "Selezione del progetto" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "Data e ora di inizio" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "Data e ora di fine" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "Informazioni facoltative" -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "ad esempio, correzione del conteggio fisico" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Registra il movimento" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Tipo di riferimento" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Manuale" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Costo unitario" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Riferimento" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "Assegnazione dei compiti" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "Nessun movimento di borsa trovato." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Fornitore" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Seleziona fornitore" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Data dell'ordine" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Data di consegna prevista" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Note visibili al fornitore" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Note interne (non visibili al fornitore)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Elementi" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Aggiungi articolo" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Qtà" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "SKU del fornitore" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Crea ordine d'acquisto" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Bozza" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Inviato" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Confermato" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Ricevuto" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Tutti i fornitori" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "Numero dell'ordine d'acquisto" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Consegna prevista" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "Nessun ordine di acquisto trovato." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "Sei sicuro di voler annullare questo ordine di acquisto?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "Sei sicuro di voler eliminare questo ordine d'acquisto?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Dettagli dell'ordine di acquisto" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Data di ricezione" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Quantità ordinata" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Quantità ricevuta" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Totale riga" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Spedizione" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Ricevi l'ordine di acquisto" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Contrassegna come ricevuto" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "Nessun articolo in questo ordine di acquisto." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Articoli totali" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Magazzini totali" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Valore totale dell'inventario" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Articoli a stock basso" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Rapporti disponibili" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Valutazione delle azioni" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Visualizza il valore dell'inventario per magazzino" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Storia del movimento" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Registro dettagliato dei movimenti" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Analisi del fatturato" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Tassi di rotazione delle scorte" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Rapporto sulle scorte basse" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Articoli sotto il punto di riordino" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "Trovati %(count)s articoli sotto il punto di riordino." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Quantità a portata di mano" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Riordina quantità" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "Crea ordine d'acquisto" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Tutti i livelli delle scorte sono buoni" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Nessun articolo è attualmente al di sotto del punto di riordino." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "Nessun movimento trovato." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "Il tasso di turnover indica quante volte l'inventario viene venduto e sostituito in un anno. Tassi più alti indicano articoli che si muovono più velocemente." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Totale venduto" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Livello medio delle scorte" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Tasso di fatturato" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Movimento veloce" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normale" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "Movimento lento" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "Molto lento" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "Nessun dato di vendita trovato per il periodo selezionato." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Valutazione dell'inventario" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Valore totale" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "Nessun articolo trovato con informazioni sui costi." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Prenotato" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Soddisfatto" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Riservato a" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Scade alle" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "Soddisfare questa prenotazione?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "Cancellare questa prenotazione?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "Nessuna prenotazione trovata." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Unità" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Costo predefinito" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Prezzo predefinito" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "URL dell'immagine" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Tieni traccia dell'inventario" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Gestisci più fornitori per questo articolo con prezzi diversi." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "MOQ" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Tempi di consegna (giorni)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Preferito" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Aggiungi fornitore" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "Nessuna cronologia dei movimenti trovata per questo articolo." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU, nome, codice a barre..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Solo attivo" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Qtà totale" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Disponibile" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Scorte basse" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "Nessun articolo in stock trovato." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Dettagli articolo" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Tracciabile" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Livelli delle scorte per magazzino" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "Descrizione/note" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "Tag per la categorizzazione" -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "Sostituzione dello stato fatturabile" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Movimenti azionari recenti" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Totale a portata di mano" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Totale riservato" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Totale disponibile" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Avviso di scorte in esaurimento" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Questo articolo non è tracciabile." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Prenotazioni attive" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Quantità riservata" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Ultimo contato" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "Nessuno stock trovato per questo articolo in nessun magazzino." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "Nessun livello di scorte trovato." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Solo scorte basse" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "Ipervenduto" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "Nessun articolo in stock trovato in questo magazzino." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Codice Fornitore" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Codice univoco per questo fornitore (ad esempio, SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Termini di pagamento" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "ad esempio, Netto 30, Netto 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Codice, nome, email" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "Nessun fornitore trovato." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Dettagli del fornitore" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Articoli in stock da questo fornitore" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Tempi di consegna" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "Nessun articolo in stock associato a questo fornitore." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Articoli preferiti" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Dal magazzino" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Seleziona Magazzino di origine" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Al magazzino" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Seleziona Magazzino di destinazione" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Note facoltative su questo trasferimento" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Crea trasferimento" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "Nessun trasferimento trovato." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Codice Magazzino" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Codice univoco per questo magazzino (ad esempio, WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "Contatto e-mail" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Contatta il telefono" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "Nessun magazzino trovato." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Dettagli del magazzino" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "Nessun articolo in stock in questo magazzino." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Quantità totale" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Funzionalità avanzate di immissione del tempo" -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "Inserimento in blocco" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Crea più voci orarie per giorni " +#~ "consecutivi con lo stesso progetto e " +#~ "durata. Perfetto per ritmi di lavoro " +#~ "regolari." -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "Templates" +#~ msgstr "Modelli" -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Salva le voci temporali utilizzate di" +#~ " frequente come modelli per un rapido" +#~ " riutilizzo. Salva progetto, attività e " +#~ "note." -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualizza i tuoi orari su un " +#~ "calendario. Trascina e rilascia per " +#~ "riprogrammare o fai clic sulle date " +#~ "per aggiungere voci." -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "Project Information" +#~ msgstr "Informazioni sul progetto" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "Nome descrittivo del progetto" -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "Organizzazione cliente associata" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "Dettagli e ambito del progetto" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "Attivo, completato o archiviato" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Richiedi approvazione" +#~ msgid "Billing Information" +#~ msgstr "Informazioni di fatturazione" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Stato di approvazione" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Se il tempo deve essere monitorato per la fatturazione" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "Rate for billable time calculations" +#~ msgstr "Tariffa per il calcolo del tempo fatturabile" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Billing Reference" +#~ msgstr "Riferimento per la fatturazione" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "Numero dell'ordine d'acquisto o codice di fatturazione" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "Operazioni di progetto" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Motivo del rifiuto" +#~ msgid "Create new projects with client relationships" +#~ msgstr "Creare nuovi progetti con le relazioni con i clienti" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "Edit existing projects to update details" +#~ msgstr "Modifica i progetti esistenti per aggiornare i dettagli" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Azioni rapide" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "Archivia progetti da nascondere ai timer (conserva i dati)" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Elimina progetti (rimuove tutte le voci di tempo associate)" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Esporta in Excel" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Parzialmente pagato" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Interamente pagato" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Crea fattura" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Genera una nuova fattura per un progetto e un cliente" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Seleziona un progetto" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "Selezionando un progetto verranno compilati automaticamente i dettagli del cliente" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Best Practices" +#~ msgstr "Migliori pratiche" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Use descriptive project names" +#~ msgstr "Utilizza nomi di progetto descrittivi" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Aliquota fiscale (%)" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Imposta tariffe orarie precise per la fatturazione" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Suggerimenti" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Archivia invece di eliminare quando possibile" -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "Scegli il progetto corretto per compilare automaticamente i dettagli del cliente." +#~ msgid "Use billing references for external tracking" +#~ msgstr "Utilizza i riferimenti di fatturazione per il monitoraggio esterno" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "Puoi personalizzare note e termini prima di inviare la fattura." +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "Il sistema di gestione dei clienti " +#~ "aiuta a organizzare il lavoro da " +#~ "parte delle organizzazioni clienti, prevenendo" +#~ " errori e semplificando la creazione " +#~ "dei progetti." -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Modifica fattura" +#~ msgid "Client Information" +#~ msgstr "Informazioni sul cliente" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Aggiorna i dettagli, gli articoli e i termini della fattura" +#~ msgid "Organization Name" +#~ msgstr "Nome dell'organizzazione" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Servizi a tempo e lavoro orario" +#~ msgid "Company or client name" +#~ msgstr "Nome dell'azienda o del cliente" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Primary contact details" +#~ msgstr "Dettagli di contatto principali" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Email & Phone" +#~ msgstr "E-mail e telefono" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Contact information" +#~ msgstr "Informazioni sui contatti" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Seleziona articolo in stock" +#~ msgid "Business address" +#~ msgstr "Indirizzo commerciale" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "ad esempio, servizi di sviluppo Web" +#~ msgid "Benefits" +#~ msgstr "Vantaggi" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "La selezione a discesa impedisce errori di battitura" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Rimuovi l'articolo" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Totale parziale degli articoli" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Spese fatturabili come viaggio, pasti e materiali" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Aggiungi spesa" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "ad esempio, Viaggio alla riunione del cliente" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Spesa collegata: il titolo non può essere modificato" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Spesa collegata: la descrizione non può essere modificata" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Spesa collegata: la categoria non può essere modificata" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Viaggio" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Pasti" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Alloggio" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Forniture" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Software" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Attrezzatura" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Servizi" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Marketing" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Formazione" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Altro" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Spesa collegata: l'importo non può essere modificato" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Spesa collegata: la data non può essere modificata" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Scollegare la spesa dalla fattura" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Totale parziale delle spese" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Beni extra" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Prodotti, materiali, licenze e altri beni" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Aggiungi bene" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Prezzo" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "ad esempio, Licenza software" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Prodotto" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Servizio" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Materiale" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "Rimuovi bene" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Totale parziale delle merci" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Anteprima dal vivo" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Pagamento" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Merce" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Genera da tempi/costi" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Registra il pagamento" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "Esporta PDF" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "Esporta CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Fattura duplicata" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "Sei sicuro di voler scollegare questa spesa dalla fattura?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Scollega Spese" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Scollega" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "Aggiungi almeno un articolo, una spesa o un bene extra alla fattura" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Genera da tempo, costi e merci" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "Seleziona le voci orarie non fatturate, i costi del progetto e le merci extra da aggiungere a questa fattura" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Torna a Modifica" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Voci di tempo non fatturate" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "voci" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "Nessuna voce di tempo non fatturata trovata per questo progetto." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Costi del progetto non fatturati" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "Nessun costo non fatturato trovato per questo progetto." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Spese fatturabili non fatturate" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Venditore" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "Nessuna spesa fatturabile non fatturata trovata per questo progetto." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Progetto di beni extra" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "Nessun bene extra trovato per questo progetto." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Aggiungi selezionato alla fattura" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Riepilogo della selezione" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Totale ore disponibili" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Costi totali disponibili" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Spese totali disponibili" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Beni disponibili totali" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Panoramica delle ore prepagate" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "Il piano include %(hours)s ore per ciclo (si ripristina il giorno %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "Consumato: %(consumed)s h • Restante: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Nessun utilizzo prepagato ancora registrato per il periodo selezionato." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "È possibile selezionare più voci temporali, costi, spese e merci extra." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "Le voci orarie vengono raggruppate per attività o progetto al momento della creazione dell'elemento." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "I costi e le merci extra vengono aggiunti come singole voci della fattura." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "Le spese sono collegate alla fattura e compaiono in una sezione separata." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "Seleziona almeno una volta l'immissione, il costo, la spesa o il bene extra" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Filtra fatture" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Le tariffe predefinite popolano automaticamente i progetti" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Numero di fattura o cliente" +#~ msgid "Consistent client naming" +#~ msgstr "Denominazione client coerente" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Elimina fatture selezionate" +#~ msgid "Easier project organization" +#~ msgstr "Organizzazione del progetto più semplice" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Modifica stato per fatture selezionate" +#~ msgid "Project Count" +#~ msgstr "Conteggio progetti" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Total and active projects" +#~ msgstr "Progetti totali e attivi" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Total hours worked" +#~ msgstr "Totale ore lavorate" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "Stima dei costi" -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Elimina fattura" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Avvertimento:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "Sei sicuro di voler eliminare la fattura?" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "Tutte le voci della fattura, le merci extra e i record di pagamento associati a questa fattura verranno eliminati definitivamente." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "FATTURA" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Fattura #" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Disegno di legge per" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Quantità (ore)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "Generato da %(num)d voci di tempo" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Spese" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Totale parziale:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "Tasse (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Importo totale:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Note:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Termini:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Informazioni sul pagamento:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Termini e condizioni:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Estimated billing amounts" +#~ msgstr "Importi di fatturazione stimati" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Suddividi i progetti in attività " +#~ "gestibili con monitoraggio dettagliato e " +#~ "monitoraggio dei progressi." -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Task Properties" +#~ msgstr "Proprietà dell'attività" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "Nome e descrizione" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "Chiara identificazione dell'attività" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "Livelli di priorità" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Cronologia dei pagamenti" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Basso, Medio, Alto, Urgente" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Invia fattura tramite e-mail" +#~ msgid "Due Dates" +#~ msgstr "Date di scadenza" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Deadline tracking" +#~ msgstr "Monitoraggio delle scadenze" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "Non assegnato" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Assignment" +#~ msgstr "Compito" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "Proprietà dell'attività" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "Monitoraggio dello stato" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "Applica filtri" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Pagina" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "Di" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "Nessun utente trovato." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "Da fare - Non iniziato" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "In Progress - Currently working" +#~ msgstr "In corso - Attualmente funzionante" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "Revisione: pronto per la revisione" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "Fatto - Completato" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Gestione delle attività" +#~ msgid "Cancelled - Not needed" +#~ msgstr "Annullato: non necessario" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "Funzionalità di monitoraggio del tempo" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "Start timers directly from tasks" +#~ msgstr "Avvia i timer direttamente dalle attività" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Collega le voci di tempo ad attività specifiche" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Tieni traccia delle ore stimate e effettive" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "Monitora automaticamente l'avanzamento delle attività" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" +#~ msgid "Task Views" +#~ msgstr "Visualizzazioni attività" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Gestisci colonne" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Le mie attività: le attività assegnate" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Trascina le attività tra le colonne per aggiornarne lo stato" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Tutte le attività: elenco completo delle attività" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "Tabellone Kanban" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Attività scadute: elementi scaduti" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "trasferito a" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Attività del progetto: attività all'interno dei progetti" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "Nessuna attività in questa colonna." +#~ msgid "Collaboration Features" +#~ msgstr "Funzionalità di collaborazione" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Gestisci colonne Kanban" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Commenti sulle attività: discussioni in thread sulle attività" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Personalizza le colonne della bacheca Kanban e gli stati delle attività" +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Supporto Markdown: formattazione ricca nelle descrizioni" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Progetto:" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "Menzioni utente: tagga i membri del team (se abilitato)" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Colonne globali" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Allegati file: allega file alle attività (se abilitato)" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Aggiungi colonna" +#~ msgid "Markdown Formatting" +#~ msgstr "Formattazione del ribasso" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Elenco colonne Kanban" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "Le descrizioni delle attività e del progetto supportano Markdown:" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Chiave" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Grassetto**, *Corsivo*, ~~Barrato~~" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "Completare?" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# Intestazioni, - Elenchi, [Link](url)" -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Trascina per riordinare" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```blocchi di codice```, tabelle, immagini" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Modifica colonna" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualizza il tuo flusso di lavoro " +#~ "con una scheda Kanban drag-and-" +#~ "drop per una gestione intuitiva delle" +#~ " attività." -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Attiva/disattiva lo stato attivo" +#~ msgid "Board Features" +#~ msgstr "Caratteristiche della scheda" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "Nessuna colonna kanban trovata. Crea la tua prima colonna per iniziare." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Suggerimenti:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Trascina e rilascia le righe per riordinare le colonne" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "Le colonne di sistema (todo, in_progress, done) non possono essere eliminate ma possono essere personalizzate" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "Le colonne contrassegnate come \"Completate\" contrassegneranno le attività come completate quando vengono trascinate in quella colonna" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "Le colonne inattive vengono nascoste dalla bacheca kanban ma le attività con tale stato rimangono accessibili" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Elimina colonna Kanban" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "Sei sicuro di voler eliminare la colonna?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Chiave:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "Nota: le attività con questo stato rimarranno accessibili ma la colonna non verrà più visualizzata nella bacheca kanban." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Elimina colonna" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Colonne riordinate correttamente" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "Impossibile riordinare le colonne. Per favore riprova." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Crea colonna Kanban" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Aggiungi una nuova colonna alla tua bacheca kanban" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Crea modulo Colonna Kanban" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Etichetta della colonna" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "ad esempio, In revisione, Bloccato, In fase di test" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "Il nome visualizzato mostrato nella bacheca kanban" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Chiave di colonna" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "ad esempio, in_review, bloccato, in prova" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "Identificatore univoco (lettere minuscole, senza spazi, utilizzare trattini bassi). Generato automaticamente dall'etichetta se vuota." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Globale (per tutti i progetti)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "Seleziona un progetto per creare colonne specifiche del progetto o lascialo come Globale per tutti i progetti" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Classe di icone" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Classe di icone Font Awesome" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Sfoglia le icone" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Primario (blu)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Secondario (grigio)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Successo (verde)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Pericolo (rosso)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Avviso (giallo)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Informazioni (ciano)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Classe di colori Bootstrap per lo styling" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Contrassegna come stato completo" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "Le attività spostate in questa colonna verranno contrassegnate come completate" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Crea colonna" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Nota:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "La colonna verrà aggiunta alla fine della scheda. Puoi riordinare le colonne in un secondo momento dalla pagina di gestione." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Modifica colonna Kanban" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Modifica le impostazioni della colonna" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Modifica il modulo Colonna Kanban" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "La chiave non può essere modificata dopo la creazione" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Questa è una colonna specifica del progetto" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Questa è una colonna globale (per tutti i progetti)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Anteprima" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Le colonne inattive vengono nascoste dalla bacheca kanban" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Colonna di sistema:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "Questa è una colonna di sistema. Puoi personalizzarne l'aspetto ma non puoi eliminarlo." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Colonne personalizzabili corrispondenti agli stati delle attività" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Trascina e rilascia le attività tra le colonne" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Attiva/disattiva la modalità oscura" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Filtra per progetto, utente o priorità" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "Quick search across all tasks" +#~ msgstr "Ricerca rapida in tutte le attività" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "Using the Kanban Board" +#~ msgstr "Utilizzando la lavagna Kanban" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Accesso dal menu Attività o dalla pagina del progetto" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "Trascina le attività su colonne diverse per modificare lo stato" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Fare clic su una scheda attività per visualizzare/modificare i dettagli" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Utilizza i filtri per concentrarti su un lavoro specifico" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "La lavagna Kanban è perfetta per " +#~ "la pianificazione degli sprint e gli " +#~ "standup quotidiani. Ogni colonna rappresenta" +#~ " una fase del tuo flusso di " +#~ "lavoro!" -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "Monitoraggio delle spese" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Tieni traccia delle spese aziendali, " +#~ "gestisci le ricevute e gestisci i " +#~ "rimborsi in modo efficiente." -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "Caratteristiche di spesa" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Classificare le spese (viaggio, pasti, forniture, ecc.)" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "Allega immagini e documenti della ricevuta" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Tieni traccia di importi, tasse e metodi di pagamento" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Flusso di lavoro di approvazione per le richieste di spesa" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "Fatturazione e rimborso" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Contrassegnare le spese come fatturabili ai clienti" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "Includere le spese nelle fatture dei clienti" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "Tieni traccia dello stato del rimborso" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "Collegare le spese a progetti specifici" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "Registrare le spese" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "Inserisci i dettagli e carica la ricevuta" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "Invia per l'approvazione" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Admin reviews and approves" +#~ msgstr "L'amministratore esamina e approva" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "Fattura/Rimborso" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Aggiungi alla fattura o rimborsa" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "Traccia il pagamento" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "Monitorare lo stato del rimborso" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Arresta il timer" +#~ msgid "Professional Invoicing" +#~ msgstr "Fatturazione professionale" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "Generazione PDF professionale" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Company branding and logos" +#~ msgstr "Marchi e loghi aziendali" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "Numerazione automatica delle fatture" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Nessun compito" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "Calcoli fiscali" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "A cosa stai lavorando?" +#~ msgid "Time Integration" +#~ msgstr "Integrazione temporale" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Generate from time entries" +#~ msgstr "Generare da voci di tempo" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Smart grouping by task/project" +#~ msgstr "Raggruppamento intelligente per attività/progetto" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "Evita la doppia fatturazione" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "Utilizza le tariffe orarie del progetto" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "Imposta i dettagli del cliente e del progetto" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "Add Items" +#~ msgstr "Aggiungi elementi" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Generate from time or add manually" +#~ msgstr "Genera dal tempo o aggiungi manualmente" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "Rivedi e invia" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "Esporta PDF e aggiorna lo stato" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "Monitorare lo stato e i pagamenti" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "Standard Reports" +#~ msgstr "Rapporti standard" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Rapporto di progetto: suddivisione temporale per progetto" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Rapporto utente: metriche sulle prestazioni individuali" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Rapporto riepilogativo: parametri e tendenze principali" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Rapporto sull'immissione del tempo: registri temporali dettagliati" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "Riepilogo" +#~ msgid "Export Options" +#~ msgstr "Opzioni di esportazione" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "Esportazione CSV: per analisi esterne" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Fonte" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Sito web, referral, annuncio..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Punteggio principale" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Valore stimato" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Salva piombo" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Nome, azienda, email..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Tutti gli stati" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Sito web, riferimento..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Punto" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "Nessun lead trovato" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Crea il primo lead" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "Configurable delimiters" +#~ msgstr "Delimitatori configurabili" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "Custom date ranges" +#~ msgstr "Intervalli di date personalizzati" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Filtered data export" +#~ msgstr "Esportazione di dati filtrati" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "Opzioni filtro" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Intervallo di date: date di inizio e fine personalizzate" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Monitoraggio professionale del tempo e gestione dei progetti" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Progetto: filtra per progetti specifici" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "Un'applicazione completa di monitoraggio del tempo basata sul Web creata con Flask, che include gestione dei progetti, organizzazione del cliente, gestione delle attività, fatturazione e analisi avanzate." +#~ msgid "User - Filter by team members" +#~ msgstr "Utente: filtra per membri del team" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Fatturazione" +#~ msgid "Client - Filter by client organization" +#~ msgstr "Cliente: filtra per organizzazione cliente" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Filtri salvati: salva i filtri utilizzati di frequente" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Temporizzatori intelligenti" +#~ msgid "Visual Analytics" +#~ msgstr "Analisi visiva" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "Monitoraggio in tempo reale con rilevamento di inattività e aggiornamenti in tempo reale" +#~ msgid "Interactive bar charts" +#~ msgstr "Grafici a barre interattivi" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Gestione del cliente" +#~ msgid "Time distribution pie charts" +#~ msgstr "Grafici a torta della distribuzione temporale" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Organizza i clienti con contatti, tariffe e relazioni di progetto" +#~ msgid "Trend analysis over time" +#~ msgstr "Analisi dell'andamento nel tempo" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Sistema di attività" +#~ msgid "Mobile-optimized charts" +#~ msgstr "Grafici ottimizzati per dispositivi mobili" -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Suddividi i progetti in attività con il monitoraggio dei progressi" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Utilizza i filtri salvati per accedere" +#~ " rapidamente alle visualizzazioni dei " +#~ "rapporti più comuni. Salva i filtri " +#~ "per revisioni settimanali, fatturazione " +#~ "mensile o monitoraggio di progetti " +#~ "specifici!" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "Fatture PDF" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Aumenta la tua efficienza con le " +#~ "scorciatoie da tastiera, la tavolozza " +#~ "dei comandi e le funzionalità di " +#~ "automazione." -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Genera fatture professionali dal tempo tracciato" +#~ msgid "Command Palette" +#~ msgstr "Tavolozza dei comandi" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Caratteristiche principali" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "" +#~ "Accedi istantaneamente a qualsiasi " +#~ "funzionalità senza lasciare la tastiera" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Avvia/arresta timer con associazione di progetto e attività" +#~ msgid "Opening the Command Palette" +#~ msgstr "Apertura della tavolozza dei comandi" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Inserimento manuale del tempo con note e tag" +#~ msgid "Press the question mark key" +#~ msgstr "Premere il tasto del punto interrogativo" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Organizzazione del cliente e del progetto" +#~ msgid "Quick search" +#~ msgstr "Ricerca rapida" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Accesso basato sui ruoli e profili utente" +#~ msgid "Go to Projects" +#~ msgstr "Vai a Progetti" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Funzionalità avanzate" +#~ msgid "Go to Tasks" +#~ msgstr "Vai a Attività" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Fatturazione PDF brandizzata con tracciamento di imposte e pagamenti" +#~ msgid "New Time Entry" +#~ msgstr "Nuova immissione dell'ora" -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Analisi visiva e reporting dettagliato" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Scorciatoie da tastiera" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "API REST per integrazioni" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Naviga più velocemente con i comandi " +#~ "da tastiera. Press Shift+? per vedere" +#~ " tutte le scorciatoie." -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "Funzionalità PWA e interfaccia utente ottimizzata per dispositivi mobili" +#~ msgid "Global Search" +#~ msgstr "Ricerca globale" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Supporto della piattaforma" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "Trova rapidamente progetti, attività, clienti" +#~ " e voci di orario da qualsiasi " +#~ "punto dell'app." -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Applicazione Web" +#~ msgid "Email Notifications" +#~ msgstr "Notifiche e-mail" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Browser desktop (Chrome, Firefox, Safari, Edge)" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Ricevi notifiche via e-mail su " +#~ "assegnazioni di attività, fatture scadute " +#~ "e riepiloghi settimanali." -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Design reattivo per dispositivi mobili" +#~ msgid "Administrator Features" +#~ msgstr "Funzionalità dell'amministratore" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "App Web progressiva (PWA)" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Crea nuovi utenti con l'autenticazione flessibile" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Interfaccia tablet intuitiva" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Assegna ruoli personalizzati con autorizzazioni specifiche" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Sistemi operativi" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Attiva/disattiva gli account utente" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "View user statistics and activity" +#~ msgstr "Visualizza le statistiche e l'attività degli utenti" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android e iOS (browser)" +#~ msgid "Generate API tokens for users" +#~ msgstr "Genera token API per gli utenti" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Supporto per Raspberry Pi" +#~ msgid "Access Control" +#~ msgstr "Controllo degli accessi" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Distribuzione dockerizzata" +#~ msgid "Granular role-based permissions system" +#~ msgstr "Sistema di autorizzazioni granulare basato sui ruoli" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Supporto della banca dati" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Ruoli personalizzati con accesso granulare" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (consigliato)" +#~ msgid "User data access controls" +#~ msgstr "Controlli di accesso ai dati utente" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (sviluppo/test)" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "Integrazione OIDC/SSO (Azure AD, Authelia, ecc.)" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Migrazioni automatiche con Flask-Migrate" +#~ msgid "API token management for integrations" +#~ msgstr "Gestione dei token API per le integrazioni" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Strumenti di backup e ripristino" +#~ msgid "Authentication Methods" +#~ msgstr "Metodi di autenticazione" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Specifiche tecniche" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Solo nome utente (uso interno semplice)" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Pila tecnologica" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (autenticazione aziendale)" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "Backend" +#~ msgid "Both methods simultaneously" +#~ msgstr "Entrambi i metodi contemporaneamente" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "Fine frontale" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Assegnazione automatica dei ruoli tramite gruppi" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Distribuzione" +#~ msgid "Role & Permission Management" +#~ msgstr "Gestione di ruoli e autorizzazioni" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Capacità chiave" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Crea ruoli personalizzati oltre Amministratore/Utente" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "In tempo reale" +#~ msgid "Set granular permissions per feature" +#~ msgstr "Imposta autorizzazioni granulari per funzionalità" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "Assign users to multiple roles" +#~ msgstr "Assegnare agli utenti più ruoli" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "Open Source e comunità" +#~ msgid "View and manage all permissions" +#~ msgstr "Visualizza e gestisci tutte le autorizzazioni" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Vantaggi dell'open source" +#~ msgid "General Settings" +#~ msgstr "Impostazioni generali" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Codice sorgente completo disponibile su GitHub" +#~ msgid "Timezone and locale settings" +#~ msgstr "Impostazioni di fuso orario e locale" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Concesso in licenza con GPL v3.0" +#~ msgid "Currency configuration" +#~ msgstr "Configurazione valutaria" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Sviluppo guidato dalla comunità" +#~ msgid "Time rounding rules" +#~ msgstr "Regole di arrotondamento temporale" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Monitoraggio trasparente dei problemi e segnalazioni di bug" +#~ msgid "Self-registration settings" +#~ msgstr "Impostazioni di autoregistrazione" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Opzioni di distribuzione" +#~ msgid "Timer Settings" +#~ msgstr "Impostazioni del timer" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Immagini Docker (GHCR)" +#~ msgid "Idle timeout configuration" +#~ msgstr "Configurazione del timeout di inattività" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Distribuzione self-hosted con controllo completo" +#~ msgid "Single active timer mode" +#~ msgstr "Modalità timer attivo singolo" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Predisposizione per il cloud con configurazioni Compose" +#~ msgid "Timer display preferences" +#~ msgstr "Preferenze di visualizzazione del timer" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Visualizza su GitHub" +#~ msgid "Notification settings" +#~ msgstr "Impostazioni di notifica" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "Funzionalità supportate" +#~ msgid "Database Management" +#~ msgstr "Gestione della banca dati" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Create manual database backups" +#~ msgstr "Creare backup manuali del database" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "View database migration status" +#~ msgstr "Visualizza lo stato della migrazione del database" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "Monitor database performance" +#~ msgstr "Monitorare le prestazioni del database" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Ottenere aiuto e risorse" +#~ msgid "Clean up old data and logs" +#~ msgstr "Pulisci vecchi dati e registri" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Documentazione" +#~ msgid "System Monitoring" +#~ msgstr "Monitoraggio del sistema" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Guide dettagliate per tutte le funzionalità." +#~ msgid "View system information and health" +#~ msgstr "Visualizza le informazioni e l'integrità del sistema" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Visualizza la Guida" +#~ msgid "Monitor application performance" +#~ msgstr "Monitorare le prestazioni dell'applicazione" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Informazioni di sistema" +#~ msgid "Review system logs and errors" +#~ msgstr "Esaminare i log e gli errori di sistema" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Stato, versioni e dettagli di configurazione." +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Funzionalità ottimizzate per dispositivi mobili" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "È richiesto l'accesso amministrativo" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Ottimizzato per telefoni e tablet" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Supporto comunitario" +#~ msgid "Touch-friendly interface" +#~ msgstr "Interfaccia touch-friendly" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Segnala problemi, richiedi funzionalità, contribuisci." +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "Layout adattivi per tutte le dimensioni dello schermo" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "Problemi di GitHub" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Contrasto elevato per la visibilità all'aperto" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Mobile Navigation" +#~ msgstr "Navigazione mobile" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "Visualizza tutte le voci relative all'orario" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "Ecco una rapida panoramica del tuo lavoro." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "Avvia/arresta timer con associazione di progetto e attività" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "Creato a" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "Avvia/arresta timer con associazione di progetto e attività" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Barra delle schede inferiore per un facile accesso" -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "Pausa" +#~ msgid "Quick access to dashboard" +#~ msgstr "Accesso rapido alla dashboard" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "Indietro" +#~ msgid "One-tap time logging" +#~ msgstr "Registrazione del tempo con un solo tocco" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "Mobile-optimized reports" +#~ msgstr "Report ottimizzati per dispositivi mobili" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Installation" +#~ msgstr "Installazione" -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Iniziato alle" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Apri TimeTracker nel browser del tuo dispositivo mobile" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Cerca l'opzione \"Aggiungi alla schermata iniziale\"." -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "Regolazione" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Seguire le istruzioni di installazione specifiche del browser" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Avvia dalla schermata iniziale come un'app nativa" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "PWA Benefits" +#~ msgstr "Vantaggi della PWA" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "Ammin" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "Ammin" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "Temporizzatori intelligenti" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "Reset" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "Funzionalità offline per le funzioni di base" + +#~ msgid "Faster loading times" +#~ msgstr "Tempi di caricamento più rapidi" + +#~ msgid "Native app-like experience" +#~ msgstr "Esperienza simile a un'app nativa" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Notifiche push (dove supportate)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "Grafici a barre interattivi" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "Specifiche tecniche" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "Documentazione" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Risoluzione dei problemi e domande frequenti" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "Cosa succede se dimentico di fermare il timer?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "Il timer continuerà a funzionare finché" +#~ " non lo fermerai manualmente. Puoi " +#~ "vedere il tuo timer attivo nella " +#~ "dashboard e nella pagina del timer. " +#~ "Il timer persiste anche se chiudi " +#~ "il browser o riavvii il dispositivo. " +#~ "Se il rilevamento inattività è " +#~ "abilitato, il timer potrebbe interrompersi " +#~ "automaticamente dopo il periodo di " +#~ "timeout configurato." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "Posso modificare le voci relative all'orario dopo averle create?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Sì, puoi modificare qualsiasi inserimento " +#~ "dell'orario facendo clic sul pulsante di" +#~ " modifica nell'elenco degli inserimenti " +#~ "dell'orario. È possibile modificare il " +#~ "progetto, le ore di inizio/fine, le " +#~ "note, i tag, lo stato fatturabile " +#~ "e l'assegnazione delle attività. Gli " +#~ "amministratori possono modificare tutte le " +#~ "voci relative agli orari, mentre gli " +#~ "utenti normali possono modificare solo " +#~ "le proprie voci." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "Come posso tenere traccia del tempo per più progetti?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "Per impostazione predefinita, puoi avere " +#~ "un solo timer attivo alla volta. " +#~ "Per cambiare progetto, ferma il timer" +#~ " corrente e avviane uno nuovo per " +#~ "il diverso progetto. In alternativa, è" +#~ " possibile creare inserimenti manuali degli" +#~ " orari per lavori passati o " +#~ "configurare il sistema per consentire " +#~ "più timer attivi (impostazione " +#~ "amministratore)." + +#~ msgid "How do I export my time data?" +#~ msgstr "Come posso esportare i miei dati temporali?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Vai alla pagina Report e utilizza " +#~ "la funzione \"Esporta CSV\". È possibile" +#~ " applicare filtri per esportare dati " +#~ "specifici o esportare tutte le voci " +#~ "temporali. Il file CSV include tutti " +#~ "i dettagli relativi all'inserimento dei " +#~ "tempi e può essere aperto in Excel" +#~ " o in altre applicazioni per fogli" +#~ " di calcolo. È inoltre possibile " +#~ "configurare il delimitatore per diversi " +#~ "standard regionali." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "Qual è la differenza tra tempo fatturabile e non fatturabile?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "Il tempo fatturabile viene monitorato ai" +#~ " fini della fatturazione del cliente " +#~ "e ad esso può essere associata una" +#~ " tariffa oraria. Il tempo non " +#~ "fatturabile è relativo al lavoro interno" +#~ " che non viene addebitato ai clienti." +#~ " È possibile contrassegnare singoli " +#~ "inserimenti orari come fatturabili o non" +#~ " fatturabili e i progetti possono " +#~ "avere impostazioni fatturabili predefinite. " +#~ "Questa distinzione è fondamentale per " +#~ "una fatturazione accurata e un'analisi " +#~ "della redditività." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "Come posso creare una fattura dai miei inserimenti orari?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Passare a Fatture → Crea fattura, " +#~ "impostare i dettagli del cliente e " +#~ "del progetto, quindi utilizzare \"Genera " +#~ "da inserimenti orari\" per creare " +#~ "automaticamente elementi di fattura dal " +#~ "tempo tracciato. Puoi filtrare per " +#~ "intervallo di date e progetto e il" +#~ " sistema raggrupperà le voci temporali " +#~ "in modo intelligente. Rivedi gli " +#~ "elementi generati ed esportali come PDF" +#~ " professionale." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "Posso utilizzare TimeTracker sul mio dispositivo mobile?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "SÌ! TimeTracker è completamente reattivo " +#~ "e funziona perfettamente sui dispositivi " +#~ "mobili. Puoi installarlo come Progressive " +#~ "Web App (PWA) per un'esperienza di " +#~ "tipo nativo. L'interfaccia mobile include " +#~ "una barra delle schede inferiore per " +#~ "una navigazione semplice e controlli " +#~ "ottimizzati per il tocco per il " +#~ "monitoraggio del tempo in movimento." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "" +#~ "Come si utilizzano la tavolozza dei " +#~ "comandi e le scorciatoie da tastiera?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Premere il tasto punto interrogativo (?)" +#~ " per aprire la tavolozza dei comandi." +#~ " Da lì, puoi digitare per cercare " +#~ "qualsiasi azione o destinazione di " +#~ "navigazione. Utilizza sequenze di tastiera " +#~ "come \"g d\" per Dashboard, \"g " +#~ "p\" per Progetti o \"n e\" per " +#~ "Nuova voce. Premi Maiusc+? per vedere" +#~ " tutte le scorciatoie disponibili. Premi" +#~ " Ctrl+K (o Cmd+K su Mac) per la" +#~ " ricerca rapida." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "Come posso creare voci di tempo in blocco per più giorni?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Passare a Lavoro → Inserimento orario" +#~ " in blocco. Seleziona il tuo " +#~ "progetto, scegli un intervallo di date," +#~ " imposta gli orari di inizio e " +#~ "fine giornalieri e, facoltativamente, salta" +#~ " i fine settimana. Il sistema creerà" +#~ " voci di orario identiche per ogni" +#~ " giorno nell'intervallo. Questo è perfetto" +#~ " per registrare schemi di lavoro " +#~ "regolari o riempire il tempo passato " +#~ "quando hai lavorato per ore costanti." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "Cosa sono i modelli di immissione ore e come posso utilizzarli?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "I modelli di immissione delle ore " +#~ "consentono di salvare le configurazioni " +#~ "di immissione delle ore utilizzate di" +#~ " frequente. Quando crei un inserimento " +#~ "manuale dell'ora, seleziona \"Salva come " +#~ "modello\" per salvare il progetto, " +#~ "l'attività e le note. Successivamente, " +#~ "quando crei nuove voci, puoi selezionare" +#~ " un modello per inserire rapidamente " +#~ "questi dettagli. I modelli sono " +#~ "personali e visibili solo a te." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "Come posso tenere traccia delle spese e aggiungerle alle fatture?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Vai a Spese → Nuova spesa per " +#~ "registrare le spese aziendali. Carica le" +#~ " immagini delle ricevute, classifica la " +#~ "spesa e contrassegnala come fatturabile, " +#~ "se necessario. Quando crei le fatture," +#~ " puoi includere queste spese come " +#~ "voci. Le spese supportano i flussi " +#~ "di lavoro di approvazione, il " +#~ "monitoraggio dei rimborsi e possono " +#~ "essere collegate a progetti specifici." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "Posso utilizzare Markdown nelle descrizioni?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "SÌ! Le descrizioni di progetti e " +#~ "attività supportano la formattazione Markdown" +#~ " completa. È possibile utilizzare " +#~ "grassetto, corsivo, intestazioni, elenchi, " +#~ "collegamenti, blocchi di codice, tabelle " +#~ "e immagini. Ciò ti consente di " +#~ "creare documentazione ricca e ben " +#~ "formattata direttamente nei tuoi progetti " +#~ "e attività. L'editor Markdown include " +#~ "una modalità di anteprima e supporta " +#~ "il tema scuro." + +#~ msgid "Where can I get additional help?" +#~ msgstr "Dove posso ottenere ulteriore aiuto?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "Segnala problemi e richiedi funzionalità su" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "In qualità di amministratore, puoi " +#~ "accedere a ulteriori informazioni di " +#~ "sistema e diagnostica nel file" + +#~ msgid "section." +#~ msgstr "sezione." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "Hai ancora bisogno di aiuto?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "Non riesci a trovare quello che stai cercando? Ecco risorse aggiuntive:" + +#~ msgid "Complete Documentation" +#~ msgstr "" + +#~ msgid "Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started" +#~ msgstr "" + +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Pausa" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "Repository GitHub" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Report Issue" +#~ msgstr "Segnala problema" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Nessun timer attivo." +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Open support" +#~ msgstr "Supporto" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "Fine sessione" +#~ msgid "Search Results" +#~ msgstr "Risultati della ricerca" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "Cerca note o tag" -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "Results" +#~ msgstr "Risultati" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "Tempo" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "Sei sicuro di voler eliminare questa " +#~ "voce temporale? Questa azione non può" +#~ " essere annullata." -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "No results found" +#~ msgstr "Nessun risultato trovato" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "Prova una query diversa o controlla l'ortografia." -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "Impostazioni degli straordinari" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "ad esempio, incontro con il cliente, visita al sito" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "Ulteriori dettagli..." -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "e.g., Office, Home" +#~ msgstr "ad esempio, Ufficio, Casa" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "ad esempio, sito del cliente, aeroporto" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "Allinea a destra" +#~ msgid "e.g., 12345" +#~ msgstr "ad esempio, 12345" -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "Tieni traccia del tempo. Rimani organizzato." +#~ msgid "e.g., 12400" +#~ msgstr "ad esempio, 12400" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "Totale ore lavorate" +#~ msgid "e.g., VW Golf" +#~ msgstr "ad esempio VW Golf" -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "Avvisi attivi" +#~ msgid "e.g., ABC-123" +#~ msgstr "ad esempio, ABC-123" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "Monitoraggio del tempo" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "Back to Mileage" +#~ msgstr "Torniamo ai ruoli" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "Data da" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "Valore stimato" +#~ msgid "Add Point" +#~ msgstr "Aggiungi nota" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "Monitoraggio delle spese" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Track ID" +#~ msgstr "Seguito" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "Voci di tempo questa settimana" +#~ msgid "Idle" +#~ msgstr "Titolo" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "Settimana" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "L'anno scorso" +#~ msgid "Tracking" +#~ msgstr "Monitoraggio del tempo" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "GPS tracking started" +#~ msgstr "Inizia a monitorare il tempo" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Track point added" +#~ msgstr "Traccia il pagamento" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Voci recenti" +#~ msgid "GPS tracking stopped" +#~ msgstr "Inizia a monitorare il tempo" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "Visualizza tutto" +#~ msgid "Expense created" +#~ msgstr "Spesa respinta" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Riprendi: avvia un nuovo timer con le stesse proprietà" +#~ msgid "Filter Mileage" +#~ msgstr "Filtra chilometraggio" -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Modifica voce" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Voce duplicata" +#~ msgid "Purpose, location..." +#~ msgstr "Scopo, posizione..." -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Elimina la voce" +#~ msgid "Optional approval notes..." +#~ msgstr "Note di approvazione facoltative..." -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "Nessuna voce recente trovata." +#~ msgid "Rejection reason (required)" +#~ msgstr "Motivo del rifiuto (richiesto)" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "More navigation" +#~ msgstr "Navigazione mobile" -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Obiettivo settimanale" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Giorni rimasti" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Bisogno" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "per raggiungere l'obiettivo" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Nessun obiettivo settimanale" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Imposta un obiettivo temporale settimanale per monitorare i tuoi progressi" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Crea obiettivo" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "Principali progetti (30 giorni)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "Rapporto utente" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "Grafici a torta della distribuzione temporale" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "Nessuna attività negli ultimi 30 giorni." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "Inizia a monitorare il tempo" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Principali progetti (30 giorni)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Nessuna attività negli ultimi 30 giorni." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Main" +#~ msgstr "E-mail" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "Digita un comando o cerca..." -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "%(count)d virgolette duplicate" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "Errore durante la generazione del PDF: %(error)s" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "Supporto della piattaforma" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "La password deve contenere almeno 8 caratteri" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "Guida rapida" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "Modelli di posta elettronica" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Compito (facoltativo)" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Note (facoltativo)" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "Compito (facoltativo)" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "ad esempio, riunione, sviluppo, amministrazione" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "Registra nuovo pagamento" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "Pagamenti totali" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "Tariffe per il gateway" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Filter Payments" +#~ msgstr "Filtra pagamenti" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "ID" +#~ msgstr "Pagato" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "Elimina i pagamenti selezionati" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Modifica stato per i pagamenti selezionati" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "Fattura correlata" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Sostenere lo sviluppo" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "ad esempio, viaggio d'affari a Berlino" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "ad esempio DE, USA, GB" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "e.g., Berlin" +#~ msgstr "ad esempio, Berlino" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "Filtra reclami" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "Elimina rivendicazioni selezionate" -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Modifica stato per rivendicazioni selezionate" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "Ulteriori note su questa tariffa..." -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "Eliminare questa tariffa giornaliera?" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Elimina tariffa giornaliera" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "Progetto fatturabile" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "Ore stimate" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "Importo del budget" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "Nome dell'attività" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "Codice del progetto" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Create Project" +#~ msgstr "Crea progetto" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Documentazione completa e guida per l'utente" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Navigazione rapida" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Filtra sezioni..." +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Avvio rapido" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Report e analisi" +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Caratteristiche di produttività" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Funzionalità di amministrazione" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Utilizzo mobile" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "Documentazione" +#~ msgid "Kanban board columns" +#~ msgstr "Colonne della scheda Kanban" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Risoluzione dei problemi" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "Centro assistenza di TimeTracker" +#~ msgid "Edit swimlane" +#~ msgstr "Modifica corsia" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "Tutto quello che devi sapere per ottenere il massimo da TimeTracker" +#~ msgid "Column" +#~ msgstr "Colonna" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Inizia a monitorare il tempo" +#~ msgid "List View" +#~ msgstr "Visualizzazione elenco" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Visualizza progetti" +#~ msgid "Grid View" +#~ msgstr "Visualizzazione griglia" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Genera report" +#~ msgid "Rate" +#~ msgstr "Data" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "Token API" +#~ msgid "Edit Project" +#~ msgstr "Modifica progetto" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "Add Cost" +#~ msgstr "Aggiungi nota" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Guida rapida" +#~ msgid "Add Cost to Project" +#~ msgstr "Torniamo al progetto" -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "Per i nuovi utenti" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "ad esempio, Viaggio alla riunione del cliente" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Accedi con il tuo nome utente (non è richiesta alcuna password)" +#~ msgid "Brief description of the cost" +#~ msgstr "Breve descrizione di questa categoria..." -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Esplora la dashboard per visualizzare la panoramica" +#~ msgid "Select category" +#~ msgstr "Categoria" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Avvia il tuo primo timer su un progetto esistente" +#~ msgid "Materials" +#~ msgstr "Materiale" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Visualizza le tue voci di tempo nei rapporti" +#~ msgid "Software/Licenses" +#~ msgstr "ad esempio, Licenza software" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "Per gli amministratori" +#~ msgid "Additional details about this cost" +#~ msgstr "Ulteriori dettagli su questa regolazione" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Configura i clienti nella sezione Gestione clienti" +#~ msgid "Billable to client" +#~ msgstr "Torniamo al cliente" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Crea progetti e assegnali ai clienti" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Configurare le impostazioni di sistema (fuso orario, valuta, ecc.)" +#~ msgid "Add Extra Good" +#~ msgstr "Aggiungi extra buono" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Gestisci utenti e autorizzazioni" +#~ msgid "Add a product or service to" +#~ msgstr "Aggiungi un prodotto o un servizio a" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Suggerimento professionale:" +#~ msgid "Back to Project" +#~ msgstr "Torniamo al progetto" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "Utilizza l'interfaccia ottimizzata per dispositivi mobili per tenere traccia del tempo in movimento. Il timer continua a funzionare anche se chiudi il browser!" +#~ msgid "SKU/Product Code" +#~ msgstr "SKU/codice prodotto" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "Monitoraggio in tempo reale con rilevamento automatico di inattività e aggiornamenti WebSocket" +#~ msgid "What happens when you archive a project?" +#~ msgstr "Cosa succede quando archivi un progetto?" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Inserimento manuale" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "Il progetto verrà nascosto dagli elenchi di progetti attivi" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "Registra l'ora manualmente con orari di inizio e fine personalizzati" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "Non è possibile aggiungere nuove voci di orario a questo progetto" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Avvio di un timer" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "I dati e gli orari esistenti vengono conservati" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "" +#~ "Se necessario, puoi annullare l'archiviazione" +#~ " del progetto in un secondo momento" -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "Passare alla pagina Timer o alla dashboard" +#~ msgid "Reason for Archiving" +#~ msgstr "Motivo dell'archiviazione" -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Seleziona un progetto dal menu a discesa" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "ad esempio, Progetto completato, Contratto " +#~ "cliente terminato, Progetto annullato, ecc." -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "Facoltativamente, seleziona un'attività per un monitoraggio più dettagliato" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "L'aggiunta di un motivo aiuta con " +#~ "l'organizzazione del progetto e i " +#~ "riferimenti futuri." -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Aggiungi note su ciò su cui stai lavorando (facoltativo)" +#~ msgid "Quick Select" +#~ msgstr "Selezione rapida" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Aggiungi tag separati da virgole (facoltativo)" +#~ msgid "Project completed successfully" +#~ msgstr "Progetto completato con successo" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Fare clic su \"Avvia timer\"" +#~ msgid "Project Completed" +#~ msgstr "Progetto completato" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Funzionalità del timer" +#~ msgid "Client contract ended" +#~ msgstr "Contratto con il cliente terminato" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Visualizzazione della durata in tempo reale" +#~ msgid "Contract Ended" +#~ msgstr "Contratto terminato" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "Project cancelled by client" +#~ msgstr "Progetto annullato dal cliente" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Project on hold indefinitely" +#~ msgstr "Progetto sospeso a tempo indeterminato" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "On Hold" +#~ msgstr "In attesa" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Continua a funzionare se il browser si chiude" +#~ msgid "Maintenance period ended" +#~ msgstr "Il periodo di manutenzione è terminato" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Rilevamento automatico del minimo (configurabile)" +#~ msgid "Maintenance Ended" +#~ msgstr "Manutenzione terminata" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Un timer attivo per utente (configurabile)" +#~ msgid "Archive Project" +#~ msgstr "Progetto Archivio" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "Aggiornamenti in tempo reale di WebSocket" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" +#~ "Imposta un nuovo progetto per " +#~ "organizzare il tuo lavoro e tenere " +#~ "traccia del tempo in modo efficace" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Inserimento manuale dell'ora" +#~ msgid "Enter a descriptive project name" +#~ msgstr "Inserisci un nome di progetto descrittivo" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "Crea manualmente voci di orario quando è necessario registrare il tempo trascorso lontano dal computer o modificare le voci esistenti." +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "Scegli un nome chiaro e descrittivo che spieghi l'ambito del progetto" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Informazioni richieste" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Codice breve, ad esempio ABC" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Selezione del progetto" +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Facoltativo: breve tag mostrato sulle carte Kanban" -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Data e ora di inizio" +#~ msgid "Create new client" +#~ msgstr "Crea nuovo cliente" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Data e ora di fine" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "" +#~ "Fornire informazioni dettagliate sul progetto," +#~ " sugli obiettivi e sui risultati " +#~ "finali..." -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Informazioni facoltative" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" +#~ "Facoltativo: aggiungi contesto, obiettivi o" +#~ " requisiti specifici per il progetto" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Assegnazione dei compiti" +#~ msgid "Enable billing for this project" +#~ msgstr "Abilita la fatturazione per questo progetto" -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Descrizione/note" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "Lascia vuoto per progetti non fatturabili" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Tag per la categorizzazione" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "Numero dell'ordine d'acquisto, riferimento del contratto, ecc." -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Sostituzione dello stato fatturabile" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" +#~ "Facoltativo: aggiungi un numero di " +#~ "riferimento o un identificatore a scopo" +#~ " di fatturazione" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Funzionalità avanzate di immissione del tempo" +#~ msgid "e.g. 10000.00" +#~ msgstr "per esempio. 10000,00" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Inserimento in blocco" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "" +#~ "Facoltativo: imposta un budget totale " +#~ "del progetto per monitorare la spesa" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "Crea più voci orarie per giorni consecutivi con lo stesso progetto e durata. Perfetto per ritmi di lavoro regolari." +#~ msgid "Alert Threshold (%)" +#~ msgstr "Soglia di avviso (%)" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Modelli" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "Avvisa quando il budget utilizzato supera questa soglia" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "Salva le voci temporali utilizzate di frequente come modelli per un rapido riutilizzo. Salva progetto, attività e note." +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "Visualizza i tuoi orari su un calendario. Trascina e rilascia per riprogrammare o fai clic sulle date per aggiungere voci." +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Informazioni sul progetto" +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Nome descrittivo del progetto" +#~ msgid "Project Creation Tips" +#~ msgstr "Suggerimenti per la creazione di progetti" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Organizzazione cliente associata" +#~ msgid "Clear Naming" +#~ msgstr "Denominazione chiara" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Dettagli e ambito del progetto" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "" +#~ "Utilizzare nomi descrittivi che indichino " +#~ "chiaramente lo scopo del progetto" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Attivo, completato o archiviato" +#~ msgid "Billing Setup" +#~ msgstr "Configurazione della fatturazione" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Informazioni di fatturazione" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Imposta tariffe orarie adeguate in base" +#~ " alla complessità del progetto e al" +#~ " budget del cliente" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Se il tempo deve essere monitorato per la fatturazione" +#~ msgid "Detailed Description" +#~ msgstr "Descrizione dettagliata" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Tariffa per il calcolo del tempo fatturabile" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "Includere obiettivi del progetto, risultati finali e requisiti chiave" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Riferimento per la fatturazione" +#~ msgid "Client Selection" +#~ msgstr "Selezione del cliente" -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "Numero dell'ordine d'acquisto o codice di fatturazione" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "" +#~ "Scegli il cliente giusto per garantire" +#~ " la corretta organizzazione del progetto" -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Operazioni di progetto" +#~ msgid "Creating..." +#~ msgstr "Creazione..." -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Creare nuovi progetti con le relazioni con i clienti" +#~ msgid "Could not create client. Please try again." +#~ msgstr "Impossibile creare il cliente. Per favore riprova." -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Modifica i progetti esistenti per aggiornare i dettagli" +#~ msgid "Client created" +#~ msgstr "Cliente creato" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Archivia progetti da nascondere ai timer (conserva i dati)" +#~ msgid "Network error while creating client" +#~ msgstr "Errore di rete durante la creazione del client" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Elimina progetti (rimuove tutte le voci di tempo associate)" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "Dashboard e analisi del progetto" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Migliori pratiche" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Utilizza nomi di progetto descrittivi" +#~ msgid "Budget Analysis" +#~ msgstr "Analisi del bilancio" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Imposta tariffe orarie precise per la fatturazione" +#~ msgid "All Time" +#~ msgstr "Tutto il tempo" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Archivia invece di eliminare quando possibile" +#~ msgid "Last 7 Days" +#~ msgstr "Ultimi 7 giorni" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Utilizza i riferimenti di fatturazione per il monitoraggio esterno" +#~ msgid "Last 30 Days" +#~ msgstr "Ultimi 30 giorni" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "Il sistema di gestione dei clienti aiuta a organizzare il lavoro da parte delle organizzazioni clienti, prevenendo errori e semplificando la creazione dei progetti." +#~ msgid "Last 3 Months" +#~ msgstr "Ultimi 3 mesi" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Informazioni sul cliente" +#~ msgid "Last Year" +#~ msgstr "L'anno scorso" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Nome dell'organizzazione" +#~ msgid "estimated" +#~ msgstr "stimato" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Nome dell'azienda o del cliente" +#~ msgid "Budget Used" +#~ msgstr "Budget utilizzato" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Dettagli di contatto principali" +#~ msgid "of budget" +#~ msgstr "di bilancio" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "E-mail e telefono" +#~ msgid "Tasks Complete" +#~ msgstr "Attività completate" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Informazioni sui contatti" +#~ msgid "completion" +#~ msgstr "completamento" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Indirizzo commerciale" +#~ msgid "Team Members" +#~ msgstr "Membri della squadra" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Vantaggi" +#~ msgid "contributing" +#~ msgstr "contribuendo" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "La selezione a discesa impedisce errori di battitura" +#~ msgid "Budget vs. Actual" +#~ msgstr "Budget rispetto al valore effettivo" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Le tariffe predefinite popolano automaticamente i progetti" +#~ msgid "No budget set for this project" +#~ msgstr "Nessun budget impostato per questo progetto" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Denominazione client coerente" +#~ msgid "Task Status Distribution" +#~ msgstr "Distribuzione dello stato delle attività" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Organizzazione del progetto più semplice" +#~ msgid "No tasks created yet" +#~ msgstr "Nessuna attività ancora creata" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Conteggio progetti" +#~ msgid "Team Member Contributions" +#~ msgstr "Contributi dei membri del team" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Progetti totali e attivi" +#~ msgid "No time entries recorded yet" +#~ msgstr "Nessun inserimento orario ancora registrato" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Totale ore lavorate" +#~ msgid "Time Tracking Timeline" +#~ msgstr "Cronologia del monitoraggio del tempo" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Stima dei costi" +#~ msgid "Select a time period to view timeline" +#~ msgstr "Seleziona un periodo di tempo per visualizzare la sequenza temporale" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Importi di fatturazione stimati" +#~ msgid "Team Member Details" +#~ msgstr "Dettagli sui membri del team" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "Suddividi i progetti in attività gestibili con monitoraggio dettagliato e monitoraggio dei progressi." +#~ msgid "tasks" +#~ msgstr "compiti" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Proprietà dell'attività" +#~ msgid "No team members have logged time yet" +#~ msgstr "Nessun membro del team ha ancora registrato il tempo" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Nome e descrizione" +#~ msgid "Attention Required" +#~ msgstr "Attenzione richiesta" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Chiara identificazione dell'attività" +#~ msgid "task(s) are overdue" +#~ msgstr "le attività sono scadute" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Livelli di priorità" +#~ msgid "Edit Cost" +#~ msgstr "Costo unitario" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Basso, Medio, Alto, Urgente" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Date di scadenza" +#~ msgid "Update Cost" +#~ msgstr "Aggiorna ruoli" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Monitoraggio delle scadenze" +#~ msgid "Edit Extra Good" +#~ msgstr "Modifica Extra buono" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Compito" +#~ msgid "Manage products and services for this project" +#~ msgstr "Gestisci prodotti e servizi per questo progetto" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Proprietà dell'attività" +#~ msgid "Total Goods" +#~ msgstr "Beni totali" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Monitoraggio dello stato" +#~ msgid "Billable Amount" +#~ msgstr "Importo fatturabile" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "Da fare - Non iniziato" +#~ msgid "Categories" +#~ msgstr "Categorie" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "In corso - Attualmente funzionante" +#~ msgid "Invoiced" +#~ msgstr "Fatturato" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Revisione: pronto per la revisione" +#~ msgid "Non-billable" +#~ msgstr "Non fatturabile" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Fatto - Completato" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Sei sicuro di voler eliminare questo bene extra?" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Annullato: non necessario" +#~ msgid "Delete Extra Good" +#~ msgstr "Elimina Extra buono" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Funzionalità di monitoraggio del tempo" +#~ msgid "No extra goods found for this project" +#~ msgstr "Nessun bene extra trovato per questo progetto" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Avvia i timer direttamente dalle attività" +#~ msgid "Add Your First Good" +#~ msgstr "Aggiungi il tuo primo bene" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Collega le voci di tempo ad attività specifiche" +#~ msgid "Breakdown by Category" +#~ msgstr "Ripartizione per categoria" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Tieni traccia delle ore stimate e effettive" +#~ msgid "item(s)" +#~ msgstr "elementi)" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Monitora automaticamente l'avanzamento delle attività" +#~ msgid "Filter Projects" +#~ msgstr "Filtra progetti" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Visualizzazioni attività" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Le mie attività: le attività assegnate" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Tutte le attività: elenco completo delle attività" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Attività scadute: elementi scaduti" +#~ msgid "Mark project as Inactive?" +#~ msgstr "Contrassegnare il progetto come inattivo?" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Attività del progetto: attività all'interno dei progetti" +#~ msgid "Change Project Status" +#~ msgstr "Modifica lo stato del progetto" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Funzionalità di collaborazione" +#~ msgid "Activate project?" +#~ msgstr "Attivare il progetto?" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Commenti sulle attività: discussioni in thread sulle attività" +#~ msgid "Activate Project" +#~ msgstr "Attiva progetto" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Supporto Markdown: formattazione ricca nelle descrizioni" +#~ msgid "Archive" +#~ msgstr "Archivio" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Menzioni utente: tagga i membri del team (se abilitato)" +#~ msgid "Unarchive project?" +#~ msgstr "Vuoi annullare l'archiviazione del progetto?" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Allegati file: allega file alle attività (se abilitato)" +#~ msgid "Unarchive Project" +#~ msgstr "Progetto di estrazione dall'archivio" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Formattazione del ribasso" +#~ msgid "Unarchive" +#~ msgstr "Annulla l'archiviazione" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "Le descrizioni delle attività e del progetto supportano Markdown:" +#~ msgid "Delete Project" +#~ msgstr "Elimina progetto" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Grassetto**, *Corsivo*, ~~Barrato~~" +#~ msgid "Archive Information" +#~ msgstr "Informazioni sull'archivio" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# Intestazioni, - Elenchi, [Link](url)" +#~ msgid "Archived on:" +#~ msgstr "Archiviato su:" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```blocchi di codice```, tabelle, immagini" +#~ msgid "Archived by:" +#~ msgstr "Archiviato da:" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "Visualizza il tuo flusso di lavoro con una scheda Kanban drag-and-drop per una gestione intuitiva delle attività." +#~ msgid "Reason:" +#~ msgstr "Motivo:" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Caratteristiche della scheda" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Colonne personalizzabili corrispondenti agli stati delle attività" +#~ msgid "Budget Overview" +#~ msgstr "Panoramica del budget" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Trascina e rilascia le attività tra le colonne" +#~ msgid "Over" +#~ msgstr "Sopra" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Filtra per progetto, utente o priorità" +#~ msgid "View Full Budget Analysis" +#~ msgstr "Visualizza l'analisi completa del budget" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Ricerca rapida in tutte le attività" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Utilizzando la lavagna Kanban" +#~ msgid "Tasks for this project" +#~ msgstr "Compiti per questo progetto" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Accesso dal menu Attività o dalla pagina del progetto" +#~ msgid "Due" +#~ msgstr "Dovuto" -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Trascina le attività su colonne diverse per modificare lo stato" +#~ msgid "Estimated" +#~ msgstr "Stima" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Fare clic su una scheda attività per visualizzare/modificare i dettagli" +#~ msgid "No tasks for this project." +#~ msgstr "Nessuna attività per questo progetto." -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Utilizza i filtri per concentrarti su un lavoro specifico" +#~ msgid "Move up" +#~ msgstr "trasferito a" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "La lavagna Kanban è perfetta per la pianificazione degli sprint e gli standup quotidiani. Ogni colonna rappresenta una fase del tuo flusso di lavoro!" +#~ msgid "Move down" +#~ msgstr "trasferito a" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Monitoraggio delle spese" +#~ msgid "Manual entry" +#~ msgstr "Inserimento manuale" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "Tieni traccia delle spese aziendali, gestisci le ricevute e gestisci i rimborsi in modo efficiente." +#~ msgid "From stock" +#~ msgstr "Scorte basse" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Caratteristiche di spesa" +#~ msgid "Duplicate" +#~ msgstr "Duplicato" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Classificare le spese (viaggio, pasti, forniture, ecc.)" +#~ msgid "Mark as Sent" +#~ msgstr "Segna come inviato" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Allega immagini e documenti della ricevuta" +#~ msgid "Accepted" +#~ msgstr "Accettato" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Tieni traccia di importi, tasse e metodi di pagamento" +#~ msgid "Create Your First Quote" +#~ msgstr "Crea il tuo primo preventivo" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Flusso di lavoro di approvazione per le richieste di spesa" +#~ msgid "Learn More" +#~ msgstr "Saperne di più" -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Fatturazione e rimborso" +#~ msgid "Back to Quote" +#~ msgstr "Torna alla citazione" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Contrassegnare le spese come fatturabili ai clienti" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" +#~ "Accettando questo preventivo verrà creato " +#~ "un nuovo progetto con il budget " +#~ "del preventivo." -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Includere le spese nelle fatture dei clienti" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "Il progetto verrà realizzato con il budget ricavato dal preventivo" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Tieni traccia dello stato del rimborso" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Accetta preventivo e crea progetto" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Collegare le spese a progetti specifici" +#~ msgid "Create Quote" +#~ msgstr "Crea preventivo" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Registrare le spese" +#~ msgid "Quote title" +#~ msgstr "Titolo della citazione" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Inserisci i dettagli e carica la ricevuta" +#~ msgid "Quote description" +#~ msgstr "Descrizione del preventivo" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Invia per l'approvazione" +#~ msgid "Quote line items" +#~ msgstr "Elementi di preventivo" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "L'amministratore esamina e approva" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Fattura/Rimborso" +#~ msgid "Add line" +#~ msgstr "Scadenza" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Aggiungi alla fattura o rimborsa" +#~ msgid "Line type" +#~ msgstr "Tipo di contenuto" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Traccia il pagamento" +#~ msgid "Stock" +#~ msgstr "Scorte basse" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Monitorare lo stato del rimborso" +#~ msgid "Line items subtotal" +#~ msgstr "Totale parziale degli articoli" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Fatturazione professionale" +#~ msgid "Costs" +#~ msgstr "Costo" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Generazione PDF professionale" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "ad esempio VIAGGI, PASTI" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Marchi e loghi aziendali" +#~ msgid "Add cost" +#~ msgstr "Aggiungi nota" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Numerazione automatica delle fatture" +#~ msgid "Costs subtotal" +#~ msgstr "Totale parziale degli articoli" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Calcoli fiscali" +#~ msgid "Extra goods" +#~ msgstr "Beni extra" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Integrazione temporale" +#~ msgid "Products, licenses, hardware" +#~ msgstr "Prodotti, materiali, licenze e altri beni" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Generare da voci di tempo" +#~ msgid "Add good" +#~ msgstr "Aggiungi bene" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Raggruppamento intelligente per attività/progetto" +#~ msgid "Goods subtotal" +#~ msgstr "Totale parziale delle merci" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Evita la doppia fatturazione" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Citazioni totali" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Utilizza le tariffe orarie del progetto" +#~ msgid "Financial Details" +#~ msgstr "Dettagli finanziari" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Imposta i dettagli del cliente e del progetto" +#~ msgid "Select payment terms" +#~ msgstr "Seleziona i termini di pagamento" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Aggiungi elementi" +#~ msgid "Due on Receipt" +#~ msgstr "A causa della ricevuta" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Genera dal tempo o aggiungi manualmente" +#~ msgid "Or enter custom payment terms" +#~ msgstr "Oppure inserisci termini di pagamento personalizzati" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Rivedi e invia" +#~ msgid "Use custom terms" +#~ msgstr "Utilizza termini personalizzati" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "Esporta PDF e aggiorna lo stato" +#~ msgid "Discount" +#~ msgstr "Sconto" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Monitorare lo stato e i pagamenti" +#~ msgid "Discount Type" +#~ msgstr "Tipo di sconto" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Rapporti standard" +#~ msgid "No Discount" +#~ msgstr "Nessuno sconto" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Rapporto di progetto: suddivisione temporale per progetto" +#~ msgid "Percentage (%)" +#~ msgstr "Percentuale (%)" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Rapporto utente: metriche sulle prestazioni individuali" +#~ msgid "Fixed Amount" +#~ msgstr "Importo fisso" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Rapporto riepilogativo: parametri e tendenze principali" +#~ msgid "Discount Amount" +#~ msgstr "Importo dello sconto" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Rapporto sull'immissione del tempo: registri temporali dettagliati" +#~ msgid "0.00" +#~ msgstr "0,00" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Opzioni di esportazione" +#~ msgid "Coupon Code" +#~ msgstr "Codice coupon" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "Esportazione CSV: per analisi esterne" +#~ msgid "Optional coupon code" +#~ msgstr "Codice coupon opzionale" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Delimitatori configurabili" +#~ msgid "Discount Reason" +#~ msgstr "Motivo dello sconto" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Intervalli di date personalizzati" +#~ msgid "Reason for discount" +#~ msgstr "Motivo dello sconto" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Esportazione di dati filtrati" +#~ msgid "Approval Workflow" +#~ msgstr "Flusso di lavoro di approvazione" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Opzioni filtro" +#~ msgid "Requires approval before sending" +#~ msgstr "Richiede l'approvazione prima dell'invio" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Intervallo di date: date di inizio e fine personalizzate" +#~ msgid "Additional Information" +#~ msgstr "Informazioni aggiuntive" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Progetto: filtra per progetti specifici" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Note interne (non visibili al cliente)" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Utente: filtra per membri del team" +#~ msgid "These notes are only visible to your team" +#~ msgstr "Queste note sono visibili solo al tuo team" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Cliente: filtra per organizzazione cliente" +#~ msgid "Terms and Conditions" +#~ msgstr "Termini e Condizioni" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Filtri salvati: salva i filtri utilizzati di frequente" +#~ msgid "Terms and conditions" +#~ msgstr "Termini e Condizioni" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Analisi visiva" +#~ msgid "These terms will be visible to the client" +#~ msgstr "Questi termini saranno visibili al cliente" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Grafici a barre interattivi" +#~ msgid "Edit Quote" +#~ msgstr "Modifica preventivo" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Grafici a torta della distribuzione temporale" +#~ msgid "Client cannot be changed" +#~ msgstr "Il cliente non può essere modificato" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Analisi dell'andamento nel tempo" +#~ msgid "Update Quote" +#~ msgstr "Aggiorna preventivo" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Grafici ottimizzati per dispositivi mobili" +#~ msgid "Total Quotes" +#~ msgstr "Citazioni totali" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "Utilizza i filtri salvati per accedere rapidamente alle visualizzazioni dei rapporti più comuni. Salva i filtri per revisioni settimanali, fatturazione mensile o monitoraggio di progetti specifici!" +#~ msgid "Acceptance Rate" +#~ msgstr "Tasso di accettazione" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "Aumenta la tua efficienza con le scorciatoie da tastiera, la tavolozza dei comandi e le funzionalità di automazione." +#~ msgid "Avg Quote Value" +#~ msgstr "Valore preventivo medio" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Tavolozza dei comandi" +#~ msgid "Quotes by Status" +#~ msgstr "Citazioni per stato" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Accedi istantaneamente a qualsiasi funzionalità senza lasciare la tastiera" +#~ msgid "Top Clients by Quotes" +#~ msgstr "Migliori clienti per preventivo" -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Apertura della tavolozza dei comandi" +#~ msgid "Filter Quotes" +#~ msgstr "Filtra citazioni" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Premere il tasto del punto interrogativo" +#~ msgid "Search quotes..." +#~ msgstr "Cerca citazioni..." -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "Ricerca rapida" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "Sei sicuro di voler duplicare?" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Vai a Progetti" +#~ msgid "quote(s)?" +#~ msgstr "citazione/i?" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Vai a Attività" +#~ msgid "Are you sure you want to mark" +#~ msgstr "Sei sicuro di voler contrassegnare?" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Nuova immissione dell'ora" +#~ msgid "quote(s) as sent?" +#~ msgstr "citazione(i) come inviata?" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Scorciatoie da tastiera" +#~ msgid "QUOTE" +#~ msgstr "CITAZIONE" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "Naviga più velocemente con i comandi da tastiera. Press Shift+? per vedere tutte le scorciatoie." +#~ msgid "Quote #" +#~ msgstr "Citazione #" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Ricerca globale" +#~ msgid "Quote For" +#~ msgstr "Citazione per" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "Trova rapidamente progetti, attività, clienti e voci di orario da qualsiasi punto dell'app." +#~ msgid "Subtotal After Discount:" +#~ msgstr "Subtotale dopo lo sconto:" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "Notifiche e-mail" +#~ msgid "Description:" +#~ msgstr "Descrizione:" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "Ricevi notifiche via e-mail su assegnazioni di attività, fatture scadute e riepiloghi settimanali." +#~ msgid "Subtotal After Discount" +#~ msgstr "Subtotale dopo lo sconto" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Funzionalità dell'amministratore" +#~ msgid "Approval not yet requested" +#~ msgstr "Approvazione non ancora richiesta" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Crea nuovi utenti con l'autenticazione flessibile" +#~ msgid "Pending approval" +#~ msgstr "In attesa di approvazione" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Assegna ruoli personalizzati con autorizzazioni specifiche" +#~ msgid "Rejected by" +#~ msgstr "Rifiutato da" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Attiva/disattiva gli account utente" +#~ msgid "Request Approval Again" +#~ msgstr "Richiedi nuovamente l'approvazione" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Visualizza le statistiche e l'attività degli utenti" +#~ msgid "Send Quote" +#~ msgstr "Invia preventivo" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Genera token API per gli utenti" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "Sei sicuro di voler rifiutare questo preventivo?" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Controllo degli accessi" +#~ msgid "Delete Quote" +#~ msgstr "Elimina preventivo" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Sistema di autorizzazioni granulare basato sui ruoli" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Commento interno (non visibile al cliente)" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Ruoli personalizzati con accesso granulare" +#~ msgid "Internal" +#~ msgstr "Interno" -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Controlli di accesso ai dati utente" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "Sei sicuro di voler eliminare questo commento?" -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "Integrazione OIDC/SSO (Azure AD, Authelia, ecc.)" +#~ msgid "Write a reply..." +#~ msgstr "Scrivi una risposta..." -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "Gestione dei token API per le integrazioni" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Nessun commento ancora Inizia la " +#~ "conversazione aggiungendo il primo commento." -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Metodi di autenticazione" +#~ msgid "Sent At" +#~ msgstr "Inviato a" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Solo nome utente (uso interno semplice)" +#~ msgid "Accepted At" +#~ msgstr "Accettato a" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (autenticazione aziendale)" +#~ msgid "Send Quote via Email" +#~ msgstr "Invia preventivo tramite e-mail" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Entrambi i metodi contemporaneamente" +#~ msgid "Recipient Email" +#~ msgstr "E-mail del destinatario" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Assegnazione automatica dei ruoli tramite gruppi" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "Citazione %(quote_number)s" -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Gestione di ruoli e autorizzazioni" +#~ msgid "Custom Message (Optional)" +#~ msgstr "Messaggio personalizzato (facoltativo)" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Crea ruoli personalizzati oltre Amministratore/Utente" +#~ msgid "Add a custom message to the email..." +#~ msgstr "Aggiungi un messaggio personalizzato all'e-mail..." -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Imposta autorizzazioni granulari per funzionalità" +#~ msgid "Attach PDF" +#~ msgstr "Allega PDF" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Assegnare agli utenti più ruoli" +#~ msgid "Approve Quote" +#~ msgstr "Approva preventivo" -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Visualizza e gestisci tutte le autorizzazioni" +#~ msgid "Notes (Optional)" +#~ msgstr "Note (facoltativo)" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Impostazioni generali" +#~ msgid "Add approval notes..." +#~ msgstr "Aggiungi note di approvazione..." -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Impostazioni di fuso orario e locale" +#~ msgid "Reject Quote Approval" +#~ msgstr "Rifiutare l'approvazione del preventivo" -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Configurazione valutaria" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Si prega di fornire un motivo per il rifiuto..." -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Regole di arrotondamento temporale" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Sei sicuro di voler eliminare questo " +#~ "preventivo? Questa azione non può essere" +#~ " annullata." -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Impostazioni di autoregistrazione" +#~ msgid "Create Recurring Invoice" +#~ msgstr "Crea fattura ricorrente" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Impostazioni del timer" +#~ msgid "Update Recurring Invoice" +#~ msgstr "" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Configurazione del timeout di inattività" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "" +#~ "Automatizza la generazione di fatture " +#~ "per la fatturazione basata su " +#~ "abbonamento" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Modalità timer attivo singolo" +#~ msgid "Frequency" +#~ msgstr "Frequenza" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Preferenze di visualizzazione del timer" +#~ msgid "Next Run" +#~ msgstr "Prossima corsa" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Impostazioni di notifica" +#~ msgid "Generate Now" +#~ msgstr "Genera ora" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Gestione della banca dati" +#~ msgid "Template Details" +#~ msgstr "Dettagli del modello" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Creare backup manuali del database" +#~ msgid "Invoice Settings" +#~ msgstr "Impostazioni della fattura" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Visualizza lo stato della migrazione del database" +#~ msgid "Recently Generated Invoices" +#~ msgstr "Fatture generate di recente" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Monitorare le prestazioni del database" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Pulisci vecchi dati e registri" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Monitoraggio del sistema" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Visualizza le informazioni e l'integrità del sistema" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Monitorare le prestazioni dell'applicazione" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Esaminare i log e gli errori di sistema" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Funzionalità ottimizzate per dispositivi mobili" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Ottimizzato per telefoni e tablet" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Interfaccia touch-friendly" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "Layout adattivi per tutte le dimensioni dello schermo" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Contrasto elevato per la visibilità all'aperto" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Navigazione mobile" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Barra delle schede inferiore per un facile accesso" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Accesso rapido alla dashboard" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Registrazione del tempo con un solo tocco" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Report ottimizzati per dispositivi mobili" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Installazione" +#~ msgid "Assign To" +#~ msgstr "Assegna a" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Apri TimeTracker nel browser del tuo dispositivo mobile" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Cerca l'opzione \"Aggiungi alla schermata iniziale\"." +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Seguire le istruzioni di installazione specifiche del browser" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Avvia dalla schermata iniziale come un'app nativa" +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "Vantaggi della PWA" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Funzionalità offline per le funzioni di base" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Tempi di caricamento più rapidi" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Esperienza simile a un'app nativa" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Notifiche push (dove supportate)" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "Grafici a barre interattivi" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "Specifiche tecniche" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Add table to report" +#~ msgstr "Rapporti disponibili" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "Documentazione" +#~ msgid "Add chart to report" +#~ msgstr "Rapporti standard" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Risoluzione dei problemi e domande frequenti" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "Cosa succede se dimentico di fermare il timer?" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "Il timer continuerà a funzionare finché non lo fermerai manualmente. Puoi vedere il tuo timer attivo nella dashboard e nella pagina del timer. Il timer persiste anche se chiudi il browser o riavvii il dispositivo. Se il rilevamento inattività è abilitato, il timer potrebbe interrompersi automaticamente dopo il periodo di timeout configurato." +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "Posso modificare le voci relative all'orario dopo averle create?" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "Sì, puoi modificare qualsiasi inserimento dell'orario facendo clic sul pulsante di modifica nell'elenco degli inserimenti dell'orario. È possibile modificare il progetto, le ore di inizio/fine, le note, i tag, lo stato fatturabile e l'assegnazione delle attività. Gli amministratori possono modificare tutte le voci relative agli orari, mentre gli utenti normali possono modificare solo le proprie voci." +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "Come posso tenere traccia del tempo per più progetti?" +#~ msgid "Add summary to report" +#~ msgstr "Rapporto riepilogativo" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "Per impostazione predefinita, puoi avere un solo timer attivo alla volta. Per cambiare progetto, ferma il timer corrente e avviane uno nuovo per il diverso progetto. In alternativa, è possibile creare inserimenti manuali degli orari per lavori passati o configurare il sistema per consentire più timer attivi (impostazione amministratore)." +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "Come posso esportare i miei dati temporali?" +#~ msgid "Report canvas" +#~ msgstr "Tela trasparente" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "Vai alla pagina Report e utilizza la funzione \"Esporta CSV\". È possibile applicare filtri per esportare dati specifici o esportare tutte le voci temporali. Il file CSV include tutti i dettagli relativi all'inserimento dei tempi e può essere aperto in Excel o in altre applicazioni per fogli di calcolo. È inoltre possibile configurare il delimitatore per diversi standard regionali." +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "Qual è la differenza tra tempo fatturabile e non fatturabile?" +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "Il tempo fatturabile viene monitorato ai fini della fatturazione del cliente e ad esso può essere associata una tariffa oraria. Il tempo non fatturabile è relativo al lavoro interno che non viene addebitato ai clienti. È possibile contrassegnare singoli inserimenti orari come fatturabili o non fatturabili e i progetti possono avere impostazioni fatturabili predefinite. Questa distinzione è fondamentale per una fatturazione accurata e un'analisi della redditività." +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "Come posso creare una fattura dai miei inserimenti orari?" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "Passare a Fatture → Crea fattura, impostare i dettagli del cliente e del progetto, quindi utilizzare \"Genera da inserimenti orari\" per creare automaticamente elementi di fattura dal tempo tracciato. Puoi filtrare per intervallo di date e progetto e il sistema raggrupperà le voci temporali in modo intelligente. Rivedi gli elementi generati ed esportali come PDF professionale." +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "Posso utilizzare TimeTracker sul mio dispositivo mobile?" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "SÌ! TimeTracker è completamente reattivo e funziona perfettamente sui dispositivi mobili. Puoi installarlo come Progressive Web App (PWA) per un'esperienza di tipo nativo. L'interfaccia mobile include una barra delle schede inferiore per una navigazione semplice e controlli ottimizzati per il tocco per il monitoraggio del tempo in movimento." +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "Come si utilizzano la tavolozza dei comandi e le scorciatoie da tastiera?" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "Premere il tasto punto interrogativo (?) per aprire la tavolozza dei comandi. Da lì, puoi digitare per cercare qualsiasi azione o destinazione di navigazione. Utilizza sequenze di tastiera come \"g d\" per Dashboard, \"g p\" per Progetti o \"n e\" per Nuova voce. Premi Maiusc+? per vedere tutte le scorciatoie disponibili. Premi Ctrl+K (o Cmd+K su Mac) per la ricerca rapida." +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "Come posso creare voci di tempo in blocco per più giorni?" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "Passare a Lavoro → Inserimento orario in blocco. Seleziona il tuo progetto, scegli un intervallo di date, imposta gli orari di inizio e fine giornalieri e, facoltativamente, salta i fine settimana. Il sistema creerà voci di orario identiche per ogni giorno nell'intervallo. Questo è perfetto per registrare schemi di lavoro regolari o riempire il tempo passato quando hai lavorato per ore costanti." +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "Cosa sono i modelli di immissione ore e come posso utilizzarli?" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "I modelli di immissione delle ore consentono di salvare le configurazioni di immissione delle ore utilizzate di frequente. Quando crei un inserimento manuale dell'ora, seleziona \"Salva come modello\" per salvare il progetto, l'attività e le note. Successivamente, quando crei nuove voci, puoi selezionare un modello per inserire rapidamente questi dettagli. I modelli sono personali e visibili solo a te." +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "Come posso tenere traccia delle spese e aggiungerle alle fatture?" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "Vai a Spese → Nuova spesa per registrare le spese aziendali. Carica le immagini delle ricevute, classifica la spesa e contrassegnala come fatturabile, se necessario. Quando crei le fatture, puoi includere queste spese come voci. Le spese supportano i flussi di lavoro di approvazione, il monitoraggio dei rimborsi e possono essere collegate a progetti specifici." +#~ msgid "Private" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "Posso utilizzare Markdown nelle descrizioni?" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "SÌ! Le descrizioni di progetti e attività supportano la formattazione Markdown completa. È possibile utilizzare grassetto, corsivo, intestazioni, elenchi, collegamenti, blocchi di codice, tabelle e immagini. Ciò ti consente di creare documentazione ricca e ben formattata direttamente nei tuoi progetti e attività. L'editor Markdown include una modalità di anteprima e supporta il tema scuro." +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "Dove posso ottenere ulteriore aiuto?" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Segnala problemi e richiedi funzionalità su" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "In qualità di amministratore, puoi accedere a ulteriori informazioni di sistema e diagnostica nel file" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "sezione." +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "Hai ancora bisogno di aiuto?" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "Non riesci a trovare quello che stai cercando? Ecco risorse aggiuntive:" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "Repository GitHub" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Segnala problema" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "Supporto" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Risultati della ricerca" +#~ msgid "Export Time Entries" +#~ msgstr "Voci temporali recenti" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Cerca note o tag" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Risultati" +#~ msgid "Export format" +#~ msgstr "Formato di esportazione" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "Sei sicuro di voler eliminare questa voce temporale? Questa azione non può essere annullata." +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "ad esempio, sviluppo, riunione, urgente" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "Nessun risultato trovato" +#~ msgid "Reset Filters" +#~ msgstr "Filtri salvati" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Prova una query diversa o controlla l'ortografia." +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "ad esempio, incontro con il cliente, visita al sito" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Ulteriori dettagli..." +#~ msgid "Please select both start and end dates." +#~ msgstr "Intervallo di date: date di inizio e fine personalizzate" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "ad esempio, Ufficio, Casa" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "La data di inizio deve essere antecedente alla data di fine" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "ad esempio, sito del cliente, aeroporto" +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "ad esempio, 12345" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "ad esempio, 12400" +#~ msgid "Payments Received" +#~ msgstr "Campi di pagamento" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "ad esempio VW Golf" +#~ msgid "Net Received" +#~ msgstr "Ricevuto" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "ad esempio, ABC-123" +#~ msgid "After fees" +#~ msgstr "Tariffe per il gateway" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "Monitoraggio del tempo" +#~ msgid "Date Range & Comparison" +#~ msgstr "Intervallo di date e confronto" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "Torniamo ai ruoli" +#~ msgid "Quick Date Ranges" +#~ msgstr "Intervalli di date rapidi" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "This Week" +#~ msgstr "Settimana" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "Data da" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "Aggiungi nota" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "Monitoraggio delle spese" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "Seguito" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "Titolo" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "This Month" +#~ msgstr "Mese" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "This Year" +#~ msgstr "L'anno scorso" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "Monitoraggio del tempo" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "Inizia a monitorare il tempo" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "Traccia il pagamento" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "Inizia a monitorare il tempo" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "Spesa respinta" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Filtra chilometraggio" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "Intervalli di date personalizzati" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Scopo, posizione..." +#~ msgid "Comparison View" +#~ msgstr "Vista comparativa" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Note di approvazione facoltative..." +#~ msgid "Week in Review" +#~ msgstr "Anteprima dal vivo" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Motivo del rifiuto (richiesto)" +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "Navigazione mobile" +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "E-mail" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Digita un comando o cerca..." +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Comparison Results" +#~ msgstr "Risultati del confronto" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "Esporta report" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "Formato di esportazione" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "Esporta report" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Rapporti pianificati" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "Importazione CSV" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "Esportare" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "Report Types" +#~ msgstr "Tipi di rapporto" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "Relazione sul progetto" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "User Report" +#~ msgstr "Rapporto utente" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "Rapporto riepilogativo" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "Rapporto sulle attività" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "Voci di tempo" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "Voci recenti" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "No scheduled reports yet." +#~ msgstr "Rapporti pianificati" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "Add Scheduled Report" +#~ msgstr "Rapporti pianificati" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Please set a date range" +#~ msgstr "Intervalli di date personalizzati" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Registra nuovo pagamento" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Pagamenti totali" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Tariffe per il gateway" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Filtra pagamenti" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "Pagato" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Elimina i pagamenti selezionati" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Modifica stato per i pagamenti selezionati" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Fattura correlata" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "ad esempio, viaggio d'affari a Berlino" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "ad esempio DE, USA, GB" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "ad esempio, Berlino" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Filtra reclami" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Elimina rivendicazioni selezionate" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Modifica stato per rivendicazioni selezionate" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Ulteriori note su questa tariffa..." +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "Eliminare questa tariffa giornaliera?" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Elimina tariffa giornaliera" +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "No data for the selected period." +#~ msgstr "Nessun dato di vendita trovato per il periodo selezionato." -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Progetto fatturabile" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Ore stimate" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Importo del budget" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "Nome dell'attività" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Codice del progetto" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Crea progetto" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Colonne della scheda Kanban" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Modifica corsia" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Colonna" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Visualizzazione elenco" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Visualizzazione griglia" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "Data" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Modifica progetto" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "Aggiungi nota" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "Torniamo al progetto" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "ad esempio, Viaggio alla riunione del cliente" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "Breve descrizione di questa categoria..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "Categoria" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "Materiale" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "ad esempio, Licenza software" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "Ulteriori dettagli su questa regolazione" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "Torniamo al cliente" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Aggiungi extra buono" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Aggiungi un prodotto o un servizio a" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Torniamo al progetto" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "SKU/codice prodotto" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "Cosa succede quando archivi un progetto?" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "Il progetto verrà nascosto dagli elenchi di progetti attivi" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "Non è possibile aggiungere nuove voci di orario a questo progetto" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "I dati e gli orari esistenti vengono conservati" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Se necessario, puoi annullare l'archiviazione del progetto in un secondo momento" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Motivo dell'archiviazione" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "ad esempio, Progetto completato, Contratto cliente terminato, Progetto annullato, ecc." +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "L'aggiunta di un motivo aiuta con l'organizzazione del progetto e i riferimenti futuri." +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Principali progetti (30 giorni)" -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Selezione rapida" +#~ msgid "Time distribution by project" +#~ msgstr "Grafici a torta della distribuzione temporale" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Progetto completato con successo" +#~ msgid "No project data for the last 30 days." +#~ msgstr "Nessuna attività negli ultimi 30 giorni." -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Progetto completato" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Contratto con il cliente terminato" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Contratto terminato" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Progetto annullato dal cliente" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Progetto sospeso a tempo indeterminato" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "In attesa" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Il periodo di manutenzione è terminato" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Manutenzione terminata" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Progetto Archivio" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "Imposta un nuovo progetto per organizzare il tuo lavoro e tenere traccia del tempo in modo efficace" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Inserisci un nome di progetto descrittivo" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Scegli un nome chiaro e descrittivo che spieghi l'ambito del progetto" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Codice breve, ad esempio ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Facoltativo: breve tag mostrato sulle carte Kanban" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Crea nuovo cliente" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "Fornire informazioni dettagliate sul progetto, sugli obiettivi e sui risultati finali..." +#~ msgid "Daily hours trend" +#~ msgstr "Andamento delle ore giornaliere" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "Facoltativo: aggiungi contesto, obiettivi o requisiti specifici per il progetto" +#~ msgid "No trend data." +#~ msgstr "Dati preventivo" -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Abilita la fatturazione per questo progetto" +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Principali progetti (30 giorni)" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "Lascia vuoto per progetti non fatturabili" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "Nessun dato di vendita trovato per il periodo selezionato." -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "Numero dell'ordine d'acquisto, riferimento del contratto, ecc." +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "Facoltativo: aggiungi un numero di riferimento o un identificatore a scopo di fatturazione" +#~ msgid "All Clients" +#~ msgstr "Clienti" -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "per esempio. 10000,00" +#~ msgid "All Tasks" +#~ msgstr "Visualizza tutte le attività" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "Facoltativo: imposta un budget totale del progetto per monitorare la spesa" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "Nessun dato di vendita trovato per il periodo selezionato." -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Soglia di avviso (%)" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Avvisa quando il budget utilizzato supera questa soglia" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Suggerimenti per la creazione di progetti" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Denominazione chiara" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Utilizzare nomi descrittivi che indichino chiaramente lo scopo del progetto" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Configurazione della fatturazione" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "Prova una query diversa o controlla l'ortografia." -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "Imposta tariffe orarie adeguate in base alla complessità del progetto e al budget del cliente" +#~ msgid "About Overtime Tracking" +#~ msgstr "Informazioni sul monitoraggio degli straordinari" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Descrizione dettagliata" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "Includere obiettivi del progetto, risultati finali e requisiti chiave" +#~ msgid "Back to Reports" +#~ msgstr "Torniamo ai ruoli" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Selezione del cliente" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "Voci di tempo questa settimana" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "Scegli il cliente giusto per garantire la corretta organizzazione del progetto" +#~ msgid "Top projects this week" +#~ msgstr "I migliori progetti" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Creazione..." +#~ msgid "No time logged this week yet." +#~ msgstr "Nessun inserimento di orari registrato per questa settimana ancora" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "Impossibile creare il cliente. Per favore riprova." +#~ msgid "Apply filter" +#~ msgstr "Applica filtro" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Cliente creato" +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "Sei sicuro di voler eliminare questo filtro?" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Errore di rete durante la creazione del client" +#~ msgid "Delete Filter" +#~ msgstr "Elimina filtro" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "Dashboard e analisi del progetto" +#~ msgid "Go to Reports" +#~ msgstr "Rapporto sulle scorte basse" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "No saved filters yet" +#~ msgstr "Filtri salvati" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Analisi del bilancio" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Tutto il tempo" +#~ msgid "Customize Shortcuts" +#~ msgstr "Personalizza le scorciatoie" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "Ultimi 7 giorni" +#~ msgid "Search shortcuts..." +#~ msgstr "Cerca scorciatoie..." -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "Ultimi 30 giorni" +#~ msgid "Save changes" +#~ msgstr "Salva modifiche" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "Ultimi 3 mesi" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "L'anno scorso" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "stimato" +#~ msgid "Click to record" +#~ msgstr "Trascina per riordinare" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Budget utilizzato" +#~ msgid "Revert" +#~ msgstr "Reset" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "di bilancio" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Attività completate" +#~ msgid "Failed to save" +#~ msgstr "Impossibile arrestare il timer" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "completamento" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Membri della squadra" +#~ msgid "Failed to save shortcuts." +#~ msgstr "Impossibile aggiornare lo stato" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "contribuendo" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "Ciò ripristinerà tutte le scorciatoie da" +#~ " tastiera ai valori predefiniti. " +#~ "Continuare?" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Budget rispetto al valore effettivo" +#~ msgid "Reset to Defaults" +#~ msgstr "Ripristina le impostazioni predefinite" -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "Nessun budget impostato per questo progetto" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "Ripristinare le impostazioni predefinite?" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Distribuzione dello stato delle attività" +#~ msgid "Failed to reset" +#~ msgstr "Impossibile rimuovere l'avatar." -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Nessuna attività ancora creata" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Ripristina le impostazioni predefinite" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Contributi dei membri del team" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "Impossibile aggiornare lo stato" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Nessun inserimento orario ancora registrato" +#~ msgid "Failed to load shortcuts." +#~ msgstr "Impossibile caricare le attività" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Cronologia del monitoraggio del tempo" +#~ msgid "Welcome" +#~ msgstr "Benvenuto" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Seleziona un periodo di tempo per visualizzare la sequenza temporale" +#~ msgid "Privacy First" +#~ msgstr "La privacy prima di tutto" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Dettagli sui membri del team" +#~ msgid "Self-hosted on your server" +#~ msgstr "Auto-ospitato sul tuo server" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "compiti" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Telemetria anonima (attivazione)" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Nessun membro del team ha ancora registrato il tempo" +#~ msgid "No PII collected ever" +#~ msgstr "Nessuna PII mai raccolta" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Attenzione richiesta" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "le attività sono scadute" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "Costo unitario" +#~ msgid "Open source & transparent" +#~ msgstr "Open source e trasparente" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "Aggiorna ruoli" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Modifica Extra buono" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Gestisci prodotti e servizi per questo progetto" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Beni totali" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Importo fatturabile" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Categorie" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "Fatturato" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "Non fatturabile" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "Sei sicuro di voler eliminare questo bene extra?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Elimina Extra buono" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "Nessun bene extra trovato per questo progetto" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Aggiungi il tuo primo bene" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Ripartizione per categoria" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "elementi)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Filtra progetti" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Benvenuto in TimeTracker" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "Iniziamo la configurazione in un attimo" -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Grazie per aver scelto TimeTracker!" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "Contrassegnare il progetto come inattivo?" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "I tuoi dati rimangono sul tuo server e hai il controllo completo." -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Modifica lo stato del progetto" +#~ msgid "Region & time" +#~ msgstr "Ora di fine" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "Attivare il progetto?" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Attiva progetto" +#~ msgid "Timezone" +#~ msgstr "Fuso orario" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Archivio" +#~ msgid "Date format" +#~ msgstr "Formato data" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "Vuoi annullare l'archiviazione del progetto?" +#~ msgid "Time format" +#~ msgstr "Formato ora" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Progetto di estrazione dall'archivio" +#~ msgid "24-hour" +#~ msgstr "ore" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Annulla l'archiviazione" +#~ msgid "12-hour" +#~ msgstr "ore" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Elimina progetto" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Informazioni sull'archivio" +#~ msgid "Company name" +#~ msgstr "Nome dell'azienda" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Archiviato su:" +#~ msgid "Your Company Name" +#~ msgstr "Il nome della tua azienda" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Archiviato da:" +#~ msgid "Your Company Address" +#~ msgstr "L'indirizzo della tua azienda" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Motivo:" +#~ msgid "App behavior and timer settings." +#~ msgstr "Impostazioni degli straordinari" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Allow self-registration" +#~ msgstr "Impostazioni di autoregistrazione" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Panoramica del budget" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Sopra" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Regole di arrotondamento temporale" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Visualizza l'analisi completa del budget" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Voci orarie di andata e ritorno a intervalli configurati" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Single active timer per user" +#~ msgstr "Modalità timer attivo singolo" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Compiti per questo progetto" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Dovuto" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Stima" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "Nessuna attività per questo progetto." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "trasferito a" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "trasferito a" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "Inserimento manuale" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "Scorte basse" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Duplicato" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Segna come inviato" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Accettato" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Crea il tuo primo preventivo" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Saperne di più" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Torna alla citazione" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "Accettando questo preventivo verrà creato un nuovo progetto con il budget del preventivo." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "Il progetto verrà realizzato con il budget ricavato dal preventivo" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Accetta preventivo e crea progetto" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Crea preventivo" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Titolo della citazione" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Descrizione del preventivo" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "Elementi di preventivo" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "Scadenza" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "Tipo di contenuto" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "Scorte basse" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "Totale parziale degli articoli" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "Costo" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "ad esempio VIAGGI, PASTI" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "Aggiungi nota" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "Totale parziale degli articoli" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "Beni extra" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "Prodotti, materiali, licenze e altri beni" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "Aggiungi bene" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "Totale parziale delle merci" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "Citazioni totali" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Dettagli finanziari" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Seleziona i termini di pagamento" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "A causa della ricevuta" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "Oppure inserisci termini di pagamento personalizzati" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Utilizza termini personalizzati" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Sconto" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Tipo di sconto" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Nessuno sconto" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "Percentuale (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Importo fisso" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Importo dello sconto" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0,00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Codice coupon" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Codice coupon opzionale" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Motivo dello sconto" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Motivo dello sconto" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Flusso di lavoro di approvazione" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Richiede l'approvazione prima dell'invio" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "Informazioni aggiuntive" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Note interne (non visibili al cliente)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Queste note sono visibili solo al tuo team" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Termini e Condizioni" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Termini e Condizioni" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Questi termini saranno visibili al cliente" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Modifica preventivo" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "Il cliente non può essere modificato" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Aggiorna preventivo" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Citazioni totali" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Tasso di accettazione" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Valore preventivo medio" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Citazioni per stato" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Migliori clienti per preventivo" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Filtra citazioni" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Cerca citazioni..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "Sei sicuro di voler duplicare?" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "citazione/i?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "Sei sicuro di voler contrassegnare?" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "citazione(i) come inviata?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "CITAZIONE" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Citazione #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Citazione per" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Subtotale dopo lo sconto:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Descrizione:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Subtotale dopo lo sconto" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Approvazione non ancora richiesta" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "In attesa di approvazione" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Rifiutato da" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Richiedi nuovamente l'approvazione" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Invia preventivo" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "Sei sicuro di voler rifiutare questo preventivo?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Elimina preventivo" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Commento interno (non visibile al cliente)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Interno" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "Sei sicuro di voler eliminare questo commento?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Scrivi una risposta..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "Nessun commento ancora Inizia la conversazione aggiungendo il primo commento." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Inviato a" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Accettato a" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Invia preventivo tramite e-mail" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "E-mail del destinatario" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "Citazione %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Messaggio personalizzato (facoltativo)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Aggiungi un messaggio personalizzato all'e-mail..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "Allega PDF" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Approva preventivo" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Note (facoltativo)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Aggiungi note di approvazione..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Rifiutare l'approvazione del preventivo" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Si prega di fornire un motivo per il rifiuto..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "Sei sicuro di voler eliminare questo preventivo? Questa azione non può essere annullata." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Crea fattura ricorrente" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Configurazione del timeout di inattività" -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Automatizza la generazione di fatture per la fatturazione basata su abbonamento" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Frequenza" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Prossima corsa" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Genera ora" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Dettagli del modello" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Impostazioni della fattura" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Fatture generate di recente" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "La privacy prima di tutto" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Assegna a" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Abilita la telemetria anonima" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "Aiutaci a comprendere i modelli di utilizzo per migliorare TimeTracker" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "Quali dati vengono raccolti?" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "Cosa raccogliamo:" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Impronta digitale di installazione anonima (hash)" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Application version & platform info" +#~ msgstr "Versione dell'applicazione e informazioni sulla piattaforma" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "Statistiche sull'utilizzo delle funzionalità" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "Cosa NON raccogliamo:" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "Nessun nome utente o e-mail" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "Nessun dato o nota di immissione del tempo" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "Nessun dato cliente o aziendale" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "Puoi modificarlo in qualsiasi momento" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "Rapporti disponibili" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "Continuando, accetti di utilizzare TimeTracker sotto il" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "Licenza GPL-3.0" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "Rapporti standard" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Completa la configurazione e continua" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "Modifica attività" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "Impossibile aggiornare lo stato" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "Impossibile aggiornare lo stato dell'attività" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "Colonna Kanban creata" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "Colonna Kanban eliminata" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "Rapporto riepilogativo" +#~ msgid "Kanban columns reordered" +#~ msgstr "Colonne Kanban riordinate" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "La visibilità della colonna Kanban è stata modificata" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "Tela trasparente" +#~ msgid "Kanban columns updated" +#~ msgstr "Colonne Kanban aggiornate" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Update" +#~ msgstr "Aggiornamento" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "Impossibile aggiornare le colonne kanban" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "Caricamento dettagli attività..." -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Tracked" +#~ msgstr "Seguito" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "Visualizza i dettagli completi" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "Torna a Attività" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" +#~ "Aggiungi una nuova attività al tuo " +#~ "progetto per suddividere il lavoro in" +#~ " componenti gestibili" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "Inserisci un nome descrittivo per l'attività" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "Scegli un nome chiaro e descrittivo che spieghi cosa deve essere fatto" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Fornire informazioni dettagliate sull'attività, " +#~ "sui requisiti ed eventuali istruzioni " +#~ "specifiche..." -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" +#~ "Facoltativo: aggiungi contesto, requisiti o" +#~ " istruzioni specifiche per l'attività" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Seleziona il progetto a cui appartiene questa attività" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "Stato iniziale" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Done" +#~ msgstr "Fatto" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Facoltativo: impostare una scadenza per questa attività" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Facoltativo: stimare quanto tempo richiederà questa attività" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Facoltativo: assegna questa attività a un membro del team" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Tag per la categorizzazione" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "Suggerimenti per la creazione di attività" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "Usa verbi d'azione e sii specifico su ciò che deve essere fatto" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "Stime realistiche" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "Considerare la complessità e le dipendenze quando si stima il tempo" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "Imposta le scadenze" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" +#~ "Le scadenze aiutano a stabilire le " +#~ "priorità del lavoro e a tenere " +#~ "traccia dei progressi" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "Le priorità sono questioni" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Utilizza i livelli di priorità per " +#~ "aiutare i membri del team a " +#~ "concentrarsi su ciò che è più " +#~ "importante" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "Torna all'attività" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "Aggiorna i dettagli e le impostazioni dell'attività per \"%(task)s\"" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "Informazioni sull'attività" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "Aggiorna attività" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "Stima utilizzata" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Actual" +#~ msgstr "Reale" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "Current Task Info" +#~ msgstr "Informazioni sull'attività corrente" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Current Status" +#~ msgstr "Stato attuale" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "Priorità attuale" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "Attualmente assegnato a" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "Data di scadenza attuale" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "Voci temporali recenti" +#~ msgid "Current Estimate" +#~ msgstr "Stima attuale" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "Ore effettive" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "Formato di esportazione" +#~ msgid "Started" +#~ msgstr "Iniziato" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "ad esempio, sviluppo, riunione, urgente" +#~ msgid "Edit Tips" +#~ msgstr "Modifica suggerimenti" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "Filtri salvati" +#~ msgid "Status Changes" +#~ msgstr "Modifiche di stato" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "" +#~ "La modifica dello stato può influire " +#~ "sul monitoraggio del tempo e sui " +#~ "calcoli dei progressi" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "Aggiornamenti della data di scadenza" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "Intervallo di date: date di inizio e fine personalizzate" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "" +#~ "Considerare il carico di lavoro del " +#~ "team quando si modificano le scadenze" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "La data di inizio deve essere antecedente alla data di fine" +#~ msgid "Assignment Changes" +#~ msgstr "Modifiche all'assegnazione" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "Avvisare i membri del team quando si riassegnano le attività" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "Updating..." +#~ msgstr "Aggiornamento..." -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "Campi di pagamento" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "Ricevuto" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "Tariffe per il gateway" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Intervallo di date e confronto" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Intervalli di date rapidi" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "Settimana" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "Mese" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "L'anno scorso" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "Intervalli di date personalizzati" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "Vista comparativa" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "Anteprima dal vivo" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "Filtra attività" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "Fine frontale" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Elimina attività selezionate" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Modifica lo stato per le attività selezionate" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "Assegna compiti selezionati" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Risultati del confronto" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Esporta report" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Formato di esportazione" - -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "Esporta report" - -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "Rapporti pianificati" - -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "Importazione CSV" - -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "Esportare" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "Tipi di rapporto" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "Relazione sul progetto" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Rapporto utente" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Rapporto riepilogativo" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Rapporto sulle attività" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "Voci di tempo" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "Assegna compiti" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Sposta le attività selezionate nel progetto" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "Seleziona Progetto" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "Sposta attività" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "Sei sicuro di voler eliminare l'attività \"{name}\"?" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "Voci recenti" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "Impossibile eliminare l'attività \"{name}\" " +#~ "perché contiene voci di orario. Elimina" +#~ " prima le voci relative all'orario." -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "Rapporti pianificati" +#~ msgid "Delete Task" +#~ msgstr "Elimina attività" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "Rapporti pianificati" +#~ msgid "My Tasks" +#~ msgstr "I miei compiti" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "Intervalli di date personalizzati" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Attività assegnate o create da te" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "total" +#~ msgstr "totale" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "Filtra le mie attività" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "Nome o descrizione dell'attività" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "Tutte le priorità" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "Tipo di attività" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "Assegnato a me" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "Creato da me" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "Mostra solo in ritardo" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "Creato da me" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "L'impaginazione dei miei compiti" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "Nessuna attività trovata" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Non hai ancora alcuna attività assegnata o creata da te." -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "Crea la tua prima attività" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "Visualizza tutte le attività" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "Compiti scaduti" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "Richiede attenzione immediata" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "items" +#~ msgstr "elementi" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "There are" +#~ msgstr "Ci sono" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "Nessun dato di vendita trovato per il periodo selezionato." +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "Rivedi e aggiorna queste attività per evitare ulteriori ritardi." -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Due:" +#~ msgstr "Dovuto:" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Est:" +#~ msgstr "Est:" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Actual:" +#~ msgstr "Effettivo:" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "Date di scadenza" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "Date di scadenza" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "Gestione del progetto" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "Tutte le priorità" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "Nessuna attività in ritardo!" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "Ottimo lavoro! Tutte le attività sono attualmente in programma." -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Inserisci la nuova data di scadenza (AAAA-MM-GG):" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Sei sicuro di voler estendere la data di scadenza a?" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "per tutte le attività scadute?" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "Inserisci la nuova priorità (bassa/media/alta/urgente):" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Sei sicuro di voler impostare la priorità su" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "Priorità non valida. Utilizzare: basso, medio, alto o urgente" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "Impossibile aggiornare l'obiettivo. Per favore riprova." -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "Avviare l'attività e contrassegnarla come In corso?" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "Modifica stato attività" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "Contrassegnare l'attività come Da fare?" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "Contrassegnare l'attività come completata?" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "Completa l'attività" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Complete" +#~ msgstr "Completare" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "Riaprire l'attività da rivedere?" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "Riapri attività" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "Riaprire" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "Dettagli e ambito del progetto" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "Crea modello di immissione ora" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "ad esempio, Daily Standup, Client Meeting" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "ad esempio, 1.0, 0.5" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Precompilare le note per questo tipo di immissione dell'ora" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "ad esempio, riunione, sviluppo, amministrazione" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "Modifica modello" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Sei sicuro di voler eliminare questo modello?" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "Elimina modello" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "Create Your First Template" +#~ msgstr "Crea la tua prima attività" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "Modelli" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" +#~ "Crea il tuo primo modello di email" +#~ " per personalizzare le email di " +#~ "fatturazione." -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "Usage Statistics" +#~ msgstr "Statistiche sull'utilizzo" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "Principali progetti (30 giorni)" +#~ msgid "selected" +#~ msgstr "" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "Grafici a torta della distribuzione temporale" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "Nessuna attività negli ultimi 30 giorni." +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "Andamento delle ore giornaliere" +#~ msgid "Click to edit" +#~ msgstr "Torna a Modifica" -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "Dati preventivo" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "Principali progetti (30 giorni)" +#~ msgid "Request approval" +#~ msgstr "Richiedi approvazione" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "Nessun dato di vendita trovato per il periodo selezionato." +#~ msgid "Clear filters" +#~ msgstr "Attiva/disattiva i filtri" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "Nessun dato o nota di immissione del tempo" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "Clienti" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "Visualizza tutte le attività" +#~ msgid "No time entries yet" +#~ msgstr "Nessun inserimento orario ancora registrato" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "Nessun dato di vendita trovato per il periodo selezionato." +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "L'impaginazione dei miei compiti" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "Inserimento manuale dell'ora" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "Inserimento dell'ora" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "Come posso creare voci di tempo in blocco per più giorni?" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "Inserimento in blocco" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "Progetto selezionato non trovato" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Le attività vengono caricate dopo aver selezionato un progetto" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "Intervallo di tempo" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "Prova una query diversa o controlla l'ortografia." +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "Informazioni sul monitoraggio degli straordinari" +#~ msgid "Entries will be created for these dates" +#~ msgstr "Le voci di tempo verranno arrotondate a questo intervallo" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "Temporizzatori intelligenti" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "Torniamo ai ruoli" - -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "Voci di tempo questa settimana" - -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "I migliori progetti" - -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "Nessun inserimento di orari registrato per questa settimana ancora" - -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Applica filtro" - -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "Sei sicuro di voler eliminare questo filtro?" - -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Elimina filtro" - -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "Rapporto sulle scorte basse" - -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "Filtri salvati" - -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Personalizza le scorciatoie" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Cerca scorciatoie..." +#~ msgid "tag1, tag2, tag3" +#~ msgstr "etichetta1, etichetta2" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "Salva modifiche" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "Filtra fatture" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Create Entries" +#~ msgstr "Voci recenti" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "Trascina per riordinare" +#~ msgid "Bulk Entry Tips" +#~ msgstr "Inserimento in blocco" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "Reset" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "Skip Weekends" +#~ msgstr "Tendenze settimanali" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "Impossibile arrestare il timer" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "Tempi di consegna (giorni)" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "Impossibile aggiornare lo stato" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "Ciò ripristinerà tutte le scorciatoie da tastiera ai valori predefiniti. Continuare?" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Ripristina le impostazioni predefinite" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "Ripristinare le impostazioni predefinite?" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "Impossibile rimuovere l'avatar." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "Ripristina le impostazioni predefinite" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "Impossibile aggiornare lo stato" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "Impossibile caricare le attività" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Benvenuto" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "La privacy prima di tutto" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Auto-ospitato sul tuo server" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Telemetria anonima (attivazione)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "Nessuna PII mai raccolta" - -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Open source e trasparente" - -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Benvenuto in TimeTracker" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "Iniziamo la configurazione in un attimo" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "Grazie per aver scelto TimeTracker!" +#~ msgid "Failed to load tasks" +#~ msgstr "Impossibile caricare le attività" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "I tuoi dati rimangono sul tuo server e hai il controllo completo." +#~ msgid "Total days" +#~ msgstr "Beni totali" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "Ora di fine" +#~ msgid "Weekdays only" +#~ msgstr "La settimana inizia il" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "Le voci di tempo verranno arrotondate a questo intervallo" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Fuso orario" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "Formato data" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "Formato ora" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "ore" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "ore" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Agenda" +#~ msgstr "Calendario" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "Nome dell'azienda" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "Il nome della tua azienda" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "L'indirizzo della tua azienda" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "Impostazioni degli straordinari" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "Impostazioni di autoregistrazione" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "Formato ora" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "Regole di arrotondamento temporale" +#~ msgid "CSV Format" +#~ msgstr "Importazione CSV" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "Voci orarie di andata e ritorno a intervalli configurati" +#~ msgid "Filter by tags..." +#~ msgstr "Filtra le mie attività" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "Modalità timer attivo singolo" +#~ msgid "Show billable entries only" +#~ msgstr "Nessuna voce temporale trovata." -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "Importo fatturabile" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "Configurazione del timeout di inattività" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "Ore totali" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "Ore per progetto" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "Crea una nuova voce temporale" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "Seleziona un progetto..." -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Fatture ricorrenti" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Crea modello di immissione ora" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "Crea fattura ricorrente" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "Navigazione" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Views" +#~ msgstr "Visualizzazione" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Day View" +#~ msgstr "Visualizzazione griglia" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Week View" +#~ msgstr "Revisione" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "Month View" +#~ msgstr "Mese" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "Agenda View" +#~ msgstr "Visualizzazione calendario" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "La privacy prima di tutto" +#~ msgid "Create New Entry" +#~ msgstr "Crea nuovo cliente" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Focus Filter" +#~ msgstr "Mostra filtri" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Abilita la telemetria anonima" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Aiutaci a comprendere i modelli di utilizzo per migliorare TimeTracker" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "Quali dati vengono raccolti?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "Cosa raccogliamo:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "Impronta digitale di installazione anonima (hash)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "Versione dell'applicazione e informazioni sulla piattaforma" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Statistiche sull'utilizzo delle funzionalità" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "Cosa NON raccogliamo:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Nessun nome utente o e-mail" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Nessun dato o nota di immissione del tempo" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Nessun dato cliente o aziendale" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "Puoi modificarlo in qualsiasi momento" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "Continuando, accetti di utilizzare TimeTracker sotto il" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "Licenza GPL-3.0" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Completa la configurazione e continua" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Modifica attività" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "Impossibile aggiornare lo stato" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "Impossibile aggiornare lo stato dell'attività" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Colonna Kanban creata" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Colonna Kanban eliminata" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Colonne Kanban riordinate" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "La visibilità della colonna Kanban è stata modificata" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Colonne Kanban aggiornate" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Aggiornamento" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "Impossibile aggiornare le colonne kanban" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Caricamento dettagli attività..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Seguito" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Visualizza i dettagli completi" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Torna a Attività" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "Aggiungi una nuova attività al tuo progetto per suddividere il lavoro in componenti gestibili" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Inserisci un nome descrittivo per l'attività" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "Scegli un nome chiaro e descrittivo che spieghi cosa deve essere fatto" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "Fornire informazioni dettagliate sull'attività, sui requisiti ed eventuali istruzioni specifiche..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "Facoltativo: aggiungi contesto, requisiti o istruzioni specifiche per l'attività" - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Seleziona il progetto a cui appartiene questa attività" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Stato iniziale" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Fatto" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Facoltativo: impostare una scadenza per questa attività" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Facoltativo: stimare quanto tempo richiederà questa attività" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Facoltativo: assegna questa attività a un membro del team" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "Cancella tutte le cache" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "Tag per la categorizzazione" +#~ msgid "Close Modal" +#~ msgstr "Vicino" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Suggerimenti per la creazione di attività" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Usa verbi d'azione e sii specifico su ciò che deve essere fatto" +#~ msgid "Failed to load events" +#~ msgstr "Impossibile caricare le attività" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Stime realistiche" +#~ msgid "Please select a project for new entries" +#~ msgstr "Seleziona un progetto dal menu a discesa" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Considerare la complessità e le dipendenze quando si stima il tempo" +#~ msgid "Please select a project first" +#~ msgstr "Seleziona un progetto" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Imposta le scadenze" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Le scadenze aiutano a stabilire le priorità del lavoro e a tenere traccia dei progressi" +#~ msgid "Entry created successfully" +#~ msgstr "Evento creato con successo" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Le priorità sono questioni" +#~ msgid "Failed to create entry" +#~ msgstr "Impossibile eliminare l'evento" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "Utilizza i livelli di priorità per aiutare i membri del team a concentrarsi su ciò che è più importante" +#~ msgid "Entry updated" +#~ msgstr "Ultimo aggiornamento" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Torna all'attività" +#~ msgid "Failed to update entry" +#~ msgstr "Impossibile aggiornare lo stato" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Aggiorna i dettagli e le impostazioni dell'attività per \"%(task)s\"" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Sei sicuro di voler eliminare questa nota?" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Informazioni sull'attività" +#~ msgid "Delete Entry" +#~ msgstr "Elimina la voce" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Aggiorna attività" +#~ msgid "Automatic Timer" +#~ msgstr "Avvia il timer" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Stima utilizzata" +#~ msgid "Entry deleted" +#~ msgstr "Eliminato" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Reale" +#~ msgid "Failed to delete entry" +#~ msgstr "Impossibile eliminare l'evento" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Informazioni sull'attività corrente" +#~ msgid "Export started" +#~ msgstr "Esporta dati" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "Stato attuale" +#~ msgid "No recurring blocks yet" +#~ msgstr "Fatture ricorrenti" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Priorità attuale" +#~ msgid "Unknown Project" +#~ msgstr "Nessun progetto" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "Attualmente assegnato a" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "Impossibile caricare le attività" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Data di scadenza attuale" +#~ msgid "No events in this period" +#~ msgstr "Nessuna attività in questa colonna." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Stima attuale" +#~ msgid "Failed to load agenda view" +#~ msgstr "Impossibile caricare le attività" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Ore effettive" +#~ msgid "Failed to load event details" +#~ msgstr "Impossibile caricare le attività" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Iniziato" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Sei sicuro di voler eliminare questa nota?" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Modifica suggerimenti" +#~ msgid "Delete Recurring Block" +#~ msgstr "Crea fattura ricorrente" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Modifiche di stato" +#~ msgid "Recurring block deleted" +#~ msgstr "Evento ricorrente" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "La modifica dello stato può influire sul monitoraggio del tempo e sui calcoli dei progressi" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Aggiornamenti della data di scadenza" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Considerare il carico di lavoro del team quando si modificano le scadenze" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Modifiche all'assegnazione" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "Avvisare i membri del team quando si riassegnano le attività" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Aggiornamento..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Filtra attività" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "Fine frontale" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Elimina attività selezionate" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Modifica lo stato per le attività selezionate" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Assegna compiti selezionati" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Assegna compiti" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Sposta le attività selezionate nel progetto" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Seleziona Progetto" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Sposta attività" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "Sei sicuro di voler eliminare l'attività \"{name}\"?" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "Impossibile eliminare l'attività \"{name}\" perché contiene voci di orario. Elimina prima le voci relative all'orario." +#~ msgid "Failed to delete recurring block" +#~ msgstr "Impossibile eliminare l'evento" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Elimina attività" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Inserisci la nuova data di scadenza (AAAA-MM-GG):" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "I miei compiti" +#~ msgid "Entry duplicated successfully" +#~ msgstr "Evento aggiornato con successo" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Attività assegnate o create da te" +#~ msgid "Failed to duplicate entry" +#~ msgstr "Impossibile eliminare l'evento" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "totale" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "Filtra le mie attività" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "Scorciatoie da tastiera" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Nome o descrizione dell'attività" +#~ msgid "Edit Time Entry" +#~ msgstr "Nuova immissione dell'ora" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Tutte le priorità" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Tipo di attività" +#~ msgid "Confirm Changes" +#~ msgstr "Confermato" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "Assegnato a me" +#~ msgid "Confirm & Save" +#~ msgstr "Confermato" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Creato da me" +#~ msgid "Admin Mode" +#~ msgstr "Gruppo di amministrazione" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Mostra solo in ritardo" +#~ msgid "Admin Mode:" +#~ msgstr "Gruppo di amministrazione" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Creato da me" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "L'impaginazione dei miei compiti" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Seleziona il progetto a cui appartiene questa attività" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "Nessuna attività trovata" +#~ msgid "Task (Optional)" +#~ msgstr "Compito (facoltativo)" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "Non hai ancora alcuna attività assegnata o creata da te." +#~ msgid "Select a specific task within the project" +#~ msgstr "L'attività selezionata non è valida per il progetto scelto" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Crea la tua prima attività" +#~ msgid "When the work started" +#~ msgstr "Data di inizio settimana" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Visualizza tutte le attività" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Compiti scaduti" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Richiede attenzione immediata" +#~ msgid "Time the work ended" +#~ msgstr "Contratto con il cliente terminato" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "elementi" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "Ci sono" +#~ msgid "Automatic" +#~ msgstr "Autorizzazione" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "Rivedi e aggiorna queste attività per evitare ulteriori ritardi." +#~ msgid "How this entry was created" +#~ msgstr "Cliente creato" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "Dovuto:" +#~ msgid "Duration:" +#~ msgstr "Durata" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "Est:" +#~ msgid "Describe what you worked on" +#~ msgstr "Su cosa hai lavorato?" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Effettivo:" +#~ msgid "tag1, tag2" +#~ msgstr "etichetta1, etichetta2" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "Date di scadenza" +#~ msgid "Internal invoice reference" +#~ msgstr "Nessuna fattura selezionata" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Numero di ricevuta/fattura" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "Date di scadenza" +#~ msgid "Reason for Change" +#~ msgstr "Motivo dell'archiviazione" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "Gestione del progetto" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "Tutte le priorità" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "Nessuna attività in ritardo!" +#~ msgid "Task:" +#~ msgstr "Compito" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "Ottimo lavoro! Tutte le attività sono attualmente in programma." +#~ msgid "Start:" +#~ msgstr "Inizio" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Inserisci la nuova data di scadenza (AAAA-MM-GG):" +#~ msgid "End:" +#~ msgstr "FINE" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "Sei sicuro di voler estendere la data di scadenza a?" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "per tutte le attività scadute?" +#~ msgid "Admin Notice" +#~ msgstr "Aggiungi nota" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "Inserisci la nuova priorità (bassa/media/alta/urgente):" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "Sei sicuro di voler impostare la priorità su" +#~ msgid "Duplicate Entry" +#~ msgstr "Voce duplicata" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Priorità non valida. Utilizzare: basso, medio, alto o urgente" +#~ msgid "Duplicate Time Entry" +#~ msgstr "Inserimento orario duplicato" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "Registra l'ora manualmente" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "Impossibile aggiornare l'obiettivo. Per favore riprova." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "Avviare l'attività e contrassegnarla come In corso?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Modifica stato attività" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "Contrassegnare l'attività come Da fare?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "Contrassegnare l'attività come completata?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Completa l'attività" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Completare" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "Riaprire l'attività da rivedere?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Riapri attività" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Riaprire" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "Dettagli e ambito del progetto" - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Crea modello di immissione ora" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "ad esempio, Daily Standup, Client Meeting" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "ad esempio, 1.0, 0.5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Precompilare le note per questo tipo di immissione dell'ora" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "ad esempio, riunione, sviluppo, amministrazione" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Modifica modello" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "Sei sicuro di voler eliminare questo modello?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Elimina modello" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "Crea la tua prima attività" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "Modelli" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "Crea il tuo primo modello di email per personalizzare le email di fatturazione." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Statistiche sull'utilizzo" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Crea una copia di una voce precedente con nuovi orari" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "Crea una nuova voce temporale" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "Voce duplicata:" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "Original:" +#~ msgstr "Originale:" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "to" +#~ msgstr "A" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "Torna a Modifica" +#~ msgid "Project & task" +#~ msgstr "Progetti" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "Data e ora" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "Richiedi approvazione" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "Attiva/disattiva i filtri" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "Nessun dato o nota di immissione del tempo" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "Nessun inserimento orario ancora registrato" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "L'impaginazione dei miei compiti" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "Inserimento manuale dell'ora" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "Inserimento dell'ora" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "Come posso creare voci di tempo in blocco per più giorni?" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "Inserimento in blocco" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "Progetto selezionato non trovato" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Le attività vengono caricate dopo aver selezionato un progetto" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "Intervallo di tempo" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "Ospite" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "Le voci di tempo verranno arrotondate a questo intervallo" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "Temporizzatori intelligenti" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "Su cosa hai lavorato?" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "etichetta1, etichetta2" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "Filtra fatture" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "Voci recenti" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "Inserimento in blocco" +#~ msgid "Apply filters" +#~ msgstr "Applica filtri" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "Tendenze settimanali" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "Tempi di consegna (giorni)" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "Impossibile caricare le attività" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "Beni totali" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "La settimana inizia il" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "Le voci di tempo verranno arrotondate a questo intervallo" - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "Calendario" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "Formato ora" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "Importazione CSV" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "Filtra le mie attività" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "Nessuna voce temporale trovata." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "Importo fatturabile" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "Ore totali" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "Ore per progetto" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "Crea una nuova voce temporale" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Seleziona un progetto..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "Fatture ricorrenti" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "Crea modello di immissione ora" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "Crea fattura ricorrente" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "Navigazione" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "Visualizzazione" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "Visualizzazione griglia" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "Revisione" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "Mese" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "Visualizzazione calendario" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "Crea nuovo cliente" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "Mostra filtri" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "Cancella tutte le cache" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "Vicino" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "Tieni traccia del tuo tempo con un timer visivo" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "Completamento stimato" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "Impossibile caricare le attività" +#~ msgid "Calculating..." +#~ msgstr "Calcolo..." -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "Seleziona un progetto dal menu a discesa" +#~ msgid "Based on average session duration" +#~ msgstr "Basato sulla durata media della sessione" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "Seleziona un progetto" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Nessun timer attivo. Iniziane uno qui sotto!" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "Avvia un nuovo timer" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "Evento creato con successo" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "Impossibile eliminare l'evento" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "Ultimo aggiornamento" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "Impossibile aggiornare lo stato" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "Sei sicuro di voler eliminare questa nota?" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "Elimina la voce" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "Avvia il timer" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "Eliminato" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "Impossibile eliminare l'evento" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "Esporta dati" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "Fatture ricorrenti" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "Nessun progetto" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "Impossibile caricare le attività" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "Nessuna attività in questa colonna." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "Impossibile caricare le attività" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "Impossibile caricare le attività" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "Sei sicuro di voler eliminare questa nota?" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "Crea fattura ricorrente" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "Evento ricorrente" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "Impossibile eliminare l'evento" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Inserisci la nuova data di scadenza (AAAA-MM-GG):" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "Evento aggiornato con successo" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "Impossibile eliminare l'evento" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Aggiungi note su ciò su cui stai lavorando..." -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "Scorciatoie da tastiera" +#~ msgid "Or use a template" +#~ msgstr "Oppure usa un modello" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "Nuova immissione dell'ora" +#~ msgid "Recent Projects" +#~ msgstr "Progetti recenti" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "Le statistiche di oggi" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "Confermato" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "Confermato" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "Gruppo di amministrazione" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "Gruppo di amministrazione" +#~ msgid "Approval" +#~ msgstr "Approvare" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "Seleziona il progetto a cui appartiene questa attività" +#~ msgid "License status" +#~ msgstr "Stato attuale" -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "Compito (facoltativo)" +#~ msgid "Supporter license active" +#~ msgstr "Funzionalità supportate" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "L'attività selezionata non è valida per il progetto scelto" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "Data di inizio settimana" +#~ msgid "Not activated" +#~ msgstr "Attivare" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "Inserisci il nome del cliente" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "Contratto con il cliente terminato" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "License key" +#~ msgstr "Licenza" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "Autorizzazione" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "Cliente creato" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "Durata" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "Su cosa hai lavorato?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "etichetta1, etichetta2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "Nessuna fattura selezionata" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "Numero di ricevuta/fattura" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "Motivo dell'archiviazione" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Validate" +#~ msgstr "Data" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "Compito" +#~ msgid "Back to Settings" +#~ msgstr "Impostazioni di backup" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "Inizio" +#~ msgid "Profile" +#~ msgstr "Profilo" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "FINE" +#~ msgid "In progress" +#~ msgstr "In corso" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "Visualizza tutte le voci relative all'orario" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "Aggiungi nota" +#~ msgid "No recent time entries" +#~ msgstr "Nessuna immissione di orari recenti" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Gestisci le impostazioni e le preferenze del tuo account" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Voce duplicata" +#~ msgid "Support & Community" +#~ msgstr "Open Source e comunità" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Inserimento orario duplicato" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Registra l'ora manualmente" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Crea una copia di una voce precedente con nuovi orari" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Crea una nuova voce temporale" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Voce duplicata:" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Originale:" +#~ msgid "Profile Information" +#~ msgstr "Informazioni sul profilo" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "A" +#~ msgid "Username cannot be changed" +#~ msgstr "Il nome utente non può essere modificato" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "Progetti" +#~ msgid "Required for email notifications" +#~ msgstr "Obbligatorio per le notifiche e-mail" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "Data e ora" +#~ msgid "Notification Preferences" +#~ msgstr "Preferenze di notifica" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "Abilita notifiche e-mail" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "Interruttore principale per tutte le notifiche e-mail" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Notifiche di fatture scadute" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "Ospite" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Notifiche di assegnazione di attività" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Notifiche di commenti e menzioni" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "E-mail di riepilogo dell'orario settimanale" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "Su cosa hai lavorato?" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Abilita notifiche e-mail" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "Applica filtri" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "Visualizza preferenze" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "System Default" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "Preferenze di arrotondamento temporale" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Configura il modo in cui vengono " +#~ "arrotondati gli inserimenti di tempo. " +#~ "Ciò influisce sul modo in cui " +#~ "vengono calcolate le durate quando si" +#~ " arrestano i timer." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "Abilita l'arrotondamento temporale" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Voci orarie di andata e ritorno a intervalli configurati" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "Intervallo di arrotondamento" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "Le voci di tempo verranno arrotondate a questo intervallo" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Tieni traccia del tuo tempo con un timer visivo" +#~ msgid "Rounding Method" +#~ msgstr "Metodo di arrotondamento" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Completamento stimato" +#~ msgid "Overtime Settings" +#~ msgstr "Impostazioni degli straordinari" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Calcolo..." +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "Basato sulla durata media della sessione" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Nessun timer attivo. Iniziane uno qui sotto!" +#~ msgid "Daily hours" +#~ msgstr "Orari giornalieri" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Avvia un nuovo timer" +#~ msgid "Weekly hours" +#~ msgstr "Obiettivi settimanali" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Aggiungi note su ciò su cui stai lavorando..." +#~ msgid "Standard Hours Per Day" +#~ msgstr "Orari standard giornalieri" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "Oppure usa un modello" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Normalmente 8 ore per un lavoro a tempo pieno" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "Progetti recenti" +#~ msgid "Standard Hours Per Week" +#~ msgstr "Orari standard giornalieri" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "Le statistiche di oggi" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "How it works" +#~ msgstr "Come funziona" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "Se lavori più del tuo orario " +#~ "standard in un giorno, il tempo " +#~ "extra verrà tracciato come straordinario " +#~ "nei report e nelle analisi." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "Approvare" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "Impostazioni regionali" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "Stato attuale" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "Funzionalità supportate" +#~ msgid "Time Format" +#~ msgstr "Formato ora" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "La settimana inizia il" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "Attivare" +#~ msgid "Sunday" +#~ msgstr "Domenica" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Monday" +#~ msgstr "Lunedi" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "Inserisci il nome del cliente" +#~ msgid "Saturday" +#~ msgstr "Sabato" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "Visualizzazione calendario" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "Licenza" +#~ msgid "Remember last view" +#~ msgstr "Membro dal" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "Data" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "Crea ordine d'acquisto" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "L'arrotondamento temporale è disabilitato. " +#~ "Tutti i tempi verranno registrati " +#~ "esattamente come tracciati." -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "Impostazioni di backup" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "" +#~ "Nessun arrotondamento: i tempi verranno " +#~ "registrati esattamente come tracciati." -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Profilo" +#~ msgid "Actual time:" +#~ msgstr "Tempo effettivo:" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "In corso" +#~ msgid "Rounded:" +#~ msgstr "Arrotondato:" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Visualizza tutte le voci relative all'orario" +#~ msgid "With " +#~ msgstr "Con" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "Nessuna immissione di orari recenti" +#~ msgid " minute intervals" +#~ msgstr "intervalli di minuti" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Gestisci le impostazioni e le preferenze del tuo account" +#~ msgid "Create Weekly Goal" +#~ msgstr "Crea obiettivo settimanale" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "Open Source e comunità" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Crea un obiettivo temporale settimanale" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "Stabilisci un obiettivo per le ore di lavoro questa settimana" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "Ore target" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "Quante ore vuoi lavorare questa settimana?" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "Data di inizio settimana" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "Lascia vuoto per utilizzare la settimana corrente (a partire da lunedì)" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Informazioni sul profilo" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "Il nome utente non può essere modificato" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Obbligatorio per le notifiche e-mail" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Note facoltative sul tuo obiettivo..." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Preferenze di notifica" +#~ msgid "Quick Presets" +#~ msgstr "Preimpostazioni rapide" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Abilita notifiche e-mail" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Suggerimenti per la definizione degli obiettivi" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Interruttore principale per tutte le notifiche e-mail" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "Sii realistico: considera le vacanze, le riunioni e altri impegni" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Notifiche di fatture scadute" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "" +#~ "Inizia in modo conservativo: puoi sempre" +#~ " modificare il tuo obiettivo in un" +#~ " secondo momento" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Notifiche di assegnazione di attività" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" +#~ "Tieni traccia dei progressi: controlla " +#~ "regolarmente la dashboard per rimanere " +#~ "aggiornato" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Notifiche di commenti e menzioni" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "Tipico tempo pieno: 40 ore settimanali (8 ore al giorno, 5 giorni)" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "E-mail di riepilogo dell'orario settimanale" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Modifica obiettivo settimanale" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Modifica obiettivo temporale settimanale" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "Periodo della settimana" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "Abilita notifiche e-mail" +#~ msgid "Current Progress" +#~ msgstr "Progresso attuale" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Sei sicuro di voler eliminare questo obiettivo?" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "Elimina obiettivo" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "Obiettivi di tempo settimanali" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Imposta e monitora i tuoi obiettivi orari settimanali" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "Nuovo obiettivo" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "Obiettivi totali" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Visualizza preferenze" +#~ msgid "Success Rate" +#~ msgstr "Tasso di successo" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "" +#~ msgid "Current Week Goal" +#~ msgstr "Obiettivo della settimana corrente" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Preferenze di arrotondamento temporale" +#~ msgid "Remaining Hours" +#~ msgstr "Ore rimanenti" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "Configura il modo in cui vengono arrotondati gli inserimenti di tempo. Ciò influisce sul modo in cui vengono calcolate le durate quando si arrestano i timer." +#~ msgid "Days Remaining" +#~ msgstr "Giorni rimanenti" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Abilita l'arrotondamento temporale" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Media ore/giorno necessarie" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Voci orarie di andata e ritorno a intervalli configurati" +#~ msgid "Edit Goal" +#~ msgstr "Modifica obiettivo" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Intervallo di arrotondamento" +#~ msgid "No goal set for this week" +#~ msgstr "Nessun obiettivo fissato per questa settimana" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "Le voci di tempo verranno arrotondate a questo intervallo" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "" +#~ "Crea un obiettivo temporale settimanale " +#~ "per iniziare a monitorare i tuoi " +#~ "progressi" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Metodo di arrotondamento" +#~ msgid "Goal History" +#~ msgstr "Storia degli obiettivi" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Impostazioni degli straordinari" +#~ msgid "Target" +#~ msgstr "Bersaglio" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "Dettagli obiettivo settimanale" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "Orari giornalieri" +#~ msgid "Daily Breakdown" +#~ msgstr "Ripartizione giornaliera" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "Obiettivi settimanali" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Orari standard giornalieri" +#~ msgid "Time Entries This Week" +#~ msgstr "Voci di tempo questa settimana" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Normalmente 8 ore per un lavoro a tempo pieno" +#~ msgid "No Project" +#~ msgstr "Nessun progetto" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "Orari standard giornalieri" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Nessun inserimento di orari registrato per questa settimana ancora" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "Come funziona" +#~ msgid "Reference date" +#~ msgstr "Tipo di riferimento" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "Se lavori più del tuo orario standard in un giorno, il tempo extra verrà tracciato come straordinario nei report e nelle analisi." +#~ msgid "Create/Get Period" +#~ msgstr "Crea ordine d'acquisto" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Start date" +#~ msgstr "Data di inizio" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "End date" +#~ msgstr "Data di fine" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Exports" +#~ msgstr "Esportare" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "Impostazioni regionali" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Formato ora" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "La settimana inizia il" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "Domenica" +#~ msgid "Audit Events CSV" +#~ msgstr "Modifica evento" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "Lunedi" +#~ msgid "Timesheet Periods" +#~ msgstr "Periodo della settimana" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "Sabato" +#~ msgid "Submit" +#~ msgstr "Soggetto" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "Visualizzazione calendario" +#~ msgid "No timesheet periods yet." +#~ msgstr "Nessun inserimento orario ancora registrato" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "Membro dal" +#~ msgid "Leave Balances" +#~ msgstr "Salva modifiche" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "Crea ordine d'acquisto" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "L'arrotondamento temporale è disabilitato. Tutti i tempi verranno registrati esattamente come tracciati." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "Nessun arrotondamento: i tempi verranno registrati esattamente come tracciati." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Tempo effettivo:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Arrotondato:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Con" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "intervalli di minuti" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Crea obiettivo settimanale" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Crea un obiettivo temporale settimanale" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "Stabilisci un obiettivo per le ore di lavoro questa settimana" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Ore target" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "Quante ore vuoi lavorare questa settimana?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Data di inizio settimana" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "Lascia vuoto per utilizzare la settimana corrente (a partire da lunedì)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "utente" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Note facoltative sul tuo obiettivo..." +#~ msgid "No leave types configured." +#~ msgstr "Non configurato" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "Preimpostazioni rapide" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Suggerimenti per la definizione degli obiettivi" +#~ msgid "Select leave type" +#~ msgstr "Seleziona Cliente" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Sii realistico: considera le vacanze, le riunioni e altri impegni" +#~ msgid "Requested hours" +#~ msgstr "Ore stimate" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Inizia in modo conservativo: puoi sempre modificare il tuo obiettivo in un secondo momento" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Variabili disponibili" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "Tieni traccia dei progressi: controlla regolarmente la dashboard per rimanere aggiornato" +#~ msgid "Comment" +#~ msgstr "Commenti" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Tipico tempo pieno: 40 ore settimanali (8 ore al giorno, 5 giorni)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Modifica obiettivo settimanale" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Modifica obiettivo temporale settimanale" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Periodo della settimana" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Progresso attuale" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "Sei sicuro di voler eliminare questo obiettivo?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Elimina obiettivo" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Obiettivi di tempo settimanali" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Imposta e monitora i tuoi obiettivi orari settimanali" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Nuovo obiettivo" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Obiettivi totali" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Tasso di successo" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Obiettivo della settimana corrente" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Ore rimanenti" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Giorni rimanenti" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Media ore/giorno necessarie" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Modifica obiettivo" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "Nessun obiettivo fissato per questa settimana" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "Crea un obiettivo temporale settimanale per iniziare a monitorare i tuoi progressi" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Storia degli obiettivi" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Bersaglio" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Dettagli obiettivo settimanale" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "Respinto" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Ripartizione giornaliera" +#~ msgid "Allocated" +#~ msgstr "Creato" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "Tempo" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Voci di tempo questa settimana" +#~ msgid "Utilization %" +#~ msgstr "Autorizzazione" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Nessun progetto" +#~ msgid "No capacity data available." +#~ msgstr "Nessun dato disponibile sulla velocità di combustione" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Nessun inserimento di orari registrato per questa settimana ancora" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "Tipo di riferimento" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "Crea ordine d'acquisto" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "Data di inizio" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "Data di fine" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "Esportare" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "Abilita il portale clienti" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "Sostituzione dello stato fatturabile" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "Modifica evento" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "Periodo della settimana" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "Soggetto" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "Nessun inserimento orario ancora registrato" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "Salva modifiche" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "Solo attivo" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "Tipo di evento" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "utente" +#~ msgid "Accrual hours per month" +#~ msgstr "Ore effettive" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "Non configurato" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "Tipo di evento" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "Seleziona Cliente" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "Ore stimate" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "Variabili disponibili" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "Commenti" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "Disabilitato" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "Dettagli dell'azienda" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "Respinto" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "Creato" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "Tempo" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "Autorizzazione" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "Nessun dato disponibile sulla velocità di combustione" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "Nome del ruolo" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "Note (facoltativo)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "Aggiungi bene" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "Abilita il portale clienti" +#~ msgid "No holidays configured." +#~ msgstr "Nessun webhook configurato" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "Sostituzione dello stato fatturabile" +#~ msgid "Support" +#~ msgstr "Supporto" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "Solo attivo" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "Tipo di evento" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "Ore effettive" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "Tipo di evento" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "Disabilitato" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "Dettagli dell'azienda" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "Nome del ruolo" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "Note (facoltativo)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "Aggiungi bene" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "Nessun webhook configurato" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "Pagato troppo" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Supporto" +#~ msgid "Cash" +#~ msgstr "Contanti" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "Controllo" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "Bonifico bancario" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "Carta di credito" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "Carta di debito" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "Banda" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "Pagato troppo" +#~ msgid "Company Card" +#~ msgstr "Carta aziendale" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "Contanti" +#~ msgid "Reimbursed" +#~ msgstr "Rimborsato" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Controllo" +#~ msgid "Processing" +#~ msgstr "Elaborazione" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Bonifico bancario" +#~ msgid "80% Budget Warning" +#~ msgstr "Avviso di bilancio dell'80%." -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Carta di credito" +#~ msgid "Budget Limit Reached" +#~ msgstr "Limite di budget raggiunto" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Carta di debito" +#~ msgid "Info" +#~ msgstr "Informazioni" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Banda" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Carta aziendale" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Rimborsato" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Elaborazione" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Fattura n.: %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "Avviso di bilancio dell'80%." +#~ msgid "Issue Date: %(date)s" +#~ msgstr "Data di emissione: %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Limite di budget raggiunto" +#~ msgid "Due Date: %(date)s" +#~ msgstr "Data di scadenza: %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Informazioni" +#~ msgid "Quote For:" +#~ msgstr "Preventivo per:" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "Dettagli preventivo:" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "Elementi:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "Totale:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "Fattura n.: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "Data di emissione: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "Data di scadenza: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Preventivo per:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Dettagli preventivo:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Elementi:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Totale:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Effettua il login per accedere a questa pagina" +#~ msgid "Please log in to access this page" +#~ msgstr "Effettua il login per accedere a questa pagina" diff --git a/translations/nb/LC_MESSAGES/messages.po b/translations/nb/LC_MESSAGES/messages.po index 54cd8115..6d0486d2 100644 --- a/translations/nb/LC_MESSAGES/messages.po +++ b/translations/nb/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: nb\n" @@ -14,26619 +14,18403 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "Logg inn for å få tilgang til klientportalen." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." msgstr "Økten din har utløpt eller siden var åpen for lenge. Vennligst prøv igjen." -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "Krever administratortilgang" +#~ msgid "Administrator access required" +#~ msgstr "Krever administratortilgang" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "Brukernavn er påkrevd" +#~ msgid "Username is required" +#~ msgstr "Brukernavn er påkrevd" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "Brukeren eksisterer allerede" +#~ msgid "User already exists" +#~ msgstr "Brukeren eksisterer allerede" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette bruker på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "Kunne ikke opprette bruker på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "Brukeren \"%(username)s\" ble opprettet" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "Brukernavnet finnes allerede" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Velg en klient når du aktiverer klientportaltilgang." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "Passordet må være minst 8 tegn langt." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "Passord stemmer ikke." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere bruker på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "Brukeren \"%(username)s\" ble opprettet" -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "Brukeren \"%(username)s\" ble oppdatert" +#~ msgid "Username already exists" +#~ msgstr "Brukernavnet finnes allerede" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "Kan ikke slette den siste administratoren" +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "Velg en klient når du aktiverer klientportaltilgang." -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "Kan ikke slette bruker med eksisterende tidsregistreringer" +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "Passordet må være minst 8 tegn langt." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "Kunne ikke slette bruker på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Passwords do not match." +#~ msgstr "Passord stemmer ikke." -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "Brukeren \"%(username)s\" ble slettet" +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere bruker på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "Telemetri er aktivert. Takk for at du hjelper oss å forbedre oss!" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "Brukeren \"%(username)s\" ble oppdatert" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "Kan ikke slette den siste administratoren" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "Kan ikke slette bruker med eksisterende tidsregistreringer" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette bruker på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "Brukeren \"%(username)s\" ble slettet" -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "Telemetri er aktivert. Takk for at du hjelper oss å forbedre oss!" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "Ugyldig tidssone: %(timezone)s" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere innstillingene på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Innstillingene ble oppdatert" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Feil under lagring av innstillinger" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "Ugyldig tidssone: %(timezone)s" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere innstillingene på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "Settings updated successfully" +#~ msgstr "Innstillingene ble oppdatert" -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "Kunne ikke oppdatere PDF-oppsettet på grunn av en databasefeil." +#~ msgid "Invalid code." +#~ msgstr "" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "PDF-layout ble oppdatert" +#~ msgid "Error saving settings" +#~ msgstr "Feil under lagring av innstillinger" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "Kunne ikke tilbakestille PDF-oppsettet på grunn av en databasefeil." +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "Kunne ikke oppdatere PDF-oppsettet på grunn av en databasefeil." + +#~ msgid "PDF layout updated successfully" +#~ msgstr "PDF-layout ble oppdatert" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "PDF-layout tilbakestilt til standard" +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "Kunne ikke tilbakestille PDF-oppsettet på grunn av en databasefeil." -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "PDF layout reset to defaults" +#~ msgstr "PDF-layout tilbakestilt til standard" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Invalid page size" +#~ msgstr "" -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Ingen fil er valgt" +#~ msgid "Template not found for this page size" +#~ msgstr "" -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "No file uploaded" +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "No file selected" +#~ msgstr "Ingen fil er valgt" -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Could not import template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "Template imported successfully" +#~ msgstr "" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "Ingen logofil er valgt" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "Ugyldig bildefil." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "Kunne ikke lagre logoen på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "Firmalogoen ble lastet opp! Du kan se den i delen \"Gjeldende firmalogo\" ovenfor. Det vil vises på fakturaer og PDF-dokumenter." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "Ugyldig filtype. Tillatte typer: PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "Kunne ikke fjerne logoen på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "Firmalogoen ble fjernet. Last opp en ny logo i seksjonen nedenfor om nødvendig." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "Ingen logo å fjerne" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "Sikkerhetskopiering mislyktes: arkivet ble ikke opprettet" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "Sikkerhetskopiering mislyktes: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Ugyldig filtype" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "Finner ikke sikkerhetskopifilen" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "Sikkerhetskopien \"%(filename)s\" ble slettet" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "Kunne ikke slette sikkerhetskopi: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "Ugyldig filtype. Velg et .zip-sikkerhetskopiarkiv." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "Finner ikke sikkerhetskopifilen." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "Ugyldig filtype. Last opp et .zip-sikkerhetskopiarkiv." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "Ingen sikkerhetskopifil oppgitt" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "Gjenoppretting startet. Du kan overvåke fremdriften på denne siden." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC er ikke aktivert. Sett AUTH_METHOD til \"oidc\" eller \"begge\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER er ikke konfigurert" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "Invoice not found" +#~ msgstr "" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "Quote not found" +#~ msgstr "" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "No logo file selected" +#~ msgstr "Ingen logofil er valgt" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "Invalid image file." +#~ msgstr "Ugyldig bildefil." -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kunne ikke lagre logoen på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ Oppdagelsesdokument ble hentet fra %(url)s" +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "Firmalogoen ble lastet opp! Du kan " +#~ "se den i delen \"Gjeldende firmalogo\"" +#~ " ovenfor. Det vil vises på fakturaer" +#~ " og PDF-dokumenter." -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "Ugyldig filtype. Tillatte typer: PNG, JPG, JPEG, GIF, SVG, WEBP" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ Kunne ikke hente oppdagelsesdokumentet: %(error)s" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke fjerne logoen på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ Uventet feil: %(error)s" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "Firmalogoen ble fjernet. Last opp en " +#~ "ny logo i seksjonen nedenfor om " +#~ "nødvendig." -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "Ingen logo å fjerne" -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ OAuth-klient er registrert i applikasjonen" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ OAuth-klient er ikke registrert" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ Kunne ikke opprette OAuth-klient: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s: %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ Mangler %(endpoint)s i oppdagelsesdokumentet" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ Omfang \"%(scope)s\" støttes av leverandøren" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ Omfang «%(scope)s» støttes kanskje ikke av leverandøren (støttet: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ Leverandøren støtter krav: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ Konfigurert %(claim_type)s påstand \"%(claim_name)s\" støttes" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ Konfigurert %(claim_type)s krav \"%(claim_name)s\" er ikke i støttet kravliste (kan fortsatt fungere)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "OIDC-konfigurasjonstest fullført" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "Malnavn er påkrevd" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "Malnavn er påkrevd" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "En mal med dette navnet finnes allerede" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "Kunne ikke opprette e-postmal på grunn av en databasefeil." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "E-postmal opprettet" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "Kunne ikke oppdatere e-postmalen på grunn av en databasefeil." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "E-postmalen ble oppdatert" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "Kan ikke slette mal som er i bruk av fakturaer eller gjentakende fakturaer" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "Kunne ikke slette e-postmalen på grunn av en databasefeil." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "E-postmalen \"%(name)s\" ble slettet" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "Backup failed: archive not created" +#~ msgstr "Sikkerhetskopiering mislyktes: arkivet ble ikke opprettet" -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "Det valgte prosjektet eksisterer ikke eller er inaktivt" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "beskjed" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "Sikkerhetskopiering mislyktes: %(error)s" -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "Tabellen for revisjonslogger eksisterer ikke. Vennligst kjør: flask db upgrade" +#~ msgid "Invalid file type" +#~ msgstr "Ugyldig filtype" -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "Finner ikke sikkerhetskopifilen" -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "Sikkerhetskopien \"%(filename)s\" ble slettet" -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "Velkommen tilbake, %(username)s!" +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "Kunne ikke slette sikkerhetskopi: %(error)s" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "Ugyldig filtype. Velg et .zip-sikkerhetskopiarkiv." -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Backup file not found." +#~ msgstr "Finner ikke sikkerhetskopifilen." -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "Ugyldig filtype. Last opp et .zip-sikkerhetskopiarkiv." -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "Angi passordet ditt" +#~ msgid "No backup file provided" +#~ msgstr "Ingen sikkerhetskopifil oppgitt" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "Gjenoppretting startet. Du kan overvåke fremdriften på denne siden." -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Ugyldig eller utløpt passordkonfigurasjonstoken. Vennligst be om en ny." +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "OIDC er ikke aktivert. Sett AUTH_METHOD til \"oidc\" eller \"begge\"." -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "Klientportalen er ikke aktivert for denne klienten." +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER er ikke konfigurert" -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "Kunne ikke angi passord på grunn av en databasefeil." +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ Oppdagelsesdokument ble hentet fra %(url)s" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil. Vennligst prøv igjen senere." +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ Kunne ikke hente oppdagelsesdokumentet: %(error)s" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "Velkomst! Kontoen din er opprettet." +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ Uventet feil: %(error)s" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Bruker ikke funnet. Vennligst kontakt en administrator." +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "Kunne ikke oppdatere kontorollen din på grunn av en databasefeil." +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ OAuth-klient er registrert i applikasjonen" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "Kontoen er deaktivert. Vennligst kontakt en administrator." +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ OAuth-klient er ikke registrert" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ Kunne ikke opprette OAuth-klient: %(error)s" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s: %(url)s" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ Mangler %(endpoint)s i oppdagelsesdokumentet" -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "Uventet feil under pålogging. Prøv igjen eller sjekk serverloggene." +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ Omfang \"%(scope)s\" støttes av leverandøren" -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "Økten din har utløpt eller siden var åpen for lenge. Vennligst prøv igjen." +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ Omfang «%(scope)s» støttes kanskje " +#~ "ikke av leverandøren (støttet: %(supported)s)" -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "Autentiseringsmetode" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "Autentiseringsmetode" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "Autentiseringsmetode" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "Kunne ikke oppdatere kontorollen din på grunn av en databasefeil." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "Farvel, %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "Ugyldig avatarfiltype. Tillatt: PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "Kunne ikke lagre avataren på serveren." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Profilen ble oppdatert" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "Kunne ikke oppdatere profilen din på grunn av en databasefeil." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ Leverandøren støtter krav: %(claims)s" -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "✓ Konfigurert %(claim_type)s påstand \"%(claim_name)s\" støttes" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ Konfigurert %(claim_type)s krav " +#~ "\"%(claim_name)s\" er ikke i støttet " +#~ "kravliste (kan fortsatt fungere)" -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "OIDC configuration test completed" +#~ msgstr "OIDC-konfigurasjonstest fullført" -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "Template name is required" +#~ msgstr "Malnavn er påkrevd" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "HTML template content is required" +#~ msgstr "Malnavn er påkrevd" -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar fjernet" +#~ msgid "A template with this name already exists" +#~ msgstr "En mal med dette navnet finnes allerede" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "Kunne ikke fjerne avataren." +#~ msgid "Could not create email template due to a database error." +#~ msgstr "Kunne ikke opprette e-postmal på grunn av en databasefeil." -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "Email template created successfully" +#~ msgstr "E-postmal opprettet" -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "Kunne ikke oppdatere e-postmalen på grunn av en databasefeil." -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Email template updated successfully" +#~ msgstr "E-postmalen ble oppdatert" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "Enkel pålogging er ikke konfigurert ennå. Vennligst kontakt en administrator." +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" +#~ "Kan ikke slette mal som er i " +#~ "bruk av fakturaer eller gjentakende " +#~ "fakturaer" -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "Enkel pålogging er ikke konfigurert." +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "Kunne ikke slette e-postmalen på grunn av en databasefeil." -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "E-postmalen \"%(name)s\" ble slettet" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Task name and project are required" +#~ msgstr "" -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "Autentisering mislyktes: manglende utsteder- eller emnekrav. Vennligst sjekk OIDC-konfigurasjonen." +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "Det valgte prosjektet eksisterer ikke eller er inaktivt" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "Brukerkonto eksisterer ikke og selvregistrering er deaktivert." +#~ msgid "message" +#~ msgstr "beskjed" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil." +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "Uventet feil under SSO-pålogging. Vennligst prøv igjen eller kontakt kundestøtte." +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" +#~ "Tabellen for revisjonslogger eksisterer ikke." +#~ " Vennligst kjør: flask db upgrade" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "Du har ikke tilgang til dette prosjektet." +#~ msgid "You must change your password before continuing." +#~ msgstr "" -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Dette prosjektet har ikke et budsjett." +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Arrangementet ble opprettet" +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "Velkommen tilbake, %(username)s!" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Arrangementet ble oppdatert" +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "Du har ikke tillatelse til å slette denne hendelsen." +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "Kunne ikke slette aktiviteten" +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Arrangementet ble slettet" +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Angi passordet ditt" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "Feil ved sletting av hendelse: %(error)s" +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "Arrangementet ble flyttet" +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "Ugyldig eller utløpt passordkonfigurasjonstoken. Vennligst be om en ny." -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "Størrelsen på hendelsen ble endret" +#~ msgid "Password reset is not available for this account." +#~ msgstr "Klientportalen er ikke aktivert for denne klienten." -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "Du har ikke tillatelse til å se denne hendelsen." +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "Du har ikke tillatelse til å redigere denne hendelsen." +#~ msgid "Could not reset password due to a database error." +#~ msgstr "Kunne ikke angi passord på grunn av en databasefeil." -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "Invalid username format" +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "Notatinnholdet kan ikke være tomt" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Merknaden ble lagt til" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Feil ved å legge til notat" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Feil ved å legge til notat: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "Note tilhører ikke denne klienten" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "Du har ikke tillatelse til å redigere dette notatet" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Feil under oppdatering av notat" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Notatet ble oppdatert" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Feil ved oppdatering av notat: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "Du har ikke tillatelse til å slette dette notatet" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Feil ved sletting av notat" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Notatet ble slettet" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "Feil ved sletting av notat: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "Logg inn for å få tilgang til klientportalen." +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Tilgang nektet" +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Forbudt" +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "Kunne ikke opprette kontoen din på " +#~ "grunn av en databasefeil. Vennligst prøv" +#~ " igjen senere." -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "Velkomst! Kontoen din er opprettet." -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Bruker ikke funnet. Vennligst kontakt en administrator." -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Siden ikke funnet" +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "Kunne ikke oppdatere kontorollen din på grunn av en databasefeil." -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "Kontoen er deaktivert. Vennligst kontakt en administrator." -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "Siden du leter etter eksisterer ikke eller har blitt flyttet." +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Serverfeil" +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "Uventet feil under pålogging. Prøv igjen eller sjekk serverloggene." -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "Kundeportaltilgang er ikke aktivert for kontoen din." +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "" +#~ "Økten din har utløpt eller siden " +#~ "var åpen for lenge. Vennligst prøv " +#~ "igjen." -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "Kundekontoen din er inaktiv." +#~ msgid "Invalid authentication code." +#~ msgstr "Autentiseringsmetode" -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Brukernavn og passord kreves." +#~ msgid "Two-factor authentication enabled." +#~ msgstr "Autentiseringsmetode" -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Ugyldig brukernavn eller passord." +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil." -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "Velkommen, %(client_name)s!" +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Autentiseringsmetode" -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "Du har blitt logget ut." +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "Kunne ikke oppdatere kontorollen din på grunn av en databasefeil." -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Ugyldig eller manglende passordoppsetttoken." +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "Farvel, %(username)s!" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "Ugyldig eller utløpt passordkonfigurasjonstoken. Vennligst be om en ny." +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "Ugyldig avatarfiltype. Tillatt: PNG, JPG, JPEG, GIF, WEBP" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "Passord kreves." +#~ msgid "Failed to save avatar on server." +#~ msgstr "Kunne ikke lagre avataren på serveren." -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "Kunne ikke angi passord på grunn av en databasefeil." +#~ msgid "Profile updated successfully" +#~ msgstr "Profilen ble oppdatert" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "Passordet ble angitt! Du kan nå logge inn på portalen." +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "Kunne ikke oppdatere profilen din på grunn av en databasefeil." -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "Kan ikke laste klientportaldata." +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "New password is required" +#~ msgstr "" -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Current password is required" +#~ msgstr "" -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "Current password is incorrect" +#~ msgstr "" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Finner ikke faktura." +#~ msgid "Could not update password due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Sitat ikke funnet." +#~ msgid "Avatar removed" +#~ msgstr "Avatar fjernet" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "Kunne ikke fjerne avataren." -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" +#~ "Enkel pålogging er ikke konfigurert " +#~ "ennå. Vennligst kontakt en administrator." -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "Enkel pålogging er ikke konfigurert." -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "Autentisering mislyktes: manglende utsteder- " +#~ "eller emnekrav. Vennligst sjekk OIDC-" +#~ "konfigurasjonen." -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "Brukerkonto eksisterer ikke og selvregistrering er deaktivert." -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil." -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Uventet feil under SSO-pålogging. " +#~ "Vennligst prøv igjen eller kontakt " +#~ "kundestøtte." -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "Du har ikke tilgang til dette prosjektet." -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "Dette prosjektet har ikke et budsjett." -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "Event created successfully" +#~ msgstr "Arrangementet ble opprettet" -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "Arrangementet ble oppdatert" -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "Du har ikke tillatelse til å slette denne hendelsen." -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "Failed to delete event" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "Event deleted successfully" +#~ msgstr "Arrangementet ble slettet" -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "Feil ved sletting av hendelse: %(error)s" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "Arrangementet ble flyttet" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "Event resized successfully" +#~ msgstr "Størrelsen på hendelsen ble endret" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "Du har ikke tillatelse til å se denne hendelsen." -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "Du har ikke tillatelse til å redigere denne hendelsen." -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "Notatinnholdet kan ikke være tomt" -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "Kan ikke laste klientportaldata." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "Klientportal" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "Siste 7 dager" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Sammendrag" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Totalt antall timer" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Note added successfully" +#~ msgstr "Merknaden ble lagt til" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Betalt" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Utestående" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Timer etter prosjekt" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Prosjekt" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Timer" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Fakturerbare timer" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "Tidsområde" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Dato" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Tilgang nektet" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "Error adding note" +#~ msgstr "Feil ved å legge til notat" -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Feil ved å legge til notat: %(error)s" -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Note does not belong to this client" +#~ msgstr "Note tilhører ikke denne klienten" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "Du har ikke tillatelse til å opprette klienter" +#~ msgid "You do not have permission to edit this note" +#~ msgstr "Du har ikke tillatelse til å redigere dette notatet" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "Klientnavn er påkrevd" +#~ msgid "Error updating note" +#~ msgstr "Feil under oppdatering av notat" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "En klient med dette navnet eksisterer allerede" +#~ msgid "Note updated successfully" +#~ msgstr "Notatet ble oppdatert" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Feil ved oppdatering av notat: %(error)s" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Ugyldig timeprisformat" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "Forskuddsbetalte timer må være et positivt tall." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "Forhåndsbetalt tilbakestillingsdag må være mellom 1 og 28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "You do not have permission to delete this note" +#~ msgstr "Du har ikke tillatelse til å slette dette notatet" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "Kunne ikke opprette klient på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Error deleting note" +#~ msgstr "Feil ved sletting av notat" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "Du har ikke tilgang til dette prosjektet." +#~ msgid "Note deleted successfully" +#~ msgstr "Notatet ble slettet" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "Du har ikke tillatelse til å redigere klienter" +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "Feil ved sletting av notat: %(error)s" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "Portalbrukernavn kreves når du aktiverer portaltilgang." +#~ msgid "Access Denied" +#~ msgstr "Tilgang nektet" -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Dette portalbrukernavnet er allerede i bruk av en annen klient." +#~ msgid "403 Forbidden" +#~ msgstr "403 Forbudt" -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere klienten på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "Du har ikke tillatelse til å sende portal-e-post" +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "Klientportalen er ikke aktivert for denne klienten." +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "Portalbrukernavn er ikke angitt for denne klienten." +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "Klientens e-postadresse er ikke angitt. Kan ikke sende e-post for passordoppsett." +#~ msgid "Page Not Found" +#~ msgstr "Siden ikke funnet" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "Kunne ikke generere passordoppsetttoken på grunn av en databasefeil." +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "Passordoppsett-e-post sendt til %(email)s" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "Siden du leter etter eksisterer ikke eller har blitt flyttet." -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "E-postserveren er ikke konfigurert. Vennligst konfigurer e-postinnstillinger i Admin → E-postkonfigurasjon eller angi MAIL_SERVER miljøvariabel." +#~ msgid "Server Error" +#~ msgstr "Serverfeil" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "Kunne ikke sende e-post for passordoppsett. Vennligst sjekk e-postkonfigurasjon og serverlogger for detaljer." +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "Det oppstod en feil under sending av e-posten: %(error)s" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "Du har ikke tillatelse til å arkivere klienter" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "Kundeportaltilgang er ikke aktivert for kontoen din." -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "Klienten er allerede inaktiv" +#~ msgid "Your client account is inactive." +#~ msgstr "Kundekontoen din er inaktiv." -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "Du har ikke tillatelse til å aktivere klienter" +#~ msgid "Username and password are required." +#~ msgstr "Brukernavn og passord kreves." -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "Klienten er allerede aktiv" +#~ msgid "Invalid username or password." +#~ msgstr "Ugyldig brukernavn eller passord." -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "Du har ikke tillatelse til å slette klienter" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "Velkommen, %(client_name)s!" -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "You have been logged out." +#~ msgstr "Du har blitt logget ut." -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Ugyldig eller manglende passordoppsetttoken." -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "Kunne ikke slette klienten på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "Ingen klienter valgt for sletting" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "Kunne ikke slette klienter på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "Ingen klienter ble slettet" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "Du har ikke tillatelse til å endre klientstatus" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "Ingen klienter er valgt" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Ugyldig status" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere klientstatus på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "Ingen klienter ble oppdatert" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "Ingen fil oppgitt" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Filtype ikke tillatt" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "Filstørrelsen overskrider maksimalt tillatt størrelse (10 MB)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "Kunne ikke laste opp vedlegg på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "Ugyldig eller utløpt passordkonfigurasjonstoken. Vennligst be om en ny." -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "Vedlegget ble lastet opp" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "Filen ble ikke funnet" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "Kunne ikke slette vedlegg på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "Vedlegget ble slettet" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "Kommentarinnholdet kan ikke være tomt" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "Kommentar må være knyttet til et prosjekt, en oppgave eller et tilbud" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "Kommentar kan ikke knyttes til flere mål" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Ugyldig forelderkommentar" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Kommentar lagt til" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Feil ved å legge til kommentar" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Feil ved å legge til kommentar: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "Du har ikke tillatelse til å redigere denne kommentaren" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Kommentaren ble oppdatert" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Feil ved oppdatering av kommentar: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "Du har ikke tillatelse til å slette denne kommentaren" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Kommentar slettet" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Feil ved sletting av kommentar: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "Password is required." +#~ msgstr "Passord kreves." -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Could not set password due to a database error." +#~ msgstr "Kunne ikke angi passord på grunn av en databasefeil." -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "Du har ikke tillatelse til å slette dette vedlegget" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "Passordet ble angitt! Du kan nå logge inn på portalen." -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "Kan ikke laste klientportaldata." -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Kontakt opprettet" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Feil ved opprettelse av kontakt: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Kontakten er oppdatert" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Feil ved oppdatering av kontakt: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Kontakten ble slettet" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "Feil ved sletting av kontakt: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Kontakt satt som primær" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "Feil ved innstilling av primærkontakt: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Kommunikasjonen ble registrert" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Feil ved opptak av kommunikasjon: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "Etikett kreves" +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "Invoice not found." +#~ msgstr "Finner ikke faktura." -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "Quote not found." +#~ msgstr "Sitat ikke funnet." -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Ugyldig avtaleverdi" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Avtalen ble opprettet" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Feil ved opprettelse av avtale: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Avtalen ble oppdatert" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Feil ved oppdatering av avtale: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Avtalen ble avsluttet som vunnet" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Feil ved lukking av avtale: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Avtalen ble avsluttet som tapt" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Aktivitet registrert" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Feil ved registrering av aktivitet: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "Kategorinavn er obligatorisk" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Utgiftskategori opprettet" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Feil ved opprettelse av utgiftskategori" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Utgiftskategori er oppdatert" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Feil ved oppdatering av utgiftskategori" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Utgiftskategori er deaktivert" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Feil ved deaktivering av utgiftskategori" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "Tittel er påkrevd" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "Kategori er påkrevd" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "Beløp kreves" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "Utgiftsdato er påkrevd" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Ugyldig datoformat" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Ugyldig beløpsformat" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Utgift opprettet" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Feil ved opprettelse av utgift" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "Du har ikke tillatelse til å se denne utgiften" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "Du har ikke tillatelse til å redigere denne utgiften" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "Kan ikke redigere godkjente eller refunderte utgifter" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Vennligst fyll ut alle obligatoriske felter" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Utgiften er oppdatert" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Feil ved oppdatering av utgift" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "Du har ikke tillatelse til å slette denne utgiften" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "Kan ikke slette godkjente eller fakturerte utgifter" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Utgift slettet" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Feil ved sletting av utgift" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "Ingen utgifter valgt for sletting" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "Kunne ikke slette utgifter på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "Vellykket slettet %(count)d utgift(er)" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "Hoppet over %(count)d utgift(er): %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "Ingen utgifter valgt" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Ugyldig statusverdi" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "Kunne ikke oppdatere utgifter på grunn av en databasefeil" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "Vellykket oppdatert %(count)d utgift(er) til %(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "Hoppet over %(count)d utgift(er): %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "Hoppet over %(count)d utgift(er) (ingen tillatelse)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Kun administratorer kan godkjenne utgifter" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Kun utestående utgifter kan godkjennes" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Utgift godkjent" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Feil ved godkjenning av utgift" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Bare administratorer kan avvise utgifter" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Kun utestående utgifter kan avvises" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Årsak til avvisning kreves" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Utgift avvist" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Feil under avvisning av utgift" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Kun administratorer kan merke utgifter som refundert" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Kun godkjente utgifter kan merkes som refundert" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Denne utgiften er ikke merket som refunderbar" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Utgift markert som refundert" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Feil ved merking av utgift som refundert" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "OCR er ikke tilgjengelig. Kontakt administratoren din." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Ugyldig filtype. Tillatte typer: png, jpg, jpeg, gif, pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "Kvittering skannet! Du kan nå opprette en utgift med de utpakkede dataene." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "Feil ved skanning av kvittering. Vennligst prøv igjen eller skriv inn utgiften manuelt." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "Fant ingen skannede kvitteringsdata. Vennligst skann en kvittering først." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Utgift opprettet fra skannet kvittering" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "Ingen tillatelser tildelt." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "Kan ikke laste klientportaldata." -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "Client Report" +#~ msgstr "Klientportal" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "Siste 7 dager" -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "Summary" +#~ msgstr "Sammendrag" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "Totalt antall timer" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "Paid" +#~ msgstr "Betalt" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "Utestående" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "Timer etter prosjekt" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Project" +#~ msgstr "Prosjekt" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Hours" +#~ msgstr "Timer" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Billable Hours" +#~ msgstr "Fakturerbare timer" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Time by Date" +#~ msgstr "Tidsområde" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Date" +#~ msgstr "Dato" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "Access denied" +#~ msgstr "Tilgang nektet" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "REST API for integrasjoner" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "Klientnavn er påkrevd" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "Du har ikke tillatelse til å opprette klienter" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "Klientnavn er påkrevd" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "En klient med dette navnet eksisterer allerede" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "Ugyldig timeprisformat" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "Forskuddsbetalte timer må være et positivt tall." -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "Forhåndsbetalt tilbakestillingsdag må være mellom 1 og 28." -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette klient på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "Du har ikke tilgang til dette prosjektet." -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "Du har ikke tillatelse til å redigere klienter" -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "Portalbrukernavn kreves når du aktiverer portaltilgang." -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "This portal username is already in use by another client." +#~ msgstr "Dette portalbrukernavnet er allerede i bruk av en annen klient." -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere klienten på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "Du har ikke tillatelse til å sende portal-e-post" -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "Klientportalen er ikke aktivert for denne klienten." -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "Portal username is not set for this client." +#~ msgstr "Portalbrukernavn er ikke angitt for denne klienten." -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "Klientens e-postadresse er ikke angitt. " +#~ "Kan ikke sende e-post for " +#~ "passordoppsett." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "Kunne ikke generere passordoppsetttoken på grunn av en databasefeil." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "Passordoppsett-e-post sendt til %(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "E-postserveren er ikke konfigurert. Vennligst" +#~ " konfigurer e-postinnstillinger i Admin →" +#~ " E-postkonfigurasjon eller angi MAIL_SERVER " +#~ "miljøvariabel." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "Kunne ikke sende e-post for " +#~ "passordoppsett. Vennligst sjekk e-postkonfigurasjon" +#~ " og serverlogger for detaljer." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "Det oppstod en feil under sending av e-posten: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "Du har ikke tillatelse til å arkivere klienter" + +#~ msgid "Client is already inactive" +#~ msgstr "Klienten er allerede inaktiv" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "Du har ikke tillatelse til å aktivere klienter" + +#~ msgid "Client is already active" +#~ msgstr "Klienten er allerede aktiv" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "Du har ikke tillatelse til å slette klienter" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette klienten på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "No clients selected for deletion" +#~ msgstr "Ingen klienter valgt for sletting" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette klienter på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "No clients were deleted" +#~ msgstr "Ingen klienter ble slettet" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "Du har ikke tillatelse til å endre klientstatus" + +#~ msgid "No clients selected" +#~ msgstr "Ingen klienter er valgt" + +#~ msgid "Invalid status" +#~ msgstr "Ugyldig status" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere klientstatus på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." + +#~ msgid "No clients were updated" +#~ msgstr "Ingen klienter ble oppdatert" + +#~ msgid "No file provided" +#~ msgstr "Ingen fil oppgitt" + +#~ msgid "File type not allowed" +#~ msgstr "Filtype ikke tillatt" + +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "Filstørrelsen overskrider maksimalt tillatt størrelse (10 MB)" -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kunne ikke laste opp vedlegg på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "Vedlegget ble lastet opp" -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "File not found" +#~ msgstr "Filen ble ikke funnet" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kunne ikke slette vedlegg på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "Vedlegget ble slettet" -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "Kommentarinnholdet kan ikke være tomt" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "Kommentar må være knyttet til et prosjekt, en oppgave eller et tilbud" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "Kommentar kan ikke knyttes til flere mål" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "Ugyldig forelderkommentar" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "Kommentar lagt til" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "Feil ved å legge til kommentar" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Feil ved å legge til kommentar: %(error)s" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "Du har ikke tillatelse til å redigere denne kommentaren" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "Comment updated successfully" +#~ msgstr "Kommentaren ble oppdatert" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Feil ved oppdatering av kommentar: %(error)s" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "Du har ikke tillatelse til å slette denne kommentaren" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "Kommentar slettet" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Feil ved sletting av kommentar: %(error)s" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "Du har ikke tillatelse til å slette dette vedlegget" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "Kontakt opprettet" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Feil ved opprettelse av kontakt: %(error)s" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "Kontakten er oppdatert" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Avansert" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Gjennomgå" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Feil ved oppdatering av kontakt: %(error)s" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "Kontakten ble slettet" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "Feil ved sletting av kontakt: %(error)s" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Contact set as primary" +#~ msgstr "Kontakt satt som primær" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Bedrift" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "Feil ved innstilling av primærkontakt: %(error)s" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "Kommunikasjonen ble registrert" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Feil ved opptak av kommunikasjon: %(error)s" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Webhooks" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Label is required" +#~ msgstr "Etikett kreves" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Prosjekter" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "SKU eksisterer allerede. Vennligst bruk en annen SKU." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Lagervare opprettet." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "Feil ved opprettelse av lagervare: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Lagervare ble oppdatert." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "Feil ved oppdatering av lagervare: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "Kan ikke slette lagervare med eksisterende lager eller bevegelseshistorikk." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "Lagervare slettet." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "Feil ved sletting av lagervare: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "Lagerkode finnes allerede. Vennligst bruk en annen kode." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Lageret ble opprettet." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Feil ved opprettelse av lager: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Lageret er oppdatert." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "Feil ved oppdatering av lager: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "Kan ikke slette lager med eksisterende lager. Vennligst overfør eller fjern alt lager først." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Lageret ble slettet." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Feil ved sletting av lager: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "Ugyldig avtaleverdi" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "Avtalen ble opprettet" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Feil ved opprettelse av avtale: %(error)s" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "Avtalen ble oppdatert" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Feil ved oppdatering av avtale: %(error)s" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "Avtalen ble avsluttet som vunnet" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Feil ved lukking av avtale: %(error)s" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "Avtalen ble avsluttet som tapt" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "Aktivitet registrert" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Feil ved registrering av aktivitet: %(error)s" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "Kategorinavn er obligatorisk" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Expense category created successfully" +#~ msgstr "Utgiftskategori opprettet" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "Feil ved opprettelse av utgiftskategori" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "Utgiftskategori er oppdatert" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Error updating expense category" +#~ msgstr "Feil ved oppdatering av utgiftskategori" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Utgiftskategori er deaktivert" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "Aksjebevegelse registrert." +#~ msgid "Error deactivating expense category" +#~ msgstr "Feil ved deaktivering av utgiftskategori" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Title is required" +#~ msgstr "Tittel er påkrevd" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "Feil ved registrering av lagerbevegelse: %(error)s" +#~ msgid "Category is required" +#~ msgstr "Kategori er påkrevd" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "Kilde- og destinasjonslager må være forskjellige." +#~ msgid "Amount is required" +#~ msgstr "Beløp kreves" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Utilstrekkelig lager tilgjengelig i kildelageret." +#~ msgid "Expense date is required" +#~ msgstr "Utgiftsdato er påkrevd" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "Ugyldig datoformat" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "Ugyldig beløpsformat" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "Aksjeoverføring fullført." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Feil ved opprettelse av overføring: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "Lagerjustering registrert." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Feilopptaksjustering: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Reservasjonen fullført." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Feil ved oppfyllelse av reservasjon: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "Reservasjonen ble kansellert." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "Feil ved kansellering av reservasjon: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "Leverandør opprettet." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Feil ved opprettelse av leverandør: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "Leverandørkoden finnes allerede. Vennligst bruk en annen kode." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "Leverandøren ble oppdatert." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Feil ved oppdatering av leverandør: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "Kan ikke slette leverandør med tilhørende lagervarer. Fjern elementer først." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "Leverandøren ble slettet." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Feil ved sletting av leverandør: %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "Tittel er påkrevd" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "Ingen leverandører funnet." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "Rollenavn er obligatorisk" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Innkjøpsordre opprettet." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Feil ved opprettelse av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "Kan ikke redigere en innkjøpsordre som er mottatt." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "Kunne ikke oppdatere rollen på grunn av en databasefeil" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Innkjøpsordre ble oppdatert." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Feil ved oppdatering av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "Kunne ikke oppdatere brukerroller på grunn av en databasefeil" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Innkjøpsordre merket som sendt." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Feil ved sending av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Innkjøpsordre kansellert." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Feil ved kansellering av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "Kan ikke slette en innkjøpsordre som er mottatt. Avbryt den i stedet." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "Kunne ikke slette rollen på grunn av en databasefeil" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Innkjøpsordre slettet." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Feil ved sletting av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Innkjøpsordre merket som mottatt og beholdning oppdatert." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Feil ved mottak av innkjøpsordre: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "Utgift opprettet" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "Feil ved opprettelse av utgift" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "Du har ikke tillatelse til å se denne utgiften" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "Du har ikke tillatelse til å redigere denne utgiften" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "Kan ikke redigere godkjente eller refunderte utgifter" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "Prosjekt, kundenavn og forfallsdato kreves" +#~ msgid "Please fill in all required fields" +#~ msgstr "Vennligst fyll ut alle obligatoriske felter" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Ugyldig forfallsdatoformat" +#~ msgid "Expense updated successfully" +#~ msgstr "Utgiften er oppdatert" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Ugyldig skattesatsformat" +#~ msgid "Error updating expense" +#~ msgstr "Feil ved oppdatering av utgift" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Det valgte prosjektet ble ikke funnet" +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "Du har ikke tillatelse til å slette denne utgiften" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "Kunne ikke opprette faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "Kan ikke slette godkjente eller fakturerte utgifter" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "Du har ikke tillatelse til å se denne fakturaen" +#~ msgid "Expense deleted successfully" +#~ msgstr "Utgift slettet" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "Feil ved sletting av utgift" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "Ingen utgifter valgt for sletting" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette utgifter på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "Vellykket slettet %(count)d utgift(er)" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "Hoppet over %(count)d utgift(er): %(errors)s" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "Ingen utgifter valgt" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "Invalid status value" +#~ msgstr "Ugyldig statusverdi" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "Du har ikke tillatelse til å redigere denne fakturaen" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "Advarsel: Kunne ikke reservere lager for varen %(item)s: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "Fakturaen ble oppdatert" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "Advarsel: Kunne ikke redusere lagerbeholdningen for varen %(item)s: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "Du har ikke tillatelse til å slette denne fakturaen" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "Kun utkast til sitater kan redigeres" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "Kunne ikke slette faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "Ingen fakturaer valgt for sletting" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "Kunne ikke slette fakturaer på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "Ingen fakturaer er valgt" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "Kunne ikke oppdatere fakturaer på grunn av en databasefeil" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "Ingen tidsregistreringer, kostnader, utgifter eller ekstra varer er valgt" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "Kunne ikke generere elementer på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "Fakturaposter generert vellykket fra tidsregistreringer og kostnader" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "Brukte %(hours)s forhåndsbetalte timer for %(client)s før faktureringsoverskudd." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "Du har ikke tillatelse til å eksportere denne fakturaen" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "Kunne ikke oppdatere utgifter på grunn av en databasefeil" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "Vellykket oppdatert %(count)d utgift(er) til %(status)s" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "Hoppet over %(count)d utgift(er): %(errors)s" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "Hoppet over %(count)d utgift(er) (ingen tillatelse)" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Kun administratorer kan godkjenne utgifter" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Kun utestående utgifter kan godkjennes" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "Utgift godkjent" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "PDF-generering mislyktes: %(err)s. Tilbakestilling mislyktes også: %(fb)s" +#~ msgid "Error approving expense" +#~ msgstr "Feil ved godkjenning av utgift" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "Du har ikke tillatelse til å duplisere denne fakturaen" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Bare administratorer kan avvise utgifter" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "Kunne ikke duplisere faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Kun utestående utgifter kan avvises" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "Kunne ikke fullføre duplisert faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Rejection reason is required" +#~ msgstr "Årsak til avvisning kreves" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "Utgift avvist" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "Feil under avvisning av utgift" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "Kun administratorer kan merke utgifter som refundert" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Kun godkjente utgifter kan merkes som refundert" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Denne utgiften er ikke merket som refunderbar" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Utgift markert som refundert" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Feil ved merking av utgift som refundert" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "OCR er ikke tilgjengelig. Kontakt administratoren din." -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Faktura merket som sendt" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Ugyldig filtype. Tillatte typer: png, jpg, jpeg, gif, pdf" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Faktura merket som betalt" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "Kvittering skannet! Du kan nå opprette" +#~ " en utgift med de utpakkede dataene." -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Feil ved skanning av kvittering. " +#~ "Vennligst prøv igjen eller skriv inn " +#~ "utgiften manuelt." -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "Fant ingen skannede kvitteringsdata. Vennligst" +#~ " skann en kvittering først." -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Utgift opprettet fra skannet kvittering" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "Permission denied." +#~ msgstr "Ingen tillatelser tildelt." -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "Nøkkel og etikett kreves" +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "Kunne ikke opprette kolonne på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere kolonne på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "Systemkolonner kan ikke slettes" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "Kunne ikke slette kolonne på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "Kunne ikke bytte kolonne på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "REST API for integrasjoner" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "Linear API key is required." +#~ msgstr "Klientnavn er påkrevd" -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "Timeren stoppet" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Kundeemne ble opprettet" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Feil ved opprettelse av kundeemne: %(error)s" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Kundeemne ble oppdatert" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Feil ved oppdatering av lead: %(error)s" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "Bly er allerede konvertert" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Lead konvertert til klient vellykket" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Feil ved konvertering av lead: %(error)s" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Bly konvertert til en vellykket avtale" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Bly merket som tapt" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "Feil ved merking av kundeemne som tapt: %(error)s" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Kilometeroppføring opprettet" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Feil ved opprettelse av kjørelengdeoppføring" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "Du har ikke tillatelse til å se denne kilometeroppføringen" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "Du har ikke tillatelse til å redigere denne kilometeroppføringen" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "Kan ikke redigere godkjente eller refunderte kjørelengdeoppføringer" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Kilometeroppføringen ble oppdatert" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Feil ved oppdatering av kjørelengdeoppføring" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "Du har ikke tillatelse til å slette denne kilometeroppføringen" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "Kilometeroppføring slettet" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Feil ved sletting av kjørelengdeoppføring" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "Ingen kilometerangivelser valgt for sletting" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "Kunne ikke slette kjørelengdeoppføringer på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "Vellykket slettet %(count)d kjørelengde entr%(plural)s" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "Hoppet over %(count)d kjørelengdeinnføring%(plural)s: %(errors)s" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "Ingen kilometerangivelser er valgt" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "Kunne ikke oppdatere kjørelengdeoppføringer på grunn av en databasefeil" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "Vellykket oppdatert %(count)d kjørelengde entr%(plural)s til %(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "Hoppet over %(count)d kjørelengde entr%(plural)s (ingen tillatelse)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Bare administratorer kan godkjenne kilometerangivelser" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Kun ventende kilometerangivelser kan godkjennes" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Kilometerregistrering godkjent" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Feil ved godkjenning av kilometerangivelse" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Bare administratorer kan avvise kilometerangivelser" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "Bare ventende kilometerangivelser kan avvises" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Kilometerregistrering avvist" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Feil ved avvisning av kilometerangivelse" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "Bare administratorer kan merke kilometeroppføringer som refundert" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "Kun godkjente kilometerangivelser kan merkes som refundert" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Kilometeroppføring merket som refundert" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Feil ved merking av kilometerangivelse som refundert" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "Sitattittel og klient kreves" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Den valgte klienten ble ikke funnet" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Ugyldig totalbeløpsformat" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Ugyldig estimert timeformat" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Ugyldig datoformat for gyldig til" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "Kunne ikke opprette tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Sitat opprettet" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "Kun utkast til sitater kan redigeres" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere tilbudet på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "Sitat ble oppdatert" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "Kun utkast til tilbud kan sendes" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "Kunne ikke sende tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Sitat sendt" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Dette sitatet kan ikke aksepteres" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "Kunne ikke godta sitat: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "Kunne ikke godta tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Tilbud akseptert og prosjektet ble opprettet" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Dette sitatet kan ikke avvises" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "Kunne ikke avvise sitat: %(error)s" +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "Kunne ikke avvise tilbudet på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Sitat avvist" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "Kun utkast eller avviste sitater kan slettes" +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "Kunne ikke slette sitat på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Sitat slettet" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Advanced" +#~ msgstr "Avansert" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Review" +#~ msgstr "Gjennomgå" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "Ugyldig fra datoformat" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Ugyldig til dato-format" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "Du har ikke tillatelse til å se denne betalingen" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "Faktura, beløp og betalingsdato kreves" +#~ msgid "Company" +#~ msgstr "Bedrift" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "Finner ikke den valgte fakturaen" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "Du har ikke tillatelse til å legge til betalinger på denne fakturaen" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "Betalingsbeløpet må være større enn null" +#~ msgid "Webhooks" +#~ msgstr "Webhooks" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Ugyldig betalingsbeløp" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Ugyldig betalingsdatoformat" +#~ msgid "Projects" +#~ msgstr "Prosjekter" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "Gateway-avgiften kan ikke være negativ" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Ugyldig gateway-avgiftsbeløp" +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "Kunne ikke opprette betaling på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "Du har ikke tillatelse til å redigere denne betalingen" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere betaling på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Betalingen ble oppdatert" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "Du har ikke tillatelse til å slette denne betalingen" +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "Kunne ikke slette betaling på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Betalingen ble slettet" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "Ingen betalinger valgt for sletting" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "Kunne ikke slette betalinger på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "SKU eksisterer allerede. Vennligst bruk en annen SKU." -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "Ingen betalinger er valgt" +#~ msgid "Stock item created successfully." +#~ msgstr "Lagervare opprettet." -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "Kunne ikke oppdatere betalinger på grunn av en databasefeil" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "Feil ved opprettelse av lagervare: %(error)s" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "Startdatoen må være før sluttdatoen" +#~ msgid "Stock item updated successfully." +#~ msgstr "Lagervare ble oppdatert." -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "Fant ingen dagpengesats for dette stedet. Vennligst konfigurer priser først." +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "Feil ved oppdatering av lagervare: %(error)s" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Dagpengekrav opprettet" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "Kan ikke slette lagervare med " +#~ "eksisterende lager eller bevegelseshistorikk." -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Feil ved opprettelse av dagpengekrav" +#~ msgid "Stock item deleted successfully." +#~ msgstr "Lagervare slettet." -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "Du har ikke tillatelse til å se dette dagpengekravet" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "Feil ved sletting av lagervare: %(error)s" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "Du har ikke tillatelse til å redigere dette dagpengekravet" +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "Lagerkode finnes allerede. Vennligst bruk en annen kode." -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "Kan ikke redigere godkjente eller refunderte dagpengekrav" +#~ msgid "Warehouse created successfully." +#~ msgstr "Lageret ble opprettet." -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "Dagpengekravet ble oppdatert" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Feil ved opprettelse av lager: %(error)s" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Feil ved oppdatering av dagpengekrav" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "Du har ikke tillatelse til å slette dette dagpengekravet" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Dagpengekravet ble slettet" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Feil ved sletting av dagpengekrav" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "Ingen dagpengekrav valgt for sletting" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "Kunne ikke slette dagpengekrav på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "Slettet %(count)d dagpengekrav(er)" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "Hoppet over %(count)d dagpengekrav: %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "Ingen dagpengekrav valgt" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "Kunne ikke oppdatere dagpengekrav på grunn av en databasefeil" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "Vellykket oppdatert %(count)d dagpengekrav til %(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "Hoppet over %(count)d dagpengekrav (ingen tillatelse)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Bare administratorer kan godkjenne dagpengekrav" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Kun utestående dagpengekrav kan godkjennes" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Dagpengekrav godkjent" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Feil ved godkjenning av dagpengekrav" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Bare administratorer kan avvise dagpengekrav" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Kun utestående dagpengekrav kan avvises" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Dagpengekravet avvist" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Feil ved avvisning av dagpengekrav" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Dagpengene er opprettet" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Feil ved opprettelse av dagpengesats" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Dagpengene er oppdatert" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Feil ved oppdatering av dagpengesatsen" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "Kan ikke slette sats: Den brukes av %(count)d dagpengekrav. Deaktiver den i stedet." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "Dagpengene ble slettet" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Feil ved sletting av dagpengesatsen" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "Du har ikke tillatelse til å få tilgang til denne siden" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "Rollenavn er obligatorisk" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "En rolle med dette navnet finnes allerede" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Rollen ble opprettet" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "Lageret er oppdatert." -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "Kunne ikke oppdatere rollen på grunn av en databasefeil" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "Feil ved oppdatering av lager: %(error)s" -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Rollen ble oppdatert" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "Kan ikke slette lager med eksisterende" +#~ " lager. Vennligst overfør eller fjern " +#~ "alt lager først." -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "Du har ikke tillatelse til å utføre denne handlingen" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Lageret ble slettet." -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "Systemroller kan ikke slettes" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Feil ved sletting av lager: %(error)s" -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "Kan ikke slette rolle som er tildelt brukere. Vennligst tilordne brukere på nytt først." +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "Kunne ikke slette rollen på grunn av en databasefeil" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "Rollen \"%(name)s\" ble slettet" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "Kunne ikke oppdatere brukerroller på grunn av en databasefeil" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Brukerrollene er oppdatert" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "Prosjektnavn og klient kreves" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Ugyldig budsjettbeløp" +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Ugyldig budsjettgrenseprosent (0–100)" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Finner ikke prosjektet" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "Du har ikke tillatelse til å arkivere prosjekter" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "Prosjektet er allerede arkivert" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "Aksjebevegelse registrert." -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "Du har ikke tillatelse til å dearkivere prosjekter" +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "Prosjektet er allerede aktivt" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "Feil ved registrering av lagerbevegelse: %(error)s" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "Du har ikke tillatelse til å deaktivere prosjekter" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "Kilde- og destinasjonslager må være forskjellige." -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "Prosjektet er allerede inaktivt" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Utilstrekkelig lager tilgjengelig i kildelageret." -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "Du har ikke tillatelse til å aktivere prosjekter" +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "Kan ikke slette prosjekt med eksisterende tidsregistreringer" +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "Kunne ikke slette prosjektet på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "Du har ikke tillatelse til å slette prosjekter" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "Aksjeoverføring fullført." -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "Ingen prosjekter er valgt for sletting" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Feil ved opprettelse av overføring: %(error)s" -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "Kunne ikke slette prosjekter på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "Lagerjustering registrert." -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "Ingen prosjekter ble slettet" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Feilopptaksjustering: %(error)s" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "Du har ikke tillatelse til å endre prosjektstatus" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Reservasjonen fullført." -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "Ingen prosjekter er valgt" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Feil ved oppfyllelse av reservasjon: %(error)s" -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere prosjektstatus på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Reservation cancelled successfully." +#~ msgstr "Reservasjonen ble kansellert." -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "Ingen prosjekter ble oppdatert" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "Feil ved kansellering av reservasjon: %(error)s" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "Prosjektet er allerede i favoritter" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Prosjekt lagt til i favoritter" +#~ msgid "Supplier created successfully." +#~ msgstr "Leverandør opprettet." -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "Kunne ikke legge til prosjekt i favoritter" +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Feil ved opprettelse av leverandør: %(error)s" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "Prosjekt er ikke i favoritter" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "Leverandørkoden finnes allerede. Vennligst bruk en annen kode." -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Prosjekt fjernet fra favoritter" +#~ msgid "Supplier updated successfully." +#~ msgstr "Leverandøren ble oppdatert." -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "Kunne ikke fjerne prosjektet fra favoritter" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Feil ved oppdatering av leverandør: %(error)s" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "Beskrivelse, kategori, beløp og dato kreves" +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "Kan ikke slette leverandør med " +#~ "tilhørende lagervarer. Fjern elementer først." -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "Kunne ikke legge til kostnad på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Supplier deleted successfully." +#~ msgstr "Leverandøren ble slettet." -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Kostnad lagt til" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Feil ved sletting av leverandør: %(error)s" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Pris ikke funnet" +#~ msgid "Supplier is required." +#~ msgstr "Tittel er påkrevd" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "Du har ikke tillatelse til å redigere denne kostnaden" +#~ msgid "Supplier not found." +#~ msgstr "Ingen leverandører funnet." -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere kostnaden på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Order date is required." +#~ msgstr "Rollenavn er obligatorisk" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Kostnaden er oppdatert" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "Du har ikke tillatelse til å slette denne kostnaden" +#~ msgid "Purchase order created successfully." +#~ msgstr "Innkjøpsordre opprettet." -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "Kan ikke slette kostnad som er fakturert" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Feil ved opprettelse av innkjøpsordre: %(error)s" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "Kunne ikke slette kostnad på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "Kan ikke redigere en innkjøpsordre som er mottatt." -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Navn og enhetspris kreves" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "Kunne ikke oppdatere rollen på grunn av en databasefeil" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Ugyldig mengdeformat" +#~ msgid "Purchase order updated successfully." +#~ msgstr "Innkjøpsordre ble oppdatert." -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Ugyldig enhetsprisformat" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Feil ved oppdatering av innkjøpsordre: %(error)s" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "Kunne ikke legge til ekstra god på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Ekstra bra lagt til" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Ekstra god ikke funnet" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "Du har ikke tillatelse til å redigere denne ekstra goden" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere ekstra bra på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Ekstra bra oppdatert vellykket" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "Du har ikke tillatelse til å slette denne ekstra varen" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "Kan ikke slette ekstra vare som er lagt til en faktura" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "Kunne ikke slette ekstra god på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Prosjekt opprettet" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Ugyldig format for rabattbeløp" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "Tilbud må godkjennes før det kan sendes" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "Kan ikke sende tilbud: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "Du har ikke tillatelse til å laste opp vedlegg til dette sitatet" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "Du har ikke tillatelse til å laste ned dette vedlegget" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "Du har ikke tillatelse til å be om godkjenning for dette tilbudet" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Dette tilbudet krever ikke godkjenning" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "Kan ikke be om godkjenning: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "Kunne ikke be om godkjenning på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Godkjenning ble forespurt" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Dette sitatet venter ikke på godkjenning" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "Kan ikke godkjenne sitat: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "Kunne ikke godkjenne tilbudet på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Sitat godkjent" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "Kan ikke avvise sitat: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Sitatgodkjenning avvist" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "Kunne ikke opprette mal på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Malen ble opprettet" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "Kunne ikke oppdatere brukerroller på grunn av en databasefeil" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "Du har ikke tillatelse til å lage en mal fra dette sitatet" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "Kunne ikke lagre malen på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Malen ble lagret" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "Du har ikke tillatelse til å eksportere dette tilbudet" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Feil ved generering av PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "Mottakerens e-postadresse kreves" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Sitat sendt til %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "Kunne ikke sende tilbud: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Feil ved sending av e-post: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "Du har ikke tillatelse til å duplisere dette sitatet" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "Kunne ikke duplisere tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "Kunne ikke fullføre duplisert tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "Sitat %(quote_number)s opprettet som duplikat" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Velg en handling og minst ett sitat" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "Ugyldige tilbuds-ID-er" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "Finner ingen sitater eller du har ikke tillatelse" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "Duplisert %(count)d sitat(er)" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "Kunne ikke duplisere %(count)d sitat(er)" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Feil ved duplisering av sitater" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "Merket %(count)d sitat(er) som sendt" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "Kunne ikke merke %(count)d sitat(er) som sendt" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Feil under oppdatering av sitater" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "Slettet %(count)d sitat(er)" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "Kunne ikke slette %(count)d sitat(er) (kan være i bruk)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Feil ved sletting av sitater" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Ugyldig handling" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "Purchase order marked as sent." +#~ msgstr "Innkjøpsordre merket som sendt." -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Feil ved sending av innkjøpsordre: %(error)s" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "Navn, prosjekt, klient, frekvens og neste kjøringsdato er påkrevd" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Ugyldig format for neste kjøringsdato" +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Innkjøpsordre kansellert." -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Ugyldig sluttdatoformat" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Feil ved kansellering av innkjøpsordre: %(error)s" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Det valgte prosjektet eller klienten ble ikke funnet" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "Kan ikke slette en innkjøpsordre som er mottatt. Avbryt den i stedet." -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "Kunne ikke opprette gjentakende faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "Kunne ikke slette rollen på grunn av en databasefeil" -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "Du har ikke tillatelse til å se denne gjentakende fakturaen" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Innkjøpsordre slettet." -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "Du har ikke tillatelse til å redigere denne gjentakende fakturaen" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Feil ved sletting av innkjøpsordre: %(error)s" -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere gjentakende faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Gjentakende faktura er oppdatert" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "Innkjøpsordre merket som mottatt og beholdning oppdatert." -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "Du har ikke tillatelse til å slette denne gjentakende fakturaen" +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Feil ved mottak av innkjøpsordre: %(error)s" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "Kunne ikke slette gjentakende faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Start" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "Slutt" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Oppgave" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Notater" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "Fakturerbar" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Klient" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Bruker" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "Ja" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "Ingen" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "Kunne ikke slette filteret på grunn av en databasefeil" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "Prosjekt, kundenavn og forfallsdato kreves" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Invalid due date format" +#~ msgstr "Ugyldig forfallsdatoformat" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Invalid tax rate format" +#~ msgstr "Ugyldig skattesatsformat" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Selected project not found" +#~ msgstr "Det valgte prosjektet ble ikke funnet" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette faktura på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "Du har ikke tillatelse til å se denne fakturaen" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "Du har ikke tillatelse til å redigere denne fakturaen" -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "Kunne ikke oppdatere innstillingene på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "Advarsel: Kunne ikke reservere lager for varen %(item)s: %(error)s" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "Oppsettet er fullført! Takk for at du hjelper oss med å forbedre TimeTracker." +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere faktura på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "Invoice updated successfully" +#~ msgstr "Fakturaen ble oppdatert" + +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Advarsel: Kunne ikke redusere " +#~ "lagerbeholdningen for varen %(item)s: " +#~ "%(error)s" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "Du har ikke tillatelse til å slette denne fakturaen" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "Kun utkast til sitater kan redigeres" + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette faktura på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "Ingen fakturaer valgt for sletting" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette fakturaer på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "No invoices selected" +#~ msgstr "Ingen fakturaer er valgt" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "Kunne ikke oppdatere fakturaer på grunn av en databasefeil" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "" +#~ "Ingen tidsregistreringer, kostnader, utgifter " +#~ "eller ekstra varer er valgt" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke generere elementer på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "Fakturaposter generert vellykket fra tidsregistreringer og kostnader" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "Brukte %(hours)s forhåndsbetalte timer for " +#~ "%(client)s før faktureringsoverskudd." + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "Du har ikke tillatelse til å eksportere denne fakturaen" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" + +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" + +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" + +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "" +#~ "PDF-generering mislyktes: %(err)s. " +#~ "Tilbakestilling mislyktes også: %(fb)s" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "Du har ikke tillatelse til å duplisere denne fakturaen" -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "Prosjekt- og oppgavenavn er påkrevd" +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kunne ikke duplisere faktura på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Kunne ikke fullføre duplisert faktura på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "Det valgte prosjektet eksisterer ikke" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "Du har ikke tilgang til denne oppgaven" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Du kan bare redigere oppgaver du har opprettet" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "Oppgavenavn er obligatorisk" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "Prosjekt er påkrevd" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere status på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere oppgaven på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "Du har ikke tillatelse til å oppdatere denne oppgaven" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "Du kan bare oppdatere oppgaver du har opprettet" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "Du kan bare tildele oppgaver du har opprettet" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "Den valgte brukeren eksisterer ikke" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Oppgaven er ikke tilordnet" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Du kan bare slette oppgaver du har opprettet" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "Kan ikke slette oppgave med eksisterende tidsoppføringer" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "Kunne ikke slette oppgaven på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "Ingen oppgaver valgt for sletting" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "Kunne ikke slette oppgaver på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "Ingen oppgaver er valgt" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "Kunne ikke oppdatere oppgaver på grunn av en databasefeil" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "Utgiftsdato er påkrevd" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Ugyldig datoformat" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "Databasestøtte" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "Duplisert %(count)d sitat(er)" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "Ingen oppgaver funnet" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "Vellykket oppdatert %(count)d utgift(er) til %(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "Hoppet over %(count)d utgift(er) (ingen tillatelse)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Ugyldig prioritetsverdi" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Ingen bruker valgt for tildeling" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Ugyldig bruker er valgt" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "Kunne ikke tilordne oppgaver på grunn av en databasefeil" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Ingen prosjekter er valgt" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Ugyldig prosjekt er valgt" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "Kunne ikke flytte oppgaver på grunn av en databasefeil" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Bare administratorer kan se alle forfalte oppgaver" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "Invoice marked as sent" +#~ msgstr "Faktura merket som sendt" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "Invoice marked as paid" +#~ msgstr "Faktura merket som betalt" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Client is required." +#~ msgstr "" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "Project must belong to the same client." +#~ msgstr "" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "Kunne ikke opprette mal på grunn av en databasefeil" +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "Kunne ikke oppdatere malen på grunn av en databasefeil" +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "Kunne ikke slette malen på grunn av en databasefeil" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "Kan ikke starte tidtaker for et arkivert prosjekt. Vennligst deaktiver prosjektet først." +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "Kan ikke starte tidtaker for et inaktivt prosjekt" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "Den valgte oppgaven er ugyldig for det valgte prosjektet" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "Du har ikke tilgang til dette prosjektet." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "Du har ikke tilgang til denne oppgaven" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Du har allerede en aktiv timer. Stopp det før du starter en ny." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "Kunne ikke starte tidtakeren på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Ukjent" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "Malen må ha et prosjekt for å starte en tidtaker" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "Kan ikke starte tidtakeren for dette prosjektet" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "Ingen aktiv timer for å stoppe" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Ikke noe prosjekt" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "Ingen aktiv timer for å stoppe" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "Timeren stoppet" +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "Ingen aktiv timer for å stoppe" +#~ msgid "Key and label are required" +#~ msgstr "Nøkkel og etikett kreves" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette kolonne på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere kolonne på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "Ingen aktiv timer for å stoppe" +#~ msgid "System columns cannot be deleted" +#~ msgstr "Systemkolonner kan ikke slettes" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "Ugyldig statusverdi" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette kolonne på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "Du kan bare redigere dine egne tidtakere" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke bytte kolonne på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Ugyldig oppgave valgt for det valgte prosjektet" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "Starttidspunkt kan ikke være i fremtiden" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Ugyldig startdato/tidsformat" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "Slutttidspunktet må være etter starttidspunktet" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Ugyldig format for sluttdato/tidspunkt" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Tidtakeren er oppdatert" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "Timer stopped successfully" +#~ msgstr "Timeren stoppet" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Du kan bare slette dine egne tidtakere" +#~ msgid "Lead created successfully" +#~ msgstr "Kundeemne ble opprettet" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "Kan ikke slette en aktiv tidtaker" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Feil ved opprettelse av kundeemne: %(error)s" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "Kunne ikke slette tidtakeren på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Lead updated successfully" +#~ msgstr "Kundeemne ble oppdatert" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Feil ved oppdatering av lead: %(error)s" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Lead has already been converted" +#~ msgstr "Bly er allerede konvertert" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "Lead converted to client successfully" +#~ msgstr "Lead konvertert til klient vellykket" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Feil ved konvertering av lead: %(error)s" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Bly konvertert til en vellykket avtale" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "Lead marked as lost" +#~ msgstr "Bly merket som tapt" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "Feil ved merking av kundeemne som tapt: %(error)s" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Ugyldig dato/klokkeslett-format" +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Alle felt er obligatoriske" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "Kan ikke opprette tidsoppføringer for et arkivert prosjekt. Vennligst deaktiver prosjektet først." +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "Kan ikke opprette tidsoppføringer for et inaktivt prosjekt" +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Ugyldig oppgave er valgt" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "Sluttdatoen må være etter eller lik startdatoen" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "Datoperioden kan ikke overstige 31 dager" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Ugyldig tidsformat" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "Ingen gyldige datoer funnet i det valgte området" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "Kunne ikke opprette masseoppføringer på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Mileage entry created successfully" +#~ msgstr "Kilometeroppføring opprettet" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "Det oppsto en feil under oppretting av masseoppføringer. Vennligst prøv igjen." +#~ msgid "Error creating mileage entry" +#~ msgstr "Feil ved opprettelse av kjørelengdeoppføring" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Du kan bare duplisere dine egne tidtakere" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "Du har ikke tillatelse til å se denne kilometeroppføringen" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "Du kan bare gjenoppta dine egne tidtakere" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "Du har ikke tillatelse til å redigere denne kilometeroppføringen" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "Prosjektet eksisterer ikke lenger" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "Kan ikke redigere godkjente eller refunderte kjørelengdeoppføringer" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Kilometeroppføringen ble oppdatert" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "Error updating mileage entry" +#~ msgstr "Feil ved oppdatering av kjørelengdeoppføring" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "Kunne ikke gjenoppta tidtakeren på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "Du har ikke tillatelse til å slette denne kilometeroppføringen" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "Kilometeroppføring slettet" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Error deleting mileage entry" +#~ msgstr "Feil ved sletting av kjørelengdeoppføring" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "Ingen kilometerangivelser valgt for sletting" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke slette kjørelengdeoppføringer på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "Vellykket slettet %(count)d kjørelengde entr%(plural)s" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "Hoppet over %(count)d kjørelengdeinnføring%(plural)s: %(errors)s" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Ugyldig tidssone er valgt" +#~ msgid "No mileage entries selected" +#~ msgstr "Ingen kilometerangivelser er valgt" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "Standard timer per dag må være mellom 0,5 og 24" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "Kunne ikke oppdatere kjørelengdeoppføringer på grunn av en databasefeil" -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "Standard timer per dag må være mellom 0,5 og 24" +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "Vellykket oppdatert %(count)d kjørelengde entr%(plural)s til %(status)s" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Innstillingene er lagret" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "Hoppet over %(count)d kjørelengde entr%(plural)s (ingen tillatelse)" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Feil ved lagring av innstillinger: %(error)s" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Bare administratorer kan godkjenne kilometerangivelser" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Kun ventende kilometerangivelser kan godkjennes" -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "Takk for at du valgte TimeTracker!" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "Feil under lagring av innstillinger" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Kilometerregistrering godkjent" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Preferansene er oppdatert" +#~ msgid "Error approving mileage entry" +#~ msgstr "Feil ved godkjenning av kilometerangivelse" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Språket er oppdatert" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Ugyldig språk" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "Språket er oppdatert til %(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "Webhook-navn er påkrevd" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "Webhook URL er nødvendig" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "Minst én hendelse må velges" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook opprettet" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Feil ved opprettelse av webhook" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "Feil ved opprettelse av webhook: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook ble oppdatert" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "Feil ved oppdatering av webhook: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook ble slettet" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "Feil ved sletting av webhook: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Vennligst skriv inn en gyldig måltid (større enn 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "Et mål eksisterer allerede for denne uken. Rediger det eksisterende målet i stedet." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "Ukentlig tidsmål opprettet med suksess!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "Klarte ikke å lage mål. Vennligst prøv igjen." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "Du har ikke tillatelse til å se dette målet" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "Du har ikke tillatelse til å redigere dette målet" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "Ukentlig tidsmål er oppdatert!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "Kunne ikke oppdatere målet. Vennligst prøv igjen." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "Du har ikke tillatelse til å slette dette målet" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "Ukentlig tidsmål er slettet" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Bare administratorer kan avvise kilometerangivelser" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "Kunne ikke slette målet. Vennligst prøv igjen." +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "Bare ventende kilometerangivelser kan avvises" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "Mileage entry rejected" +#~ msgstr "Kilometerregistrering avvist" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Feil ved avvisning av kilometerangivelse" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "Bare administratorer kan merke kilometeroppføringer som refundert" -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "Kun godkjente kilometerangivelser kan merkes som refundert" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Kilometeroppføring merket som refundert" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Feil ved merking av kilometerangivelse som refundert" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "Quote title and client are required" +#~ msgstr "Sitattittel og klient kreves" -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "Selected client not found" +#~ msgstr "Den valgte klienten ble ikke funnet" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "Invalid total amount format" +#~ msgstr "Ugyldig totalbeløpsformat" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "Invalid estimated hours format" +#~ msgstr "Ugyldig estimert timeformat" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Invalid date format for valid until" +#~ msgstr "Ugyldig datoformat for gyldig til" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Oppdater status" +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette tilbud på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "Quote created successfully" +#~ msgstr "Sitat opprettet" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Opprett oppgave" +#~ msgid "Only draft quotes can be edited" +#~ msgstr "Kun utkast til sitater kan redigeres" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere tilbudet på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "Send e-post" +#~ msgid "Quote updated successfully" +#~ msgstr "Sitat ble oppdatert" -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "Kun utkast til tilbud kan sendes" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kunne ikke sende tilbud på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "Quote sent successfully" +#~ msgstr "Sitat sendt" -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "This quote cannot be accepted" +#~ msgstr "Dette sitatet kan ikke aksepteres" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "Kunne ikke godta sitat: %(error)s" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke godta tilbud på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "Velg Prosjekt" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Tilbud akseptert og prosjektet ble opprettet" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "Bare administratorer kan avvise kilometerangivelser" +#~ msgid "This quote cannot be rejected" +#~ msgstr "Dette sitatet kan ikke avvises" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "Kunne ikke avvise sitat: %(error)s" -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "WebSocket live-oppdateringer" +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke avvise tilbudet på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "Navn og enhetspris kreves" +#~ msgid "Quote rejected" +#~ msgstr "Sitat avvist" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "Klient opprettet" +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "Kun utkast eller avviste sitater kan slettes" -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "Nøkkel og etikett kreves" +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette sitat på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "Quote deleted successfully" +#~ msgstr "Sitat slettet" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "" + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Stripe API key not configured." +#~ msgstr "" + +#~ msgid "Payment processed successfully." +#~ msgstr "" + +#~ msgid "Invalid from date format" +#~ msgstr "Ugyldig fra datoformat" + +#~ msgid "Invalid to date format" +#~ msgstr "Ugyldig til dato-format" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "Du har ikke tillatelse til å se denne betalingen" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "Faktura, beløp og betalingsdato kreves" + +#~ msgid "Selected invoice not found" +#~ msgstr "Finner ikke den valgte fakturaen" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "Du har ikke tillatelse til å legge til betalinger på denne fakturaen" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "Betalingsbeløpet må være større enn null" -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "Be om godkjenning" +#~ msgid "Invalid payment amount" +#~ msgstr "Ugyldig betalingsbeløp" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "Sitat avvist" +#~ msgid "Invalid payment date format" +#~ msgstr "Ugyldig betalingsdatoformat" -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "Navn og enhetspris kreves" +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "Gateway-avgiften kan ikke være negativ" -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "Timepris" +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Ugyldig gateway-avgiftsbeløp" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette betaling på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "Du har ikke tillatelse til å redigere denne betalingen" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "gjenværende" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Suksess" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Feil" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Advarsel" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Informasjon" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Laster inn..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Lagrer..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "Sletter ..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Kansellere" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Bekrefte" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Lukke" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Spare" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Slett" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Redigere" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Legge til" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Fjerne" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "OK" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "Er du sikker på at du vil slette dette?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "Du har ulagrede endringer. Er du sikker på at du vil forlate?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "Operasjonen mislyktes" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Operasjonen fullført" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "Ingen elementer er valgt" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Ugyldig inndata" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Dette feltet er obligatorisk" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Ingen aktiv timer" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Timeren stoppet" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "Kunne ikke stoppe tidtakeren" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Feil ved stopp av tidtaker" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "Ingen skjema å lagre" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "Ingen tidtaker funnet" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Timeren stoppet på grunn av inaktivitet" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere betaling på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Gå til innhold" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "Mobilnavigasjon" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navigasjon" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "Kommandopalett" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "Kommentarer" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Bytt sidefelt" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Dashbord" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Timer" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "Tidsoppføringer" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Rapporter" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Kalender" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Kalendervisning" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "Payment updated successfully" +#~ msgstr "Betalingen ble oppdatert" -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Tidssporing" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "Be om godkjenning" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "Du har ikke tillatelse til å slette denne betalingen" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette betaling på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Oppgaver" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "Payment deleted successfully" +#~ msgstr "Betalingen ble slettet" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Kanban-styret" +#~ msgid "No payments selected for deletion" +#~ msgstr "Ingen betalinger valgt for sletting" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Ukentlige mål" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette betalinger på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "No payments selected" +#~ msgstr "Ingen betalinger er valgt" -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Tidsregistreringsmaler" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "Kunne ikke oppdatere betalinger på grunn av en databasefeil" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" +#~ msgid "Start date must be before end date" +#~ msgstr "Startdatoen må være før sluttdatoen" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Kunder" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "Fant ingen dagpengesats for dette " +#~ "stedet. Vennligst konfigurer priser først." -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "Per diem claim created successfully" +#~ msgstr "Dagpengekrav opprettet" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "Error creating per diem claim" +#~ msgstr "Feil ved opprettelse av dagpengekrav" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "Du har ikke tillatelse til å se dette dagpengekravet" -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "Du har ikke tillatelse til å redigere dette dagpengekravet" -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Sitater" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "Kan ikke redigere godkjente eller refunderte dagpengekrav" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Økonomi og utgifter" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Dagpengekravet ble oppdatert" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "Error updating per diem claim" +#~ msgstr "Feil ved oppdatering av dagpengekrav" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "Du har ikke tillatelse til å slette dette dagpengekravet" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Dagpengekravet ble slettet" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Planlagte rapporter" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Fakturaer" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "Error deleting per diem claim" +#~ msgstr "Feil ved sletting av dagpengekrav" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "Ingen dagpengekrav valgt for sletting" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Gjentakende fakturaer" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Betalinger" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Utgifter" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Kilometerstand" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Per Diem" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Budsjettvarsler" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Inventar" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Lagervarer" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Varehus" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Leverandører" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Innkjøpsordrer" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Lagernivåer" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Aksjebevegelser" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Overføringer" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Justeringer" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Reservasjoner" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Varsler om lavt lager" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Analytics" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Verktøy og data" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Import/eksport" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Lagrede filtre" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Admin" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Admin Dashboard" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Brukeradministrasjon" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Kunne ikke slette dagpengekrav på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Roller og tillatelser" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "PDF-maler" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "Faktura PDF" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Sitat PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Systeminnstillinger" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Innstillinger" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "Slettet %(count)d dagpengekrav(er)" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "E-postkonfigurasjon" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "Hoppet over %(count)d dagpengekrav: %(errors)s" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "E-postmaler" +#~ msgid "No per diem claims selected" +#~ msgstr "Ingen dagpengekrav valgt" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "OIDC-innstillinger" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "Kunne ikke oppdatere dagpengekrav på grunn av en databasefeil" -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "Vellykket oppdatert %(count)d dagpengekrav til %(status)s" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "API-tokens" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "Hoppet over %(count)d dagpengekrav (ingen tillatelse)" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Revisjonslogger" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "Bare administratorer kan godkjenne dagpengekrav" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "Kun utestående dagpengekrav kan godkjennes" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Utgiftskategorier" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Dagpengekrav godkjent" -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Dagpengepriser" +#~ msgid "Error approving per diem claim" +#~ msgstr "Feil ved godkjenning av dagpengekrav" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "Bare administratorer kan avvise dagpengekrav" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "Kun utestående dagpengekrav kan avvises" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Per diem claim rejected" +#~ msgstr "Dagpengekravet avvist" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Systeminfo" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Feil ved avvisning av dagpengekrav" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Sikkerhetskopier" +#~ msgid "Per diem rate created successfully" +#~ msgstr "Dagpengene er opprettet" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "Error creating per diem rate" +#~ msgstr "Feil ved opprettelse av dagpengesats" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "Om" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Hjelp" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "Eksportalternativer" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Støtte TimeTracker" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "Bytt sidefelt" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Søk" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Tema" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "Filteralternativer" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Lys" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Mørk" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "System" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Dagpengene er oppdatert" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Start timer" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "til" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "Se hjelp" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Bytt språk" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Språk" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Brukermeny" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "Støtte" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Gjest" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Min profil" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Mine innstillinger" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Tillatelse" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "Error updating per diem rate" +#~ msgstr "Feil ved oppdatering av dagpengesatsen" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Logg ut" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "Kan ikke slette sats: Den brukes " +#~ "av %(count)d dagpengekrav. Deaktiver den " +#~ "i stedet." -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "Liker du TimeTracker?" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "Dagpengene ble slettet" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "Error deleting per diem rate" +#~ msgstr "Feil ved sletting av dagpengesatsen" -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "Støtte TimeTracker" +#~ msgid "You do not have permission to access this page" +#~ msgstr "Du har ikke tillatelse til å få tilgang til denne siden" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "Role name is required" +#~ msgstr "Rollenavn er obligatorisk" -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" +#~ msgid "A role with this name already exists" +#~ msgstr "En rolle med dette navnet finnes allerede" -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "Rekvisita" +#~ msgid "Could not create role due to a database error" +#~ msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Avskjedige" +#~ msgid "Role created successfully" +#~ msgstr "Rollen ble opprettet" -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "Startdato" +#~ msgid "Could not update role due to a database error" +#~ msgstr "Kunne ikke oppdatere rollen på grunn av en databasefeil" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "Last inn mer" +#~ msgid "Role updated successfully" +#~ msgstr "Rollen ble oppdatert" -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "Vis oppgave" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "Du har ikke tillatelse til å utføre denne handlingen" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "Systemroller kan ikke slettes" -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "Raske handlinger" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Handlinger" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Loggtid" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Ny oppgave" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "Se prosjekt" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "Rediger klient" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "Operasjonen mislyktes" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "Kan ikke slette rolle som er " +#~ "tildelt brukere. Vennligst tilordne brukere" +#~ " på nytt først." -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "Kontrakt avsluttet" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "Kunne ikke slette rollen på grunn av en databasefeil" -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "Forhåndsvisning av logo" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Rollen \"%(name)s\" ble slettet" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "Slutt" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "Kunne ikke oppdatere brukerroller på grunn av en databasefeil" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "User roles updated successfully" +#~ msgstr "Brukerrollene er oppdatert" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "Opprett API-token" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "Ditt API-token" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Eksempler på bruk" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "Er du sikker på at du vil" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "deaktivere" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "aktivere" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "dette symbolet?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Deaktiver token" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Aktiver token" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Deaktiver" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Aktiver" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "Er du sikker på at du vil slette dette tokenet? Denne handlingen kan ikke angres." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Slett token" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Lag sikkerhetskopi" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Gjenopprett sikkerhetskopi" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Eksisterende sikkerhetskopier" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Viktig informasjon" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Bekreft sletting" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Tøm buffer" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "ServiceWorker Status" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Tøm alle cacher" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "ServiceWorker-handlinger" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Manuell hard oppdatering" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "Template not found." +#~ msgstr "" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Hele tiden" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Totalt prosjekter" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Aktive prosjekter" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "Prosjektnavn og klient kreves" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Invalid budget amount" +#~ msgstr "Ugyldig budsjettbeløp" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Ugyldig budsjettgrenseprosent (0–100)" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Project not found" +#~ msgstr "Finner ikke prosjektet" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "Du har ikke tillatelse til å arkivere prosjekter" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "Project is already archived" +#~ msgstr "Prosjektet er allerede arkivert" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "Du har ikke tillatelse til å dearkivere prosjekter" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Database" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "Project is already active" +#~ msgstr "Prosjektet er allerede aktivt" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "Du har ikke tillatelse til å deaktivere prosjekter" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Project is already inactive" +#~ msgstr "Prosjektet er allerede inaktivt" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "Du har ikke tillatelse til å aktivere prosjekter" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "OIDC-brukere" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "brukere" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Administrasjonsseksjoner" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Nylig aktivitet" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Varighet" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "N/A" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "E-postkonfigurasjon og testing" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Konfigurer og test e-postlevering" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Tilbake til Admin" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "Konfigurer e-postinnstillinger her for å lagre dem i databasen." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Aktiver e-postkonfigurasjon for database" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "E-postserver" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Postport" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Bruk TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Bruk SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Brukernavn" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Passord" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "La stå tomt for å holde deg oppdatert" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Standard avsender" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "Mottakers e-post" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "Kan ikke slette prosjekt med eksisterende tidsregistreringer" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Lagre konfigurasjon" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Tilbakestill" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "E-postkonfigurasjonsstatus" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Forfriske" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "E-post er konfigurert!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "E-postinnstillingene dine er riktig konfigurert." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "E-post er ikke konfigurert" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "Vennligst konfigurer e-postinnstillingene ved å bruke skjemaet ovenfor." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Konfigurasjonsfeil" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Konfigurasjonsadvarsler" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Gjeldende e-postinnstillinger" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Havn" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Passord satt" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Send test-e-post" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "Mottakers e-postadresse" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Konfigurasjonsveiledning" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Vanlige SMTP-leverandører" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Krever app-passord" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Viktige merknader" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail krever et app-passord hvis 2FA er aktivert" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Start programmet på nytt etter å ha endret e-postinnstillinger" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Sjekk brannmurreglene hvis e-post ikke sendes" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "For produksjon, bruk en dedikert e-posttjeneste som SendGrid eller Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "passordet er satt" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "ikke angitt passord" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "Kunne ikke lagre konfigurasjonen. Vennligst prøv igjen." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "Suksess!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "Kunne ikke oppdatere status. Vennligst prøv igjen." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "Vennligst skriv inn en gyldig e-postadresse" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Sender..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "Kunne ikke sende test-e-post. Vennligst sjekk konfigurasjonen din." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette prosjektet på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Konfigurer OIDC ved å bruke disse miljøvariablene:" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "Du har ikke tillatelse til å slette prosjekter" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "Service" +#~ msgid "No projects selected for deletion" +#~ msgstr "Ingen prosjekter er valgt for sletting" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette prosjekter på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Brukere" +#~ msgid "No projects were deleted" +#~ msgstr "Ingen prosjekter ble slettet" -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "Gruppekrav" +#~ msgid "You do not have permission to change project status" +#~ msgstr "Du har ikke tillatelse til å endre prosjektstatus" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "No projects selected" +#~ msgstr "Ingen prosjekter er valgt" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere prosjektstatus på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "Tapt" +#~ msgid "No projects were updated" +#~ msgstr "Ingen prosjekter ble oppdatert" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "Bruk SSL" +#~ msgid "Project is already in favorites" +#~ msgstr "Prosjektet er allerede i favoritter" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "Start" +#~ msgid "Project added to favorites" +#~ msgstr "Prosjekt lagt til i favoritter" -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "Tidsavbrudd (sekunder)" +#~ msgid "Failed to add project to favorites" +#~ msgstr "Kunne ikke legge til prosjekt i favoritter" -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "Project is not in favorites" +#~ msgstr "Prosjekt er ikke i favoritter" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "Project removed from favorites" +#~ msgstr "Prosjekt fjernet fra favoritter" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "Failed to remove project from favorites" +#~ msgstr "Kunne ikke fjerne prosjektet fra favoritter" -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "Beskrivelse, kategori, beløp og dato kreves" -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "Passord" +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kunne ikke legge til kostnad på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "Skriv inn passordet ditt" +#~ msgid "Cost added successfully" +#~ msgstr "Kostnad lagt til" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Cost not found" +#~ msgstr "Pris ikke funnet" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "Du har ikke tillatelse til å redigere denne kostnaden" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "Basert på sist" +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere kostnaden på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Cost updated successfully" +#~ msgstr "Kostnaden er oppdatert" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "Du har ikke tillatelse til å slette denne kostnaden" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "Kan ikke slette kostnad som er fakturert" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette kostnad på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "Bruk prosjekttimepriser" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "Loggtid" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "E-postadresse" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "Fornavn" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "Etternavn" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "Autentiseringsmetode" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "Name and unit price are required" +#~ msgstr "Navn og enhetspris kreves" + +#~ msgid "Invalid quantity format" +#~ msgstr "Ugyldig mengdeformat" + +#~ msgid "Invalid unit price format" +#~ msgstr "Ugyldig enhetsprisformat" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke legge til ekstra god på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "Topp prosjekter" +#~ msgid "Extra good added successfully" +#~ msgstr "Ekstra bra lagt til" + +#~ msgid "Extra good not found" +#~ msgstr "Ekstra god ikke funnet" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "Du har ikke tillatelse til å redigere denne ekstra goden" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere ekstra bra på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "Administrasjonsgruppe" +#~ msgid "Extra good updated successfully" +#~ msgstr "Ekstra bra oppdatert vellykket" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "Du har ikke tillatelse til å slette denne ekstra varen" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "Kan ikke slette ekstra vare som er lagt til en faktura" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke slette ekstra god på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." + +#~ msgid "Project created successfully" +#~ msgstr "Prosjekt opprettet" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Ugyldig format for rabattbeløp" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "Tilbud må godkjennes før det kan sendes" + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "Kan ikke sende tilbud: %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "Du har ikke tillatelse til å laste opp vedlegg til dette sitatet" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "Du har ikke tillatelse til å laste ned dette vedlegget" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "Du har ikke tillatelse til å be om godkjenning for dette tilbudet" + +#~ msgid "This quote does not require approval" +#~ msgstr "Dette tilbudet krever ikke godkjenning" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "Kan ikke be om godkjenning: %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kunne ikke be om godkjenning på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." + +#~ msgid "Approval requested successfully" +#~ msgstr "Godkjenning ble forespurt" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Dette sitatet venter ikke på godkjenning" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "Kan ikke godkjenne sitat: %(error)s" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke godkjenne tilbudet på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "Quote approved successfully" +#~ msgstr "Sitat godkjent" + +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "Kan ikke avvise sitat: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "Quote approval rejected" +#~ msgstr "Sitatgodkjenning avvist" -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "Auth metode" +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette mal på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "Kun aktiv" +#~ msgid "Template created successfully" +#~ msgstr "Malen ble opprettet" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "Du har ikke tillatelse til å lage en mal fra dette sitatet" -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "Test konfigurasjon" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke lagre malen på grunn av" +#~ " en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "Malen ble lagret" -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "Test konfigurasjon" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "Du har ikke tillatelse til å eksportere dette tilbudet" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Feil ved generering av PDF: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "Test konfigurasjon" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "Referanse til miljøvariabler" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Recipient email address is required" +#~ msgstr "Mottakerens e-postadresse kreves" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Sitat sendt til %(email)s" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "Kunne ikke sende tilbud: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Tidligere" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Neste" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "Funksjonsbruksstatistikk" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Feil ved sending av e-post: %(error)s" -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "Valgfri kupongkode" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "Du har ikke tillatelse til å duplisere dette sitatet" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "Oppmerksomhet kreves" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke duplisere tilbud på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "Mobil" +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kunne ikke fullføre duplisert tilbud på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "Sitat %(quote_number)s opprettet som duplikat" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Status" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Detaljer" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "Last inn mer" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Mislyktes" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Velg en handling og minst ett sitat" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "Invalid quote IDs" +#~ msgstr "Ugyldige tilbuds-ID-er" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "Finner ingen sitater eller du har ikke tillatelse" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "Duplisert %(count)d sitat(er)" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "Kunne ikke duplisere %(count)d sitat(er)" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "Error duplicating quotes" +#~ msgstr "Feil ved duplisering av sitater" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "Merket %(count)d sitat(er) som sendt" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "Kunne ikke merke %(count)d sitat(er) som sendt" -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "Error updating quotes" +#~ msgstr "Feil under oppdatering av sitater" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "Slettet %(count)d sitat(er)" -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "Kunne ikke slette %(count)d sitat(er) (kan være i bruk)" -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "Error deleting quotes" +#~ msgstr "Feil ved sletting av sitater" -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "Ugyldig handling" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Alle kategorier" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Prosjektledelse" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "Navn, prosjekt, klient, frekvens og neste kjøringsdato er påkrevd" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Aktivert" +#~ msgid "Invalid next run date format" +#~ msgstr "Ugyldig format for neste kjøringsdato" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Funksjonshemmet" +#~ msgid "Invalid end date format" +#~ msgstr "Ugyldig sluttdatoformat" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "Selected project or client not found" +#~ msgstr "Det valgte prosjektet eller klienten ble ikke funnet" -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kunne ikke opprette gjentakende faktura " +#~ "på grunn av en databasefeil. Vennligst" +#~ " sjekk serverloggene." -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Lagre endringer" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "Du har ikke tillatelse til å se denne gjentakende fakturaen" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Note" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "Du har ikke tillatelse til å redigere denne gjentakende fakturaen" -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere gjentakende faktura " +#~ "på grunn av en databasefeil. Vennligst" +#~ " sjekk serverloggene." -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Gjentakende faktura er oppdatert" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "Du har ikke tillatelse til å slette denne gjentakende fakturaen" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kunne ikke slette gjentakende faktura på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "Start" +#~ msgstr "Start" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "OIDC Debug Dashboard" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "Inspiser konfigurasjon, leverandørmetadata og OIDC-brukere" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "End" +#~ msgstr "Slutt" -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Test konfigurasjon" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "OIDC-konfigurasjon" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Auth metode" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Utsteder" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "Ikke konfigurert" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "Klient-ID" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Klienthemmelighet" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Sett" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "Ikke satt" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "Omdiriger URI" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Autogenerert" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Omfang" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Krav kartlegging" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Brukernavnkrav" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "E-postkrav" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Fullt navnekrav" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Gruppekrav" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Administrasjonsgruppe" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "Administrator e-poster" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI etter utlogging" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Leverandørmetadata" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Feil ved innlasting av metadata:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Oppdagelsesendepunkt:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Vellykket lastet leverandørmetadata" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Endepunkter" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Autorisasjon" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Token" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Brukerinfo" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Avslutt økten" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Støttede funksjoner" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Svartyper" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Tilskuddstyper" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Auth-metoder" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Krav" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "Leverandørmetadata er ikke lastet inn. Klikk \"Test konfigurasjon\" for å hente." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "E-post" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Fullt navn" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Rolle" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Siste pålogging" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "OIDC-emne" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Inaktiv" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Aldri" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Ingen brukere har logget på via OIDC ennå." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Referanse til miljøvariabler" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Konfigurer OIDC ved å bruke disse miljøvariablene:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Variabel" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Beskrivelse" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "Eksempel" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Autentiseringsmetode" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "OIDC-leverandørens utsteder-URL" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "Klient-ID fra OIDC-leverandør" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Klienthemmelighet fra OIDC-leverandør" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "Tilbakeringings-URL (valgfritt, automatisk generert)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Forespurte omfang" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Krav som inneholder brukernavn" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Krav som inneholder e-post" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Påstand som inneholder fullt navn" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Krav som inneholder grupper" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Gruppenavn for administratorrolle (valgfritt)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "Kommaseparerte admin-e-poster (valgfritt)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "Task" +#~ msgstr "Oppgave" -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "Notes" +#~ msgstr "Notater" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "Billed" +#~ msgstr "Fakturerbar" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "Client" +#~ msgstr "Klient" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "User" +#~ msgstr "Bruker" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "Yes" +#~ msgstr "Ja" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "No" +#~ msgstr "Ingen" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "Kunne ikke slette filteret på grunn av en databasefeil" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Autentiseringsmetode" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere innstillingene på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "" +#~ "Oppsettet er fullført! Takk for at " +#~ "du hjelper oss med å forbedre " +#~ "TimeTracker." -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Project and task name are required" +#~ msgstr "Prosjekt- og oppgavenavn er påkrevd" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "Selected project does not exist" +#~ msgstr "Det valgte prosjektet eksisterer ikke" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "Task not found" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "You do not have access to this task" +#~ msgstr "Du har ikke tilgang til denne oppgaven" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "You can only edit tasks you created" +#~ msgstr "Du kan bare redigere oppgaver du har opprettet" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "Task name is required" +#~ msgstr "Oppgavenavn er obligatorisk" -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "Project is required" +#~ msgstr "Prosjekt er påkrevd" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "OIDC-brukerdetaljer" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Profil og OIDC-identitet for denne brukeren" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Tilbake til OIDC Debug" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Brukerprofil" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Aktiv" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Foretrukket språk" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Opprettet kl" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "OAIDC-informasjon" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "OIDC-utsteder" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "OIDC-emne (under)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Lokalt" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "Denne brukeren ble opprettet eller koblet til via OIDC. Utstederen og emnet brukes til å identifisere brukeren unikt på tvers av påloggingsøkter." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "Denne brukeren har ingen OIDC-informasjon. De kan ha blitt opprettet manuelt eller via egenregistrering uten OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Aktivitetsstatistikk" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Tidsoppføringer" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Ingen" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Aktiv timer" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Oppgaver opprettet" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Rediger bruker" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Vis alle brukere" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "PDF-sitatdesigner" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "Visual Quote Designer" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "Dra og slipp elementer for å designe tilbudsoppsettet ditt" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Slik bruker du:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "Klikk på elementer fra venstre sidefelt for å legge dem til på lerretet. Klikk på elementer for å velge og tilpasse dem i egenskapspanelet. Bruk justeringsverktøyene og hurtigtastene for raskere redigering." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Tastatursnarveier:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere status på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "Sitat elementer Tabell" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere oppgaven på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "You do not have permission to update this task" +#~ msgstr "Du har ikke tillatelse til å oppdatere denne oppgaven" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "Utgifter Delsum" +#~ msgid "You can only update tasks you created" +#~ msgstr "Du kan bare oppdatere oppgaver du har opprettet" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "You can only assign tasks you created" +#~ msgstr "Du kan bare tildele oppgaver du har opprettet" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "Lagrer..." +#~ msgid "Selected user does not exist" +#~ msgstr "Den valgte brukeren eksisterer ikke" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "Task unassigned" +#~ msgstr "Oppgaven er ikke tilordnet" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "You can only delete tasks you created" +#~ msgstr "Du kan bare slette oppgaver du har opprettet" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "Kan ikke slette oppgave med eksisterende tidsoppføringer" -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "Sett" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "Dokumentasjon" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Klart lerret" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Generer forhåndsvisning" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Lagre design" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Se kode" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette oppgaven på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "Ingen oppgaver valgt for sletting" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Fest til rutenett (10px)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Verktøykasse" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Søkeelementer og variabler..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Elementer" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "Variabler" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Grunnleggende elementer" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Egendefinert tekst" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Tekst" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Overskrift" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Linje" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Rektangel" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Sirkel" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Bedriftsinformasjon" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Firmalogo" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "Firmanavn" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Firmadetaljer" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "Adresse" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Telefon" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Nettsted" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "Skatte-ID" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "Fakturadetaljer" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Fakturanummer" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "Fakturert" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Forfallsdato" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Kundeinformasjon" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Kundens navn" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Kundeadresse" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "Sitat elementer Tabell" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "Utgifter Delsum" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Delsum" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Avgift" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Totalt beløp" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Vilkår" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "Betaling og prosjekt" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Betalingsdato" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Betalingsmåte" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Betalingsstatus" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Innbetalt beløp" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Prosjektnavn" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "Kundens e-post" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Kundetelefon" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "QR-kode" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Strekkode" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Sidetall" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Gjeldende dato" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Vannmerke" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Bankinfo" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Valuta" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette oppgaver på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "Fakturavarer" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "Fakturanummer" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Sitatstatus (utkast/sendt/betalt/forfalt)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Utstedelsesdato" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Forfallsdato" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Subtotalt beløp" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Skattesats (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Skattebeløp" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Totalt beløp" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Valutakode (EUR, USD osv.)" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "Fakturavarer" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Vilkår og betingelser" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Klientfelt" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Kundens firmanavn" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "Klientens e-postadresse" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "Klientens fulle adresse" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Kundens kontaktperson" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Kundens telefonnummer" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Betalingsfelt" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "Betalingsstatus" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "Betalingsdato" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Betalingsmåte" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Betalingsreferansenummer" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Innbetalt beløp" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Utestående beløp" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Betalingsanmerkninger" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Prosjektfelt" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Prosjektnavn" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "Prosjektkode" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Prosjektbeskrivelse" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Prosjektfaktureringsreferanse" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Felt for bedrift/innstillinger" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "Firmanavnet ditt" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "Din bedriftsadresse" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "Din bedrifts e-post" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Firmatelefonen din" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Din bedrifts nettside" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "Skatte-ID-nummeret ditt" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "Din bankkontoinformasjon" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Standard fakturavilkår" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Standard fakturanotater" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Dato/klokkeslett-felt" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "Gjeldende dato" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "Dato for opprettelse av tilbud" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "Sitat siste oppdateringsdato" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "Fakturavarer" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "Ingen oppgaver er valgt" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "Tidsbaserte tjenester og timearbeid" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Varebeskrivelse" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Vare mengde" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Vare enhetspris" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Vare totalbeløp" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Sluttløkke" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "Ekstra varer" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "Prosjekt Ekstra varer" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "Rollenavn" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "Totalt beløp" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Design Canvas" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Sidestørrelse:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Zoom inn" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Zoom ut" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Slett valgte" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Egenskaper" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "Advarsel" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "Oppdater siden" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "Advarsel" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "Kunne ikke oppdatere oppgaver på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Datoformat" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Due date is required" +#~ msgstr "Utgiftsdato er påkrevd" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Velg et element for å redigere egenskapene" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "PDF forhåndsvisning" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Ugyldig datoformat" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "Database error" +#~ msgstr "Databasestøtte" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "Duplisert %(count)d sitat(er)" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "No tasks updated" +#~ msgstr "Ingen oppgaver funnet" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "Vellykket oppdatert %(count)d utgift(er) til %(status)s" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "Hoppet over %(count)d utgift(er) (ingen tillatelse)" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Invalid priority value" +#~ msgstr "Ugyldig prioritetsverdi" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "No user selected for assignment" +#~ msgstr "Ingen bruker valgt for tildeling" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "Ugyldig bruker er valgt" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "Kunne ikke tilordne oppgaver på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "No project selected" +#~ msgstr "Ingen prosjekter er valgt" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "Ugyldig prosjekt er valgt" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "Kunne ikke flytte oppgaver på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "Bare administratorer kan se alle forfalte oppgaver" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Generert kode" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "Vil du slette alle elementene?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Klar" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "Tilbakestille til standard?" +#~ msgid "Could not create template due to a database error" +#~ msgstr "Kunne ikke opprette mal på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "Tilbakestill PDF-oppsett" +#~ msgid "Could not update template due to a database error" +#~ msgstr "Kunne ikke oppdatere malen på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "Kunne ikke slette malen på grunn av en databasefeil" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "PDF-sitatdesigner" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Visual Quote Designer" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "Kan ikke starte tidtaker for et " +#~ "arkivert prosjekt. Vennligst deaktiver " +#~ "prosjektet først." -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Dra og slipp elementer for å designe tilbudsoppsettet ditt" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "Kan ikke starte tidtaker for et inaktivt prosjekt" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "Sitat elementer Tabell" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "Den valgte oppgaven er ugyldig for det valgte prosjektet" -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "Sitat elementer Tabell" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "You do not have access to this project" +#~ msgstr "Du har ikke tilgang til dette prosjektet." -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "You do not have access to this client" +#~ msgstr "Du har ikke tilgang til denne oppgaven" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Sitat data" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "Du har allerede en aktiv timer. Stopp det før du starter en ny." -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Sitat nummer" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke starte tidtakeren på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Sitat dato" +#~ msgid "Unknown" +#~ msgstr "Ukjent" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Sitat elementer Tabell" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Sitatfelt" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "Malen må ha et prosjekt for å starte en tidtaker" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Sitat nummer" +#~ msgid "Cannot start timer for this project" +#~ msgstr "Kan ikke starte tidtakeren for dette prosjektet" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Sitatstatus (utkast/sendt/betalt/forfalt)" +#~ msgid "No active timer to stop" +#~ msgstr "Ingen aktiv timer for å stoppe" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Sitat notater" +#~ msgid "No project" +#~ msgstr "Ikke noe prosjekt" -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Sitatstatus" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Sitat akseptert dato" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Dato for opprettelse av tilbud" +#~ msgid "No active timer to pause" +#~ msgstr "Ingen aktiv timer for å stoppe" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Sitat siste oppdateringsdato" +#~ msgid "Timer paused" +#~ msgstr "Timeren stoppet" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Sitat elementer Loop" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Gå gjennom fakturaelementer" +#~ msgid "No active timer to resume" +#~ msgstr "Ingen aktiv timer for å stoppe" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Venstrejuster" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Sentrer horisontalt" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Høyrejuster" +#~ msgid "No active timer to adjust" +#~ msgstr "Ingen aktiv timer for å stoppe" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Juster toppen" +#~ msgid "Invalid adjustment value" +#~ msgstr "Ugyldig statusverdi" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Sentrer vertikalt" +#~ msgid "You can only edit your own timers" +#~ msgstr "Du kan bare redigere dine egne tidtakere" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Juster bunnen" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Ugyldig oppgave valgt for det valgte prosjektet" -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "Start time cannot be in the future" +#~ msgstr "Starttidspunkt kan ikke være i fremtiden" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "Invalid start date/time format" +#~ msgstr "Ugyldig startdato/tidsformat" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "End time must be after start time" +#~ msgstr "Slutttidspunktet må være etter starttidspunktet" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "Ugyldig format for sluttdato/tidspunkt" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "E-postadresse" +#~ msgid "Timer updated successfully" +#~ msgstr "Tidtakeren er oppdatert" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "You can only delete your own timers" +#~ msgstr "Du kan bare slette dine egne tidtakere" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "Cannot delete an active timer" +#~ msgstr "Kan ikke slette en aktiv tidtaker" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette tidtakeren på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "Invalid date/time format" +#~ msgstr "Ugyldig dato/klokkeslett-format" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "Tidsregistreringsmaler" +#~ msgid "All fields are required" +#~ msgstr "Alle felt er obligatoriske" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "Kan ikke opprette tidsoppføringer for et" +#~ " arkivert prosjekt. Vennligst deaktiver " +#~ "prosjektet først." -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "Kan ikke opprette tidsoppføringer for et inaktivt prosjekt" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "Invalid task selected" +#~ msgstr "Ugyldig oppgave er valgt" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "Sluttdatoen må være etter eller lik startdatoen" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "Datoperioden kan ikke overstige 31 dager" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "Invalid time format" +#~ msgstr "Ugyldig tidsformat" -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "Ingen gyldige datoer funnet i det valgte området" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke opprette masseoppføringer på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "" +#~ "Det oppsto en feil under oppretting " +#~ "av masseoppføringer. Vennligst prøv igjen." -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Du kan bare duplisere dine egne tidtakere" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "Nøkkel" +#~ msgid "You can only resume your own timers" +#~ msgstr "Du kan bare gjenoppta dine egne tidtakere" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "Send e-post" +#~ msgid "Project no longer exists" +#~ msgstr "Prosjektet eksisterer ikke lenger" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "Nøkkel" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke gjenoppta tidtakeren på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "Kode, navn, e-post" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Firma merkevarebygging" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Fakturastandarder" +#~ msgid "Invalid timezone selected" +#~ msgstr "Ugyldig tidssone er valgt" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Innstillinger for sikkerhetskopiering" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "Standard timer per dag må være mellom 0,5 og 24" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "Standard timer per dag må være mellom 0,5 og 24" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "Settings saved successfully" +#~ msgstr "Innstillingene er lagret" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "Aktivert" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "Tapt" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "Bruk SSL" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "Bruk TLS" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "på" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "av" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "Brukermeny" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "Raskere lastetider" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "Vilkår og betingelser" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Eksportinnstillinger" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Feil ved lagring av innstillinger: %(error)s" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "Takk for at du valgte TimeTracker!" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "Feil under lagring av innstillinger" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Preferences updated" +#~ msgstr "Preferansene er oppdatert" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Innstilling" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Overføre" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Salg" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Utleie" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Kjøpe" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "Language updated successfully" +#~ msgstr "Språket er oppdatert" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "Invalid language" +#~ msgstr "Ugyldig språk" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "Språket er oppdatert til %(language)s" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "Tilgjengelig" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "Fakturastandarder" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "Valuta" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "Webhook-navn er påkrevd" -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "Bilde-URL" +#~ msgid "Webhook URL is required" +#~ msgstr "Webhook URL er nødvendig" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "Minst én hendelse må velges" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "Kode" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook opprettet" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "Opprett API-token" +#~ msgid "Error creating webhook" +#~ msgstr "Feil ved opprettelse av webhook" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "La feltet stå tomt for å beholde gjeldende passord" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "Feil ved opprettelse av webhook: %(error)s" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook ble oppdatert" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "Feil ved oppdatering av webhook: %(error)s" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "Tidsavbrudd (sekunder)" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook ble slettet" -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "Innholdstype" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "Feil ved sletting av webhook: %(error)s" -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "Systemrolle" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Vennligst skriv inn en gyldig måltid (større enn 0)" -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "Vilkår og betingelser" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "Et mål eksisterer allerede for denne " +#~ "uken. Rediger det eksisterende målet i" +#~ " stedet." -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Personvern og analyse" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Ukentlig tidsmål opprettet med suksess!" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Lagre innstillinger" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "Klarte ikke å lage mål. Vennligst prøv igjen." -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Last opp ny logo" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "Du har ikke tillatelse til å se dette målet" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Forhåndsvisning av logo" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "Du har ikke tillatelse til å redigere dette målet" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "Er du sikker på at du vil fjerne firmalogoen?" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Ukentlig tidsmål er oppdatert!" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Fjern logo" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "Kunne ikke oppdatere målet. Vennligst prøv igjen." -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "Du har ikke tillatelse til å slette dette målet" -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Ukentlig tidsmål er slettet" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "Kunne ikke slette målet. Vennligst prøv igjen." -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "Be om godkjenning" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "Test konfigurasjon" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "Operasjonen mislyktes" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "Operasjonen mislyktes" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Dashboard for telemetri og analyse" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Admin → Innstillinger" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "La feltet stå tomt for å beholde gjeldende passord" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Klientportaltilgang" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "Tildelt til" +#~ msgid "Update Status" +#~ msgstr "Oppdater status" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Administratortilgang" +#~ msgid "Create Task" +#~ msgstr "Opprett oppgave" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Migrere til nytt rollesystem" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Migrer" +#~ msgid "Send Email" +#~ msgstr "Send e-post" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Roller" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "Ingen brukere funnet." +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "Kan ikke slette brukeren «{name}» fordi de har {count} tidsoppføringer. Brukere med eksisterende tidsregistreringer kan ikke slettes." +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "Kan ikke slette bruker" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "Er du sikker på at du vil slette brukeren \"{name}\"? Denne handlingen kan ikke angres." +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Slett bruker" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "Timesheet period rejected" +#~ msgstr "Velg Prosjekt" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "Only admins can close periods" +#~ msgstr "Bare administratorer kan avvise kilometerangivelser" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "WebSocket live-oppdateringer" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "Navn og enhetspris kreves" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "Klient opprettet" -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "Nøkkel og etikett kreves" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Merkelapp" +#~ msgid "Time-off request approved" +#~ msgstr "Be om godkjenning" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Time-off request rejected" +#~ msgstr "Sitat avvist" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "Name and date range are required" +#~ msgstr "Navn og enhetspris kreves" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "Holiday created" +#~ msgstr "Timepris" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "remaining" +#~ msgstr "gjenværende" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Success" +#~ msgstr "Suksess" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "Error" +#~ msgstr "Feil" -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "Warning" +#~ msgstr "Advarsel" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Information" +#~ msgstr "Informasjon" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "Laster inn..." -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Saving..." +#~ msgstr "Lagrer..." -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Valgfri" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "Sletter ..." -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "Cancel" +#~ msgstr "Kansellere" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "Confirm" +#~ msgstr "Bekrefte" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "Close" +#~ msgstr "Lukke" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Save" +#~ msgstr "Spare" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Delete" +#~ msgstr "Slett" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "Edit" +#~ msgstr "Redigere" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "Add" +#~ msgstr "Legge til" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Remove" +#~ msgstr "Fjerne" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "OK" +#~ msgstr "OK" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Er du sikker på at du vil slette dette?" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "Du har ulagrede endringer. Er du sikker på at du vil forlate?" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "Operasjonen mislyktes" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "Operasjonen fullført" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "No items selected" +#~ msgstr "Ingen elementer er valgt" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Angi som standard mal" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "HTML-mal" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Egendefinert melding" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Flere variabler" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Lag mal" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Tilgjengelige variabler" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Fakturavariabler" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Andre variabler" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "Send test-e-post" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Invalid input" +#~ msgstr "Ugyldig inndata" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "Mottakers e-post" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "Fakturert" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Oppdater mal" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "Send test-e-post" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "Finner ingen e-postmaler." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "Lag din første e-postmal for å tilpasse e-postfakturaer." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "Lag e-postmal" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "Slett e-postmal" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "Er du sikker på at du vil slette" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Denne handlingen kan ikke angres." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "This field is required" +#~ msgstr "Dette feltet er obligatorisk" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Malinformasjon" +#~ msgid "No active timer" +#~ msgstr "Ingen aktiv timer" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "Timeren stoppet" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "Kunne ikke stoppe tidtakeren" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "Error stopping timer" +#~ msgstr "Feil ved stopp av tidtaker" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "No form to save" +#~ msgstr "Ingen skjema å lagre" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "No timer found" +#~ msgstr "Ingen tidtaker funnet" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Timeren stoppet på grunn av inaktivitet" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "Gå til innhold" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "Mobilnavigasjon" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "Navigasjon" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "Kommandopalett" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Commands" +#~ msgstr "Kommentarer" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "Bytt sidefelt" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Dashboard" +#~ msgstr "Dashbord" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "Timer" +#~ msgstr "Timer" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Time entries" +#~ msgstr "Tidsoppføringer" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Reports" +#~ msgstr "Rapporter" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "Calendar" +#~ msgstr "Kalender" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "Kalendervisning" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "Tidssporing" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "Be om godkjenning" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "Oppgaver" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "Kanban-styret" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "Ukentlige mål" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "Tidsregistreringsmaler" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "CRM" +#~ msgstr "CRM" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "Clients" +#~ msgstr "Kunder" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "Sitater" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "Økonomi og utgifter" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "Planlagte rapporter" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Invoices" +#~ msgstr "Fakturaer" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "Gjentakende fakturaer" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Payments" +#~ msgstr "Betalinger" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "Expenses" +#~ msgstr "Utgifter" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Ikon" +#~ msgid "Mileage" +#~ msgstr "Kilometerstand" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "Per Diem" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "Budsjettvarsler" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "Inventory" +#~ msgstr "Inventar" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "Lagervarer" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Navn" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Warehouses" +#~ msgstr "Varehus" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "Leverandører" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "Innkjøpsordrer" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "Lagernivåer" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "Aksjebevegelser" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "Overføringer" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "Justeringer" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Reservations" +#~ msgstr "Reservasjoner" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "Varsler om lavt lager" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "Analytics" +#~ msgstr "Analytics" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Systemtillatelser" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Alle tilgjengelige tillatelser i systemet" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Tilbake til Roller" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "tillatelser" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "Ingen beskrivelse tilgjengelig" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "Om tillatelser" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "Tillatelser definerer hvilke handlinger brukere kan utføre i systemet. Disse tillatelsene tildeles roller, og roller tildeles brukere. Dette gir et fleksibelt og detaljert tilgangskontrollsystem." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Rediger rolle" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Opprett ny rolle" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Rollenavn" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Et unikt navn for denne rollen" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Valgfri beskrivelse av denne rollen" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Tillatelser" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Velg tillatelsene denne rollen skal ha:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Slå på alle" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "Verktøy og data" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "Import/eksport" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "Lagrede filtre" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Oppdater rolle" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Opprett rolle" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Administrer roller og deres tillatelser" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Se tillatelser" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Totale roller" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Systemroller" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Egendefinerte roller" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Tilordnede brukere" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Type" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Standardrolle" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "bruker" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Ingen brukere" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Skikk" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Utsikt" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Tillatelser for" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "Ingen tillatelser tildelt." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "Ingen roller funnet." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "Om roller og tillatelser" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "Roller er samlinger av tillatelser som kan tildeles brukere. Systemroller er forhåndsdefinert og kan ikke slettes eller gis nytt navn, men tilpassede roller kan opprettes for dine spesifikke behov." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "Er du sikker på at du vil slette rollen" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Slett rolle" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Ingen beskrivelse" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Rolleinformasjon" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Systemrolle" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Egendefinert rolle" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Totale tillatelser" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Opprettet" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Brukere med denne rollen" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Ingen brukere er tildelt denne rollen ennå." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "Denne rollen har ingen tillatelser tildelt." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Tilbake til Bruker" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Administrer roller for" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Tildel roller" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "Velg rollene denne brukeren skal ha. Brukere arver alle tillatelser fra sine tildelte roller." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Oppdater roller" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Gjeldende effektive tillatelser" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "Dette er alle tillatelsene brukeren har gjennom rollene sine:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Ingen tillatelser (tilordne roller for å gi tillatelser)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Lag Webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Rediger Webhook" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Konfigurer webhook for integrasjoner" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "Webhook URL" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "Nettadressen som webhook-hendelser vil bli sendt til" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Hendelser" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Velg hvilke hendelser som skal utløse denne webhooken" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "HTTP-metode" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Innholdstype" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Max prøver på nytt" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Forsinkelse på nytt (sekunder)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Tidsavbrudd (sekunder)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Regenerer hemmelighet" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Advarsel: Regenerering av hemmeligheten vil ugyldiggjøre den gjeldende hemmeligheten" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Administrer webhook-integrasjoner" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Statistikk" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Total" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "Ingen webhooks er konfigurert" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Lag din første webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Webhook detaljer" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Test" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Hemmelig" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(avkortet)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Totale leveranser" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Vellykket" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Siste levering" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Nylige leveranser" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Hendelse" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Forsøk" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Svar" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Tid" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Prøver på nytt" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Ingen leveranser ennå" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "Sende et test webhook-arrangement?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "Test webhook sendt!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Feil:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Ukjent feil" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Feil ved sending av testwebhook:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Analytics Dashboard" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "Siste 7 dager" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "Siste 30 dager" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "Siste 90 dager" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "I fjor" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "Eksporter som JSON" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "Eksporter CSV" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Nøkkelberegninger og innsikt om tidsregistreringen din" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Gjennomsnittlig daglige timer" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "Retur" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "Tid" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Trend for daglige timer" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Fakturerbar vs Ikke-fakturerbar" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Ukentlige trender" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "timer før" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Admin" +#~ msgstr "Admin" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "Betalinger over tid" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Timer etter tid på dagen" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Prosjekteffektivitet" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Brukerytelse" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "Kunne ikke laste inn diagrammer. Vennligst prøv igjen." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "Kunne ikke oppdatere diagrammer. Vennligst prøv igjen." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Time på dagen" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Inntekter" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "Tilbakestill" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "Admin Dashboard" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Eksport" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Nøkkelberegninger og praktisk innsikt" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "vs forrige periode" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "av totalt" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Potensielle inntekter" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Gj.sn. rate:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "Trend" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "aktive prosjekter" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Innsikt og anbefalinger" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Kumulativ" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Fakturerbar distribusjon" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Oversikt over oppgavestatus" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Oppgaver fullført" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "Pågår" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Å gjøre" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Inntekter etter prosjekt" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Betalinger over tid" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Betalingsmetoder" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Inntekt vs betalinger" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Innsamlingssats" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Prosjektgjennomføringsgrad" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "Fakturerbar" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "Ikke-fakturerbar" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Fullført" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Kansellert" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Fullføringsrate (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Oversikt over mobilinnsikt" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Daglig gj.sn" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Daglige timer" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "Topp prosjekter" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "User Management" +#~ msgstr "Brukeradministrasjon" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "Roller og tillatelser" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Tidsregistrering" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "PDF Templates" +#~ msgstr "PDF-maler" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "timer" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "Invoice PDF" +#~ msgstr "Faktura PDF" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Vedta" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Avvis" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "Sitat PDF" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "System Settings" +#~ msgstr "Systeminnstillinger" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "Settings" +#~ msgstr "Innstillinger" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "E-postkonfigurasjon" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "E-postmaler" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "OIDC Settings" +#~ msgstr "OIDC-innstillinger" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "API-tokens" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "Revisjonslogger" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Expense Categories" +#~ msgstr "Utgiftskategorier" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "Dagpengepriser" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Godkjent av" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "Legg inn kommentar" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "Legg inn kommentar" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "Årsak til avvisning" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Spor hvem som endret hva og når" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Filtre" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Enhetstype" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Alle typer" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "Enhets-ID" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Alle brukere" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Handling" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Alle handlinger" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Oppdatert" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Slettet" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Tidsområde" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Filter" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Tidsstempel" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Entitet" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "Felt" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Endre" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Grunn" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Endre informasjon" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "System Info" +#~ msgstr "Systeminfo" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Backups" +#~ msgstr "Sikkerhetskopier" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "About" +#~ msgstr "Om" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Help" +#~ msgstr "Hjelp" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Open support options" +#~ msgstr "Eksportalternativer" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Be om informasjon" +#~ msgid "Support TimeTracker" +#~ msgstr "Støtte TimeTracker" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Open sidebar" +#~ msgstr "Bytt sidefelt" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Search" +#~ msgstr "Søk" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Theme" +#~ msgstr "Tema" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "Theme options" +#~ msgstr "Filteralternativer" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Light" +#~ msgstr "Lys" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Sikkerhet" +#~ msgid "Dark" +#~ msgstr "Mørk" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "System" +#~ msgstr "System" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (bedriftsautentisering)" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "Start Timer" +#~ msgstr "Start timer" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "Passordet må være minst 8 tegn langt" +#~ msgid "Stop" +#~ msgstr "til" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "AI Helper" +#~ msgstr "Se hjelp" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "Portalpassord" +#~ msgid "Change language" +#~ msgstr "Bytt språk" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "Angi passordet ditt" +#~ msgid "Language" +#~ msgstr "Språk" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "User menu" +#~ msgstr "Brukermeny" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "Ingen brukernavn eller e-post" +#~ msgid "Supporter" +#~ msgstr "Støtte" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "Guest" +#~ msgstr "Gjest" -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "Send test-e-post" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "Tilbake til Admin" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Logg inn" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Spor tid. Hold deg organisert." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Logg på kontoen din" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "Varedetaljer" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "Angi passordet ditt" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "Autentiseringsmetode" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "Logg på" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "My Profile" +#~ msgstr "Min profil" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Tips: Skriv inn et nytt brukernavn for å opprette kontoen din." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "Eller fortsett med" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Enkel pålogging" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Rediger profil" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Medlem siden" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "Angi passord" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "Angi passord" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "Angi et passord for kundeportalkontoen din" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "Angi passord" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "Passordet må være minst 8 tegn langt" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "Bekreft passord" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "Angi passordet ditt" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "Angi passord" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "Autentiseringsmetode" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "My Settings" +#~ msgstr "Mine innstillinger" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Kode" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "License" +#~ msgstr "Tillatelse" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "Kundeportaltilgang er ikke aktivert for kontoen din." +#~ msgid "Logout" +#~ msgstr "Logg ut" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Liker du TimeTracker?" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "Funksjonshemmet" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "Support / Get key" +#~ msgstr "Støtte TimeTracker" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "PayPal" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Support / License" +#~ msgstr "Rekvisita" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "Avskjedige" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "Generert kode" +#~ msgid "Software update" +#~ msgstr "Startdato" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "Aktivert" +#~ msgid "Read more" +#~ msgstr "Last inn mer" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "View Release" +#~ msgstr "Vis oppgave" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Quick actions dock" +#~ msgstr "Raske handlinger" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Budsjettvarsler og prognoser" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Overvåke prosjektbudsjetter og prognosefullføring" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Ubekreftede varsler" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Kritiske varsler" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Prosjekter med budsjetter" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Advarselsvarsler" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Aktive varsler" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Bekrefte" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Prosjektbudsjettstatus" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Budsjett" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Forbrukt" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Gjenværende" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Framgang" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "over" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Over budsjett" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Kritisk" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "Sunn" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "Fant ingen prosjekter med budsjetter" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Varsling er godkjent" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "Kunne ikke bekrefte varselet" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Budsjettanalyse og prognoser" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Tilbake til Dashboard" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Se prosjekt" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Totalt budsjett" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Forbrenningshastighetsanalyse" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Daglig brennhastighet" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Ukentlig brennhastighet" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Månedlig brennhastighet" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Periode totalt" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Basert på sist" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "dager" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "Ingen brennhastighetsdata tilgjengelig" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Fullføringsestimat" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Estimert fullføringsdato" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "dager igjen" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Konfidensnivå" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "Ingen ferdigstillelsesestimat tilgjengelig" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Analyse av kostnadstrend" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Gjennomsnittlig" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Ressursfordeling" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Total kostnad" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Timepris" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Teammedlem" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Koste" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Timer %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Kostnad %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "Oppføringer" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Dato og tid" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Sted" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Påminnelse" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "minutter før" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "timer før" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "dager før" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Tilbakevendende" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Til" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Sist oppdatert" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Tilbake til Kalender" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Slett hendelse" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "Er du sikker på at du vil slette denne hendelsen? Denne handlingen kan ikke angres." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Rediger hendelse" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Ny begivenhet" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Tittel" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Startdato" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Starttid" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Sluttdato" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Sluttid" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Heldagsarrangement" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Hendelsestype" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Møte" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Ansettelse" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Frist" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- Ingen --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Ingen påminnelse" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 minutter før" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 minutter før" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 minutter før" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 time før" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 dag før" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Farge" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Velg en farge for dette arrangementet" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Privat arrangement" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Private arrangementer er kun synlige for deg" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Gjentakende hendelse" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "Dette er en gjenganger" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Gjentakelsesmønster" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Bruk RRULE-format (f.eks. FREKVENS=ukentlig; BYDAY=MO,VI,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Sluttdato for gjentakelse" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Oppdater hendelse" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Opprett hendelse" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "Actions" +#~ msgstr "Handlinger" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "Log Time" +#~ msgstr "Loggtid" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "New Task" +#~ msgstr "Ny oppgave" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "New Project" +#~ msgstr "Se prosjekt" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "New Client" +#~ msgstr "Rediger klient" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "Operasjonen mislyktes" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Context included" +#~ msgstr "Kontrakt avsluttet" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "Forhåndsvisning av logo" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "Send" +#~ msgstr "Slutt" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Se og administrer hendelser, oppgaver og tidsoppføringer" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Dag" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Uke" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Måned" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "I dag" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Laster kalender..." +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Begivenhetsdetaljer" +#~ msgid "Create API Token" +#~ msgstr "Opprett API-token" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "Your API Token" +#~ msgstr "Ditt API-token" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "Usage Examples" +#~ msgstr "Eksempler på bruk" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "Are you sure you want to" +#~ msgstr "Er du sikker på at du vil" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "deactivate" +#~ msgstr "deaktivere" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "activate" +#~ msgstr "aktivere" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "this token?" +#~ msgstr "dette symbolet?" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "Deactivate Token" +#~ msgstr "Deaktiver token" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "Activate Token" +#~ msgstr "Aktiver token" -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "Deactivate" +#~ msgstr "Deaktiver" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "Activate" +#~ msgstr "Aktiver" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette dette tokenet? Denne handlingen " +#~ "kan ikke angres." -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "Slett token" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "Lag sikkerhetskopi" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "Gjenopprett sikkerhetskopi" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "Eksisterende sikkerhetskopier" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "Important Information" +#~ msgstr "Viktig informasjon" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "Bekreft sletting" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "Clear Cache" +#~ msgstr "Tøm buffer" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "ServiceWorker Status" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "Tøm alle cacher" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "ServiceWorker-handlinger" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "Manuell hard oppdatering" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Rediger klientnotat" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Tilbake til klienten" +#~ msgid "All time" +#~ msgstr "Hele tiden" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Klient:" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Opprettet den" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Sist redigert den" +#~ msgid "Total Projects" +#~ msgstr "Totalt prosjekter" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Merk innhold" +#~ msgid "Active Projects" +#~ msgstr "Aktive prosjekter" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Intern notat som bare er synlig for teamet ditt." +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Merk som viktig" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Klientportal" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "Se detaljer" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "I påvente av" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Godkjent" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Avvist" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Alle" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Se detaljer" +#~ msgid "Database" +#~ msgstr "Database" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "OIDC Users" +#~ msgstr "OIDC-brukere" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "users" +#~ msgstr "brukere" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "Administrasjonsseksjoner" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "Recent Activity" +#~ msgstr "Nylig aktivitet" -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "Godkjenningsstatus" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "Godkjenning forespurt" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "Ingen prosjekter ble oppdatert" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "Velkommen, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "Tilpass snarveier" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "Duration" +#~ msgstr "Varighet" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "Statistikk" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "Administrasjonsseksjoner" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "Nylige fakturaer" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "Nylige tidsinnlegg" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "Velg en klient..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "Kunne ikke stoppe tidtakeren" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "N/A" +#~ msgstr "N/A" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "E-postkonfigurasjon og testing" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "Konfigurer og test e-postlevering" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "Tilbake til Admin" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "Konfigurer e-postinnstillinger her for å lagre dem i databasen." -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Aktiver e-postkonfigurasjon for database" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Gå til Dashboard" +#~ msgid "Mail Server" +#~ msgstr "E-postserver" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "Postport" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Gå tilbake" +#~ msgid "Use TLS" +#~ msgstr "Bruk TLS" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "Use SSL" +#~ msgstr "Bruk SSL" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Fakturadetaljer" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Utstedelsesdato" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "Denne fakturaen er %(days)d dager forsinket." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Fakturavarer" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Mengde" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Enhetspris" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "Username" +#~ msgstr "Brukernavn" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Tilbake til Fakturaer" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "Fakturaer for %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "Ubetalt" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "Forsinket" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Beløp" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "dager forsinket" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "Password" +#~ msgstr "Passord" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "Leave empty to keep current" +#~ msgstr "La stå tomt for å holde deg oppdatert" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "Standard avsender" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "Mottakers e-post" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "Lagre konfigurasjon" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "Reset" +#~ msgstr "Tilbakestill" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "E-postkonfigurasjonsstatus" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Refresh" +#~ msgstr "Forfriske" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Prioritet" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "E-post er konfigurert!" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "Tildelt til" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Your email settings are properly set up." +#~ msgstr "E-postinnstillingene dine er riktig konfigurert." -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Email is not configured" +#~ msgstr "E-post er ikke konfigurert" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "Vennligst konfigurer e-postinnstillingene ved å bruke skjemaet ovenfor." -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Configuration Errors" +#~ msgstr "Konfigurasjonsfeil" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Åpne" +#~ msgid "Configuration Warnings" +#~ msgstr "Konfigurasjonsadvarsler" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Current Email Settings" +#~ msgstr "Gjeldende e-postinnstillinger" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "Port" +#~ msgstr "Havn" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "Password Set" +#~ msgstr "Passord satt" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Kundeportalpålogging" +#~ msgid "Send Test Email" +#~ msgstr "Send test-e-post" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Se dine prosjekter og fakturaer" +#~ msgid "Recipient Email Address" +#~ msgstr "Mottakers e-postadresse" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Logg på kundeportalen" +#~ msgid "Configuration Guide" +#~ msgstr "Konfigurasjonsveiledning" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "Skriv inn portallegitimasjonen din for å få tilgang til prosjektene og fakturaene dine" +#~ msgid "Common SMTP Providers" +#~ msgstr "Vanlige SMTP-leverandører" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "portal_brukernavn" +#~ msgid "Requires app password" +#~ msgstr "Krever app-passord" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Skriv inn passordet ditt" +#~ msgid "Important Notes" +#~ msgstr "Viktige merknader" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail krever et app-passord hvis 2FA er aktivert" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "Start programmet på nytt etter å ha endret e-postinnstillinger" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "Sjekk brannmurreglene hvis e-post ikke sendes" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "For produksjon, bruk en dedikert " +#~ "e-posttjeneste som SendGrid eller Amazon " +#~ "SES" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Lav" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Medium" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Høy" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Som haster" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "password is set" +#~ msgstr "passordet er satt" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "no password set" +#~ msgstr "ikke angitt passord" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "Kunne ikke lagre konfigurasjonen. Vennligst prøv igjen." -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Success!" +#~ msgstr "Suksess!" -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "Kunne ikke oppdatere status. Vennligst prøv igjen." -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "Vennligst skriv inn en gyldig e-postadresse" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "Sender..." -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "Kunne ikke sende test-e-post. Vennligst sjekk konfigurasjonen din." -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Konfigurer OIDC ved å bruke disse miljøvariablene:" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Server" +#~ msgstr "Service" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Users" +#~ msgstr "Brukere" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Kommentarer" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Legg til kommentar" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Din kommentar" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Gruppekrav" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Legg inn kommentar" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "Tapt" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Tilbake til prosjekter" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "Bruk SSL" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "Prosjekter for %(client_name)s" +#~ msgid "StartTLS" +#~ msgstr "Start" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Tidsavbrudd (sekunder)" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Sitatdetaljer" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Gyldig til" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Dette sitatet er utløpt." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Sitat elementer" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "SKU" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Vilkår og betingelser" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Godta sitat" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Avvis sitat" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Tilbake til sitater" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "Bind password" +#~ msgstr "Passord" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "Sitater for %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Utløpt" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "Ingen sitater funnet." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Enter bind password" +#~ msgstr "Skriv inn passordet ditt" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "Prosjektkode" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "Over budsjett" +#~ msgid "Base DN" +#~ msgstr "Basert på sist" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "Sammendrag" +#~ msgid "User object class" +#~ msgstr "Bruk prosjekttimepriser" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "Totalt beløp" +#~ msgid "Login attribute" +#~ msgstr "Loggtid" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "Ingen oppgaver er valgt" +#~ msgid "Email attribute" +#~ msgstr "E-postadresse" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "Ingen aktivitet de siste 30 dagene." +#~ msgid "First name attribute" +#~ msgstr "Fornavn" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "Etternavn" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Autentiseringsmetode" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Angi passord" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Angi passordet ditt for å komme i gang" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Angi passordet ditt" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Angi et passord for kundeportalkontoen din" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "Bekreft passord" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Bekreft passordet ditt" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "Tidsoppføringer for %(client_name)s prosjekter" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Alle prosjekter" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "Fra dato" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "Til dags dato" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Totalt antall oppføringer" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Totalt antall timer" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "Group object class" +#~ msgstr "Topp prosjekter" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "Administrasjonsgruppe" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Nylige fakturaer" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Vis alle" +#~ msgid "AUTH_METHOD" +#~ msgstr "Auth metode" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "Kun aktiv" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Test konfigurasjon" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "Test connection" +#~ msgstr "Test konfigurasjon" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Generate configuration" +#~ msgstr "Test konfigurasjon" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Totale fakturaer" +#~ msgid "Environment variables (.env)" +#~ msgstr "Referanse til miljøvariabler" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Nylige tidsinnlegg" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Eksporter til CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Opprett klient" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Tilbake til klienter" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "Legg til en ny klient for å administrere relaterte prosjekter og fakturering." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Skriv inn klientnavn" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Standard timepris" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "f.eks. 75,00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "Denne satsen fylles automatisk når du oppretter prosjekter for denne klienten" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Støtter Markdown" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Kort beskrivelse av oppdragsgiver eller prosjektomfang" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Kontaktperson" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Navn på hovedkontakt" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@client.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Månedlige forhåndsbetalte timer" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "f.eks. 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "La stå tomt hvis denne klienten ikke har noen forhåndsbetalt tildeling." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Forhåndsbetalt tilbakestillingsdag" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Dag i måneden da forhåndsbetalte timer tilbakestilles (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Klientadresse" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "Previous" +#~ msgstr "Tidligere" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "Next" +#~ msgstr "Neste" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Velg et klart, beskrivende navn for kundeorganisasjonen." +#~ msgid "Feature Module Load Status" +#~ msgstr "Funksjonsbruksstatistikk" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "Angi standard timepris for denne klienten. Denne vil automatisk fylles ut når du oppretter nye prosjekter." +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Kontaktinformasjon" +#~ msgid "Optional loaded:" +#~ msgstr "Valgfri kupongkode" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "Legg til kontaktdetaljer for enkel kommunikasjon og journalføring." +#~ msgid "Attention needed" +#~ msgstr "Oppmerksomhet kreves" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Forhåndsbetalte timer" +#~ msgid "Module" +#~ msgstr "Mobil" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "Konfigurer månedlige inkluderte timer og tilbakestillingsdagen hvis denne klienten har en retainer eller forhåndsbetalt pakke." +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "Gi kontekst om klientforholdet eller typiske prosjekttyper." +#~ msgid "Status" +#~ msgstr "Status" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "Rediger klient" +#~ msgid "Details" +#~ msgstr "Detaljer" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "Aktiver portaltilgang for denne klienten. Kunder kan logge på med sin egen legitimasjon for å se prosjekter, fakturaer og tidsregistreringer." +#~ msgid "Loaded" +#~ msgstr "Last inn mer" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Aktiver klientportal" +#~ msgid "Failed" +#~ msgstr "Mislyktes" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "—" +#~ msgstr "" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Portal brukernavn" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Unikt brukernavn for portalpålogging" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Portalpassord" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "La det stå tomt for å beholde gjeldende passord" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Angi et nytt passord eller la det stå tomt for å holde deg oppdatert" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Gjeldende portalbrukernavn" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Oppdater klient" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Send e-post for passordoppsett" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "Send en e-post til %(email)s med en lenke for å angi portalpassordet deres." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "E-postadresse kreves for å sende e-post med passordoppsett. Vennligst angi klientens e-postadresse ovenfor." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Kundestatistikk" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "Est. Total kostnad" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Filtrer klienter" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Slå på filtre" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Skjul filtre" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Vis filtre" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "Ingen ufakturerte tidsoppføringer funnet for dette prosjektet." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "Ufakturerte tidsoppføringer" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "Fakturavarer" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "Vil du merke klienten som inaktiv?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Endre klientstatus" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Merk inaktiv" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "Aktivere klient?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Aktiver klient" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Slett klient" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "Totale og aktive prosjekter" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Administrer" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Primær" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "flere kontakt(er)" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Ingen kontakter ennå" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Legg til kontakt" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Eldre kontaktinformasjon" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "Planen inkluderer %(hours)s timer per syklus. Tilbakestilles på dag %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Nåværende syklusstart" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Gjenstående timer" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "h" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "Brukte denne syklusen" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Klient synlig" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Arkivert" +#~ msgid "All Categories" +#~ msgstr "Alle kategorier" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "Project Management" +#~ msgstr "Prosjektledelse" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Interne merknader" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Legg til merknad" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Legg til et internt notat om denne klienten..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Lagre notat" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "redigert" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Viktig" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Fjern merking" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Merk som viktig" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "Ingen notater ennå. Legg til et notat for å holde styr på viktig informasjon om denne klienten." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "Estimert verdi" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "Opprett faktura" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "Opprett faktura" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "Opprett faktura" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "Er du sikker på at du vil slette dette notatet?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Slett notat" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Redigert på" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Svar" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "Aktivert" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Skriv svaret ditt..." +#~ msgid "Disabled" +#~ msgstr "Funksjonshemmet" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Del dine tanker, oppdateringer eller spørsmål..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "Du kan bruke linjeskift til å formatere kommentaren din." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Legg til bilde" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Ingen kommentarer ennå" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Start samtalen ved å legge til den første kommentaren." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Legg til første kommentar" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Rediger kommentar" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Tilbake" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "Redigering av kommentar til:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Opprinnelig lagt ut på" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Kommentarinnhold" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Alle aktiviteter" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Tidsmaler" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Ingen nylig aktivitet" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "Aktivitet vises her mens du jobber" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Last inn mer" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "Kunne ikke laste inn aktiviteter" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Save Changes" +#~ msgstr "Lagre endringer" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "Note" +#~ msgstr "Note" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Velg en klient..." +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "OIDC Debug Dashboard" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "Inspiser konfigurasjon, leverandørmetadata og OIDC-brukere" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Test Configuration" +#~ msgstr "Test konfigurasjon" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "OIDC Configuration" +#~ msgstr "OIDC-konfigurasjon" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "Auth Method" +#~ msgstr "Auth metode" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Issuer" +#~ msgstr "Utsteder" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Not configured" +#~ msgstr "Ikke konfigurert" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "Client ID" +#~ msgstr "Klient-ID" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Client Secret" +#~ msgstr "Klienthemmelighet" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Set" +#~ msgstr "Sett" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Not set" +#~ msgstr "Ikke satt" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "Omdiriger URI" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "Autogenerert" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Scopes" +#~ msgstr "Omfang" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "Krav kartlegging" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "Brukernavnkrav" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Email Claim" +#~ msgstr "E-postkrav" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "Full Name Claim" +#~ msgstr "Fullt navnekrav" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "Groups Claim" +#~ msgstr "Gruppekrav" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "Ferdig" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Admin Group" +#~ msgstr "Administrasjonsgruppe" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "TimeTracker Hjelpesenter" +#~ msgid "Admin Emails" +#~ msgstr "Administrator e-poster" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Post-Logout URI" +#~ msgstr "URI etter utlogging" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Hjem" +#~ msgid "Provider Metadata" +#~ msgstr "Leverandørmetadata" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "Mine oppgaver paginering" +#~ msgid "Error loading metadata:" +#~ msgstr "Feil ved innlasting av metadata:" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "Discovery endpoint:" +#~ msgstr "Oppdagelsesendepunkt:" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Vellykket lastet leverandørmetadata" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Ringe" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Beskjed" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Retning" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "Utgående" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "Innkommende" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Tema" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Planlagt" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Oppfølgingsdato" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Innhold/notater" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Lagre kommunikasjon" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Fornavn" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Etternavn" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "Mobil" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "Avdeling" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Kontakt" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Fakturering" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Teknisk" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Angi som primærkontakt" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Tagger" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Lagre kontakt" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Sett Primær" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "Ingen kontakter funnet" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Legg til første kontakt" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Primær kontakt" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Kommunikasjonshistorie" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Legg til kommunikasjon" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "Ingen kommunikasjon registrert" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "Endpoints" +#~ msgstr "Endepunkter" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "Aktiver" +#~ msgid "Authorization" +#~ msgstr "Autorisasjon" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "Token" +#~ msgstr "Token" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Navn på avtale" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Velg klient" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Velg Kontakt" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Scene" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Deal verdi" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Vinnsannsynlighet" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Forventet lukkedato" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Relatert sitat" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Velg Sitat" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Lagre avtale" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Vant" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Tapt" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Alle stadier" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Verdi" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Sannsynlighet" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Forventet Lukk" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "Ingen tilbud funnet" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Opprett første avtale" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "UserInfo" +#~ msgstr "Brukerinfo" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "End Session" +#~ msgstr "Avslutt økten" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "JWKS URI" +#~ msgstr "JWKS URI" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "Supported Features" +#~ msgstr "Støttede funksjoner" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "Response Types" +#~ msgstr "Svartyper" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "Tilskuddstyper" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Relatert prosjekt" +#~ msgid "Auth Methods" +#~ msgstr "Auth-metoder" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Claims" +#~ msgstr "Krav" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Leverandørmetadata er ikke lastet inn. " +#~ "Klikk \"Test konfigurasjon\" for å " +#~ "hente." -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "Email" +#~ msgstr "E-post" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "Målhistorie" +#~ msgid "Full Name" +#~ msgstr "Fullt navn" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "Se alle detaljer" +#~ msgid "Role" +#~ msgstr "Rolle" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Last Login" +#~ msgstr "Siste pålogging" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Du ble nevnt" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Se oppgave og svar" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Faktura" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Forfalt faktura" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Se faktura" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Sitere" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Sitatgodkjenning avvist" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Se sitat" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Godkjenning forespurt" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Gjennomgå sitat" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Sitat godkjent" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "Sitat utløpt" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "Sitat utløper snart" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Sitat sendt" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Oppgaveoppdrag" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Vis oppgave" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Testdetaljer" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "Ditt ukentlige sammendrag" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 Dårlig forespørsel" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Ugyldig forespørsel" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "Forespørselen du sendte er ugyldig eller inneholder feil. Dette kan skyldes:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Manglende eller ugyldige skjemadata" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Feilaktige forespørselsparametere" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "Du har ikke tillatelse til å få tilgang til denne ressursen. Dette kan skyldes:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Utilstrekkelige privilegier" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "Ikke innlogget" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Ressurstilgangsbegrensninger" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Noe gikk galt hos oss. Vennligst prøv igjen senere." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Prøv igjen" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Det oppsto en feil under behandlingen av forespørselen din." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Oppdater siden" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Gå til Logg inn" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "f.eks. reiser, måltider, kontorrekvisita" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "f.eks. REISER, MÅLTID" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Kort beskrivelse av denne kategorien..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "f.eks. fa-fly, fa-redskaper" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "f.eks. 19.00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Kategori" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Grunnleggende informasjon" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "f.eks. Fly til Berlin" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Ytterligere detaljer om utgiften..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "Kategori" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "Betalingsdetaljer" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "Sted" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Betalingsdetaljer" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "f.eks. Lufthansa" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "Tilleggsinformasjon" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Kvittering/Fakturanummer" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "f.eks. INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "f.eks. konferanse, kundemøte, haster" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Ytterligere merknader..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "Valgfri" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Filtrer utgifter" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Slett valgte utgifter" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Endre status for utvalgte utgifter" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Tilknyttet" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Avvis utgift" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Forklar hvorfor denne utgiften blir avvist..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "Er du sikker på at du vil slette denne utgiften?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Slett utgift" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "OIDC Subject" +#~ msgstr "OIDC-emne" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Importer/eksporter data" +#~ msgid "Inactive" +#~ msgstr "Inaktiv" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Import/eksport" +#~ msgid "Never" +#~ msgstr "Aldri" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "Importer data fra andre tidssporere eller eksporter dataene dine for GDPR-overholdelse og sikkerhetskopier" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Ingen brukere har logget på via OIDC ennå." -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Importer data" +#~ msgid "Environment Variables Reference" +#~ msgstr "Referanse til miljøvariabler" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Konfigurer OIDC ved å bruke disse miljøvariablene:" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Importer tidsoppføringer fra en CSV-fil" +#~ msgid "Variable" +#~ msgstr "Variabel" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Velg CSV-fil" +#~ msgid "Description" +#~ msgstr "Beskrivelse" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Last ned mal" +#~ msgid "Example" +#~ msgstr "Eksempel" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Authentication method" +#~ msgstr "Autentiseringsmetode" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "OIDC provider issuer URL" +#~ msgstr "OIDC-leverandørens utsteder-URL" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Client ID from OIDC provider" +#~ msgstr "Klient-ID fra OIDC-leverandør" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Klienthemmelighet fra OIDC-leverandør" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "Tilbakeringings-URL (valgfritt, automatisk generert)" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Requested scopes" +#~ msgstr "Forespurte omfang" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Claim containing username" +#~ msgstr "Krav som inneholder brukernavn" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Importer fra Toggl Track" +#~ msgid "Claim containing email" +#~ msgstr "Krav som inneholder e-post" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Importer tidsoppføringer fra Toggl Track" +#~ msgid "Claim containing full name" +#~ msgstr "Påstand som inneholder fullt navn" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Importer fra Toggl" +#~ msgid "Claim containing groups" +#~ msgstr "Krav som inneholder grupper" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Import fra Harvest" +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Gruppenavn for administratorrolle (valgfritt)" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Importer tidsoppføringer fra Harvest" +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "Kommaseparerte admin-e-poster (valgfritt)" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Gjenopprett fra sikkerhetskopi" +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Importhistorikk" +#~ msgid "Basic Config" +#~ msgstr "" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Eksporter data" +#~ msgid "Test Connection" +#~ msgstr "" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Full dataeksport (GDPR)" +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Eksporter alle dine personlige data" +#~ msgid "OIDC Issuer URL" +#~ msgstr "" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Eksporter som JSON" +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Eksporter som ZIP" +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Filtrert eksport" +#~ msgid "Enter client secret" +#~ msgstr "" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Eksporter spesifikke data med filtre" +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Eksporter med filtre" +#~ msgid "Authentication Method" +#~ msgstr "Autentiseringsmetode" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "OIDC Only" +#~ msgstr "" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "Both" +#~ msgstr "" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Lag en fullstendig sikkerhetskopi av databasen" +#~ msgid "SSO and local password authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Eksporter historikk" +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "API-token" +#~ msgid "Step 2: Test Connection" +#~ msgstr "" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "Arbeidsområde-ID" +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Import" +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "Konto-ID" +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" + +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" + +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" + +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" + +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" + +#~ msgid "Generate Configuration" +#~ msgstr "" + +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" + +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" + +#~ msgid "OIDC User Details" +#~ msgstr "OIDC-brukerdetaljer" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Profil og OIDC-identitet for denne brukeren" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "Tilbake til OIDC Debug" + +#~ msgid "User Profile" +#~ msgstr "Brukerprofil" + +#~ msgid "Active" +#~ msgstr "Aktiv" + +#~ msgid "Preferred Language" +#~ msgstr "Foretrukket språk" + +#~ msgid "Created At" +#~ msgstr "Opprettet kl" + +#~ msgid "OIDC Information" +#~ msgstr "OAIDC-informasjon" + +#~ msgid "OIDC Issuer" +#~ msgstr "OIDC-utsteder" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "OIDC-emne (under)" + +#~ msgid "Local" +#~ msgstr "Lokalt" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Denne brukeren ble opprettet eller " +#~ "koblet til via OIDC. Utstederen og " +#~ "emnet brukes til å identifisere brukeren" +#~ " unikt på tvers av påloggingsøkter." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Denne brukeren har ingen OIDC-" +#~ "informasjon. De kan ha blitt opprettet" +#~ " manuelt eller via egenregistrering uten" +#~ " OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "Aktivitetsstatistikk" + +#~ msgid "Time Entries" +#~ msgstr "Tidsoppføringer" + +#~ msgid "None" +#~ msgstr "Ingen" + +#~ msgid "Active Timer" +#~ msgstr "Aktiv timer" + +#~ msgid "Tasks Created" +#~ msgstr "Oppgaver opprettet" + +#~ msgid "Edit User" +#~ msgstr "Rediger bruker" + +#~ msgid "View All Users" +#~ msgstr "Vis alle brukere" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "PDF-sitatdesigner" + +#~ msgid "Visual Invoice Designer" +#~ msgstr "Visual Quote Designer" + +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "Dra og slipp elementer for å designe tilbudsoppsettet ditt" + +#~ msgid "How to use:" +#~ msgstr "Slik bruker du:" + +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Klikk på elementer fra venstre sidefelt" +#~ " for å legge dem til på " +#~ "lerretet. Klikk på elementer for å " +#~ "velge og tilpasse dem i " +#~ "egenskapspanelet. Bruk justeringsverktøyene og " +#~ "hurtigtastene for raskere redigering." + +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Tastatursnarveier:" + +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" + +#~ msgid "Items Table:" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" + +#~ msgid "Expenses Table:" +#~ msgstr "Utgifter Delsum" + +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" + +#~ msgid "Saving:" +#~ msgstr "Lagrer..." + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" + +#~ msgid "Preview:" +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" + +#~ msgid "See" +#~ msgstr "Sett" + +#~ msgid "for full documentation." +#~ msgstr "Dokumentasjon" + +#~ msgid "Clear Canvas" +#~ msgstr "Klart lerret" + +#~ msgid "Generate Preview" +#~ msgstr "Generer forhåndsvisning" + +#~ msgid "Save Design" +#~ msgstr "Lagre design" + +#~ msgid "View Code" +#~ msgstr "Se kode" + +#~ msgid "Export JSON" +#~ msgstr "" + +#~ msgid "Import JSON" +#~ msgstr "" + +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Fest til rutenett (10px)" + +#~ msgid "Toolbox" +#~ msgstr "Verktøykasse" + +#~ msgid "Search elements & variables..." +#~ msgstr "Søkeelementer og variabler..." + +#~ msgid "Elements" +#~ msgstr "Elementer" + +#~ msgid "Variables" +#~ msgstr "Variabler" + +#~ msgid "Basic Elements" +#~ msgstr "Grunnleggende elementer" + +#~ msgid "Custom Text" +#~ msgstr "Egendefinert tekst" + +#~ msgid "Text" +#~ msgstr "Tekst" + +#~ msgid "Heading" +#~ msgstr "Overskrift" + +#~ msgid "Line" +#~ msgstr "Linje" + +#~ msgid "Rectangle" +#~ msgstr "Rektangel" + +#~ msgid "Circle" +#~ msgstr "Sirkel" + +#~ msgid "Company Info" +#~ msgstr "Bedriftsinformasjon" + +#~ msgid "Company Logo" +#~ msgstr "Firmalogo" + +#~ msgid "Company Name" +#~ msgstr "Firmanavn" + +#~ msgid "Company Details" +#~ msgstr "Firmadetaljer" + +#~ msgid "Address" +#~ msgstr "Adresse" + +#~ msgid "Phone" +#~ msgstr "Telefon" + +#~ msgid "Website" +#~ msgstr "Nettsted" + +#~ msgid "Tax ID" +#~ msgstr "Skatte-ID" + +#~ msgid "Invoice Data" +#~ msgstr "Fakturadetaljer" + +#~ msgid "Invoice Number" +#~ msgstr "Fakturanummer" + +#~ msgid "Invoice Date" +#~ msgstr "Fakturert" + +#~ msgid "Due Date" +#~ msgstr "Forfallsdato" + +#~ msgid "Client Info" +#~ msgstr "Kundeinformasjon" + +#~ msgid "Client Name" +#~ msgstr "Kundens navn" + +#~ msgid "Client Address" +#~ msgstr "Kundeadresse" + +#~ msgid "Items Table" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "Expenses Table" +#~ msgstr "Utgifter Delsum" + +#~ msgid "Subtotal" +#~ msgstr "Delsum" + +#~ msgid "Tax" +#~ msgstr "Avgift" + +#~ msgid "Total Amount" +#~ msgstr "Totalt beløp" + +#~ msgid "Terms" +#~ msgstr "Vilkår" + +#~ msgid "Payment & Project" +#~ msgstr "Betaling og prosjekt" + +#~ msgid "Payment Date" +#~ msgstr "Betalingsdato" + +#~ msgid "Payment Method" +#~ msgstr "Betalingsmåte" + +#~ msgid "Payment Status" +#~ msgstr "Betalingsstatus" + +#~ msgid "Amount Paid" +#~ msgstr "Innbetalt beløp" + +#~ msgid "Project Name" +#~ msgstr "Prosjektnavn" + +#~ msgid "Client Email" +#~ msgstr "Kundens e-post" + +#~ msgid "Client Phone" +#~ msgstr "Kundetelefon" + +#~ msgid "QR Code" +#~ msgstr "QR-kode" + +#~ msgid "Barcode" +#~ msgstr "Strekkode" + +#~ msgid "Page Number" +#~ msgstr "Sidetall" + +#~ msgid "Current Date" +#~ msgstr "Gjeldende dato" + +#~ msgid "Watermark" +#~ msgstr "Vannmerke" + +#~ msgid "Bank Info" +#~ msgstr "Bankinfo" + +#~ msgid "Currency" +#~ msgstr "Valuta" + +#~ msgid "Decorative Image" +#~ msgstr "" + +#~ msgid "Invoice Fields" +#~ msgstr "Fakturavarer" + +#~ msgid "Invoice number" +#~ msgstr "Fakturanummer" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Sitatstatus (utkast/sendt/betalt/forfalt)" + +#~ msgid "Issue date" +#~ msgstr "Utstedelsesdato" + +#~ msgid "Due date" +#~ msgstr "Forfallsdato" + +#~ msgid "Subtotal amount" +#~ msgstr "Subtotalt beløp" + +#~ msgid "Tax rate (%)" +#~ msgstr "Skattesats (%)" + +#~ msgid "Tax amount" +#~ msgstr "Skattebeløp" + +#~ msgid "Total amount" +#~ msgstr "Totalt beløp" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Valutakode (EUR, USD osv.)" + +#~ msgid "Invoice notes" +#~ msgstr "Fakturavarer" + +#~ msgid "Terms & conditions" +#~ msgstr "Vilkår og betingelser" + +#~ msgid "Client Fields" +#~ msgstr "Klientfelt" + +#~ msgid "Client company name" +#~ msgstr "Kundens firmanavn" + +#~ msgid "Client email address" +#~ msgstr "Klientens e-postadresse" + +#~ msgid "Client full address" +#~ msgstr "Klientens fulle adresse" + +#~ msgid "Client contact person" +#~ msgstr "Kundens kontaktperson" + +#~ msgid "Client phone number" +#~ msgstr "Kundens telefonnummer" + +#~ msgid "Payment Fields" +#~ msgstr "Betalingsfelt" + +#~ msgid "Payment status" +#~ msgstr "Betalingsstatus" + +#~ msgid "Payment date" +#~ msgstr "Betalingsdato" + +#~ msgid "Payment method" +#~ msgstr "Betalingsmåte" + +#~ msgid "Payment reference number" +#~ msgstr "Betalingsreferansenummer" + +#~ msgid "Amount paid" +#~ msgstr "Innbetalt beløp" + +#~ msgid "Outstanding amount" +#~ msgstr "Utestående beløp" + +#~ msgid "Payment notes" +#~ msgstr "Betalingsanmerkninger" + +#~ msgid "Project Fields" +#~ msgstr "Prosjektfelt" + +#~ msgid "Project name" +#~ msgstr "Prosjektnavn" + +#~ msgid "Project code" +#~ msgstr "Prosjektkode" + +#~ msgid "Project description" +#~ msgstr "Prosjektbeskrivelse" + +#~ msgid "Project billing reference" +#~ msgstr "Prosjektfaktureringsreferanse" + +#~ msgid "Company/Settings Fields" +#~ msgstr "Felt for bedrift/innstillinger" + +#~ msgid "Your company name" +#~ msgstr "Firmanavnet ditt" + +#~ msgid "Your company address" +#~ msgstr "Din bedriftsadresse" + +#~ msgid "Your company email" +#~ msgstr "Din bedrifts e-post" + +#~ msgid "Your company phone" +#~ msgstr "Firmatelefonen din" + +#~ msgid "Your company website" +#~ msgstr "Din bedrifts nettside" + +#~ msgid "Your tax ID number" +#~ msgstr "Skatte-ID-nummeret ditt" + +#~ msgid "Your bank account info" +#~ msgstr "Din bankkontoinformasjon" + +#~ msgid "Default invoice terms" +#~ msgstr "Standard fakturavilkår" + +#~ msgid "Default invoice notes" +#~ msgstr "Standard fakturanotater" + +#~ msgid "Date/Time Fields" +#~ msgstr "Dato/klokkeslett-felt" + +#~ msgid "Current date" +#~ msgstr "Gjeldende dato" + +#~ msgid "Invoice creation date" +#~ msgstr "Dato for opprettelse av tilbud" + +#~ msgid "Invoice last update date" +#~ msgstr "Sitat siste oppdateringsdato" + +#~ msgid "Invoice Items Loop" +#~ msgstr "Fakturavarer" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" + +#~ msgid "Time-based items only" +#~ msgstr "Tidsbaserte tjenester og timearbeid" + +#~ msgid "Item description" +#~ msgstr "Varebeskrivelse" + +#~ msgid "Item quantity" +#~ msgstr "Vare mengde" + +#~ msgid "Item unit price" +#~ msgstr "Vare enhetspris" + +#~ msgid "Item total amount" +#~ msgstr "Vare totalbeløp" + +#~ msgid "End loop" +#~ msgstr "Sluttløkke" + +#~ msgid "Extra Goods Loop" +#~ msgstr "Ekstra varer" + +#~ msgid "Loop through extra goods only" +#~ msgstr "Prosjekt Ekstra varer" + +#~ msgid "Good name" +#~ msgstr "Rollenavn" + +#~ msgid "Good total amount" +#~ msgstr "Totalt beløp" + +#~ msgid "Design Canvas" +#~ msgstr "Design Canvas" + +#~ msgid "Page Size:" +#~ msgstr "Sidestørrelse:" + +#~ msgid "Zoom In" +#~ msgstr "Zoom inn" + +#~ msgid "Zoom Out" +#~ msgstr "Zoom ut" + +#~ msgid "Delete Selected" +#~ msgstr "Slett valgte" + +#~ msgid "Properties" +#~ msgstr "Egenskaper" + +#~ msgid "Warnings" +#~ msgstr "Advarsel" + +#~ msgid "Refresh warnings" +#~ msgstr "Oppdater siden" + +#~ msgid "No warnings" +#~ msgstr "Advarsel" + +#~ msgid "Template Settings" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "Datoformat" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "Velg et element for å redigere egenskapene" + +#~ msgid "PDF Preview" +#~ msgstr "PDF forhåndsvisning" + +#~ msgid "Page Size" +#~ msgstr "" + +#~ msgid "Refresh Preview" +#~ msgstr "" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "" + +#~ msgid "Close Preview" +#~ msgstr "" + +#~ msgid "Zoom Level" +#~ msgstr "" + +#~ msgid "Reset Zoom" +#~ msgstr "" + +#~ msgid "Fit to Width" +#~ msgstr "" + +#~ msgid "Fit Width" +#~ msgstr "" + +#~ msgid "Fit to Height" +#~ msgstr "" + +#~ msgid "Fit Height" +#~ msgstr "" + +#~ msgid "Actual Size" +#~ msgstr "" + +#~ msgid "Generating preview..." +#~ msgstr "" + +#~ msgid "Preview Error" +#~ msgstr "" + +#~ msgid "Retry" +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "Generert kode" + +#~ msgid "Change Image" +#~ msgstr "" + +#~ msgid "Upload Image" +#~ msgstr "" + +#~ msgid "Remove Image" +#~ msgstr "" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "" + +#~ msgid "Uploading..." +#~ msgstr "" + +#~ msgid "Error: Image update function not found" +#~ msgstr "" + +#~ msgid "Failed to upload image" +#~ msgstr "" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "Vil du slette alle elementene?" + +#~ msgid "Clear" +#~ msgstr "Klar" + +#~ msgid "Exit Fullscreen" +#~ msgstr "" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "Tilbakestille til standard?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "Tilbakestill PDF-oppsett" + +#~ msgid "Error importing template" +#~ msgstr "" + +#~ msgid "PDF Quote Designer" +#~ msgstr "PDF-sitatdesigner" + +#~ msgid "Visual Quote Designer" +#~ msgstr "Visual Quote Designer" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "Dra og slipp elementer for å designe tilbudsoppsettet ditt" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "Quote Items Table:" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" + +#~ msgid "Quote Data" +#~ msgstr "Sitat data" + +#~ msgid "Quote Number" +#~ msgstr "Sitat nummer" + +#~ msgid "Quote Date" +#~ msgstr "Sitat dato" + +#~ msgid "Quote Items Table" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "Quote Fields" +#~ msgstr "Sitatfelt" + +#~ msgid "Quote number" +#~ msgstr "Sitat nummer" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Sitatstatus (utkast/sendt/betalt/forfalt)" + +#~ msgid "Quote notes" +#~ msgstr "Sitat notater" + +#~ msgid "Quote status" +#~ msgstr "Sitatstatus" + +#~ msgid "Quote accepted date" +#~ msgstr "Sitat akseptert dato" + +#~ msgid "Quote creation date" +#~ msgstr "Dato for opprettelse av tilbud" + +#~ msgid "Quote last update date" +#~ msgstr "Sitat siste oppdateringsdato" + +#~ msgid "Quote Items Loop" +#~ msgstr "Sitat elementer Loop" + +#~ msgid "Loop through invoice items" +#~ msgstr "Gå gjennom fakturaelementer" + +#~ msgid "Align Left" +#~ msgstr "Venstrejuster" + +#~ msgid "Center Horizontally" +#~ msgstr "Sentrer horisontalt" + +#~ msgid "Align Right" +#~ msgstr "Høyrejuster" + +#~ msgid "Align Top" +#~ msgstr "Juster toppen" + +#~ msgid "Center Vertically" +#~ msgstr "Sentrer vertikalt" + +#~ msgid "Align Bottom" +#~ msgstr "Juster bunnen" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "" + +#~ msgid "Email Mappings" +#~ msgstr "" + +#~ msgid "Add Mapping" +#~ msgstr "" + +#~ msgid "Salesman Initial" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "E-postadresse" + +#~ msgid "Pattern/Domain" +#~ msgstr "" + +#~ msgid "Add Email Mapping" +#~ msgstr "" + +#~ msgid "1-20 letters only" +#~ msgstr "" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" + +#~ msgid "Direct Email Address" +#~ msgstr "" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" + +#~ msgid "Edit Email Mapping" +#~ msgstr "" + +#~ msgid "Error saving mapping" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" + +#~ msgid "Error deleting mapping" +#~ msgstr "" + +#~ msgid "Time Entry Requirements" +#~ msgstr "Tidsregistreringsmaler" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" + +#~ msgid "Require description when logging time" +#~ msgstr "" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" + +#~ msgid "Support visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "Nøkkel" + +#~ msgid "— key sent by email." +#~ msgstr "Send e-post" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "Nøkkel" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "Kode, navn, e-post" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "Firma merkevarebygging" + +#~ msgid "Invoice Defaults" +#~ msgstr "Fakturastandarder" + +#~ msgid "Backup Settings" +#~ msgstr "Innstillinger for sikkerhetskopiering" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "Aktivert" + +#~ msgid "Host" +#~ msgstr "Tapt" + +#~ msgid "SSL" +#~ msgstr "Bruk SSL" + +#~ msgid "TLS" +#~ msgstr "Bruk TLS" + +#~ msgid "on" +#~ msgstr "på" + +#~ msgid "off" +#~ msgstr "av" + +#~ msgid "User DN" +#~ msgstr "Brukermeny" + +#~ msgid "User login attribute" +#~ msgstr "Raskere lastetider" + +#~ msgid "Test LDAP Connection" +#~ msgstr "Vilkår og betingelser" + +#~ msgid "Export Settings" +#~ msgstr "Eksportinnstillinger" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "Innstilling" + +#~ msgid "Transfer" +#~ msgstr "Overføre" + +#~ msgid "Sale" +#~ msgstr "Salg" + +#~ msgid "Rent" +#~ msgstr "Utleie" + +#~ msgid "Purchase" +#~ msgstr "Kjøpe" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "Tilgjengelig" + +#~ msgid "Use environment default" +#~ msgstr "Fakturastandarder" + +#~ msgid "currently" +#~ msgstr "Valuta" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "Bilde-URL" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "Kode" + +#~ msgid "Hosted API key" +#~ msgstr "Opprett API-token" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "La feltet stå tomt for å beholde gjeldende passord" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "Tidsavbrudd (sekunder)" + +#~ msgid "Context limit" +#~ msgstr "Innholdstype" + +#~ msgid "System prompt" +#~ msgstr "Systemrolle" + +#~ msgid "Test AI connection" +#~ msgstr "Vilkår og betingelser" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Personvern og analyse" + +#~ msgid "Save Settings" +#~ msgstr "Lagre innstillinger" + +#~ msgid "Upload New Logo" +#~ msgstr "Last opp ny logo" + +#~ msgid "Logo Preview" +#~ msgstr "Forhåndsvisning av logo" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Er du sikker på at du vil fjerne firmalogoen?" + +#~ msgid "Remove Logo" +#~ msgstr "Fjern logo" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "Be om godkjenning" + +#~ msgid "Testing connection..." +#~ msgstr "Test konfigurasjon" + +#~ msgid "Connection failed." +#~ msgstr "Operasjonen mislyktes" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "Operasjonen mislyktes" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Dashboard for telemetri og analyse" + +#~ msgid "Admin → Settings" +#~ msgstr "Admin → Innstillinger" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "La feltet stå tomt for å beholde gjeldende passord" + +#~ msgid "Client Portal Access" +#~ msgstr "Klientportaltilgang" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "Tildelt til" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "Administratortilgang" + +#~ msgid "Migrate to new role system" +#~ msgstr "Migrere til nytt rollesystem" + +#~ msgid "Migrate" +#~ msgstr "Migrer" + +#~ msgid "Roles" +#~ msgstr "Roller" + +#~ msgid "No users found." +#~ msgstr "Ingen brukere funnet." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "Kan ikke slette brukeren «{name}» fordi" +#~ " de har {count} tidsoppføringer. Brukere" +#~ " med eksisterende tidsregistreringer kan " +#~ "ikke slettes." + +#~ msgid "Cannot Delete User" +#~ msgstr "Kan ikke slette bruker" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette brukeren \"{name}\"? Denne handlingen" +#~ " kan ikke angres." + +#~ msgid "Delete User" +#~ msgstr "Slett bruker" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "Merkelapp" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "Valgfri" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "Angi som standard mal" + +#~ msgid "HTML Template" +#~ msgstr "HTML-mal" + +#~ msgid "Custom Message" +#~ msgstr "Egendefinert melding" + +#~ msgid "More Variables" +#~ msgstr "Flere variabler" + +#~ msgid "Create Template" +#~ msgstr "Lag mal" + +#~ msgid "Available Variables" +#~ msgstr "Tilgjengelige variabler" + +#~ msgid "Invoice Variables" +#~ msgstr "Fakturavariabler" + +#~ msgid "Other Variables" +#~ msgstr "Andre variabler" + +#~ msgid "Send test email" +#~ msgstr "Send test-e-post" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "Mottakers e-post" + +#~ msgid "Invoice ID" +#~ msgstr "Fakturert" + +#~ msgid "Update Template" +#~ msgstr "Oppdater mal" + +#~ msgid "Failed to send test email." +#~ msgstr "Send test-e-post" + +#~ msgid "No email templates found." +#~ msgstr "Finner ingen e-postmaler." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "Lag din første e-postmal for å tilpasse e-postfakturaer." + +#~ msgid "Create Email Template" +#~ msgstr "Lag e-postmal" + +#~ msgid "Delete Email Template" +#~ msgstr "Slett e-postmal" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "Er du sikker på at du vil slette" + +#~ msgid "This action cannot be undone." +#~ msgstr "Denne handlingen kan ikke angres." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "Malinformasjon" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "Ikon" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "Navn" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "Systemtillatelser" + +#~ msgid "All available permissions in the system" +#~ msgstr "Alle tilgjengelige tillatelser i systemet" + +#~ msgid "Back to Roles" +#~ msgstr "Tilbake til Roller" + +#~ msgid "permissions" +#~ msgstr "tillatelser" + +#~ msgid "No description available" +#~ msgstr "Ingen beskrivelse tilgjengelig" + +#~ msgid "About Permissions" +#~ msgstr "Om tillatelser" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Tillatelser definerer hvilke handlinger " +#~ "brukere kan utføre i systemet. Disse " +#~ "tillatelsene tildeles roller, og roller " +#~ "tildeles brukere. Dette gir et " +#~ "fleksibelt og detaljert tilgangskontrollsystem." + +#~ msgid "Edit Role" +#~ msgstr "Rediger rolle" + +#~ msgid "Create New Role" +#~ msgstr "Opprett ny rolle" + +#~ msgid "Role Name" +#~ msgstr "Rollenavn" + +#~ msgid "A unique name for this role" +#~ msgstr "Et unikt navn for denne rollen" + +#~ msgid "Optional description of this role" +#~ msgstr "Valgfri beskrivelse av denne rollen" + +#~ msgid "Permissions" +#~ msgstr "Tillatelser" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Velg tillatelsene denne rollen skal ha:" + +#~ msgid "Toggle All" +#~ msgstr "Slå på alle" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "Oppdater rolle" + +#~ msgid "Create Role" +#~ msgstr "Opprett rolle" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Administrer roller og deres tillatelser" + +#~ msgid "View Permissions" +#~ msgstr "Se tillatelser" + +#~ msgid "Total Roles" +#~ msgstr "Totale roller" + +#~ msgid "System Roles" +#~ msgstr "Systemroller" + +#~ msgid "Custom Roles" +#~ msgstr "Egendefinerte roller" + +#~ msgid "Assigned Users" +#~ msgstr "Tilordnede brukere" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Default role" +#~ msgstr "Standardrolle" + +#~ msgid "user" +#~ msgstr "bruker" + +#~ msgid "No users" +#~ msgstr "Ingen brukere" + +#~ msgid "Custom" +#~ msgstr "Skikk" + +#~ msgid "View" +#~ msgstr "Utsikt" + +#~ msgid "Permissions for" +#~ msgstr "Tillatelser for" + +#~ msgid "No permissions assigned." +#~ msgstr "Ingen tillatelser tildelt." + +#~ msgid "No roles found." +#~ msgstr "Ingen roller funnet." + +#~ msgid "About Roles & Permissions" +#~ msgstr "Om roller og tillatelser" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "Roller er samlinger av tillatelser som" +#~ " kan tildeles brukere. Systemroller er " +#~ "forhåndsdefinert og kan ikke slettes " +#~ "eller gis nytt navn, men tilpassede " +#~ "roller kan opprettes for dine spesifikke" +#~ " behov." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "Er du sikker på at du vil slette rollen" + +#~ msgid "Delete Role" +#~ msgstr "Slett rolle" + +#~ msgid "No description" +#~ msgstr "Ingen beskrivelse" + +#~ msgid "Role Information" +#~ msgstr "Rolleinformasjon" + +#~ msgid "System Role" +#~ msgstr "Systemrolle" + +#~ msgid "Custom Role" +#~ msgstr "Egendefinert rolle" + +#~ msgid "Total Permissions" +#~ msgstr "Totale tillatelser" + +#~ msgid "Created" +#~ msgstr "Opprettet" + +#~ msgid "Users with this Role" +#~ msgstr "Brukere med denne rollen" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Ingen brukere er tildelt denne rollen ennå." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "Denne rollen har ingen tillatelser tildelt." + +#~ msgid "Back to User" +#~ msgstr "Tilbake til Bruker" + +#~ msgid "Manage Roles for" +#~ msgstr "Administrer roller for" + +#~ msgid "Assign Roles" +#~ msgstr "Tildel roller" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Velg rollene denne brukeren skal ha. " +#~ "Brukere arver alle tillatelser fra sine" +#~ " tildelte roller." + +#~ msgid "Update Roles" +#~ msgstr "Oppdater roller" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Gjeldende effektive tillatelser" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "Dette er alle tillatelsene brukeren har gjennom rollene sine:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "Ingen tillatelser (tilordne roller for å gi tillatelser)" + +#~ msgid "Create Webhook" +#~ msgstr "Lag Webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Rediger Webhook" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Konfigurer webhook for integrasjoner" + +#~ msgid "Webhook URL" +#~ msgstr "Webhook URL" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "Nettadressen som webhook-hendelser vil bli sendt til" + +#~ msgid "Events" +#~ msgstr "Hendelser" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Velg hvilke hendelser som skal utløse denne webhooken" + +#~ msgid "HTTP Method" +#~ msgstr "HTTP-metode" + +#~ msgid "Content Type" +#~ msgstr "Innholdstype" + +#~ msgid "Max Retries" +#~ msgstr "Max prøver på nytt" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Forsinkelse på nytt (sekunder)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Tidsavbrudd (sekunder)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Regenerer hemmelighet" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "" +#~ "Advarsel: Regenerering av hemmeligheten vil" +#~ " ugyldiggjøre den gjeldende hemmeligheten" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Administrer webhook-integrasjoner" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "Statistics" +#~ msgstr "Statistikk" + +#~ msgid "Total" +#~ msgstr "Total" + +#~ msgid "No webhooks configured" +#~ msgstr "Ingen webhooks er konfigurert" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Lag din første webhook" + +#~ msgid "Webhook details" +#~ msgstr "Webhook detaljer" + +#~ msgid "Test" +#~ msgstr "Test" + +#~ msgid "Secret" +#~ msgstr "Hemmelig" + +#~ msgid "(truncated)" +#~ msgstr "(avkortet)" + +#~ msgid "Total Deliveries" +#~ msgstr "Totale leveranser" + +#~ msgid "Successful" +#~ msgstr "Vellykket" + +#~ msgid "Last Delivery" +#~ msgstr "Siste levering" + +#~ msgid "Recent Deliveries" +#~ msgstr "Nylige leveranser" + +#~ msgid "Event" +#~ msgstr "Hendelse" + +#~ msgid "Attempt" +#~ msgstr "Forsøk" + +#~ msgid "Response" +#~ msgstr "Svar" + +#~ msgid "Time" +#~ msgstr "Tid" + +#~ msgid "Retrying" +#~ msgstr "Prøver på nytt" + +#~ msgid "No deliveries yet" +#~ msgstr "Ingen leveranser ennå" + +#~ msgid "Send a test webhook event?" +#~ msgstr "Sende et test webhook-arrangement?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "Test webhook sendt!" + +#~ msgid "Error:" +#~ msgstr "Feil:" + +#~ msgid "Unknown error" +#~ msgstr "Ukjent feil" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Feil ved sending av testwebhook:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Analytics Dashboard" + +#~ msgid "Last 7 days" +#~ msgstr "Siste 7 dager" + +#~ msgid "Last 30 days" +#~ msgstr "Siste 30 dager" + +#~ msgid "Last 90 days" +#~ msgstr "Siste 90 dager" + +#~ msgid "Last year" +#~ msgstr "I fjor" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Eksporter som JSON" + +#~ msgid "Export Charts" +#~ msgstr "Eksporter CSV" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Nøkkelberegninger og innsikt om tidsregistreringen din" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Gjennomsnittlig daglige timer" + +#~ msgid "Regular" +#~ msgstr "Retur" + +#~ msgid "Overtime" +#~ msgstr "Tid" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Trend for daglige timer" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Fakturerbar vs Ikke-fakturerbar" + +#~ msgid "Weekly Trends" +#~ msgstr "Ukentlige trender" + +#~ msgid "Hours Forecast" +#~ msgstr "timer før" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Betalinger over tid" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Timer etter tid på dagen" + +#~ msgid "Project Efficiency" +#~ msgstr "Prosjekteffektivitet" + +#~ msgid "User Performance" +#~ msgstr "Brukerytelse" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "Kunne ikke laste inn diagrammer. Vennligst prøv igjen." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "Kunne ikke oppdatere diagrammer. Vennligst prøv igjen." + +#~ msgid "Hour of Day" +#~ msgstr "Time på dagen" + +#~ msgid "Revenue" +#~ msgstr "Inntekter" + +#~ msgid "Forecast" +#~ msgstr "Tilbakestill" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "Eksport" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Nøkkelberegninger og praktisk innsikt" + +#~ msgid "vs previous period" +#~ msgstr "vs forrige periode" + +#~ msgid "of total" +#~ msgstr "av totalt" + +#~ msgid "Potential Revenue" +#~ msgstr "Potensielle inntekter" + +#~ msgid "Avg rate:" +#~ msgstr "Gj.sn. rate:" + +#~ msgid "Trend" +#~ msgstr "Trend" + +#~ msgid "active projects" +#~ msgstr "aktive prosjekter" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Innsikt og anbefalinger" + +#~ msgid "Cumulative" +#~ msgstr "Kumulativ" + +#~ msgid "Billable Distribution" +#~ msgstr "Fakturerbar distribusjon" + +#~ msgid "Task Status Overview" +#~ msgstr "Oversikt over oppgavestatus" + +#~ msgid "Tasks Completed" +#~ msgstr "Oppgaver fullført" + +#~ msgid "In Progress" +#~ msgstr "Pågår" + +#~ msgid "To Do" +#~ msgstr "Å gjøre" + +#~ msgid "Revenue by Project" +#~ msgstr "Inntekter etter prosjekt" + +#~ msgid "Payments Over Time" +#~ msgstr "Betalinger over tid" + +#~ msgid "Payment Methods" +#~ msgstr "Betalingsmetoder" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Inntekt vs betalinger" + +#~ msgid "Collection Rate" +#~ msgstr "Innsamlingssats" + +#~ msgid "Project Completion Rate" +#~ msgstr "Prosjektgjennomføringsgrad" + +#~ msgid "Billable" +#~ msgstr "Fakturerbar" + +#~ msgid "Non-Billable" +#~ msgstr "Ikke-fakturerbar" + +#~ msgid "Completed" +#~ msgstr "Fullført" + +#~ msgid "Cancelled" +#~ msgstr "Kansellert" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Fullføringsrate (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Oversikt over mobilinnsikt" + +#~ msgid "Daily Avg" +#~ msgstr "Daglig gj.sn" + +#~ msgid "Daily Hours" +#~ msgstr "Daglige timer" + +#~ msgid "Top Projects" +#~ msgstr "Topp prosjekter" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "Tidsregistrering" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "timer" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "Vedta" + +#~ msgid "Reject" +#~ msgstr "Avvis" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "Godkjent av" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "Legg inn kommentar" + +#~ msgid "Approval comment" +#~ msgstr "Legg inn kommentar" + +#~ msgid "Rejection reason" +#~ msgstr "Årsak til avvisning" + +#~ msgid "Track who changed what and when" +#~ msgstr "Spor hvem som endret hva og når" + +#~ msgid "Filters" +#~ msgstr "Filtre" + +#~ msgid "Entity Type" +#~ msgstr "Enhetstype" + +#~ msgid "All Types" +#~ msgstr "Alle typer" + +#~ msgid "Entity ID" +#~ msgstr "Enhets-ID" + +#~ msgid "All Users" +#~ msgstr "Alle brukere" + +#~ msgid "Action" +#~ msgstr "Handling" + +#~ msgid "All Actions" +#~ msgstr "Alle handlinger" + +#~ msgid "Updated" +#~ msgstr "Oppdatert" + +#~ msgid "Deleted" +#~ msgstr "Slettet" + +#~ msgid "Time Range" +#~ msgstr "Tidsområde" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Timestamp" +#~ msgstr "Tidsstempel" + +#~ msgid "Entity" +#~ msgstr "Entitet" + +#~ msgid "Field" +#~ msgstr "Felt" + +#~ msgid "Change" +#~ msgstr "Endre" + +#~ msgid "Reason" +#~ msgstr "Grunn" + +#~ msgid "Change Information" +#~ msgstr "Endre informasjon" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "Be om informasjon" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "Sikkerhet" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (bedriftsautentisering)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "Passordet må være minst 8 tegn langt" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "Portalpassord" + +#~ msgid "Reset your password" +#~ msgstr "Angi passordet ditt" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "Ingen brukernavn eller e-post" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "Send test-e-post" + +#~ msgid "Back to sign in" +#~ msgstr "Tilbake til Admin" + +#~ msgid "Login" +#~ msgstr "Logg inn" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Spor tid. Hold deg organisert." + +#~ msgid "Sign in to your account" +#~ msgstr "Logg på kontoen din" + +#~ msgid "Demo credentials" +#~ msgstr "Varedetaljer" + +#~ msgid "Forgot your password?" +#~ msgstr "Angi passordet ditt" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "Autentiseringsmetode" + +#~ msgid "Sign in" +#~ msgstr "Logg på" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "Tips: Skriv inn et nytt brukernavn for å opprette kontoen din." + +#~ msgid "Or continue with" +#~ msgstr "Eller fortsett med" + +#~ msgid "Single Sign-On" +#~ msgstr "Enkel pålogging" + +#~ msgid "Edit Profile" +#~ msgstr "Rediger profil" + +#~ msgid "Member Since" +#~ msgstr "Medlem siden" + +#~ msgid "Reset password" +#~ msgstr "Angi passord" + +#~ msgid "Choose a new password" +#~ msgstr "Angi passord" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Angi et passord for kundeportalkontoen din" + +#~ msgid "New password" +#~ msgstr "Angi passord" + +#~ msgid "At least 8 characters" +#~ msgstr "Passordet må være minst 8 tegn langt" + +#~ msgid "Confirm password" +#~ msgstr "Bekreft passord" + +#~ msgid "Repeat your new password" +#~ msgstr "Angi passordet ditt" + +#~ msgid "Update password" +#~ msgstr "Angi passord" + +#~ msgid "Enter authentication code" +#~ msgstr "Autentiseringsmetode" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "Kode" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "Kundeportaltilgang er ikke aktivert for kontoen din." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "Funksjonshemmet" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Generert kode" + +#~ msgid "Enable 2FA" +#~ msgstr "Aktivert" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Budsjettvarsler og prognoser" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "Overvåke prosjektbudsjetter og prognosefullføring" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Ubekreftede varsler" + +#~ msgid "Critical Alerts" +#~ msgstr "Kritiske varsler" + +#~ msgid "Projects with Budgets" +#~ msgstr "Prosjekter med budsjetter" + +#~ msgid "Warning Alerts" +#~ msgstr "Advarselsvarsler" + +#~ msgid "Active Alerts" +#~ msgstr "Aktive varsler" + +#~ msgid "Acknowledge" +#~ msgstr "Bekrefte" + +#~ msgid "Project Budget Status" +#~ msgstr "Prosjektbudsjettstatus" + +#~ msgid "Budget" +#~ msgstr "Budsjett" + +#~ msgid "Consumed" +#~ msgstr "Forbrukt" + +#~ msgid "Remaining" +#~ msgstr "Gjenværende" + +#~ msgid "Progress" +#~ msgstr "Framgang" + +#~ msgid "over" +#~ msgstr "over" + +#~ msgid "Over Budget" +#~ msgstr "Over budsjett" + +#~ msgid "Critical" +#~ msgstr "Kritisk" + +#~ msgid "Healthy" +#~ msgstr "Sunn" + +#~ msgid "No projects with budgets found" +#~ msgstr "Fant ingen prosjekter med budsjetter" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Varsling er godkjent" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "Kunne ikke bekrefte varselet" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Budsjettanalyse og prognoser" + +#~ msgid "Back to Dashboard" +#~ msgstr "Tilbake til Dashboard" + +#~ msgid "View Project" +#~ msgstr "Se prosjekt" + +#~ msgid "Total Budget" +#~ msgstr "Totalt budsjett" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Forbrenningshastighetsanalyse" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Daglig brennhastighet" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Ukentlig brennhastighet" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Månedlig brennhastighet" + +#~ msgid "Period Total" +#~ msgstr "Periode totalt" + +#~ msgid "Based on last" +#~ msgstr "Basert på sist" + +#~ msgid "days" +#~ msgstr "dager" + +#~ msgid "No burn rate data available" +#~ msgstr "Ingen brennhastighetsdata tilgjengelig" + +#~ msgid "Completion Estimate" +#~ msgstr "Fullføringsestimat" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Estimert fullføringsdato" + +#~ msgid "days remaining" +#~ msgstr "dager igjen" + +#~ msgid "Confidence Level" +#~ msgstr "Konfidensnivå" + +#~ msgid "No completion estimate available" +#~ msgstr "Ingen ferdigstillelsesestimat tilgjengelig" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Analyse av kostnadstrend" + +#~ msgid "Average" +#~ msgstr "Gjennomsnittlig" + +#~ msgid "Resource Allocation" +#~ msgstr "Ressursfordeling" + +#~ msgid "Total Cost" +#~ msgstr "Total kostnad" + +#~ msgid "Hourly Rate" +#~ msgstr "Timepris" + +#~ msgid "Team Member" +#~ msgstr "Teammedlem" + +#~ msgid "Cost" +#~ msgstr "Koste" + +#~ msgid "Hours %" +#~ msgstr "Timer %" + +#~ msgid "Cost %" +#~ msgstr "Kostnad %" + +#~ msgid "Entries" +#~ msgstr "Oppføringer" + +#~ msgid "Date & Time" +#~ msgstr "Dato og tid" + +#~ msgid "Location" +#~ msgstr "Sted" + +#~ msgid "Reminder" +#~ msgstr "Påminnelse" + +#~ msgid "minutes before" +#~ msgstr "minutter før" + +#~ msgid "hours before" +#~ msgstr "timer før" + +#~ msgid "days before" +#~ msgstr "dager før" + +#~ msgid "Recurring" +#~ msgstr "Tilbakevendende" + +#~ msgid "Until" +#~ msgstr "Til" + +#~ msgid "Last Updated" +#~ msgstr "Sist oppdatert" + +#~ msgid "Back to Calendar" +#~ msgstr "Tilbake til Kalender" + +#~ msgid "Delete Event" +#~ msgstr "Slett hendelse" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette denne hendelsen? Denne handlingen " +#~ "kan ikke angres." + +#~ msgid "Edit Event" +#~ msgstr "Rediger hendelse" + +#~ msgid "New Event" +#~ msgstr "Ny begivenhet" + +#~ msgid "Title" +#~ msgstr "Tittel" + +#~ msgid "Start Date" +#~ msgstr "Startdato" + +#~ msgid "Start Time" +#~ msgstr "Starttid" + +#~ msgid "End Date" +#~ msgstr "Sluttdato" + +#~ msgid "End Time" +#~ msgstr "Sluttid" + +#~ msgid "All Day Event" +#~ msgstr "Heldagsarrangement" + +#~ msgid "Event Type" +#~ msgstr "Hendelsestype" + +#~ msgid "Meeting" +#~ msgstr "Møte" + +#~ msgid "Appointment" +#~ msgstr "Ansettelse" + +#~ msgid "Deadline" +#~ msgstr "Frist" + +#~ msgid "-- None --" +#~ msgstr "-- Ingen --" + +#~ msgid "No reminder" +#~ msgstr "Ingen påminnelse" + +#~ msgid "5 minutes before" +#~ msgstr "5 minutter før" + +#~ msgid "15 minutes before" +#~ msgstr "15 minutter før" + +#~ msgid "30 minutes before" +#~ msgstr "30 minutter før" + +#~ msgid "1 hour before" +#~ msgstr "1 time før" + +#~ msgid "1 day before" +#~ msgstr "1 dag før" + +#~ msgid "Color" +#~ msgstr "Farge" + +#~ msgid "Choose a color for this event" +#~ msgstr "Velg en farge for dette arrangementet" + +#~ msgid "Private Event" +#~ msgstr "Privat arrangement" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Private arrangementer er kun synlige for deg" + +#~ msgid "Recurring Event" +#~ msgstr "Gjentakende hendelse" + +#~ msgid "This is a recurring event" +#~ msgstr "Dette er en gjenganger" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Gjentakelsesmønster" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Bruk RRULE-format (f.eks. FREKVENS=ukentlig; BYDAY=MO,VI,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Sluttdato for gjentakelse" + +#~ msgid "Update Event" +#~ msgstr "Oppdater hendelse" + +#~ msgid "Create Event" +#~ msgstr "Opprett hendelse" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Se og administrer hendelser, oppgaver og tidsoppføringer" + +#~ msgid "Day" +#~ msgstr "Dag" + +#~ msgid "Week" +#~ msgstr "Uke" + +#~ msgid "Month" +#~ msgstr "Måned" + +#~ msgid "Today" +#~ msgstr "I dag" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "Laster kalender..." + +#~ msgid "Event Details" +#~ msgstr "Begivenhetsdetaljer" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "Rediger klientnotat" + +#~ msgid "Back to Client" +#~ msgstr "Tilbake til klienten" + +#~ msgid "Client:" +#~ msgstr "Klient:" + +#~ msgid "Created on" +#~ msgstr "Opprettet den" + +#~ msgid "Last edited on" +#~ msgstr "Sist redigert den" + +#~ msgid "Note Content" +#~ msgstr "Merk innhold" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Intern notat som bare er synlig for teamet ditt." + +#~ msgid "Mark as important" +#~ msgstr "Merk som viktig" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "Klientportal" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "Se detaljer" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "I påvente av" + +#~ msgid "Approved" +#~ msgstr "Godkjent" + +#~ msgid "Rejected" +#~ msgstr "Avvist" + +#~ msgid "All" +#~ msgstr "Alle" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "Se detaljer" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "Godkjenningsstatus" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Godkjenning forespurt" + +#~ msgid "An approval was updated." +#~ msgstr "Ingen prosjekter ble oppdatert" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "Velkommen, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "Tilpass snarveier" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "Statistikk" + +#~ msgid "Pending actions" +#~ msgstr "Administrasjonsseksjoner" + +#~ msgid "Recent invoices" +#~ msgstr "Nylige fakturaer" + +#~ msgid "Recent time entries" +#~ msgstr "Nylige tidsinnlegg" + +#~ msgid "Select at least one widget." +#~ msgstr "Velg en klient..." + +#~ msgid "Failed to save." +#~ msgstr "Kunne ikke stoppe tidtakeren" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "Gå til Dashboard" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "Gå tilbake" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "Fakturadetaljer" + +#~ msgid "Issue Date" +#~ msgstr "Utstedelsesdato" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "Denne fakturaen er %(days)d dager forsinket." + +#~ msgid "Invoice Items" +#~ msgstr "Fakturavarer" + +#~ msgid "Quantity" +#~ msgstr "Mengde" + +#~ msgid "Unit Price" +#~ msgstr "Enhetspris" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "Tilbake til Fakturaer" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "Fakturaer for %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "Ubetalt" + +#~ msgid "Overdue" +#~ msgstr "Forsinket" + +#~ msgid "Amount" +#~ msgstr "Beløp" + +#~ msgid "days overdue" +#~ msgstr "dager forsinket" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "Prioritet" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "Tildelt til" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "Åpne" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "Kundeportalpålogging" + +#~ msgid "View your projects and invoices" +#~ msgstr "Se dine prosjekter og fakturaer" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Logg på kundeportalen" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "Skriv inn portallegitimasjonen din for å" +#~ " få tilgang til prosjektene og " +#~ "fakturaene dine" + +#~ msgid "portal_username" +#~ msgstr "portal_brukernavn" + +#~ msgid "Enter your password" +#~ msgstr "Skriv inn passordet ditt" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "Lav" + +#~ msgid "Medium" +#~ msgstr "Medium" + +#~ msgid "High" +#~ msgstr "Høy" + +#~ msgid "Urgent" +#~ msgstr "Som haster" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "Kommentarer" + +#~ msgid "Add Comment" +#~ msgstr "Legg til kommentar" + +#~ msgid "Your Comment" +#~ msgstr "Din kommentar" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "Legg inn kommentar" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "Tilbake til prosjekter" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "Prosjekter for %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "Sitatdetaljer" + +#~ msgid "Valid Until" +#~ msgstr "Gyldig til" + +#~ msgid "This quote has expired." +#~ msgstr "Dette sitatet er utløpt." + +#~ msgid "Quote Items" +#~ msgstr "Sitat elementer" + +#~ msgid "SKU" +#~ msgstr "SKU" + +#~ msgid "Terms & Conditions" +#~ msgstr "Vilkår og betingelser" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "Godta sitat" + +#~ msgid "Reject Quote" +#~ msgstr "Avvis sitat" + +#~ msgid "Back to Quotes" +#~ msgstr "Tilbake til sitater" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "Sitater for %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "Utløpt" + +#~ msgid "No quotes found." +#~ msgstr "Ingen sitater funnet." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "Prosjektkode" + +#~ msgid "Est. / Budget" +#~ msgstr "Over budsjett" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "Sammendrag" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "Totalt beløp" + +#~ msgid "No tasks yet." +#~ msgstr "Ingen oppgaver er valgt" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Ingen aktivitet de siste 30 dagene." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "Angi passord" + +#~ msgid "Set your password to get started" +#~ msgstr "Angi passordet ditt for å komme i gang" + +#~ msgid "Set Your Password" +#~ msgstr "Angi passordet ditt" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Angi et passord for kundeportalkontoen din" + +#~ msgid "Confirm Password" +#~ msgstr "Bekreft passord" + +#~ msgid "Confirm your password" +#~ msgstr "Bekreft passordet ditt" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "Tidsoppføringer for %(client_name)s prosjekter" + +#~ msgid "All Projects" +#~ msgstr "Alle prosjekter" + +#~ msgid "From Date" +#~ msgstr "Fra dato" + +#~ msgid "To Date" +#~ msgstr "Til dags dato" + +#~ msgid "Total entries" +#~ msgstr "Totalt antall oppføringer" + +#~ msgid "Total hours" +#~ msgstr "Totalt antall timer" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "Nylige fakturaer" + +#~ msgid "View All" +#~ msgstr "Vis alle" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "Totale fakturaer" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "Nylige tidsinnlegg" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "Eksporter til CSV" + +#~ msgid "Create Client" +#~ msgstr "Opprett klient" + +#~ msgid "Back to Clients" +#~ msgstr "Tilbake til klienter" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" +#~ "Legg til en ny klient for å " +#~ "administrere relaterte prosjekter og " +#~ "fakturering." + +#~ msgid "Enter client name" +#~ msgstr "Skriv inn klientnavn" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Standard timepris" + +#~ msgid "e.g. 75.00" +#~ msgstr "f.eks. 75,00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Denne satsen fylles automatisk når du" +#~ " oppretter prosjekter for denne klienten" + +#~ msgid "Supports Markdown" +#~ msgstr "Støtter Markdown" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Kort beskrivelse av oppdragsgiver eller prosjektomfang" + +#~ msgid "Contact Person" +#~ msgstr "Kontaktperson" + +#~ msgid "Primary contact name" +#~ msgstr "Navn på hovedkontakt" + +#~ msgid "contact@client.com" +#~ msgstr "contact@client.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Månedlige forhåndsbetalte timer" + +#~ msgid "e.g. 50" +#~ msgstr "f.eks. 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "La stå tomt hvis denne klienten ikke har noen forhåndsbetalt tildeling." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Forhåndsbetalt tilbakestillingsdag" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Dag i måneden da forhåndsbetalte timer tilbakestilles (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Klientadresse" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "Velg et klart, beskrivende navn for kundeorganisasjonen." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Angi standard timepris for denne " +#~ "klienten. Denne vil automatisk fylles ut" +#~ " når du oppretter nye prosjekter." + +#~ msgid "Contact Information" +#~ msgstr "Kontaktinformasjon" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "Legg til kontaktdetaljer for enkel kommunikasjon og journalføring." + +#~ msgid "Prepaid Hours" +#~ msgstr "Forhåndsbetalte timer" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Konfigurer månedlige inkluderte timer og " +#~ "tilbakestillingsdagen hvis denne klienten har" +#~ " en retainer eller forhåndsbetalt pakke." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "Gi kontekst om klientforholdet eller typiske prosjekttyper." + +#~ msgid "Edit Client" +#~ msgstr "Rediger klient" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Aktiver portaltilgang for denne klienten. " +#~ "Kunder kan logge på med sin egen" +#~ " legitimasjon for å se prosjekter, " +#~ "fakturaer og tidsregistreringer." + +#~ msgid "Enable Client Portal" +#~ msgstr "Aktiver klientportal" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "Portal brukernavn" + +#~ msgid "Unique username for portal login" +#~ msgstr "Unikt brukernavn for portalpålogging" + +#~ msgid "Portal Password" +#~ msgstr "Portalpassord" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "La det stå tomt for å beholde gjeldende passord" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "Angi et nytt passord eller la det stå tomt for å holde deg oppdatert" + +#~ msgid "Current portal username" +#~ msgstr "Gjeldende portalbrukernavn" + +#~ msgid "Update Client" +#~ msgstr "Oppdater klient" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Send e-post for passordoppsett" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Send en e-post til %(email)s med " +#~ "en lenke for å angi portalpassordet " +#~ "deres." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "E-postadresse kreves for å sende e-post" +#~ " med passordoppsett. Vennligst angi " +#~ "klientens e-postadresse ovenfor." + +#~ msgid "Client Statistics" +#~ msgstr "Kundestatistikk" + +#~ msgid "Est. Total Cost" +#~ msgstr "Est. Total kostnad" + +#~ msgid "Filter Clients" +#~ msgstr "Filtrer klienter" + +#~ msgid "Toggle Filters" +#~ msgstr "Slå på filtre" + +#~ msgid "Hide Filters" +#~ msgstr "Skjul filtre" + +#~ msgid "Show Filters" +#~ msgstr "Vis filtre" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "Ingen ufakturerte tidsoppføringer funnet for dette prosjektet." + +#~ msgid "No unbilled time" +#~ msgstr "Ufakturerte tidsoppføringer" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Fakturavarer" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "Vil du merke klienten som inaktiv?" + +#~ msgid "Change Client Status" +#~ msgstr "Endre klientstatus" + +#~ msgid "Mark Inactive" +#~ msgstr "Merk inaktiv" + +#~ msgid "Activate client?" +#~ msgstr "Aktivere klient?" + +#~ msgid "Activate Client" +#~ msgstr "Aktiver klient" + +#~ msgid "Delete Client" +#~ msgstr "Slett klient" + +#~ msgid "Client details and associated projects." +#~ msgstr "Totale og aktive prosjekter" + +#~ msgid "Manage" +#~ msgstr "Administrer" + +#~ msgid "Primary" +#~ msgstr "Primær" + +#~ msgid "more contact(s)" +#~ msgstr "flere kontakt(er)" + +#~ msgid "No contacts yet" +#~ msgstr "Ingen kontakter ennå" + +#~ msgid "Add Contact" +#~ msgstr "Legg til kontakt" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Eldre kontaktinformasjon" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "Planen inkluderer %(hours)s timer per " +#~ "syklus. Tilbakestilles på dag %(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "Nåværende syklusstart" + +#~ msgid "Remaining hours" +#~ msgstr "Gjenstående timer" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "Consumed this cycle" +#~ msgstr "Brukte denne syklusen" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "Klient synlig" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "Arkivert" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "Interne merknader" + +#~ msgid "Add Note" +#~ msgstr "Legg til merknad" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Legg til et internt notat om denne klienten..." + +#~ msgid "Save Note" +#~ msgstr "Lagre notat" + +#~ msgid "edited" +#~ msgstr "redigert" + +#~ msgid "Important" +#~ msgstr "Viktig" + +#~ msgid "Unmark" +#~ msgstr "Fjern merking" + +#~ msgid "Mark Important" +#~ msgstr "Merk som viktig" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Ingen notater ennå. Legg til et " +#~ "notat for å holde styr på viktig" +#~ " informasjon om denne klienten." + +#~ msgid "Estimated total" +#~ msgstr "Estimert verdi" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Opprett faktura" + +#~ msgid "Create invoice" +#~ msgstr "Opprett faktura" + +#~ msgid "Could not create invoice." +#~ msgstr "Opprett faktura" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "Er du sikker på at du vil slette dette notatet?" + +#~ msgid "Delete Note" +#~ msgstr "Slett notat" + +#~ msgid "Edited on" +#~ msgstr "Redigert på" + +#~ msgid "Reply" +#~ msgstr "Svar" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "Skriv svaret ditt..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Del dine tanker, oppdateringer eller spørsmål..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "Du kan bruke linjeskift til å formatere kommentaren din." + +#~ msgid "Add Image" +#~ msgstr "Legg til bilde" + +#~ msgid "No comments yet" +#~ msgstr "Ingen kommentarer ennå" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "Start samtalen ved å legge til den første kommentaren." + +#~ msgid "Add First Comment" +#~ msgstr "Legg til første kommentar" + +#~ msgid "Edit Comment" +#~ msgstr "Rediger kommentar" + +#~ msgid "Back" +#~ msgstr "Tilbake" + +#~ msgid "Editing comment on:" +#~ msgstr "Redigering av kommentar til:" + +#~ msgid "Originally posted on" +#~ msgstr "Opprinnelig lagt ut på" + +#~ msgid "Comment Content" +#~ msgstr "Kommentarinnhold" + +#~ msgid "All Activities" +#~ msgstr "Alle aktiviteter" + +#~ msgid "Time Templates" +#~ msgstr "Tidsmaler" + +#~ msgid "No recent activity" +#~ msgstr "Ingen nylig aktivitet" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "Aktivitet vises her mens du jobber" + +#~ msgid "Load More" +#~ msgstr "Last inn mer" + +#~ msgid "Failed to load activities" +#~ msgstr "Kunne ikke laste inn aktiviteter" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "Velg en klient..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "Ferdig" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "TimeTracker Hjelpesenter" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "Hjem" + +#~ msgid "Pagination" +#~ msgstr "Mine oppgaver paginering" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "Ringe" + +#~ msgid "Message" +#~ msgstr "Beskjed" + +#~ msgid "Direction" +#~ msgstr "Retning" + +#~ msgid "Outbound" +#~ msgstr "Utgående" + +#~ msgid "Inbound" +#~ msgstr "Innkommende" + +#~ msgid "Subject" +#~ msgstr "Tema" + +#~ msgid "Scheduled" +#~ msgstr "Planlagt" + +#~ msgid "Follow-up Date" +#~ msgstr "Oppfølgingsdato" + +#~ msgid "Content/Notes" +#~ msgstr "Innhold/notater" + +#~ msgid "Save Communication" +#~ msgstr "Lagre kommunikasjon" + +#~ msgid "First Name" +#~ msgstr "Fornavn" + +#~ msgid "Last Name" +#~ msgstr "Etternavn" + +#~ msgid "Mobile" +#~ msgstr "Mobil" + +#~ msgid "Department" +#~ msgstr "Avdeling" + +#~ msgid "Contact" +#~ msgstr "Kontakt" + +#~ msgid "Billing" +#~ msgstr "Fakturering" + +#~ msgid "Technical" +#~ msgstr "Teknisk" + +#~ msgid "Set as primary contact" +#~ msgstr "Angi som primærkontakt" + +#~ msgid "Tags" +#~ msgstr "Tagger" + +#~ msgid "Save Contact" +#~ msgstr "Lagre kontakt" + +#~ msgid "Set Primary" +#~ msgstr "Sett Primær" + +#~ msgid "No contacts found" +#~ msgstr "Ingen kontakter funnet" + +#~ msgid "Add First Contact" +#~ msgstr "Legg til første kontakt" + +#~ msgid "Primary Contact" +#~ msgstr "Primær kontakt" + +#~ msgid "Communication History" +#~ msgstr "Kommunikasjonshistorie" + +#~ msgid "Add Communication" +#~ msgstr "Legg til kommunikasjon" + +#~ msgid "No communications recorded" +#~ msgstr "Ingen kommunikasjon registrert" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "Aktiver" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "Navn på avtale" + +#~ msgid "Select Client" +#~ msgstr "Velg klient" + +#~ msgid "Select Contact" +#~ msgstr "Velg Kontakt" + +#~ msgid "Stage" +#~ msgstr "Scene" + +#~ msgid "Deal Value" +#~ msgstr "Deal verdi" + +#~ msgid "Win Probability" +#~ msgstr "Vinnsannsynlighet" + +#~ msgid "Expected Close Date" +#~ msgstr "Forventet lukkedato" + +#~ msgid "Related Quote" +#~ msgstr "Relatert sitat" + +#~ msgid "Select Quote" +#~ msgstr "Velg Sitat" + +#~ msgid "Save Deal" +#~ msgstr "Lagre avtale" + +#~ msgid "Won" +#~ msgstr "Vant" + +#~ msgid "Lost" +#~ msgstr "Tapt" + +#~ msgid "All Stages" +#~ msgstr "Alle stadier" + +#~ msgid "Value" +#~ msgstr "Verdi" + +#~ msgid "Probability" +#~ msgstr "Sannsynlighet" + +#~ msgid "Expected Close" +#~ msgstr "Forventet Lukk" + +#~ msgid "No deals found" +#~ msgstr "Ingen tilbud funnet" + +#~ msgid "Create First Deal" +#~ msgstr "Opprett første avtale" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "Relatert prosjekt" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "Målhistorie" + +#~ msgid "View full history" +#~ msgstr "Se alle detaljer" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "Du ble nevnt" + +#~ msgid "View Task & Reply" +#~ msgstr "Se oppgave og svar" + +#~ msgid "Invoice" +#~ msgstr "Faktura" + +#~ msgid "Invoice Overdue" +#~ msgstr "Forfalt faktura" + +#~ msgid "View Invoice" +#~ msgstr "Se faktura" + +#~ msgid "Quote" +#~ msgstr "Sitere" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Sitatgodkjenning avvist" + +#~ msgid "View Quote" +#~ msgstr "Se sitat" + +#~ msgid "Approval Requested" +#~ msgstr "Godkjenning forespurt" + +#~ msgid "Review Quote" +#~ msgstr "Gjennomgå sitat" + +#~ msgid "Quote Approved" +#~ msgstr "Sitat godkjent" + +#~ msgid "Quote Expired" +#~ msgstr "Sitat utløpt" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "Sitat utløper snart" + +#~ msgid "Quote Sent" +#~ msgstr "Sitat sendt" + +#~ msgid "Task Assignment" +#~ msgstr "Oppgaveoppdrag" + +#~ msgid "View Task" +#~ msgstr "Vis oppgave" + +#~ msgid "Test Details" +#~ msgstr "Testdetaljer" + +#~ msgid "Your Weekly Summary" +#~ msgstr "Ditt ukentlige sammendrag" + +#~ msgid "400 Bad Request" +#~ msgstr "400 Dårlig forespørsel" + +#~ msgid "Invalid Request" +#~ msgstr "Ugyldig forespørsel" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "Forespørselen du sendte er ugyldig eller" +#~ " inneholder feil. Dette kan skyldes:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Manglende eller ugyldige skjemadata" + +#~ msgid "Malformed request parameters" +#~ msgstr "Feilaktige forespørselsparametere" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "" +#~ "Du har ikke tillatelse til å få" +#~ " tilgang til denne ressursen. Dette " +#~ "kan skyldes:" + +#~ msgid "Insufficient privileges" +#~ msgstr "Utilstrekkelige privilegier" + +#~ msgid "Not logged in" +#~ msgstr "Ikke innlogget" + +#~ msgid "Resource access restrictions" +#~ msgstr "Ressurstilgangsbegrensninger" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "Noe gikk galt hos oss. Vennligst prøv igjen senere." + +#~ msgid "Try Again" +#~ msgstr "Prøv igjen" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Det oppsto en feil under behandlingen av forespørselen din." + +#~ msgid "Refresh Page" +#~ msgstr "Oppdater siden" + +#~ msgid "Go to Login" +#~ msgstr "Gå til Logg inn" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "f.eks. reiser, måltider, kontorrekvisita" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "f.eks. REISER, MÅLTID" + +#~ msgid "Brief description of this category..." +#~ msgstr "Kort beskrivelse av denne kategorien..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "f.eks. fa-fly, fa-redskaper" + +#~ msgid "e.g., 19.00" +#~ msgstr "f.eks. 19.00" + +#~ msgid "Category" +#~ msgstr "Kategori" + +#~ msgid "Basic Information" +#~ msgstr "Grunnleggende informasjon" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "f.eks. Fly til Berlin" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Ytterligere detaljer om utgiften..." + +#~ msgid "Select Category" +#~ msgstr "Kategori" + +#~ msgid "Amount Details" +#~ msgstr "Betalingsdetaljer" + +#~ msgid "Association" +#~ msgstr "Sted" + +#~ msgid "Payment Details" +#~ msgstr "Betalingsdetaljer" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "f.eks. Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "Tilleggsinformasjon" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Kvittering/Fakturanummer" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "f.eks. INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "f.eks. konferanse, kundemøte, haster" + +#~ msgid "Additional notes..." +#~ msgstr "Ytterligere merknader..." + +#~ msgid "Options" +#~ msgstr "Valgfri" + +#~ msgid "Filter Expenses" +#~ msgstr "Filtrer utgifter" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Slett valgte utgifter" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Endre status for utvalgte utgifter" + +#~ msgid "Associated With" +#~ msgstr "Tilknyttet" + +#~ msgid "Reject Expense" +#~ msgstr "Avvis utgift" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Forklar hvorfor denne utgiften blir avvist..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "Er du sikker på at du vil slette denne utgiften?" + +#~ msgid "Delete Expense" +#~ msgstr "Slett utgift" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "Importer/eksporter data" + +#~ msgid "Import/Export" +#~ msgstr "Import/eksport" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Importer data fra andre tidssporere " +#~ "eller eksporter dataene dine for " +#~ "GDPR-overholdelse og sikkerhetskopier" + +#~ msgid "Import Data" +#~ msgstr "Importer data" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Importer tidsoppføringer fra en CSV-fil" + +#~ msgid "Choose CSV File" +#~ msgstr "Velg CSV-fil" + +#~ msgid "Download Template" +#~ msgstr "Last ned mal" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Importer fra Toggl Track" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Importer tidsoppføringer fra Toggl Track" + +#~ msgid "Import from Toggl" +#~ msgstr "Importer fra Toggl" + +#~ msgid "Import from Harvest" +#~ msgstr "Import fra Harvest" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Importer tidsoppføringer fra Harvest" + +#~ msgid "Restore from Backup" +#~ msgstr "Gjenopprett fra sikkerhetskopi" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "Importhistorikk" + +#~ msgid "Export Data" +#~ msgstr "Eksporter data" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Full dataeksport (GDPR)" + +#~ msgid "Export all your personal data" +#~ msgstr "Eksporter alle dine personlige data" + +#~ msgid "Export as JSON" +#~ msgstr "Eksporter som JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "Eksporter som ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "Filtrert eksport" + +#~ msgid "Export specific data with filters" +#~ msgstr "Eksporter spesifikke data med filtre" + +#~ msgid "Export with Filters" +#~ msgstr "Eksporter med filtre" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "Lag en fullstendig sikkerhetskopi av databasen" + +#~ msgid "Export History" +#~ msgstr "Eksporter historikk" + +#~ msgid "API Token" +#~ msgstr "API-token" + +#~ msgid "Workspace ID" +#~ msgstr "Arbeidsområde-ID" + +#~ msgid "Import" +#~ msgstr "Import" + +#~ msgid "Account ID" +#~ msgstr "Konto-ID" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "Tidsintegrasjon" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "I fjor" + +#~ msgid "Last status" +#~ msgstr "Oppdater status" + +#~ msgid "Credentials" +#~ msgstr "Detaljer" + +#~ msgid "Last error" +#~ msgstr "I fjor" + +#~ msgid "Partial" +#~ msgstr "Delvis" + +#~ msgid "Needs refresh" +#~ msgstr "Forfriske" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "Opprett API-token" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "Opprett API-token" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "La stå tomt for å holde deg oppdatert" + +#~ msgid "Enter API secret" +#~ msgstr "Regenerer hemmelighet" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "Lagervare" + +#~ msgid "Select Item" +#~ msgstr "Velg element" + +#~ msgid "Warehouse" +#~ msgstr "Lager" + +#~ msgid "Select Warehouse" +#~ msgstr "Velg Lager" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Justeringsmengde" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Bruk positive verdier for å øke " +#~ "beholdningen, negative verdier for å " +#~ "redusere" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "f.eks. korrigering av fysisk telling, skade, gjenstander som er funnet" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Ytterligere detaljer om denne justeringen" + +#~ msgid "Record Adjustment" +#~ msgstr "Rekordjustering" + +#~ msgid "All Warehouses" +#~ msgstr "Alle varehus" + +#~ msgid "All Items" +#~ msgstr "Alle varer" + +#~ msgid "Date From" +#~ msgstr "Dato fra" + +#~ msgid "Date To" +#~ msgstr "Dato til" + +#~ msgid "Item" +#~ msgstr "Punkt" + +#~ msgid "No adjustments found." +#~ msgstr "Ingen justeringer funnet." + +#~ msgid "On Hand" +#~ msgstr "På Hand" + +#~ msgid "Reorder Point" +#~ msgstr "Ombestillingspunkt" + +#~ msgid "Shortfall" +#~ msgstr "Mangel" + +#~ msgid "Reorder Qty" +#~ msgstr "Ombestill antall" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "Ingen varsler om lavt lager. Alle varer er over bestillingspunktet." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "Bruk positive verdier for tillegg, negative for fjerninger" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "Bevegelsestype" + +#~ msgid "Return" +#~ msgstr "Retur" + +#~ msgid "Waste" +#~ msgstr "Sløseri" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "f.eks. fysisk tellingskorreksjon" + +#~ msgid "Record Movement" +#~ msgstr "Rekordbevegelse" + +#~ msgid "Reference Type" +#~ msgstr "Referansetype" + +#~ msgid "Manual" +#~ msgstr "Håndbok" + +#~ msgid "Unit Cost" +#~ msgstr "Enhetskostnad" + +#~ msgid "Reference" +#~ msgstr "Referanse" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "Ingen aksjebevegelser funnet." + +#~ msgid "Supplier" +#~ msgstr "Leverandør" + +#~ msgid "Select Supplier" +#~ msgstr "Velg Leverandør" + +#~ msgid "Order Date" +#~ msgstr "Bestillingsdato" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Forventet leveringsdato" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Notater synlig for leverandør" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Interne merknader (ikke synlig for leverandøren)" + +#~ msgid "Items" +#~ msgstr "Varer" + +#~ msgid "Add Item" +#~ msgstr "Legg til element" + +#~ msgid "Qty" +#~ msgstr "Antall" + +#~ msgid "Supplier SKU" +#~ msgstr "Leverandør SKU" + +#~ msgid "Create Purchase Order" +#~ msgstr "Opprett innkjøpsordre" + +#~ msgid "Draft" +#~ msgstr "Utkast" + +#~ msgid "Sent" +#~ msgstr "Sendt" + +#~ msgid "Confirmed" +#~ msgstr "Bekreftet" + +#~ msgid "Received" +#~ msgstr "Mottatt" + +#~ msgid "All Suppliers" +#~ msgstr "Alle leverandører" + +#~ msgid "PO Number" +#~ msgstr "PO-nummer" + +#~ msgid "Expected Delivery" +#~ msgstr "Forventet levering" + +#~ msgid "No purchase orders found." +#~ msgstr "Ingen innkjøpsordrer funnet." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "Er du sikker på at du vil kansellere denne innkjøpsordren?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "Er du sikker på at du vil slette denne innkjøpsordren?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Bestillingsdetaljer" + +#~ msgid "Received Date" +#~ msgstr "Mottatt dato" + +#~ msgid "Quantity Ordered" +#~ msgstr "Antall bestilt" + +#~ msgid "Quantity Received" +#~ msgstr "Mottatt mengde" + +#~ msgid "Line Total" +#~ msgstr "Linje totalt" + +#~ msgid "Shipping" +#~ msgstr "Frakt" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Motta innkjøpsordre" + +#~ msgid "Mark as Received" +#~ msgstr "Merk som mottatt" + +#~ msgid "No items in this purchase order." +#~ msgstr "Ingen varer i denne innkjøpsordren." + +#~ msgid "Total Items" +#~ msgstr "Totalt antall varer" + +#~ msgid "Total Warehouses" +#~ msgstr "Totale varehus" + +#~ msgid "Total Inventory Value" +#~ msgstr "Total beholdningsverdi" + +#~ msgid "Low Stock Items" +#~ msgstr "Lite lagervarer" + +#~ msgid "Available Reports" +#~ msgstr "Tilgjengelige rapporter" + +#~ msgid "Stock Valuation" +#~ msgstr "Aksjevurdering" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Se lagerverdi etter lager" + +#~ msgid "Movement History" +#~ msgstr "Bevegelseshistorie" + +#~ msgid "Detailed movement log" +#~ msgstr "Detaljert bevegelseslogg" + +#~ msgid "Turnover Analysis" +#~ msgstr "Omsetningsanalyse" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Omsetningshastigheter for varelager" + +#~ msgid "Low Stock Report" +#~ msgstr "Lav lagerrapport" + +#~ msgid "Items below reorder point" +#~ msgstr "Varer under bestillingspunktet" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "Fant %(count)s varer under bestillingspunktet." + +#~ msgid "Quantity On Hand" +#~ msgstr "Antall på hånden" + +#~ msgid "Reorder Quantity" +#~ msgstr "Bestill på nytt" + +#~ msgid "Create PO" +#~ msgstr "Opprett PO" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Alle lagernivåer er gode" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Ingen varer er for øyeblikket under bestillingspunktet." + +#~ msgid "No movements found." +#~ msgstr "Ingen bevegelser funnet." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "Omsetningshastighet angir hvor mange ganger" +#~ " varelager selges og erstattes i " +#~ "løpet av et år. Høyere priser " +#~ "indikerer varer som beveger seg raskere." + +#~ msgid "Total Sold" +#~ msgstr "Totalt solgt" + +#~ msgid "Avg Stock Level" +#~ msgstr "Gjennomsnittlig lagernivå" + +#~ msgid "Turnover Rate" +#~ msgstr "Omsetningshastighet" + +#~ msgid "Fast Moving" +#~ msgstr "Rask bevegelse" + +#~ msgid "Normal" +#~ msgstr "Normal" + +#~ msgid "Slow Moving" +#~ msgstr "Slow Moving" + +#~ msgid "Very Slow" +#~ msgstr "Veldig sakte" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "Fant ingen salgsdata for den valgte perioden." + +#~ msgid "Inventory Valuation" +#~ msgstr "Lagervurdering" + +#~ msgid "Total Value" +#~ msgstr "Total verdi" + +#~ msgid "No items found with cost information." +#~ msgstr "Ingen varer funnet med kostnadsinformasjon." + +#~ msgid "Reserved" +#~ msgstr "Reservert" + +#~ msgid "Fulfilled" +#~ msgstr "Oppfylt" + +#~ msgid "Reserved At" +#~ msgstr "Reservert kl" + +#~ msgid "Expires At" +#~ msgstr "Utløper kl" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "Vil du oppfylle denne reservasjonen?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "Kansellere denne reservasjonen?" + +#~ msgid "No reservations found." +#~ msgstr "Ingen reservasjoner funnet." + +#~ msgid "Unit" +#~ msgstr "Enhet" + +#~ msgid "Default Cost" +#~ msgstr "Standardkostnad" + +#~ msgid "Default Price" +#~ msgstr "Standardpris" + +#~ msgid "Image URL" +#~ msgstr "Bilde-URL" + +#~ msgid "Track Inventory" +#~ msgstr "Spor inventar" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "Administrer flere leverandører for denne varen med forskjellige priser." + +#~ msgid "MOQ" +#~ msgstr "MOQ" + +#~ msgid "Lead Time (days)" +#~ msgstr "Ledetid (dager)" + +#~ msgid "Preferred" +#~ msgstr "Foretrukket" + +#~ msgid "Add Supplier" +#~ msgstr "Legg til leverandør" + +#~ msgid "No movement history found for this item." +#~ msgstr "Fant ingen bevegelseshistorikk for denne varen." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU, navn, strekkode..." + +#~ msgid "Active Only" +#~ msgstr "Kun aktiv" + +#~ msgid "Total Qty" +#~ msgstr "Totalt antall" + +#~ msgid "Available" +#~ msgstr "Tilgjengelig" + +#~ msgid "Low Stock" +#~ msgstr "Lite lager" + +#~ msgid "No stock items found." +#~ msgstr "Ingen lagervarer funnet." + +#~ msgid "Item Details" +#~ msgstr "Varedetaljer" + +#~ msgid "Trackable" +#~ msgstr "Sporbar" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Lagernivåer etter lager" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Nylige aksjebevegelser" + +#~ msgid "Total On Hand" +#~ msgstr "Totalt på hånden" + +#~ msgid "Total Reserved" +#~ msgstr "Totalt reservert" + +#~ msgid "Total Available" +#~ msgstr "Totalt tilgjengelig" + +#~ msgid "Low Stock Alert" +#~ msgstr "Lavt lagervarsel" + +#~ msgid "This item is not trackable." +#~ msgstr "Denne varen er ikke sporbar." + +#~ msgid "Active Reservations" +#~ msgstr "Aktive reservasjoner" + +#~ msgid "Quantity Reserved" +#~ msgstr "Antall reservert" + +#~ msgid "Last Counted" +#~ msgstr "Sist talt" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "Ingen lager funnet for denne varen i noe lager." + +#~ msgid "No stock levels found." +#~ msgstr "Ingen lagernivåer funnet." + +#~ msgid "Low Stock Only" +#~ msgstr "Kun lite lager" + +#~ msgid "Oversold" +#~ msgstr "Oversolgt" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "Ingen lagervarer funnet i dette lageret." + +#~ msgid "Supplier Code" +#~ msgstr "Leverandørkode" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Unik kode for denne leverandøren (f.eks. SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Betalingsbetingelser" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "f.eks. Net 30, Net 60" + +#~ msgid "Code, name, email" +#~ msgstr "Kode, navn, e-post" + +#~ msgid "No suppliers found." +#~ msgstr "Ingen leverandører funnet." + +#~ msgid "Supplier Details" +#~ msgstr "Leverandørdetaljer" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Lagervarer fra denne leverandøren" + +#~ msgid "Lead Time" +#~ msgstr "Ledetid" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "Ingen lagervarer knyttet til denne leverandøren." + +#~ msgid "Preferred Items" +#~ msgstr "Foretrukne varer" + +#~ msgid "From Warehouse" +#~ msgstr "Fra lageret" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Velg Kildevarehus" + +#~ msgid "To Warehouse" +#~ msgstr "Til lageret" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Velg Destinasjonslager" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Valgfrie merknader om denne overføringen" + +#~ msgid "Create Transfer" +#~ msgstr "Opprett overføring" + +#~ msgid "No transfers found." +#~ msgstr "Ingen overføringer funnet." + +#~ msgid "Warehouse Code" +#~ msgstr "Lagerkode" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Unik kode for dette lageret (f.eks. WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "Kontakt e-post" + +#~ msgid "Contact Phone" +#~ msgstr "Kontakt telefon" + +#~ msgid "No warehouses found." +#~ msgstr "Ingen varehus funnet." + +#~ msgid "Warehouse Details" +#~ msgstr "Lagerdetaljer" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "Ingen lagervarer på dette lageret." + +#~ msgid "Total Quantity" +#~ msgstr "Totalt antall" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "Be om godkjenning" + +#~ msgid "Approval Status" +#~ msgstr "Godkjenningsstatus" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "Årsak til avvisning" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "Raske handlinger" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "Eksporter til Excel" + +#~ msgid "Partially Paid" +#~ msgstr "Delvis betalt" + +#~ msgid "Fully Paid" +#~ msgstr "Fullt betalt" + +#~ msgid "Create Invoice" +#~ msgstr "Opprett faktura" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Generer en ny faktura for et prosjekt og klient" + +#~ msgid "Select a project" +#~ msgstr "Velg et prosjekt" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "Hvis du velger et prosjekt, vil klientdetaljer automatisk fylles ut" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Skattesats (%)" + +#~ msgid "Tips" +#~ msgstr "Tips" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "Velg riktig prosjekt for å automatisk fylle ut klientdetaljer." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "Du kan tilpasse notater og vilkår før du sender fakturaen." + +#~ msgid "Edit Invoice" +#~ msgstr "Rediger faktura" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Oppdater fakturadetaljer, varer og vilkår" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Tidsbaserte tjenester og timearbeid" + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "Velg lagervare" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "f.eks. webutviklingstjenester" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "Fjern elementet" + +#~ msgid "Items Subtotal" +#~ msgstr "Elementer Subtotal" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "Fakturerbare utgifter som reiser, måltider og materialer" + +#~ msgid "Add Expense" +#~ msgstr "Legg til kostnad" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "for eksempel reise til kundemøte" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Koblet utgift - tittel kan ikke redigeres" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Koblet utgift - beskrivelse kan ikke redigeres" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Koblet utgift - kategori kan ikke redigeres" + +#~ msgid "Travel" +#~ msgstr "Reise" + +#~ msgid "Meals" +#~ msgstr "Måltider" + +#~ msgid "Accommodation" +#~ msgstr "Overnatting" + +#~ msgid "Supplies" +#~ msgstr "Rekvisita" + +#~ msgid "Software" +#~ msgstr "Programvare" + +#~ msgid "Equipment" +#~ msgstr "Utstyr" + +#~ msgid "Services" +#~ msgstr "Tjenester" + +#~ msgid "Marketing" +#~ msgstr "Markedsføring" + +#~ msgid "Training" +#~ msgstr "Opplæring" + +#~ msgid "Other" +#~ msgstr "Annen" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Tilknyttet utgift - beløp kan ikke redigeres" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Koblet utgift - dato kan ikke redigeres" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Koble ut regning fra faktura" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Utgifter Delsum" + +#~ msgid "Extra Goods" +#~ msgstr "Ekstra varer" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Produkter, materialer, lisenser og andre varer" + +#~ msgid "Add Good" +#~ msgstr "Legg til Good" + +#~ msgid "Price" +#~ msgstr "Pris" + +#~ msgid "e.g., Software License" +#~ msgstr "f.eks. programvarelisens" + +#~ msgid "Product" +#~ msgstr "Produkt" + +#~ msgid "Service" +#~ msgstr "Service" + +#~ msgid "Material" +#~ msgstr "Materiale" + +#~ msgid "Remove good" +#~ msgstr "Fjern godt" + +#~ msgid "Goods Subtotal" +#~ msgstr "Varer Subtotal" + +#~ msgid "Live Preview" +#~ msgstr "Live forhåndsvisning" + +#~ msgid "Payment" +#~ msgstr "Betaling" + +#~ msgid "Goods" +#~ msgstr "Varer" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Generer fra tid/kostnader" + +#~ msgid "Record Payment" +#~ msgstr "Rekordbetaling" + +#~ msgid "Export PDF" +#~ msgstr "Eksporter PDF" + +#~ msgid "Export CSV" +#~ msgstr "Eksporter CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Duplisert faktura" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "Er du sikker på at du vil fjerne denne utgiften fra fakturaen?" + +#~ msgid "Unlink Expense" +#~ msgstr "Fjern koblingen til kostnad" + +#~ msgid "Unlink" +#~ msgstr "Fjern tilknytningen" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "Legg til minst én vare, utgift eller ekstra vare på fakturaen" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Generer fra tid, kostnader og varer" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Velg ufakturerte tidsregistreringer, " +#~ "prosjektkostnader og ekstra varer som " +#~ "skal legges til denne fakturaen" + +#~ msgid "Back to Edit" +#~ msgstr "Tilbake til Rediger" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Ufakturerte tidsoppføringer" + +#~ msgid "entries" +#~ msgstr "oppføringer" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "Ingen ufakturerte tidsoppføringer funnet for dette prosjektet." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Ufakturerte prosjektkostnader" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "Ingen ufakturerte kostnader funnet for dette prosjektet." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Ufakturerte fakturerbare utgifter" + +#~ msgid "Vendor" +#~ msgstr "Selger" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "Ingen ufakturerte fakturerbare utgifter funnet for dette prosjektet." + +#~ msgid "Project Extra Goods" +#~ msgstr "Prosjekt Ekstra varer" + +#~ msgid "No extra goods found for this project." +#~ msgstr "Ingen ekstra varer funnet for dette prosjektet." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Legg til valgt på faktura" + +#~ msgid "Selection Summary" +#~ msgstr "Sammendrag av utvalg" + +#~ msgid "Total available hours" +#~ msgstr "Totale tilgjengelige timer" + +#~ msgid "Total available costs" +#~ msgstr "Totale tilgjengelige kostnader" + +#~ msgid "Total available expenses" +#~ msgstr "Totale tilgjengelige utgifter" + +#~ msgid "Total available goods" +#~ msgstr "Totalt tilgjengelige varer" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Oversikt over forhåndsbetalte timer" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" +#~ "Planen inkluderer %(hours)s timer per " +#~ "syklus (tilbakestilles på dag %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "Forbrukt: %(consumed)s h • Gjenstående: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "Ingen forhåndsbetalt bruk registrert for valgt periode ennå." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" +#~ "Du kan velge flere tidsregistreringer, " +#~ "kostnader, utgifter og ekstra varer." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "Tidsregistreringer grupperes etter oppgave " +#~ "eller prosjekt ved opprettelse av " +#~ "element." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "Kostnader og ekstra varer legges til som individuelle fakturaposter." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "Utgifter er knyttet til faktura og fremkommer i eget avsnitt." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "Velg minst én gang oppføring, kostnad, utgift eller ekstra vare" + +#~ msgid "Filter Invoices" +#~ msgstr "Filtrer fakturaer" + +#~ msgid "Invoice number or client" +#~ msgstr "Fakturanummer eller klient" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "Slett valgte fakturaer" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Endre status for utvalgte fakturaer" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "Slett faktura" + +#~ msgid "Warning:" +#~ msgstr "Advarsel:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Er du sikker på at du vil slette faktura" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Alle fakturaartikler, ekstravarer og " +#~ "betalingsoppføringer knyttet til denne " +#~ "fakturaen vil bli slettet permanent." + +#~ msgid "INVOICE" +#~ msgstr "FAKTURA" + +#~ msgid "Invoice #" +#~ msgstr "Faktura nr." + +#~ msgid "Bill To" +#~ msgstr "Bill To" + +#~ msgid "Quantity (Hours)" +#~ msgstr "Antall (timer)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "Generert fra %(num)d tidsoppføringer" + +#~ msgid "Expense" +#~ msgstr "Kostnader" + +#~ msgid "Subtotal:" +#~ msgstr "Delsum:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "Skatt (%(rate).2f%%):" + +#~ msgid "Total Amount:" +#~ msgstr "Totalt beløp:" + +#~ msgid "Notes:" +#~ msgstr "Merknader:" + +#~ msgid "Terms:" +#~ msgstr "Vilkår:" + +#~ msgid "Payment Information:" +#~ msgstr "Betalingsinformasjon:" + +#~ msgid "Terms & Conditions:" +#~ msgstr "Vilkår og betingelser:" + +#~ msgid "Download UBL" +#~ msgstr "" + +#~ msgid "Pay Online" +#~ msgstr "" + +#~ msgid "Payment Reference" +#~ msgstr "" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" + +#~ msgid "Invoice Approval" +#~ msgstr "" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" + +#~ msgid "Payment History" +#~ msgstr "Betalingshistorikk" + +#~ msgid "Send Invoice via Email" +#~ msgstr "Send faktura via e-post" + +#~ msgid "Edit Issue" +#~ msgstr "" + +#~ msgid "Unassigned" +#~ msgstr "Ikke tilordnet" + +#~ msgid "Create Issue" +#~ msgstr "" + +#~ msgid "Filter Issues" +#~ msgstr "" + +#~ msgid "Search by title or description" +#~ msgstr "" + +#~ msgid "Apply Filters" +#~ msgstr "Bruk filtre" + +#~ msgid "Page" +#~ msgstr "Side" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "of" +#~ msgstr "av" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "No issues found" +#~ msgstr "Ingen brukere funnet." -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Create New Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "Delete Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "Task Management" +#~ msgstr "Oppgavestyring" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "Link to existing task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Select a task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "Link" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Kanban" +#~ msgstr "Kanban" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "Administrer kolonner" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "Dra oppgaver mellom kolonner for å oppdatere statusen deres" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "Kanban-tavle" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "moved to" +#~ msgstr "flyttet til" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "Ingen oppgaver i denne kolonnen." -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "Administrer Kanban-kolonner" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "Tilpass kanban-tavlekolonner og oppgavetilstander" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Project:" +#~ msgstr "Prosjekt:" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "Globale kolonner" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "Add Column" +#~ msgstr "Legg til kolonne" -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "Kanban kolonneliste" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Key" +#~ msgstr "Nøkkel" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "Complete?" +#~ msgstr "Fullstendig?" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "Dra for å omorganisere" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "Edit column" +#~ msgstr "Rediger kolonne" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "Slå av aktiv tilstand" -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" +#~ "Fant ingen kanban-kolonner. Opprett din" +#~ " første kolonne for å komme i " +#~ "gang." -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "Tips:" +#~ msgstr "Tips:" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Dra og slipp rader for å omorganisere kolonner" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "Systemkolonner (todo, in_progress, done) kan" +#~ " ikke slettes, men kan tilpasses" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "Kolonner merket som \"Fullført\" vil " +#~ "merke oppgaver som fullførte når de " +#~ "dras til den kolonnen" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Inaktive kolonner er skjult fra " +#~ "kanban-tavlen, men oppgaver med den " +#~ "statusen forblir tilgjengelige" -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "Slett Kanban-kolonnen" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Er du sikker på at du vil slette kolonnen?" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "Key:" +#~ msgstr "Nøkkel:" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Merk: Oppgaver med denne statusen vil" +#~ " forbli tilgjengelige, men kolonnen vil " +#~ "ikke lenger vises på kanban-tavlen." -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "Slett kolonne" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "Kolonnene er omorganisert" -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "Tidsintegrasjon" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "Kunne ikke omorganisere kolonner. Vennligst prøv igjen." -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "Opprett Kanban-kolonne" -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "I fjor" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "Oppdater status" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "Detaljer" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "I fjor" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Delvis" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "Forfriske" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Legg til en ny kolonne på kanban-tavlen" -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "Opprett Kanban-kolonneskjema" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "Column Label" +#~ msgstr "Kolonneetikett" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "f.eks. i gjennomgang, blokkert, testing" -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "Visningsnavnet som vises på kanban-tavlen" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Column Key" +#~ msgstr "Kolonnenøkkel" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "f.eks. in_review, blokkert, testing" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Unik identifikator (små bokstaver, ingen " +#~ "mellomrom, bruk understreking). Automatisk " +#~ "generert fra etikett hvis tom." -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "Global (for all projects)" +#~ msgstr "Globalt (for alle prosjekter)" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Velg et prosjekt for å opprette " +#~ "prosjektspesifikke kolonner, eller la det " +#~ "være Globalt for alle prosjekter" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "Icon Class" +#~ msgstr "Ikon klasse" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "Font Awesome ikonklasse" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "Browse icons" +#~ msgstr "Bla gjennom ikoner" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "Primær (blå)" -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "Opprett API-token" +#~ msgid "Secondary (Gray)" +#~ msgstr "Sekundær (grå)" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "Suksess (grønn)" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "Danger (Red)" +#~ msgstr "Fare (rød)" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "Advarsel (gul)" -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "Opprett API-token" +#~ msgid "Info (Cyan)" +#~ msgstr "Info (cyan)" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Bootstrap fargeklasse for styling" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "La stå tomt for å holde deg oppdatert" +#~ msgid "Mark as Complete State" +#~ msgstr "Merk som fullstendig tilstand" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "Regenerer hemmelighet" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "Oppgaver som flyttes til denne kolonnen vil bli merket som fullført" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "Create Column" +#~ msgstr "Opprett kolonne" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "Note:" +#~ msgstr "Note:" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "Kolonnen legges til på slutten av " +#~ "tavlen. Du kan endre rekkefølgen på " +#~ "kolonner senere fra administrasjonssiden." -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "Rediger Kanban-kolonnen" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "Endre kolonneinnstillinger" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "Edit Kanban Column form" +#~ msgstr "Rediger Kanban-kolonneskjema" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "Nøkkelen kan ikke endres etter opprettelse" -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "Dette er en prosjektspesifikk kolonne" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Dette er en global kolonne (for alle prosjekter)" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "Preview" +#~ msgstr "Forhåndsvisning" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Inaktive kolonner er skjult fra kanban-tavlen" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "System Column:" +#~ msgstr "Systemkolonne:" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Dette er en systemkolonne. Du kan " +#~ "tilpasse utseendet, men kan ikke slette" +#~ " det." -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "Bytt mørk modus" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Decrease quantity" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Adjustment quantity" +#~ msgstr "" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "Increase quantity" +#~ msgstr "" + +#~ msgid "Kiosk adjustment" +#~ msgstr "" + +#~ msgid "Physical count" +#~ msgstr "" + +#~ msgid "Found" +#~ msgstr "" + +#~ msgid "Damaged" +#~ msgstr "" + +#~ msgid "Apply stock adjustment" +#~ msgstr "" + +#~ msgid "Apply Adjustment" +#~ msgstr "" + +#~ msgid "Undo last adjustment" +#~ msgstr "" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "" + +#~ msgid "Transfer quantity" +#~ msgstr "" + +#~ msgid "Transfer stock" +#~ msgstr "" + +#~ msgid "Transfer Stock" +#~ msgstr "" + +#~ msgid "Stop timer" +#~ msgstr "" + +#~ msgid "Stop Timer" +#~ msgstr "Stopp timer" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "Ingen oppgave" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "Hva jobber du med?" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "Sammendrag" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "Kilde" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Nettsted, henvisning, annonse..." + +#~ msgid "Lead Score" +#~ msgstr "Ledelsesscore" + +#~ msgid "Estimated Value" +#~ msgstr "Estimert verdi" + +#~ msgid "Save Lead" +#~ msgstr "Lagre lead" + +#~ msgid "Name, company, email..." +#~ msgstr "Navn, firma, e-post..." + +#~ msgid "All Statuses" +#~ msgstr "Alle statuser" + +#~ msgid "Website, referral..." +#~ msgstr "Nettsted, henvisning..." + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "No leads found" +#~ msgstr "Ingen kundeemner funnet" + +#~ msgid "Create First Lead" +#~ msgstr "Opprett første kundeemne" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Profesjonell tidsregistrering og prosjektledelse" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "En omfattende nettbasert " +#~ "tidsregistreringsapplikasjon bygget med Flask, " +#~ "med prosjektledelse, klientorganisasjon, " +#~ "oppgavestyring, fakturering og avansert " +#~ "analyse." + +#~ msgid "Invoicing" +#~ msgstr "Fakturering" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "Smarte timere" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "Sanntidssporing med tomgangsdeteksjon og liveoppdateringer" + +#~ msgid "Client Management" +#~ msgstr "Klientadministrasjon" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "Organiser kunder med kontakter, priser og prosjektrelasjoner" + +#~ msgid "Task System" +#~ msgstr "Oppgavesystem" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Bryt ned prosjekter i oppgaver med fremdriftssporing" + +#~ msgid "PDF Invoices" +#~ msgstr "PDF-fakturaer" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Generer profesjonelle fakturaer fra sporet tid" + +#~ msgid "Core Features" +#~ msgstr "Kjernefunksjoner" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Manuell tidsregistrering med notater og tagger" + +#~ msgid "Client and project organization" +#~ msgstr "Oppdragsgiver og prosjektorganisasjon" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Rollebasert tilgang og brukerprofiler" + +#~ msgid "Advanced Features" +#~ msgstr "Avanserte funksjoner" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Merket PDF-fakturering med skatte- og betalingssporing" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Visuell analyse og detaljert rapportering" + +#~ msgid "REST API for integrations" +#~ msgstr "REST API for integrasjoner" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "PWA-funksjoner og mobilvennlig brukergrensesnitt" + +#~ msgid "Platform Support" +#~ msgstr "Plattformstøtte" + +#~ msgid "Web Application" +#~ msgstr "Webapplikasjon" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Desktop-nettlesere (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Mobil responsiv design" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "Progressive Web App (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Berøringsvennlig nettbrettgrensesnitt" + +#~ msgid "Operating Systems" +#~ msgstr "Operativsystemer" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android og iOS (nettleser)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Raspberry Pi-støtte" + +#~ msgid "Dockerized deployment" +#~ msgstr "Dockerisert utplassering" + +#~ msgid "Database Support" +#~ msgstr "Databasestøtte" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (anbefalt)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (utvikler/test)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Automatiske migreringer med Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Verktøy for sikkerhetskopiering og gjenoppretting" + +#~ msgid "Technical Specifications" +#~ msgstr "Tekniske spesifikasjoner" + +#~ msgid "Technology Stack" +#~ msgstr "Teknologistabel" + +#~ msgid "Backend" +#~ msgstr "Backend" + +#~ msgid "Frontend" +#~ msgstr "Frontend" + +#~ msgid "Deployment" +#~ msgstr "Utplassering" + +#~ msgid "Key Capabilities" +#~ msgstr "Nøkkelegenskaper" + +#~ msgid "Real-time" +#~ msgstr "Sanntid" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "Åpen kildekode og fellesskap" + +#~ msgid "Open Source Benefits" +#~ msgstr "Fordeler med åpen kildekode" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Full kildekode tilgjengelig på GitHub" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Lisensiert under GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "Samfunnsdrevet utvikling" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Transparent problemsporing og feilrapporter" + +#~ msgid "Deployment Options" +#~ msgstr "Distribusjonsalternativer" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Docker-bilder (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Selvdrevet distribusjon med full kontroll" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Sky-klar med Compose-konfigurasjoner" + +#~ msgid "View on GitHub" +#~ msgstr "Se på GitHub" + +#~ msgid "Support updates" +#~ msgstr "Støttede funksjoner" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "Få hjelp og ressurser" + +#~ msgid "Documentation" +#~ msgstr "Dokumentasjon" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Trinn-for-trinn guider for alle funksjoner." + +#~ msgid "View Help" +#~ msgstr "Se hjelp" + +#~ msgid "System Information" +#~ msgstr "Systeminformasjon" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Status, versjoner og konfigurasjonsdetaljer." + +#~ msgid "Admin access required" +#~ msgstr "Administratortilgang kreves" + +#~ msgid "Community Support" +#~ msgstr "Fellesskapsstøtte" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "Rapporter problemer, be om funksjoner, bidra." + +#~ msgid "GitHub Issues" +#~ msgstr "GitHub-problemer" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "Se alle tidsregistreringer" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "Her er en rask oversikt over arbeidet ditt." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" + +#~ msgid "Repeat last" +#~ msgstr "Opprettet kl" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "Pause" + +#~ msgid "Break" +#~ msgstr "Tilbake" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "Startet kl" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "Innstilling" + +#~ msgid "Subtract 15 min" +#~ msgstr "" + +#~ msgid "Subtract 5 min" +#~ msgstr "" + +#~ msgid "Add 5 min" +#~ msgstr "Admin" + +#~ msgid "Add 15 min" +#~ msgstr "Admin" + +#~ msgid "Resume timer" +#~ msgstr "Smarte timere" + +#~ msgid "Resume" +#~ msgstr "Tilbakestill" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "Pause" + +#~ msgid "Stop and save current time" +#~ msgstr "" + +#~ msgid "Stop & save" +#~ msgstr "" + +#~ msgid "No active timer." +#~ msgstr "Ingen aktiv timer." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" + +#~ msgid "Resume last session" +#~ msgstr "Avslutt økten" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" + +#~ msgid "Today's Hours" +#~ msgstr "" + +#~ msgid "overtime" +#~ msgstr "Tid" + +#~ msgid "Week's Hours" +#~ msgstr "" + +#~ msgid "Month's Hours" +#~ msgstr "" + +#~ msgid "Overtime (YTD)" +#~ msgstr "Overtidsinnstillinger" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" + +#~ msgid "Loading insights…" +#~ msgstr "" + +#~ msgid "Value insights" +#~ msgstr "Høyrejuster" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "Spor tid. Hold deg organisert." + +#~ msgid "Total hours tracked" +#~ msgstr "Totalt arbeidede timer" + +#~ msgid "Active days" +#~ msgstr "Aktive varsler" + +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" + +#~ msgid "Hours per day last seven days" +#~ msgstr "" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "Most productive day" +#~ msgstr "" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Avg session length" +#~ msgstr "" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "Estimated value tracked" +#~ msgstr "Estimert verdi" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "This week vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "hrs this week" +#~ msgstr "Tidsposter denne uken" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "vs last week" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "This week" +#~ msgstr "Uke" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "Last week" +#~ msgstr "I fjor" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "Nylige oppføringer" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "View all" +#~ msgstr "Vis alle" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Fortsett - Start en ny tidtaker med samme egenskaper" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "Rediger oppføring" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "Duplisert oppføring" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "Slett oppføring" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "Ingen nylige oppføringer funnet." -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "Ukentlig mål" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "Dager igjen" -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Need" +#~ msgstr "Behov" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "å nå målet" -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "Ingen ukemål" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "Sett et ukentlig tidsmål for å spore fremgangen din" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "Lag mål" -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Toppprosjekter (30 dager)" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "View report" +#~ msgstr "Brukerrapport" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Tidsfordeling kakediagrammer" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Ingen aktivitet de siste 30 dagene." -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Start sporingstid" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "Toppprosjekter (30 dager)" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "Ingen aktivitet de siste 30 dagene." -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "Duplisert %(count)d sitat(er)" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Feil ved generering av PDF: %(error)s" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "Plattformstøtte" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "Passordet må være minst 8 tegn langt" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "Hurtigstartguide" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "All templates" +#~ msgstr "E-postmaler" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "Oppgave (valgfritt)" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "Merknader (valgfritt)" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "Oppgave (valgfritt)" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "f.eks. møte, utvikling, admin" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "Støtte utvikling" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "Komplett dokumentasjon og brukerveiledning" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "Rask navigering" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "Filtrer deler..." -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "Rask start" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "Rapporter og analyser" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "Produktivitetsfunksjoner" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "Administrasjonsfunksjoner" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "Mobilbruk" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "Dokumentasjon" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "Feilsøking" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "TimeTracker Hjelpesenter" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "Alt du trenger å vite for å få mest mulig ut av TimeTracker" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "Start sporingstid" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "Se prosjekter" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "Generer rapporter" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "API-tokens" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "Hurtigstartguide" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "For New Users" +#~ msgstr "For nye brukere" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Logg inn med brukernavnet ditt (ikke nødvendig med passord)" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Utforsk dashbordet for å se oversikten din" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Start din første tidtaker på et eksisterende prosjekt" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "Se dine tidsregistreringer i rapporter" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "For administratorer" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Sett opp klienter i Client Management-delen" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Lag prosjekter og tilordne dem til kunder" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Konfigurer systeminnstillinger (tidssone, valuta osv.)" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "Administrer brukere og tillatelser" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "Pro tips:" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Bruk det mobilvennlige grensesnittet for " +#~ "å spore tid mens du er på " +#~ "farten. Timeren fortsetter å kjøre selv" +#~ " om du lukker nettleseren!" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Sanntidssporing med automatisk tomgangsdeteksjon " +#~ "og WebSocket-oppdateringer" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "Manuell inntasting" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "Logg tid manuelt med tilpassede start- og sluttider" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "Starte en timer" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Lagervare" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Velg element" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Lager" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Velg Lager" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Justeringsmengde" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "Bruk positive verdier for å øke beholdningen, negative verdier for å redusere" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "f.eks. korrigering av fysisk telling, skade, gjenstander som er funnet" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Ytterligere detaljer om denne justeringen" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Rekordjustering" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Alle varehus" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Alle varer" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Dato fra" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Dato til" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Punkt" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "Ingen justeringer funnet." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "På Hand" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Ombestillingspunkt" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Mangel" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Ombestill antall" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "Ingen varsler om lavt lager. Alle varer er over bestillingspunktet." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Naviger til Timer-siden eller dashbordet" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "Velg et prosjekt fra rullegardinmenyen" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "Velg eventuelt en oppgave for mer detaljert sporing" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Bruk positive verdier for tillegg, negative for fjerninger" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Legg til notater om det du jobber med (valgfritt)" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Legg til tagger atskilt med komma (valgfritt)" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Klikk \"Start timer\"" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "Timer funksjoner" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Bevegelsestype" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Retur" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Sløseri" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "Visning av varighet i sanntid" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "Continues running if browser closes" +#~ msgstr "Fortsetter å kjøre hvis nettleseren lukkes" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Automatisk tomgangsdeteksjon (konfigurerbar)" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Én aktiv timer per bruker (konfigurerbar)" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "WebSocket live updates" +#~ msgstr "WebSocket live-oppdateringer" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Manual Time Entry" +#~ msgstr "Manuell tidsinntasting" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Opprett tidsoppføringer manuelt når du " +#~ "trenger å registrere tid brukt borte " +#~ "fra datamaskinen eller justere eksisterende" +#~ " oppføringer." -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "f.eks. fysisk tellingskorreksjon" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Rekordbevegelse" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Referansetype" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Håndbok" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Enhetskostnad" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Referanse" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Required Information" +#~ msgstr "Nødvendig informasjon" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "Ingen aksjebevegelser funnet." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Leverandør" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Velg Leverandør" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Bestillingsdato" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Forventet leveringsdato" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Notater synlig for leverandør" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Interne merknader (ikke synlig for leverandøren)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Varer" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Legg til element" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Antall" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "Leverandør SKU" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Opprett innkjøpsordre" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Utkast" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Sendt" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Bekreftet" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Mottatt" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Alle leverandører" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "PO-nummer" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Forventet levering" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "Ingen innkjøpsordrer funnet." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "Er du sikker på at du vil kansellere denne innkjøpsordren?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "Er du sikker på at du vil slette denne innkjøpsordren?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Bestillingsdetaljer" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Mottatt dato" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Antall bestilt" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Mottatt mengde" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Linje totalt" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Frakt" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Motta innkjøpsordre" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Merk som mottatt" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "Ingen varer i denne innkjøpsordren." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Totalt antall varer" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Totale varehus" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Total beholdningsverdi" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Lite lagervarer" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Tilgjengelige rapporter" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Aksjevurdering" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Se lagerverdi etter lager" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Bevegelseshistorie" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Detaljert bevegelseslogg" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Omsetningsanalyse" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Omsetningshastigheter for varelager" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Lav lagerrapport" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Varer under bestillingspunktet" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "Fant %(count)s varer under bestillingspunktet." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Antall på hånden" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Bestill på nytt" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "Opprett PO" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Alle lagernivåer er gode" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Ingen varer er for øyeblikket under bestillingspunktet." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "Ingen bevegelser funnet." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "Omsetningshastighet angir hvor mange ganger varelager selges og erstattes i løpet av et år. Høyere priser indikerer varer som beveger seg raskere." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Totalt solgt" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Gjennomsnittlig lagernivå" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Omsetningshastighet" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Rask bevegelse" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normal" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "Slow Moving" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "Veldig sakte" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "Fant ingen salgsdata for den valgte perioden." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Lagervurdering" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Total verdi" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "Ingen varer funnet med kostnadsinformasjon." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Reservert" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Oppfylt" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Reservert kl" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Utløper kl" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "Vil du oppfylle denne reservasjonen?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "Kansellere denne reservasjonen?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "Ingen reservasjoner funnet." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Enhet" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Standardkostnad" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Standardpris" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "Bilde-URL" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Spor inventar" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Administrer flere leverandører for denne varen med forskjellige priser." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "MOQ" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Ledetid (dager)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Foretrukket" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Legg til leverandør" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "Fant ingen bevegelseshistorikk for denne varen." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU, navn, strekkode..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Kun aktiv" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Totalt antall" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Tilgjengelig" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Lite lager" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "Ingen lagervarer funnet." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Varedetaljer" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Sporbar" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Lagernivåer etter lager" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Project selection" +#~ msgstr "Prosjektvalg" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "Startdato og klokkeslett" -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "Sluttdato og klokkeslett" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Nylige aksjebevegelser" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Totalt på hånden" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Totalt reservert" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Totalt tilgjengelig" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Lavt lagervarsel" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Denne varen er ikke sporbar." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Aktive reservasjoner" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Antall reservert" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Sist talt" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "Ingen lager funnet for denne varen i noe lager." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "Ingen lagernivåer funnet." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Kun lite lager" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "Oversolgt" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "Ingen lagervarer funnet i dette lageret." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Leverandørkode" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Unik kode for denne leverandøren (f.eks. SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Betalingsbetingelser" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "f.eks. Net 30, Net 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Kode, navn, e-post" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "Ingen leverandører funnet." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Leverandørdetaljer" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Lagervarer fra denne leverandøren" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Ledetid" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "Ingen lagervarer knyttet til denne leverandøren." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Foretrukne varer" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Fra lageret" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Velg Kildevarehus" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Til lageret" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Velg Destinasjonslager" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Valgfrie merknader om denne overføringen" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Opprett overføring" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "Ingen overføringer funnet." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Lagerkode" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Unik kode for dette lageret (f.eks. WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "Kontakt e-post" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Kontakt telefon" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "Ingen varehus funnet." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Lagerdetaljer" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "Ingen lagervarer på dette lageret." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Totalt antall" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "Valgfri informasjon" -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "Oppgaveoppgave" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "Beskrivelse/notater" -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "Tagger for kategorisering" -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "Fakturerbar statusoverstyring" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Avanserte tidsregistreringsfunksjoner" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "Masseinngang" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Opprett flere tidsoppføringer for påfølgende" +#~ " dager med samme prosjekt og " +#~ "varighet. Perfekt for vanlige arbeidsmønstre." -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Templates" +#~ msgstr "Maler" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Lagre ofte brukte tidsoppføringer som " +#~ "maler for rask gjenbruk. Lagrer " +#~ "prosjekt, oppgave og notater." -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualiser tidsregistreringene dine i en " +#~ "kalender. Dra og slipp for å endre" +#~ " tidsplanen eller klikk på datoer for" +#~ " å legge til oppføringer." -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Be om godkjenning" +#~ msgid "Project Information" +#~ msgstr "Prosjektinformasjon" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Godkjenningsstatus" +#~ msgid "Descriptive project name" +#~ msgstr "Beskrivende prosjektnavn" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "Tilknyttet kundeorganisasjon" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "Prosjektdetaljer og omfang" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "Aktiv, fullført eller arkivert" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Billing Information" +#~ msgstr "Faktureringsinformasjon" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Årsak til avvisning" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Om tid skal spores for fakturering" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "Rate for billable time calculations" +#~ msgstr "Sats for fakturerbar tidsberegninger" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Raske handlinger" +#~ msgid "Billing Reference" +#~ msgstr "Faktureringsreferanse" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "PO-nummer eller faktureringskode" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Eksporter til Excel" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Delvis betalt" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Fullt betalt" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Opprett faktura" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Generer en ny faktura for et prosjekt og klient" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Velg et prosjekt" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "Hvis du velger et prosjekt, vil klientdetaljer automatisk fylles ut" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "Prosjektdrift" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Create new projects with client relationships" +#~ msgstr "Opprette nye prosjekter med kunderelasjoner" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Skattesats (%)" +#~ msgid "Edit existing projects to update details" +#~ msgstr "Rediger eksisterende prosjekter for å oppdatere detaljer" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Tips" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "Arkiver prosjekter for å skjule fra tidtakere (bevarer data)" -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "Velg riktig prosjekt for å automatisk fylle ut klientdetaljer." +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Slett prosjekter (fjerner alle tilknyttede tidsoppføringer)" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "Du kan tilpasse notater og vilkår før du sender fakturaen." +#~ msgid "Best Practices" +#~ msgstr "Beste praksis" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Rediger faktura" +#~ msgid "Use descriptive project names" +#~ msgstr "Bruk beskrivende prosjektnavn" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Oppdater fakturadetaljer, varer og vilkår" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Angi nøyaktige timepriser for fakturering" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Tidsbaserte tjenester og timearbeid" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Arkiver i stedet for slett når det er mulig" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Use billing references for external tracking" +#~ msgstr "Bruk faktureringsreferanser for ekstern sporing" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "Klientadministrasjonssystemet hjelper til med " +#~ "å organisere arbeidet ditt etter " +#~ "kundeorganisasjoner, forhindrer feil og " +#~ "effektiviserer prosjektoppretting." -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Client Information" +#~ msgstr "Kundeinformasjon" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Velg lagervare" +#~ msgid "Organization Name" +#~ msgstr "Organisasjonsnavn" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "f.eks. webutviklingstjenester" +#~ msgid "Company or client name" +#~ msgstr "Firma- eller klientnavn" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Primary contact details" +#~ msgstr "Primær kontaktinformasjon" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Fjern elementet" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Elementer Subtotal" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Fakturerbare utgifter som reiser, måltider og materialer" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Legg til kostnad" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "for eksempel reise til kundemøte" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Koblet utgift - tittel kan ikke redigeres" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Koblet utgift - beskrivelse kan ikke redigeres" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Koblet utgift - kategori kan ikke redigeres" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Reise" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Måltider" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Overnatting" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Rekvisita" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Programvare" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Utstyr" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Tjenester" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Markedsføring" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Opplæring" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Annen" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Tilknyttet utgift - beløp kan ikke redigeres" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Koblet utgift - dato kan ikke redigeres" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Koble ut regning fra faktura" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Utgifter Delsum" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Ekstra varer" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Produkter, materialer, lisenser og andre varer" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Legg til Good" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Pris" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "f.eks. programvarelisens" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Produkt" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Service" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Materiale" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "Fjern godt" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Varer Subtotal" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Live forhåndsvisning" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Betaling" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Varer" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Generer fra tid/kostnader" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Rekordbetaling" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "Eksporter PDF" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "Eksporter CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Duplisert faktura" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "Er du sikker på at du vil fjerne denne utgiften fra fakturaen?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Fjern koblingen til kostnad" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Fjern tilknytningen" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "Legg til minst én vare, utgift eller ekstra vare på fakturaen" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Generer fra tid, kostnader og varer" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "Velg ufakturerte tidsregistreringer, prosjektkostnader og ekstra varer som skal legges til denne fakturaen" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Tilbake til Rediger" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Ufakturerte tidsoppføringer" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "oppføringer" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "Ingen ufakturerte tidsoppføringer funnet for dette prosjektet." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Ufakturerte prosjektkostnader" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "Ingen ufakturerte kostnader funnet for dette prosjektet." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Ufakturerte fakturerbare utgifter" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Selger" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "Ingen ufakturerte fakturerbare utgifter funnet for dette prosjektet." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Prosjekt Ekstra varer" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "Ingen ekstra varer funnet for dette prosjektet." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Legg til valgt på faktura" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Sammendrag av utvalg" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Totale tilgjengelige timer" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Totale tilgjengelige kostnader" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Totale tilgjengelige utgifter" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Totalt tilgjengelige varer" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Oversikt over forhåndsbetalte timer" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "Planen inkluderer %(hours)s timer per syklus (tilbakestilles på dag %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "Forbrukt: %(consumed)s h • Gjenstående: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Ingen forhåndsbetalt bruk registrert for valgt periode ennå." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "Du kan velge flere tidsregistreringer, kostnader, utgifter og ekstra varer." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "Tidsregistreringer grupperes etter oppgave eller prosjekt ved opprettelse av element." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "Kostnader og ekstra varer legges til som individuelle fakturaposter." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "Utgifter er knyttet til faktura og fremkommer i eget avsnitt." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "Velg minst én gang oppføring, kostnad, utgift eller ekstra vare" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Filtrer fakturaer" +#~ msgid "Email & Phone" +#~ msgstr "E-post og telefon" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Fakturanummer eller klient" +#~ msgid "Contact information" +#~ msgstr "Kontaktinformasjon" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Slett valgte fakturaer" +#~ msgid "Business address" +#~ msgstr "Bedriftsadresse" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Endre status for utvalgte fakturaer" +#~ msgid "Benefits" +#~ msgstr "Fordeler" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "Rullegardinvalg forhindrer skrivefeil" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Standardpriser fyller prosjekter ut automatisk" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "Konsekvent klientnavn" -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Slett faktura" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Advarsel:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "Er du sikker på at du vil slette faktura" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "Alle fakturaartikler, ekstravarer og betalingsoppføringer knyttet til denne fakturaen vil bli slettet permanent." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "FAKTURA" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Faktura nr." - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Bill To" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Antall (timer)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "Generert fra %(num)d tidsoppføringer" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Kostnader" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Delsum:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "Skatt (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Totalt beløp:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Merknader:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Vilkår:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Betalingsinformasjon:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Vilkår og betingelser:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Easier project organization" +#~ msgstr "Enklere prosjektorganisering" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "Project Count" +#~ msgstr "Prosjektantall" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Total and active projects" +#~ msgstr "Totale og aktive prosjekter" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Total hours worked" +#~ msgstr "Totalt arbeidede timer" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "Kostnadsestimat" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Estimated billing amounts" +#~ msgstr "Anslåtte faktureringsbeløp" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Betalingshistorikk" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Bryt ned prosjekter i håndterbare " +#~ "oppgaver med detaljert sporing og " +#~ "fremdriftsovervåking." -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Send faktura via e-post" +#~ msgid "Task Properties" +#~ msgstr "Oppgaveegenskaper" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "Navn og beskrivelse" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "Ikke tilordnet" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "Tydelig oppgaveidentifikasjon" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "Prioriterte nivåer" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Lav, Middels, Høy, Haster" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "Bruk filtre" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Side" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "av" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "Ingen brukere funnet." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "Forfallsdatoer" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Deadline tracking" +#~ msgstr "Tidsfristsporing" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Assignment" +#~ msgstr "Tildeling" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "Oppgaveeierskap" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Oppgavestyring" +#~ msgid "Status Tracking" +#~ msgstr "Statussporing" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "Å gjøre - Ikke startet" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "In Progress - Currently working" +#~ msgstr "Pågår - jobber for tiden" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "Anmeldelse - Klar for anmeldelse" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "Ferdig - Fullført" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "Kansellert - ikke nødvendig" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" +#~ msgid "Time Tracking Features" +#~ msgstr "Tidssporingsfunksjoner" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Administrer kolonner" +#~ msgid "Start timers directly from tasks" +#~ msgstr "Start tidtakere direkte fra oppgaver" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Dra oppgaver mellom kolonner for å oppdatere statusen deres" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Koble tidsoppføringer til spesifikke oppgaver" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "Kanban-tavle" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Spor anslåtte kontra faktiske timer" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "flyttet til" +#~ msgid "Monitor task progress automatically" +#~ msgstr "Overvåk oppgavefremdriften automatisk" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "Ingen oppgaver i denne kolonnen." +#~ msgid "Task Views" +#~ msgstr "Oppgavevisninger" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Administrer Kanban-kolonner" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Mine oppgaver - Dine tildelte oppgaver" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Tilpass kanban-tavlekolonner og oppgavetilstander" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Alle oppgaver - Komplett oppgaveliste" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Prosjekt:" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Forfalte oppgaver - Forfalte varer" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Globale kolonner" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Prosjektoppgaver - Oppgaver innenfor prosjekter" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Legg til kolonne" +#~ msgid "Collaboration Features" +#~ msgstr "Samarbeidsfunksjoner" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Kanban kolonneliste" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Oppgavekommentarer - Trådede diskusjoner om oppgaver" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Nøkkel" +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Markdown Support - Rik formatering i beskrivelser" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "Fullstendig?" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "Brukeromtaler – Tag teammedlemmer (hvis aktivert)" -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Dra for å omorganisere" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Filvedlegg - Legg ved filer til oppgaver (hvis aktivert)" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Rediger kolonne" +#~ msgid "Markdown Formatting" +#~ msgstr "Markdown-formatering" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Slå av aktiv tilstand" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "Oppgave- og prosjektbeskrivelser støtter Markdown:" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "Fant ingen kanban-kolonner. Opprett din første kolonne for å komme i gang." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Tips:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Dra og slipp rader for å omorganisere kolonner" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "Systemkolonner (todo, in_progress, done) kan ikke slettes, men kan tilpasses" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "Kolonner merket som \"Fullført\" vil merke oppgaver som fullførte når de dras til den kolonnen" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "Inaktive kolonner er skjult fra kanban-tavlen, men oppgaver med den statusen forblir tilgjengelige" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Slett Kanban-kolonnen" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "Er du sikker på at du vil slette kolonnen?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Nøkkel:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "Merk: Oppgaver med denne statusen vil forbli tilgjengelige, men kolonnen vil ikke lenger vises på kanban-tavlen." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Slett kolonne" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Kolonnene er omorganisert" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "Kunne ikke omorganisere kolonner. Vennligst prøv igjen." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Opprett Kanban-kolonne" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Legg til en ny kolonne på kanban-tavlen" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Opprett Kanban-kolonneskjema" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Kolonneetikett" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "f.eks. i gjennomgang, blokkert, testing" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "Visningsnavnet som vises på kanban-tavlen" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Kolonnenøkkel" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "f.eks. in_review, blokkert, testing" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "Unik identifikator (små bokstaver, ingen mellomrom, bruk understreking). Automatisk generert fra etikett hvis tom." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Globalt (for alle prosjekter)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "Velg et prosjekt for å opprette prosjektspesifikke kolonner, eller la det være Globalt for alle prosjekter" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Ikon klasse" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Font Awesome ikonklasse" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Bla gjennom ikoner" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Primær (blå)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Sekundær (grå)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Suksess (grønn)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Fare (rød)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Advarsel (gul)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Info (cyan)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Bootstrap fargeklasse for styling" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Merk som fullstendig tilstand" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "Oppgaver som flyttes til denne kolonnen vil bli merket som fullført" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Opprett kolonne" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Note:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "Kolonnen legges til på slutten av tavlen. Du kan endre rekkefølgen på kolonner senere fra administrasjonssiden." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Rediger Kanban-kolonnen" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Endre kolonneinnstillinger" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Rediger Kanban-kolonneskjema" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "Nøkkelen kan ikke endres etter opprettelse" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Dette er en prosjektspesifikk kolonne" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Dette er en global kolonne (for alle prosjekter)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Forhåndsvisning" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Inaktive kolonner er skjult fra kanban-tavlen" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Systemkolonne:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "Dette er en systemkolonne. Du kan tilpasse utseendet, men kan ikke slette det." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Fet**, *kursiv*, ~~gjennomstreking~~" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# Overskrifter, - Lister, [Links](url)" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Bytt mørk modus" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```kodeblokker```, tabeller, bilder" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualiser arbeidsflyten din med et " +#~ "dra-og-slipp Kanban-tavle for " +#~ "intuitiv oppgavebehandling." -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "Board Features" +#~ msgstr "Brettfunksjoner" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Tilpassbare kolonner som samsvarer med oppgavestatuser" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Dra og slipp oppgaver mellom kolonner" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Filtrer etter prosjekt, bruker eller prioritet" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Quick search across all tasks" +#~ msgstr "Rask søk ​​på tvers av alle oppgaver" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "Using the Kanban Board" +#~ msgstr "Bruke Kanban-tavlen" -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Tilgang fra Oppgaver-menyen eller prosjektsiden" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "Dra oppgaver til forskjellige kolonner for å endre status" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Klikk på et oppgavekort for å se/redigere detaljer" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Bruk filtre for å fokusere på spesifikt arbeid" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "Kanban-brettet er perfekt for " +#~ "sprintplanlegging og daglige standups. Hver" +#~ " kolonne representerer et stadium i " +#~ "arbeidsflyten din!" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "Utgiftssporing" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Spor forretningsutgifter, administrer kvitteringer" +#~ " og håndter refusjoner effektivt." -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "Utgiftsfunksjoner" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Kategoriser utgifter (reise, måltider, forsyninger, etc.)" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "Legg ved kvitteringsbilder og dokumenter" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Spor beløp, skatter og betalingsmåter" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Godkjenningsarbeidsflyt for utgiftsforespørsler" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "Fakturering og refusjon" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Merk utgifter som fakturerbare til klienter" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "Inkluder utgifter i klientfakturaer" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "Spor refusjonsstatus" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "Koble utgifter til konkrete prosjekter" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "Rekord utgift" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "Skriv inn detaljer og last opp kvittering" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "Send inn for godkjenning" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Stopp timer" +#~ msgid "Admin reviews and approves" +#~ msgstr "Administrator vurderer og godkjenner" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "Faktura/Refusjon" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Legg til faktura eller refunder" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "Spor betaling" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Ingen oppgave" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "Overvåke refusjonsstatus" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "Hva jobber du med?" +#~ msgid "Professional Invoicing" +#~ msgstr "Profesjonell fakturering" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "Profesjonell PDF-generering" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Company branding and logos" +#~ msgstr "Bedriftens merkevarebygging og logoer" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "Automatisk fakturanummerering" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "Skatteberegninger" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Time Integration" +#~ msgstr "Tidsintegrasjon" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "Generate from time entries" +#~ msgstr "Generer fra tidsregistreringer" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Smart grouping by task/project" +#~ msgstr "Smart gruppering etter oppgave/prosjekt" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "Unngå dobbeltfakturering" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "Bruk prosjekttimepriser" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "Sett opp kunde- og prosjektdetaljer" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "Add Items" +#~ msgstr "Legg til elementer" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Generate from time or add manually" +#~ msgstr "Generer fra tid eller legg til manuelt" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "Se gjennom og send" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "Eksporter PDF og oppdater status" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "Overvåke status og betalinger" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "Sammendrag" +#~ msgid "Standard Reports" +#~ msgstr "Standard rapporter" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Prosjektrapport - Tidsfordeling etter prosjekt" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Kilde" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Nettsted, henvisning, annonse..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Ledelsesscore" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Estimert verdi" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Lagre lead" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Navn, firma, e-post..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Alle statuser" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Nettsted, henvisning..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Score" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "Ingen kundeemner funnet" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Opprett første kundeemne" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Brukerrapport – individuelle resultatberegninger" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Sammendragsrapport - Nøkkelberegninger og trender" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Time Entry Report - Detaljerte tidslogger" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Export Options" +#~ msgstr "Eksportalternativer" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "CSV-eksport - For ekstern analyse" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Profesjonell tidsregistrering og prosjektledelse" +#~ msgid "Configurable delimiters" +#~ msgstr "Konfigurerbare skilletegn" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "En omfattende nettbasert tidsregistreringsapplikasjon bygget med Flask, med prosjektledelse, klientorganisasjon, oppgavestyring, fakturering og avansert analyse." +#~ msgid "Custom date ranges" +#~ msgstr "Egendefinerte datoperioder" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Fakturering" +#~ msgid "Filtered data export" +#~ msgstr "Filtrert dataeksport" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "Filteralternativer" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Smarte timere" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Datoperiode – Egendefinerte start- og sluttdatoer" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "Sanntidssporing med tomgangsdeteksjon og liveoppdateringer" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Prosjekt – Filtrer etter spesifikke prosjekter" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Klientadministrasjon" +#~ msgid "User - Filter by team members" +#~ msgstr "Bruker - Filtrer etter teammedlemmer" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Organiser kunder med kontakter, priser og prosjektrelasjoner" +#~ msgid "Client - Filter by client organization" +#~ msgstr "Klient – ​​Filtrer etter kundeorganisasjon" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Oppgavesystem" +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Lagrede filtre - Lagre ofte brukte filtre" -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Bryt ned prosjekter i oppgaver med fremdriftssporing" +#~ msgid "Visual Analytics" +#~ msgstr "Visuell analyse" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "PDF-fakturaer" +#~ msgid "Interactive bar charts" +#~ msgstr "Interaktive søylediagrammer" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Generer profesjonelle fakturaer fra sporet tid" +#~ msgid "Time distribution pie charts" +#~ msgstr "Tidsfordeling kakediagrammer" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Kjernefunksjoner" +#~ msgid "Trend analysis over time" +#~ msgstr "Trendanalyse over tid" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" +#~ msgid "Mobile-optimized charts" +#~ msgstr "Mobiloptimaliserte diagrammer" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Manuell tidsregistrering med notater og tagger" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Bruk lagrede filtre for å få rask" +#~ " tilgang til de vanligste rapportvisningene" +#~ " dine. Lagre filtre for ukentlige " +#~ "anmeldelser, månedlig fakturering eller " +#~ "spesifikk prosjektsporing!" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Oppdragsgiver og prosjektorganisasjon" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Øk effektiviteten din med hurtigtaster, " +#~ "kommandopalett og automatiseringsfunksjoner." -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Rollebasert tilgang og brukerprofiler" +#~ msgid "Command Palette" +#~ msgstr "Kommandopalett" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Avanserte funksjoner" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "Få tilgang til alle funksjoner umiddelbart uten å forlate tastaturet" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Merket PDF-fakturering med skatte- og betalingssporing" +#~ msgid "Opening the Command Palette" +#~ msgstr "Åpne kommandopaletten" -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Visuell analyse og detaljert rapportering" +#~ msgid "Press the question mark key" +#~ msgstr "Trykk på spørsmålstegn-tasten" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "REST API for integrasjoner" +#~ msgid "Quick search" +#~ msgstr "Rask søk" -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "PWA-funksjoner og mobilvennlig brukergrensesnitt" +#~ msgid "Go to Projects" +#~ msgstr "Gå til prosjekter" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Plattformstøtte" +#~ msgid "Go to Tasks" +#~ msgstr "Gå til Oppgaver" -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Webapplikasjon" +#~ msgid "New Time Entry" +#~ msgstr "Ny tidsregistrering" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Desktop-nettlesere (Chrome, Firefox, Safari, Edge)" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Tastatursnarveier" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Mobil responsiv design" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Naviger raskere med tastaturdrevne kommandoer." +#~ " Trykk Shift+? for å se alle " +#~ "snarveiene." -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "Progressive Web App (PWA)" +#~ msgid "Global Search" +#~ msgstr "Globalt søk" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Berøringsvennlig nettbrettgrensesnitt" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "Finn raskt prosjekter, oppgaver, klienter " +#~ "og tidsregistreringer fra hvor som helst" +#~ " i appen." -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Operativsystemer" +#~ msgid "Email Notifications" +#~ msgstr "E-postvarsler" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Bli varslet om oppgavetildelinger, forfalte" +#~ " fakturaer og ukentlige sammendrag via " +#~ "e-post." -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android og iOS (nettleser)" +#~ msgid "Administrator Features" +#~ msgstr "Administratorfunksjoner" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Raspberry Pi-støtte" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Opprett nye brukere med fleksibel autentisering" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Dockerisert utplassering" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Tilordne tilpassede roller med spesifikke tillatelser" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Databasestøtte" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Aktiver/deaktiver brukerkontoer" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (anbefalt)" +#~ msgid "View user statistics and activity" +#~ msgstr "Se brukerstatistikk og aktivitet" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (utvikler/test)" +#~ msgid "Generate API tokens for users" +#~ msgstr "Generer API-tokens for brukere" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Automatiske migreringer med Flask-Migrate" +#~ msgid "Access Control" +#~ msgstr "Tilgangskontroll" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Verktøy for sikkerhetskopiering og gjenoppretting" +#~ msgid "Granular role-based permissions system" +#~ msgstr "Granulært rollebasert tillatelsessystem" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Tekniske spesifikasjoner" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Egendefinerte roller med finmasket tilgang" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Teknologistabel" +#~ msgid "User data access controls" +#~ msgstr "Tilgangskontroller for brukerdata" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "Backend" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "OIDC/SSO-integrasjon (Azure AD, Authelia, etc.)" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "Frontend" +#~ msgid "API token management for integrations" +#~ msgstr "API-tokenadministrasjon for integrasjoner" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Utplassering" +#~ msgid "Authentication Methods" +#~ msgstr "Autentiseringsmetoder" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Nøkkelegenskaper" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Kun brukernavn (enkel intern bruk)" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "Sanntid" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (bedriftsautentisering)" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "Both methods simultaneously" +#~ msgstr "Begge metodene samtidig" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "Åpen kildekode og fellesskap" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Automatisk rolletildeling via grupper" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Fordeler med åpen kildekode" +#~ msgid "Role & Permission Management" +#~ msgstr "Rolle- og tillatelsesadministrasjon" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Full kildekode tilgjengelig på GitHub" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Opprett egendefinerte roller utover Admin/Bruker" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Lisensiert under GPL v3.0" +#~ msgid "Set granular permissions per feature" +#~ msgstr "Angi detaljerte tillatelser per funksjon" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Samfunnsdrevet utvikling" +#~ msgid "Assign users to multiple roles" +#~ msgstr "Tilordne brukere til flere roller" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Transparent problemsporing og feilrapporter" +#~ msgid "View and manage all permissions" +#~ msgstr "Se og administrer alle tillatelser" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Distribusjonsalternativer" +#~ msgid "General Settings" +#~ msgstr "Generelle innstillinger" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Docker-bilder (GHCR)" +#~ msgid "Timezone and locale settings" +#~ msgstr "Tidssone og lokale innstillinger" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Selvdrevet distribusjon med full kontroll" +#~ msgid "Currency configuration" +#~ msgstr "Valutakonfigurasjon" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Sky-klar med Compose-konfigurasjoner" +#~ msgid "Time rounding rules" +#~ msgstr "Tidsavrundingsregler" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Se på GitHub" +#~ msgid "Self-registration settings" +#~ msgstr "Innstillinger for selvregistrering" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "Støttede funksjoner" +#~ msgid "Timer Settings" +#~ msgstr "Timerinnstillinger" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Idle timeout configuration" +#~ msgstr "Konfigurasjon av inaktiv tidsavbrudd" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Single active timer mode" +#~ msgstr "Enkel aktiv timer-modus" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "Timer display preferences" +#~ msgstr "Timervisningspreferanser" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Få hjelp og ressurser" +#~ msgid "Notification settings" +#~ msgstr "Varslingsinnstillinger" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Dokumentasjon" +#~ msgid "Database Management" +#~ msgstr "Databasehåndtering" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Trinn-for-trinn guider for alle funksjoner." +#~ msgid "Create manual database backups" +#~ msgstr "Lag manuell sikkerhetskopiering av databaser" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Se hjelp" +#~ msgid "View database migration status" +#~ msgstr "Se databasemigreringsstatus" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Systeminformasjon" +#~ msgid "Monitor database performance" +#~ msgstr "Overvåk databaseytelse" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Status, versjoner og konfigurasjonsdetaljer." +#~ msgid "Clean up old data and logs" +#~ msgstr "Rydd opp i gamle data og logger" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "Administratortilgang kreves" +#~ msgid "System Monitoring" +#~ msgstr "Systemovervåking" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Fellesskapsstøtte" +#~ msgid "View system information and health" +#~ msgstr "Se systeminformasjon og helse" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Rapporter problemer, be om funksjoner, bidra." +#~ msgid "Monitor application performance" +#~ msgstr "Overvåk applikasjonsytelsen" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "GitHub-problemer" +#~ msgid "Review system logs and errors" +#~ msgstr "Se gjennom systemlogger og feil" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Mobilvennlige funksjoner" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "Se alle tidsregistreringer" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "Her er en rask oversikt over arbeidet ditt." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "Opprettet kl" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Optimalisert for telefoner og nettbrett" -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "Pause" +#~ msgid "Touch-friendly interface" +#~ msgstr "Berøringsvennlig grensesnitt" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "Tilbake" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "Adaptive oppsett for alle skjermstørrelser" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Høy kontrast for utendørs synlighet" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Mobile Navigation" +#~ msgstr "Mobilnavigasjon" -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Startet kl" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Nederste fanelinje for enkel tilgang" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Quick access to dashboard" +#~ msgstr "Rask tilgang til dashbordet" -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "Innstilling" +#~ msgid "One-tap time logging" +#~ msgstr "Ett-trykks logging" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Mobile-optimized reports" +#~ msgstr "Mobiloptimaliserte rapporter" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Installation" +#~ msgstr "Installasjon" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "Admin" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "Admin" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "Smarte timere" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "Tilbakestill" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Åpne TimeTracker i mobilnettleseren din" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Pause" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Se etter alternativet \"Legg til på startskjermen\"." -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Følg nettleserspesifikke installasjonsveiledninger" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Start fra startskjermen som en innebygd app" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Ingen aktiv timer." +#~ msgid "PWA Benefits" +#~ msgstr "PWA-fordeler" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "Offline-funksjon for grunnleggende funksjoner" + +#~ msgid "Faster loading times" +#~ msgstr "Raskere lastetider" + +#~ msgid "Native app-like experience" +#~ msgstr "Innfødt app-lignende opplevelse" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Push-varsler (der det støttes)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "Interaktive søylediagrammer" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "Tekniske spesifikasjoner" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "Dokumentasjon" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Feilsøking og vanlige spørsmål" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "Hva skjer hvis jeg glemmer å stoppe timeren min?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "Tidtakeren vil fortsette å gå til " +#~ "du stopper den manuelt. Du kan se" +#~ " din aktive tidtaker på dashbordet og" +#~ " tidtakersiden. Tidtakeren vedvarer selv om" +#~ " du lukker nettleseren eller starter " +#~ "enheten på nytt. Hvis tomgangsdeteksjon " +#~ "er aktivert, kan tidtakeren pause " +#~ "automatisk etter den konfigurerte " +#~ "tidsavbruddsperioden." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "Kan jeg redigere tidsoppføringer etter at de er opprettet?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Ja, du kan redigere hvilken som " +#~ "helst tidsregistrering ved å klikke på" +#~ " rediger-knappen i tidsregistreringslisten. " +#~ "Du kan endre prosjektet, " +#~ "start-/sluttidspunkter, notater, tagger, fakturerbar" +#~ " status og oppgavetildeling. Administratorer " +#~ "kan redigere alle tidsoppføringer, mens " +#~ "vanlige brukere bare kan redigere sine" +#~ " egne oppføringer." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "Hvordan sporer jeg tid for flere prosjekter?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "Som standard kan du bare ha én " +#~ "aktiv timer om gangen. For å bytte" +#~ " prosjekt, stopp den nåværende tidtakeren" +#~ " og start en ny for det andre" +#~ " prosjektet. Alternativt kan du opprette" +#~ " manuelle tidsregistreringer for tidligere " +#~ "arbeid eller konfigurere systemet til å" +#~ " tillate flere aktive tidtakere (admin-" +#~ "innstilling)." + +#~ msgid "How do I export my time data?" +#~ msgstr "Hvordan eksporterer jeg tidsdataene mine?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Gå til Rapporter-siden og bruk " +#~ "\"Eksporter CSV\"-funksjonen. Du kan bruke " +#~ "filtre for å eksportere spesifikke data," +#~ " eller eksportere alle tidsoppføringer. " +#~ "CSV-filen inneholder informasjon om alle" +#~ " tider og kan åpnes i Excel " +#~ "eller andre regnearkapplikasjoner. Du kan " +#~ "også konfigurere skilletegnet for forskjellige" +#~ " regionale standarder." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "Hva er forskjellen mellom fakturerbar og ikke-fakturerbar tid?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "Fakturerbar tid spores for " +#~ "klientfaktureringsformål og kan ha en " +#~ "timepris knyttet til seg. Ikke-" +#~ "fakturerbar tid er for internt arbeid" +#~ " som ikke belastes klienter. Du kan" +#~ " merke individuelle tidsoppføringer som " +#~ "fakturerbare eller ikke-fakturerbare, og " +#~ "prosjekter kan ha standard fakturerbare " +#~ "innstillinger. Dette skillet er avgjørende " +#~ "for nøyaktig fakturering og " +#~ "lønnsomhetsanalyse." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "Hvordan lager jeg en faktura fra mine tidsregistreringer?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Naviger til Fakturaer → Opprett faktura," +#~ " konfigurer klient- og prosjektdetaljene, " +#~ "og bruk deretter \"Generer fra " +#~ "tidsregistreringer\" for automatisk å opprette" +#~ " fakturaelementer fra din sporede tid. " +#~ "Du kan filtrere etter datoperiode og " +#~ "prosjekt, og systemet vil gruppere " +#~ "tidsregistreringer intelligent. Se gjennom de" +#~ " genererte elementene og eksporter som " +#~ "en profesjonell PDF." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "Kan jeg bruke TimeTracker på mobilenheten min?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "Ja! TimeTracker er fullstendig responsiv " +#~ "og fungerer utmerket på mobile enheter." +#~ " Du kan installere den som en " +#~ "Progressive Web App (PWA) for en " +#~ "innfødt-lignende opplevelse. Mobilgrensesnittet " +#~ "inkluderer en bunnfanelinje for enkel " +#~ "navigering og berøringsoptimaliserte kontroller " +#~ "for tidsregistrering mens du er på " +#~ "farten." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "Hvordan bruker jeg kommandopaletten og hurtigtastene?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Trykk på spørsmålstegn-tasten (?) for" +#~ " å åpne kommandopaletten. Derfra kan " +#~ "du skrive for å søke etter hvilken" +#~ " som helst handling eller navigasjonsmål." +#~ " Bruk tastatursekvenser som \"g d\" " +#~ "for Dashboard, \"g p\" for Projects, " +#~ "eller \"n e\" for New Entry. Trykk" +#~ " Shift+? for å se alle tilgjengelige" +#~ " snarveier. Trykk Ctrl+K (eller Cmd+K " +#~ "på Mac) for raskt søk." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "Hvordan oppretter jeg massetidsoppføringer for flere dager?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Naviger til Arbeid → Massetidsregistrering." +#~ " Velg prosjektet ditt, velg en " +#~ "datoperiode, angi daglige start- og " +#~ "sluttider, og hopp over helger. Systemet" +#~ " vil opprette identiske tidsregistreringer " +#~ "for hver dag i området. Dette er" +#~ " perfekt for å logge vanlige " +#~ "arbeidsmønstre eller fylle ut tidligere " +#~ "tider når du har jobbet konsekvente " +#~ "timer." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "Hva er tidsregistreringsmaler og hvordan bruker jeg dem?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "Tidsregistreringsmaler lar deg lagre ofte " +#~ "brukte tidsregistreringskonfigurasjoner. Når du " +#~ "oppretter en manuell tidsregistrering, merker" +#~ " du av for \"Lagre som mal\" " +#~ "for å lagre prosjektet, oppgaven og " +#~ "notatene. Senere, når du oppretter nye" +#~ " oppføringer, kan du velge en mal " +#~ "for raskt å fylle ut disse " +#~ "detaljene. Maler er personlige og kun" +#~ " synlige for deg." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "Hvordan sporer jeg utgifter og legger dem til på fakturaer?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Gå til Utgifter → Nye utgifter for" +#~ " å registrere forretningsutgifter. Last opp" +#~ " kvitteringsbilder, kategoriser utgiften og " +#~ "merk den som fakturerbar om nødvendig." +#~ " Når du oppretter fakturaer, kan du" +#~ " inkludere disse utgiftene som linjeposter." +#~ " Utgifter støtter godkjenningsarbeidsflyter, " +#~ "refusjonssporing og kan knyttes til " +#~ "spesifikke prosjekter." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "Kan jeg bruke Markdown i beskrivelser?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "Ja! Prosjekt- og oppgavebeskrivelser støtter" +#~ " full Markdown-formatering. Du kan " +#~ "bruke fet skrift, kursiv, overskrifter, " +#~ "lister, lenker, kodeblokker, tabeller og " +#~ "bilder. Dette lar deg lage rik, " +#~ "velformatert dokumentasjon direkte i " +#~ "prosjektene og oppgavene dine. Markdown-" +#~ "editoren inkluderer en forhåndsvisningsmodus " +#~ "og støtter mørkt tema." + +#~ msgid "Where can I get additional help?" +#~ msgstr "Hvor kan jeg få ekstra hjelp?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "Rapporter problemer og be om funksjoner på" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "Som administrator kan du få tilgang " +#~ "til ytterligere systeminformasjon og " +#~ "diagnostikk i" + +#~ msgid "section." +#~ msgstr "del." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "Trenger du fortsatt hjelp?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "Finner du ikke det du leter etter? Her er tilleggsressurser:" + +#~ msgid "Complete Documentation" +#~ msgstr "" + +#~ msgid "Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started" +#~ msgstr "" + +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "Avslutt økten" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "GitHub Repository" -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "Report Issue" +#~ msgstr "Rapporter problem" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "Tid" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "Open support" +#~ msgstr "Støtte" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Search Results" +#~ msgstr "Søkeresultater" -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "Overtidsinnstillinger" +#~ msgid "Search notes or tags" +#~ msgstr "Søk i notater eller tagger" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "Results" +#~ msgstr "Resultater" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette denne tidsoppføringen? Denne handlingen" +#~ " kan ikke angres." -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "No results found" +#~ msgstr "Ingen resultater funnet" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "Høyrejuster" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "Prøv et annet søk eller sjekk stavemåten." -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "Spor tid. Hold deg organisert." +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "f.eks. kundemøte, nettstedsbesøk" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "Totalt arbeidede timer" +#~ msgid "Additional details..." +#~ msgstr "Ytterligere detaljer..." -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "Aktive varsler" +#~ msgid "e.g., Office, Home" +#~ msgstr "f.eks. kontor, hjemme" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "f.eks. klientside, flyplass" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "f.eks. 12345" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "f.eks. 12400" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "e.g., VW Golf" +#~ msgstr "for eksempel VW Golf" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "Estimert verdi" +#~ msgid "e.g., ABC-123" +#~ msgstr "f.eks. ABC-123" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "Tidssporing" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Back to Mileage" +#~ msgstr "Tilbake til Roller" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "Tidsposter denne uken" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "Dato fra" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "Uke" +#~ msgid "Add Point" +#~ msgstr "Legg til merknad" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "I fjor" +#~ msgid "Create Expense from Track" +#~ msgstr "Utgiftssporing" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "Track ID" +#~ msgstr "Sporet" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Idle" +#~ msgstr "Tittel" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Nylige oppføringer" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "Vis alle" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Fortsett - Start en ny tidtaker med samme egenskaper" +#~ msgid "Tracking" +#~ msgstr "Tidssporing" -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Rediger oppføring" +#~ msgid "GPS tracking started" +#~ msgstr "Start sporingstid" -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Duplisert oppføring" +#~ msgid "Track point added" +#~ msgstr "Spor betaling" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Slett oppføring" +#~ msgid "GPS tracking stopped" +#~ msgstr "Start sporingstid" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "Ingen nylige oppføringer funnet." +#~ msgid "Expense created" +#~ msgstr "Utgift avvist" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Filter Mileage" +#~ msgstr "Filter kjørelengde" -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Ukentlig mål" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Dager igjen" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Behov" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "å nå målet" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Ingen ukemål" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Sett et ukentlig tidsmål for å spore fremgangen din" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Lag mål" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "Toppprosjekter (30 dager)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "Brukerrapport" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "Tidsfordeling kakediagrammer" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "Ingen aktivitet de siste 30 dagene." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "Start sporingstid" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Toppprosjekter (30 dager)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Ingen aktivitet de siste 30 dagene." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Purpose, location..." +#~ msgstr "Formål, plassering..." -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Optional approval notes..." +#~ msgstr "Valgfrie godkjenningsnotater..." -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "Duplisert %(count)d sitat(er)" +#~ msgid "Rejection reason (required)" +#~ msgstr "Årsak til avvisning (obligatorisk)" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "Feil ved generering av PDF: %(error)s" +#~ msgid "More navigation" +#~ msgstr "Mobilnavigasjon" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "Main" +#~ msgstr "E-post" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "Plattformstøtte" +#~ msgid "Type a command or search..." +#~ msgstr "Skriv inn en kommando eller søk..." -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "Passordet må være minst 8 tegn langt" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "Hurtigstartguide" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "E-postmaler" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Oppgave (valgfritt)" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Merknader (valgfritt)" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "Oppgave (valgfritt)" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "f.eks. møte, utvikling, admin" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "Registrer ny betaling" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "Totale betalinger" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "Gateway-avgifter" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Støtte utvikling" +#~ msgid "Filter Payments" +#~ msgstr "Filtrer betalinger" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "ID" +#~ msgstr "Betalt" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "Slett valgte betalinger" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Endre status for utvalgte betalinger" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "Relatert faktura" -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "for eksempel forretningsreise til Berlin" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "f.eks. DE, USA, GB" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "e.g., Berlin" +#~ msgstr "f.eks. Berlin" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "Filtrer krav" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "Slett valgte krav" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Endre status for utvalgte krav" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "Ytterligere merknader om denne prisen..." -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "Er du sikker på at du vil slette denne dagpengene?" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Slett dagpengetakst" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "Fakturerbart prosjekt" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "Beregnet timer" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "Budsjettbeløp" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "Oppgavenavn" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "Prosjektkode" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Komplett dokumentasjon og brukerveiledning" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Rask navigering" +#~ msgid "Create Project" +#~ msgstr "Opprett prosjekt" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Filtrer deler..." +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Rask start" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Rapporter og analyser" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Produktivitetsfunksjoner" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Administrasjonsfunksjoner" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Mobilbruk" +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "Dokumentasjon" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Feilsøking" +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "TimeTracker Hjelpesenter" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "Alt du trenger å vite for å få mest mulig ut av TimeTracker" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Start sporingstid" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Se prosjekter" +#~ msgid "Kanban board columns" +#~ msgstr "Kanban-tavlesøyler" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Generer rapporter" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "API-tokens" +#~ msgid "Edit swimlane" +#~ msgstr "Rediger svømmebane" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "Column" +#~ msgstr "Søyle" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Hurtigstartguide" +#~ msgid "List View" +#~ msgstr "Listevisning" -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "For nye brukere" +#~ msgid "Grid View" +#~ msgstr "Rutenettvisning" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Logg inn med brukernavnet ditt (ikke nødvendig med passord)" +#~ msgid "Rate" +#~ msgstr "Dato" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Utforsk dashbordet for å se oversikten din" +#~ msgid "Edit Project" +#~ msgstr "Rediger prosjekt" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Start din første tidtaker på et eksisterende prosjekt" +#~ msgid "Add Cost" +#~ msgstr "Legg til merknad" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Se dine tidsregistreringer i rapporter" +#~ msgid "Add Cost to Project" +#~ msgstr "Tilbake til prosjektet" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "For administratorer" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "for eksempel reise til kundemøte" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Sett opp klienter i Client Management-delen" +#~ msgid "Brief description of the cost" +#~ msgstr "Kort beskrivelse av denne kategorien..." -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Lag prosjekter og tilordne dem til kunder" +#~ msgid "Select category" +#~ msgstr "Kategori" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Konfigurer systeminnstillinger (tidssone, valuta osv.)" +#~ msgid "Materials" +#~ msgstr "Materiale" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Administrer brukere og tillatelser" +#~ msgid "Software/Licenses" +#~ msgstr "f.eks. programvarelisens" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Pro tips:" +#~ msgid "Additional details about this cost" +#~ msgstr "Ytterligere detaljer om denne justeringen" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "Bruk det mobilvennlige grensesnittet for å spore tid mens du er på farten. Timeren fortsetter å kjøre selv om du lukker nettleseren!" +#~ msgid "Billable to client" +#~ msgstr "Tilbake til klienten" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "Sanntidssporing med automatisk tomgangsdeteksjon og WebSocket-oppdateringer" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Manuell inntasting" +#~ msgid "Add Extra Good" +#~ msgstr "Legg til Extra Good" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "Logg tid manuelt med tilpassede start- og sluttider" +#~ msgid "Add a product or service to" +#~ msgstr "Legg til et produkt eller en tjeneste" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Starte en timer" +#~ msgid "Back to Project" +#~ msgstr "Tilbake til prosjektet" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "SKU/Product Code" +#~ msgstr "SKU/produktkode" -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "Naviger til Timer-siden eller dashbordet" +#~ msgid "What happens when you archive a project?" +#~ msgstr "Hva skjer når du arkiverer et prosjekt?" -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Velg et prosjekt fra rullegardinmenyen" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "Prosjektet vil være skjult fra aktive prosjektlister" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "Velg eventuelt en oppgave for mer detaljert sporing" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "Ingen nye tidsregistreringer kan legges til dette prosjektet" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Legg til notater om det du jobber med (valgfritt)" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "Eksisterende data og tidsregistreringer er bevart" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Legg til tagger atskilt med komma (valgfritt)" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "Du kan dearkivere prosjektet senere hvis nødvendig" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Klikk \"Start timer\"" +#~ msgid "Reason for Archiving" +#~ msgstr "Årsak til arkivering" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Timer funksjoner" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "for eksempel prosjekt fullført, klientkontrakt" +#~ " avsluttet, prosjekt kansellert, etc." -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Visning av varighet i sanntid" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "Å legge til en årsak hjelper med" +#~ " prosjektorganisering og fremtidig referanse." -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "Quick Select" +#~ msgstr "Hurtigvalg" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Project completed successfully" +#~ msgstr "Prosjekt fullført vellykket" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Project Completed" +#~ msgstr "Prosjekt fullført" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Fortsetter å kjøre hvis nettleseren lukkes" +#~ msgid "Client contract ended" +#~ msgstr "Kundekontrakten ble avsluttet" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Automatisk tomgangsdeteksjon (konfigurerbar)" +#~ msgid "Contract Ended" +#~ msgstr "Kontrakt avsluttet" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Én aktiv timer per bruker (konfigurerbar)" +#~ msgid "Project cancelled by client" +#~ msgstr "Prosjekt kansellert av klient" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "WebSocket live-oppdateringer" +#~ msgid "Project on hold indefinitely" +#~ msgstr "Prosjekt på vent på ubestemt tid" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Manuell tidsinntasting" +#~ msgid "On Hold" +#~ msgstr "På vent" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "Opprett tidsoppføringer manuelt når du trenger å registrere tid brukt borte fra datamaskinen eller justere eksisterende oppføringer." +#~ msgid "Maintenance period ended" +#~ msgstr "Vedlikeholdsperioden er over" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Nødvendig informasjon" +#~ msgid "Maintenance Ended" +#~ msgstr "Vedlikehold avsluttet" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Prosjektvalg" +#~ msgid "Archive Project" +#~ msgstr "Arkivprosjekt" -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Startdato og klokkeslett" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" +#~ "Sett opp et nytt prosjekt for å" +#~ " organisere arbeidet ditt og spore " +#~ "tid effektivt" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Sluttdato og klokkeslett" +#~ msgid "Enter a descriptive project name" +#~ msgstr "Skriv inn et beskrivende prosjektnavn" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Valgfri informasjon" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "Velg et klart, beskrivende navn som forklarer prosjektets omfang" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Oppgaveoppgave" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Kortkode, f.eks. ABC" -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Beskrivelse/notater" +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Valgfritt: Kort tag vist på Kanban-kort" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Tagger for kategorisering" +#~ msgid "Create new client" +#~ msgstr "Opprett ny klient" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Fakturerbar statusoverstyring" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "Gi detaljert informasjon om prosjektet, mål og leveranser..." -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Avanserte tidsregistreringsfunksjoner" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "Valgfritt: Legg til kontekst, mål eller spesifikke krav for prosjektet" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Masseinngang" +#~ msgid "Enable billing for this project" +#~ msgstr "Aktiver fakturering for dette prosjektet" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "Opprett flere tidsoppføringer for påfølgende dager med samme prosjekt og varighet. Perfekt for vanlige arbeidsmønstre." +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "La stå tomt for ikke-fakturerbare prosjekter" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Maler" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "PO-nummer, kontraktsreferanse osv." -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "Lagre ofte brukte tidsoppføringer som maler for rask gjenbruk. Lagrer prosjekt, oppgave og notater." +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" +#~ "Valgfritt: Legg til et referansenummer " +#~ "eller identifikator for faktureringsformål" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "Visualiser tidsregistreringene dine i en kalender. Dra og slipp for å endre tidsplanen eller klikk på datoer for å legge til oppføringer." +#~ msgid "e.g. 10000.00" +#~ msgstr "f.eks. 10000,00" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Prosjektinformasjon" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "Valgfritt: Angi et totalt prosjektbudsjett for å overvåke forbruket" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Beskrivende prosjektnavn" +#~ msgid "Alert Threshold (%)" +#~ msgstr "Varselterskel (%)" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Tilknyttet kundeorganisasjon" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "Gi beskjed når forbrukt budsjett overskrider denne terskelen" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Prosjektdetaljer og omfang" +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Aktiv, fullført eller arkivert" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Faktureringsinformasjon" +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Om tid skal spores for fakturering" +#~ msgid "Project Creation Tips" +#~ msgstr "Tips om prosjektoppretting" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Sats for fakturerbar tidsberegninger" +#~ msgid "Clear Naming" +#~ msgstr "Fjern navn" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Faktureringsreferanse" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "Bruk beskrivende navn som tydelig indikerer prosjektets formål" -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "PO-nummer eller faktureringskode" +#~ msgid "Billing Setup" +#~ msgstr "Faktureringsoppsett" -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Prosjektdrift" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Sett passende timepriser basert på " +#~ "prosjektkompleksitet og klientbudsjett" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Opprette nye prosjekter med kunderelasjoner" +#~ msgid "Detailed Description" +#~ msgstr "Detaljert beskrivelse" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Rediger eksisterende prosjekter for å oppdatere detaljer" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "Inkluder prosjektmål, leveranser og nøkkelkrav" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Arkiver prosjekter for å skjule fra tidtakere (bevarer data)" +#~ msgid "Client Selection" +#~ msgstr "Kundevalg" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Slett prosjekter (fjerner alle tilknyttede tidsoppføringer)" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "Velg riktig klient for å sikre riktig prosjektorganisering" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Beste praksis" +#~ msgid "Creating..." +#~ msgstr "Oppretter ..." -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Bruk beskrivende prosjektnavn" +#~ msgid "Could not create client. Please try again." +#~ msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Angi nøyaktige timepriser for fakturering" +#~ msgid "Client created" +#~ msgstr "Klient opprettet" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Arkiver i stedet for slett når det er mulig" +#~ msgid "Network error while creating client" +#~ msgstr "Nettverksfeil under oppretting av klient" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Bruk faktureringsreferanser for ekstern sporing" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "Prosjektdashbord og analyse" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "Klientadministrasjonssystemet hjelper til med å organisere arbeidet ditt etter kundeorganisasjoner, forhindrer feil og effektiviserer prosjektoppretting." +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Kundeinformasjon" +#~ msgid "Budget Analysis" +#~ msgstr "Budsjettanalyse" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Organisasjonsnavn" +#~ msgid "All Time" +#~ msgstr "Hele tiden" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Firma- eller klientnavn" +#~ msgid "Last 7 Days" +#~ msgstr "Siste 7 dager" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Primær kontaktinformasjon" +#~ msgid "Last 30 Days" +#~ msgstr "Siste 30 dager" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "E-post og telefon" +#~ msgid "Last 3 Months" +#~ msgstr "Siste 3 måneder" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Kontaktinformasjon" +#~ msgid "Last Year" +#~ msgstr "I fjor" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Bedriftsadresse" +#~ msgid "estimated" +#~ msgstr "estimert" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Fordeler" +#~ msgid "Budget Used" +#~ msgstr "Budsjett brukt" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "Rullegardinvalg forhindrer skrivefeil" +#~ msgid "of budget" +#~ msgstr "av budsjettet" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Standardpriser fyller prosjekter ut automatisk" +#~ msgid "Tasks Complete" +#~ msgstr "Oppgaver fullført" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Konsekvent klientnavn" +#~ msgid "completion" +#~ msgstr "ferdigstillelse" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Enklere prosjektorganisering" +#~ msgid "Team Members" +#~ msgstr "Teammedlemmer" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Prosjektantall" +#~ msgid "contributing" +#~ msgstr "bidrar" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Totale og aktive prosjekter" +#~ msgid "Budget vs. Actual" +#~ msgstr "Budsjett kontra faktisk" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Totalt arbeidede timer" +#~ msgid "No budget set for this project" +#~ msgstr "Det er ikke satt opp budsjett for dette prosjektet" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Kostnadsestimat" +#~ msgid "Task Status Distribution" +#~ msgstr "Distribusjon av oppgavestatus" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Anslåtte faktureringsbeløp" +#~ msgid "No tasks created yet" +#~ msgstr "Ingen oppgaver opprettet ennå" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "Bryt ned prosjekter i håndterbare oppgaver med detaljert sporing og fremdriftsovervåking." +#~ msgid "Team Member Contributions" +#~ msgstr "Teammedlemsbidrag" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Oppgaveegenskaper" +#~ msgid "No time entries recorded yet" +#~ msgstr "Ingen tidsregistreringer registrert ennå" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Navn og beskrivelse" +#~ msgid "Time Tracking Timeline" +#~ msgstr "Tidssporing Tidslinje" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Tydelig oppgaveidentifikasjon" +#~ msgid "Select a time period to view timeline" +#~ msgstr "Velg en tidsperiode for å se tidslinjen" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Prioriterte nivåer" +#~ msgid "Team Member Details" +#~ msgstr "Teammedlemsdetaljer" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Lav, Middels, Høy, Haster" +#~ msgid "tasks" +#~ msgstr "oppgaver" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Forfallsdatoer" +#~ msgid "No team members have logged time yet" +#~ msgstr "Ingen teammedlemmer har logget tid ennå" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Tidsfristsporing" +#~ msgid "Attention Required" +#~ msgstr "Oppmerksomhet kreves" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Tildeling" +#~ msgid "task(s) are overdue" +#~ msgstr "oppgave(r) er forfalt" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Oppgaveeierskap" +#~ msgid "Edit Cost" +#~ msgstr "Enhetskostnad" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Statussporing" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "Å gjøre - Ikke startet" +#~ msgid "Update Cost" +#~ msgstr "Oppdater roller" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "Pågår - jobber for tiden" +#~ msgid "Edit Extra Good" +#~ msgstr "Rediger Ekstra Bra" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Anmeldelse - Klar for anmeldelse" +#~ msgid "Manage products and services for this project" +#~ msgstr "Administrer produkter og tjenester for dette prosjektet" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Ferdig - Fullført" +#~ msgid "Total Goods" +#~ msgstr "Totale varer" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Kansellert - ikke nødvendig" +#~ msgid "Billable Amount" +#~ msgstr "Fakturerbart beløp" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Tidssporingsfunksjoner" +#~ msgid "Categories" +#~ msgstr "Kategorier" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Start tidtakere direkte fra oppgaver" +#~ msgid "Invoiced" +#~ msgstr "Fakturert" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Koble tidsoppføringer til spesifikke oppgaver" +#~ msgid "Non-billable" +#~ msgstr "Ikke fakturerbar" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Spor anslåtte kontra faktiske timer" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Er du sikker på at du vil slette denne ekstra varen?" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Overvåk oppgavefremdriften automatisk" +#~ msgid "Delete Extra Good" +#~ msgstr "Slett Extra Good" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Oppgavevisninger" +#~ msgid "No extra goods found for this project" +#~ msgstr "Ingen ekstra varer funnet for dette prosjektet" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Mine oppgaver - Dine tildelte oppgaver" +#~ msgid "Add Your First Good" +#~ msgstr "Legg til ditt første gode" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Alle oppgaver - Komplett oppgaveliste" +#~ msgid "Breakdown by Category" +#~ msgstr "Fordeling etter kategori" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Forfalte oppgaver - Forfalte varer" +#~ msgid "item(s)" +#~ msgstr "vare(r)" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Prosjektoppgaver - Oppgaver innenfor prosjekter" +#~ msgid "Filter Projects" +#~ msgstr "Filtrer prosjekter" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Samarbeidsfunksjoner" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Oppgavekommentarer - Trådede diskusjoner om oppgaver" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Markdown Support - Rik formatering i beskrivelser" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Brukeromtaler – Tag teammedlemmer (hvis aktivert)" +#~ msgid "Mark project as Inactive?" +#~ msgstr "Vil du merke prosjektet som inaktivt?" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Filvedlegg - Legg ved filer til oppgaver (hvis aktivert)" +#~ msgid "Change Project Status" +#~ msgstr "Endre prosjektstatus" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Markdown-formatering" +#~ msgid "Activate project?" +#~ msgstr "Aktivere prosjektet?" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "Oppgave- og prosjektbeskrivelser støtter Markdown:" +#~ msgid "Activate Project" +#~ msgstr "Aktiver prosjekt" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Fet**, *kursiv*, ~~gjennomstreking~~" +#~ msgid "Archive" +#~ msgstr "Arkiv" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# Overskrifter, - Lister, [Links](url)" +#~ msgid "Unarchive project?" +#~ msgstr "Vil du fjerne prosjektet fra arkivet?" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```kodeblokker```, tabeller, bilder" +#~ msgid "Unarchive Project" +#~ msgstr "Unarchive Project" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "Visualiser arbeidsflyten din med et dra-og-slipp Kanban-tavle for intuitiv oppgavebehandling." +#~ msgid "Unarchive" +#~ msgstr "Avarkiver" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Brettfunksjoner" +#~ msgid "Delete Project" +#~ msgstr "Slett prosjekt" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Tilpassbare kolonner som samsvarer med oppgavestatuser" +#~ msgid "Archive Information" +#~ msgstr "Arkivinformasjon" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Dra og slipp oppgaver mellom kolonner" +#~ msgid "Archived on:" +#~ msgstr "Arkivert på:" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Filtrer etter prosjekt, bruker eller prioritet" +#~ msgid "Archived by:" +#~ msgstr "Arkivert av:" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Rask søk ​​på tvers av alle oppgaver" +#~ msgid "Reason:" +#~ msgstr "Grunn:" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Bruke Kanban-tavlen" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Tilgang fra Oppgaver-menyen eller prosjektsiden" +#~ msgid "Budget Overview" +#~ msgstr "Budsjettoversikt" -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Dra oppgaver til forskjellige kolonner for å endre status" +#~ msgid "Over" +#~ msgstr "Over" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Klikk på et oppgavekort for å se/redigere detaljer" +#~ msgid "View Full Budget Analysis" +#~ msgstr "Se hele budsjettanalysen" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Bruk filtre for å fokusere på spesifikt arbeid" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "Kanban-brettet er perfekt for sprintplanlegging og daglige standups. Hver kolonne representerer et stadium i arbeidsflyten din!" +#~ msgid "Tasks for this project" +#~ msgstr "Oppgaver for dette prosjektet" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Utgiftssporing" +#~ msgid "Due" +#~ msgstr "Forfaller" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "Spor forretningsutgifter, administrer kvitteringer og håndter refusjoner effektivt." +#~ msgid "Estimated" +#~ msgstr "Estimert" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Utgiftsfunksjoner" +#~ msgid "No tasks for this project." +#~ msgstr "Ingen oppgaver for dette prosjektet." -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Kategoriser utgifter (reise, måltider, forsyninger, etc.)" +#~ msgid "Move up" +#~ msgstr "flyttet til" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Legg ved kvitteringsbilder og dokumenter" +#~ msgid "Move down" +#~ msgstr "flyttet til" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Spor beløp, skatter og betalingsmåter" +#~ msgid "Manual entry" +#~ msgstr "Manuell inntasting" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Godkjenningsarbeidsflyt for utgiftsforespørsler" +#~ msgid "From stock" +#~ msgstr "Lite lager" -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Fakturering og refusjon" +#~ msgid "Duplicate" +#~ msgstr "Kopiere" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Merk utgifter som fakturerbare til klienter" +#~ msgid "Mark as Sent" +#~ msgstr "Merk som sendt" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Inkluder utgifter i klientfakturaer" +#~ msgid "Accepted" +#~ msgstr "Godtatt" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Spor refusjonsstatus" +#~ msgid "Create Your First Quote" +#~ msgstr "Lag ditt første sitat" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Koble utgifter til konkrete prosjekter" +#~ msgid "Learn More" +#~ msgstr "Lær mer" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Rekord utgift" +#~ msgid "Back to Quote" +#~ msgstr "Tilbake til sitat" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Skriv inn detaljer og last opp kvittering" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" +#~ "Å godta dette tilbudet vil opprette " +#~ "et nytt prosjekt med budsjettet fra " +#~ "tilbudet." -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Send inn for godkjenning" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "Prosjektet vil bli opprettet med budsjettet fra tilbudet" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "Administrator vurderer og godkjenner" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Godta tilbud og opprett prosjekt" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Faktura/Refusjon" +#~ msgid "Create Quote" +#~ msgstr "Opprett tilbud" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Legg til faktura eller refunder" +#~ msgid "Quote title" +#~ msgstr "Sitattittel" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Spor betaling" +#~ msgid "Quote description" +#~ msgstr "Sitatbeskrivelse" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Overvåke refusjonsstatus" +#~ msgid "Quote line items" +#~ msgstr "Sitat elementer" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Profesjonell fakturering" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Profesjonell PDF-generering" +#~ msgid "Add line" +#~ msgstr "Frist" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Bedriftens merkevarebygging og logoer" +#~ msgid "Line type" +#~ msgstr "Innholdstype" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Automatisk fakturanummerering" +#~ msgid "Stock" +#~ msgstr "Lite lager" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Skatteberegninger" +#~ msgid "Line items subtotal" +#~ msgstr "Elementer Subtotal" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Tidsintegrasjon" +#~ msgid "Costs" +#~ msgstr "Koste" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Generer fra tidsregistreringer" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "f.eks. REISER, MÅLTID" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Smart gruppering etter oppgave/prosjekt" +#~ msgid "Add cost" +#~ msgstr "Legg til merknad" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Unngå dobbeltfakturering" +#~ msgid "Costs subtotal" +#~ msgstr "Elementer Subtotal" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Bruk prosjekttimepriser" +#~ msgid "Extra goods" +#~ msgstr "Ekstra varer" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Sett opp kunde- og prosjektdetaljer" +#~ msgid "Products, licenses, hardware" +#~ msgstr "Produkter, materialer, lisenser og andre varer" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Legg til elementer" +#~ msgid "Add good" +#~ msgstr "Legg til Good" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Generer fra tid eller legg til manuelt" +#~ msgid "Goods subtotal" +#~ msgstr "Varer Subtotal" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Se gjennom og send" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Totale sitater" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "Eksporter PDF og oppdater status" +#~ msgid "Financial Details" +#~ msgstr "Økonomiske detaljer" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Overvåke status og betalinger" +#~ msgid "Select payment terms" +#~ msgstr "Velg betalingsbetingelser" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Standard rapporter" +#~ msgid "Due on Receipt" +#~ msgstr "Forfaller ved mottak" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Prosjektrapport - Tidsfordeling etter prosjekt" +#~ msgid "Or enter custom payment terms" +#~ msgstr "Eller angi egendefinerte betalingsbetingelser" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Brukerrapport – individuelle resultatberegninger" +#~ msgid "Use custom terms" +#~ msgstr "Bruk egendefinerte termer" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Sammendragsrapport - Nøkkelberegninger og trender" +#~ msgid "Discount" +#~ msgstr "Rabatt" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Time Entry Report - Detaljerte tidslogger" +#~ msgid "Discount Type" +#~ msgstr "Rabatttype" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Eksportalternativer" +#~ msgid "No Discount" +#~ msgstr "Ingen rabatt" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "CSV-eksport - For ekstern analyse" +#~ msgid "Percentage (%)" +#~ msgstr "Prosentandel (%)" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Konfigurerbare skilletegn" +#~ msgid "Fixed Amount" +#~ msgstr "Fast beløp" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Egendefinerte datoperioder" +#~ msgid "Discount Amount" +#~ msgstr "Rabattbeløp" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Filtrert dataeksport" +#~ msgid "0.00" +#~ msgstr "0,00" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Filteralternativer" +#~ msgid "Coupon Code" +#~ msgstr "Kupongkode" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Datoperiode – Egendefinerte start- og sluttdatoer" +#~ msgid "Optional coupon code" +#~ msgstr "Valgfri kupongkode" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Prosjekt – Filtrer etter spesifikke prosjekter" +#~ msgid "Discount Reason" +#~ msgstr "Årsak til rabatt" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Bruker - Filtrer etter teammedlemmer" +#~ msgid "Reason for discount" +#~ msgstr "Årsak til rabatt" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Klient – ​​Filtrer etter kundeorganisasjon" +#~ msgid "Approval Workflow" +#~ msgstr "Godkjenningsarbeidsflyt" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Lagrede filtre - Lagre ofte brukte filtre" +#~ msgid "Requires approval before sending" +#~ msgstr "Krever godkjenning før sending" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Visuell analyse" +#~ msgid "Additional Information" +#~ msgstr "Tilleggsinformasjon" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Interaktive søylediagrammer" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Interne notater (ikke synlig for klienten)" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Tidsfordeling kakediagrammer" +#~ msgid "These notes are only visible to your team" +#~ msgstr "Disse notatene er bare synlige for teamet ditt" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Trendanalyse over tid" +#~ msgid "Terms and Conditions" +#~ msgstr "Vilkår og betingelser" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Mobiloptimaliserte diagrammer" +#~ msgid "Terms and conditions" +#~ msgstr "Vilkår og betingelser" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "Bruk lagrede filtre for å få rask tilgang til de vanligste rapportvisningene dine. Lagre filtre for ukentlige anmeldelser, månedlig fakturering eller spesifikk prosjektsporing!" +#~ msgid "These terms will be visible to the client" +#~ msgstr "Disse vilkårene vil være synlige for kunden" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "Øk effektiviteten din med hurtigtaster, kommandopalett og automatiseringsfunksjoner." +#~ msgid "Edit Quote" +#~ msgstr "Rediger sitat" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Kommandopalett" +#~ msgid "Client cannot be changed" +#~ msgstr "Klienten kan ikke endres" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Få tilgang til alle funksjoner umiddelbart uten å forlate tastaturet" +#~ msgid "Update Quote" +#~ msgstr "Oppdater sitat" -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Åpne kommandopaletten" +#~ msgid "Total Quotes" +#~ msgstr "Totale sitater" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Trykk på spørsmålstegn-tasten" +#~ msgid "Acceptance Rate" +#~ msgstr "Akseptrate" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "Rask søk" +#~ msgid "Avg Quote Value" +#~ msgstr "Gjennomsnittlig tilbudsverdi" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Gå til prosjekter" +#~ msgid "Quotes by Status" +#~ msgstr "Sitater etter status" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Gå til Oppgaver" +#~ msgid "Top Clients by Quotes" +#~ msgstr "Toppkunder etter sitater" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Ny tidsregistrering" +#~ msgid "Filter Quotes" +#~ msgstr "Filtrer sitater" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Tastatursnarveier" +#~ msgid "Search quotes..." +#~ msgstr "Søk etter sitater..." -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "Naviger raskere med tastaturdrevne kommandoer. Trykk Shift+? for å se alle snarveiene." +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "Er du sikker på at du vil duplisere" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Globalt søk" +#~ msgid "quote(s)?" +#~ msgstr "sitat(er)?" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "Finn raskt prosjekter, oppgaver, klienter og tidsregistreringer fra hvor som helst i appen." +#~ msgid "Are you sure you want to mark" +#~ msgstr "Er du sikker på at du vil markere" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "E-postvarsler" +#~ msgid "quote(s) as sent?" +#~ msgstr "sitat(er) som sendt?" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "Bli varslet om oppgavetildelinger, forfalte fakturaer og ukentlige sammendrag via e-post." +#~ msgid "QUOTE" +#~ msgstr "SITERE" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Administratorfunksjoner" +#~ msgid "Quote #" +#~ msgstr "Sitat #" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Opprett nye brukere med fleksibel autentisering" +#~ msgid "Quote For" +#~ msgstr "Sitat for" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Tilordne tilpassede roller med spesifikke tillatelser" +#~ msgid "Subtotal After Discount:" +#~ msgstr "Delsum etter rabatt:" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Aktiver/deaktiver brukerkontoer" +#~ msgid "Description:" +#~ msgstr "Beskrivelse:" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Se brukerstatistikk og aktivitet" +#~ msgid "Subtotal After Discount" +#~ msgstr "Delsum etter rabatt" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Generer API-tokens for brukere" +#~ msgid "Approval not yet requested" +#~ msgstr "Godkjenning er ennå ikke bedt om" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Tilgangskontroll" +#~ msgid "Pending approval" +#~ msgstr "Venter på godkjenning" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Granulært rollebasert tillatelsessystem" +#~ msgid "Rejected by" +#~ msgstr "Avvist av" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Egendefinerte roller med finmasket tilgang" +#~ msgid "Request Approval Again" +#~ msgstr "Be om godkjenning på nytt" -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Tilgangskontroller for brukerdata" +#~ msgid "Send Quote" +#~ msgstr "Send tilbud" -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "OIDC/SSO-integrasjon (Azure AD, Authelia, etc.)" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "Er du sikker på at du vil avvise dette sitatet?" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "API-tokenadministrasjon for integrasjoner" +#~ msgid "Delete Quote" +#~ msgstr "Slett sitat" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Autentiseringsmetoder" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Intern kommentar (ikke synlig for klienten)" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Kun brukernavn (enkel intern bruk)" +#~ msgid "Internal" +#~ msgstr "Innvendig" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (bedriftsautentisering)" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "Er du sikker på at du vil slette denne kommentaren?" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Begge metodene samtidig" +#~ msgid "Write a reply..." +#~ msgstr "Skriv et svar..." -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Automatisk rolletildeling via grupper" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Ingen kommentarer ennå. Start samtalen " +#~ "ved å legge til den første " +#~ "kommentaren." -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Rolle- og tillatelsesadministrasjon" +#~ msgid "Sent At" +#~ msgstr "Sendt kl" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Opprett egendefinerte roller utover Admin/Bruker" +#~ msgid "Accepted At" +#~ msgstr "Akseptert kl" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Angi detaljerte tillatelser per funksjon" +#~ msgid "Send Quote via Email" +#~ msgstr "Send tilbud via e-post" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Tilordne brukere til flere roller" +#~ msgid "Recipient Email" +#~ msgstr "Mottakers e-post" -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Se og administrer alle tillatelser" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "Sitat %(quote_number)s" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Generelle innstillinger" +#~ msgid "Custom Message (Optional)" +#~ msgstr "Egendefinert melding (valgfritt)" -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Tidssone og lokale innstillinger" +#~ msgid "Add a custom message to the email..." +#~ msgstr "Legg til en egendefinert melding i e-posten..." -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Valutakonfigurasjon" +#~ msgid "Attach PDF" +#~ msgstr "Legg ved PDF" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Tidsavrundingsregler" +#~ msgid "Approve Quote" +#~ msgstr "Godkjenn sitat" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Innstillinger for selvregistrering" +#~ msgid "Notes (Optional)" +#~ msgstr "Merknader (valgfritt)" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Timerinnstillinger" +#~ msgid "Add approval notes..." +#~ msgstr "Legg til godkjenningsnotater..." -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Konfigurasjon av inaktiv tidsavbrudd" +#~ msgid "Reject Quote Approval" +#~ msgstr "Avvis tilbudsgodkjenning" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Enkel aktiv timer-modus" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Vennligst oppgi en begrunnelse for avvisning..." -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Timervisningspreferanser" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette dette sitatet? Denne handlingen " +#~ "kan ikke angres." -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Varslingsinnstillinger" +#~ msgid "Create Recurring Invoice" +#~ msgstr "Lag gjentakende faktura" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Databasehåndtering" +#~ msgid "Update Recurring Invoice" +#~ msgstr "Oppdater gjentakende faktura" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Lag manuell sikkerhetskopiering av databaser" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "Automatiser fakturagenerering for abonnementsbasert fakturering" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Se databasemigreringsstatus" +#~ msgid "Frequency" +#~ msgstr "Hyppighet" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Overvåk databaseytelse" +#~ msgid "Next Run" +#~ msgstr "Neste løp" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Rydd opp i gamle data og logger" +#~ msgid "Generate Now" +#~ msgstr "Generer nå" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Systemovervåking" +#~ msgid "Template Details" +#~ msgstr "Maldetaljer" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Se systeminformasjon og helse" +#~ msgid "Invoice Settings" +#~ msgstr "Fakturainnstillinger" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Overvåk applikasjonsytelsen" +#~ msgid "Recently Generated Invoices" +#~ msgstr "Nylig genererte fakturaer" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Se gjennom systemlogger og feil" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Mobilvennlige funksjoner" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Optimalisert for telefoner og nettbrett" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Berøringsvennlig grensesnitt" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "Adaptive oppsett for alle skjermstørrelser" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Høy kontrast for utendørs synlighet" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Mobilnavigasjon" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Nederste fanelinje for enkel tilgang" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Rask tilgang til dashbordet" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Ett-trykks logging" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Mobiloptimaliserte rapporter" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Installasjon" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Åpne TimeTracker i mobilnettleseren din" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Se etter alternativet \"Legg til på startskjermen\"." +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Følg nettleserspesifikke installasjonsveiledninger" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Start fra startskjermen som en innebygd app" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "PWA-fordeler" +#~ msgid "Assign To" +#~ msgstr "Tilordne til" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Offline-funksjon for grunnleggende funksjoner" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Raskere lastetider" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Innfødt app-lignende opplevelse" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Push-varsler (der det støttes)" +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "Interaktive søylediagrammer" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "Tekniske spesifikasjoner" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "Dokumentasjon" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Feilsøking og vanlige spørsmål" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "Hva skjer hvis jeg glemmer å stoppe timeren min?" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "Tidtakeren vil fortsette å gå til du stopper den manuelt. Du kan se din aktive tidtaker på dashbordet og tidtakersiden. Tidtakeren vedvarer selv om du lukker nettleseren eller starter enheten på nytt. Hvis tomgangsdeteksjon er aktivert, kan tidtakeren pause automatisk etter den konfigurerte tidsavbruddsperioden." +#~ msgid "Add table to report" +#~ msgstr "Tilgjengelige rapporter" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "Kan jeg redigere tidsoppføringer etter at de er opprettet?" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "Ja, du kan redigere hvilken som helst tidsregistrering ved å klikke på rediger-knappen i tidsregistreringslisten. Du kan endre prosjektet, start-/sluttidspunkter, notater, tagger, fakturerbar status og oppgavetildeling. Administratorer kan redigere alle tidsoppføringer, mens vanlige brukere bare kan redigere sine egne oppføringer." +#~ msgid "Add chart to report" +#~ msgstr "Standard rapporter" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "Hvordan sporer jeg tid for flere prosjekter?" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "Som standard kan du bare ha én aktiv timer om gangen. For å bytte prosjekt, stopp den nåværende tidtakeren og start en ny for det andre prosjektet. Alternativt kan du opprette manuelle tidsregistreringer for tidligere arbeid eller konfigurere systemet til å tillate flere aktive tidtakere (admin-innstilling)." +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "Hvordan eksporterer jeg tidsdataene mine?" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "Gå til Rapporter-siden og bruk \"Eksporter CSV\"-funksjonen. Du kan bruke filtre for å eksportere spesifikke data, eller eksportere alle tidsoppføringer. CSV-filen inneholder informasjon om alle tider og kan åpnes i Excel eller andre regnearkapplikasjoner. Du kan også konfigurere skilletegnet for forskjellige regionale standarder." +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "Hva er forskjellen mellom fakturerbar og ikke-fakturerbar tid?" +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "Fakturerbar tid spores for klientfaktureringsformål og kan ha en timepris knyttet til seg. Ikke-fakturerbar tid er for internt arbeid som ikke belastes klienter. Du kan merke individuelle tidsoppføringer som fakturerbare eller ikke-fakturerbare, og prosjekter kan ha standard fakturerbare innstillinger. Dette skillet er avgjørende for nøyaktig fakturering og lønnsomhetsanalyse." +#~ msgid "Add summary to report" +#~ msgstr "Sammendragsrapport" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "Hvordan lager jeg en faktura fra mine tidsregistreringer?" +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "Naviger til Fakturaer → Opprett faktura, konfigurer klient- og prosjektdetaljene, og bruk deretter \"Generer fra tidsregistreringer\" for automatisk å opprette fakturaelementer fra din sporede tid. Du kan filtrere etter datoperiode og prosjekt, og systemet vil gruppere tidsregistreringer intelligent. Se gjennom de genererte elementene og eksporter som en profesjonell PDF." +#~ msgid "Report canvas" +#~ msgstr "Klart lerret" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "Kan jeg bruke TimeTracker på mobilenheten min?" +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "Ja! TimeTracker er fullstendig responsiv og fungerer utmerket på mobile enheter. Du kan installere den som en Progressive Web App (PWA) for en innfødt-lignende opplevelse. Mobilgrensesnittet inkluderer en bunnfanelinje for enkel navigering og berøringsoptimaliserte kontroller for tidsregistrering mens du er på farten." +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "Hvordan bruker jeg kommandopaletten og hurtigtastene?" +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "Trykk på spørsmålstegn-tasten (?) for å åpne kommandopaletten. Derfra kan du skrive for å søke etter hvilken som helst handling eller navigasjonsmål. Bruk tastatursekvenser som \"g d\" for Dashboard, \"g p\" for Projects, eller \"n e\" for New Entry. Trykk Shift+? for å se alle tilgjengelige snarveier. Trykk Ctrl+K (eller Cmd+K på Mac) for raskt søk." +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "Hvordan oppretter jeg massetidsoppføringer for flere dager?" +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "Naviger til Arbeid → Massetidsregistrering. Velg prosjektet ditt, velg en datoperiode, angi daglige start- og sluttider, og hopp over helger. Systemet vil opprette identiske tidsregistreringer for hver dag i området. Dette er perfekt for å logge vanlige arbeidsmønstre eller fylle ut tidligere tider når du har jobbet konsekvente timer." +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "Hva er tidsregistreringsmaler og hvordan bruker jeg dem?" +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "Tidsregistreringsmaler lar deg lagre ofte brukte tidsregistreringskonfigurasjoner. Når du oppretter en manuell tidsregistrering, merker du av for \"Lagre som mal\" for å lagre prosjektet, oppgaven og notatene. Senere, når du oppretter nye oppføringer, kan du velge en mal for raskt å fylle ut disse detaljene. Maler er personlige og kun synlige for deg." +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "Hvordan sporer jeg utgifter og legger dem til på fakturaer?" +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "Gå til Utgifter → Nye utgifter for å registrere forretningsutgifter. Last opp kvitteringsbilder, kategoriser utgiften og merk den som fakturerbar om nødvendig. Når du oppretter fakturaer, kan du inkludere disse utgiftene som linjeposter. Utgifter støtter godkjenningsarbeidsflyter, refusjonssporing og kan knyttes til spesifikke prosjekter." +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "Kan jeg bruke Markdown i beskrivelser?" +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "Ja! Prosjekt- og oppgavebeskrivelser støtter full Markdown-formatering. Du kan bruke fet skrift, kursiv, overskrifter, lister, lenker, kodeblokker, tabeller og bilder. Dette lar deg lage rik, velformatert dokumentasjon direkte i prosjektene og oppgavene dine. Markdown-editoren inkluderer en forhåndsvisningsmodus og støtter mørkt tema." +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "Hvor kan jeg få ekstra hjelp?" +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Private" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Rapporter problemer og be om funksjoner på" +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "Som administrator kan du få tilgang til ytterligere systeminformasjon og diagnostikk i" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "del." +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "Trenger du fortsatt hjelp?" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "Finner du ikke det du leter etter? Her er tilleggsressurser:" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "GitHub Repository" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Rapporter problem" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "Støtte" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Søkeresultater" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Søk i notater eller tagger" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Resultater" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "Er du sikker på at du vil slette denne tidsoppføringen? Denne handlingen kan ikke angres." +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "Ingen resultater funnet" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Prøv et annet søk eller sjekk stavemåten." +#~ msgid "Export Time Entries" +#~ msgstr "Nylige tidsinnlegg" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "f.eks. kundemøte, nettstedsbesøk" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Ytterligere detaljer..." +#~ msgid "Export format" +#~ msgstr "Eksporter format" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "f.eks. kontor, hjemme" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "f.eks. utvikling, møte, haster" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "f.eks. klientside, flyplass" +#~ msgid "Reset Filters" +#~ msgstr "Lagrede filtre" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "f.eks. 12345" +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "f.eks. 12400" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "for eksempel VW Golf" +#~ msgid "Please select both start and end dates." +#~ msgstr "Datoperiode – Egendefinerte start- og sluttdatoer" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "f.eks. ABC-123" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "Startdatoen må være før sluttdatoen" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "Tidssporing" +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "Tilbake til Roller" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "Payments Received" +#~ msgstr "Betalingsfelt" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "Dato fra" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "Legg til merknad" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "Utgiftssporing" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "Sporet" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "Tittel" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Net Received" +#~ msgstr "Mottatt" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "After fees" +#~ msgstr "Gateway-avgifter" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "Tidssporing" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "Start sporingstid" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "Spor betaling" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "Start sporingstid" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "Utgift avvist" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Filter kjørelengde" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Date Range & Comparison" +#~ msgstr "Datointervall og sammenligning" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Formål, plassering..." +#~ msgid "Quick Date Ranges" +#~ msgstr "Raske datointervaller" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Valgfrie godkjenningsnotater..." +#~ msgid "This Week" +#~ msgstr "Uke" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Årsak til avvisning (obligatorisk)" +#~ msgid "This Month" +#~ msgstr "Måned" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "Mobilnavigasjon" +#~ msgid "This Year" +#~ msgstr "I fjor" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "E-post" +#~ msgid "Custom Range" +#~ msgstr "Egendefinerte datoperioder" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Skriv inn en kommando eller søk..." +#~ msgid "Comparison View" +#~ msgstr "Sammenligningsvisning" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "Live forhåndsvisning" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "Comparison Results" +#~ msgstr "Sammenligningsresultater" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "Eksporter rapporter" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "Eksporter format" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "Eksporter rapporter" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Planlagte rapporter" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "CSV-import" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "Eksport" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Report Types" +#~ msgstr "Rapporttyper" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "Prosjektrapport" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "User Report" +#~ msgstr "Brukerrapport" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "Sammendragsrapport" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "Oppgaverapport" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "Tidsoppføringer" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "Nylige oppføringer" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Registrer ny betaling" +#~ msgid "No scheduled reports yet." +#~ msgstr "Planlagte rapporter" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Totale betalinger" +#~ msgid "Add Scheduled Report" +#~ msgstr "Planlagte rapporter" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Gateway-avgifter" +#~ msgid "Please set a date range" +#~ msgstr "Egendefinerte datoperioder" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Filtrer betalinger" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "Betalt" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Slett valgte betalinger" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Endre status for utvalgte betalinger" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Relatert faktura" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "for eksempel forretningsreise til Berlin" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "f.eks. DE, USA, GB" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "f.eks. Berlin" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Filtrer krav" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Slett valgte krav" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Endre status for utvalgte krav" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Ytterligere merknader om denne prisen..." +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "Er du sikker på at du vil slette denne dagpengene?" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Slett dagpengetakst" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "No data for the selected period." +#~ msgstr "Fant ingen salgsdata for den valgte perioden." -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Fakturerbart prosjekt" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Beregnet timer" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Budsjettbeløp" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "Oppgavenavn" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Prosjektkode" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Opprett prosjekt" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Kanban-tavlesøyler" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Rediger svømmebane" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Søyle" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Listevisning" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Rutenettvisning" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "Dato" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Rediger prosjekt" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "Legg til merknad" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "Tilbake til prosjektet" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "for eksempel reise til kundemøte" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "Kort beskrivelse av denne kategorien..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "Kategori" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "Materiale" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "f.eks. programvarelisens" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "Ytterligere detaljer om denne justeringen" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "Tilbake til klienten" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Legg til Extra Good" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Legg til et produkt eller en tjeneste" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Tilbake til prosjektet" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "SKU/produktkode" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "Hva skjer når du arkiverer et prosjekt?" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "Prosjektet vil være skjult fra aktive prosjektlister" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "Ingen nye tidsregistreringer kan legges til dette prosjektet" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "Eksisterende data og tidsregistreringer er bevart" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Du kan dearkivere prosjektet senere hvis nødvendig" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Årsak til arkivering" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "for eksempel prosjekt fullført, klientkontrakt avsluttet, prosjekt kansellert, etc." +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "Å legge til en årsak hjelper med prosjektorganisering og fremtidig referanse." +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Hurtigvalg" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Prosjekt fullført vellykket" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Prosjekt fullført" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Kundekontrakten ble avsluttet" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Kontrakt avsluttet" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Prosjekt kansellert av klient" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Prosjekt på vent på ubestemt tid" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "På vent" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Vedlikeholdsperioden er over" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Vedlikehold avsluttet" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Arkivprosjekt" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "Sett opp et nytt prosjekt for å organisere arbeidet ditt og spore tid effektivt" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Skriv inn et beskrivende prosjektnavn" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Velg et klart, beskrivende navn som forklarer prosjektets omfang" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Kortkode, f.eks. ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Valgfritt: Kort tag vist på Kanban-kort" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Opprett ny klient" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "Gi detaljert informasjon om prosjektet, mål og leveranser..." +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "Valgfritt: Legg til kontekst, mål eller spesifikke krav for prosjektet" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Toppprosjekter (30 dager)" -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Aktiver fakturering for dette prosjektet" +#~ msgid "Time distribution by project" +#~ msgstr "Tidsfordeling kakediagrammer" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "La stå tomt for ikke-fakturerbare prosjekter" +#~ msgid "No project data for the last 30 days." +#~ msgstr "Ingen aktivitet de siste 30 dagene." -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "PO-nummer, kontraktsreferanse osv." +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "Valgfritt: Legg til et referansenummer eller identifikator for faktureringsformål" +#~ msgid "Daily hours trend" +#~ msgstr "Trend for daglige timer" -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "f.eks. 10000,00" +#~ msgid "No trend data." +#~ msgstr "Sitat data" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "Valgfritt: Angi et totalt prosjektbudsjett for å overvåke forbruket" +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Toppprosjekter (30 dager)" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Varselterskel (%)" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "Fant ingen salgsdata for den valgte perioden." -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Gi beskjed når forbrukt budsjett overskrider denne terskelen" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "All Clients" +#~ msgstr "Kunder" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "All Tasks" +#~ msgstr "Vis alle oppgaver" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "Fant ingen salgsdata for den valgte perioden." -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Tips om prosjektoppretting" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Fjern navn" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Bruk beskrivende navn som tydelig indikerer prosjektets formål" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Faktureringsoppsett" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "Sett passende timepriser basert på prosjektkompleksitet og klientbudsjett" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Detaljert beskrivelse" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "Inkluder prosjektmål, leveranser og nøkkelkrav" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Kundevalg" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "Velg riktig klient for å sikre riktig prosjektorganisering" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "Prøv et annet søk eller sjekk stavemåten." -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Oppretter ..." +#~ msgid "About Overtime Tracking" +#~ msgstr "Om overtidssporing" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Klient opprettet" +#~ msgid "Back to Reports" +#~ msgstr "Tilbake til Roller" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Nettverksfeil under oppretting av klient" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "Tidsposter denne uken" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "Prosjektdashbord og analyse" +#~ msgid "Top projects this week" +#~ msgstr "Topp prosjekter" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "No time logged this week yet." +#~ msgstr "Ingen tidsregistreringer registrert for denne uken ennå" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Budsjettanalyse" +#~ msgid "Apply filter" +#~ msgstr "Bruk filter" -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Hele tiden" +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "Er du sikker på at du vil slette dette filteret?" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "Siste 7 dager" +#~ msgid "Delete Filter" +#~ msgstr "Slett filter" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "Siste 30 dager" +#~ msgid "Go to Reports" +#~ msgstr "Lav lagerrapport" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "Siste 3 måneder" +#~ msgid "No saved filters yet" +#~ msgstr "Lagrede filtre" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "I fjor" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "estimert" +#~ msgid "Customize Shortcuts" +#~ msgstr "Tilpass snarveier" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Budsjett brukt" +#~ msgid "Search shortcuts..." +#~ msgstr "Søk snarveier..." -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "av budsjettet" +#~ msgid "Save changes" +#~ msgstr "Lagre endringer" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Oppgaver fullført" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "ferdigstillelse" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Teammedlemmer" +#~ msgid "Click to record" +#~ msgstr "Dra for å omorganisere" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "bidrar" +#~ msgid "Revert" +#~ msgstr "Tilbakestill" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Budsjett kontra faktisk" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "Det er ikke satt opp budsjett for dette prosjektet" +#~ msgid "Failed to save" +#~ msgstr "Kunne ikke stoppe tidtakeren" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Distribusjon av oppgavestatus" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Ingen oppgaver opprettet ennå" +#~ msgid "Failed to save shortcuts." +#~ msgstr "Kunne ikke oppdatere status" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Teammedlemsbidrag" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "Dette vil tilbakestille alle hurtigtaster " +#~ "til standardverdiene. Fortsette?" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Ingen tidsregistreringer registrert ennå" +#~ msgid "Reset to Defaults" +#~ msgstr "Tilbakestill til standard" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Tidssporing Tidslinje" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "Tilbakestille til standard?" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Velg en tidsperiode for å se tidslinjen" +#~ msgid "Failed to reset" +#~ msgstr "Kunne ikke fjerne avataren." -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Teammedlemsdetaljer" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Tilbakestill til standard" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "oppgaver" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "Kunne ikke oppdatere status" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Ingen teammedlemmer har logget tid ennå" +#~ msgid "Failed to load shortcuts." +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Oppmerksomhet kreves" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "oppgave(r) er forfalt" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "Enhetskostnad" +#~ msgid "Welcome" +#~ msgstr "Velkomst" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Privacy First" +#~ msgstr "Personvern først" -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "Oppdater roller" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Rediger Ekstra Bra" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Administrer produkter og tjenester for dette prosjektet" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Totale varer" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Fakturerbart beløp" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Kategorier" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "Fakturert" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "Ikke fakturerbar" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "Er du sikker på at du vil slette denne ekstra varen?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Slett Extra Good" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "Ingen ekstra varer funnet for dette prosjektet" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Legg til ditt første gode" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Fordeling etter kategori" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "vare(r)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Filtrer prosjekter" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Self-hosted on your server" +#~ msgstr "Selvvert på serveren din" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Anonym telemetri (opt-in)" -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "No PII collected ever" +#~ msgstr "Ingen PII samlet noen gang" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "Vil du merke prosjektet som inaktivt?" +#~ msgid "Open source & transparent" +#~ msgstr "Åpen kildekode og gjennomsiktig" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Endre prosjektstatus" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "Aktivere prosjektet?" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Velkommen til TimeTracker" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Aktiver prosjekt" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "La oss sette deg opp på et øyeblikk" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Arkiv" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Takk for at du valgte TimeTracker!" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "Vil du fjerne prosjektet fra arkivet?" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "Dataene dine forblir på serveren din, og du har full kontroll." -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Unarchive Project" +#~ msgid "Region & time" +#~ msgstr "Sluttid" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Avarkiver" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Slett prosjekt" +#~ msgid "Timezone" +#~ msgstr "Tidssone" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Arkivinformasjon" +#~ msgid "Date format" +#~ msgstr "Datoformat" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Arkivert på:" +#~ msgid "Time format" +#~ msgstr "Tidsformat" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Arkivert av:" +#~ msgid "24-hour" +#~ msgstr "timer" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Grunn:" +#~ msgid "12-hour" +#~ msgstr "timer" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Budsjettoversikt" +#~ msgid "Company name" +#~ msgstr "Firmanavn" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Over" +#~ msgid "Your Company Name" +#~ msgstr "Firmanavnet ditt" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Se hele budsjettanalysen" +#~ msgid "Your Company Address" +#~ msgstr "Din bedriftsadresse" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "App behavior and timer settings." +#~ msgstr "Overtidsinnstillinger" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Oppgaver for dette prosjektet" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Forfaller" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Estimert" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "Ingen oppgaver for dette prosjektet." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "flyttet til" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "flyttet til" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "Manuell inntasting" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "Lite lager" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Kopiere" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Merk som sendt" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Godtatt" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Lag ditt første sitat" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Lær mer" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Tilbake til sitat" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "Å godta dette tilbudet vil opprette et nytt prosjekt med budsjettet fra tilbudet." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "Prosjektet vil bli opprettet med budsjettet fra tilbudet" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Godta tilbud og opprett prosjekt" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Opprett tilbud" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Sitattittel" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Sitatbeskrivelse" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "Sitat elementer" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "Allow self-registration" +#~ msgstr "Innstillinger for selvregistrering" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "Frist" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "Innholdstype" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "Lite lager" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "Elementer Subtotal" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "Koste" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "f.eks. REISER, MÅLTID" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "Legg til merknad" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "Elementer Subtotal" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "Ekstra varer" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "Produkter, materialer, lisenser og andre varer" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "Legg til Good" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "Varer Subtotal" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "Totale sitater" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Økonomiske detaljer" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Velg betalingsbetingelser" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "Forfaller ved mottak" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "Eller angi egendefinerte betalingsbetingelser" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Bruk egendefinerte termer" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Rabatt" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Rabatttype" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Ingen rabatt" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "Prosentandel (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Fast beløp" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Rabattbeløp" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0,00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Kupongkode" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Valgfri kupongkode" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Årsak til rabatt" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Årsak til rabatt" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Godkjenningsarbeidsflyt" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Krever godkjenning før sending" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "Tilleggsinformasjon" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Interne notater (ikke synlig for klienten)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Disse notatene er bare synlige for teamet ditt" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Vilkår og betingelser" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Vilkår og betingelser" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Disse vilkårene vil være synlige for kunden" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Rediger sitat" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "Klienten kan ikke endres" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Oppdater sitat" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Totale sitater" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Akseptrate" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Gjennomsnittlig tilbudsverdi" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Sitater etter status" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Toppkunder etter sitater" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Filtrer sitater" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Søk etter sitater..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "Er du sikker på at du vil duplisere" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "sitat(er)?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "Er du sikker på at du vil markere" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "sitat(er) som sendt?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "SITERE" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Sitat #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Sitat for" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Delsum etter rabatt:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Beskrivelse:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Delsum etter rabatt" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Godkjenning er ennå ikke bedt om" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "Venter på godkjenning" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Avvist av" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Be om godkjenning på nytt" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Send tilbud" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "Er du sikker på at du vil avvise dette sitatet?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Slett sitat" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Intern kommentar (ikke synlig for klienten)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Innvendig" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "Er du sikker på at du vil slette denne kommentaren?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Skriv et svar..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "Ingen kommentarer ennå. Start samtalen ved å legge til den første kommentaren." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Sendt kl" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Akseptert kl" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Send tilbud via e-post" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "Mottakers e-post" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "Sitat %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Egendefinert melding (valgfritt)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Legg til en egendefinert melding i e-posten..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "Legg ved PDF" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Godkjenn sitat" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Merknader (valgfritt)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Legg til godkjenningsnotater..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Avvis tilbudsgodkjenning" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Vennligst oppgi en begrunnelse for avvisning..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "Er du sikker på at du vil slette dette sitatet? Denne handlingen kan ikke angres." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Lag gjentakende faktura" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "Oppdater gjentakende faktura" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Automatiser fakturagenerering for abonnementsbasert fakturering" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Hyppighet" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Neste løp" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Generer nå" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Maldetaljer" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Fakturainnstillinger" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Nylig genererte fakturaer" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Tidsavrundingsregler" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Rund tidsoppføringer til konfigurerte intervaller" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Single active timer per user" +#~ msgstr "Enkel aktiv timer-modus" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Konfigurasjon av inaktiv tidsavbrudd" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Tilordne til" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "Personvern først" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Aktiver anonym telemetri" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "Hjelp oss å forstå bruksmønstre for å forbedre TimeTracker" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "Hvilke data samles inn?" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "Hva vi samler inn:" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Anonymt installasjonsfingeravtrykk (hashed)" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "Tilgjengelige rapporter" +#~ msgid "Application version & platform info" +#~ msgstr "Appversjon og plattforminformasjon" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "Funksjonsbruksstatistikk" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "Standard rapporter" +#~ msgid "What we DON'T collect:" +#~ msgstr "Hva vi IKKE samler inn:" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "Ingen brukernavn eller e-post" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "Ingen tidsregistreringsdata eller notater" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "Ingen klient- eller forretningsdata" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "Du kan endre dette når som helst i" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "Ved å fortsette godtar du å bruke TimeTracker under" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "Sammendragsrapport" +#~ msgid "GPL-3.0 License" +#~ msgstr "GPL-3.0-lisens" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Fullfør oppsettet og fortsett" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "Klart lerret" +#~ msgid "Edit Task" +#~ msgstr "Rediger oppgave" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "Kunne ikke oppdatere status" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "Kunne ikke oppdatere oppgavestatus" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "Kanban-kolonnen er opprettet" -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "Kanban-kolonnen er slettet" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "Kanban columns reordered" +#~ msgstr "Kanban-kolonner omorganisert" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "Kanban-kolonnens synlighet er endret" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "Kanban columns updated" +#~ msgstr "Kanban-kolonner oppdatert" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Update" +#~ msgstr "Oppdater" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "Kunne ikke oppdatere kanban-kolonner" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "Laster oppgavedetaljer ..." -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "Tracked" +#~ msgstr "Sporet" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "Se alle detaljer" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "Tilbake til Oppgaver" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" +#~ "Legg til en ny oppgave i " +#~ "prosjektet ditt for å dele opp " +#~ "arbeidet i håndterbare komponenter" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "Skriv inn et beskrivende oppgavenavn" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "Velg et klart, beskrivende navn som forklarer hva som må gjøres" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Gi detaljert informasjon om oppgaven, " +#~ "krav og eventuelle spesifikke instruksjoner..." -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Velg prosjektet denne oppgaven tilhører" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "Opprinnelig status" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Done" +#~ msgstr "Ferdig" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Valgfritt: Sett en frist for denne oppgaven" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Valgfritt: Anslå hvor lang tid denne oppgaven vil ta" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Valgfritt: Tilordne denne oppgaven til et teammedlem" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Tagger for kategorisering" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "Tips for å lage oppgaver" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "Bruk handlingsverb og vær konkret om hva som må gjøres" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "Realistiske estimater" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "Vurder kompleksitet og avhengigheter når du estimerer tid" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "Sett tidsfrister" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" +#~ "Forfallsdatoer hjelper deg med å " +#~ "prioritere arbeidet og spore fremdriften" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "Prioritet er viktig" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Bruk prioritetsnivåer for å hjelpe " +#~ "teammedlemmer med å fokusere på det " +#~ "som er viktigst" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "Tilbake til oppgave" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "Oppdater oppgavedetaljer og innstillinger for \"%(task)s\"" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "Oppgaveinformasjon" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Update Task" +#~ msgstr "Oppdater oppgave" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "Nylige tidsinnlegg" +#~ msgid "Estimate used" +#~ msgstr "Estimat brukt" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Actual" +#~ msgstr "Faktisk" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "Eksporter format" +#~ msgid "Current Task Info" +#~ msgstr "Informasjon om gjeldende oppgave" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "f.eks. utvikling, møte, haster" +#~ msgid "Current Status" +#~ msgstr "Nåværende status" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "Lagrede filtre" +#~ msgid "Current Priority" +#~ msgstr "Gjeldende prioritet" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "For øyeblikket tildelt til" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "Gjeldende forfallsdato" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "Datoperiode – Egendefinerte start- og sluttdatoer" +#~ msgid "Current Estimate" +#~ msgstr "Gjeldende estimat" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "Startdatoen må være før sluttdatoen" +#~ msgid "Actual Hours" +#~ msgstr "Faktiske timer" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Started" +#~ msgstr "Startet" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "Edit Tips" +#~ msgstr "Rediger tips" -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "Betalingsfelt" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "Mottatt" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "Gateway-avgifter" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Datointervall og sammenligning" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Raske datointervaller" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "Uke" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "Måned" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "I fjor" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "Egendefinerte datoperioder" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "Sammenligningsvisning" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "Live forhåndsvisning" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Status Changes" +#~ msgstr "Statusendringer" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "Endring av status kan påvirke tidssporing og fremdriftsberegninger" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "Forfallsdatooppdateringer" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "Vurder teamets arbeidsbelastning når du justerer tidsfrister" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Assignment Changes" +#~ msgstr "Oppdragsendringer" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Sammenligningsresultater" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Eksporter rapporter" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Eksporter format" - -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "Eksporter rapporter" - -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "Planlagte rapporter" - -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "CSV-import" - -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "Eksport" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "Rapporttyper" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "Prosjektrapport" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Brukerrapport" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Sammendragsrapport" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Oppgaverapport" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "Tidsoppføringer" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "Varsle teammedlemmer når du tildeler oppgaver på nytt" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Updating..." +#~ msgstr "Oppdaterer..." -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "Filtrer oppgaver" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "Frontend" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Slett valgte oppgaver" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "Nylige oppføringer" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Endre status for valgte oppgaver" -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "Planlagte rapporter" +#~ msgid "Assign Selected Tasks" +#~ msgstr "Tilordne valgte oppgaver" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "Planlagte rapporter" +#~ msgid "Assign Tasks" +#~ msgstr "Tilordne oppgaver" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "Egendefinerte datoperioder" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Flytt valgte oppgaver til prosjekt" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "Select Project" +#~ msgstr "Velg Prosjekt" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "Flytt oppgaver" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "Er du sikker på at du vil slette oppgaven \"{name}\"?" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "Kan ikke slette oppgaven \"{name}\" " +#~ "fordi den har tidsoppføringer. Vennligst " +#~ "slett tidsregistreringene først." -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Delete Task" +#~ msgstr "Slett oppgave" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "My Tasks" +#~ msgstr "Mine oppgaver" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Oppgaver tildelt eller opprettet av deg" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "total" +#~ msgstr "total" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "Filtrer mine oppgaver" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "Oppgavenavn eller beskrivelse" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "Alle prioriteringer" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "Oppgavetype" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "Tildelt til meg" -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "Laget av meg" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "Vis kun forfalt" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "Laget av meg" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "Mine oppgaver paginering" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "Ingen oppgaver funnet" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "Fant ingen salgsdata for den valgte perioden." +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Du har ingen oppgaver tildelt deg eller opprettet av deg ennå." -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "Lag din første oppgave" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "Vis alle oppgaver" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "Forfalte oppgaver" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "Krever umiddelbar oppmerksomhet" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "items" +#~ msgstr "gjenstander" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "There are" +#~ msgstr "Det finnes" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "" +#~ "Se gjennom og oppdater disse oppgavene" +#~ " for å unngå ytterligere forsinkelser." -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Due:" +#~ msgstr "Forfaller:" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Est:" +#~ msgstr "Est:" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Actual:" +#~ msgstr "Faktisk:" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "Forfallsdatoer" -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "Forfallsdatoer" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "Prosjektledelse" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "Alle prioriteringer" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "Ingen forfalte oppgaver!" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "Flott jobb! Alle oppgavene er foreløpig i rute." -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Er du sikker på at du vil forlenge forfallsdatoen til" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "for alle forfalte oppgaver?" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "Angi ny prioritet (lav/middels/høy/haster):" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Er du sikker på at du vil prioritere" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "Ugyldig prioritet. Vennligst bruk: lav, middels, høy eller haster" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "Kunne ikke oppdatere målet. Vennligst prøv igjen." -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "Starte oppgaven og markere som Pågår?" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "Endre oppgavestatus" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "Merke oppgaven som å gjøre?" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "Vil du merke oppgaven som Ferdig?" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "Fullfør oppgaven" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "Complete" +#~ msgstr "Fullstendig" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "Åpne oppgaven for gjennomgang på nytt?" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "Åpne oppgave på nytt" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "Åpne igjen" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "Prosjektdetaljer og omfang" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "Opprett tidsregistreringsmal" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "f.eks. daglig standup, klientmøte" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "f.eks. 1,0, 0,5" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Forhåndsutfyll notater for denne typen tidsregistrering" -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "f.eks. møte, utvikling, admin" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "Rediger mal" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "Toppprosjekter (30 dager)" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Er du sikker på at du vil slette denne malen?" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "Tidsfordeling kakediagrammer" +#~ msgid "Delete Template" +#~ msgstr "Slett mal" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "Ingen aktivitet de siste 30 dagene." +#~ msgid "Create Your First Template" +#~ msgstr "Lag din første oppgave" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "Maler" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "Trend for daglige timer" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "Lag din første e-postmal for å tilpasse e-postfakturaer." -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "Sitat data" +#~ msgid "Usage Statistics" +#~ msgstr "Bruksstatistikk" -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "Toppprosjekter (30 dager)" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "Fant ingen salgsdata for den valgte perioden." +#~ msgid "selected" +#~ msgstr "" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "Kunder" +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "Vis alle oppgaver" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "Fant ingen salgsdata for den valgte perioden." +#~ msgid "Click to edit" +#~ msgstr "Tilbake til Rediger" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Request approval" +#~ msgstr "Be om godkjenning" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Clear filters" +#~ msgstr "Slå på filtre" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "Ingen tidsregistreringsdata eller notater" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "No time entries yet" +#~ msgstr "Ingen tidsregistreringer registrert ennå" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "Mine oppgaver paginering" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "Prøv et annet søk eller sjekk stavemåten." +#~ msgid "Bulk Time Entry" +#~ msgstr "Manuell tidsinntasting" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "Om overtidssporing" +#~ msgid "Single Entry" +#~ msgstr "Tidsregistrering" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "Hvordan oppretter jeg massetidsoppføringer for flere dager?" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "Tilbake til Roller" - -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "Tidsposter denne uken" - -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "Topp prosjekter" - -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "Ingen tidsregistreringer registrert for denne uken ennå" - -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Bruk filter" - -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "Er du sikker på at du vil slette dette filteret?" - -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Slett filter" - -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "Lav lagerrapport" - -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "Lagrede filtre" - -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "Masseinngang" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Tilpass snarveier" +#~ msgid "Select the project to log time for" +#~ msgstr "Det valgte prosjektet ble ikke funnet" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Søk snarveier..." +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Oppgaver lastes inn etter valg av prosjekt" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "Lagre endringer" +#~ msgid "Date Range" +#~ msgstr "Tidsområde" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Entries will be created for these dates" +#~ msgstr "Tidsregistreringer avrundes til dette intervallet" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "Dra for å omorganisere" +#~ msgid "Same start time for all days" +#~ msgstr "Smarte timere" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "Tilbakestill" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "Kunne ikke stoppe tidtakeren" +#~ msgid "tag1, tag2, tag3" +#~ msgstr "tag1, tag2" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "Kunne ikke oppdatere status" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "Dette vil tilbakestille alle hurtigtaster til standardverdiene. Fortsette?" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Tilbakestill til standard" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "Tilbakestille til standard?" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "Kunne ikke fjerne avataren." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "Tilbakestill til standard" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "Kunne ikke oppdatere status" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "Kunne ikke laste inn oppgaver" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Velkomst" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "Personvern først" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Selvvert på serveren din" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Anonym telemetri (opt-in)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "Ingen PII samlet noen gang" - -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Åpen kildekode og gjennomsiktig" - -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "Filtrer fakturaer" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Velkommen til TimeTracker" +#~ msgid "Create Entries" +#~ msgstr "Nylige oppføringer" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "La oss sette deg opp på et øyeblikk" +#~ msgid "Bulk Entry Tips" +#~ msgstr "Masseinngang" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "Takk for at du valgte TimeTracker!" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "Dataene dine forblir på serveren din, og du har full kontroll." +#~ msgid "Skip Weekends" +#~ msgstr "Ukentlige trender" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "Sluttid" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "Ledetid (dager)" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Tidssone" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "Datoformat" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "Tidsformat" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "timer" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "timer" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "Firmanavn" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "Firmanavnet ditt" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "Din bedriftsadresse" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "Overtidsinnstillinger" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "Innstillinger for selvregistrering" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "Tidsavrundingsregler" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "Rund tidsoppføringer til konfigurerte intervaller" +#~ msgid "Failed to load tasks" +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "Enkel aktiv timer-modus" +#~ msgid "Total days" +#~ msgstr "Totale varer" -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Weekdays only" +#~ msgstr "Uken starter på" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "Konfigurasjon av inaktiv tidsavbrudd" +#~ msgid "Entries will be created for" +#~ msgstr "Tidsregistreringer avrundes til dette intervallet" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Agenda" +#~ msgstr "Kalender" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "Tidsformat" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "CSV Format" +#~ msgstr "CSV-import" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Filter by tags..." +#~ msgstr "Filtrer mine oppgaver" -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Show billable entries only" +#~ msgstr "Fant ingen tidsregistreringer." -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "Fakturerbart beløp" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "Totalt antall timer" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "Timer etter prosjekt" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "Opprett en ny tidsregistrering" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "Velg et prosjekt..." -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Gjentakende fakturaer" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Opprett tidsregistreringsmal" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "Oppdater gjentakende faktura" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "Personvern først" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "Navigasjon" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Aktiver anonym telemetri" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Hjelp oss å forstå bruksmønstre for å forbedre TimeTracker" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "Hvilke data samles inn?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "Hva vi samler inn:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "Anonymt installasjonsfingeravtrykk (hashed)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "Appversjon og plattforminformasjon" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Funksjonsbruksstatistikk" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "Hva vi IKKE samler inn:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Ingen brukernavn eller e-post" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Ingen tidsregistreringsdata eller notater" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Ingen klient- eller forretningsdata" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "Du kan endre dette når som helst i" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "Ved å fortsette godtar du å bruke TimeTracker under" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "GPL-3.0-lisens" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Fullfør oppsettet og fortsett" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Rediger oppgave" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "Kunne ikke oppdatere status" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "Kunne ikke oppdatere oppgavestatus" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Kanban-kolonnen er opprettet" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Kanban-kolonnen er slettet" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Kanban-kolonner omorganisert" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "Kanban-kolonnens synlighet er endret" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Kanban-kolonner oppdatert" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Oppdater" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "Kunne ikke oppdatere kanban-kolonner" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Laster oppgavedetaljer ..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Sporet" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Se alle detaljer" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Tilbake til Oppgaver" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "Legg til en ny oppgave i prosjektet ditt for å dele opp arbeidet i håndterbare komponenter" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Skriv inn et beskrivende oppgavenavn" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "Velg et klart, beskrivende navn som forklarer hva som må gjøres" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "Gi detaljert informasjon om oppgaven, krav og eventuelle spesifikke instruksjoner..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "" +#~ msgid "Views" +#~ msgstr "Utsikt" -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Velg prosjektet denne oppgaven tilhører" +#~ msgid "Day View" +#~ msgstr "Rutenettvisning" -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Opprinnelig status" +#~ msgid "Week View" +#~ msgstr "Gjennomgå" -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Ferdig" +#~ msgid "Month View" +#~ msgstr "Måned" -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Valgfritt: Sett en frist for denne oppgaven" +#~ msgid "Agenda View" +#~ msgstr "Kalendervisning" -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Valgfritt: Anslå hvor lang tid denne oppgaven vil ta" +#~ msgid "Create New Entry" +#~ msgstr "Opprett ny klient" -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Valgfritt: Tilordne denne oppgaven til et teammedlem" +#~ msgid "Focus Filter" +#~ msgstr "Vis filtre" -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "Tøm alle cacher" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "Tagger for kategorisering" +#~ msgid "Close Modal" +#~ msgstr "Lukke" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Tips for å lage oppgaver" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Bruk handlingsverb og vær konkret om hva som må gjøres" +#~ msgid "Failed to load events" +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Realistiske estimater" +#~ msgid "Please select a project for new entries" +#~ msgstr "Velg et prosjekt fra rullegardinmenyen" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Vurder kompleksitet og avhengigheter når du estimerer tid" +#~ msgid "Please select a project first" +#~ msgstr "Velg et prosjekt" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Sett tidsfrister" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Forfallsdatoer hjelper deg med å prioritere arbeidet og spore fremdriften" +#~ msgid "Entry created successfully" +#~ msgstr "Arrangementet ble opprettet" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Prioritet er viktig" +#~ msgid "Failed to create entry" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "Bruk prioritetsnivåer for å hjelpe teammedlemmer med å fokusere på det som er viktigst" +#~ msgid "Entry updated" +#~ msgstr "Sist oppdatert" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Tilbake til oppgave" +#~ msgid "Failed to update entry" +#~ msgstr "Kunne ikke oppdatere status" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Oppdater oppgavedetaljer og innstillinger for \"%(task)s\"" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Er du sikker på at du vil slette dette notatet?" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Oppgaveinformasjon" +#~ msgid "Delete Entry" +#~ msgstr "Slett oppføring" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Oppdater oppgave" +#~ msgid "Automatic Timer" +#~ msgstr "Start timer" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Estimat brukt" +#~ msgid "Entry deleted" +#~ msgstr "Slettet" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Faktisk" +#~ msgid "Failed to delete entry" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Informasjon om gjeldende oppgave" +#~ msgid "Export started" +#~ msgstr "Eksporter data" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "Nåværende status" +#~ msgid "No recurring blocks yet" +#~ msgstr "Gjentakende fakturaer" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Gjeldende prioritet" +#~ msgid "Unknown Project" +#~ msgstr "Ingen prosjekt" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "For øyeblikket tildelt til" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Gjeldende forfallsdato" +#~ msgid "No events in this period" +#~ msgstr "Ingen oppgaver i denne kolonnen." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Gjeldende estimat" +#~ msgid "Failed to load agenda view" +#~ msgstr "Kunne ikke laste inn aktiviteter" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Faktiske timer" +#~ msgid "Failed to load event details" +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Startet" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Er du sikker på at du vil slette dette notatet?" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Rediger tips" +#~ msgid "Delete Recurring Block" +#~ msgstr "Oppdater gjentakende faktura" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Statusendringer" +#~ msgid "Recurring block deleted" +#~ msgstr "Gjentakende hendelse" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "Endring av status kan påvirke tidssporing og fremdriftsberegninger" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Forfallsdatooppdateringer" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Vurder teamets arbeidsbelastning når du justerer tidsfrister" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Oppdragsendringer" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "Varsle teammedlemmer når du tildeler oppgaver på nytt" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Oppdaterer..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Filtrer oppgaver" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "Frontend" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Slett valgte oppgaver" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Endre status for valgte oppgaver" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Tilordne valgte oppgaver" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Tilordne oppgaver" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Flytt valgte oppgaver til prosjekt" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Velg Prosjekt" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Flytt oppgaver" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "Er du sikker på at du vil slette oppgaven \"{name}\"?" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "Kan ikke slette oppgaven \"{name}\" fordi den har tidsoppføringer. Vennligst slett tidsregistreringene først." +#~ msgid "Failed to delete recurring block" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Slett oppgave" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "Mine oppgaver" +#~ msgid "Entry duplicated successfully" +#~ msgstr "Arrangementet ble oppdatert" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Oppgaver tildelt eller opprettet av deg" +#~ msgid "Failed to duplicate entry" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "total" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "Filtrer mine oppgaver" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "Tastatursnarveier" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Oppgavenavn eller beskrivelse" +#~ msgid "Edit Time Entry" +#~ msgstr "Ny tidsregistrering" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Alle prioriteringer" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Oppgavetype" +#~ msgid "Confirm Changes" +#~ msgstr "Bekreftet" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "Tildelt til meg" +#~ msgid "Confirm & Save" +#~ msgstr "Bekreftet" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Laget av meg" +#~ msgid "Admin Mode" +#~ msgstr "Administrasjonsgruppe" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Vis kun forfalt" +#~ msgid "Admin Mode:" +#~ msgstr "Administrasjonsgruppe" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Laget av meg" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "Mine oppgaver paginering" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Velg prosjektet denne oppgaven tilhører" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "Ingen oppgaver funnet" +#~ msgid "Task (Optional)" +#~ msgstr "Oppgave (valgfritt)" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "Du har ingen oppgaver tildelt deg eller opprettet av deg ennå." +#~ msgid "Select a specific task within the project" +#~ msgstr "Den valgte oppgaven er ugyldig for det valgte prosjektet" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Lag din første oppgave" +#~ msgid "When the work started" +#~ msgstr "Uke startdato" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Vis alle oppgaver" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Forfalte oppgaver" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Krever umiddelbar oppmerksomhet" +#~ msgid "Time the work ended" +#~ msgstr "Kundekontrakten ble avsluttet" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "gjenstander" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "Det finnes" +#~ msgid "Automatic" +#~ msgstr "Autorisasjon" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "Se gjennom og oppdater disse oppgavene for å unngå ytterligere forsinkelser." +#~ msgid "How this entry was created" +#~ msgstr "Klient opprettet" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "Forfaller:" +#~ msgid "Duration:" +#~ msgstr "Varighet" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "Est:" +#~ msgid "Describe what you worked on" +#~ msgstr "Hva jobbet du med?" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Faktisk:" +#~ msgid "tag1, tag2" +#~ msgstr "tag1, tag2" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "Forfallsdatoer" +#~ msgid "Internal invoice reference" +#~ msgstr "Ingen fakturaer er valgt" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Kvittering/Fakturanummer" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "Forfallsdatoer" +#~ msgid "Reason for Change" +#~ msgstr "Årsak til arkivering" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "Prosjektledelse" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "Alle prioriteringer" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "Ingen forfalte oppgaver!" +#~ msgid "Task:" +#~ msgstr "Oppgave" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "Flott jobb! Alle oppgavene er foreløpig i rute." +#~ msgid "Start:" +#~ msgstr "Start" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" +#~ msgid "End:" +#~ msgstr "Slutt" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "Er du sikker på at du vil forlenge forfallsdatoen til" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "for alle forfalte oppgaver?" +#~ msgid "Admin Notice" +#~ msgstr "Legg til merknad" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "Angi ny prioritet (lav/middels/høy/haster):" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "Er du sikker på at du vil prioritere" +#~ msgid "Duplicate Entry" +#~ msgstr "Duplisert oppføring" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Ugyldig prioritet. Vennligst bruk: lav, middels, høy eller haster" +#~ msgid "Duplicate Time Entry" +#~ msgstr "Duplikat tidsregistrering" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "Logg tid manuelt" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "Kunne ikke oppdatere målet. Vennligst prøv igjen." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "Starte oppgaven og markere som Pågår?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Endre oppgavestatus" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "Merke oppgaven som å gjøre?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "Vil du merke oppgaven som Ferdig?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Fullfør oppgaven" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Fullstendig" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "Åpne oppgaven for gjennomgang på nytt?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Åpne oppgave på nytt" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Åpne igjen" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "Prosjektdetaljer og omfang" - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Opprett tidsregistreringsmal" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "f.eks. daglig standup, klientmøte" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "f.eks. 1,0, 0,5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Forhåndsutfyll notater for denne typen tidsregistrering" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "f.eks. møte, utvikling, admin" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Rediger mal" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "Er du sikker på at du vil slette denne malen?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Slett mal" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "Lag din første oppgave" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "Maler" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "Lag din første e-postmal for å tilpasse e-postfakturaer." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Bruksstatistikk" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Lag en kopi av en tidligere oppføring med nye tider" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "Opprett en ny tidsregistrering" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "Dupliserer oppføring:" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "Original:" +#~ msgstr "Opprinnelig:" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "to" +#~ msgstr "til" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "Tilbake til Rediger" +#~ msgid "Project & task" +#~ msgstr "Prosjekter" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "Dato og tid" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "Be om godkjenning" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "Slå på filtre" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "Ingen tidsregistreringsdata eller notater" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "Ingen tidsregistreringer registrert ennå" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "Mine oppgaver paginering" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "Manuell tidsinntasting" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "Tidsregistrering" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "Hvordan oppretter jeg massetidsoppføringer for flere dager?" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "Masseinngang" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "Det valgte prosjektet ble ikke funnet" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Oppgaver lastes inn etter valg av prosjekt" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "Tidsområde" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "Gjest" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "Tidsregistreringer avrundes til dette intervallet" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "Smarte timere" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "Hva jobbet du med?" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "tag1, tag2" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "Filtrer fakturaer" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "Nylige oppføringer" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "Masseinngang" +#~ msgid "Apply filters" +#~ msgstr "Bruk filtre" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "Ukentlige trender" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "Ledetid (dager)" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "Kunne ikke laste inn oppgaver" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "Totale varer" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "Uken starter på" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "Tidsregistreringer avrundes til dette intervallet" - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "Kalender" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "Tidsformat" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "CSV-import" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "Filtrer mine oppgaver" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "Fant ingen tidsregistreringer." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "Fakturerbart beløp" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "Totalt antall timer" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "Timer etter prosjekt" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "Opprett en ny tidsregistrering" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Velg et prosjekt..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "Gjentakende fakturaer" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "Opprett tidsregistreringsmal" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "Oppdater gjentakende faktura" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "Navigasjon" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "Utsikt" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "Rutenettvisning" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "Gjennomgå" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "Måned" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "Kalendervisning" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "Opprett ny klient" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "Vis filtre" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "Tøm alle cacher" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "Lukke" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "Spor tiden din med en visuell tidtaker" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "Estimert fullføring" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "Kunne ikke laste inn oppgaver" +#~ msgid "Calculating..." +#~ msgstr "Beregner..." -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "Velg et prosjekt fra rullegardinmenyen" +#~ msgid "Based on average session duration" +#~ msgstr "Basert på gjennomsnittlig øktvarighet" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "Velg et prosjekt" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Ingen aktiv timer. Start en nedenfor!" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "Start ny timer" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "Arrangementet ble opprettet" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "Kunne ikke slette aktiviteten" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "Sist oppdatert" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "Kunne ikke oppdatere status" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "Er du sikker på at du vil slette dette notatet?" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "Slett oppføring" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "Start timer" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "Slettet" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "Kunne ikke slette aktiviteten" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "Eksporter data" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "Gjentakende fakturaer" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "Ingen prosjekt" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "Kunne ikke laste inn oppgaver" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "Ingen oppgaver i denne kolonnen." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "Kunne ikke laste inn aktiviteter" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "Kunne ikke laste inn oppgaver" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "Er du sikker på at du vil slette dette notatet?" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "Oppdater gjentakende faktura" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "Gjentakende hendelse" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "Kunne ikke slette aktiviteten" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "Arrangementet ble oppdatert" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "Kunne ikke slette aktiviteten" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Legg til notater om hva du jobber med..." -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "Tastatursnarveier" +#~ msgid "Or use a template" +#~ msgstr "Eller bruk en mal" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "Ny tidsregistrering" +#~ msgid "Recent Projects" +#~ msgstr "Nylige prosjekter" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "Dagens statistikk" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "Bekreftet" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "Bekreftet" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "Administrasjonsgruppe" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "Administrasjonsgruppe" +#~ msgid "Approval" +#~ msgstr "Vedta" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "Velg prosjektet denne oppgaven tilhører" +#~ msgid "License status" +#~ msgstr "Nåværende status" -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "Oppgave (valgfritt)" +#~ msgid "Supporter license active" +#~ msgstr "Støttede funksjoner" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "Den valgte oppgaven er ugyldig for det valgte prosjektet" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "Uke startdato" +#~ msgid "Not activated" +#~ msgstr "Aktiver" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "Skriv inn klientnavn" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "Kundekontrakten ble avsluttet" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "License key" +#~ msgstr "Tillatelse" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "Autorisasjon" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "Klient opprettet" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "Varighet" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "Hva jobbet du med?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "tag1, tag2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "Ingen fakturaer er valgt" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "Kvittering/Fakturanummer" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "Årsak til arkivering" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Validate" +#~ msgstr "Dato" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "Oppgave" +#~ msgid "Back to Settings" +#~ msgstr "Innstillinger for sikkerhetskopiering" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "Start" +#~ msgid "Profile" +#~ msgstr "Profil" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "Slutt" +#~ msgid "In progress" +#~ msgstr "Pågår" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "Se alle tidsregistreringer" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "Legg til merknad" +#~ msgid "No recent time entries" +#~ msgstr "Ingen nyere tidsoppføringer" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Administrer kontoinnstillingene og -preferansene dine" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Duplisert oppføring" +#~ msgid "Support & Community" +#~ msgstr "Åpen kildekode og fellesskap" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Duplikat tidsregistrering" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Logg tid manuelt" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Lag en kopi av en tidligere oppføring med nye tider" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Opprett en ny tidsregistrering" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Dupliserer oppføring:" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Opprinnelig:" +#~ msgid "Profile Information" +#~ msgstr "Profilinformasjon" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "til" +#~ msgid "Username cannot be changed" +#~ msgstr "Brukernavn kan ikke endres" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "Prosjekter" +#~ msgid "Required for email notifications" +#~ msgstr "Nødvendig for e-postvarsler" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "Dato og tid" +#~ msgid "Notification Preferences" +#~ msgstr "Varslingsinnstillinger" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "Aktiver e-postvarsler" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "Hovedbryter for alle e-postvarsler" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Varsler om forfalte fakturaer" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "Gjest" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Oppgavetildelingsvarsler" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Varsler om kommentarer og omtale" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "Ukentlig tidssammendrag e-post" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "Hva jobbet du med?" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Aktiver e-postvarsler" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "Bruk filtre" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "Visningsinnstillinger" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "System Default" +#~ msgstr "Systemstandard" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "Tidsavrundingspreferanser" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Konfigurer hvordan tidsregistreringene dine " +#~ "avrundes. Dette påvirker hvordan varighetene" +#~ " beregnes når du stopper tidtakere." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "Aktiver tidsavrunding" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Rund tidsoppføringer til konfigurerte intervaller" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "Avrundingsintervall" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "Tidsregistreringer avrundes til dette intervallet" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Spor tiden din med en visuell tidtaker" +#~ msgid "Rounding Method" +#~ msgstr "Avrundingsmetode" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Estimert fullføring" +#~ msgid "Overtime Settings" +#~ msgstr "Overtidsinnstillinger" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Beregner..." +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "Basert på gjennomsnittlig øktvarighet" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Ingen aktiv timer. Start en nedenfor!" +#~ msgid "Daily hours" +#~ msgstr "Daglige timer" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Start ny timer" +#~ msgid "Weekly hours" +#~ msgstr "Ukentlige mål" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Legg til notater om hva du jobber med..." +#~ msgid "Standard Hours Per Day" +#~ msgstr "Standard timer per dag" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "Eller bruk en mal" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Typisk 8 timer for en fulltidsjobb" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "Nylige prosjekter" +#~ msgid "Standard Hours Per Week" +#~ msgstr "Standard timer per dag" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "Dagens statistikk" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "How it works" +#~ msgstr "Hvordan det fungerer" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "Hvis du jobber mer enn standardtimer " +#~ "på en dag, vil den ekstra tiden" +#~ " spores som overtid i rapporter og" +#~ " analyser." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "Vedta" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "Regionale innstillinger" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "Nåværende status" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "Støttede funksjoner" +#~ msgid "Time Format" +#~ msgstr "Tidsformat" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "Uken starter på" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "Aktiver" +#~ msgid "Sunday" +#~ msgstr "søndag" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Monday" +#~ msgstr "mandag" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "Skriv inn klientnavn" +#~ msgid "Saturday" +#~ msgstr "lørdag" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "Kalendervisning" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "Tillatelse" +#~ msgid "Remember last view" +#~ msgstr "Medlem siden" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "Dato" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "Opprett innkjøpsordre" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "Tidsavrunding er deaktivert. Alle tider " +#~ "vil bli registrert nøyaktig som sporet." -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "Innstillinger for sikkerhetskopiering" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "Ingen avrunding - tider vil bli registrert nøyaktig som sporet." -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Profil" +#~ msgid "Actual time:" +#~ msgstr "Faktisk tid:" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "Pågår" +#~ msgid "Rounded:" +#~ msgstr "Avrundet:" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Se alle tidsregistreringer" +#~ msgid "With " +#~ msgstr "Med" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "Ingen nyere tidsoppføringer" +#~ msgid " minute intervals" +#~ msgstr "minuttintervaller" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Administrer kontoinnstillingene og -preferansene dine" +#~ msgid "Create Weekly Goal" +#~ msgstr "Lag ukentlig mål" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "Åpen kildekode og fellesskap" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Lag ukentlig tidsmål" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "Sett et mål for arbeidstimer denne uken" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "Måltid" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "Hvor mange timer vil du jobbe denne uken?" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "Uke startdato" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "La stå tomt for å bruke gjeldende uke (starter mandag)" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Profilinformasjon" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "Brukernavn kan ikke endres" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Nødvendig for e-postvarsler" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Valgfrie merknader om målet ditt..." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Varslingsinnstillinger" +#~ msgid "Quick Presets" +#~ msgstr "Raske forhåndsinnstillinger" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Aktiver e-postvarsler" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Tips for å sette mål" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Hovedbryter for alle e-postvarsler" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "Vær realistisk: Vurder ferier, møter og andre forpliktelser" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Varsler om forfalte fakturaer" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "Begynn konservativt: Du kan alltid justere målet ditt senere" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Oppgavetildelingsvarsler" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "Spor fremgang: Sjekk dashbordet regelmessig for å holde deg på sporet" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Varsler om kommentarer og omtale" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "Typisk heltid: 40 timer per uke (8 timer/dag, 5 dager)" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "Ukentlig tidssammendrag e-post" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Rediger ukentlig mål" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Rediger ukentlig tidsmål" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "Ukeperiode" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "Aktiver e-postvarsler" +#~ msgid "Current Progress" +#~ msgstr "Nåværende fremgang" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Er du sikker på at du vil slette dette målet?" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "Slett mål" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "Ukentlige tidsmål" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Angi og spor dine ukentlige timemål" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "Nytt mål" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "Totale mål" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Visningsinnstillinger" +#~ msgid "Success Rate" +#~ msgstr "Suksessrate" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "Systemstandard" +#~ msgid "Current Week Goal" +#~ msgstr "Nåværende ukemål" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Tidsavrundingspreferanser" +#~ msgid "Remaining Hours" +#~ msgstr "Gjenstående timer" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "Konfigurer hvordan tidsregistreringene dine avrundes. Dette påvirker hvordan varighetene beregnes når du stopper tidtakere." +#~ msgid "Days Remaining" +#~ msgstr "Dager igjen" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Aktiver tidsavrunding" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Gj.sn. timer/dag nødvendig" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Rund tidsoppføringer til konfigurerte intervaller" +#~ msgid "Edit Goal" +#~ msgstr "Rediger mål" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Avrundingsintervall" +#~ msgid "No goal set for this week" +#~ msgstr "Ingen mål satt for denne uken" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "Tidsregistreringer avrundes til dette intervallet" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "Lag et ukentlig tidsmål for å begynne å spore fremgangen din" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Avrundingsmetode" +#~ msgid "Goal History" +#~ msgstr "Målhistorie" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Overtidsinnstillinger" +#~ msgid "Target" +#~ msgstr "Mål" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "Ukentlige måldetaljer" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "Daglige timer" +#~ msgid "Daily Breakdown" +#~ msgstr "Daglig sammenbrudd" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "Ukentlige mål" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Standard timer per dag" +#~ msgid "Time Entries This Week" +#~ msgstr "Tidsposter denne uken" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Typisk 8 timer for en fulltidsjobb" +#~ msgid "No Project" +#~ msgstr "Ingen prosjekt" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "Standard timer per dag" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Ingen tidsregistreringer registrert for denne uken ennå" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "Hvordan det fungerer" +#~ msgid "Reference date" +#~ msgstr "Referansetype" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "Hvis du jobber mer enn standardtimer på en dag, vil den ekstra tiden spores som overtid i rapporter og analyser." +#~ msgid "Create/Get Period" +#~ msgstr "Opprett PO" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Start date" +#~ msgstr "Startdato" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "End date" +#~ msgstr "Sluttdato" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Exports" +#~ msgstr "Eksport" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "Regionale innstillinger" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Tidsformat" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "Uken starter på" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "søndag" +#~ msgid "Audit Events CSV" +#~ msgstr "Rediger hendelse" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "mandag" +#~ msgid "Timesheet Periods" +#~ msgstr "Ukeperiode" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "lørdag" +#~ msgid "Submit" +#~ msgstr "Tema" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "Kalendervisning" +#~ msgid "No timesheet periods yet." +#~ msgstr "Ingen tidsregistreringer registrert ennå" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "Medlem siden" +#~ msgid "Leave Balances" +#~ msgstr "Lagre endringer" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "Opprett innkjøpsordre" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "Tidsavrunding er deaktivert. Alle tider vil bli registrert nøyaktig som sporet." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "Ingen avrunding - tider vil bli registrert nøyaktig som sporet." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Faktisk tid:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Avrundet:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Med" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "minuttintervaller" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Lag ukentlig mål" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Lag ukentlig tidsmål" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "Sett et mål for arbeidstimer denne uken" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Måltid" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "Hvor mange timer vil du jobbe denne uken?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Uke startdato" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "La stå tomt for å bruke gjeldende uke (starter mandag)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "bruker" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Valgfrie merknader om målet ditt..." +#~ msgid "No leave types configured." +#~ msgstr "Ikke konfigurert" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "Raske forhåndsinnstillinger" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Tips for å sette mål" +#~ msgid "Select leave type" +#~ msgstr "Velg klient" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Vær realistisk: Vurder ferier, møter og andre forpliktelser" +#~ msgid "Requested hours" +#~ msgstr "Beregnet timer" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Begynn konservativt: Du kan alltid justere målet ditt senere" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Tilgjengelige variabler" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "Spor fremgang: Sjekk dashbordet regelmessig for å holde deg på sporet" +#~ msgid "Comment" +#~ msgstr "Kommentarer" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Typisk heltid: 40 timer per uke (8 timer/dag, 5 dager)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Rediger ukentlig mål" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Rediger ukentlig tidsmål" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Ukeperiode" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Nåværende fremgang" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "Er du sikker på at du vil slette dette målet?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Slett mål" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Ukentlige tidsmål" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Angi og spor dine ukentlige timemål" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Nytt mål" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Totale mål" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Suksessrate" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Nåværende ukemål" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Gjenstående timer" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Dager igjen" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Gj.sn. timer/dag nødvendig" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Rediger mål" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "Ingen mål satt for denne uken" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "Lag et ukentlig tidsmål for å begynne å spore fremgangen din" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Målhistorie" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Mål" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Ukentlige måldetaljer" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "Avvist" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Daglig sammenbrudd" +#~ msgid "Allocated" +#~ msgstr "Opprettet" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "Tid" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Tidsposter denne uken" +#~ msgid "Utilization %" +#~ msgstr "Autorisasjon" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Ingen prosjekt" +#~ msgid "No capacity data available." +#~ msgstr "Ingen brennhastighetsdata tilgjengelig" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Ingen tidsregistreringer registrert for denne uken ennå" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "Referansetype" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "Opprett PO" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "Startdato" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "Sluttdato" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "Eksport" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "Aktiver klientportal" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "Fakturerbar statusoverstyring" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "Rediger hendelse" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "Ukeperiode" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "Tema" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "Ingen tidsregistreringer registrert ennå" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "Lagre endringer" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "Kun aktiv" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "Hendelsestype" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "bruker" +#~ msgid "Accrual hours per month" +#~ msgstr "Faktiske timer" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "Ikke konfigurert" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "Hendelsestype" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "Velg klient" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "Beregnet timer" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "Tilgjengelige variabler" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "Kommentarer" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "Funksjonshemmet" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "Firmadetaljer" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "Avvist" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "Opprettet" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "Tid" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "Autorisasjon" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "Ingen brennhastighetsdata tilgjengelig" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "Rollenavn" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "Merknader (valgfritt)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "Legg til Good" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "Aktiver klientportal" +#~ msgid "No holidays configured." +#~ msgstr "Ingen webhooks er konfigurert" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "Fakturerbar statusoverstyring" +#~ msgid "Support" +#~ msgstr "Støtte" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "Kun aktiv" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "Hendelsestype" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "Faktiske timer" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "Hendelsestype" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "Funksjonshemmet" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "Firmadetaljer" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "Rollenavn" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "Merknader (valgfritt)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "Legg til Good" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "Ingen webhooks er konfigurert" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "Overbetalt" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Støtte" +#~ msgid "Cash" +#~ msgstr "Kontanter" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "Sjekke" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "Bankoverføring" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "Kredittkort" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "Debetkort" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "Stripe" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "Overbetalt" +#~ msgid "Company Card" +#~ msgstr "Bedriftskort" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "Kontanter" +#~ msgid "Reimbursed" +#~ msgstr "Refundert" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Sjekke" +#~ msgid "Processing" +#~ msgstr "Behandling" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Bankoverføring" +#~ msgid "80% Budget Warning" +#~ msgstr "80 % budsjettadvarsel" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Kredittkort" +#~ msgid "Budget Limit Reached" +#~ msgstr "Budsjettgrense nådd" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Debetkort" +#~ msgid "Info" +#~ msgstr "Info" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Stripe" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Bedriftskort" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Refundert" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Behandling" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Fakturanummer: %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "80 % budsjettadvarsel" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "Utstedelsesdato: %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Budsjettgrense nådd" +#~ msgid "Due Date: %(date)s" +#~ msgstr "Forfallsdato: %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Info" +#~ msgid "Quote For:" +#~ msgstr "Sitat for:" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "Sitatdetaljer:" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "Varer:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "Total:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "Fakturanummer: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "Utstedelsesdato: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "Forfallsdato: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Sitat for:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Sitatdetaljer:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Varer:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Total:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Logg inn for å få tilgang til denne siden" +#~ msgid "Please log in to access this page" +#~ msgstr "Logg inn for å få tilgang til denne siden" diff --git a/translations/nl/LC_MESSAGES/messages.po b/translations/nl/LC_MESSAGES/messages.po index faabfcce..db0421d4 100644 --- a/translations/nl/LC_MESSAGES/messages.po +++ b/translations/nl/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: nl\n" @@ -14,26619 +14,18507 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "Log in om toegang te krijgen tot het klantenportaal." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." -msgstr "Uw sessie is verlopen of de pagina is te lang geopend. Probeer het opnieuw." +msgstr "" +"Uw sessie is verlopen of de pagina is te lang geopend. Probeer het " +"opnieuw." -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "Beheerderstoegang vereist" +#~ msgid "Administrator access required" +#~ msgstr "Beheerderstoegang vereist" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "Gebruikersnaam is vereist" +#~ msgid "Username is required" +#~ msgstr "Gebruikersnaam is vereist" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "Gebruiker bestaat al" +#~ msgid "User already exists" +#~ msgstr "Gebruiker bestaat al" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "Kan gebruiker niet aanmaken vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "Gebruiker \"%(username)s\" is succesvol aangemaakt" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "Gebruikersnaam bestaat al" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Selecteer een klant wanneer u toegang tot de klantportal inschakelt." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "Wachtwoord moet minimaal 8 tekens lang zijn." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "Wachtwoorden komen niet overeen." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "Kan gebruiker niet updaten vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan gebruiker niet aanmaken vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "Gebruiker \"%(username)s\" is succesvol bijgewerkt" +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "Gebruiker \"%(username)s\" is succesvol aangemaakt" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "Kan de laatste beheerder niet verwijderen" +#~ msgid "Username already exists" +#~ msgstr "Gebruikersnaam bestaat al" -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "Kan gebruiker met bestaande tijdinvoer niet verwijderen" +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "Selecteer een klant wanneer u toegang tot de klantportal inschakelt." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "Kan gebruiker niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "Wachtwoord moet minimaal 8 tekens lang zijn." -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "Gebruiker \"%(username)s\" is succesvol verwijderd" +#~ msgid "Passwords do not match." +#~ msgstr "Wachtwoorden komen niet overeen." -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "Telemetrie is ingeschakeld. Bedankt dat je ons helpt verbeteren!" +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan gebruiker niet updaten vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "Gebruiker \"%(username)s\" is succesvol bijgewerkt" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "Kan de laatste beheerder niet verwijderen" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "Kan gebruiker met bestaande tijdinvoer niet verwijderen" -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan gebruiker niet verwijderen vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "Gebruiker \"%(username)s\" is succesvol verwijderd" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "Ongeldige tijdzone: %(timezone)s" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "Telemetrie is ingeschakeld. Bedankt dat je ons helpt verbeteren!" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "Kan de instellingen niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Instellingen zijn succesvol bijgewerkt" +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Fout bij opslaan van instellingen" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "Ongeldige tijdzone: %(timezone)s" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de instellingen niet bijwerken " +#~ "vanwege een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "Kan de PDF-indeling niet bijwerken vanwege een databasefout." +#~ msgid "Settings updated successfully" +#~ msgstr "Instellingen zijn succesvol bijgewerkt" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "PDF-indeling succesvol bijgewerkt" +#~ msgid "Invalid code." +#~ msgstr "" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "Error saving settings" +#~ msgstr "Fout bij opslaan van instellingen" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "Kan de PDF-indeling niet opnieuw instellen vanwege een databasefout." +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "PDF-indeling opnieuw ingesteld op standaardwaarden" +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "Kan de PDF-indeling niet bijwerken vanwege een databasefout." -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Geen bestand geselecteerd" +#~ msgid "PDF layout updated successfully" +#~ msgstr "PDF-indeling succesvol bijgewerkt" -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "Kan de PDF-indeling niet opnieuw instellen vanwege een databasefout." -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "PDF layout reset to defaults" +#~ msgstr "PDF-indeling opnieuw ingesteld op standaardwaarden" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Invalid page size" +#~ msgstr "" -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "Template not found for this page size" +#~ msgstr "" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "No file uploaded" +#~ msgstr "" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "No file selected" +#~ msgstr "Geen bestand geselecteerd" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "Geen logobestand geselecteerd" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "Ongeldig afbeeldingsbestand." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "Kon het logo niet opslaan vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "Bedrijfslogo succesvol geüpload! U kunt het zien in het gedeelte 'Huidig ​​bedrijfslogo' hierboven. Het verschijnt op facturen en PDF-documenten." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "Ongeldig bestandstype. Toegestane typen: PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "Kon het logo niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "Bedrijfslogo succesvol verwijderd. Upload indien nodig een nieuw logo in het onderstaande gedeelte." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "Geen logo om te verwijderen" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "Back-up mislukt: archief niet gemaakt" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "Back-up mislukt: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Ongeldig bestandstype" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "Back-upbestand niet gevonden" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "Back-up \"%(filename)s\" is succesvol verwijderd" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "Kan back-up niet verwijderen: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "Ongeldig bestandstype. Selecteer een .zip-back-uparchief." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "Back-upbestand niet gevonden." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "Ongeldig bestandstype. Upload een .zip-back-uparchief." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "Er is geen back-upbestand verstrekt" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "Herstel gestart. Op deze pagina kunt u de voortgang volgen." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC is niet ingeschakeld. Stel AUTH_METHOD in op \"oidc\" of \"beide\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER is niet geconfigureerd" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "Could not import template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "Template imported successfully" +#~ msgstr "" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ Ontdekkingsdocument succesvol opgehaald van %(url)s" +#~ msgid "Invoice not found" +#~ msgstr "" -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Quote not found" +#~ msgstr "" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ Kan detectiedocument niet ophalen: %(error)s" +#~ msgid "No logo file selected" +#~ msgstr "Geen logobestand geselecteerd" -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ Onverwachte fout: %(error)s" +#~ msgid "Invalid image file." +#~ msgstr "Ongeldig afbeeldingsbestand." -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kon het logo niet opslaan vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ OAuth-client is geregistreerd in de applicatie" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ OAuth-client is niet geregistreerd" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ Kan OAuth-client niet maken: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s: %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ Ontbrekende %(endpoint)s in detectiedocument" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ Bereik \"%(scope)s\" wordt ondersteund door de provider" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ Bereik \"%(scope)s\" wordt mogelijk niet ondersteund door de provider (ondersteund: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ Aanbieder ondersteunt claims: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ Geconfigureerde %(claim_type)s claim \"%(claim_name)s\" wordt ondersteund" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ %(claim_type)s claim \"%(claim_name)s\" geconfigureerd die niet in de lijst met ondersteunde claims staat (werkt mogelijk nog steeds)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "OIDC-configuratietest voltooid" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "Sjabloonnaam is vereist" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "Sjabloonnaam is vereist" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "Er bestaat al een sjabloon met deze naam" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "Kan geen e-mailsjabloon maken vanwege een databasefout." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "E-mailsjabloon is succesvol aangemaakt" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "Kan de e-mailsjabloon niet bijwerken vanwege een databasefout." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "E-mailsjabloon succesvol bijgewerkt" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "Kan de sjabloon die in gebruik is voor facturen of terugkerende facturen niet verwijderen" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "Kan e-mailsjabloon niet verwijderen vanwege een databasefout." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "E-mailsjabloon \"%(name)s\" is succesvol verwijderd" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "Bedrijfslogo succesvol geüpload! U kunt " +#~ "het zien in het gedeelte 'Huidig " +#~ "​​bedrijfslogo' hierboven. Het verschijnt op" +#~ " facturen en PDF-documenten." -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "Het geselecteerde project bestaat niet of is inactief" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "bericht" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "Ongeldig bestandstype. Toegestane typen: PNG, JPG, JPEG, GIF, SVG, WEBP" -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "Tabel met auditlogboeken bestaat niet. Voer alstublieft uit: flask db upgrade" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kon het logo niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "Bedrijfslogo succesvol verwijderd. Upload " +#~ "indien nodig een nieuw logo in het" +#~ " onderstaande gedeelte." -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "Geen logo om te verwijderen" -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "Welkom terug, %(username)s!" +#~ msgid "Backup failed: archive not created" +#~ msgstr "Back-up mislukt: archief niet gemaakt" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "Back-up mislukt: %(error)s" -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Invalid file type" +#~ msgstr "Ongeldig bestandstype" -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "Back-upbestand niet gevonden" -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "Stel uw wachtwoord in" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "Back-up \"%(filename)s\" is succesvol verwijderd" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "Kan back-up niet verwijderen: %(error)s" -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Ongeldig of verlopen token voor het instellen van het wachtwoord. Vraag een nieuwe aan." +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "Ongeldig bestandstype. Selecteer een .zip-back-uparchief." -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "Klantportal is niet ingeschakeld voor deze klant." +#~ msgid "Backup file not found." +#~ msgstr "Back-upbestand niet gevonden." -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "Ongeldig bestandstype. Upload een .zip-back-uparchief." -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "Kan wachtwoord niet instellen vanwege een databasefout." +#~ msgid "No backup file provided" +#~ msgstr "Er is geen back-upbestand verstrekt" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "Herstel gestart. Op deze pagina kunt u de voortgang volgen." -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "" +#~ "OIDC is niet ingeschakeld. Stel " +#~ "AUTH_METHOD in op \"oidc\" of \"beide\"." -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER is niet geconfigureerd" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "Kan uw account niet aanmaken vanwege een databasefout. Probeer het later opnieuw." +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "Welkom! Uw account is aangemaakt." +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Gebruiker niet gevonden. Neem contact op met een beheerder." +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "Kan uw accountrol niet bijwerken vanwege een databasefout." +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ Ontdekkingsdocument succesvol opgehaald van %(url)s" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "Account is uitgeschakeld. Neem contact op met een beheerder." +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ Kan detectiedocument niet ophalen: %(error)s" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ Onverwachte fout: %(error)s" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "Onverwachte fout tijdens het inloggen. Probeer het opnieuw of controleer de serverlogboeken." - -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "Uw sessie is verlopen of de pagina is te lang geopend. Probeer het opnieuw." - -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "Authenticatiemethode" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "Authenticatiemethode" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "Kan uw account niet aanmaken vanwege een databasefout." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "Authenticatiemethode" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "Kan uw accountrol niet bijwerken vanwege een databasefout." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "Tot ziens, %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "Ongeldig avatarbestandstype. Toegestaan: PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "Kan avatar niet opslaan op de server." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Profiel is succesvol bijgewerkt" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "Kan uw profiel niet bijwerken vanwege een databasefout." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ OAuth-client is geregistreerd in de applicatie" -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ OAuth-client is niet geregistreerd" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ Kan OAuth-client niet maken: %(error)s" -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s: %(url)s" -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ Ontbrekende %(endpoint)s in detectiedocument" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ Bereik \"%(scope)s\" wordt ondersteund door de provider" -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar verwijderd" +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ Bereik \"%(scope)s\" wordt mogelijk " +#~ "niet ondersteund door de provider " +#~ "(ondersteund: %(supported)s)" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "Kan avatar niet verwijderen." +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ Aanbieder ondersteunt claims: %(claims)s" -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "" +#~ "✓ Geconfigureerde %(claim_type)s claim " +#~ "\"%(claim_name)s\" wordt ondersteund" -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ %(claim_type)s claim \"%(claim_name)s\" " +#~ "geconfigureerd die niet in de lijst " +#~ "met ondersteunde claims staat (werkt " +#~ "mogelijk nog steeds)" -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "OIDC configuration test completed" +#~ msgstr "OIDC-configuratietest voltooid" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "Single Sign-On is nog niet geconfigureerd. Neem contact op met een beheerder." +#~ msgid "Template name is required" +#~ msgstr "Sjabloonnaam is vereist" -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "Eenmalige aanmelding is niet geconfigureerd." +#~ msgid "HTML template content is required" +#~ msgstr "Sjabloonnaam is vereist" -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "A template with this name already exists" +#~ msgstr "Er bestaat al een sjabloon met deze naam" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Could not create email template due to a database error." +#~ msgstr "Kan geen e-mailsjabloon maken vanwege een databasefout." -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "Authenticatie mislukt: ontbrekende claim van uitgever of onderwerp. Controleer de OIDC-configuratie." +#~ msgid "Email template created successfully" +#~ msgstr "E-mailsjabloon is succesvol aangemaakt" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "Gebruikersaccount bestaat niet en zelfregistratie is uitgeschakeld." +#~ msgid "Could not update email template due to a database error." +#~ msgstr "Kan de e-mailsjabloon niet bijwerken vanwege een databasefout." -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "Kan uw account niet aanmaken vanwege een databasefout." +#~ msgid "Email template updated successfully" +#~ msgstr "E-mailsjabloon succesvol bijgewerkt" -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "Onverwachte fout tijdens SSO-aanmelding. Probeer het opnieuw of neem contact op met de ondersteuning." +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" +#~ "Kan de sjabloon die in gebruik is" +#~ " voor facturen of terugkerende facturen " +#~ "niet verwijderen" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "U heeft geen toegang tot dit project." +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "Kan e-mailsjabloon niet verwijderen vanwege een databasefout." -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Voor dit project is geen budget vastgesteld." +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "E-mailsjabloon \"%(name)s\" is succesvol verwijderd" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Evenement succesvol aangemaakt" +#~ msgid "Task name and project are required" +#~ msgstr "" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Evenement succesvol bijgewerkt" +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "Het geselecteerde project bestaat niet of is inactief" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "Je hebt geen toestemming om dit evenement te verwijderen." +#~ msgid "message" +#~ msgstr "bericht" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "Kan gebeurtenis niet verwijderen" +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Evenement succesvol verwijderd" +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" +#~ "Tabel met auditlogboeken bestaat niet. " +#~ "Voer alstublieft uit: flask db upgrade" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "Fout bij verwijderen gebeurtenis: %(error)s" +#~ msgid "You must change your password before continuing." +#~ msgstr "" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "Evenement is succesvol verplaatst" +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "Het formaat van het evenement is gewijzigd" +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "Welkom terug, %(username)s!" -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "Je hebt geen toestemming om dit evenement te bekijken." +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "Je hebt geen toestemming om dit evenement te bewerken." +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "Let op: de inhoud mag niet leeg zijn" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Opmerking succesvol toegevoegd" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Fout bij toevoegen van notitie" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Fout bij toevoegen van notitie: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "Opmerking hoort niet bij deze klant" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "U heeft geen toestemming om deze notitie te bewerken" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Fout bij updaten van notitie" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Opmerking succesvol bijgewerkt" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Fout bij bijwerken van opmerking: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "U heeft geen toestemming om deze notitie te verwijderen" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Fout bij verwijderen van notitie" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Opmerking succesvol verwijderd" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "Fout bij verwijderen van notitie: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "Log in om toegang te krijgen tot het klantenportaal." +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Stel uw wachtwoord in" -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Toegang geweigerd" +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Verboden" +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "" +#~ "Ongeldig of verlopen token voor het " +#~ "instellen van het wachtwoord. Vraag een" +#~ " nieuwe aan." -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "Password reset is not available for this account." +#~ msgstr "Klantportal is niet ingeschakeld voor deze klant." -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "Could not reset password due to a database error." +#~ msgstr "Kan wachtwoord niet instellen vanwege een databasefout." -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "Invalid username format" +#~ msgstr "" -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Pagina niet gevonden" +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "De pagina die u zoekt bestaat niet of is verplaatst." +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Serverfout" +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "Kan uw account niet aanmaken vanwege " +#~ "een databasefout. Probeer het later " +#~ "opnieuw." -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "Welkom! Uw account is aangemaakt." -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "Toegang tot de klantportal is niet ingeschakeld voor uw account." +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Gebruiker niet gevonden. Neem contact op met een beheerder." -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "Uw klantaccount is inactief." +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "Kan uw accountrol niet bijwerken vanwege een databasefout." -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Gebruikersnaam en wachtwoord zijn vereist." +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "Account is uitgeschakeld. Neem contact op met een beheerder." -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Ongeldige gebruikersnaam of wachtwoord." +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "Welkom, %(client_name)s!" +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "U bent uitgelogd." +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Ongeldig of ontbrekend wachtwoordinsteltoken." +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" +#~ "Onverwachte fout tijdens het inloggen. " +#~ "Probeer het opnieuw of controleer de " +#~ "serverlogboeken." -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "Ongeldig of verlopen token voor het instellen van het wachtwoord. Vraag een nieuwe aan." +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "" +#~ "Uw sessie is verlopen of de pagina" +#~ " is te lang geopend. Probeer het " +#~ "opnieuw." + +#~ msgid "Invalid authentication code." +#~ msgstr "Authenticatiemethode" + +#~ msgid "Two-factor authentication enabled." +#~ msgstr "Authenticatiemethode" + +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "Kan uw account niet aanmaken vanwege een databasefout." -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "Wachtwoord is vereist." +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Authenticatiemethode" + +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "Kan uw accountrol niet bijwerken vanwege een databasefout." + +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "Tot ziens, %(username)s!" -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "Kan wachtwoord niet instellen vanwege een databasefout." +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "Ongeldig avatarbestandstype. Toegestaan: PNG, JPG, JPEG, GIF, WEBP" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "Wachtwoord succesvol ingesteld! U kunt nu inloggen op het portaal." +#~ msgid "Failed to save avatar on server." +#~ msgstr "Kan avatar niet opslaan op de server." -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "Kan klantportalgegevens niet laden." +#~ msgid "Profile updated successfully" +#~ msgstr "Profiel is succesvol bijgewerkt" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "Kan uw profiel niet bijwerken vanwege een databasefout." -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "New password is required" +#~ msgstr "" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Current password is required" +#~ msgstr "" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Factuur niet gevonden." +#~ msgid "Current password is incorrect" +#~ msgstr "" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Citaat niet gevonden." +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Could not update password due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "Avatar removed" +#~ msgstr "Avatar verwijderd" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "Kan avatar niet verwijderen." -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" +#~ "Single Sign-On is nog niet " +#~ "geconfigureerd. Neem contact op met een" +#~ " beheerder." -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "Eenmalige aanmelding is niet geconfigureerd." -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "Authenticatie mislukt: ontbrekende claim van" +#~ " uitgever of onderwerp. Controleer de " +#~ "OIDC-configuratie." -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "Gebruikersaccount bestaat niet en zelfregistratie is uitgeschakeld." -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "Kan uw account niet aanmaken vanwege een databasefout." -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Onverwachte fout tijdens SSO-aanmelding. " +#~ "Probeer het opnieuw of neem contact " +#~ "op met de ondersteuning." -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "U heeft geen toegang tot dit project." -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "Voor dit project is geen budget vastgesteld." -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "Event created successfully" +#~ msgstr "Evenement succesvol aangemaakt" -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "Evenement succesvol bijgewerkt" -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "Je hebt geen toestemming om dit evenement te verwijderen." -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Failed to delete event" +#~ msgstr "Kan gebeurtenis niet verwijderen" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Event deleted successfully" +#~ msgstr "Evenement succesvol verwijderd" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "Fout bij verwijderen gebeurtenis: %(error)s" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "Evenement is succesvol verplaatst" -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "Event resized successfully" +#~ msgstr "Het formaat van het evenement is gewijzigd" -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "Je hebt geen toestemming om dit evenement te bekijken." -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "Je hebt geen toestemming om dit evenement te bewerken." -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "Kan klantportalgegevens niet laden." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "Klantenportaal" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "Laatste 7 dagen" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Samenvatting" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Totaal aantal uren" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Betaald" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Uitstekend" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Uren per project" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Project" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Uur" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Factureerbare uren" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "Tijdbereik" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Datum" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Toegang geweigerd" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "Let op: de inhoud mag niet leeg zijn" -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "Note added successfully" +#~ msgstr "Opmerking succesvol toegevoegd" -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Error adding note" +#~ msgstr "Fout bij toevoegen van notitie" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "U heeft geen toestemming om klanten aan te maken" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Fout bij toevoegen van notitie: %(error)s" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "Klantnaam is vereist" +#~ msgid "Note does not belong to this client" +#~ msgstr "Opmerking hoort niet bij deze klant" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "Er bestaat al een client met deze naam" +#~ msgid "You do not have permission to edit this note" +#~ msgstr "U heeft geen toestemming om deze notitie te bewerken" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Error updating note" +#~ msgstr "Fout bij updaten van notitie" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Ongeldig uurtariefformaat" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "Voorafbetaalde uren moeten een positief getal zijn." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "De resetdag van een prepaid moet tussen 1 en 28 liggen." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "Note updated successfully" +#~ msgstr "Opmerking succesvol bijgewerkt" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "Kan client niet maken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Fout bij bijwerken van opmerking: %(error)s" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "U heeft geen toegang tot dit project." +#~ msgid "You do not have permission to delete this note" +#~ msgstr "U heeft geen toestemming om deze notitie te verwijderen" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "U heeft geen toestemming om klanten te bewerken" +#~ msgid "Error deleting note" +#~ msgstr "Fout bij verwijderen van notitie" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "Portal-gebruikersnaam is vereist bij het inschakelen van portaltoegang." +#~ msgid "Note deleted successfully" +#~ msgstr "Opmerking succesvol verwijderd" -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Deze portal-gebruikersnaam wordt al gebruikt door een andere klant." +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "Fout bij verwijderen van notitie: %(error)s" -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "Kan de client niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Access Denied" +#~ msgstr "Toegang geweigerd" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "U heeft geen toestemming om portal-e-mails te verzenden" +#~ msgid "403 Forbidden" +#~ msgstr "403 Verboden" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "Klantportal is niet ingeschakeld voor deze klant." +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "Portal-gebruikersnaam is niet ingesteld voor deze client." +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "Het e-mailadres van de klant is niet ingesteld. Kan geen e-mail voor het instellen van het wachtwoord verzenden." +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "Kan geen wachtwoordinsteltoken genereren vanwege een databasefout." +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "E-mail voor het instellen van het wachtwoord is succesvol verzonden naar %(email)s" +#~ msgid "Page Not Found" +#~ msgstr "Pagina niet gevonden" -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "E-mailserver is niet geconfigureerd. Configureer de e-mailinstellingen in Beheer → E-mailconfiguratie of stel de omgevingsvariabele MAIL_SERVER in." +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "Het verzenden van een e-mail voor het instellen van het wachtwoord is mislukt. Controleer de e-mailconfiguratie en serverlogboeken voor meer informatie." +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "De pagina die u zoekt bestaat niet of is verplaatst." -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "Er is een fout opgetreden tijdens het verzenden van de e-mail: %(error)s" +#~ msgid "Server Error" +#~ msgstr "Serverfout" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "U heeft geen toestemming om klanten te archiveren" +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "Klant is al inactief" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "U heeft geen toestemming om klanten te activeren" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "Toegang tot de klantportal is niet ingeschakeld voor uw account." -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "Klant is al actief" +#~ msgid "Your client account is inactive." +#~ msgstr "Uw klantaccount is inactief." -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "U heeft geen toestemming om klanten te verwijderen" +#~ msgid "Username and password are required." +#~ msgstr "Gebruikersnaam en wachtwoord zijn vereist." -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "Invalid username or password." +#~ msgstr "Ongeldige gebruikersnaam of wachtwoord." -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "Welkom, %(client_name)s!" -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "Kan de client niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "Er zijn geen klanten geselecteerd voor verwijdering" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "Kan clients niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "Er zijn geen klanten verwijderd" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "U heeft geen toestemming om de clientstatus te wijzigen" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "Geen klanten geselecteerd" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Ongeldige status" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "Kan de clientstatus niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "Er zijn geen klanten bijgewerkt" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "Geen bestand opgegeven" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Bestandstype niet toegestaan" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "Bestandsgrootte overschrijdt de maximaal toegestane grootte (10 MB)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "Kan bijlage niet uploaden vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "You have been logged out." +#~ msgstr "U bent uitgelogd." -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "Bijlage succesvol geüpload" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "Bestand niet gevonden" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "Kan bijlage niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "Bijlage succesvol verwijderd" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "Reactie-inhoud mag niet leeg zijn" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "Opmerking moet aan een project, taak of offerte zijn gekoppeld" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "Opmerking kan niet aan meerdere doelen worden gekoppeld" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Ongeldige ouderreactie" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Reactie succesvol toegevoegd" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Fout bij toevoegen van reactie" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Fout bij het toevoegen van commentaar: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "U heeft geen toestemming om deze reactie te bewerken" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Reactie is succesvol bijgewerkt" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Fout bij bijwerken commentaar: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "U heeft geen toestemming om deze reactie te verwijderen" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Reactie succesvol verwijderd" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Fout bij verwijderen reactie: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Ongeldig of ontbrekend wachtwoordinsteltoken." -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "" +#~ "Ongeldig of verlopen token voor het " +#~ "instellen van het wachtwoord. Vraag een" +#~ " nieuwe aan." -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "U heeft geen toestemming om deze bijlage te verwijderen" +#~ msgid "Password is required." +#~ msgstr "Wachtwoord is vereist." -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Could not set password due to a database error." +#~ msgstr "Kan wachtwoord niet instellen vanwege een databasefout." -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "Wachtwoord succesvol ingesteld! U kunt nu inloggen op het portaal." -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Contact aangemaakt" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Fout bij het maken van contact: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Contact succesvol bijgewerkt" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Fout bij bijwerken contact: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Contact succesvol verwijderd" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "Fout bij verwijderen contact: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Contact ingesteld als primair" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "Fout bij instellen van primair contact: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Communicatie succesvol opgenomen" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Fout bij opnemen van communicatie: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "Kan klantportalgegevens niet laden." -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "Etiket is vereist" +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "Invoice not found." +#~ msgstr "Factuur niet gevonden." -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "Quote not found." +#~ msgstr "Citaat niet gevonden." -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Ongeldige dealwaarde" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Deal is succesvol aangemaakt" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Fout bij aanmaken van deal: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Deal is succesvol bijgewerkt" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Fout bij updaten van deal: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Deal gesloten als gewonnen" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Fout bij het sluiten van de deal: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Deal gesloten als verloren" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Activiteit geregistreerd" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Fout bij het registreren van activiteit: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "Categorienaam is vereist" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Onkostencategorie is succesvol aangemaakt" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Fout bij maken van onkostencategorie" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Onkostencategorie is succesvol bijgewerkt" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Fout bij bijwerken van onkostencategorie" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Onkostencategorie is succesvol gedeactiveerd" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Fout bij het deactiveren van de onkostencategorie" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "Titel is vereist" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "Categorie is vereist" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "Bedrag is vereist" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "De onkostendatum is vereist" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Ongeldig datumformaat" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Ongeldig bedragformaat" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Uitgaven zijn succesvol gemaakt" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Fout bij het maken van onkosten" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "U heeft geen toestemming om deze uitgave te bekijken" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "U heeft geen toestemming om deze onkosten te bewerken" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "Kan goedgekeurde of vergoede onkosten niet bewerken" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Vul alle verplichte velden in" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Onkosten zijn bijgewerkt" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Fout bij bijwerken van onkosten" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "U heeft geen toestemming om deze uitgave te verwijderen" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "Kan goedgekeurde of gefactureerde onkosten niet verwijderen" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Onkosten zijn succesvol verwijderd" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Fout bij verwijderen van onkosten" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "Er zijn geen uitgaven geselecteerd voor verwijdering" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "Kon uitgaven niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "%(count)d uitgave(s) succesvol verwijderd" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "%(count)d uitgave(s) overgeslagen: %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "Geen uitgaven geselecteerd" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Ongeldige statuswaarde" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "Kan de uitgaven niet bijwerken vanwege een databasefout" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "%(count)d uitgave(s) succesvol bijgewerkt naar %(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "%(count)d uitgave(s) overgeslagen: %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "%(count)d uitgave(s) overgeslagen (geen toestemming)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Alleen beheerders kunnen uitgaven goedkeuren" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Alleen openstaande uitgaven kunnen worden goedgekeurd" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Onkosten zijn goedgekeurd" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Fout bij het goedkeuren van onkosten" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Alleen beheerders kunnen onkosten afwijzen" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Alleen openstaande uitgaven kunnen worden afgewezen" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Reden voor afwijzing is vereist" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Kosten afgewezen" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Fout bij het afwijzen van onkosten" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Alleen beheerders kunnen onkosten markeren als vergoed" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Alleen goedgekeurde uitgaven kunnen als vergoed worden aangemerkt" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Deze kosten zijn niet aangemerkt als terugbetaalbaar" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Kosten gemarkeerd als vergoed" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Fout bij het markeren van onkosten als vergoed" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "OCR is niet beschikbaar. Neem contact op met uw beheerder." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Ongeldig bestandstype. Toegestane typen: png, jpg, jpeg, gif, pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "Bon gescand! U kunt nu een uitgave maken met de geëxtraheerde gegevens." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "Fout bij scannen bon. Probeer het opnieuw of voer de kosten handmatig in." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "Geen gescande ontvangstgegevens gevonden. Scan eerst een ontvangstbewijs." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Uitgave is succesvol aangemaakt op basis van gescande bon" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "Geen rechten toegewezen." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "Kan klantportalgegevens niet laden." -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "Client Report" +#~ msgstr "Klantenportaal" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "Laatste 7 dagen" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Summary" +#~ msgstr "Samenvatting" -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "Totaal aantal uren" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Paid" +#~ msgstr "Betaald" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "Uitstekend" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "Uren per project" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Project" +#~ msgstr "Project" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Hours" +#~ msgstr "Uur" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Billable Hours" +#~ msgstr "Factureerbare uren" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "Time by Date" +#~ msgstr "Tijdbereik" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "Date" +#~ msgstr "Datum" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "REST API voor integraties" +#~ msgid "Access denied" +#~ msgstr "Toegang geweigerd" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "Klantnaam is vereist" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "U heeft geen toestemming om klanten aan te maken" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "Klantnaam is vereist" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "Er bestaat al een client met deze naam" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "Ongeldig uurtariefformaat" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "Voorafbetaalde uren moeten een positief getal zijn." -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "De resetdag van een prepaid moet tussen 1 en 28 liggen." -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan client niet maken vanwege een " +#~ "databasefout. Controleer de serverlogboeken." -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "U heeft geen toegang tot dit project." -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "U heeft geen toestemming om klanten te bewerken" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "Portal-gebruikersnaam is vereist bij het inschakelen van portaltoegang." -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "This portal username is already in use by another client." +#~ msgstr "Deze portal-gebruikersnaam wordt al gebruikt door een andere klant." -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de client niet bijwerken vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "U heeft geen toestemming om portal-e-mails te verzenden" + +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "Klantportal is niet ingeschakeld voor deze klant." + +#~ msgid "Portal username is not set for this client." +#~ msgstr "Portal-gebruikersnaam is niet ingesteld voor deze client." + +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "Het e-mailadres van de klant is " +#~ "niet ingesteld. Kan geen e-mail voor " +#~ "het instellen van het wachtwoord " +#~ "verzenden." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "Kan geen wachtwoordinsteltoken genereren vanwege een databasefout." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "" +#~ "E-mail voor het instellen van het " +#~ "wachtwoord is succesvol verzonden naar " +#~ "%(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "E-mailserver is niet geconfigureerd. " +#~ "Configureer de e-mailinstellingen in Beheer" +#~ " → E-mailconfiguratie of stel de " +#~ "omgevingsvariabele MAIL_SERVER in." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "Het verzenden van een e-mail voor " +#~ "het instellen van het wachtwoord is " +#~ "mislukt. Controleer de e-mailconfiguratie en" +#~ " serverlogboeken voor meer informatie." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "" +#~ "Er is een fout opgetreden tijdens " +#~ "het verzenden van de e-mail: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "U heeft geen toestemming om klanten te archiveren" + +#~ msgid "Client is already inactive" +#~ msgstr "Klant is al inactief" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "U heeft geen toestemming om klanten te activeren" + +#~ msgid "Client is already active" +#~ msgstr "Klant is al actief" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "U heeft geen toestemming om klanten te verwijderen" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de client niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "No clients selected for deletion" +#~ msgstr "Er zijn geen klanten geselecteerd voor verwijdering" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan clients niet verwijderen vanwege een" +#~ " databasefout. Controleer de serverlogboeken." + +#~ msgid "No clients were deleted" +#~ msgstr "Er zijn geen klanten verwijderd" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "U heeft geen toestemming om de clientstatus te wijzigen" + +#~ msgid "No clients selected" +#~ msgstr "Geen klanten geselecteerd" + +#~ msgid "Invalid status" +#~ msgstr "Ongeldige status" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kan de clientstatus niet bijwerken " +#~ "vanwege een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "No clients were updated" +#~ msgstr "Er zijn geen klanten bijgewerkt" + +#~ msgid "No file provided" +#~ msgstr "Geen bestand opgegeven" -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "File type not allowed" +#~ msgstr "Bestandstype niet toegestaan" -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "Bestandsgrootte overschrijdt de maximaal toegestane grootte (10 MB)" -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kan bijlage niet uploaden vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "Bijlage succesvol geüpload" -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "File not found" +#~ msgstr "Bestand niet gevonden" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kan bijlage niet verwijderen vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "Bijlage succesvol verwijderd" -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "Reactie-inhoud mag niet leeg zijn" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "Opmerking moet aan een project, taak of offerte zijn gekoppeld" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "Opmerking kan niet aan meerdere doelen worden gekoppeld" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "Ongeldige ouderreactie" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "Reactie succesvol toegevoegd" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "Fout bij toevoegen van reactie" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Fout bij het toevoegen van commentaar: %(error)s" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "U heeft geen toestemming om deze reactie te bewerken" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "Comment updated successfully" +#~ msgstr "Reactie is succesvol bijgewerkt" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Fout bij bijwerken commentaar: %(error)s" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "U heeft geen toestemming om deze reactie te verwijderen" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "Reactie succesvol verwijderd" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Fout bij verwijderen reactie: %(error)s" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "U heeft geen toestemming om deze bijlage te verwijderen" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "Contact aangemaakt" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Fout bij het maken van contact: %(error)s" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "Contact succesvol bijgewerkt" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Geavanceerd" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Beoordeling" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Fout bij bijwerken contact: %(error)s" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "Contact succesvol verwijderd" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "Fout bij verwijderen contact: %(error)s" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Contact set as primary" +#~ msgstr "Contact ingesteld als primair" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Bedrijf" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "Fout bij instellen van primair contact: %(error)s" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "Communicatie succesvol opgenomen" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Fout bij opnemen van communicatie: %(error)s" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Webhaken" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Label is required" +#~ msgstr "Etiket is vereist" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Projecten" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "SKU bestaat al. Gebruik een andere SKU." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Voorraadartikel is succesvol aangemaakt." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "Fout bij aanmaken voorraadartikel: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Voorraadartikel is succesvol bijgewerkt." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "Fout bij bijwerken voorraadartikel: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "Kan voorraadartikel met bestaande voorraad- of verplaatsingsgeschiedenis niet verwijderen." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "Voorraadartikel succesvol verwijderd." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "Fout bij verwijderen voorraadartikel: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "Magazijncode bestaat al. Gebruik een andere code." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Magazijn is succesvol aangemaakt." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Fout bij aanmaken magazijn: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Magazijn succesvol bijgewerkt." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "Fout bij bijwerken magazijn: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "Kan magazijn met bestaande voorraad niet verwijderen. Gelieve eerst alle voorraad over te dragen of te verwijderen." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Magazijn succesvol verwijderd." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Fout bij verwijderen magazijn: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "Ongeldige dealwaarde" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "Deal is succesvol aangemaakt" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Fout bij aanmaken van deal: %(error)s" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "Deal is succesvol bijgewerkt" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Fout bij updaten van deal: %(error)s" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "Deal gesloten als gewonnen" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Fout bij het sluiten van de deal: %(error)s" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "Deal gesloten als verloren" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "Activiteit geregistreerd" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Fout bij het registreren van activiteit: %(error)s" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "Categorienaam is vereist" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Expense category created successfully" +#~ msgstr "Onkostencategorie is succesvol aangemaakt" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "Fout bij maken van onkostencategorie" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "Onkostencategorie is succesvol bijgewerkt" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Error updating expense category" +#~ msgstr "Fout bij bijwerken van onkostencategorie" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Onkostencategorie is succesvol gedeactiveerd" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "Voorraadbeweging met succes geregistreerd." +#~ msgid "Error deactivating expense category" +#~ msgstr "Fout bij het deactiveren van de onkostencategorie" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Title is required" +#~ msgstr "Titel is vereist" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "Fout bij het registreren van voorraadbewegingen: %(error)s" +#~ msgid "Category is required" +#~ msgstr "Categorie is vereist" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "Bron- en bestemmingsmagazijnen moeten verschillend zijn." +#~ msgid "Amount is required" +#~ msgstr "Bedrag is vereist" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Onvoldoende voorraad beschikbaar in het bronmagazijn." +#~ msgid "Expense date is required" +#~ msgstr "De onkostendatum is vereist" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "Ongeldig datumformaat" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "Ongeldig bedragformaat" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "De aandelenoverdracht is succesvol afgerond." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Fout bij het maken van de overdracht: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "Voorraadaanpassing succesvol geregistreerd." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Fout bij het opnemen van aanpassingen: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Reservering succesvol afgerond." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Fout bij het uitvoeren van de reservering: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "Reservering succesvol geannuleerd." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "Fout bij annuleren reservering: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "Leverancier succesvol aangemaakt." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Fout bij aanmaken leverancier: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "Leverancierscode bestaat al. Gebruik een andere code." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "Leverancier is succesvol bijgewerkt." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Fout bij updaten leverancier: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "Kan leverancier met bijbehorende voorraadartikelen niet verwijderen. Verwijder eerst artikelen." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "Leverancier succesvol verwijderd." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Fout bij verwijderen leverancier: %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "Titel is vereist" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "Geen leveranciers gevonden." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "Rolnaam is vereist" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "Kan rol niet maken vanwege een databasefout" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Inkooporder is succesvol aangemaakt." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Fout bij het aanmaken van de inkooporder: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "Kan een ontvangen inkooporder niet bewerken." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "Kan de rol niet updaten vanwege een databasefout" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Inkooporder is succesvol bijgewerkt." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Fout bij bijwerken van inkooporder: %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "Kan gebruikersrollen niet bijwerken vanwege een databasefout" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Inkooporder gemarkeerd als verzonden." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Fout bij het verzenden van de inkooporder: %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "Kan rol niet maken vanwege een databasefout" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Inkooporder succesvol geannuleerd." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Fout bij het annuleren van de inkooporder: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "Kan een ontvangen inkooporder niet verwijderen. Annuleer het in plaats daarvan." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "Kan de rol niet verwijderen vanwege een databasefout" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Inkooporder is succesvol verwijderd." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Fout bij verwijderen van inkooporder: %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "Kan rol niet maken vanwege een databasefout" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Inkooporder gemarkeerd als ontvangen en voorraad bijgewerkt." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Fout bij het ontvangen van de inkooporder: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "Uitgaven zijn succesvol gemaakt" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "Fout bij het maken van onkosten" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "U heeft geen toestemming om deze uitgave te bekijken" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "U heeft geen toestemming om deze onkosten te bewerken" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "Kan goedgekeurde of vergoede onkosten niet bewerken" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "Project, klantnaam en vervaldatum zijn vereist" +#~ msgid "Please fill in all required fields" +#~ msgstr "Vul alle verplichte velden in" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Ongeldige vervaldatumnotatie" +#~ msgid "Expense updated successfully" +#~ msgstr "Onkosten zijn bijgewerkt" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Ongeldig belastingtariefformaat" +#~ msgid "Error updating expense" +#~ msgstr "Fout bij bijwerken van onkosten" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Geselecteerd project niet gevonden" +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "U heeft geen toestemming om deze uitgave te verwijderen" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "Kan geen factuur maken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "Kan goedgekeurde of gefactureerde onkosten niet verwijderen" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "U heeft geen toestemming om deze factuur te bekijken" +#~ msgid "Expense deleted successfully" +#~ msgstr "Onkosten zijn succesvol verwijderd" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "Fout bij verwijderen van onkosten" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "Er zijn geen uitgaven geselecteerd voor verwijdering" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kon uitgaven niet verwijderen vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "%(count)d uitgave(s) succesvol verwijderd" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "%(count)d uitgave(s) overgeslagen: %(errors)s" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "Geen uitgaven geselecteerd" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "Invalid status value" +#~ msgstr "Ongeldige statuswaarde" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "U heeft geen toestemming om deze factuur te bewerken" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "Waarschuwing: Kan geen voorraad reserveren voor artikel %(item)s: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "Kan factuur niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "Factuur succesvol bijgewerkt" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "Waarschuwing: Kan de voorraad voor artikel %(item)s niet verkleinen: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "U heeft geen toestemming om deze factuur te verwijderen" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "Alleen conceptoffertes kunnen worden bewerkt" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "Kan factuur niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "Geen facturen geselecteerd voor verwijdering" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "Kan facturen niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "Geen facturen geselecteerd" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "Kan facturen niet bijwerken vanwege een databasefout" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "Geen tijdsinvoer, kosten, uitgaven of extra goederen geselecteerd" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "Kon geen items genereren vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "Factuuritems zijn succesvol gegenereerd op basis van tijdsinvoer en kosten" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "%(hours)s prepaid-uren toegepast voor %(client)s vóór facturering van overschrijdingen." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "U heeft geen toestemming om deze factuur te exporteren" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "Kan de uitgaven niet bijwerken vanwege een databasefout" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "%(count)d uitgave(s) succesvol bijgewerkt naar %(status)s" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "%(count)d uitgave(s) overgeslagen: %(errors)s" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "%(count)d uitgave(s) overgeslagen (geen toestemming)" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Alleen beheerders kunnen uitgaven goedkeuren" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Alleen openstaande uitgaven kunnen worden goedgekeurd" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "Onkosten zijn goedgekeurd" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "PDF-generatie mislukt: %(err)s. Terugval is ook mislukt: %(fb)s" +#~ msgid "Error approving expense" +#~ msgstr "Fout bij het goedkeuren van onkosten" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "U heeft geen toestemming om deze factuur te dupliceren" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Alleen beheerders kunnen onkosten afwijzen" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "Kan factuur niet dupliceren vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Alleen openstaande uitgaven kunnen worden afgewezen" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "Kon de dubbele factuur niet finaliseren vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Rejection reason is required" +#~ msgstr "Reden voor afwijzing is vereist" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "Kosten afgewezen" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "Fout bij het afwijzen van onkosten" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "Alleen beheerders kunnen onkosten markeren als vergoed" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Alleen goedgekeurde uitgaven kunnen als vergoed worden aangemerkt" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Deze kosten zijn niet aangemerkt als terugbetaalbaar" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Kosten gemarkeerd als vergoed" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Fout bij het markeren van onkosten als vergoed" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "OCR is niet beschikbaar. Neem contact op met uw beheerder." -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Factuur gemarkeerd als verzonden" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Ongeldig bestandstype. Toegestane typen: png, jpg, jpeg, gif, pdf" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Factuur gemarkeerd als betaald" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "Bon gescand! U kunt nu een uitgave maken met de geëxtraheerde gegevens." -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Fout bij scannen bon. Probeer het " +#~ "opnieuw of voer de kosten handmatig " +#~ "in." -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "Geen gescande ontvangstgegevens gevonden. Scan" +#~ " eerst een ontvangstbewijs." -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Uitgave is succesvol aangemaakt op basis van gescande bon" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "Permission denied." +#~ msgstr "Geen rechten toegewezen." -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "Sleutel en label zijn vereist" +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "Kan geen kolom maken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "Kan de kolom niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "Systeemkolommen kunnen niet worden verwijderd" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "Kan de kolom niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "Kan de kolom niet omschakelen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "REST API voor integraties" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "Linear API key is required." +#~ msgstr "Klantnaam is vereist" -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "Timer is succesvol gestopt" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Lead is succesvol aangemaakt" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Fout bij aanmaken van lead: %(error)s" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Lead is succesvol bijgewerkt" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Fout bij updaten van lead: %(error)s" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "Lood is al omgezet" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Lead succesvol omgezet naar klant" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Fout bij het converteren van lead: %(error)s" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Lead omgezet om succesvol te kunnen handelen" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Lead gemarkeerd als verloren" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "Fout bij het markeren van lead als verloren: %(error)s" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Kilometerinvoer is succesvol aangemaakt" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Fout bij aanmaken kilometerinvoer" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "U heeft geen toestemming om deze kilometerinvoer te bekijken" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "U heeft geen toestemming om deze kilometerinvoer te bewerken" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "Kan goedgekeurde of terugbetaalde mijleninvoer niet bewerken" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Kilometerstand is succesvol bijgewerkt" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Fout bij bijwerken kilometerinvoer" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "U heeft geen toestemming om deze kilometerinvoer te verwijderen" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "Kilometerinvoer is succesvol verwijderd" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Fout bij het verwijderen van kilometerinvoer" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "Er zijn geen kilometergegevens geselecteerd om te verwijderen" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "Kon kilometerinvoer niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "%(count)d kilometerstand entr%(plural)s is succesvol verwijderd" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "%(count)d kilometerstand overgeslagen%(plural)s: %(errors)s" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "Geen kilometerinvoer geselecteerd" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "Kon de kilometerinvoer niet bijwerken vanwege een databasefout" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "%(count)d kilometerstand entr%(plural)s is succesvol bijgewerkt naar %(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "%(count)d kilometerstand overgeslagen%(plural)s (geen toestemming)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Alleen beheerders kunnen kilometerinvoer goedkeuren" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Alleen lopende kilometerinvoer kan worden goedgekeurd" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Kilometerinvoer is succesvol goedgekeurd" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Fout bij het goedkeuren van kilometerinvoer" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Alleen beheerders kunnen kilometerinvoer weigeren" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "Alleen openstaande kilometerinvoer kan worden afgewezen" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Kilometerregistratie afgewezen" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Fout bij het weigeren van kilometerinvoer" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "Alleen beheerders kunnen kilometerinvoer markeren als vergoed" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "Alleen goedgekeurde kilometerinvoer kan als terugbetaald worden gemarkeerd" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Kilometerregistratie gemarkeerd als vergoed" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Fout bij het markeren van de kilometerinvoer als vergoed" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "Titel van de offerte en klant zijn vereist" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Geselecteerde klant niet gevonden" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Ongeldig totaalbedragformaat" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Ongeldig geschatte urennotatie" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Ongeldig datumformaat voor geldig tot" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "Kan geen offerte maken vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Offerte is succesvol aangemaakt" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "Alleen conceptoffertes kunnen worden bewerkt" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "Kan de offerte niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "Offerte succesvol bijgewerkt" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "Er kunnen alleen conceptoffertes worden verzonden" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "Kan de offerte niet verzenden vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Offerte succesvol verzonden" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Deze offerte kan niet worden aanvaard" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "Kan offerte niet accepteren: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "Kan de offerte niet accepteren vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Offerte geaccepteerd en project succesvol gemaakt" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Dit citaat kan niet worden afgewezen" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "Kan offerte niet afwijzen: %(error)s" +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "Kan offerte niet afwijzen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Citaat afgewezen" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "Alleen concept- of afgewezen offertes kunnen worden verwijderd" +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "Kan de offerte niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Citaat is succesvol verwijderd" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Advanced" +#~ msgstr "Geavanceerd" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Review" +#~ msgstr "Beoordeling" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "Ongeldig vanaf datumnotatie" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Ongeldig tot nu toe formaat" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "U heeft geen toestemming om deze betaling te bekijken" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "Factuur, bedrag en betalingsdatum zijn vereist" +#~ msgid "Company" +#~ msgstr "Bedrijf" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "Geselecteerde factuur niet gevonden" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "U heeft geen toestemming om betalingen aan deze factuur toe te voegen" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "Het betalingsbedrag moet groter zijn dan nul" +#~ msgid "Webhooks" +#~ msgstr "Webhaken" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Ongeldig betalingsbedrag" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Ongeldig betalingsdatumformaat" +#~ msgid "Projects" +#~ msgstr "Projecten" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "Gatewaykosten kunnen niet negatief zijn" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Ongeldig bedrag voor gatewaykosten" +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "Kan de betaling niet aanmaken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "U heeft geen toestemming om deze betaling te bewerken" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "Kan de betaling niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Betaling succesvol bijgewerkt" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "U heeft geen toestemming om deze betaling te verwijderen" +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "Kan de betaling niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Betaling succesvol verwijderd" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "Er zijn geen betalingen geselecteerd voor verwijdering" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "Kan betalingen niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "SKU bestaat al. Gebruik een andere SKU." -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "Geen betalingen geselecteerd" +#~ msgid "Stock item created successfully." +#~ msgstr "Voorraadartikel is succesvol aangemaakt." -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "Kan betalingen niet bijwerken vanwege een databasefout" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "Fout bij aanmaken voorraadartikel: %(error)s" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "De startdatum moet vóór de einddatum liggen" +#~ msgid "Stock item updated successfully." +#~ msgstr "Voorraadartikel is succesvol bijgewerkt." -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "Er is geen dagtarief gevonden voor deze locatie. Configureer eerst de tarieven." +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "Fout bij bijwerken voorraadartikel: %(error)s" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Per diem-claim is succesvol aangemaakt" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "Kan voorraadartikel met bestaande voorraad-" +#~ " of verplaatsingsgeschiedenis niet verwijderen." -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Fout bij het maken van een dagvergoedingsclaim" +#~ msgid "Stock item deleted successfully." +#~ msgstr "Voorraadartikel succesvol verwijderd." -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "U heeft geen toestemming om deze dagvergoeding te bekijken" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "Fout bij verwijderen voorraadartikel: %(error)s" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "U heeft geen toestemming om deze dagvergoedingsclaim te bewerken" +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "Magazijncode bestaat al. Gebruik een andere code." -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "Kan goedgekeurde of terugbetaalde dagvergoedingsclaims niet bewerken" +#~ msgid "Warehouse created successfully." +#~ msgstr "Magazijn is succesvol aangemaakt." -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "Per diem-claim is succesvol bijgewerkt" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Fout bij aanmaken magazijn: %(error)s" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Fout bij bijwerken dagvergoedingsclaim" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "U heeft geen toestemming om deze dagvergoedingsclaim te verwijderen" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Per diem-claim is succesvol verwijderd" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Fout bij verwijderen dagvergoedingsclaim" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "Er zijn geen dagvergoedingen geselecteerd voor verwijdering" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "Kan dagvergoedingsclaims niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "%(count)d claim(s) per dag succesvol verwijderd" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "%(count)d dagclaim(s) overgeslagen: %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "Geen dagvergoedingsclaims geselecteerd" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "Kon dagelijkse claims niet updaten vanwege een databasefout" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "%(count)d dagvergoedingsclaim(s) bijgewerkt naar %(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "%(count)d dagvergoedingsclaim(s) overgeslagen (geen toestemming)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Alleen beheerders kunnen dagvergoedingen goedkeuren" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Alleen lopende dagvergoedingsclaims kunnen worden goedgekeurd" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Per diem-claim met succes goedgekeurd" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Fout bij het goedkeuren van de dagvergoedingsclaim" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Alleen beheerders kunnen dagvergoedingsclaims afwijzen" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Alleen lopende dagvergoedingsclaims kunnen worden afgewezen" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Per diem-claim afgewezen" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Fout bij het afwijzen van dagvergoedingsclaim" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Dagtarief is succesvol aangemaakt" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Fout bij maken dagtarief" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Dagtarief succesvol bijgewerkt" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Fout bij bijwerken dagtarief" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "Kan tarief niet verwijderen: het wordt gebruikt door %(count)d dagvergoeding(en). Deactiveer het in plaats daarvan." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "Dagtarief succesvol verwijderd" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Fout bij verwijderen dagtarief" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "U heeft geen toestemming om deze pagina te bezoeken" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "Rolnaam is vereist" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "Er bestaat al een rol met deze naam" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "Kan rol niet maken vanwege een databasefout" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Rol is succesvol aangemaakt" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "Magazijn succesvol bijgewerkt." -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "Kan de rol niet updaten vanwege een databasefout" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "Fout bij bijwerken magazijn: %(error)s" -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Rol succesvol bijgewerkt" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "Kan magazijn met bestaande voorraad niet" +#~ " verwijderen. Gelieve eerst alle voorraad" +#~ " over te dragen of te verwijderen." -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "U heeft geen toestemming om deze actie uit te voeren" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Magazijn succesvol verwijderd." -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "Systeemrollen kunnen niet worden verwijderd" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Fout bij verwijderen magazijn: %(error)s" -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "Kan de rol die aan gebruikers is toegewezen niet verwijderen. Wijs eerst gebruikers opnieuw toe." +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "Kan de rol niet verwijderen vanwege een databasefout" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "Rol \"%(name)s\" is succesvol verwijderd" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "Kan gebruikersrollen niet bijwerken vanwege een databasefout" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Gebruikersrollen zijn succesvol bijgewerkt" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "Projectnaam en klant zijn vereist" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Ongeldig budgetbedrag" +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Ongeldig budgetdrempelpercentage (0-100)" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Project niet gevonden" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "U heeft geen toestemming om projecten te archiveren" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "Het project is al gearchiveerd" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "Voorraadbeweging met succes geregistreerd." -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "U heeft geen toestemming om projecten uit het archief te halen" +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "Project is al actief" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "Fout bij het registreren van voorraadbewegingen: %(error)s" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "U heeft geen toestemming om projecten te deactiveren" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "Bron- en bestemmingsmagazijnen moeten verschillend zijn." -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "Project is al inactief" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Onvoldoende voorraad beschikbaar in het bronmagazijn." -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "U heeft geen toestemming om projecten te activeren" +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "Kan project met bestaande tijdsinvoer niet verwijderen" +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "Kan het project niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "U heeft geen toestemming om projecten te verwijderen" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "De aandelenoverdracht is succesvol afgerond." -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "Geen projecten geselecteerd voor verwijdering" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Fout bij het maken van de overdracht: %(error)s" -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "Kan projecten niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "Voorraadaanpassing succesvol geregistreerd." -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "Er zijn geen projecten verwijderd" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Fout bij het opnemen van aanpassingen: %(error)s" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "U heeft geen toestemming om de projectstatus te wijzigen" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Reservering succesvol afgerond." -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "Geen projecten geselecteerd" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Fout bij het uitvoeren van de reservering: %(error)s" -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "Kan de projectstatus niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Reservation cancelled successfully." +#~ msgstr "Reservering succesvol geannuleerd." -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "Er zijn geen projecten bijgewerkt" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "Fout bij annuleren reservering: %(error)s" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "Project staat al in favorieten" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Project toegevoegd aan favorieten" +#~ msgid "Supplier created successfully." +#~ msgstr "Leverancier succesvol aangemaakt." -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "Kan project niet toevoegen aan favorieten" +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Fout bij aanmaken leverancier: %(error)s" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "Project staat niet in favorieten" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "Leverancierscode bestaat al. Gebruik een andere code." -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Project verwijderd uit favorieten" +#~ msgid "Supplier updated successfully." +#~ msgstr "Leverancier is succesvol bijgewerkt." -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "Kan project niet uit favorieten verwijderen" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Fout bij updaten leverancier: %(error)s" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "Beschrijving, categorie, bedrag en datum zijn vereist" +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "Kan leverancier met bijbehorende " +#~ "voorraadartikelen niet verwijderen. Verwijder " +#~ "eerst artikelen." -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "Kan geen kosten toevoegen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Supplier deleted successfully." +#~ msgstr "Leverancier succesvol verwijderd." -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Kosten succesvol toegevoegd" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Fout bij verwijderen leverancier: %(error)s" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Kosten niet gevonden" +#~ msgid "Supplier is required." +#~ msgstr "Titel is vereist" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "U heeft geen toestemming om deze kosten te bewerken" +#~ msgid "Supplier not found." +#~ msgstr "Geen leveranciers gevonden." -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "Kan de kosten niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Order date is required." +#~ msgstr "Rolnaam is vereist" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Kosten zijn bijgewerkt" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "Kan rol niet maken vanwege een databasefout" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "U heeft geen toestemming om deze kosten te verwijderen" +#~ msgid "Purchase order created successfully." +#~ msgstr "Inkooporder is succesvol aangemaakt." -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "Kan gefactureerde kosten niet verwijderen" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Fout bij het aanmaken van de inkooporder: %(error)s" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "Kan de kosten niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "Kan een ontvangen inkooporder niet bewerken." -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Naam en eenheidsprijs zijn verplicht" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "Kan de rol niet updaten vanwege een databasefout" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Ongeldig hoeveelheidsformaat" +#~ msgid "Purchase order updated successfully." +#~ msgstr "Inkooporder is succesvol bijgewerkt." -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Ongeldige eenheidsprijsnotatie" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Fout bij bijwerken van inkooporder: %(error)s" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "Kon geen extra goed toevoegen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Extra goed succesvol toegevoegd" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Extra goed niet gevonden" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "U heeft geen toestemming om dit extra goed te bewerken" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "Kon niet extra goed updaten vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Extra goed succesvol bijgewerkt" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "U heeft geen toestemming om dit extra goed te verwijderen" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "Extra goed dat aan een factuur is toegevoegd, kan niet worden verwijderd" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "Kan extra goed niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Project succesvol aangemaakt" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Ongeldig formaat voor kortingsbedrag" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "De offerte moet worden goedgekeurd voordat deze kan worden verzonden" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "Kan offerte niet verzenden: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "U heeft geen toestemming om bijlagen bij deze offerte te uploaden" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "U heeft geen toestemming om deze bijlage te downloaden" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "U heeft geen toestemming om goedkeuring aan te vragen voor deze offerte" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Voor deze offerte is geen goedkeuring vereist" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "Kan geen goedkeuring aanvragen: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "Kon geen goedkeuring aanvragen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Goedkeuring aangevraagd" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Deze offerte wacht niet op goedkeuring" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "Kan offerte niet goedkeuren: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "Kan de offerte niet goedkeuren vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Offerte succesvol goedgekeurd" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "Kan offerte niet afwijzen: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Goedkeuring van offerte afgewezen" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "Kan geen sjabloon maken vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Sjabloon is succesvol aangemaakt" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "Kan gebruikersrollen niet bijwerken vanwege een databasefout" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "U heeft geen toestemming om van deze offerte een sjabloon te maken" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "Kan sjabloon niet opslaan vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Sjabloon succesvol opgeslagen" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "U heeft geen toestemming om deze offerte te exporteren" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Fout bij genereren van PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "Het e-mailadres van de ontvanger is vereist" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Offerte succesvol verzonden naar %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "Kan de offerte niet verzenden: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Fout bij het verzenden van e-mail: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "U heeft geen toestemming om deze offerte te dupliceren" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "Kan de offerte niet dupliceren vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "Kan de dubbele offerte niet voltooien vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "Citaat %(quote_number)s gemaakt als duplicaat" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Selecteer een actie en minimaal één offerte" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "Ongeldige offerte-ID's" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "Geen offertes gevonden of u heeft geen toestemming" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "Gedupliceerde %(count)d offerte(s)" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "Kan %(count)d offerte(s) niet dupliceren" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Fout bij het dupliceren van aanhalingstekens" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "%(count)d offerte(s) gemarkeerd als verzonden" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "Kon %(count)d offerte(s) niet markeren als verzonden" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Fout bij bijwerken van offertes" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "%(count)d offerte(s) verwijderd" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "Kon %(count)d quote(s) niet verwijderen (mogelijk in gebruik)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Fout bij verwijderen van offertes" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Ongeldige actie" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "Purchase order marked as sent." +#~ msgstr "Inkooporder gemarkeerd als verzonden." -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Fout bij het verzenden van de inkooporder: %(error)s" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "Naam, project, klant, frequentie en volgende uitvoeringsdatum zijn vereist" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "Kan rol niet maken vanwege een databasefout" -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Ongeldige datumnotatie voor volgende run" +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Inkooporder succesvol geannuleerd." -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Ongeldige einddatumnotatie" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Fout bij het annuleren van de inkooporder: %(error)s" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Geselecteerd project of klant niet gevonden" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "" +#~ "Kan een ontvangen inkooporder niet " +#~ "verwijderen. Annuleer het in plaats " +#~ "daarvan." -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "Kan terugkerende factuur niet maken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "Kan de rol niet verwijderen vanwege een databasefout" -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "U heeft geen toestemming om deze terugkerende factuur te bekijken" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Inkooporder is succesvol verwijderd." -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "U heeft geen toestemming om deze terugkerende factuur te bewerken" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Fout bij verwijderen van inkooporder: %(error)s" -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "Kan terugkerende factuur niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "Kan rol niet maken vanwege een databasefout" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Terugkerende factuur succesvol bijgewerkt" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "Inkooporder gemarkeerd als ontvangen en voorraad bijgewerkt." -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "U heeft geen toestemming om deze terugkerende factuur te verwijderen" +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Fout bij het ontvangen van de inkooporder: %(error)s" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "Kan terugkerende factuur niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Begin" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "Einde" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Taak" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Opmerkingen" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "Factureerbaar" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Cliënt" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Gebruiker" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "Ja" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "Nee" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "Kan het filter niet verwijderen vanwege een databasefout" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "Project, klantnaam en vervaldatum zijn vereist" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Invalid due date format" +#~ msgstr "Ongeldige vervaldatumnotatie" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Invalid tax rate format" +#~ msgstr "Ongeldig belastingtariefformaat" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Selected project not found" +#~ msgstr "Geselecteerd project niet gevonden" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan geen factuur maken vanwege een " +#~ "databasefout. Controleer de serverlogboeken." -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "U heeft geen toestemming om deze factuur te bekijken" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "U heeft geen toestemming om deze factuur te bewerken" -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "Kan de instellingen niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Waarschuwing: Kan geen voorraad reserveren " +#~ "voor artikel %(item)s: %(error)s" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "Installatie voltooid! Bedankt dat u ons helpt TimeTracker te verbeteren." +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan factuur niet bijwerken vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "Invoice updated successfully" +#~ msgstr "Factuur succesvol bijgewerkt" + +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Waarschuwing: Kan de voorraad voor " +#~ "artikel %(item)s niet verkleinen: %(error)s" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "U heeft geen toestemming om deze factuur te verwijderen" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "Alleen conceptoffertes kunnen worden bewerkt" + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan factuur niet verwijderen vanwege een" +#~ " databasefout. Controleer de serverlogboeken." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "Geen facturen geselecteerd voor verwijdering" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan facturen niet verwijderen vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "No invoices selected" +#~ msgstr "Geen facturen geselecteerd" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "Kan facturen niet bijwerken vanwege een databasefout" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "Geen tijdsinvoer, kosten, uitgaven of extra goederen geselecteerd" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kon geen items genereren vanwege een " +#~ "databasefout. Controleer de serverlogboeken." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "" +#~ "Factuuritems zijn succesvol gegenereerd op " +#~ "basis van tijdsinvoer en kosten" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "%(hours)s prepaid-uren toegepast voor " +#~ "%(client)s vóór facturering van " +#~ "overschrijdingen." + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "U heeft geen toestemming om deze factuur te exporteren" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" + +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "Project- en taaknaam zijn vereist" +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "Het geselecteerde project bestaat niet" +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "PDF-generatie mislukt: %(err)s. Terugval is ook mislukt: %(fb)s" -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "U heeft geen toestemming om deze factuur te dupliceren" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "U heeft geen toegang tot deze taak" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Je kunt alleen taken bewerken die je hebt gemaakt" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "Taaknaam is vereist" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "Project is vereist" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "Kan de status niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "Kan de taak niet bijwerken vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "U heeft geen toestemming om deze taak bij te werken" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "U kunt alleen taken bijwerken die u hebt gemaakt" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "U kunt alleen taken toewijzen die u zelf heeft aangemaakt" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "Geselecteerde gebruiker bestaat niet" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Taak niet toegewezen" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Je kunt alleen taken verwijderen die je hebt gemaakt" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "Kan taak met bestaande tijdinvoer niet verwijderen" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "Kan de taak niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "Geen taken geselecteerd voor verwijdering" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "Kan taken niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "Geen taken geselecteerd" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "Kan taken niet bijwerken vanwege een databasefout" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Voer een nieuwe vervaldatum in (JJJJ-MM-DD):" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "De onkostendatum is vereist" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Ongeldig datumformaat" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "Database-ondersteuning" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "Gedupliceerde %(count)d offerte(s)" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "Geen taken gevonden" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "%(count)d uitgave(s) succesvol bijgewerkt naar %(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "%(count)d uitgave(s) overgeslagen (geen toestemming)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Ongeldige prioriteitswaarde" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Geen gebruiker geselecteerd voor toewijzing" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Ongeldige gebruiker geselecteerd" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "Kon geen taken toewijzen vanwege een databasefout" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Geen project geselecteerd" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Ongeldig project geselecteerd" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "Kan taken niet verplaatsen vanwege een databasefout" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Alleen beheerders kunnen alle achterstallige taken bekijken" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kan factuur niet dupliceren vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Kon de dubbele factuur niet finaliseren" +#~ " vanwege een databasefout. Controleer de" +#~ " serverlogboeken." -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "Invoice marked as sent" +#~ msgstr "Factuur gemarkeerd als verzonden" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "Invoice marked as paid" +#~ msgstr "Factuur gemarkeerd als betaald" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "Client is required." +#~ msgstr "" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "Kan geen sjabloon maken vanwege een databasefout" +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "Kan de sjabloon niet bijwerken vanwege een databasefout" +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "Kan de sjabloon niet verwijderen vanwege een databasefout" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "Project must belong to the same client." +#~ msgstr "" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "Kan de timer voor een gearchiveerd project niet starten. Haal het project eerst uit het archief." +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "Kan de timer voor een inactief project niet starten" +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "Geselecteerde taak is ongeldig voor het gekozen project" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "U heeft geen toegang tot dit project." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "U heeft geen toegang tot deze taak" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Je hebt al een actieve timer. Stop ermee voordat u aan een nieuwe begint." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "Kan de timer niet starten vanwege een databasefout. Controleer de serverlogboeken." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Onbekend" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "Sjabloon moet een project hebben om een ​​timer te starten" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "Kan de timer voor dit project niet starten" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "Geen actieve timer om te stoppen" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Geen project" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "Geen actieve timer om te stoppen" +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "Timer gestopt" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "Kan klant niet aanmaken. Probeer het opnieuw." +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "Geen actieve timer om te stoppen" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "Kan klant niet aanmaken. Probeer het opnieuw." +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "Geen actieve timer om te stoppen" +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "Ongeldige statuswaarde" +#~ msgid "Key and label are required" +#~ msgstr "Sleutel en label zijn vereist" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "U kunt alleen uw eigen timers bewerken" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan geen kolom maken vanwege een " +#~ "databasefout. Controleer de serverlogboeken." -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Ongeldige taak geselecteerd voor het gekozen project" +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de kolom niet bijwerken vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "De starttijd kan niet in de toekomst liggen" +#~ msgid "System columns cannot be deleted" +#~ msgstr "Systeemkolommen kunnen niet worden verwijderd" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Ongeldige notatie van startdatum/-tijd" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de kolom niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "De eindtijd moet na de starttijd liggen" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de kolom niet omschakelen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Ongeldige einddatum-/tijdnotatie" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Timer is succesvol bijgewerkt" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Je kunt alleen je eigen timers verwijderen" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "Kan een actieve timer niet verwijderen" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "Kan de timer niet verwijderen vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Timer stopped successfully" +#~ msgstr "Timer is succesvol gestopt" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Lead created successfully" +#~ msgstr "Lead is succesvol aangemaakt" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Fout bij aanmaken van lead: %(error)s" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Lead updated successfully" +#~ msgstr "Lead is succesvol bijgewerkt" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Fout bij updaten van lead: %(error)s" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "Lead has already been converted" +#~ msgstr "Lood is al omgezet" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Lead converted to client successfully" +#~ msgstr "Lead succesvol omgezet naar klant" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Ongeldige datum-/tijdnotatie" +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Fout bij het converteren van lead: %(error)s" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Lead omgezet om succesvol te kunnen handelen" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Lead marked as lost" +#~ msgstr "Lead gemarkeerd als verloren" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Alle velden zijn verplicht" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "Fout bij het markeren van lead als verloren: %(error)s" -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "Kan geen tijdsinvoer maken voor een gearchiveerd project. Haal het project eerst uit het archief." +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "Kan geen tijdsinvoer maken voor een inactief project" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Ongeldige taak geselecteerd" +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "De einddatum moet na of gelijk zijn aan de startdatum" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "Het datumbereik mag niet langer zijn dan 31 dagen" +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Ongeldige tijdnotatie" +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "Geen geldige datums gevonden in het geselecteerde bereik" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "Kon geen bulkvermeldingen maken vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "Er is een fout opgetreden bij het maken van bulkinvoer. Probeer het opnieuw." +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Je kunt alleen je eigen timers dupliceren" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "U kunt alleen uw eigen timers hervatten" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "Project bestaat niet meer" +#~ msgid "Mileage entry created successfully" +#~ msgstr "Kilometerinvoer is succesvol aangemaakt" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "Error creating mileage entry" +#~ msgstr "Fout bij aanmaken kilometerinvoer" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "U heeft geen toestemming om deze kilometerinvoer te bekijken" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "Kan de timer niet hervatten vanwege een databasefout. Controleer de serverlogboeken." +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "U heeft geen toestemming om deze kilometerinvoer te bewerken" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "Kan goedgekeurde of terugbetaalde mijleninvoer niet bewerken" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Kilometerstand is succesvol bijgewerkt" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error updating mileage entry" +#~ msgstr "Fout bij bijwerken kilometerinvoer" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "U heeft geen toestemming om deze kilometerinvoer te verwijderen" -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "Kilometerinvoer is succesvol verwijderd" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "Error deleting mileage entry" +#~ msgstr "Fout bij het verwijderen van kilometerinvoer" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Ongeldige tijdzone geselecteerd" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "Er zijn geen kilometergegevens geselecteerd om te verwijderen" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "Standaarduren per dag moeten tussen 0,5 en 24 liggen" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kon kilometerinvoer niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "Standaarduren per dag moeten tussen 0,5 en 24 liggen" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "%(count)d kilometerstand entr%(plural)s is succesvol verwijderd" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Instellingen succesvol opgeslagen" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "%(count)d kilometerstand overgeslagen%(plural)s: %(errors)s" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Fout bij opslaan van instellingen: %(error)s" +#~ msgid "No mileage entries selected" +#~ msgstr "Geen kilometerinvoer geselecteerd" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "Kon de kilometerinvoer niet bijwerken vanwege een databasefout" -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "Bedankt dat u voor TimeTracker hebt gekozen!" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "Fout bij opslaan van instellingen" +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "" +#~ "%(count)d kilometerstand entr%(plural)s is " +#~ "succesvol bijgewerkt naar %(status)s" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Voorkeuren bijgewerkt" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "%(count)d kilometerstand overgeslagen%(plural)s (geen toestemming)" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Taal is succesvol bijgewerkt" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Ongeldige taal" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "Taal bijgewerkt naar %(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "Webhooknaam is vereist" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "Webhook-URL is vereist" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "Er moet minimaal één gebeurtenis worden geselecteerd" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook is succesvol aangemaakt" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Fout bij het maken van de webhook" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "Fout bij het maken van de webhook: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook is succesvol bijgewerkt" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "Fout bij updaten van webhook: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook is succesvol verwijderd" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "Fout bij verwijderen van webhook: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Voer een geldig doeluur in (groter dan 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "Er bestaat al een doel voor deze week. Bewerk in plaats daarvan het bestaande doel." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "Wekelijks tijdsdoel is succesvol aangemaakt!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "Het is niet gelukt om een ​​doelpunt te maken. Probeer het opnieuw." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "U heeft geen toestemming om dit doel te bekijken" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "U heeft geen toestemming om dit doel te bewerken" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "Wekelijks tijdsdoel succesvol bijgewerkt!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "Kan doel niet updaten. Probeer het opnieuw." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "U heeft geen toestemming om dit doel te verwijderen" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "Wekelijks tijdsdoel is succesvol verwijderd" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Alleen beheerders kunnen kilometerinvoer goedkeuren" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "Kan doel niet verwijderen. Probeer het opnieuw." +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Alleen lopende kilometerinvoer kan worden goedgekeurd" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Kilometerinvoer is succesvol goedgekeurd" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "Error approving mileage entry" +#~ msgstr "Fout bij het goedkeuren van kilometerinvoer" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Alleen beheerders kunnen kilometerinvoer weigeren" -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "Alleen openstaande kilometerinvoer kan worden afgewezen" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Mileage entry rejected" +#~ msgstr "Kilometerregistratie afgewezen" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Fout bij het weigeren van kilometerinvoer" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "Alleen beheerders kunnen kilometerinvoer markeren als vergoed" -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "" +#~ "Alleen goedgekeurde kilometerinvoer kan als" +#~ " terugbetaald worden gemarkeerd" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Kilometerregistratie gemarkeerd als vergoed" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Fout bij het markeren van de kilometerinvoer als vergoed" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Quote title and client are required" +#~ msgstr "Titel van de offerte en klant zijn vereist" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Status bijwerken" +#~ msgid "Selected client not found" +#~ msgstr "Geselecteerde klant niet gevonden" -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "Invalid total amount format" +#~ msgstr "Ongeldig totaalbedragformaat" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Taak maken" +#~ msgid "Invalid estimated hours format" +#~ msgstr "Ongeldig geschatte urennotatie" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "Invalid date format for valid until" +#~ msgstr "Ongeldig datumformaat voor geldig tot" -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "E-mail verzenden" +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan geen offerte maken vanwege een " +#~ "databasefout. Controleer de serverlogboeken." -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Quote created successfully" +#~ msgstr "Offerte is succesvol aangemaakt" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "Only draft quotes can be edited" +#~ msgstr "Alleen conceptoffertes kunnen worden bewerkt" -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de offerte niet bijwerken vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "Quote updated successfully" +#~ msgstr "Offerte succesvol bijgewerkt" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "Er kunnen alleen conceptoffertes worden verzonden" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kan de offerte niet verzenden vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "Selecteer Project" +#~ msgid "Quote sent successfully" +#~ msgstr "Offerte succesvol verzonden" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "Alleen beheerders kunnen kilometerinvoer weigeren" +#~ msgid "This quote cannot be accepted" +#~ msgstr "Deze offerte kan niet worden aanvaard" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "Kan offerte niet accepteren: %(error)s" -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "WebSocket live-updates" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de offerte niet accepteren vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "Naam en eenheidsprijs zijn verplicht" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Offerte geaccepteerd en project succesvol gemaakt" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "Klant aangemaakt" +#~ msgid "This quote cannot be rejected" +#~ msgstr "Dit citaat kan niet worden afgewezen" -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "Sleutel en label zijn vereist" +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "Kan offerte niet afwijzen: %(error)s" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan offerte niet afwijzen vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "Vraag goedkeuring aan" +#~ msgid "Quote rejected" +#~ msgstr "Citaat afgewezen" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "Citaat afgewezen" +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "Alleen concept- of afgewezen offertes kunnen worden verwijderd" -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "Naam en eenheidsprijs zijn verplicht" +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de offerte niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "Quote deleted successfully" +#~ msgstr "Citaat is succesvol verwijderd" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "" + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Stripe API key not configured." +#~ msgstr "" + +#~ msgid "Payment processed successfully." +#~ msgstr "" + +#~ msgid "Invalid from date format" +#~ msgstr "Ongeldig vanaf datumnotatie" + +#~ msgid "Invalid to date format" +#~ msgstr "Ongeldig tot nu toe formaat" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "U heeft geen toestemming om deze betaling te bekijken" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "Factuur, bedrag en betalingsdatum zijn vereist" + +#~ msgid "Selected invoice not found" +#~ msgstr "Geselecteerde factuur niet gevonden" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "U heeft geen toestemming om betalingen aan deze factuur toe te voegen" -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "Uurtarief" +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "Het betalingsbedrag moet groter zijn dan nul" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "Invalid payment amount" +#~ msgstr "Ongeldig betalingsbedrag" -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "Invalid payment date format" +#~ msgstr "Ongeldig betalingsdatumformaat" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "overig" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Succes" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Fout" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Waarschuwing" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Informatie" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Laden..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Besparing..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "Verwijderen..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Annuleren" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Bevestigen" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Dichtbij" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Redden" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Verwijderen" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Bewerking" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Toevoegen" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Verwijderen" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "OK" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "Weet je zeker dat je dit wilt verwijderen?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "U heeft niet-opgeslagen wijzigingen. Weet je zeker dat je weg wilt?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "Operatie mislukt" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Operatie succesvol afgerond" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "Geen items geselecteerd" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Ongeldige invoer" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Dit veld is verplicht" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Geen actieve timer" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Timer gestopt" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "Kan timer niet stoppen" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Fout bij stoppen van timer" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "Geen formulier om op te slaan" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "Geen timer gevonden" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Timer gestopt vanwege inactiviteit" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "Gatewaykosten kunnen niet negatief zijn" -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Ga naar de inhoud" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "Mobiele navigatie" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navigatie" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "Commandopalet" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "Opmerkingen" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Zijbalk schakelen" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Dashboard" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Timer" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "Tijdinvoer" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Rapporten" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Kalender" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Kalenderweergave" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Ongeldig bedrag voor gatewaykosten" -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Tijdregistratie" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "Vraag goedkeuring aan" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de betaling niet aanmaken vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "U heeft geen toestemming om deze betaling te bewerken" -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Taken" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de betaling niet bijwerken vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Kanban-bord" +#~ msgid "Payment updated successfully" +#~ msgstr "Betaling succesvol bijgewerkt" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Wekelijkse doelen" +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "U heeft geen toestemming om deze betaling te verwijderen" -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de betaling niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Sjablonen voor tijdinvoer" +#~ msgid "Payment deleted successfully" +#~ msgstr "Betaling succesvol verwijderd" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" +#~ msgid "No payments selected for deletion" +#~ msgstr "Er zijn geen betalingen geselecteerd voor verwijdering" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Klanten" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan betalingen niet verwijderen vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "No payments selected" +#~ msgstr "Geen betalingen geselecteerd" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "Kan betalingen niet bijwerken vanwege een databasefout" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "Start date must be before end date" +#~ msgstr "De startdatum moet vóór de einddatum liggen" -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "Er is geen dagtarief gevonden voor " +#~ "deze locatie. Configureer eerst de " +#~ "tarieven." -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Citaten" +#~ msgid "Per diem claim created successfully" +#~ msgstr "Per diem-claim is succesvol aangemaakt" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Financiën en kosten" +#~ msgid "Error creating per diem claim" +#~ msgstr "Fout bij het maken van een dagvergoedingsclaim" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "U heeft geen toestemming om deze dagvergoeding te bekijken" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "U heeft geen toestemming om deze dagvergoedingsclaim te bewerken" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "Kan goedgekeurde of terugbetaalde dagvergoedingsclaims niet bewerken" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Geplande rapporten" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Facturen" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Per diem-claim is succesvol bijgewerkt" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "Error updating per diem claim" +#~ msgstr "Fout bij bijwerken dagvergoedingsclaim" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Terugkerende facturen" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Betalingen" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Uitgaven" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Kilometerstand" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Per Diem" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Budgetwaarschuwingen" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Inventaris" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Voorraadartikelen" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Magazijnen" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Leveranciers" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Inkooporders" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Voorraadniveaus" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Voorraadbewegingen" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Overdrachten" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Aanpassingen" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Reserveringen" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Waarschuwingen voor lage voorraad" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Analyses" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Hulpmiddelen en gegevens" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Importeren / exporteren" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Opgeslagen filters" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Beheerder" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Beheerdashboard" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Gebruikersbeheer" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "U heeft geen toestemming om deze dagvergoedingsclaim te verwijderen" -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Rollen en machtigingen" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "PDF-sjablonen" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "Factuur-pdf" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Offerte-pdf" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Systeeminstellingen" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Instellingen" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Per diem-claim is succesvol verwijderd" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "E-mailconfiguratie" +#~ msgid "Error deleting per diem claim" +#~ msgstr "Fout bij verwijderen dagvergoedingsclaim" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "E-mailsjablonen" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "Er zijn geen dagvergoedingen geselecteerd voor verwijdering" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "OIDC-instellingen" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Kan dagvergoedingsclaims niet verwijderen " +#~ "vanwege een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "%(count)d claim(s) per dag succesvol verwijderd" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "API-tokens" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "%(count)d dagclaim(s) overgeslagen: %(errors)s" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Auditlogboeken" +#~ msgid "No per diem claims selected" +#~ msgstr "Geen dagvergoedingsclaims geselecteerd" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "Kon dagelijkse claims niet updaten vanwege een databasefout" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Uitgavencategorieën" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "%(count)d dagvergoedingsclaim(s) bijgewerkt naar %(status)s" -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Per Diem-tarieven" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "%(count)d dagvergoedingsclaim(s) overgeslagen (geen toestemming)" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "Alleen beheerders kunnen dagvergoedingen goedkeuren" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "Alleen lopende dagvergoedingsclaims kunnen worden goedgekeurd" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Per diem-claim met succes goedgekeurd" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Systeeminfo" +#~ msgid "Error approving per diem claim" +#~ msgstr "Fout bij het goedkeuren van de dagvergoedingsclaim" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Back-ups" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "Alleen beheerders kunnen dagvergoedingsclaims afwijzen" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "Alleen lopende dagvergoedingsclaims kunnen worden afgewezen" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "Over" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Hulp" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "Exportopties" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Ondersteuning van TimeTracker" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "Zijbalk schakelen" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Zoekopdracht" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Thema" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "Filteropties" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Licht" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Donker" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "Systeem" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "Per diem claim rejected" +#~ msgstr "Per diem-claim afgewezen" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Starttimer" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "naar" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "Bekijk Help" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Taal wijzigen" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Taal" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Gebruikersmenu" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "Steun" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Gast" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Mijn profiel" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Mijn instellingen" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Licentie" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Fout bij het afwijzen van dagvergoedingsclaim" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Uitloggen" +#~ msgid "Per diem rate created successfully" +#~ msgstr "Dagtarief is succesvol aangemaakt" -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "Geniet je van TimeTracker?" +#~ msgid "Error creating per diem rate" +#~ msgstr "Fout bij maken dagtarief" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Dagtarief succesvol bijgewerkt" -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "Ondersteuning van TimeTracker" +#~ msgid "Error updating per diem rate" +#~ msgstr "Fout bij bijwerken dagtarief" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "Kan tarief niet verwijderen: het wordt" +#~ " gebruikt door %(count)d dagvergoeding(en). " +#~ "Deactiveer het in plaats daarvan." -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "Dagtarief succesvol verwijderd" -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "Benodigdheden" +#~ msgid "Error deleting per diem rate" +#~ msgstr "Fout bij verwijderen dagtarief" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Afwijzen" +#~ msgid "You do not have permission to access this page" +#~ msgstr "U heeft geen toestemming om deze pagina te bezoeken" -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "Role name is required" +#~ msgstr "Rolnaam is vereist" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "Startdatum" +#~ msgid "A role with this name already exists" +#~ msgstr "Er bestaat al een rol met deze naam" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "Laad meer" +#~ msgid "Could not create role due to a database error" +#~ msgstr "Kan rol niet maken vanwege een databasefout" -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "Taak bekijken" +#~ msgid "Role created successfully" +#~ msgstr "Rol is succesvol aangemaakt" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "Snelle acties" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Acties" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Logtijd" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Nieuwe taak" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "Bekijk project" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "Klant bewerken" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "Operatie mislukt" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "Could not update role due to a database error" +#~ msgstr "Kan de rol niet updaten vanwege een databasefout" -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "Contract beëindigd" +#~ msgid "Role updated successfully" +#~ msgstr "Rol succesvol bijgewerkt" -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "Logovoorbeeld" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "U heeft geen toestemming om deze actie uit te voeren" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "Systeemrollen kunnen niet worden verwijderd" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "Einde" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "Kan de rol die aan gebruikers is" +#~ " toegewezen niet verwijderen. Wijs eerst" +#~ " gebruikers opnieuw toe." -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "Kan de rol niet verwijderen vanwege een databasefout" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Rol \"%(name)s\" is succesvol verwijderd" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "API-token maken" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "Uw API-token" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Gebruiksvoorbeelden" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "Weet je zeker dat je dat wilt" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "deactiveren" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "activeren" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "dit teken?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Token deactiveren" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Token activeren" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Deactiveren" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Activeren" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "Weet u zeker dat u dit token wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Token verwijderen" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Maak een back-up" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Back-up herstellen" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Bestaande back-ups" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Belangrijke informatie" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Bevestig verwijdering" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Cache wissen" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "Status van servicemedewerker" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Wis alle caches" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "ServiceWorker-acties" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Handmatige harde vernieuwing" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Altijd" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "Kan gebruikersrollen niet bijwerken vanwege een databasefout" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "User roles updated successfully" +#~ msgstr "Gebruikersrollen zijn succesvol bijgewerkt" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Totaal projecten" +#~ msgid "Template not found." +#~ msgstr "" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Actieve projecten" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "Projectnaam en klant zijn vereist" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Invalid budget amount" +#~ msgstr "Ongeldig budgetbedrag" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Ongeldig budgetdrempelpercentage (0-100)" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "Project not found" +#~ msgstr "Project niet gevonden" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Database" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "U heeft geen toestemming om projecten te archiveren" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Project is already archived" +#~ msgstr "Het project is al gearchiveerd" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "U heeft geen toestemming om projecten uit het archief te halen" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "OIDC-gebruikers" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "gebruikers" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Beheerderssecties" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Recente activiteit" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Duur" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "N.v.t" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "E-mailconfiguratie en testen" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Configureer en test de bezorging van e-mail" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Terug naar beheerder" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "Configureer hier de e-mailinstellingen om ze in de database op te slaan." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Schakel database-e-mailconfiguratie in" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "Mailserver" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Postpoort" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Gebruik TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Gebruik SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Gebruikersnaam" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Wachtwoord" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "Laat leeg om actueel te blijven" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Standaard afzender" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "E-mailadres van ontvanger" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "Project is already active" +#~ msgstr "Project is al actief" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Configuratie opslaan" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Opnieuw instellen" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "E-mailconfiguratiestatus" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Vernieuwen" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "E-mail is geconfigureerd!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "Uw e-mailinstellingen zijn correct ingesteld." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "E-mail is niet geconfigureerd" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "Configureer de e-mailinstellingen via het bovenstaande formulier." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Configuratiefouten" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Configuratiewaarschuwingen" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Huidige e-mailinstellingen" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Haven" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Wachtwoord ingesteld" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Test-e-mail verzenden" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "E-mailadres van de ontvanger" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Configuratiegids" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Veelgebruikte SMTP-providers" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Vereist app-wachtwoord" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Belangrijke opmerkingen" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail vereist een app-wachtwoord als 2FA is ingeschakeld" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Start de applicatie opnieuw nadat u de e-mailinstellingen hebt gewijzigd" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Controleer de firewallregels als e-mails niet worden verzonden" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "Gebruik voor productie een speciale e-mailservice zoals SendGrid of Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "wachtwoord is ingesteld" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "geen wachtwoord ingesteld" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "Kan configuratie niet opslaan. Probeer het opnieuw." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "Succes!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "Kan de status niet vernieuwen. Probeer het opnieuw." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "Voer een geldig e-mailadres in" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Verzenden..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "Kan geen test-e-mail verzenden. Controleer uw configuratie." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "U heeft geen toestemming om projecten te deactiveren" -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Configureer OIDC met behulp van deze omgevingsvariabelen:" +#~ msgid "Project is already inactive" +#~ msgstr "Project is al inactief" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "Dienst" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "U heeft geen toestemming om projecten te activeren" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "Kan project met bestaande tijdsinvoer niet verwijderen" -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Gebruikers" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan het project niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "Groepenclaim" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "U heeft geen toestemming om projecten te verwijderen" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "No projects selected for deletion" +#~ msgstr "Geen projecten geselecteerd voor verwijdering" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan projecten niet verwijderen vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "Kwijt" +#~ msgid "No projects were deleted" +#~ msgstr "Er zijn geen projecten verwijderd" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "Gebruik SSL" +#~ msgid "You do not have permission to change project status" +#~ msgstr "U heeft geen toestemming om de projectstatus te wijzigen" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "Begin" +#~ msgid "No projects selected" +#~ msgstr "Geen projecten geselecteerd" -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "Time-out (seconden)" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kan de projectstatus niet bijwerken " +#~ "vanwege een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "No projects were updated" +#~ msgstr "Er zijn geen projecten bijgewerkt" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "Project is already in favorites" +#~ msgstr "Project staat al in favorieten" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "Project added to favorites" +#~ msgstr "Project toegevoegd aan favorieten" -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "Failed to add project to favorites" +#~ msgstr "Kan project niet toevoegen aan favorieten" -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "Wachtwoord" +#~ msgid "Project is not in favorites" +#~ msgstr "Project staat niet in favorieten" -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "Voer uw wachtwoord in" +#~ msgid "Project removed from favorites" +#~ msgstr "Project verwijderd uit favorieten" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Failed to remove project from favorites" +#~ msgstr "Kan project niet uit favorieten verwijderen" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "Beschrijving, categorie, bedrag en datum zijn vereist" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "Gebaseerd op de laatste" +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kan geen kosten toevoegen vanwege een" +#~ " databasefout. Controleer de serverlogboeken." + +#~ msgid "Cost added successfully" +#~ msgstr "Kosten succesvol toegevoegd" + +#~ msgid "Cost not found" +#~ msgstr "Kosten niet gevonden" + +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "U heeft geen toestemming om deze kosten te bewerken" + +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de kosten niet bijwerken vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "Cost updated successfully" +#~ msgstr "Kosten zijn bijgewerkt" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "U heeft geen toestemming om deze kosten te verwijderen" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "Kan gefactureerde kosten niet verwijderen" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de kosten niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "Name and unit price are required" +#~ msgstr "Naam en eenheidsprijs zijn verplicht" + +#~ msgid "Invalid quantity format" +#~ msgstr "Ongeldig hoeveelheidsformaat" + +#~ msgid "Invalid unit price format" +#~ msgstr "Ongeldige eenheidsprijsnotatie" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kon geen extra goed toevoegen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "Extra good added successfully" +#~ msgstr "Extra goed succesvol toegevoegd" + +#~ msgid "Extra good not found" +#~ msgstr "Extra goed niet gevonden" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "U heeft geen toestemming om dit extra goed te bewerken" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kon niet extra goed updaten vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Extra good updated successfully" +#~ msgstr "Extra goed succesvol bijgewerkt" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "U heeft geen toestemming om dit extra goed te verwijderen" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "" +#~ "Extra goed dat aan een factuur is" +#~ " toegevoegd, kan niet worden verwijderd" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kan extra goed niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "Project created successfully" +#~ msgstr "Project succesvol aangemaakt" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Ongeldig formaat voor kortingsbedrag" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "De offerte moet worden goedgekeurd voordat deze kan worden verzonden" + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "Kan offerte niet verzenden: %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "U heeft geen toestemming om bijlagen bij deze offerte te uploaden" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "U heeft geen toestemming om deze bijlage te downloaden" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "U heeft geen toestemming om goedkeuring aan te vragen voor deze offerte" + +#~ msgid "This quote does not require approval" +#~ msgstr "Voor deze offerte is geen goedkeuring vereist" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "Kan geen goedkeuring aanvragen: %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kon geen goedkeuring aanvragen vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "Approval requested successfully" +#~ msgstr "Goedkeuring aangevraagd" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Deze offerte wacht niet op goedkeuring" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "Kan offerte niet goedkeuren: %(error)s" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de offerte niet goedkeuren vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." + +#~ msgid "Quote approved successfully" +#~ msgstr "Offerte succesvol goedgekeurd" -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "Gebruik projectuurtarieven" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "Logtijd" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "E-mailadres" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "Voornaam" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "Achternaam" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "Authenticatiemethode" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "Kan offerte niet afwijzen: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "Topprojecten" +#~ msgid "Quote approval rejected" +#~ msgstr "Goedkeuring van offerte afgewezen" -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "Beheerdersgroep" +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan geen sjabloon maken vanwege een " +#~ "databasefout. Controleer de serverlogboeken." -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "Template created successfully" +#~ msgstr "Sjabloon is succesvol aangemaakt" -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "Authenticatiemethode" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "Alleen actief" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "U heeft geen toestemming om van deze offerte een sjabloon te maken" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan sjabloon niet opslaan vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "Sjabloon succesvol opgeslagen" -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "Configuratie testen" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "U heeft geen toestemming om deze offerte te exporteren" -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Fout bij genereren van PDF: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "Configuratie testen" +#~ msgid "Recipient email address is required" +#~ msgstr "Het e-mailadres van de ontvanger is vereist" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Offerte succesvol verzonden naar %(email)s" -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "Configuratie testen" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "Referentie voor omgevingsvariabelen" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "Kan de offerte niet verzenden: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Fout bij het verzenden van e-mail: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "U heeft geen toestemming om deze offerte te dupliceren" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Vorig" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Volgende" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "Statistieken over functiegebruik" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de offerte niet dupliceren vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "Optionele couponcode" +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kan de dubbele offerte niet voltooien" +#~ " vanwege een databasefout. Controleer de" +#~ " serverlogboeken." + +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "Citaat %(quote_number)s gemaakt als duplicaat" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "Aandacht vereist" +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Selecteer een actie en minimaal één offerte" -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "Mobiel" +#~ msgid "Invalid quote IDs" +#~ msgstr "Ongeldige offerte-ID's" -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "Geen offertes gevonden of u heeft geen toestemming" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Status" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Details" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "Laad meer" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Mislukt" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "Gedupliceerde %(count)d offerte(s)" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "Kan %(count)d offerte(s) niet dupliceren" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "Error duplicating quotes" +#~ msgstr "Fout bij het dupliceren van aanhalingstekens" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "%(count)d offerte(s) gemarkeerd als verzonden" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "Kon %(count)d offerte(s) niet markeren als verzonden" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "Error updating quotes" +#~ msgstr "Fout bij bijwerken van offertes" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "%(count)d offerte(s) verwijderd" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "Kon %(count)d quote(s) niet verwijderen (mogelijk in gebruik)" -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "Error deleting quotes" +#~ msgstr "Fout bij verwijderen van offertes" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "Ongeldige actie" -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "" +#~ "Naam, project, klant, frequentie en " +#~ "volgende uitvoeringsdatum zijn vereist" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Alle categorieën" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Projectmanagement" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "Invalid next run date format" +#~ msgstr "Ongeldige datumnotatie voor volgende run" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "Invalid end date format" +#~ msgstr "Ongeldige einddatumnotatie" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Selected project or client not found" +#~ msgstr "Geselecteerd project of klant niet gevonden" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Ingeschakeld" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kan terugkerende factuur niet maken " +#~ "vanwege een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Gehandicapt" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "U heeft geen toestemming om deze terugkerende factuur te bekijken" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "U heeft geen toestemming om deze terugkerende factuur te bewerken" -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kan terugkerende factuur niet bijwerken " +#~ "vanwege een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Wijzigingen opslaan" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Terugkerende factuur succesvol bijgewerkt" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Opmerking" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "U heeft geen toestemming om deze terugkerende factuur te verwijderen" -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kan terugkerende factuur niet verwijderen " +#~ "vanwege een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "Start" +#~ msgstr "Begin" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "End" +#~ msgstr "Einde" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "Task" +#~ msgstr "Taak" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "OIDC-foutopsporingsdashboard" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "Inspecteer de configuratie, metadata van de provider en OIDC-gebruikers" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "Notes" +#~ msgstr "Opmerkingen" -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Configuratie testen" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "OIDC-configuratie" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Authenticatiemethode" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Uitgever" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "Niet geconfigureerd" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "Klant-ID" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Klantgeheim" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Set" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "Niet ingesteld" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "Omleidings-URI" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Automatisch gegenereerd" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Bereik" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Claimtoewijzing" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Gebruikersnaamclaim" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "E-mailclaim" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Volledige naamclaim" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Groepenclaim" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Beheerdersgroep" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "E-mails van beheerders" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI na uitloggen" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Metagegevens van de aanbieder" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Fout bij het laden van metagegevens:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Discovery-eindpunt:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Metagegevens van de provider zijn geladen" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Eindpunten" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Autorisatie" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Token" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Gebruikersinfo" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Einde sessie" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS-URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Ondersteunde functies" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Reactietypen" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Soorten subsidies" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Authenticatiemethoden" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Claims" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "Metagegevens van de provider zijn niet geladen. Klik op \"Testconfiguratie\" om op te halen." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "E-mail" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Volledige naam" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Rol" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Laatste login" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "OIDC-onderwerp" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Inactief" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Nooit" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Er zijn nog geen gebruikers ingelogd via OIDC." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Referentie voor omgevingsvariabelen" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Configureer OIDC met behulp van deze omgevingsvariabelen:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Variabel" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Beschrijving" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "Voorbeeld" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Authenticatiemethode" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "URL van de uitgever van de OIDC-provider" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "Client-ID van OIDC-provider" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Clientgeheim van OIDC-provider" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "Terugbel-URL (optioneel, automatisch gegenereerd)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Gevraagde bereiken" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Claim met gebruikersnaam" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Claim met e-mail" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Claim met volledige naam" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Claim die groepen bevat" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Groepsnaam voor beheerdersrol (optioneel)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "Door komma's gescheiden beheerders-e-mailadressen (optioneel)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "Billed" +#~ msgstr "Factureerbaar" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "Client" +#~ msgstr "Cliënt" -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "User" +#~ msgstr "Gebruiker" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "Yes" +#~ msgstr "Ja" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "No" +#~ msgstr "Nee" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "Kan het filter niet verwijderen vanwege een databasefout" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Authenticatiemethode" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "Kan de instellingen niet bijwerken " +#~ "vanwege een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "" +#~ "Installatie voltooid! Bedankt dat u ons" +#~ " helpt TimeTracker te verbeteren." -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "Project and task name are required" +#~ msgstr "Project- en taaknaam zijn vereist" -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "Selected project does not exist" +#~ msgstr "Het geselecteerde project bestaat niet" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Task not found" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "You do not have access to this task" +#~ msgstr "U heeft geen toegang tot deze taak" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "You can only edit tasks you created" +#~ msgstr "Je kunt alleen taken bewerken die je hebt gemaakt" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "Task name is required" +#~ msgstr "Taaknaam is vereist" -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "Project is required" +#~ msgstr "Project is vereist" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de status niet bijwerken vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de taak niet bijwerken vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "You do not have permission to update this task" +#~ msgstr "U heeft geen toestemming om deze taak bij te werken" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "OIDC-gebruikersgegevens" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Profiel en OIDC-identiteit voor deze gebruiker" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Terug naar OIDC-foutopsporing" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Gebruikersprofiel" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Actief" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Voorkeurstaal" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Gemaakt op" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "OIDC-informatie" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "OIDC-uitgever" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "OIDC-onderwerp (sub)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Lokaal" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "Deze gebruiker is aangemaakt of gekoppeld via OIDC. De uitgever en het onderwerp worden gebruikt om de gebruiker uniek te identificeren tijdens inlogsessies." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "Deze gebruiker heeft geen OIDC-informatie. Ze zijn mogelijk handmatig gemaakt of via zelfregistratie zonder OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Activiteitsstatistieken" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Tijdinvoer" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Geen" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Actieve timer" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Taken gemaakt" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Gebruiker bewerken" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Bekijk alle gebruikers" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "PDF-offerteontwerper" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "Visuele offerteontwerper" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "Versleep elementen om uw offerte-indeling te ontwerpen" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Hoe te gebruiken:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "Klik op elementen in de linkerzijbalk om ze aan het canvas toe te voegen. Klik op elementen om ze te selecteren en aan te passen in het eigenschappenvenster. Gebruik de uitlijningshulpmiddelen en sneltoetsen voor sneller bewerken." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Sneltoetsen:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "You can only update tasks you created" +#~ msgstr "U kunt alleen taken bijwerken die u hebt gemaakt" -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "Tabel met offerte-items" +#~ msgid "You can only assign tasks you created" +#~ msgstr "U kunt alleen taken toewijzen die u zelf heeft aangemaakt" -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "Selected user does not exist" +#~ msgstr "Geselecteerde gebruiker bestaat niet" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "Kosten Subtotaal" +#~ msgid "Task unassigned" +#~ msgstr "Taak niet toegewezen" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "You can only delete tasks you created" +#~ msgstr "Je kunt alleen taken verwijderen die je hebt gemaakt" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "Besparing..." +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "Kan taak met bestaande tijdinvoer niet verwijderen" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de taak niet verwijderen vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "Geen taken geselecteerd voor verwijdering" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan taken niet verwijderen vanwege een" +#~ " databasefout. Controleer de serverlogboeken." -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "Set" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "Documentatie" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Helder canvas" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Voorbeeld genereren" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Ontwerp opslaan" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Bekijk code" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "Geen taken geselecteerd" -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "Kan taken niet bijwerken vanwege een databasefout" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Uitlijnen op raster (10px)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Gereedschapskist" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Zoekelementen en variabelen..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Elementen" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "Variabelen" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Basiselementen" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Aangepaste tekst" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Tekst" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Rubriek" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Lijn" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Rechthoek" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Cirkel" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Bedrijfsinformatie" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Bedrijfslogo" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "Bedrijfsnaam" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Bedrijfsgegevens" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "Adres" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Telefoon" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Website" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "Belastingnummer" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "Factuurgegevens" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Factuurnummer" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "Gefactureerd" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Deadline" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Klantinformatie" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Klantnaam" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Klantadres" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "Tabel met offerte-items" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "Kosten Subtotaal" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Subtotaal" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Belasting" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Totaal bedrag" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Voorwaarden" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "Betaling & Project" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Betalingsdatum" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Betaalmethode" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Betalingsstatus" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Bedrag betaald" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Projectnaam" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "E-mailadres van klant" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Telefoon van klant" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "QR-code" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Streepjescode" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Paginanummer" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Huidige datum" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Watermerk" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Bankgegevens" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Munteenheid" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Voer een nieuwe vervaldatum in (JJJJ-MM-DD):" -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "Factuurartikelen" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "Factuurnummer" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Offertestatus (concept/verzonden/betaald/achterstallig)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Datum van uitgifte" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Deadline" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Subtotaalbedrag" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Belastingtarief (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Belastingbedrag" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Totaal bedrag" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Valutacode (EUR, USD, enz.)" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "Factuurartikelen" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Algemene voorwaarden" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Klantvelden" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Bedrijfsnaam van de klant" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "E-mailadres van de klant" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "Volledig adres van de klant" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Contactpersoon klant" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Telefoonnummer van klant" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Betalingsvelden" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "Betalingsstatus" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "Betalingsdatum" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Betaalmethode" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Betalingsreferentienummer" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Bedrag betaald" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Openstaand bedrag" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Betalingsnotities" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Projectvelden" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Projectnaam" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "Projectcode" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Projectbeschrijving" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Factureringsreferentie voor het project" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Bedrijf/instellingenvelden" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "Uw bedrijfsnaam" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "Uw bedrijfsadres" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "Uw bedrijfse-mailadres" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Uw bedrijfstelefoon" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Uw bedrijfswebsite" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "Uw belastingnummer" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "Uw bankrekeninggegevens" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Standaard factuurvoorwaarden" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Standaard factuurnotities" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Datum-/tijdvelden" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "Huidige datum" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "Aanmaakdatum offerte" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "Citaat laatste updatedatum" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "Factuurartikelen" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "Due date is required" +#~ msgstr "De onkostendatum is vereist" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "Op tijd gebaseerde diensten en uurwerk" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Artikelbeschrijving" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Artikelhoeveelheid" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Eenheidsprijs van artikel" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Totaalbedrag artikel" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Einde lus" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "Extra goederen" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "Project Extra goederen" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "Rolnaam" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "Totaal bedrag" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Ontwerp canvas" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Paginagrootte:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Inzoomen" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Uitzoomen" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Geselecteerde verwijderen" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Eigenschappen" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "Waarschuwing" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "Pagina vernieuwen" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "Waarschuwing" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Ongeldig datumformaat" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Datumnotatie" +#~ msgid "Database error" +#~ msgstr "Database-ondersteuning" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "Gedupliceerde %(count)d offerte(s)" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Selecteer een element om de eigenschappen ervan te bewerken" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "PDF-voorbeeld" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "No tasks updated" +#~ msgstr "Geen taken gevonden" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "%(count)d uitgave(s) succesvol bijgewerkt naar %(status)s" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "%(count)d uitgave(s) overgeslagen (geen toestemming)" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "Invalid priority value" +#~ msgstr "Ongeldige prioriteitswaarde" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "No user selected for assignment" +#~ msgstr "Geen gebruiker geselecteerd voor toewijzing" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "Ongeldige gebruiker geselecteerd" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "Kon geen taken toewijzen vanwege een databasefout" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "No project selected" +#~ msgstr "Geen project geselecteerd" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "Ongeldig project geselecteerd" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "Kan taken niet verplaatsen vanwege een databasefout" -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "Alleen beheerders kunnen alle achterstallige taken bekijken" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Gegenereerde code" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "Alle elementen wissen?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Duidelijk" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "Could not create template due to a database error" +#~ msgstr "Kan geen sjabloon maken vanwege een databasefout" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "Could not update template due to a database error" +#~ msgstr "Kan de sjabloon niet bijwerken vanwege een databasefout" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "Kan de sjabloon niet verwijderen vanwege een databasefout" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "Terugzetten naar standaardwaarden?" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "PDF-indeling opnieuw instellen" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "Kan de timer voor een gearchiveerd " +#~ "project niet starten. Haal het project" +#~ " eerst uit het archief." -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "Kan de timer voor een inactief project niet starten" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "PDF-offerteontwerper" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "Geselecteerde taak is ongeldig voor het gekozen project" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Visuele offerteontwerper" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Versleep elementen om uw offerte-indeling te ontwerpen" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "Tabel met offerte-items" +#~ msgid "You do not have access to this project" +#~ msgstr "U heeft geen toegang tot dit project." -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "Tabel met offerte-items" +#~ msgid "You do not have access to this client" +#~ msgstr "U heeft geen toegang tot deze taak" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "" +#~ "Je hebt al een actieve timer. Stop" +#~ " ermee voordat u aan een nieuwe " +#~ "begint." -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de timer niet starten vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "Unknown" +#~ msgstr "Onbekend" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Citaatgegevens" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Citaatnummer" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "Sjabloon moet een project hebben om een ​​timer te starten" -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Offertedatum" +#~ msgid "Cannot start timer for this project" +#~ msgstr "Kan de timer voor dit project niet starten" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Tabel met offerte-items" +#~ msgid "No active timer to stop" +#~ msgstr "Geen actieve timer om te stoppen" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Citaatvelden" +#~ msgid "No project" +#~ msgstr "Geen project" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Offertenummer" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Offertestatus (concept/verzonden/betaald/achterstallig)" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Citaat notities" +#~ msgid "No active timer to pause" +#~ msgstr "Geen actieve timer om te stoppen" -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Citaatstatus" +#~ msgid "Timer paused" +#~ msgstr "Timer gestopt" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Offerte geaccepteerd datum" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "Kan klant niet aanmaken. Probeer het opnieuw." -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Aanmaakdatum offerte" +#~ msgid "No active timer to resume" +#~ msgstr "Geen actieve timer om te stoppen" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Citaat laatste updatedatum" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Citeeritems lus" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "Kan klant niet aanmaken. Probeer het opnieuw." -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Loop door factuuritems" +#~ msgid "No active timer to adjust" +#~ msgstr "Geen actieve timer om te stoppen" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Links uitlijnen" +#~ msgid "Invalid adjustment value" +#~ msgstr "Ongeldige statuswaarde" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Horizontaal centreren" +#~ msgid "You can only edit your own timers" +#~ msgstr "U kunt alleen uw eigen timers bewerken" -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Rechts uitlijnen" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Ongeldige taak geselecteerd voor het gekozen project" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Boven uitlijnen" +#~ msgid "Start time cannot be in the future" +#~ msgstr "De starttijd kan niet in de toekomst liggen" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Centreer verticaal" +#~ msgid "Invalid start date/time format" +#~ msgstr "Ongeldige notatie van startdatum/-tijd" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Onderkant uitlijnen" +#~ msgid "End time must be after start time" +#~ msgstr "De eindtijd moet na de starttijd liggen" -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "Ongeldige einddatum-/tijdnotatie" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "Timer updated successfully" +#~ msgstr "Timer is succesvol bijgewerkt" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "You can only delete your own timers" +#~ msgstr "Je kunt alleen je eigen timers verwijderen" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "E-mailadres" +#~ msgid "Cannot delete an active timer" +#~ msgstr "Kan een actieve timer niet verwijderen" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de timer niet verwijderen vanwege" +#~ " een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "Invalid date/time format" +#~ msgstr "Ongeldige datum-/tijdnotatie" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "All fields are required" +#~ msgstr "Alle velden zijn verplicht" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "Kan geen tijdsinvoer maken voor een " +#~ "gearchiveerd project. Haal het project " +#~ "eerst uit het archief." -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "Kan geen tijdsinvoer maken voor een inactief project" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "Sjablonen voor tijdinvoer" +#~ msgid "Invalid task selected" +#~ msgstr "Ongeldige taak geselecteerd" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "De einddatum moet na of gelijk zijn aan de startdatum" -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "Het datumbereik mag niet langer zijn dan 31 dagen" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "Invalid time format" +#~ msgstr "Ongeldige tijdnotatie" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "Geen geldige datums gevonden in het geselecteerde bereik" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kon geen bulkvermeldingen maken vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "" +#~ "Er is een fout opgetreden bij het" +#~ " maken van bulkinvoer. Probeer het " +#~ "opnieuw." -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Je kunt alleen je eigen timers dupliceren" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "You can only resume your own timers" +#~ msgstr "U kunt alleen uw eigen timers hervatten" -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "Project no longer exists" +#~ msgstr "Project bestaat niet meer" -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "Sleutel" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "E-mail verzenden" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kan de timer niet hervatten vanwege " +#~ "een databasefout. Controleer de " +#~ "serverlogboeken." -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "Sleutel" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "Code, naam, e-mailadres" +#~ msgid "Invalid timezone selected" +#~ msgstr "Ongeldige tijdzone geselecteerd" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "Standaarduren per dag moeten tussen 0,5 en 24 liggen" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Bedrijfsbranding" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "Standaarduren per dag moeten tussen 0,5 en 24 liggen" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Standaardinstellingen voor facturen" +#~ msgid "Settings saved successfully" +#~ msgstr "Instellingen succesvol opgeslagen" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Back-upinstellingen" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Fout bij opslaan van instellingen: %(error)s" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "Bedankt dat u voor TimeTracker hebt gekozen!" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "Ingeschakeld" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "Kwijt" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "Gebruik SSL" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "Gebruik TLS" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "op" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "van" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "Gebruikersmenu" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "Snellere laadtijden" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "Algemene voorwaarden" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Instellingen exporteren" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "Fout bij opslaan van instellingen" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "Preferences updated" +#~ msgstr "Voorkeuren bijgewerkt" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "Language updated successfully" +#~ msgstr "Taal is succesvol bijgewerkt" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Invalid language" +#~ msgstr "Ongeldige taal" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "Taal bijgewerkt naar %(language)s" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Aanpassing" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Overdracht" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Verkoop" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Verhuur" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Aankoop" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "Webhooknaam is vereist" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "Webhook URL is required" +#~ msgstr "Webhook-URL is vereist" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "Er moet minimaal één gebeurtenis worden geselecteerd" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "Beschikbaar" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "Standaardinstellingen voor facturen" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "Munteenheid" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook is succesvol aangemaakt" -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "Afbeeldings-URL" +#~ msgid "Error creating webhook" +#~ msgstr "Fout bij het maken van de webhook" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "Fout bij het maken van de webhook: %(error)s" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "Code" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook is succesvol bijgewerkt" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "API-token maken" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "Fout bij updaten van webhook: %(error)s" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "Laat dit leeg om het huidige wachtwoord te behouden" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook is succesvol verwijderd" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "Fout bij verwijderen van webhook: %(error)s" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Voer een geldig doeluur in (groter dan 0)" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "Time-out (seconden)" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "Er bestaat al een doel voor deze" +#~ " week. Bewerk in plaats daarvan het" +#~ " bestaande doel." -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "Inhoudstype" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Wekelijks tijdsdoel is succesvol aangemaakt!" -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "Systeemrol" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "Het is niet gelukt om een ​​doelpunt te maken. Probeer het opnieuw." -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "Algemene voorwaarden" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "U heeft geen toestemming om dit doel te bekijken" -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Privacy en analyse" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "U heeft geen toestemming om dit doel te bewerken" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Instellingen opslaan" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Wekelijks tijdsdoel succesvol bijgewerkt!" -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Nieuw logo uploaden" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "Kan doel niet updaten. Probeer het opnieuw." -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Logovoorbeeld" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "U heeft geen toestemming om dit doel te verwijderen" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "Weet u zeker dat u het bedrijfslogo wilt verwijderen?" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Wekelijks tijdsdoel is succesvol verwijderd" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Logo verwijderen" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "Kan doel niet verwijderen. Probeer het opnieuw." -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "Vraag goedkeuring aan" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "Configuratie testen" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "Operatie mislukt" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "Operatie mislukt" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Telemetrie- en analysedashboard" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Beheerder → Instellingen" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "Laat dit leeg om het huidige wachtwoord te behouden" +#~ msgid "Update Status" +#~ msgstr "Status bijwerken" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Toegang tot klantportal" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Create Task" +#~ msgstr "Taak maken" -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "Toegewezen aan" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Send Email" +#~ msgstr "E-mail verzenden" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Beheerderstoegang" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Migreren naar nieuw rollensysteem" +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Migreren" +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Rollen" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "Geen gebruikers gevonden." +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "Kan gebruiker \"{name}\" niet verwijderen omdat deze {count} tijdinvoer heeft. Gebruikers met bestaande tijdinvoer kunnen niet worden verwijderd." +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "Kan gebruiker niet verwijderen" +#~ msgid "Timesheet period rejected" +#~ msgstr "Selecteer Project" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "Weet u zeker dat u gebruiker \"{name}\" wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt." +#~ msgid "Only admins can close periods" +#~ msgstr "Alleen beheerders kunnen kilometerinvoer weigeren" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Gebruiker verwijderen" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "WebSocket live-updates" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "Naam en eenheidsprijs zijn verplicht" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "Klant aangemaakt" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "Sleutel en label zijn vereist" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Time-off request approved" +#~ msgstr "Vraag goedkeuring aan" -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Time-off request rejected" +#~ msgstr "Citaat afgewezen" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "Name and date range are required" +#~ msgstr "Naam en eenheidsprijs zijn verplicht" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Label" +#~ msgid "Holiday created" +#~ msgstr "Uurtarief" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "remaining" +#~ msgstr "overig" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Success" +#~ msgstr "Succes" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Error" +#~ msgstr "Fout" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "Warning" +#~ msgstr "Waarschuwing" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Information" +#~ msgstr "Informatie" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "Laden..." -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "Saving..." +#~ msgstr "Besparing..." -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "Verwijderen..." -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Cancel" +#~ msgstr "Annuleren" -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Confirm" +#~ msgstr "Bevestigen" -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Optioneel" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "Close" +#~ msgstr "Dichtbij" -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "Save" +#~ msgstr "Redden" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "Delete" +#~ msgstr "Verwijderen" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "Edit" +#~ msgstr "Bewerking" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Add" +#~ msgstr "Toevoegen" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Remove" +#~ msgstr "Verwijderen" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "OK" +#~ msgstr "OK" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Weet je zeker dat je dit wilt verwijderen?" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "U heeft niet-opgeslagen wijzigingen. Weet je zeker dat je weg wilt?" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "Operatie mislukt" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "Operatie succesvol afgerond" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "No items selected" +#~ msgstr "Geen items geselecteerd" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Invalid input" +#~ msgstr "Ongeldige invoer" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "This field is required" +#~ msgstr "Dit veld is verplicht" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "No active timer" +#~ msgstr "Geen actieve timer" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Instellen als standaardsjabloon" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "HTML-sjabloon" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Aangepast bericht" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Meer variabelen" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Sjabloon maken" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Beschikbare variabelen" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Factuurvariabelen" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Andere variabelen" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "Test-e-mail verzenden" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "Timer gestopt" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "E-mailadres van ontvanger" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "Gefactureerd" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Sjabloon bijwerken" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "Test-e-mail verzenden" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "Geen e-mailsjablonen gevonden." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "Maak uw eerste e-mailsjabloon om factuur-e-mails aan te passen." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "E-mailsjabloon maken" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "E-mailsjabloon verwijderen" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "Weet u zeker dat u wilt verwijderen" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Deze actie kan niet ongedaan worden gemaakt." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "Kan timer niet stoppen" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Sjablooninformatie" +#~ msgid "Error stopping timer" +#~ msgstr "Fout bij stoppen van timer" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "No form to save" +#~ msgstr "Geen formulier om op te slaan" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "No timer found" +#~ msgstr "Geen timer gevonden" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Timer gestopt vanwege inactiviteit" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "Ga naar de inhoud" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "Mobiele navigatie" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "Navigatie" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "Commandopalet" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Commands" +#~ msgstr "Opmerkingen" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "Zijbalk schakelen" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "Dashboard" +#~ msgstr "Dashboard" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Timer" +#~ msgstr "Timer" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Time entries" +#~ msgstr "Tijdinvoer" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Reports" +#~ msgstr "Rapporten" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "Calendar" +#~ msgstr "Kalender" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "Kalenderweergave" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "Tijdregistratie" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "Vraag goedkeuring aan" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "Taken" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "Kanban-bord" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "Wekelijkse doelen" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "Sjablonen voor tijdinvoer" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "CRM" +#~ msgstr "CRM" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Clients" +#~ msgstr "Klanten" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "Citaten" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "Financiën en kosten" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "Geplande rapporten" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Invoices" +#~ msgstr "Facturen" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "Terugkerende facturen" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Payments" +#~ msgstr "Betalingen" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "Expenses" +#~ msgstr "Uitgaven" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "Mileage" +#~ msgstr "Kilometerstand" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "Per Diem" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "Budgetwaarschuwingen" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Icon" +#~ msgid "Inventory" +#~ msgstr "Inventaris" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "Voorraadartikelen" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Warehouses" +#~ msgstr "Magazijnen" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "Leveranciers" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "Inkooporders" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Naam" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "Voorraadniveaus" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "Voorraadbewegingen" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "Overdrachten" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "Aanpassingen" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "Reservations" +#~ msgstr "Reserveringen" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "Waarschuwingen voor lage voorraad" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Analytics" +#~ msgstr "Analyses" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "Hulpmiddelen en gegevens" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "Importeren / exporteren" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "Opgeslagen filters" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Systeemmachtigingen" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Alle beschikbare machtigingen in het systeem" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Terug naar Rollen" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "machtigingen" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "Geen beschrijving beschikbaar" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "Over machtigingen" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "Machtigingen bepalen welke acties gebruikers in het systeem kunnen uitvoeren. Deze machtigingen worden toegewezen aan rollen en rollen worden toegewezen aan gebruikers. Dit zorgt voor een flexibel en gedetailleerd toegangscontrolesysteem." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Rol bewerken" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Nieuwe rol maken" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Rolnaam" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Een unieke naam voor deze rol" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Optionele beschrijving van deze rol" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Machtigingen" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Selecteer de machtigingen die deze rol moet hebben:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Schakel Alles in" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Admin" +#~ msgstr "Beheerder" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "Beheerdashboard" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "User Management" +#~ msgstr "Gebruikersbeheer" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Rol bijwerken" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Rol creëren" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Beheer rollen en hun machtigingen" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Bekijk machtigingen" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Totaal aantal rollen" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Systeemrollen" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Aangepaste rollen" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Toegewezen gebruikers" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Type" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Standaardrol" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "gebruiker" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Geen gebruikers" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Aangepast" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Weergave" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Machtigingen voor" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "Geen rechten toegewezen." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "Geen rollen gevonden." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "Over rollen en machtigingen" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "Rollen zijn verzamelingen machtigingen die aan gebruikers kunnen worden toegewezen. Systeemrollen zijn vooraf gedefinieerd en kunnen niet worden verwijderd of hernoemd, maar aangepaste rollen kunnen voor uw specifieke behoeften worden gemaakt." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "Weet u zeker dat u de rol wilt verwijderen?" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Rol verwijderen" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Geen beschrijving" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Rolinformatie" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Systeemrol" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Aangepaste rol" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Totaal aantal machtigingen" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Gemaakt" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Gebruikers met deze rol" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Er zijn nog geen gebruikers toegewezen aan deze rol." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "Aan deze rol zijn geen machtigingen toegewezen." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Terug naar Gebruiker" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Beheer rollen voor" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Wijs rollen toe" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "Selecteer de rollen die deze gebruiker moet hebben. Gebruikers nemen alle machtigingen over van de aan hen toegewezen rollen." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Rollen bijwerken" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Huidige effectieve machtigingen" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "Dit zijn alle rechten die de gebruiker momenteel heeft via zijn rollen:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Geen machtigingen (rollen toewijzen om machtigingen te verlenen)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Maak een webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Webhook bewerken" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Configureer webhook voor integraties" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "Webhook-URL" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "De URL waar webhookgebeurtenissen naartoe worden verzonden" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Evenementen" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Selecteer welke gebeurtenissen deze webhook moeten activeren" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "HTTP-methode" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Inhoudstype" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Maximaal aantal nieuwe pogingen" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Vertraging opnieuw proberen (seconden)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Time-out (seconden)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Genereer geheim" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Waarschuwing: als u het geheim opnieuw genereert, wordt het huidige geheim ongeldig" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Beheer webhook-integraties" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Statistieken" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Totaal" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "Geen webhooks geconfigureerd" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Maak uw eerste webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Webhook-details" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Test" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Geheim" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(afgeknot)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Totaal aantal leveringen" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Succesvol" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Laatste levering" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Recente leveringen" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Evenement" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Poging" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Antwoord" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Tijd" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Opnieuw proberen" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Nog geen leveringen" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "Een testwebhookgebeurtenis verzenden?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "Testwebhook succesvol verzonden!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Fout:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Onbekende fout" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Fout bij verzenden van testwebhook:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Analytics-dashboard" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "Laatste 7 dagen" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "Laatste 30 dagen" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "Laatste 90 dagen" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "Vorig jaar" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "Exporteren als JSON" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "CSV exporteren" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Belangrijke statistieken en inzichten over uw tijdregistratie" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Gem. dagelijkse uren" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "Opbrengst" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "Tijd" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Trend van dagelijkse uren" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Factureerbaar versus niet-factureerbaar" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Wekelijkse trends" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "uur ervoor" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "Betalingen in de loop van de tijd" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Uren per tijdstip" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Projectefficiëntie" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Gebruikersprestaties" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "Kan diagrammen niet laden. Probeer het opnieuw." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "Kan diagrammen niet vernieuwen. Probeer het opnieuw." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Uur van de dag" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Winst" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "Opnieuw instellen" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "Rollen en machtigingen" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Exporteren" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Belangrijke statistieken en bruikbare inzichten" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "versus vorige periode" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "van totaal" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Potentiële inkomsten" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Gemiddeld tarief:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "Trend" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "actieve projecten" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Inzichten en aanbevelingen" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Cumulatief" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Factureerbare distributie" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Overzicht taakstatus" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Taken voltooid" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "In uitvoering" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Te doen" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Opbrengsten per project" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Betalingen in de loop van de tijd" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Betaalmethoden" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Inkomsten versus betalingen" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Ophaalpercentage" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Voltooiingspercentage van projecten" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "Factureerbaar" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "Niet-factureerbaar" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Voltooid" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Geannuleerd" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Voltooiingspercentage (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Overzicht mobiele inzichten" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Dagelijks Gem" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Dagelijkse uren" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "Topprojecten" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "PDF Templates" +#~ msgstr "PDF-sjablonen" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "Invoice PDF" +#~ msgstr "Factuur-pdf" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "Offerte-pdf" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Tijdinvoer" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "System Settings" +#~ msgstr "Systeeminstellingen" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "uur" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "Settings" +#~ msgstr "Instellingen" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Goedkeuren" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Afwijzen" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "E-mailconfiguratie" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "E-mailsjablonen" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "OIDC Settings" +#~ msgstr "OIDC-instellingen" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "API-tokens" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "Auditlogboeken" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "Expense Categories" +#~ msgstr "Uitgavencategorieën" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "Per Diem-tarieven" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Goedgekeurd door" +#~ msgid "System Info" +#~ msgstr "Systeeminfo" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Backups" +#~ msgstr "Back-ups" -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "Reactie plaatsen" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "Reactie plaatsen" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "Reden van afwijzing" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Houd bij wie wat en wanneer heeft gewijzigd" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Filters" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Entiteitstype" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Alle soorten" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "Entiteits-ID" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Alle gebruikers" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Actie" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Alle acties" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Bijgewerkt" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Verwijderd" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Tijdbereik" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Filter" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Tijdstempel" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Entiteit" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "Veld" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Wijziging" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Reden" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Informatie wijzigen" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "About" +#~ msgstr "Over" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Help" +#~ msgstr "Hulp" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Open support options" +#~ msgstr "Exportopties" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "Support TimeTracker" +#~ msgstr "Ondersteuning van TimeTracker" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Open sidebar" +#~ msgstr "Zijbalk schakelen" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Search" +#~ msgstr "Zoekopdracht" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Vraag informatie aan" +#~ msgid "Theme" +#~ msgstr "Thema" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Theme options" +#~ msgstr "Filteropties" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Light" +#~ msgstr "Licht" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Dark" +#~ msgstr "Donker" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "System" +#~ msgstr "Systeem" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Beveiliging" +#~ msgid "Start Timer" +#~ msgstr "Starttimer" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "Stop" +#~ msgstr "naar" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (ondernemingsauthenticatie)" +#~ msgid "AI Helper" +#~ msgstr "Bekijk Help" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "Change language" +#~ msgstr "Taal wijzigen" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "Wachtwoord moet minimaal 8 tekens lang zijn" +#~ msgid "Language" +#~ msgstr "Taal" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "User menu" +#~ msgstr "Gebruikersmenu" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "Portaalwachtwoord" +#~ msgid "Supporter" +#~ msgstr "Steun" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "Stel uw wachtwoord in" +#~ msgid "Guest" +#~ msgstr "Gast" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "My Profile" +#~ msgstr "Mijn profiel" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "Geen gebruikersnamen of e-mailadressen" +#~ msgid "My Settings" +#~ msgstr "Mijn instellingen" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "License" +#~ msgstr "Licentie" -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "Test-e-mail verzenden" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "Terug naar beheerder" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Login" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Volg de tijd. Blijf georganiseerd." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Meld u aan bij uw account" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "Artikeldetails" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "Stel uw wachtwoord in" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "Authenticatiemethode" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "Log in" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Tip: Voer een nieuwe gebruikersnaam in om uw account aan te maken." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "Of ga verder met" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Eenmalige aanmelding" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Profiel bewerken" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Lid sinds" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "Wachtwoord instellen" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "Wachtwoord instellen" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "Stel een wachtwoord in voor uw klantportaalaccount" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "Wachtwoord instellen" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "Wachtwoord moet minimaal 8 tekens lang zijn" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "Bevestig wachtwoord" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "Stel uw wachtwoord in" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "Wachtwoord instellen" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "Authenticatiemethode" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "Logout" +#~ msgstr "Uitloggen" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Code" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Geniet je van TimeTracker?" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "Toegang tot de klantportal is niet ingeschakeld voor uw account." +#~ msgid "Support / Get key" +#~ msgstr "Ondersteuning van TimeTracker" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "Gehandicapt" +#~ msgid "PayPal" +#~ msgstr "PayPal" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "Support / License" +#~ msgstr "Benodigdheden" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "Afwijzen" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Software update" +#~ msgstr "Startdatum" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "Read more" +#~ msgstr "Laad meer" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "View Release" +#~ msgstr "Taak bekijken" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "Gegenereerde code" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "Ingeschakeld" +#~ msgid "Quick actions dock" +#~ msgstr "Snelle acties" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "Actions" +#~ msgstr "Acties" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "Log Time" +#~ msgstr "Logtijd" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "New Task" +#~ msgstr "Nieuwe taak" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Budgetwaarschuwingen en prognoses" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Bewaken van projectbudgetten en voorspellen van voltooiing" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Niet-bevestigde waarschuwingen" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Kritieke waarschuwingen" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Projecten met budgetten" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Waarschuwingswaarschuwingen" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Actieve waarschuwingen" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Erkennen" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Status van projectbudget" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Begroting" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Verbruikt" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Overig" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Voortgang" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "over" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Over budget" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Kritisch" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "Gezond" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "Er zijn geen projecten met budgetten gevonden" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Waarschuwing succesvol bevestigd" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "Kan waarschuwing niet bevestigen" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Budgetanalyse en prognoses" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Terug naar Dashboard" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Bekijk project" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Totaal budget" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Analyse van de verbrandingssnelheid" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Dagelijkse brandsnelheid" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Wekelijkse brandsnelheid" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Maandelijkse brandsnelheid" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Periode Totaal" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Gebaseerd op de laatste" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "dagen" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "Er zijn geen gegevens over de brandsnelheid beschikbaar" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Voltooiingsschatting" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Geschatte voltooiingsdatum" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "resterende dagen" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Vertrouwensniveau" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "Geen voltooiingsschatting beschikbaar" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Kostentrendanalyse" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Gemiddeld" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Toewijzing van middelen" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Totale kosten" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Uurtarief" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Teamlid" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Kosten" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Uren %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Kosten %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "Inzendingen" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Datum en tijd" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Locatie" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Herinnering" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "minuten ervoor" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "uur ervoor" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "dagen ervoor" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Terugkerend" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Tot" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Laatst bijgewerkt" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Terug naar Agenda" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Evenement verwijderen" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "Weet je zeker dat je dit evenement wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Evenement bewerken" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Nieuw evenement" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Titel" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Startdatum" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Begintijd" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Einddatum" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Eindtijd" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Hele dag evenement" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Evenementtype" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Ontmoeting" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Afspraak" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Termijn" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- Geen --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Geen herinnering" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 minuten ervoor" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 minuten eerder" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 minuten eerder" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 uur eerder" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 dag ervoor" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Kleur" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Kies een kleur voor dit evenement" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Privé-evenement" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Privé-evenementen zijn alleen voor jou zichtbaar" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Terugkerend evenement" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "Dit is een terugkerend evenement" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Herhalingspatroon" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Gebruik het RRULE-formaat (bijvoorbeeld FREQ=WEEKLY;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Einddatum herhaling" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Evenement bijwerken" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Evenement maken" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "New Project" +#~ msgstr "Bekijk project" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "New Client" +#~ msgstr "Klant bewerken" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "Operatie mislukt" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "Context included" +#~ msgstr "Contract beëindigd" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "Logovoorbeeld" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Send" +#~ msgstr "Einde" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Bekijk en beheer uw evenementen, taken en tijdsinvoer" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Dag" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Week" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Maand" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "Vandaag" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Create API Token" +#~ msgstr "API-token maken" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Your API Token" +#~ msgstr "Uw API-token" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Agenda laden..." +#~ msgid "Usage Examples" +#~ msgstr "Gebruiksvoorbeelden" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Evenementdetails" +#~ msgid "Are you sure you want to" +#~ msgstr "Weet je zeker dat je dat wilt" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "deactivate" +#~ msgstr "deactiveren" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "activate" +#~ msgstr "activeren" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "this token?" +#~ msgstr "dit teken?" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "Deactivate Token" +#~ msgstr "Token deactiveren" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "Activate Token" +#~ msgstr "Token activeren" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "Deactivate" +#~ msgstr "Deactiveren" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "Activate" +#~ msgstr "Activeren" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Weet u zeker dat u dit token " +#~ "wilt verwijderen? Deze actie kan niet" +#~ " ongedaan worden gemaakt." -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "Token verwijderen" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "Maak een back-up" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "Back-up herstellen" -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "Bestaande back-ups" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "Important Information" +#~ msgstr "Belangrijke informatie" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "Bevestig verwijdering" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "Clear Cache" +#~ msgstr "Cache wissen" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "Status van servicemedewerker" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "Wis alle caches" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "ServiceWorker-acties" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "Handmatige harde vernieuwing" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "All time" +#~ msgstr "Altijd" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Klantnotitie bewerken" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Terug naar Klant" +#~ msgid "Total Projects" +#~ msgstr "Totaal projecten" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Cliënt:" +#~ msgid "Active Projects" +#~ msgstr "Actieve projecten" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Gemaakt op" +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Laatst bewerkt op" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Opmerking inhoud" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Interne notitie alleen zichtbaar voor uw team." +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Markeer als belangrijk" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Klantenportaal" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "Details bekijken" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "Database" +#~ msgstr "Database" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "In behandeling" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Goedgekeurd" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Afgewezen" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Alle" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Details bekijken" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "OIDC Users" +#~ msgstr "OIDC-gebruikers" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "users" +#~ msgstr "gebruikers" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "Beheerderssecties" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "Recent Activity" +#~ msgstr "Recente activiteit" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "Duration" +#~ msgstr "Duur" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "N/A" +#~ msgstr "N.v.t" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "E-mailconfiguratie en testen" -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "Goedkeuringsstatus" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "Goedkeuring aangevraagd" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "Er zijn geen projecten bijgewerkt" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "Welkom, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "Pas snelkoppelingen aan" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "Configureer en test de bezorging van e-mail" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "Statistieken" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "Beheerderssecties" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "Recente facturen" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "Recente tijdinvoer" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "Selecteer een klant..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "Kan timer niet stoppen" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "Terug naar beheerder" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "" +#~ "Configureer hier de e-mailinstellingen om " +#~ "ze in de database op te slaan." -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Schakel database-e-mailconfiguratie in" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "Mail Server" +#~ msgstr "Mailserver" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "Postpoort" -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Use TLS" +#~ msgstr "Gebruik TLS" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Ga naar Dashboard" +#~ msgid "Use SSL" +#~ msgstr "Gebruik SSL" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Username" +#~ msgstr "Gebruikersnaam" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Ga terug" +#~ msgid "Password" +#~ msgstr "Wachtwoord" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "Leave empty to keep current" +#~ msgstr "Laat leeg om actueel te blijven" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Factuurgegevens" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Uitgiftedatum" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "Deze factuur is %(days)d dagen te laat." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Factuurartikelen" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Hoeveelheid" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Eenheidsprijs" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "Standaard afzender" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Terug naar Facturen" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "Facturen voor %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "Onbetaald" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "Verlopen" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Hoeveelheid" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "dagen te laat" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "E-mailadres van ontvanger" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "Configuratie opslaan" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "Reset" +#~ msgstr "Opnieuw instellen" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "E-mailconfiguratiestatus" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Refresh" +#~ msgstr "Vernieuwen" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "E-mail is geconfigureerd!" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "Your email settings are properly set up." +#~ msgstr "Uw e-mailinstellingen zijn correct ingesteld." -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Email is not configured" +#~ msgstr "E-mail is niet geconfigureerd" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Prioriteit" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "Configureer de e-mailinstellingen via het bovenstaande formulier." -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "Toegewezen aan" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Configuration Errors" +#~ msgstr "Configuratiefouten" -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Configuration Warnings" +#~ msgstr "Configuratiewaarschuwingen" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "Current Email Settings" +#~ msgstr "Huidige e-mailinstellingen" -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Port" +#~ msgstr "Haven" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Open" +#~ msgid "Password Set" +#~ msgstr "Wachtwoord ingesteld" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Send Test Email" +#~ msgstr "Test-e-mail verzenden" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "Recipient Email Address" +#~ msgstr "E-mailadres van de ontvanger" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "Configuration Guide" +#~ msgstr "Configuratiegids" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Inloggen klantportaal" +#~ msgid "Common SMTP Providers" +#~ msgstr "Veelgebruikte SMTP-providers" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Bekijk uw projecten en facturen" +#~ msgid "Requires app password" +#~ msgstr "Vereist app-wachtwoord" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Log in op het Klantportaal" +#~ msgid "Important Notes" +#~ msgstr "Belangrijke opmerkingen" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "Voer uw portaalgegevens in om toegang te krijgen tot uw projecten en facturen" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail vereist een app-wachtwoord als 2FA is ingeschakeld" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "portal_gebruikersnaam" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "" +#~ "Start de applicatie opnieuw nadat u " +#~ "de e-mailinstellingen hebt gewijzigd" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Voer uw wachtwoord in" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "Controleer de firewallregels als e-mails niet worden verzonden" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "Gebruik voor productie een speciale " +#~ "e-mailservice zoals SendGrid of Amazon " +#~ "SES" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "password is set" +#~ msgstr "wachtwoord is ingesteld" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "no password set" +#~ msgstr "geen wachtwoord ingesteld" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "Kan configuratie niet opslaan. Probeer het opnieuw." -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Laag" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Medium" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Hoog" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Dringend" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "Success!" +#~ msgstr "Succes!" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "Kan de status niet vernieuwen. Probeer het opnieuw." -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "Voer een geldig e-mailadres in" -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "Verzenden..." -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "Kan geen test-e-mail verzenden. Controleer uw configuratie." -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Configureer OIDC met behulp van deze omgevingsvariabelen:" -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "Server" +#~ msgstr "Dienst" -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Users" +#~ msgstr "Gebruikers" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Groups" +#~ msgstr "Groepenclaim" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Opmerkingen" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Commentaar toevoegen" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Jouw commentaar" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "Kwijt" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Reactie plaatsen" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "Gebruik SSL" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "StartTLS" +#~ msgstr "Begin" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Time-out (seconden)" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Terug naar Projecten" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "Projecten voor %(client_name)s" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "Bind password" +#~ msgstr "Wachtwoord" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Offertedetails" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Geldig tot" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Deze offerte is verlopen." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Citeer artikelen" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "SKU" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Algemene voorwaarden" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "Enter bind password" +#~ msgstr "Voer uw wachtwoord in" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Accepteer offerte" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Offerte afwijzen" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Terug naar Citaten" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "Offertes voor %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Verlopen" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "Geen citaten gevonden." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Base DN" +#~ msgstr "Gebaseerd op de laatste" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "Projectcode" +#~ msgid "User object class" +#~ msgstr "Gebruik projectuurtarieven" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "Over budget" +#~ msgid "Login attribute" +#~ msgstr "Logtijd" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "Email attribute" +#~ msgstr "E-mailadres" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "Samenvatting" +#~ msgid "First name attribute" +#~ msgstr "Voornaam" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "Totaal bedrag" +#~ msgid "Last name attribute" +#~ msgstr "Achternaam" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "Geen taken geselecteerd" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Authenticatiemethode" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "Geen activiteit in de afgelopen 30 dagen." +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Group object class" +#~ msgstr "Topprojecten" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "Beheerdersgroep" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Wachtwoord instellen" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Stel uw wachtwoord in om aan de slag te gaan" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Stel uw wachtwoord in" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Stel een wachtwoord in voor uw klantportaalaccount" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "Bevestig wachtwoord" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Bevestig uw wachtwoord" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "Tijdinvoer voor %(client_name)s projecten" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Alle projecten" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "Vanaf Datum" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "Tot op heden" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Totaal aantal inschrijvingen" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Totaal uren" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "AUTH_METHOD" +#~ msgstr "Authenticatiemethode" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "Alleen actief" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Recente facturen" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Bekijk alles" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Configuratie testen" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "Test connection" +#~ msgstr "Configuratie testen" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "Generate configuration" +#~ msgstr "Configuratie testen" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "Environment variables (.env)" +#~ msgstr "Referentie voor omgevingsvariabelen" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Totaal facturen" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "Previous" +#~ msgstr "Vorig" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Recente tijdinvoer" +#~ msgid "Next" +#~ msgstr "Volgende" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "Feature Module Load Status" +#~ msgstr "Statistieken over functiegebruik" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Exporteren naar CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Klant aanmaken" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Terug naar Klanten" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "Voeg een nieuwe klant toe om gerelateerde projecten en facturering te beheren." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Voer de klantnaam in" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Standaard uurtarief" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "bijv. 75.00 uur" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "Dit tarief wordt automatisch ingevuld bij het aanmaken van projecten voor deze klant" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Ondersteunt afwaardering" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Korte beschrijving van de omvang van de klant of het project" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Contactpersoon" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Naam van primair contact" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@klant.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Maandelijkse vooruitbetaalde uren" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "bijv. 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "Laat leeg als deze klant geen prepaid-toewijzing heeft." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Prepaid-resetdag" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Dag van de maand waarop prepaid-uren worden gereset (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Klantadres" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "Optional loaded:" +#~ msgstr "Optionele couponcode" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Kies een duidelijke, beschrijvende naam voor de klantorganisatie." +#~ msgid "Attention needed" +#~ msgstr "Aandacht vereist" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "Stel het standaarduurtarief voor deze klant in. Dit wordt automatisch ingevuld bij het maken van nieuwe projecten." +#~ msgid "Module" +#~ msgstr "Mobiel" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Contactgegevens" +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "Voeg contactgegevens toe voor eenvoudige communicatie en bijhouden van gegevens." +#~ msgid "Status" +#~ msgstr "Status" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Vooruitbetaalde uren" +#~ msgid "Details" +#~ msgstr "Details" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "Configureer maandelijks inbegrepen uren en de resetdag als deze klant een provisie- of prepaidbundel heeft." +#~ msgid "Loaded" +#~ msgstr "Laad meer" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "Geef context over de klantrelatie of typische projecttypen." +#~ msgid "Failed" +#~ msgstr "Mislukt" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "Klant bewerken" +#~ msgid "—" +#~ msgstr "" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "Schakel portaltoegang in voor deze client. Klanten kunnen met hun eigen inloggegevens inloggen om projecten, facturen en urenvermeldingen te bekijken." +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Schakel Klantportaal in" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Portal-gebruikersnaam" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Unieke gebruikersnaam voor inloggen op de portal" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Portaalwachtwoord" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "Laat leeg om het huidige wachtwoord te behouden" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Stel een nieuw wachtwoord in of laat het leeg om actueel te blijven" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Huidige portal-gebruikersnaam" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Klant bijwerken" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Stuur een e-mail voor het instellen van het wachtwoord" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "Stuur een e-mail naar %(email)s met een link om hun portalwachtwoord in te stellen." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "E-mailadres is vereist om een ​​e-mail voor het instellen van het wachtwoord te verzenden. Stel hierboven het e-mailadres van de klant in." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Klantstatistieken" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "Geschat. Totale kosten" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Klanten filteren" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Schakel Filters in" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Filters verbergen" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Filters weergeven" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "Er zijn geen niet-gefactureerde tijdsvermeldingen gevonden voor dit project." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "Niet-gefactureerde tijdsinvoer" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "Factuurartikelen" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "Klant markeren als inactief?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Wijzig de klantstatus" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Markeer inactief" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "Klant activeren?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Activeer Klant" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Klant verwijderen" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "Totale en actieve projecten" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Beheren" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Primair" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "meer contact(en)" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Nog geen contacten" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Contactpersoon toevoegen" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Oude contactgegevens" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "Het abonnement omvat %(hours)s uren per cyclus. Wordt gereset op dag %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Huidige cyclusstart" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Resterende uren" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "H" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "Deze cyclus verbruikt" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Klant zichtbaar" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "All Categories" +#~ msgstr "Alle categorieën" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Project Management" +#~ msgstr "Projectmanagement" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Gearchiveerd" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "Ingeschakeld" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "Disabled" +#~ msgstr "Gehandicapt" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Interne opmerkingen" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Notitie toevoegen" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Een interne opmerking over deze klant toevoegen..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Bewaar notitie" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "bewerkt" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Belangrijk" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Markering opheffen" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Markeer belangrijk" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "Nog geen opmerkingen. Voeg een notitie toe om belangrijke informatie over deze klant bij te houden." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "Geschatte waarde" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "Factuur maken" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "Factuur maken" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "Factuur maken" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "Weet u zeker dat u deze notitie wilt verwijderen?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Notitie verwijderen" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Bewerkt op" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Antwoord" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Schrijf uw antwoord..." +#~ msgid "Save Changes" +#~ msgstr "Wijzigingen opslaan" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "Note" +#~ msgstr "Opmerking" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Deel uw mening, updates of vragen..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "U kunt regeleinden gebruiken om uw commentaar op te maken." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Afbeelding toevoegen" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Nog geen opmerkingen" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Begin het gesprek door de eerste opmerking toe te voegen." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Voeg eerste reactie toe" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Reactie bewerken" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Rug" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "Commentaar bewerken op:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Oorspronkelijk gepost op" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Commentaar Inhoud" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Alle activiteiten" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Tijdsjablonen" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Geen recente activiteit" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "Terwijl u werkt, wordt hier activiteit weergegeven" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Laad meer" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "Kan activiteiten niet laden" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Selecteer een klant..." +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "OIDC-foutopsporingsdashboard" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "Inspecteer de configuratie, metadata van de provider en OIDC-gebruikers" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "Test Configuration" +#~ msgstr "Configuratie testen" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "OIDC Configuration" +#~ msgstr "OIDC-configuratie" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Auth Method" +#~ msgstr "Authenticatiemethode" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Issuer" +#~ msgstr "Uitgever" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "Not configured" +#~ msgstr "Niet geconfigureerd" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "Client ID" +#~ msgstr "Klant-ID" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Client Secret" +#~ msgstr "Klantgeheim" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Set" +#~ msgstr "Set" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "Not set" +#~ msgstr "Niet ingesteld" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "Omleidings-URI" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "Automatisch gegenereerd" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Scopes" +#~ msgstr "Bereik" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "Claimtoewijzing" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "Gebruikersnaamclaim" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Email Claim" +#~ msgstr "E-mailclaim" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Full Name Claim" +#~ msgstr "Volledige naamclaim" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "Groups Claim" +#~ msgstr "Groepenclaim" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Admin Group" +#~ msgstr "Beheerdersgroep" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "Admin Emails" +#~ msgstr "E-mails van beheerders" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "Post-Logout URI" +#~ msgstr "URI na uitloggen" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "Klaar" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Provider Metadata" +#~ msgstr "Metagegevens van de aanbieder" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "TimeTracker-helpcentrum" +#~ msgid "Error loading metadata:" +#~ msgstr "Fout bij het laden van metagegevens:" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Discovery endpoint:" +#~ msgstr "Discovery-eindpunt:" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Thuis" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Metagegevens van de provider zijn geladen" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "Paginering van mijn taken" +#~ msgid "Endpoints" +#~ msgstr "Eindpunten" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "Authorization" +#~ msgstr "Autorisatie" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Token" +#~ msgstr "Token" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Telefoongesprek" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Bericht" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Richting" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "Uitgaand" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "Inkomend" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Onderwerp" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Gepland" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Vervolgdatum" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Inhoud/Notities" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Communicatie opslaan" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Voornaam" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Achternaam" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "Mobiel" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "Afdeling" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Contact" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Facturering" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Technisch" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Instellen als primair contact" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Labels" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Contactpersoon opslaan" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Primair instellen" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "Geen contacten gevonden" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Eerste contactpersoon toevoegen" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Primaire contactpersoon" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Communicatie Geschiedenis" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Communicatie toevoegen" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "Geen communicatie opgenomen" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "UserInfo" +#~ msgstr "Gebruikersinfo" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "Activeren" +#~ msgid "End Session" +#~ msgstr "Einde sessie" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "JWKS URI" +#~ msgstr "JWKS-URI" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Dealnaam" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Selecteer Klant" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Selecteer Contactpersoon" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Fase" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Dealwaarde" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Winstwaarschijnlijkheid" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Verwachte sluitingsdatum" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Gerelateerd citaat" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Selecteer Offerte" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Aanbieding opslaan" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Won" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Kwijt" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Alle fasen" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Waarde" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Waarschijnlijkheid" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Verwacht dichtbij" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "Geen aanbiedingen gevonden" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Maak een eerste deal" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "Supported Features" +#~ msgstr "Ondersteunde functies" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "Response Types" +#~ msgstr "Reactietypen" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "Soorten subsidies" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "Auth Methods" +#~ msgstr "Authenticatiemethoden" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "Claims" +#~ msgstr "Claims" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Metagegevens van de provider zijn niet" +#~ " geladen. Klik op \"Testconfiguratie\" om" +#~ " op te halen." -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Gerelateerd project" +#~ msgid "Email" +#~ msgstr "E-mail" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Full Name" +#~ msgstr "Volledige naam" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Role" +#~ msgstr "Rol" -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "Last Login" +#~ msgstr "Laatste login" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "Doelgeschiedenis" +#~ msgid "OIDC Subject" +#~ msgstr "OIDC-onderwerp" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "Bekijk volledige details" +#~ msgid "Inactive" +#~ msgstr "Inactief" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Never" +#~ msgstr "Nooit" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Je werd genoemd" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Bekijk taak en antwoord" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Factuur" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Factuur achterstallig" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Bekijk factuur" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Citaat" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Goedkeuring van offerte afgewezen" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Bekijk offerte" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Goedkeuring aangevraagd" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Citaat beoordelen" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Offerte goedgekeurd" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "Citaat verlopen" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "Citaat verloopt binnenkort" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Citaat verzonden" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Taaktoewijzing" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Taak bekijken" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Testdetails" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "Uw wekelijkse samenvatting" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 Slecht verzoek" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Ongeldig verzoek" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "Het verzoek dat u heeft gedaan is ongeldig of bevat fouten. Dit kan te wijten zijn aan:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Ontbrekende of ongeldige formuliergegevens" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Onjuist opgemaakte verzoekparameters" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "U heeft geen toegang tot deze bron. Dit kan te wijten zijn aan:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Onvoldoende rechten" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "Niet ingelogd" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Beperkingen voor toegang tot bronnen" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Er is iets misgegaan aan onze kant. Probeer het later opnieuw." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Probeer het opnieuw" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Er is een fout opgetreden tijdens het verwerken van uw verzoek." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Pagina vernieuwen" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Ga naar Inloggen" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "bijvoorbeeld reizen, maaltijden, kantoorbenodigdheden" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "bijvoorbeeld REIZEN, MAALTIJDEN" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Korte beschrijving van deze categorie..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "bijvoorbeeld fa-vliegtuig, fa-gebruiksvoorwerpen" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "bijvoorbeeld 19.00 uur" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Categorie" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Basisinformatie" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "bijvoorbeeld vlucht naar Berlijn" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Aanvullende details over de kosten..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "Categorie" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "Betalingsgegevens" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "Locatie" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Betalingsgegevens" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "bijvoorbeeld Lufthansa" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "Aanvullende informatie" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Ontvangstbewijs/factuurnummer" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "bijvoorbeeld INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "bijvoorbeeld conferentie, klantbijeenkomst, urgent" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Aanvullende opmerkingen..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "Optioneel" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Filterkosten" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Verwijder geselecteerde uitgaven" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Wijzig de status voor geselecteerde uitgaven" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Geassocieerd met" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Kosten afwijzen" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Leg uit waarom deze uitgave wordt afgewezen..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "Weet u zeker dat u deze uitgave wilt verwijderen?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Kosten verwijderen" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Er zijn nog geen gebruikers ingelogd via OIDC." -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Gegevens importeren/exporteren" +#~ msgid "Environment Variables Reference" +#~ msgstr "Referentie voor omgevingsvariabelen" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Importeren/exporteren" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Configureer OIDC met behulp van deze omgevingsvariabelen:" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "Importeer gegevens van andere tijdregistratiesystemen of exporteer uw gegevens voor AVG-compliance en back-ups" +#~ msgid "Variable" +#~ msgstr "Variabel" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Gegevens importeren" +#~ msgid "Description" +#~ msgstr "Beschrijving" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "Example" +#~ msgstr "Voorbeeld" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Importeer tijdgegevens uit een CSV-bestand" +#~ msgid "Authentication method" +#~ msgstr "Authenticatiemethode" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Kies CSV-bestand" +#~ msgid "OIDC provider issuer URL" +#~ msgstr "URL van de uitgever van de OIDC-provider" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Sjabloon downloaden" +#~ msgid "Client ID from OIDC provider" +#~ msgstr "Client-ID van OIDC-provider" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Clientgeheim van OIDC-provider" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "Terugbel-URL (optioneel, automatisch gegenereerd)" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Requested scopes" +#~ msgstr "Gevraagde bereiken" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Claim containing username" +#~ msgstr "Claim met gebruikersnaam" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Claim containing email" +#~ msgstr "Claim met e-mail" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Claim containing full name" +#~ msgstr "Claim met volledige naam" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Claim containing groups" +#~ msgstr "Claim die groepen bevat" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Importeren uit Toggl-track" +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Groepsnaam voor beheerdersrol (optioneel)" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Importeer tijdgegevens uit Toggl Track" +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "Door komma's gescheiden beheerders-e-mailadressen (optioneel)" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Importeren vanuit Toggl" +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Importeren uit oogst" +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Importeer tijdgegevens uit Harvest" +#~ msgid "Basic Config" +#~ msgstr "" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Herstellen vanuit back-up" +#~ msgid "Test Connection" +#~ msgstr "" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Geschiedenis importeren" +#~ msgid "OIDC Issuer URL" +#~ msgstr "" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Gegevens exporteren" +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Volledige gegevensexport (AVG)" +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Exporteer al uw persoonlijke gegevens" +#~ msgid "Enter client secret" +#~ msgstr "" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Exporteren als JSON" +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Exporteren als ZIP" +#~ msgid "Authentication Method" +#~ msgstr "Authenticatiemethode" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Gefilterde export" +#~ msgid "OIDC Only" +#~ msgstr "" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Exporteer specifieke gegevens met filters" +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Exporteren met filters" +#~ msgid "Both" +#~ msgstr "" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "SSO and local password authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "Step 2: Test Connection" +#~ msgstr "" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Maak een volledige databaseback-up" +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Geschiedenis exporteren" +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "API-token" +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "Werkruimte-ID" +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Importeren" +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "Account-ID" +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" + +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" + +#~ msgid "Generate Configuration" +#~ msgstr "" + +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" + +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" + +#~ msgid "OIDC User Details" +#~ msgstr "OIDC-gebruikersgegevens" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Profiel en OIDC-identiteit voor deze gebruiker" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "Terug naar OIDC-foutopsporing" + +#~ msgid "User Profile" +#~ msgstr "Gebruikersprofiel" + +#~ msgid "Active" +#~ msgstr "Actief" + +#~ msgid "Preferred Language" +#~ msgstr "Voorkeurstaal" + +#~ msgid "Created At" +#~ msgstr "Gemaakt op" + +#~ msgid "OIDC Information" +#~ msgstr "OIDC-informatie" + +#~ msgid "OIDC Issuer" +#~ msgstr "OIDC-uitgever" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "OIDC-onderwerp (sub)" + +#~ msgid "Local" +#~ msgstr "Lokaal" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Deze gebruiker is aangemaakt of " +#~ "gekoppeld via OIDC. De uitgever en " +#~ "het onderwerp worden gebruikt om de " +#~ "gebruiker uniek te identificeren tijdens " +#~ "inlogsessies." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Deze gebruiker heeft geen OIDC-" +#~ "informatie. Ze zijn mogelijk handmatig " +#~ "gemaakt of via zelfregistratie zonder " +#~ "OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "Activiteitsstatistieken" + +#~ msgid "Time Entries" +#~ msgstr "Tijdinvoer" + +#~ msgid "None" +#~ msgstr "Geen" + +#~ msgid "Active Timer" +#~ msgstr "Actieve timer" + +#~ msgid "Tasks Created" +#~ msgstr "Taken gemaakt" + +#~ msgid "Edit User" +#~ msgstr "Gebruiker bewerken" + +#~ msgid "View All Users" +#~ msgstr "Bekijk alle gebruikers" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "PDF-offerteontwerper" + +#~ msgid "Visual Invoice Designer" +#~ msgstr "Visuele offerteontwerper" + +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "Versleep elementen om uw offerte-indeling te ontwerpen" + +#~ msgid "How to use:" +#~ msgstr "Hoe te gebruiken:" + +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Klik op elementen in de linkerzijbalk" +#~ " om ze aan het canvas toe te" +#~ " voegen. Klik op elementen om ze " +#~ "te selecteren en aan te passen in" +#~ " het eigenschappenvenster. Gebruik de " +#~ "uitlijningshulpmiddelen en sneltoetsen voor " +#~ "sneller bewerken." + +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Sneltoetsen:" + +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" + +#~ msgid "Items Table:" +#~ msgstr "Tabel met offerte-items" + +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" + +#~ msgid "Expenses Table:" +#~ msgstr "Kosten Subtotaal" + +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" + +#~ msgid "Saving:" +#~ msgstr "Besparing..." + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" + +#~ msgid "Preview:" +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" + +#~ msgid "See" +#~ msgstr "Set" + +#~ msgid "for full documentation." +#~ msgstr "Documentatie" + +#~ msgid "Clear Canvas" +#~ msgstr "Helder canvas" + +#~ msgid "Generate Preview" +#~ msgstr "Voorbeeld genereren" + +#~ msgid "Save Design" +#~ msgstr "Ontwerp opslaan" + +#~ msgid "View Code" +#~ msgstr "Bekijk code" + +#~ msgid "Export JSON" +#~ msgstr "" + +#~ msgid "Import JSON" +#~ msgstr "" + +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Uitlijnen op raster (10px)" + +#~ msgid "Toolbox" +#~ msgstr "Gereedschapskist" + +#~ msgid "Search elements & variables..." +#~ msgstr "Zoekelementen en variabelen..." + +#~ msgid "Elements" +#~ msgstr "Elementen" + +#~ msgid "Variables" +#~ msgstr "Variabelen" + +#~ msgid "Basic Elements" +#~ msgstr "Basiselementen" + +#~ msgid "Custom Text" +#~ msgstr "Aangepaste tekst" + +#~ msgid "Text" +#~ msgstr "Tekst" + +#~ msgid "Heading" +#~ msgstr "Rubriek" + +#~ msgid "Line" +#~ msgstr "Lijn" + +#~ msgid "Rectangle" +#~ msgstr "Rechthoek" + +#~ msgid "Circle" +#~ msgstr "Cirkel" + +#~ msgid "Company Info" +#~ msgstr "Bedrijfsinformatie" + +#~ msgid "Company Logo" +#~ msgstr "Bedrijfslogo" + +#~ msgid "Company Name" +#~ msgstr "Bedrijfsnaam" + +#~ msgid "Company Details" +#~ msgstr "Bedrijfsgegevens" + +#~ msgid "Address" +#~ msgstr "Adres" + +#~ msgid "Phone" +#~ msgstr "Telefoon" + +#~ msgid "Website" +#~ msgstr "Website" + +#~ msgid "Tax ID" +#~ msgstr "Belastingnummer" + +#~ msgid "Invoice Data" +#~ msgstr "Factuurgegevens" + +#~ msgid "Invoice Number" +#~ msgstr "Factuurnummer" + +#~ msgid "Invoice Date" +#~ msgstr "Gefactureerd" + +#~ msgid "Due Date" +#~ msgstr "Deadline" + +#~ msgid "Client Info" +#~ msgstr "Klantinformatie" + +#~ msgid "Client Name" +#~ msgstr "Klantnaam" + +#~ msgid "Client Address" +#~ msgstr "Klantadres" + +#~ msgid "Items Table" +#~ msgstr "Tabel met offerte-items" + +#~ msgid "Expenses Table" +#~ msgstr "Kosten Subtotaal" + +#~ msgid "Subtotal" +#~ msgstr "Subtotaal" + +#~ msgid "Tax" +#~ msgstr "Belasting" + +#~ msgid "Total Amount" +#~ msgstr "Totaal bedrag" + +#~ msgid "Terms" +#~ msgstr "Voorwaarden" + +#~ msgid "Payment & Project" +#~ msgstr "Betaling & Project" + +#~ msgid "Payment Date" +#~ msgstr "Betalingsdatum" + +#~ msgid "Payment Method" +#~ msgstr "Betaalmethode" + +#~ msgid "Payment Status" +#~ msgstr "Betalingsstatus" + +#~ msgid "Amount Paid" +#~ msgstr "Bedrag betaald" + +#~ msgid "Project Name" +#~ msgstr "Projectnaam" + +#~ msgid "Client Email" +#~ msgstr "E-mailadres van klant" + +#~ msgid "Client Phone" +#~ msgstr "Telefoon van klant" + +#~ msgid "QR Code" +#~ msgstr "QR-code" + +#~ msgid "Barcode" +#~ msgstr "Streepjescode" + +#~ msgid "Page Number" +#~ msgstr "Paginanummer" + +#~ msgid "Current Date" +#~ msgstr "Huidige datum" + +#~ msgid "Watermark" +#~ msgstr "Watermerk" + +#~ msgid "Bank Info" +#~ msgstr "Bankgegevens" + +#~ msgid "Currency" +#~ msgstr "Munteenheid" + +#~ msgid "Decorative Image" +#~ msgstr "" + +#~ msgid "Invoice Fields" +#~ msgstr "Factuurartikelen" + +#~ msgid "Invoice number" +#~ msgstr "Factuurnummer" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Offertestatus (concept/verzonden/betaald/achterstallig)" + +#~ msgid "Issue date" +#~ msgstr "Datum van uitgifte" + +#~ msgid "Due date" +#~ msgstr "Deadline" + +#~ msgid "Subtotal amount" +#~ msgstr "Subtotaalbedrag" + +#~ msgid "Tax rate (%)" +#~ msgstr "Belastingtarief (%)" + +#~ msgid "Tax amount" +#~ msgstr "Belastingbedrag" + +#~ msgid "Total amount" +#~ msgstr "Totaal bedrag" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Valutacode (EUR, USD, enz.)" + +#~ msgid "Invoice notes" +#~ msgstr "Factuurartikelen" + +#~ msgid "Terms & conditions" +#~ msgstr "Algemene voorwaarden" + +#~ msgid "Client Fields" +#~ msgstr "Klantvelden" + +#~ msgid "Client company name" +#~ msgstr "Bedrijfsnaam van de klant" + +#~ msgid "Client email address" +#~ msgstr "E-mailadres van de klant" + +#~ msgid "Client full address" +#~ msgstr "Volledig adres van de klant" + +#~ msgid "Client contact person" +#~ msgstr "Contactpersoon klant" + +#~ msgid "Client phone number" +#~ msgstr "Telefoonnummer van klant" + +#~ msgid "Payment Fields" +#~ msgstr "Betalingsvelden" + +#~ msgid "Payment status" +#~ msgstr "Betalingsstatus" + +#~ msgid "Payment date" +#~ msgstr "Betalingsdatum" + +#~ msgid "Payment method" +#~ msgstr "Betaalmethode" + +#~ msgid "Payment reference number" +#~ msgstr "Betalingsreferentienummer" + +#~ msgid "Amount paid" +#~ msgstr "Bedrag betaald" + +#~ msgid "Outstanding amount" +#~ msgstr "Openstaand bedrag" + +#~ msgid "Payment notes" +#~ msgstr "Betalingsnotities" + +#~ msgid "Project Fields" +#~ msgstr "Projectvelden" + +#~ msgid "Project name" +#~ msgstr "Projectnaam" + +#~ msgid "Project code" +#~ msgstr "Projectcode" + +#~ msgid "Project description" +#~ msgstr "Projectbeschrijving" + +#~ msgid "Project billing reference" +#~ msgstr "Factureringsreferentie voor het project" + +#~ msgid "Company/Settings Fields" +#~ msgstr "Bedrijf/instellingenvelden" + +#~ msgid "Your company name" +#~ msgstr "Uw bedrijfsnaam" + +#~ msgid "Your company address" +#~ msgstr "Uw bedrijfsadres" + +#~ msgid "Your company email" +#~ msgstr "Uw bedrijfse-mailadres" + +#~ msgid "Your company phone" +#~ msgstr "Uw bedrijfstelefoon" + +#~ msgid "Your company website" +#~ msgstr "Uw bedrijfswebsite" + +#~ msgid "Your tax ID number" +#~ msgstr "Uw belastingnummer" + +#~ msgid "Your bank account info" +#~ msgstr "Uw bankrekeninggegevens" + +#~ msgid "Default invoice terms" +#~ msgstr "Standaard factuurvoorwaarden" + +#~ msgid "Default invoice notes" +#~ msgstr "Standaard factuurnotities" + +#~ msgid "Date/Time Fields" +#~ msgstr "Datum-/tijdvelden" + +#~ msgid "Current date" +#~ msgstr "Huidige datum" + +#~ msgid "Invoice creation date" +#~ msgstr "Aanmaakdatum offerte" + +#~ msgid "Invoice last update date" +#~ msgstr "Citaat laatste updatedatum" + +#~ msgid "Invoice Items Loop" +#~ msgstr "Factuurartikelen" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" + +#~ msgid "Time-based items only" +#~ msgstr "Op tijd gebaseerde diensten en uurwerk" + +#~ msgid "Item description" +#~ msgstr "Artikelbeschrijving" + +#~ msgid "Item quantity" +#~ msgstr "Artikelhoeveelheid" + +#~ msgid "Item unit price" +#~ msgstr "Eenheidsprijs van artikel" + +#~ msgid "Item total amount" +#~ msgstr "Totaalbedrag artikel" + +#~ msgid "End loop" +#~ msgstr "Einde lus" + +#~ msgid "Extra Goods Loop" +#~ msgstr "Extra goederen" + +#~ msgid "Loop through extra goods only" +#~ msgstr "Project Extra goederen" + +#~ msgid "Good name" +#~ msgstr "Rolnaam" + +#~ msgid "Good total amount" +#~ msgstr "Totaal bedrag" + +#~ msgid "Design Canvas" +#~ msgstr "Ontwerp canvas" + +#~ msgid "Page Size:" +#~ msgstr "Paginagrootte:" + +#~ msgid "Zoom In" +#~ msgstr "Inzoomen" + +#~ msgid "Zoom Out" +#~ msgstr "Uitzoomen" + +#~ msgid "Delete Selected" +#~ msgstr "Geselecteerde verwijderen" + +#~ msgid "Properties" +#~ msgstr "Eigenschappen" + +#~ msgid "Warnings" +#~ msgstr "Waarschuwing" + +#~ msgid "Refresh warnings" +#~ msgstr "Pagina vernieuwen" + +#~ msgid "No warnings" +#~ msgstr "Waarschuwing" + +#~ msgid "Template Settings" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "Datumnotatie" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "Selecteer een element om de eigenschappen ervan te bewerken" + +#~ msgid "PDF Preview" +#~ msgstr "PDF-voorbeeld" + +#~ msgid "Page Size" +#~ msgstr "" + +#~ msgid "Refresh Preview" +#~ msgstr "" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "" + +#~ msgid "Close Preview" +#~ msgstr "" + +#~ msgid "Zoom Level" +#~ msgstr "" + +#~ msgid "Reset Zoom" +#~ msgstr "" + +#~ msgid "Fit to Width" +#~ msgstr "" + +#~ msgid "Fit Width" +#~ msgstr "" + +#~ msgid "Fit to Height" +#~ msgstr "" + +#~ msgid "Fit Height" +#~ msgstr "" + +#~ msgid "Actual Size" +#~ msgstr "" + +#~ msgid "Generating preview..." +#~ msgstr "" + +#~ msgid "Preview Error" +#~ msgstr "" + +#~ msgid "Retry" +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "Gegenereerde code" + +#~ msgid "Change Image" +#~ msgstr "" + +#~ msgid "Upload Image" +#~ msgstr "" + +#~ msgid "Remove Image" +#~ msgstr "" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "" + +#~ msgid "Uploading..." +#~ msgstr "" + +#~ msgid "Error: Image update function not found" +#~ msgstr "" + +#~ msgid "Failed to upload image" +#~ msgstr "" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "Alle elementen wissen?" + +#~ msgid "Clear" +#~ msgstr "Duidelijk" + +#~ msgid "Exit Fullscreen" +#~ msgstr "" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "Terugzetten naar standaardwaarden?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "PDF-indeling opnieuw instellen" + +#~ msgid "Error importing template" +#~ msgstr "" + +#~ msgid "PDF Quote Designer" +#~ msgstr "PDF-offerteontwerper" + +#~ msgid "Visual Quote Designer" +#~ msgstr "Visuele offerteontwerper" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "Versleep elementen om uw offerte-indeling te ontwerpen" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Tabel met offerte-items" + +#~ msgid "Quote Items Table:" +#~ msgstr "Tabel met offerte-items" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" + +#~ msgid "Quote Data" +#~ msgstr "Citaatgegevens" + +#~ msgid "Quote Number" +#~ msgstr "Citaatnummer" + +#~ msgid "Quote Date" +#~ msgstr "Offertedatum" + +#~ msgid "Quote Items Table" +#~ msgstr "Tabel met offerte-items" + +#~ msgid "Quote Fields" +#~ msgstr "Citaatvelden" + +#~ msgid "Quote number" +#~ msgstr "Offertenummer" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Offertestatus (concept/verzonden/betaald/achterstallig)" + +#~ msgid "Quote notes" +#~ msgstr "Citaat notities" + +#~ msgid "Quote status" +#~ msgstr "Citaatstatus" + +#~ msgid "Quote accepted date" +#~ msgstr "Offerte geaccepteerd datum" + +#~ msgid "Quote creation date" +#~ msgstr "Aanmaakdatum offerte" + +#~ msgid "Quote last update date" +#~ msgstr "Citaat laatste updatedatum" + +#~ msgid "Quote Items Loop" +#~ msgstr "Citeeritems lus" + +#~ msgid "Loop through invoice items" +#~ msgstr "Loop door factuuritems" + +#~ msgid "Align Left" +#~ msgstr "Links uitlijnen" + +#~ msgid "Center Horizontally" +#~ msgstr "Horizontaal centreren" + +#~ msgid "Align Right" +#~ msgstr "Rechts uitlijnen" + +#~ msgid "Align Top" +#~ msgstr "Boven uitlijnen" + +#~ msgid "Center Vertically" +#~ msgstr "Centreer verticaal" + +#~ msgid "Align Bottom" +#~ msgstr "Onderkant uitlijnen" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "" + +#~ msgid "Email Mappings" +#~ msgstr "" + +#~ msgid "Add Mapping" +#~ msgstr "" + +#~ msgid "Salesman Initial" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "E-mailadres" + +#~ msgid "Pattern/Domain" +#~ msgstr "" + +#~ msgid "Add Email Mapping" +#~ msgstr "" + +#~ msgid "1-20 letters only" +#~ msgstr "" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" + +#~ msgid "Direct Email Address" +#~ msgstr "" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" + +#~ msgid "Edit Email Mapping" +#~ msgstr "" + +#~ msgid "Error saving mapping" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" + +#~ msgid "Error deleting mapping" +#~ msgstr "" + +#~ msgid "Time Entry Requirements" +#~ msgstr "Sjablonen voor tijdinvoer" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" + +#~ msgid "Require description when logging time" +#~ msgstr "" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" + +#~ msgid "Support visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "Sleutel" + +#~ msgid "— key sent by email." +#~ msgstr "E-mail verzenden" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "Sleutel" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "Code, naam, e-mailadres" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "Bedrijfsbranding" + +#~ msgid "Invoice Defaults" +#~ msgstr "Standaardinstellingen voor facturen" + +#~ msgid "Backup Settings" +#~ msgstr "Back-upinstellingen" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "Ingeschakeld" + +#~ msgid "Host" +#~ msgstr "Kwijt" + +#~ msgid "SSL" +#~ msgstr "Gebruik SSL" + +#~ msgid "TLS" +#~ msgstr "Gebruik TLS" + +#~ msgid "on" +#~ msgstr "op" + +#~ msgid "off" +#~ msgstr "van" + +#~ msgid "User DN" +#~ msgstr "Gebruikersmenu" + +#~ msgid "User login attribute" +#~ msgstr "Snellere laadtijden" + +#~ msgid "Test LDAP Connection" +#~ msgstr "Algemene voorwaarden" + +#~ msgid "Export Settings" +#~ msgstr "Instellingen exporteren" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "Aanpassing" + +#~ msgid "Transfer" +#~ msgstr "Overdracht" + +#~ msgid "Sale" +#~ msgstr "Verkoop" + +#~ msgid "Rent" +#~ msgstr "Verhuur" + +#~ msgid "Purchase" +#~ msgstr "Aankoop" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "Beschikbaar" + +#~ msgid "Use environment default" +#~ msgstr "Standaardinstellingen voor facturen" + +#~ msgid "currently" +#~ msgstr "Munteenheid" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "Afbeeldings-URL" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "Code" + +#~ msgid "Hosted API key" +#~ msgstr "API-token maken" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "Laat dit leeg om het huidige wachtwoord te behouden" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "Time-out (seconden)" + +#~ msgid "Context limit" +#~ msgstr "Inhoudstype" + +#~ msgid "System prompt" +#~ msgstr "Systeemrol" + +#~ msgid "Test AI connection" +#~ msgstr "Algemene voorwaarden" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Privacy en analyse" + +#~ msgid "Save Settings" +#~ msgstr "Instellingen opslaan" + +#~ msgid "Upload New Logo" +#~ msgstr "Nieuw logo uploaden" + +#~ msgid "Logo Preview" +#~ msgstr "Logovoorbeeld" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Weet u zeker dat u het bedrijfslogo wilt verwijderen?" + +#~ msgid "Remove Logo" +#~ msgstr "Logo verwijderen" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "Vraag goedkeuring aan" + +#~ msgid "Testing connection..." +#~ msgstr "Configuratie testen" + +#~ msgid "Connection failed." +#~ msgstr "Operatie mislukt" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "Operatie mislukt" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Telemetrie- en analysedashboard" + +#~ msgid "Admin → Settings" +#~ msgstr "Beheerder → Instellingen" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "Laat dit leeg om het huidige wachtwoord te behouden" + +#~ msgid "Client Portal Access" +#~ msgstr "Toegang tot klantportal" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "Toegewezen aan" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "Beheerderstoegang" + +#~ msgid "Migrate to new role system" +#~ msgstr "Migreren naar nieuw rollensysteem" + +#~ msgid "Migrate" +#~ msgstr "Migreren" + +#~ msgid "Roles" +#~ msgstr "Rollen" + +#~ msgid "No users found." +#~ msgstr "Geen gebruikers gevonden." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "Kan gebruiker \"{name}\" niet verwijderen " +#~ "omdat deze {count} tijdinvoer heeft. " +#~ "Gebruikers met bestaande tijdinvoer kunnen " +#~ "niet worden verwijderd." + +#~ msgid "Cannot Delete User" +#~ msgstr "Kan gebruiker niet verwijderen" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Weet u zeker dat u gebruiker " +#~ "\"{name}\" wilt verwijderen? Deze actie " +#~ "kan niet ongedaan worden gemaakt." + +#~ msgid "Delete User" +#~ msgstr "Gebruiker verwijderen" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "Label" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "Optioneel" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "Instellen als standaardsjabloon" + +#~ msgid "HTML Template" +#~ msgstr "HTML-sjabloon" + +#~ msgid "Custom Message" +#~ msgstr "Aangepast bericht" + +#~ msgid "More Variables" +#~ msgstr "Meer variabelen" + +#~ msgid "Create Template" +#~ msgstr "Sjabloon maken" + +#~ msgid "Available Variables" +#~ msgstr "Beschikbare variabelen" + +#~ msgid "Invoice Variables" +#~ msgstr "Factuurvariabelen" + +#~ msgid "Other Variables" +#~ msgstr "Andere variabelen" + +#~ msgid "Send test email" +#~ msgstr "Test-e-mail verzenden" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "E-mailadres van ontvanger" + +#~ msgid "Invoice ID" +#~ msgstr "Gefactureerd" + +#~ msgid "Update Template" +#~ msgstr "Sjabloon bijwerken" + +#~ msgid "Failed to send test email." +#~ msgstr "Test-e-mail verzenden" + +#~ msgid "No email templates found." +#~ msgstr "Geen e-mailsjablonen gevonden." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "Maak uw eerste e-mailsjabloon om factuur-e-mails aan te passen." + +#~ msgid "Create Email Template" +#~ msgstr "E-mailsjabloon maken" + +#~ msgid "Delete Email Template" +#~ msgstr "E-mailsjabloon verwijderen" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "Weet u zeker dat u wilt verwijderen" + +#~ msgid "This action cannot be undone." +#~ msgstr "Deze actie kan niet ongedaan worden gemaakt." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "Sjablooninformatie" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "Icon" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "Naam" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "Systeemmachtigingen" + +#~ msgid "All available permissions in the system" +#~ msgstr "Alle beschikbare machtigingen in het systeem" + +#~ msgid "Back to Roles" +#~ msgstr "Terug naar Rollen" + +#~ msgid "permissions" +#~ msgstr "machtigingen" + +#~ msgid "No description available" +#~ msgstr "Geen beschrijving beschikbaar" + +#~ msgid "About Permissions" +#~ msgstr "Over machtigingen" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Machtigingen bepalen welke acties gebruikers" +#~ " in het systeem kunnen uitvoeren. " +#~ "Deze machtigingen worden toegewezen aan " +#~ "rollen en rollen worden toegewezen aan" +#~ " gebruikers. Dit zorgt voor een " +#~ "flexibel en gedetailleerd toegangscontrolesysteem." + +#~ msgid "Edit Role" +#~ msgstr "Rol bewerken" + +#~ msgid "Create New Role" +#~ msgstr "Nieuwe rol maken" + +#~ msgid "Role Name" +#~ msgstr "Rolnaam" + +#~ msgid "A unique name for this role" +#~ msgstr "Een unieke naam voor deze rol" + +#~ msgid "Optional description of this role" +#~ msgstr "Optionele beschrijving van deze rol" + +#~ msgid "Permissions" +#~ msgstr "Machtigingen" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Selecteer de machtigingen die deze rol moet hebben:" + +#~ msgid "Toggle All" +#~ msgstr "Schakel Alles in" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "Rol bijwerken" + +#~ msgid "Create Role" +#~ msgstr "Rol creëren" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Beheer rollen en hun machtigingen" + +#~ msgid "View Permissions" +#~ msgstr "Bekijk machtigingen" + +#~ msgid "Total Roles" +#~ msgstr "Totaal aantal rollen" + +#~ msgid "System Roles" +#~ msgstr "Systeemrollen" + +#~ msgid "Custom Roles" +#~ msgstr "Aangepaste rollen" + +#~ msgid "Assigned Users" +#~ msgstr "Toegewezen gebruikers" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Default role" +#~ msgstr "Standaardrol" + +#~ msgid "user" +#~ msgstr "gebruiker" + +#~ msgid "No users" +#~ msgstr "Geen gebruikers" + +#~ msgid "Custom" +#~ msgstr "Aangepast" + +#~ msgid "View" +#~ msgstr "Weergave" + +#~ msgid "Permissions for" +#~ msgstr "Machtigingen voor" + +#~ msgid "No permissions assigned." +#~ msgstr "Geen rechten toegewezen." + +#~ msgid "No roles found." +#~ msgstr "Geen rollen gevonden." + +#~ msgid "About Roles & Permissions" +#~ msgstr "Over rollen en machtigingen" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "Rollen zijn verzamelingen machtigingen die " +#~ "aan gebruikers kunnen worden toegewezen. " +#~ "Systeemrollen zijn vooraf gedefinieerd en " +#~ "kunnen niet worden verwijderd of " +#~ "hernoemd, maar aangepaste rollen kunnen " +#~ "voor uw specifieke behoeften worden " +#~ "gemaakt." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "Weet u zeker dat u de rol wilt verwijderen?" + +#~ msgid "Delete Role" +#~ msgstr "Rol verwijderen" + +#~ msgid "No description" +#~ msgstr "Geen beschrijving" + +#~ msgid "Role Information" +#~ msgstr "Rolinformatie" + +#~ msgid "System Role" +#~ msgstr "Systeemrol" + +#~ msgid "Custom Role" +#~ msgstr "Aangepaste rol" + +#~ msgid "Total Permissions" +#~ msgstr "Totaal aantal machtigingen" + +#~ msgid "Created" +#~ msgstr "Gemaakt" + +#~ msgid "Users with this Role" +#~ msgstr "Gebruikers met deze rol" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Er zijn nog geen gebruikers toegewezen aan deze rol." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "Aan deze rol zijn geen machtigingen toegewezen." + +#~ msgid "Back to User" +#~ msgstr "Terug naar Gebruiker" + +#~ msgid "Manage Roles for" +#~ msgstr "Beheer rollen voor" + +#~ msgid "Assign Roles" +#~ msgstr "Wijs rollen toe" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Selecteer de rollen die deze gebruiker" +#~ " moet hebben. Gebruikers nemen alle " +#~ "machtigingen over van de aan hen " +#~ "toegewezen rollen." + +#~ msgid "Update Roles" +#~ msgstr "Rollen bijwerken" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Huidige effectieve machtigingen" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "Dit zijn alle rechten die de gebruiker momenteel heeft via zijn rollen:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "Geen machtigingen (rollen toewijzen om machtigingen te verlenen)" + +#~ msgid "Create Webhook" +#~ msgstr "Maak een webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Webhook bewerken" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Configureer webhook voor integraties" + +#~ msgid "Webhook URL" +#~ msgstr "Webhook-URL" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "De URL waar webhookgebeurtenissen naartoe worden verzonden" + +#~ msgid "Events" +#~ msgstr "Evenementen" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Selecteer welke gebeurtenissen deze webhook moeten activeren" + +#~ msgid "HTTP Method" +#~ msgstr "HTTP-methode" + +#~ msgid "Content Type" +#~ msgstr "Inhoudstype" + +#~ msgid "Max Retries" +#~ msgstr "Maximaal aantal nieuwe pogingen" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Vertraging opnieuw proberen (seconden)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Time-out (seconden)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Genereer geheim" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "" +#~ "Waarschuwing: als u het geheim opnieuw" +#~ " genereert, wordt het huidige geheim " +#~ "ongeldig" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Beheer webhook-integraties" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "Statistics" +#~ msgstr "Statistieken" + +#~ msgid "Total" +#~ msgstr "Totaal" + +#~ msgid "No webhooks configured" +#~ msgstr "Geen webhooks geconfigureerd" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Maak uw eerste webhook" + +#~ msgid "Webhook details" +#~ msgstr "Webhook-details" + +#~ msgid "Test" +#~ msgstr "Test" + +#~ msgid "Secret" +#~ msgstr "Geheim" + +#~ msgid "(truncated)" +#~ msgstr "(afgeknot)" + +#~ msgid "Total Deliveries" +#~ msgstr "Totaal aantal leveringen" + +#~ msgid "Successful" +#~ msgstr "Succesvol" + +#~ msgid "Last Delivery" +#~ msgstr "Laatste levering" + +#~ msgid "Recent Deliveries" +#~ msgstr "Recente leveringen" + +#~ msgid "Event" +#~ msgstr "Evenement" + +#~ msgid "Attempt" +#~ msgstr "Poging" + +#~ msgid "Response" +#~ msgstr "Antwoord" + +#~ msgid "Time" +#~ msgstr "Tijd" + +#~ msgid "Retrying" +#~ msgstr "Opnieuw proberen" + +#~ msgid "No deliveries yet" +#~ msgstr "Nog geen leveringen" + +#~ msgid "Send a test webhook event?" +#~ msgstr "Een testwebhookgebeurtenis verzenden?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "Testwebhook succesvol verzonden!" + +#~ msgid "Error:" +#~ msgstr "Fout:" + +#~ msgid "Unknown error" +#~ msgstr "Onbekende fout" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Fout bij verzenden van testwebhook:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Analytics-dashboard" + +#~ msgid "Last 7 days" +#~ msgstr "Laatste 7 dagen" + +#~ msgid "Last 30 days" +#~ msgstr "Laatste 30 dagen" + +#~ msgid "Last 90 days" +#~ msgstr "Laatste 90 dagen" + +#~ msgid "Last year" +#~ msgstr "Vorig jaar" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Exporteren als JSON" + +#~ msgid "Export Charts" +#~ msgstr "CSV exporteren" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Belangrijke statistieken en inzichten over uw tijdregistratie" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Gem. dagelijkse uren" + +#~ msgid "Regular" +#~ msgstr "Opbrengst" + +#~ msgid "Overtime" +#~ msgstr "Tijd" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Trend van dagelijkse uren" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Factureerbaar versus niet-factureerbaar" + +#~ msgid "Weekly Trends" +#~ msgstr "Wekelijkse trends" + +#~ msgid "Hours Forecast" +#~ msgstr "uur ervoor" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Betalingen in de loop van de tijd" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Uren per tijdstip" + +#~ msgid "Project Efficiency" +#~ msgstr "Projectefficiëntie" + +#~ msgid "User Performance" +#~ msgstr "Gebruikersprestaties" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "Kan diagrammen niet laden. Probeer het opnieuw." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "Kan diagrammen niet vernieuwen. Probeer het opnieuw." + +#~ msgid "Hour of Day" +#~ msgstr "Uur van de dag" + +#~ msgid "Revenue" +#~ msgstr "Winst" + +#~ msgid "Forecast" +#~ msgstr "Opnieuw instellen" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "Exporteren" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Belangrijke statistieken en bruikbare inzichten" + +#~ msgid "vs previous period" +#~ msgstr "versus vorige periode" + +#~ msgid "of total" +#~ msgstr "van totaal" + +#~ msgid "Potential Revenue" +#~ msgstr "Potentiële inkomsten" + +#~ msgid "Avg rate:" +#~ msgstr "Gemiddeld tarief:" + +#~ msgid "Trend" +#~ msgstr "Trend" + +#~ msgid "active projects" +#~ msgstr "actieve projecten" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Inzichten en aanbevelingen" + +#~ msgid "Cumulative" +#~ msgstr "Cumulatief" + +#~ msgid "Billable Distribution" +#~ msgstr "Factureerbare distributie" + +#~ msgid "Task Status Overview" +#~ msgstr "Overzicht taakstatus" + +#~ msgid "Tasks Completed" +#~ msgstr "Taken voltooid" + +#~ msgid "In Progress" +#~ msgstr "In uitvoering" + +#~ msgid "To Do" +#~ msgstr "Te doen" + +#~ msgid "Revenue by Project" +#~ msgstr "Opbrengsten per project" + +#~ msgid "Payments Over Time" +#~ msgstr "Betalingen in de loop van de tijd" + +#~ msgid "Payment Methods" +#~ msgstr "Betaalmethoden" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Inkomsten versus betalingen" + +#~ msgid "Collection Rate" +#~ msgstr "Ophaalpercentage" + +#~ msgid "Project Completion Rate" +#~ msgstr "Voltooiingspercentage van projecten" + +#~ msgid "Billable" +#~ msgstr "Factureerbaar" + +#~ msgid "Non-Billable" +#~ msgstr "Niet-factureerbaar" + +#~ msgid "Completed" +#~ msgstr "Voltooid" + +#~ msgid "Cancelled" +#~ msgstr "Geannuleerd" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Voltooiingspercentage (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Overzicht mobiele inzichten" + +#~ msgid "Daily Avg" +#~ msgstr "Dagelijks Gem" + +#~ msgid "Daily Hours" +#~ msgstr "Dagelijkse uren" + +#~ msgid "Top Projects" +#~ msgstr "Topprojecten" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "Tijdinvoer" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "uur" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "Goedkeuren" + +#~ msgid "Reject" +#~ msgstr "Afwijzen" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "Goedgekeurd door" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "Reactie plaatsen" + +#~ msgid "Approval comment" +#~ msgstr "Reactie plaatsen" + +#~ msgid "Rejection reason" +#~ msgstr "Reden van afwijzing" + +#~ msgid "Track who changed what and when" +#~ msgstr "Houd bij wie wat en wanneer heeft gewijzigd" + +#~ msgid "Filters" +#~ msgstr "Filters" + +#~ msgid "Entity Type" +#~ msgstr "Entiteitstype" + +#~ msgid "All Types" +#~ msgstr "Alle soorten" + +#~ msgid "Entity ID" +#~ msgstr "Entiteits-ID" + +#~ msgid "All Users" +#~ msgstr "Alle gebruikers" + +#~ msgid "Action" +#~ msgstr "Actie" + +#~ msgid "All Actions" +#~ msgstr "Alle acties" + +#~ msgid "Updated" +#~ msgstr "Bijgewerkt" + +#~ msgid "Deleted" +#~ msgstr "Verwijderd" + +#~ msgid "Time Range" +#~ msgstr "Tijdbereik" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Timestamp" +#~ msgstr "Tijdstempel" + +#~ msgid "Entity" +#~ msgstr "Entiteit" + +#~ msgid "Field" +#~ msgstr "Veld" + +#~ msgid "Change" +#~ msgstr "Wijziging" + +#~ msgid "Reason" +#~ msgstr "Reden" + +#~ msgid "Change Information" +#~ msgstr "Informatie wijzigen" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "Vraag informatie aan" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "Beveiliging" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (ondernemingsauthenticatie)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "Wachtwoord moet minimaal 8 tekens lang zijn" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "Portaalwachtwoord" + +#~ msgid "Reset your password" +#~ msgstr "Stel uw wachtwoord in" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "Geen gebruikersnamen of e-mailadressen" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "Test-e-mail verzenden" + +#~ msgid "Back to sign in" +#~ msgstr "Terug naar beheerder" + +#~ msgid "Login" +#~ msgstr "Login" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Volg de tijd. Blijf georganiseerd." + +#~ msgid "Sign in to your account" +#~ msgstr "Meld u aan bij uw account" + +#~ msgid "Demo credentials" +#~ msgstr "Artikeldetails" + +#~ msgid "Forgot your password?" +#~ msgstr "Stel uw wachtwoord in" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "Authenticatiemethode" + +#~ msgid "Sign in" +#~ msgstr "Log in" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "Tip: Voer een nieuwe gebruikersnaam in om uw account aan te maken." + +#~ msgid "Or continue with" +#~ msgstr "Of ga verder met" + +#~ msgid "Single Sign-On" +#~ msgstr "Eenmalige aanmelding" + +#~ msgid "Edit Profile" +#~ msgstr "Profiel bewerken" + +#~ msgid "Member Since" +#~ msgstr "Lid sinds" + +#~ msgid "Reset password" +#~ msgstr "Wachtwoord instellen" + +#~ msgid "Choose a new password" +#~ msgstr "Wachtwoord instellen" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Stel een wachtwoord in voor uw klantportaalaccount" + +#~ msgid "New password" +#~ msgstr "Wachtwoord instellen" + +#~ msgid "At least 8 characters" +#~ msgstr "Wachtwoord moet minimaal 8 tekens lang zijn" + +#~ msgid "Confirm password" +#~ msgstr "Bevestig wachtwoord" + +#~ msgid "Repeat your new password" +#~ msgstr "Stel uw wachtwoord in" + +#~ msgid "Update password" +#~ msgstr "Wachtwoord instellen" + +#~ msgid "Enter authentication code" +#~ msgstr "Authenticatiemethode" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "Code" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "Toegang tot de klantportal is niet ingeschakeld voor uw account." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "Gehandicapt" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Gegenereerde code" + +#~ msgid "Enable 2FA" +#~ msgstr "Ingeschakeld" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Budgetwaarschuwingen en prognoses" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "Bewaken van projectbudgetten en voorspellen van voltooiing" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Niet-bevestigde waarschuwingen" + +#~ msgid "Critical Alerts" +#~ msgstr "Kritieke waarschuwingen" + +#~ msgid "Projects with Budgets" +#~ msgstr "Projecten met budgetten" + +#~ msgid "Warning Alerts" +#~ msgstr "Waarschuwingswaarschuwingen" + +#~ msgid "Active Alerts" +#~ msgstr "Actieve waarschuwingen" + +#~ msgid "Acknowledge" +#~ msgstr "Erkennen" + +#~ msgid "Project Budget Status" +#~ msgstr "Status van projectbudget" + +#~ msgid "Budget" +#~ msgstr "Begroting" + +#~ msgid "Consumed" +#~ msgstr "Verbruikt" + +#~ msgid "Remaining" +#~ msgstr "Overig" + +#~ msgid "Progress" +#~ msgstr "Voortgang" + +#~ msgid "over" +#~ msgstr "over" + +#~ msgid "Over Budget" +#~ msgstr "Over budget" + +#~ msgid "Critical" +#~ msgstr "Kritisch" + +#~ msgid "Healthy" +#~ msgstr "Gezond" + +#~ msgid "No projects with budgets found" +#~ msgstr "Er zijn geen projecten met budgetten gevonden" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Waarschuwing succesvol bevestigd" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "Kan waarschuwing niet bevestigen" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Budgetanalyse en prognoses" + +#~ msgid "Back to Dashboard" +#~ msgstr "Terug naar Dashboard" + +#~ msgid "View Project" +#~ msgstr "Bekijk project" + +#~ msgid "Total Budget" +#~ msgstr "Totaal budget" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Analyse van de verbrandingssnelheid" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Dagelijkse brandsnelheid" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Wekelijkse brandsnelheid" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Maandelijkse brandsnelheid" + +#~ msgid "Period Total" +#~ msgstr "Periode Totaal" + +#~ msgid "Based on last" +#~ msgstr "Gebaseerd op de laatste" + +#~ msgid "days" +#~ msgstr "dagen" + +#~ msgid "No burn rate data available" +#~ msgstr "Er zijn geen gegevens over de brandsnelheid beschikbaar" + +#~ msgid "Completion Estimate" +#~ msgstr "Voltooiingsschatting" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Geschatte voltooiingsdatum" + +#~ msgid "days remaining" +#~ msgstr "resterende dagen" + +#~ msgid "Confidence Level" +#~ msgstr "Vertrouwensniveau" + +#~ msgid "No completion estimate available" +#~ msgstr "Geen voltooiingsschatting beschikbaar" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Kostentrendanalyse" + +#~ msgid "Average" +#~ msgstr "Gemiddeld" + +#~ msgid "Resource Allocation" +#~ msgstr "Toewijzing van middelen" + +#~ msgid "Total Cost" +#~ msgstr "Totale kosten" + +#~ msgid "Hourly Rate" +#~ msgstr "Uurtarief" + +#~ msgid "Team Member" +#~ msgstr "Teamlid" + +#~ msgid "Cost" +#~ msgstr "Kosten" + +#~ msgid "Hours %" +#~ msgstr "Uren %" + +#~ msgid "Cost %" +#~ msgstr "Kosten %" + +#~ msgid "Entries" +#~ msgstr "Inzendingen" + +#~ msgid "Date & Time" +#~ msgstr "Datum en tijd" + +#~ msgid "Location" +#~ msgstr "Locatie" + +#~ msgid "Reminder" +#~ msgstr "Herinnering" + +#~ msgid "minutes before" +#~ msgstr "minuten ervoor" + +#~ msgid "hours before" +#~ msgstr "uur ervoor" + +#~ msgid "days before" +#~ msgstr "dagen ervoor" + +#~ msgid "Recurring" +#~ msgstr "Terugkerend" + +#~ msgid "Until" +#~ msgstr "Tot" + +#~ msgid "Last Updated" +#~ msgstr "Laatst bijgewerkt" + +#~ msgid "Back to Calendar" +#~ msgstr "Terug naar Agenda" + +#~ msgid "Delete Event" +#~ msgstr "Evenement verwijderen" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Weet je zeker dat je dit evenement" +#~ " wilt verwijderen? Deze actie kan " +#~ "niet ongedaan worden gemaakt." + +#~ msgid "Edit Event" +#~ msgstr "Evenement bewerken" + +#~ msgid "New Event" +#~ msgstr "Nieuw evenement" + +#~ msgid "Title" +#~ msgstr "Titel" + +#~ msgid "Start Date" +#~ msgstr "Startdatum" + +#~ msgid "Start Time" +#~ msgstr "Begintijd" + +#~ msgid "End Date" +#~ msgstr "Einddatum" + +#~ msgid "End Time" +#~ msgstr "Eindtijd" + +#~ msgid "All Day Event" +#~ msgstr "Hele dag evenement" + +#~ msgid "Event Type" +#~ msgstr "Evenementtype" + +#~ msgid "Meeting" +#~ msgstr "Ontmoeting" + +#~ msgid "Appointment" +#~ msgstr "Afspraak" + +#~ msgid "Deadline" +#~ msgstr "Termijn" + +#~ msgid "-- None --" +#~ msgstr "-- Geen --" + +#~ msgid "No reminder" +#~ msgstr "Geen herinnering" + +#~ msgid "5 minutes before" +#~ msgstr "5 minuten ervoor" + +#~ msgid "15 minutes before" +#~ msgstr "15 minuten eerder" + +#~ msgid "30 minutes before" +#~ msgstr "30 minuten eerder" + +#~ msgid "1 hour before" +#~ msgstr "1 uur eerder" + +#~ msgid "1 day before" +#~ msgstr "1 dag ervoor" + +#~ msgid "Color" +#~ msgstr "Kleur" + +#~ msgid "Choose a color for this event" +#~ msgstr "Kies een kleur voor dit evenement" + +#~ msgid "Private Event" +#~ msgstr "Privé-evenement" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Privé-evenementen zijn alleen voor jou zichtbaar" + +#~ msgid "Recurring Event" +#~ msgstr "Terugkerend evenement" + +#~ msgid "This is a recurring event" +#~ msgstr "Dit is een terugkerend evenement" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Herhalingspatroon" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Gebruik het RRULE-formaat (bijvoorbeeld FREQ=WEEKLY;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Einddatum herhaling" + +#~ msgid "Update Event" +#~ msgstr "Evenement bijwerken" + +#~ msgid "Create Event" +#~ msgstr "Evenement maken" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Bekijk en beheer uw evenementen, taken en tijdsinvoer" + +#~ msgid "Day" +#~ msgstr "Dag" + +#~ msgid "Week" +#~ msgstr "Week" + +#~ msgid "Month" +#~ msgstr "Maand" + +#~ msgid "Today" +#~ msgstr "Vandaag" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "Agenda laden..." + +#~ msgid "Event Details" +#~ msgstr "Evenementdetails" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "Klantnotitie bewerken" + +#~ msgid "Back to Client" +#~ msgstr "Terug naar Klant" + +#~ msgid "Client:" +#~ msgstr "Cliënt:" + +#~ msgid "Created on" +#~ msgstr "Gemaakt op" + +#~ msgid "Last edited on" +#~ msgstr "Laatst bewerkt op" + +#~ msgid "Note Content" +#~ msgstr "Opmerking inhoud" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Interne notitie alleen zichtbaar voor uw team." + +#~ msgid "Mark as important" +#~ msgstr "Markeer als belangrijk" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "Klantenportaal" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "Details bekijken" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "In behandeling" + +#~ msgid "Approved" +#~ msgstr "Goedgekeurd" + +#~ msgid "Rejected" +#~ msgstr "Afgewezen" + +#~ msgid "All" +#~ msgstr "Alle" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "Details bekijken" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "Goedkeuringsstatus" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Goedkeuring aangevraagd" + +#~ msgid "An approval was updated." +#~ msgstr "Er zijn geen projecten bijgewerkt" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "Welkom, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "Pas snelkoppelingen aan" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "Statistieken" + +#~ msgid "Pending actions" +#~ msgstr "Beheerderssecties" + +#~ msgid "Recent invoices" +#~ msgstr "Recente facturen" + +#~ msgid "Recent time entries" +#~ msgstr "Recente tijdinvoer" + +#~ msgid "Select at least one widget." +#~ msgstr "Selecteer een klant..." + +#~ msgid "Failed to save." +#~ msgstr "Kan timer niet stoppen" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "Ga naar Dashboard" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "Ga terug" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "Factuurgegevens" + +#~ msgid "Issue Date" +#~ msgstr "Uitgiftedatum" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "Deze factuur is %(days)d dagen te laat." + +#~ msgid "Invoice Items" +#~ msgstr "Factuurartikelen" + +#~ msgid "Quantity" +#~ msgstr "Hoeveelheid" + +#~ msgid "Unit Price" +#~ msgstr "Eenheidsprijs" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "Terug naar Facturen" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "Facturen voor %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "Onbetaald" + +#~ msgid "Overdue" +#~ msgstr "Verlopen" + +#~ msgid "Amount" +#~ msgstr "Hoeveelheid" + +#~ msgid "days overdue" +#~ msgstr "dagen te laat" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "Prioriteit" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "Toegewezen aan" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "Open" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "Inloggen klantportaal" + +#~ msgid "View your projects and invoices" +#~ msgstr "Bekijk uw projecten en facturen" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Log in op het Klantportaal" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "Voer uw portaalgegevens in om toegang" +#~ " te krijgen tot uw projecten en " +#~ "facturen" + +#~ msgid "portal_username" +#~ msgstr "portal_gebruikersnaam" + +#~ msgid "Enter your password" +#~ msgstr "Voer uw wachtwoord in" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "Laag" + +#~ msgid "Medium" +#~ msgstr "Medium" + +#~ msgid "High" +#~ msgstr "Hoog" + +#~ msgid "Urgent" +#~ msgstr "Dringend" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "Opmerkingen" + +#~ msgid "Add Comment" +#~ msgstr "Commentaar toevoegen" + +#~ msgid "Your Comment" +#~ msgstr "Jouw commentaar" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "Reactie plaatsen" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "Terug naar Projecten" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "Projecten voor %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "Offertedetails" + +#~ msgid "Valid Until" +#~ msgstr "Geldig tot" + +#~ msgid "This quote has expired." +#~ msgstr "Deze offerte is verlopen." + +#~ msgid "Quote Items" +#~ msgstr "Citeer artikelen" + +#~ msgid "SKU" +#~ msgstr "SKU" + +#~ msgid "Terms & Conditions" +#~ msgstr "Algemene voorwaarden" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "Accepteer offerte" + +#~ msgid "Reject Quote" +#~ msgstr "Offerte afwijzen" + +#~ msgid "Back to Quotes" +#~ msgstr "Terug naar Citaten" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "Offertes voor %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "Verlopen" + +#~ msgid "No quotes found." +#~ msgstr "Geen citaten gevonden." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "Projectcode" + +#~ msgid "Est. / Budget" +#~ msgstr "Over budget" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "Samenvatting" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "Totaal bedrag" + +#~ msgid "No tasks yet." +#~ msgstr "Geen taken geselecteerd" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Geen activiteit in de afgelopen 30 dagen." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "Wachtwoord instellen" + +#~ msgid "Set your password to get started" +#~ msgstr "Stel uw wachtwoord in om aan de slag te gaan" + +#~ msgid "Set Your Password" +#~ msgstr "Stel uw wachtwoord in" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Stel een wachtwoord in voor uw klantportaalaccount" + +#~ msgid "Confirm Password" +#~ msgstr "Bevestig wachtwoord" + +#~ msgid "Confirm your password" +#~ msgstr "Bevestig uw wachtwoord" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "Tijdinvoer voor %(client_name)s projecten" + +#~ msgid "All Projects" +#~ msgstr "Alle projecten" + +#~ msgid "From Date" +#~ msgstr "Vanaf Datum" + +#~ msgid "To Date" +#~ msgstr "Tot op heden" + +#~ msgid "Total entries" +#~ msgstr "Totaal aantal inschrijvingen" + +#~ msgid "Total hours" +#~ msgstr "Totaal uren" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "Recente facturen" + +#~ msgid "View All" +#~ msgstr "Bekijk alles" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "Totaal facturen" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "Recente tijdinvoer" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "Exporteren naar CSV" + +#~ msgid "Create Client" +#~ msgstr "Klant aanmaken" + +#~ msgid "Back to Clients" +#~ msgstr "Terug naar Klanten" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" +#~ "Voeg een nieuwe klant toe om " +#~ "gerelateerde projecten en facturering te " +#~ "beheren." + +#~ msgid "Enter client name" +#~ msgstr "Voer de klantnaam in" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Standaard uurtarief" + +#~ msgid "e.g. 75.00" +#~ msgstr "bijv. 75.00 uur" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Dit tarief wordt automatisch ingevuld " +#~ "bij het aanmaken van projecten voor " +#~ "deze klant" + +#~ msgid "Supports Markdown" +#~ msgstr "Ondersteunt afwaardering" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Korte beschrijving van de omvang van de klant of het project" + +#~ msgid "Contact Person" +#~ msgstr "Contactpersoon" + +#~ msgid "Primary contact name" +#~ msgstr "Naam van primair contact" + +#~ msgid "contact@client.com" +#~ msgstr "contact@klant.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Maandelijkse vooruitbetaalde uren" + +#~ msgid "e.g. 50" +#~ msgstr "bijv. 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "Laat leeg als deze klant geen prepaid-toewijzing heeft." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Prepaid-resetdag" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Dag van de maand waarop prepaid-uren worden gereset (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Klantadres" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "Kies een duidelijke, beschrijvende naam voor de klantorganisatie." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Stel het standaarduurtarief voor deze " +#~ "klant in. Dit wordt automatisch ingevuld" +#~ " bij het maken van nieuwe projecten." + +#~ msgid "Contact Information" +#~ msgstr "Contactgegevens" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "" +#~ "Voeg contactgegevens toe voor eenvoudige " +#~ "communicatie en bijhouden van gegevens." + +#~ msgid "Prepaid Hours" +#~ msgstr "Vooruitbetaalde uren" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Configureer maandelijks inbegrepen uren en " +#~ "de resetdag als deze klant een " +#~ "provisie- of prepaidbundel heeft." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "Geef context over de klantrelatie of typische projecttypen." + +#~ msgid "Edit Client" +#~ msgstr "Klant bewerken" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Schakel portaltoegang in voor deze " +#~ "client. Klanten kunnen met hun eigen " +#~ "inloggegevens inloggen om projecten, facturen" +#~ " en urenvermeldingen te bekijken." + +#~ msgid "Enable Client Portal" +#~ msgstr "Schakel Klantportaal in" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "Portal-gebruikersnaam" + +#~ msgid "Unique username for portal login" +#~ msgstr "Unieke gebruikersnaam voor inloggen op de portal" + +#~ msgid "Portal Password" +#~ msgstr "Portaalwachtwoord" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "Laat leeg om het huidige wachtwoord te behouden" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "Stel een nieuw wachtwoord in of laat het leeg om actueel te blijven" + +#~ msgid "Current portal username" +#~ msgstr "Huidige portal-gebruikersnaam" + +#~ msgid "Update Client" +#~ msgstr "Klant bijwerken" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Stuur een e-mail voor het instellen van het wachtwoord" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Stuur een e-mail naar %(email)s met " +#~ "een link om hun portalwachtwoord in " +#~ "te stellen." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "E-mailadres is vereist om een ​​e-mail" +#~ " voor het instellen van het " +#~ "wachtwoord te verzenden. Stel hierboven " +#~ "het e-mailadres van de klant in." + +#~ msgid "Client Statistics" +#~ msgstr "Klantstatistieken" + +#~ msgid "Est. Total Cost" +#~ msgstr "Geschat. Totale kosten" + +#~ msgid "Filter Clients" +#~ msgstr "Klanten filteren" + +#~ msgid "Toggle Filters" +#~ msgstr "Schakel Filters in" + +#~ msgid "Hide Filters" +#~ msgstr "Filters verbergen" + +#~ msgid "Show Filters" +#~ msgstr "Filters weergeven" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "" +#~ "Er zijn geen niet-gefactureerde " +#~ "tijdsvermeldingen gevonden voor dit project." + +#~ msgid "No unbilled time" +#~ msgstr "Niet-gefactureerde tijdsinvoer" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Factuurartikelen" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "Klant markeren als inactief?" + +#~ msgid "Change Client Status" +#~ msgstr "Wijzig de klantstatus" + +#~ msgid "Mark Inactive" +#~ msgstr "Markeer inactief" + +#~ msgid "Activate client?" +#~ msgstr "Klant activeren?" + +#~ msgid "Activate Client" +#~ msgstr "Activeer Klant" + +#~ msgid "Delete Client" +#~ msgstr "Klant verwijderen" + +#~ msgid "Client details and associated projects." +#~ msgstr "Totale en actieve projecten" + +#~ msgid "Manage" +#~ msgstr "Beheren" + +#~ msgid "Primary" +#~ msgstr "Primair" + +#~ msgid "more contact(s)" +#~ msgstr "meer contact(en)" + +#~ msgid "No contacts yet" +#~ msgstr "Nog geen contacten" + +#~ msgid "Add Contact" +#~ msgstr "Contactpersoon toevoegen" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Oude contactgegevens" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "Het abonnement omvat %(hours)s uren per" +#~ " cyclus. Wordt gereset op dag " +#~ "%(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "Huidige cyclusstart" + +#~ msgid "Remaining hours" +#~ msgstr "Resterende uren" + +#~ msgid "h" +#~ msgstr "H" + +#~ msgid "Consumed this cycle" +#~ msgstr "Deze cyclus verbruikt" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "Klant zichtbaar" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "Gearchiveerd" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "Interne opmerkingen" + +#~ msgid "Add Note" +#~ msgstr "Notitie toevoegen" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Een interne opmerking over deze klant toevoegen..." + +#~ msgid "Save Note" +#~ msgstr "Bewaar notitie" + +#~ msgid "edited" +#~ msgstr "bewerkt" + +#~ msgid "Important" +#~ msgstr "Belangrijk" + +#~ msgid "Unmark" +#~ msgstr "Markering opheffen" + +#~ msgid "Mark Important" +#~ msgstr "Markeer belangrijk" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Nog geen opmerkingen. Voeg een notitie" +#~ " toe om belangrijke informatie over " +#~ "deze klant bij te houden." + +#~ msgid "Estimated total" +#~ msgstr "Geschatte waarde" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Factuur maken" + +#~ msgid "Create invoice" +#~ msgstr "Factuur maken" + +#~ msgid "Could not create invoice." +#~ msgstr "Factuur maken" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "Weet u zeker dat u deze notitie wilt verwijderen?" + +#~ msgid "Delete Note" +#~ msgstr "Notitie verwijderen" + +#~ msgid "Edited on" +#~ msgstr "Bewerkt op" + +#~ msgid "Reply" +#~ msgstr "Antwoord" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "Schrijf uw antwoord..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Deel uw mening, updates of vragen..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "U kunt regeleinden gebruiken om uw commentaar op te maken." + +#~ msgid "Add Image" +#~ msgstr "Afbeelding toevoegen" + +#~ msgid "No comments yet" +#~ msgstr "Nog geen opmerkingen" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "Begin het gesprek door de eerste opmerking toe te voegen." + +#~ msgid "Add First Comment" +#~ msgstr "Voeg eerste reactie toe" + +#~ msgid "Edit Comment" +#~ msgstr "Reactie bewerken" + +#~ msgid "Back" +#~ msgstr "Rug" + +#~ msgid "Editing comment on:" +#~ msgstr "Commentaar bewerken op:" + +#~ msgid "Originally posted on" +#~ msgstr "Oorspronkelijk gepost op" + +#~ msgid "Comment Content" +#~ msgstr "Commentaar Inhoud" + +#~ msgid "All Activities" +#~ msgstr "Alle activiteiten" + +#~ msgid "Time Templates" +#~ msgstr "Tijdsjablonen" + +#~ msgid "No recent activity" +#~ msgstr "Geen recente activiteit" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "Terwijl u werkt, wordt hier activiteit weergegeven" + +#~ msgid "Load More" +#~ msgstr "Laad meer" + +#~ msgid "Failed to load activities" +#~ msgstr "Kan activiteiten niet laden" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "Selecteer een klant..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "Klaar" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "TimeTracker-helpcentrum" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "Thuis" + +#~ msgid "Pagination" +#~ msgstr "Paginering van mijn taken" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "Telefoongesprek" + +#~ msgid "Message" +#~ msgstr "Bericht" + +#~ msgid "Direction" +#~ msgstr "Richting" + +#~ msgid "Outbound" +#~ msgstr "Uitgaand" + +#~ msgid "Inbound" +#~ msgstr "Inkomend" + +#~ msgid "Subject" +#~ msgstr "Onderwerp" + +#~ msgid "Scheduled" +#~ msgstr "Gepland" + +#~ msgid "Follow-up Date" +#~ msgstr "Vervolgdatum" + +#~ msgid "Content/Notes" +#~ msgstr "Inhoud/Notities" + +#~ msgid "Save Communication" +#~ msgstr "Communicatie opslaan" + +#~ msgid "First Name" +#~ msgstr "Voornaam" + +#~ msgid "Last Name" +#~ msgstr "Achternaam" + +#~ msgid "Mobile" +#~ msgstr "Mobiel" + +#~ msgid "Department" +#~ msgstr "Afdeling" + +#~ msgid "Contact" +#~ msgstr "Contact" + +#~ msgid "Billing" +#~ msgstr "Facturering" + +#~ msgid "Technical" +#~ msgstr "Technisch" + +#~ msgid "Set as primary contact" +#~ msgstr "Instellen als primair contact" + +#~ msgid "Tags" +#~ msgstr "Labels" + +#~ msgid "Save Contact" +#~ msgstr "Contactpersoon opslaan" + +#~ msgid "Set Primary" +#~ msgstr "Primair instellen" + +#~ msgid "No contacts found" +#~ msgstr "Geen contacten gevonden" + +#~ msgid "Add First Contact" +#~ msgstr "Eerste contactpersoon toevoegen" + +#~ msgid "Primary Contact" +#~ msgstr "Primaire contactpersoon" + +#~ msgid "Communication History" +#~ msgstr "Communicatie Geschiedenis" + +#~ msgid "Add Communication" +#~ msgstr "Communicatie toevoegen" + +#~ msgid "No communications recorded" +#~ msgstr "Geen communicatie opgenomen" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "Activeren" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "Dealnaam" + +#~ msgid "Select Client" +#~ msgstr "Selecteer Klant" + +#~ msgid "Select Contact" +#~ msgstr "Selecteer Contactpersoon" + +#~ msgid "Stage" +#~ msgstr "Fase" + +#~ msgid "Deal Value" +#~ msgstr "Dealwaarde" + +#~ msgid "Win Probability" +#~ msgstr "Winstwaarschijnlijkheid" + +#~ msgid "Expected Close Date" +#~ msgstr "Verwachte sluitingsdatum" + +#~ msgid "Related Quote" +#~ msgstr "Gerelateerd citaat" + +#~ msgid "Select Quote" +#~ msgstr "Selecteer Offerte" + +#~ msgid "Save Deal" +#~ msgstr "Aanbieding opslaan" + +#~ msgid "Won" +#~ msgstr "Won" + +#~ msgid "Lost" +#~ msgstr "Kwijt" + +#~ msgid "All Stages" +#~ msgstr "Alle fasen" + +#~ msgid "Value" +#~ msgstr "Waarde" + +#~ msgid "Probability" +#~ msgstr "Waarschijnlijkheid" + +#~ msgid "Expected Close" +#~ msgstr "Verwacht dichtbij" + +#~ msgid "No deals found" +#~ msgstr "Geen aanbiedingen gevonden" + +#~ msgid "Create First Deal" +#~ msgstr "Maak een eerste deal" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "Gerelateerd project" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "Doelgeschiedenis" + +#~ msgid "View full history" +#~ msgstr "Bekijk volledige details" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "Je werd genoemd" + +#~ msgid "View Task & Reply" +#~ msgstr "Bekijk taak en antwoord" + +#~ msgid "Invoice" +#~ msgstr "Factuur" + +#~ msgid "Invoice Overdue" +#~ msgstr "Factuur achterstallig" + +#~ msgid "View Invoice" +#~ msgstr "Bekijk factuur" + +#~ msgid "Quote" +#~ msgstr "Citaat" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Goedkeuring van offerte afgewezen" + +#~ msgid "View Quote" +#~ msgstr "Bekijk offerte" + +#~ msgid "Approval Requested" +#~ msgstr "Goedkeuring aangevraagd" + +#~ msgid "Review Quote" +#~ msgstr "Citaat beoordelen" + +#~ msgid "Quote Approved" +#~ msgstr "Offerte goedgekeurd" + +#~ msgid "Quote Expired" +#~ msgstr "Citaat verlopen" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "Citaat verloopt binnenkort" + +#~ msgid "Quote Sent" +#~ msgstr "Citaat verzonden" + +#~ msgid "Task Assignment" +#~ msgstr "Taaktoewijzing" + +#~ msgid "View Task" +#~ msgstr "Taak bekijken" + +#~ msgid "Test Details" +#~ msgstr "Testdetails" + +#~ msgid "Your Weekly Summary" +#~ msgstr "Uw wekelijkse samenvatting" + +#~ msgid "400 Bad Request" +#~ msgstr "400 Slecht verzoek" + +#~ msgid "Invalid Request" +#~ msgstr "Ongeldig verzoek" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "Het verzoek dat u heeft gedaan is" +#~ " ongeldig of bevat fouten. Dit kan" +#~ " te wijten zijn aan:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Ontbrekende of ongeldige formuliergegevens" + +#~ msgid "Malformed request parameters" +#~ msgstr "Onjuist opgemaakte verzoekparameters" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "U heeft geen toegang tot deze bron. Dit kan te wijten zijn aan:" + +#~ msgid "Insufficient privileges" +#~ msgstr "Onvoldoende rechten" + +#~ msgid "Not logged in" +#~ msgstr "Niet ingelogd" + +#~ msgid "Resource access restrictions" +#~ msgstr "Beperkingen voor toegang tot bronnen" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "Er is iets misgegaan aan onze kant. Probeer het later opnieuw." + +#~ msgid "Try Again" +#~ msgstr "Probeer het opnieuw" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Er is een fout opgetreden tijdens het verwerken van uw verzoek." + +#~ msgid "Refresh Page" +#~ msgstr "Pagina vernieuwen" + +#~ msgid "Go to Login" +#~ msgstr "Ga naar Inloggen" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "bijvoorbeeld reizen, maaltijden, kantoorbenodigdheden" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "bijvoorbeeld REIZEN, MAALTIJDEN" + +#~ msgid "Brief description of this category..." +#~ msgstr "Korte beschrijving van deze categorie..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "bijvoorbeeld fa-vliegtuig, fa-gebruiksvoorwerpen" + +#~ msgid "e.g., 19.00" +#~ msgstr "bijvoorbeeld 19.00 uur" + +#~ msgid "Category" +#~ msgstr "Categorie" + +#~ msgid "Basic Information" +#~ msgstr "Basisinformatie" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "bijvoorbeeld vlucht naar Berlijn" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Aanvullende details over de kosten..." + +#~ msgid "Select Category" +#~ msgstr "Categorie" + +#~ msgid "Amount Details" +#~ msgstr "Betalingsgegevens" + +#~ msgid "Association" +#~ msgstr "Locatie" + +#~ msgid "Payment Details" +#~ msgstr "Betalingsgegevens" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "bijvoorbeeld Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "Aanvullende informatie" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Ontvangstbewijs/factuurnummer" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "bijvoorbeeld INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "bijvoorbeeld conferentie, klantbijeenkomst, urgent" + +#~ msgid "Additional notes..." +#~ msgstr "Aanvullende opmerkingen..." + +#~ msgid "Options" +#~ msgstr "Optioneel" + +#~ msgid "Filter Expenses" +#~ msgstr "Filterkosten" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Verwijder geselecteerde uitgaven" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Wijzig de status voor geselecteerde uitgaven" + +#~ msgid "Associated With" +#~ msgstr "Geassocieerd met" + +#~ msgid "Reject Expense" +#~ msgstr "Kosten afwijzen" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Leg uit waarom deze uitgave wordt afgewezen..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "Weet u zeker dat u deze uitgave wilt verwijderen?" + +#~ msgid "Delete Expense" +#~ msgstr "Kosten verwijderen" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "Gegevens importeren/exporteren" + +#~ msgid "Import/Export" +#~ msgstr "Importeren/exporteren" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Importeer gegevens van andere " +#~ "tijdregistratiesystemen of exporteer uw " +#~ "gegevens voor AVG-compliance en back-" +#~ "ups" + +#~ msgid "Import Data" +#~ msgstr "Gegevens importeren" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Importeer tijdgegevens uit een CSV-bestand" + +#~ msgid "Choose CSV File" +#~ msgstr "Kies CSV-bestand" + +#~ msgid "Download Template" +#~ msgstr "Sjabloon downloaden" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Importeren uit Toggl-track" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Importeer tijdgegevens uit Toggl Track" + +#~ msgid "Import from Toggl" +#~ msgstr "Importeren vanuit Toggl" + +#~ msgid "Import from Harvest" +#~ msgstr "Importeren uit oogst" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Importeer tijdgegevens uit Harvest" + +#~ msgid "Restore from Backup" +#~ msgstr "Herstellen vanuit back-up" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "Geschiedenis importeren" + +#~ msgid "Export Data" +#~ msgstr "Gegevens exporteren" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Volledige gegevensexport (AVG)" + +#~ msgid "Export all your personal data" +#~ msgstr "Exporteer al uw persoonlijke gegevens" + +#~ msgid "Export as JSON" +#~ msgstr "Exporteren als JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "Exporteren als ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "Gefilterde export" + +#~ msgid "Export specific data with filters" +#~ msgstr "Exporteer specifieke gegevens met filters" + +#~ msgid "Export with Filters" +#~ msgstr "Exporteren met filters" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "Maak een volledige databaseback-up" + +#~ msgid "Export History" +#~ msgstr "Geschiedenis exporteren" + +#~ msgid "API Token" +#~ msgstr "API-token" + +#~ msgid "Workspace ID" +#~ msgstr "Werkruimte-ID" + +#~ msgid "Import" +#~ msgstr "Importeren" + +#~ msgid "Account ID" +#~ msgstr "Account-ID" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "Tijdintegratie" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "Vorig jaar" + +#~ msgid "Last status" +#~ msgstr "Status bijwerken" + +#~ msgid "Credentials" +#~ msgstr "Details" + +#~ msgid "Last error" +#~ msgstr "Vorig jaar" + +#~ msgid "Partial" +#~ msgstr "Gedeeltelijk" + +#~ msgid "Needs refresh" +#~ msgstr "Vernieuwen" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "API-token maken" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "API-token maken" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "Laat leeg om actueel te blijven" + +#~ msgid "Enter API secret" +#~ msgstr "Genereer geheim" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "Voorraadartikel" + +#~ msgid "Select Item" +#~ msgstr "Selecteer Artikel" + +#~ msgid "Warehouse" +#~ msgstr "Magazijn" + +#~ msgid "Select Warehouse" +#~ msgstr "Selecteer Magazijn" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Aanpassingshoeveelheid" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Gebruik positieve waarden om de voorraad" +#~ " te vergroten, negatieve waarden om " +#~ "te verlagen" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "bijv. correctie van fysieke telling, schade, gevonden voorwerpen" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Aanvullende details over deze aanpassing" + +#~ msgid "Record Adjustment" +#~ msgstr "Recordaanpassing" + +#~ msgid "All Warehouses" +#~ msgstr "Alle magazijnen" + +#~ msgid "All Items" +#~ msgstr "Alle artikelen" + +#~ msgid "Date From" +#~ msgstr "Datum vanaf" + +#~ msgid "Date To" +#~ msgstr "Datum tot" + +#~ msgid "Item" +#~ msgstr "Item" + +#~ msgid "No adjustments found." +#~ msgstr "Geen aanpassingen gevonden." + +#~ msgid "On Hand" +#~ msgstr "Bij de hand" + +#~ msgid "Reorder Point" +#~ msgstr "Punt opnieuw ordenen" + +#~ msgid "Shortfall" +#~ msgstr "Tekort" + +#~ msgid "Reorder Qty" +#~ msgstr "Bestel aantal opnieuw" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "" +#~ "Geen waarschuwingen voor lage voorraad. " +#~ "Alle artikelen bevinden zich boven het" +#~ " bestelpunt." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "" +#~ "Gebruik positieve waarden voor toevoegingen," +#~ " negatieve voor verwijderingen" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "Bewegingstype" + +#~ msgid "Return" +#~ msgstr "Opbrengst" + +#~ msgid "Waste" +#~ msgstr "Afval" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "bijvoorbeeld fysieke tellingscorrectie" + +#~ msgid "Record Movement" +#~ msgstr "Beweging registreren" + +#~ msgid "Reference Type" +#~ msgstr "Referentietype" + +#~ msgid "Manual" +#~ msgstr "Handmatig" + +#~ msgid "Unit Cost" +#~ msgstr "Eenheidskosten" + +#~ msgid "Reference" +#~ msgstr "Referentie" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "Geen voorraadbewegingen gevonden." + +#~ msgid "Supplier" +#~ msgstr "Leverancier" + +#~ msgid "Select Supplier" +#~ msgstr "Leverancier selecteren" + +#~ msgid "Order Date" +#~ msgstr "Besteldatum" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Verwachte leverdatum" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Opmerkingen zichtbaar voor leverancier" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Interne opmerkingen (niet zichtbaar voor leverancier)" + +#~ msgid "Items" +#~ msgstr "Artikelen" + +#~ msgid "Add Item" +#~ msgstr "Artikel toevoegen" + +#~ msgid "Qty" +#~ msgstr "Aantal" + +#~ msgid "Supplier SKU" +#~ msgstr "SKU van leverancier" + +#~ msgid "Create Purchase Order" +#~ msgstr "Inkooporder maken" + +#~ msgid "Draft" +#~ msgstr "Voorlopige versie" + +#~ msgid "Sent" +#~ msgstr "Verstuurd" + +#~ msgid "Confirmed" +#~ msgstr "Bevestigd" + +#~ msgid "Received" +#~ msgstr "Ontvangen" + +#~ msgid "All Suppliers" +#~ msgstr "Alle leveranciers" + +#~ msgid "PO Number" +#~ msgstr "PO-nummer" + +#~ msgid "Expected Delivery" +#~ msgstr "Verwachte levering" + +#~ msgid "No purchase orders found." +#~ msgstr "Geen inkooporders gevonden." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "Weet u zeker dat u deze inkooporder wilt annuleren?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "Weet u zeker dat u deze inkooporder wilt verwijderen?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Details van inkooporder" + +#~ msgid "Received Date" +#~ msgstr "Datum ontvangen" + +#~ msgid "Quantity Ordered" +#~ msgstr "Bestelde hoeveelheid" + +#~ msgid "Quantity Received" +#~ msgstr "Ontvangen hoeveelheid" + +#~ msgid "Line Total" +#~ msgstr "Lijntotaal" + +#~ msgid "Shipping" +#~ msgstr "Verzending" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Kooporder ontvangen" + +#~ msgid "Mark as Received" +#~ msgstr "Markeer als ontvangen" + +#~ msgid "No items in this purchase order." +#~ msgstr "Geen artikelen in deze inkooporder." + +#~ msgid "Total Items" +#~ msgstr "Totaal aantal artikelen" + +#~ msgid "Total Warehouses" +#~ msgstr "Totaal magazijnen" + +#~ msgid "Total Inventory Value" +#~ msgstr "Totale voorraadwaarde" + +#~ msgid "Low Stock Items" +#~ msgstr "Artikelen met weinig voorraad" + +#~ msgid "Available Reports" +#~ msgstr "Beschikbare rapporten" + +#~ msgid "Stock Valuation" +#~ msgstr "Voorraadwaardering" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Bekijk de voorraadwaarde per magazijn" + +#~ msgid "Movement History" +#~ msgstr "Bewegingsgeschiedenis" + +#~ msgid "Detailed movement log" +#~ msgstr "Gedetailleerd bewegingslogboek" + +#~ msgid "Turnover Analysis" +#~ msgstr "Omzetanalyse" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Omloopsnelheid van de voorraad" + +#~ msgid "Low Stock Report" +#~ msgstr "Rapport over lage voorraad" + +#~ msgid "Items below reorder point" +#~ msgstr "Artikelen onder het bestelpunt" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "%(count)s artikelen gevonden onder het bestelpunt." + +#~ msgid "Quantity On Hand" +#~ msgstr "Hoeveelheid bij de hand" + +#~ msgid "Reorder Quantity" +#~ msgstr "Aantal opnieuw bestellen" + +#~ msgid "Create PO" +#~ msgstr "PO aanmaken" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Alle voorraadniveaus zijn goed" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Er zijn momenteel geen artikelen onder het bestelpunt." + +#~ msgid "No movements found." +#~ msgstr "Geen bewegingen gevonden." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "De omloopsnelheid geeft aan hoe vaak " +#~ "voorraad per jaar wordt verkocht en " +#~ "vervangen. Hogere tarieven duiden op " +#~ "sneller bewegende items." + +#~ msgid "Total Sold" +#~ msgstr "Totaal verkocht" + +#~ msgid "Avg Stock Level" +#~ msgstr "Gemiddeld voorraadniveau" + +#~ msgid "Turnover Rate" +#~ msgstr "Omzetpercentage" + +#~ msgid "Fast Moving" +#~ msgstr "Snel bewegend" + +#~ msgid "Normal" +#~ msgstr "Normaal" + +#~ msgid "Slow Moving" +#~ msgstr "Langzaam bewegend" + +#~ msgid "Very Slow" +#~ msgstr "Zeer langzaam" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "Er zijn geen verkoopgegevens gevonden voor de geselecteerde periode." + +#~ msgid "Inventory Valuation" +#~ msgstr "Voorraadwaardering" + +#~ msgid "Total Value" +#~ msgstr "Totale waarde" + +#~ msgid "No items found with cost information." +#~ msgstr "Geen artikelen gevonden met kosteninformatie." + +#~ msgid "Reserved" +#~ msgstr "Gereserveerd" + +#~ msgid "Fulfilled" +#~ msgstr "Vervuld" + +#~ msgid "Reserved At" +#~ msgstr "Gereserveerd bij" + +#~ msgid "Expires At" +#~ msgstr "Verloopt op" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "Deze reservering vervullen?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "Deze reservering annuleren?" + +#~ msgid "No reservations found." +#~ msgstr "Geen reserveringen gevonden." + +#~ msgid "Unit" +#~ msgstr "Eenheid" + +#~ msgid "Default Cost" +#~ msgstr "Standaardkosten" + +#~ msgid "Default Price" +#~ msgstr "Standaardprijs" + +#~ msgid "Image URL" +#~ msgstr "Afbeeldings-URL" + +#~ msgid "Track Inventory" +#~ msgstr "Houd inventaris bij" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "" +#~ "Beheer meerdere leveranciers voor dit " +#~ "artikel met verschillende prijzen." + +#~ msgid "MOQ" +#~ msgstr "MOQ" + +#~ msgid "Lead Time (days)" +#~ msgstr "Doorlooptijd (dagen)" + +#~ msgid "Preferred" +#~ msgstr "Voorkeur" + +#~ msgid "Add Supplier" +#~ msgstr "Leverancier toevoegen" + +#~ msgid "No movement history found for this item." +#~ msgstr "Er is geen bewegingsgeschiedenis gevonden voor dit item." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU, naam, streepjescode..." + +#~ msgid "Active Only" +#~ msgstr "Alleen actief" + +#~ msgid "Total Qty" +#~ msgstr "Totaal aantal" + +#~ msgid "Available" +#~ msgstr "Beschikbaar" + +#~ msgid "Low Stock" +#~ msgstr "Lage voorraad" + +#~ msgid "No stock items found." +#~ msgstr "Geen voorraadartikelen gevonden." + +#~ msgid "Item Details" +#~ msgstr "Artikeldetails" + +#~ msgid "Trackable" +#~ msgstr "Traceerbaar" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Voorraadniveaus per magazijn" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Recente aandelenbewegingen" + +#~ msgid "Total On Hand" +#~ msgstr "Totaal bij de hand" + +#~ msgid "Total Reserved" +#~ msgstr "Totaal gereserveerd" + +#~ msgid "Total Available" +#~ msgstr "Totaal beschikbaar" + +#~ msgid "Low Stock Alert" +#~ msgstr "Waarschuwing voor lage voorraad" + +#~ msgid "This item is not trackable." +#~ msgstr "Dit item is niet traceerbaar." + +#~ msgid "Active Reservations" +#~ msgstr "Actieve reserveringen" + +#~ msgid "Quantity Reserved" +#~ msgstr "Aantal gereserveerd" + +#~ msgid "Last Counted" +#~ msgstr "Laatst geteld" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "Er is in geen enkel magazijn voorraad gevonden voor dit artikel." + +#~ msgid "No stock levels found." +#~ msgstr "Geen voorraadniveaus gevonden." + +#~ msgid "Low Stock Only" +#~ msgstr "Alleen lage voorraad" + +#~ msgid "Oversold" +#~ msgstr "Oververkocht" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "Er zijn geen voorraadartikelen gevonden in dit magazijn." + +#~ msgid "Supplier Code" +#~ msgstr "Leverancierscode" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Unieke code voor deze leverancier (bijvoorbeeld SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Betalingsvoorwaarden" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "bijv. Netto 30, Netto 60" + +#~ msgid "Code, name, email" +#~ msgstr "Code, naam, e-mailadres" + +#~ msgid "No suppliers found." +#~ msgstr "Geen leveranciers gevonden." + +#~ msgid "Supplier Details" +#~ msgstr "Leveranciersgegevens" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Voorraadartikelen van deze leverancier" + +#~ msgid "Lead Time" +#~ msgstr "Doorlooptijd" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "Er zijn geen voorraadartikelen gekoppeld aan deze leverancier." + +#~ msgid "Preferred Items" +#~ msgstr "Voorkeursartikelen" + +#~ msgid "From Warehouse" +#~ msgstr "Van Magazijn" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Selecteer Bronmagazijn" + +#~ msgid "To Warehouse" +#~ msgstr "Naar Magazijn" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Selecteer Bestemmingsmagazijn" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Optionele opmerkingen over deze overdracht" + +#~ msgid "Create Transfer" +#~ msgstr "Overdracht maken" + +#~ msgid "No transfers found." +#~ msgstr "Geen overdrachten gevonden." + +#~ msgid "Warehouse Code" +#~ msgstr "Magazijncode" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Unieke code voor dit magazijn (bijvoorbeeld WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "Neem contact op met E-mail" + +#~ msgid "Contact Phone" +#~ msgstr "Neem contact op met Telefoon" + +#~ msgid "No warehouses found." +#~ msgstr "Geen magazijnen gevonden." + +#~ msgid "Warehouse Details" +#~ msgstr "Magazijngegevens" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "Geen voorraadartikelen in dit magazijn." + +#~ msgid "Total Quantity" +#~ msgstr "Totale hoeveelheid" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "Vraag goedkeuring aan" + +#~ msgid "Approval Status" +#~ msgstr "Goedkeuringsstatus" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "Reden van afwijzing" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "Snelle acties" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "Exporteren naar Excel" + +#~ msgid "Partially Paid" +#~ msgstr "Gedeeltelijk betaald" + +#~ msgid "Fully Paid" +#~ msgstr "Volledig betaald" + +#~ msgid "Create Invoice" +#~ msgstr "Factuur maken" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Genereer een nieuwe factuur voor een project en klant" + +#~ msgid "Select a project" +#~ msgstr "Selecteer een project" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "" +#~ "Als u een project selecteert, worden " +#~ "de klantgegevens automatisch ingevuld" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Belastingtarief (%)" + +#~ msgid "Tips" +#~ msgstr "Tips" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "Kies het juiste project om de klantgegevens automatisch in te vullen." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "U kunt notities en voorwaarden aanpassen voordat u de factuur verzendt." + +#~ msgid "Edit Invoice" +#~ msgstr "Factuur bewerken" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Update factuurgegevens, artikelen en voorwaarden" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Op tijd gebaseerde diensten en uurwerk" + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "Selecteer voorraadartikel" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "bijvoorbeeld webontwikkelingsdiensten" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "Artikel verwijderen" + +#~ msgid "Items Subtotal" +#~ msgstr "Artikelen Subtotaal" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "Factureerbare kosten zoals reizen, maaltijden en materialen" + +#~ msgid "Add Expense" +#~ msgstr "Kosten toevoegen" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "bijvoorbeeld reizen naar een klantbijeenkomst" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Gekoppelde onkosten - titel kan niet worden bewerkt" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Gekoppelde onkosten: beschrijving kan niet worden bewerkt" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Gekoppelde onkosten - categorie kan niet worden bewerkt" + +#~ msgid "Travel" +#~ msgstr "Reis" + +#~ msgid "Meals" +#~ msgstr "Maaltijden" + +#~ msgid "Accommodation" +#~ msgstr "Accommodatie" + +#~ msgid "Supplies" +#~ msgstr "Benodigdheden" + +#~ msgid "Software" +#~ msgstr "Software" + +#~ msgid "Equipment" +#~ msgstr "Apparatuur" + +#~ msgid "Services" +#~ msgstr "Diensten" + +#~ msgid "Marketing" +#~ msgstr "Marketing" + +#~ msgid "Training" +#~ msgstr "Opleiding" + +#~ msgid "Other" +#~ msgstr "Ander" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Gekoppelde onkosten: bedrag kan niet worden bewerkt" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Gekoppelde onkosten - datum kan niet worden bewerkt" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Ontkoppel de onkosten van de factuur" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Kosten Subtotaal" + +#~ msgid "Extra Goods" +#~ msgstr "Extra goederen" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Producten, materialen, licenties en andere goederen" + +#~ msgid "Add Good" +#~ msgstr "Voeg goed toe" + +#~ msgid "Price" +#~ msgstr "Prijs" + +#~ msgid "e.g., Software License" +#~ msgstr "bijvoorbeeld softwarelicentie" + +#~ msgid "Product" +#~ msgstr "Product" + +#~ msgid "Service" +#~ msgstr "Dienst" + +#~ msgid "Material" +#~ msgstr "Materiaal" + +#~ msgid "Remove good" +#~ msgstr "Goed verwijderen" + +#~ msgid "Goods Subtotal" +#~ msgstr "Subtotaal goederen" + +#~ msgid "Live Preview" +#~ msgstr "Live voorbeeld" + +#~ msgid "Payment" +#~ msgstr "Betaling" + +#~ msgid "Goods" +#~ msgstr "Goederen" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Genereer uit tijd/kosten" + +#~ msgid "Record Payment" +#~ msgstr "Betaling registreren" + +#~ msgid "Export PDF" +#~ msgstr "PDF exporteren" + +#~ msgid "Export CSV" +#~ msgstr "CSV exporteren" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Dubbele factuur" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "Weet u zeker dat u deze uitgave van de factuur wilt ontkoppelen?" + +#~ msgid "Unlink Expense" +#~ msgstr "Ontkoppel de kosten" + +#~ msgid "Unlink" +#~ msgstr "Ontkoppelen" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "Voeg ten minste één artikel, uitgave of extra goed toe aan de factuur" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Genereer op basis van tijd, kosten en goederen" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Selecteer niet-gefactureerde tijdsinvoer, " +#~ "projectkosten en extra goederen om aan" +#~ " deze factuur toe te voegen" + +#~ msgid "Back to Edit" +#~ msgstr "Terug naar Bewerken" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Niet-gefactureerde tijdsinvoer" + +#~ msgid "entries" +#~ msgstr "inzendingen" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "" +#~ "Er zijn geen niet-gefactureerde " +#~ "tijdsvermeldingen gevonden voor dit project." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Niet-gefactureerde projectkosten" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "Er zijn geen niet-gefactureerde kosten gevonden voor dit project." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Niet-gefactureerde factureerbare kosten" + +#~ msgid "Vendor" +#~ msgstr "Leverancier" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "Er zijn geen niet-gefactureerde kosten gevonden voor dit project." + +#~ msgid "Project Extra Goods" +#~ msgstr "Project Extra goederen" + +#~ msgid "No extra goods found for this project." +#~ msgstr "Er zijn geen extra goederen gevonden voor dit project." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Geselecteerde toevoegen aan factuur" + +#~ msgid "Selection Summary" +#~ msgstr "Selectie Samenvatting" + +#~ msgid "Total available hours" +#~ msgstr "Totaal beschikbare uren" + +#~ msgid "Total available costs" +#~ msgstr "Totaal beschikbare kosten" + +#~ msgid "Total available expenses" +#~ msgstr "Totaal beschikbare uitgaven" + +#~ msgid "Total available goods" +#~ msgstr "Totaal beschikbare goederen" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Overzicht prepaid-uren" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" +#~ "Het plan omvat %(hours)s uren per " +#~ "cyclus (wordt gereset op dag %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "Verbruikt: %(consumed)s h • Resterend: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "" +#~ "Er is nog geen prepaid-gebruik " +#~ "geregistreerd voor de geselecteerde periode." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" +#~ "U kunt meerdere tijdsvermeldingen, kosten, " +#~ "onkosten en extra goederen selecteren." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "Bij het maken van items worden " +#~ "tijdsinvoer gegroepeerd per taak of " +#~ "project." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "" +#~ "Kosten en extra goederen worden als " +#~ "afzonderlijke factuurposten toegevoegd." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "" +#~ "Uitgaven zijn gekoppeld aan de factuur" +#~ " en verschijnen in een apart " +#~ "gedeelte." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "Selecteer minimaal één tijdinvoer, kosten, onkosten of extra goed" + +#~ msgid "Filter Invoices" +#~ msgstr "Facturen filteren" + +#~ msgid "Invoice number or client" +#~ msgstr "Factuurnummer of klant" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "Geselecteerde facturen verwijderen" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Status wijzigen voor geselecteerde facturen" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "Factuur verwijderen" + +#~ msgid "Warning:" +#~ msgstr "Waarschuwing:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Weet u zeker dat u de factuur wilt verwijderen?" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Alle factuuritems, extra goederen en " +#~ "betalingsgegevens die aan deze factuur " +#~ "zijn gekoppeld, worden permanent verwijderd." + +#~ msgid "INVOICE" +#~ msgstr "FACTUUR" + +#~ msgid "Invoice #" +#~ msgstr "Factuur #" + +#~ msgid "Bill To" +#~ msgstr "Factuur aan" + +#~ msgid "Quantity (Hours)" +#~ msgstr "Hoeveelheid (uren)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "Gegenereerd op basis van %(num)d tijdinvoer" + +#~ msgid "Expense" +#~ msgstr "Kosten" + +#~ msgid "Subtotal:" +#~ msgstr "Subtotaal:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "Belasting (%(rate).2f%%):" + +#~ msgid "Total Amount:" +#~ msgstr "Totaal bedrag:" + +#~ msgid "Notes:" +#~ msgstr "Opmerkingen:" + +#~ msgid "Terms:" +#~ msgstr "Voorwaarden:" + +#~ msgid "Payment Information:" +#~ msgstr "Betalingsinformatie:" + +#~ msgid "Terms & Conditions:" +#~ msgstr "Algemene voorwaarden:" + +#~ msgid "Download UBL" +#~ msgstr "" + +#~ msgid "Pay Online" +#~ msgstr "" + +#~ msgid "Payment Reference" +#~ msgstr "" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" + +#~ msgid "Invoice Approval" +#~ msgstr "" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" + +#~ msgid "Payment History" +#~ msgstr "Betalingsgeschiedenis" + +#~ msgid "Send Invoice via Email" +#~ msgstr "Factuur verzenden via e-mail" + +#~ msgid "Edit Issue" +#~ msgstr "" + +#~ msgid "Unassigned" +#~ msgstr "Niet toegewezen" + +#~ msgid "Create Issue" +#~ msgstr "" + +#~ msgid "Filter Issues" +#~ msgstr "" + +#~ msgid "Search by title or description" +#~ msgstr "" + +#~ msgid "Apply Filters" +#~ msgstr "Filters toepassen" + +#~ msgid "Page" +#~ msgstr "Pagina" + +#~ msgid "of" +#~ msgstr "van" + +#~ msgid "No issues found" +#~ msgstr "Geen gebruikers gevonden." + +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "Create New Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Delete Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Task Management" +#~ msgstr "Taakbeheer" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Link to existing task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "Select a task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "Link" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "Kanban" +#~ msgstr "Kanban" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "Kolommen beheren" -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "Sleep taken tussen kolommen om hun status bij te werken" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "Kanban-bord" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "moved to" +#~ msgstr "verplaatst naar" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "Geen taken in deze kolom." -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "Beheer Kanban-kolommen" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "Pas de kolommen en taakstatussen van uw kanbanbord aan" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Project:" +#~ msgstr "Project:" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "Globale kolommen" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "Add Column" +#~ msgstr "Kolom toevoegen" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "Lijst met Kanban-kolommen" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "Key" +#~ msgstr "Sleutel" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "Complete?" +#~ msgstr "Compleet?" -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "Sleep om de volgorde te wijzigen" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Edit column" +#~ msgstr "Kolom bewerken" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "Schakel actieve status in" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" +#~ "Geen kanbankolommen gevonden. Maak uw " +#~ "eerste kolom om aan de slag te " +#~ "gaan." -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "Tips:" +#~ msgstr "Tips:" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Sleep rijen en zet ze neer om de kolommen opnieuw te ordenen" -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "Systeemkolommen (todo, in_progress, done) " +#~ "kunnen niet worden verwijderd, maar " +#~ "kunnen worden aangepast" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "Kolommen gemarkeerd als \"Voltooid\" markeren" +#~ " taken als voltooid wanneer ze naar" +#~ " die kolom worden gesleept" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Inactieve kolommen worden verborgen op " +#~ "het kanbanbord, maar taken met die " +#~ "status blijven toegankelijk" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "Kanban-kolom verwijderen" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Weet u zeker dat u de kolom wilt verwijderen?" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "Key:" +#~ msgstr "Sleutel:" -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Opmerking: Taken met deze status blijven" +#~ " toegankelijk, maar de kolom verschijnt " +#~ "niet langer op het kanbanbord." -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "Kolom verwijderen" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "Kolommen opnieuw gerangschikt" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "Kan de kolommen niet opnieuw rangschikken. Probeer het opnieuw." -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "Kanban-kolom maken" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Voeg een nieuwe kolom toe aan uw kanbanbord" -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "Tijdintegratie" +#~ msgid "Create Kanban Column form" +#~ msgstr "Kanban-kolomformulier maken" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "Column Label" +#~ msgstr "Kolomlabel" -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "Vorig jaar" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "Status bijwerken" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "Details" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "Vorig jaar" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Gedeeltelijk" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "Vernieuwen" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "bijvoorbeeld In beoordeling, Geblokkeerd, Testen" -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "De weergavenaam die op het kanbanbord wordt weergegeven" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "Column Key" +#~ msgstr "Kolomsleutel" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "bijvoorbeeld in_review, geblokkeerd, testen" -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Unieke identificatiecode (kleine letters, geen" +#~ " spaties, gebruik onderstrepingstekens). " +#~ "Automatisch gegenereerd op basis van " +#~ "label indien leeg." + +#~ msgid "Global (for all projects)" +#~ msgstr "Globaal (voor alle projecten)" + +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Selecteer een project om projectspecifieke " +#~ "kolommen te maken, of laat het op" +#~ " Globaal staan ​​voor alle projecten" + +#~ msgid "Icon Class" +#~ msgstr "Icoon klasse" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "Lettertype Geweldige pictogramklasse" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Browse icons" +#~ msgstr "Blader door pictogrammen" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "Primair (blauw)" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "Secondary (Gray)" +#~ msgstr "Secundair (grijs)" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "Succes (groen)" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "Danger (Red)" +#~ msgstr "Gevaar (rood)" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "Waarschuwing (geel)" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "Info (Cyan)" +#~ msgstr "Info (cyaan)" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Bootstrap-kleurklasse voor styling" -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "API-token maken" +#~ msgid "Mark as Complete State" +#~ msgstr "Markeer als voltooide staat" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "" +#~ "Taken die naar deze kolom worden " +#~ "verplaatst, worden als voltooid gemarkeerd" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "Create Column" +#~ msgstr "Kolom maken" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "Note:" +#~ msgstr "Opmerking:" -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "API-token maken" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "De kolom wordt aan het einde van" +#~ " het bord toegevoegd. U kunt de " +#~ "kolommen later opnieuw rangschikken vanaf " +#~ "de beheerpagina." -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "Edit Kanban Column" +#~ msgstr "Kanban-kolom bewerken" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "Laat leeg om actueel te blijven" +#~ msgid "Modify column settings" +#~ msgstr "Kolominstellingen wijzigen" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "Genereer geheim" +#~ msgid "Edit Kanban Column form" +#~ msgstr "Kanban-kolomformulier bewerken" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "De sleutel kan na het aanmaken niet meer worden gewijzigd" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "Dit is een projectspecifieke kolom" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Dit is een globale kolom (voor alle projecten)" -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Preview" +#~ msgstr "Voorbeeld" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Inactieve kolommen worden verborgen op het kanbanbord" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "System Column:" +#~ msgstr "Systeemkolom:" -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Dit is een systeemkolom. U kunt " +#~ "het uiterlijk ervan aanpassen, maar u" +#~ " kunt het niet verwijderen." -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "Schakel de donkere modus in" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Decrease quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Adjustment quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Increase quantity" +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Kiosk adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Physical count" +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Found" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Damaged" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Apply stock adjustment" +#~ msgstr "" + +#~ msgid "Apply Adjustment" +#~ msgstr "" + +#~ msgid "Undo last adjustment" +#~ msgstr "" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "" + +#~ msgid "Transfer quantity" +#~ msgstr "" + +#~ msgid "Transfer stock" +#~ msgstr "" + +#~ msgid "Transfer Stock" +#~ msgstr "" + +#~ msgid "Stop timer" +#~ msgstr "" + +#~ msgid "Stop Timer" +#~ msgstr "Stop-timer" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "Geen taak" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "Waar werk je aan?" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "Samenvatting" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "Bron" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Website, verwijzing, advertentie..." + +#~ msgid "Lead Score" +#~ msgstr "Leadscore" + +#~ msgid "Estimated Value" +#~ msgstr "Geschatte waarde" + +#~ msgid "Save Lead" +#~ msgstr "Lood opslaan" + +#~ msgid "Name, company, email..." +#~ msgstr "Naam, bedrijf, e-mail..." + +#~ msgid "All Statuses" +#~ msgstr "Alle statussen" + +#~ msgid "Website, referral..." +#~ msgstr "Website, verwijzing..." + +#~ msgid "Score" +#~ msgstr "Scoren" + +#~ msgid "No leads found" +#~ msgstr "Geen leads gevonden" + +#~ msgid "Create First Lead" +#~ msgstr "Creëer de eerste lead" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Professioneel urenregistratie en projectmanagement" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "Een uitgebreide webgebaseerde " +#~ "urenregistratieapplicatie gebouwd met Flask, " +#~ "met projectbeheer, klantorganisatie, taakbeheer, " +#~ "facturering en geavanceerde analyses." + +#~ msgid "Invoicing" +#~ msgstr "Facturering" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "Slimme timers" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "Realtime tracking met inactieve detectie en live updates" + +#~ msgid "Client Management" +#~ msgstr "Klantenbeheer" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "Organiseer klanten met contacten, tarieven en projectrelaties" + +#~ msgid "Task System" +#~ msgstr "Taaksysteem" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Deel projecten op in taken met voortgangsregistratie" + +#~ msgid "PDF Invoices" +#~ msgstr "PDF-facturen" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Genereer professionele facturen op basis van bijgehouden tijd" + +#~ msgid "Core Features" +#~ msgstr "Kernfuncties" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Start/stop-timers met project- en taakassociatie" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Handmatige tijdinvoer met notities en tags" + +#~ msgid "Client and project organization" +#~ msgstr "Klant- en projectorganisatie" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Op rollen gebaseerde toegang en gebruikersprofielen" + +#~ msgid "Advanced Features" +#~ msgstr "Geavanceerde functies" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Branded PDF-facturering met tracking van belastingen en betalingen" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Visuele analyses en gedetailleerde rapportage" + +#~ msgid "REST API for integrations" +#~ msgstr "REST API voor integraties" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "PWA-mogelijkheden en mobielvriendelijke gebruikersinterface" + +#~ msgid "Platform Support" +#~ msgstr "Platformondersteuning" + +#~ msgid "Web Application" +#~ msgstr "Webapplicatie" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Desktopbrowsers (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Mobiel responsief ontwerp" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "Progressieve webapp (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Aanraakvriendelijke tabletinterface" + +#~ msgid "Operating Systems" +#~ msgstr "Besturingssystemen" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android en iOS (browser)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Raspberry Pi-ondersteuning" + +#~ msgid "Dockerized deployment" +#~ msgstr "Gedockeriseerde implementatie" + +#~ msgid "Database Support" +#~ msgstr "Database-ondersteuning" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (aanbevolen)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (ontwikkelaar/test)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Automatische migraties met Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Hulpmiddelen voor back-up en herstel" + +#~ msgid "Technical Specifications" +#~ msgstr "Technische specificaties" + +#~ msgid "Technology Stack" +#~ msgstr "Technologie stapel" + +#~ msgid "Backend" +#~ msgstr "Achterkant" + +#~ msgid "Frontend" +#~ msgstr "Frontend" + +#~ msgid "Deployment" +#~ msgstr "Inzet" + +#~ msgid "Key Capabilities" +#~ msgstr "Belangrijkste mogelijkheden" + +#~ msgid "Real-time" +#~ msgstr "Realtime" + +#~ msgid "i18n" +#~ msgstr "ik18n" + +#~ msgid "Open Source & Community" +#~ msgstr "Open source en gemeenschap" + +#~ msgid "Open Source Benefits" +#~ msgstr "Open source-voordelen" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Volledige broncode beschikbaar op GitHub" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Gelicentieerd onder GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "Gemeenschapsgedreven ontwikkeling" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Transparante probleemtracking en bugrapporten" + +#~ msgid "Deployment Options" +#~ msgstr "Implementatieopties" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Docker-installatiekopieën (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Zelf-gehoste implementatie met volledige controle" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Klaar voor de cloud met Compose-configuraties" + +#~ msgid "View on GitHub" +#~ msgstr "Bekijk op GitHub" + +#~ msgid "Support updates" +#~ msgstr "Ondersteunde functies" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "Hulp en bronnen verkrijgen" + +#~ msgid "Documentation" +#~ msgstr "Documentatie" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Stapsgewijze handleidingen voor alle functies." + +#~ msgid "View Help" +#~ msgstr "Bekijk Help" + +#~ msgid "System Information" +#~ msgstr "Systeeminformatie" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Status, versies en configuratiedetails." + +#~ msgid "Admin access required" +#~ msgstr "Beheerderstoegang vereist" + +#~ msgid "Community Support" +#~ msgstr "Gemeenschapsondersteuning" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "Rapporteer problemen, vraag functies aan, draag bij." + +#~ msgid "GitHub Issues" +#~ msgstr "GitHub-problemen" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "Bekijk alle tijdregistraties" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "Hier vindt u een kort overzicht van uw werk." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "Start/stop-timers met project- en taakassociatie" + +#~ msgid "Repeat last" +#~ msgstr "Gemaakt op" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Start/stop-timers met project- en taakassociatie" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "Pauze" + +#~ msgid "Break" +#~ msgstr "Rug" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "Begonnen om" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "Aanpassing" + +#~ msgid "Subtract 15 min" +#~ msgstr "" + +#~ msgid "Subtract 5 min" +#~ msgstr "" + +#~ msgid "Add 5 min" +#~ msgstr "Beheerder" + +#~ msgid "Add 15 min" +#~ msgstr "Beheerder" + +#~ msgid "Resume timer" +#~ msgstr "Slimme timers" + +#~ msgid "Resume" +#~ msgstr "Opnieuw instellen" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "Pauze" + +#~ msgid "Stop and save current time" +#~ msgstr "" + +#~ msgid "Stop & save" +#~ msgstr "" + +#~ msgid "No active timer." +#~ msgstr "Geen actieve timer." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" + +#~ msgid "Resume last session" +#~ msgstr "Einde sessie" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" + +#~ msgid "Today's Hours" +#~ msgstr "" + +#~ msgid "overtime" +#~ msgstr "Tijd" + +#~ msgid "Week's Hours" +#~ msgstr "" + +#~ msgid "Month's Hours" +#~ msgstr "" + +#~ msgid "Overtime (YTD)" +#~ msgstr "Instellingen voor overuren" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" + +#~ msgid "Loading insights…" +#~ msgstr "" + +#~ msgid "Value insights" +#~ msgstr "Rechts uitlijnen" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "Volg de tijd. Blijf georganiseerd." + +#~ msgid "Total hours tracked" +#~ msgstr "Totaal aantal gewerkte uren" + +#~ msgid "Active days" +#~ msgstr "Actieve waarschuwingen" + +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" + +#~ msgid "Hours per day last seven days" +#~ msgstr "" + +#~ msgid "Most productive day" +#~ msgstr "" + +#~ msgid "Avg session length" +#~ msgstr "" + +#~ msgid "Estimated value tracked" +#~ msgstr "Geschatte waarde" + +#~ msgid "This week vs last week" +#~ msgstr "" + +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" + +#~ msgid "hrs this week" +#~ msgstr "Tijdregistraties deze week" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "vs last week" +#~ msgstr "" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "This week" +#~ msgstr "Week" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Last week" +#~ msgstr "Vorig jaar" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "Recente inzendingen" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "View all" +#~ msgstr "Bekijk alles" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Hervatten - Start een nieuwe timer met dezelfde eigenschappen" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "Invoer bewerken" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "Dubbele invoer" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "Invoer verwijderen" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "Geen recente vermeldingen gevonden." -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "Wekelijks doel" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "Dagen resterend" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Need" +#~ msgstr "Behoefte" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "doel te bereiken" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "Geen wekelijks doel" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "Stel een wekelijks tijdsdoel in om uw voortgang bij te houden" -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "Doel creëren" -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Topprojecten (30 dagen)" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "View report" +#~ msgstr "Gebruikersrapport" -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Cirkeldiagrammen voor tijdverdeling" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Geen activiteit in de afgelopen 30 dagen." -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Start de volgtijd" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "Topprojecten (30 dagen)" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "Geen activiteit in de afgelopen 30 dagen." -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "Gedupliceerde %(count)d offerte(s)" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Fout bij genereren van PDF: %(error)s" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "Platformondersteuning" -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "Wachtwoord moet minimaal 8 tekens lang zijn" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "Snelstartgids" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "All templates" +#~ msgstr "E-mailsjablonen" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "Taak (optioneel)" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "Opmerkingen (optioneel)" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "Taak (optioneel)" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "bijvoorbeeld vergadering, ontwikkeling, admin" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "Ondersteuning van ontwikkeling" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "Volledige documentatie en gebruikershandleiding" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "Snelle navigatie" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "Secties filteren..." -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "Snel beginnen" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "Rapporten en analyses" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "Productiviteitskenmerken" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "Beheerfuncties" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "Mobiel gebruik" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "Documentatie" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "Problemen oplossen" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "TimeTracker-helpcentrum" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "Alles wat u moet weten om het maximale uit TimeTracker te halen" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "Start de volgtijd" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "Bekijk projecten" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "Genereer rapporten" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "API-tokens" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "Snelstartgids" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "For New Users" +#~ msgstr "Voor nieuwe gebruikers" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Log in met uw gebruikersnaam (geen wachtwoord vereist)" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Verken het dashboard om uw overzicht te zien" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Start uw eerste timer op een bestaand project" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "Bekijk uw tijdsinvoer in rapporten" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "Voor beheerders" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Stel klanten in in de sectie Klantbeheer" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Creëer projecten en wijs deze toe aan klanten" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Systeeminstellingen configureren (tijdzone, valuta, enz.)" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "Beheer gebruikers en machtigingen" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "Pro-tip:" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Gebruik de mobielvriendelijke interface om " +#~ "onderweg de tijd bij te houden. De" +#~ " timer blijft lopen, zelfs als u " +#~ "uw browser sluit!" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Realtime tracking met automatische detectie" +#~ " van inactiviteit en WebSocket-updates" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "Handmatige invoer" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "Registreer de tijd handmatig met aangepaste begin- en eindtijden" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "Een timer starten" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Navigeer naar de Timer-pagina of het dashboard" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "Selecteer een project in de vervolgkeuzelijst" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "Selecteer optioneel een taak voor meer gedetailleerde tracking" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Voeg notities toe over waar u aan werkt (optioneel)" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Voeg tags toe, gescheiden door komma's (optioneel)" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Klik op \"Starttimer\"" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "Timerfuncties" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Voorraadartikel" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Selecteer Artikel" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Magazijn" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Selecteer Magazijn" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Aanpassingshoeveelheid" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "Gebruik positieve waarden om de voorraad te vergroten, negatieve waarden om te verlagen" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "bijv. correctie van fysieke telling, schade, gevonden voorwerpen" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Aanvullende details over deze aanpassing" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Recordaanpassing" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Alle magazijnen" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Alle artikelen" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Datum vanaf" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Datum tot" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Item" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "Geen aanpassingen gevonden." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "Bij de hand" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Punt opnieuw ordenen" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Tekort" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Bestel aantal opnieuw" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "Geen waarschuwingen voor lage voorraad. Alle artikelen bevinden zich boven het bestelpunt." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "Realtime duurweergave" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Gebruik positieve waarden voor toevoegingen, negatieve voor verwijderingen" +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "Continues running if browser closes" +#~ msgstr "Blijft actief als de browser sluit" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Automatische stationairdetectie (configureerbaar)" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Eén actieve timer per gebruiker (configureerbaar)" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Bewegingstype" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Opbrengst" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Afval" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "WebSocket live updates" +#~ msgstr "WebSocket live-updates" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "Manual Time Entry" +#~ msgstr "Handmatige tijdinvoer" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Maak handmatig tijdinvoer aan als u " +#~ "de tijd wilt registreren die u " +#~ "buiten de computer doorbrengt of als " +#~ "u bestaande invoer wilt aanpassen." -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Required Information" +#~ msgstr "Vereiste informatie" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "Project selection" +#~ msgstr "Projectselectie" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "Startdatum en -tijd" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "Einddatum en -tijd" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "Optionele informatie" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "Taaktoewijzing" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "Beschrijving/opmerkingen" -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "bijvoorbeeld fysieke tellingscorrectie" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Beweging registreren" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Referentietype" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Handmatig" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Eenheidskosten" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Referentie" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "Tags voor categorisatie" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "Geen voorraadbewegingen gevonden." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Leverancier" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Leverancier selecteren" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Besteldatum" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Verwachte leverdatum" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Opmerkingen zichtbaar voor leverancier" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Interne opmerkingen (niet zichtbaar voor leverancier)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Artikelen" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Artikel toevoegen" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Aantal" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "SKU van leverancier" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Inkooporder maken" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Voorlopige versie" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Verstuurd" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Bevestigd" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Ontvangen" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Alle leveranciers" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "PO-nummer" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Verwachte levering" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "Geen inkooporders gevonden." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "Weet u zeker dat u deze inkooporder wilt annuleren?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "Weet u zeker dat u deze inkooporder wilt verwijderen?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Details van inkooporder" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Datum ontvangen" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Bestelde hoeveelheid" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Ontvangen hoeveelheid" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Lijntotaal" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Verzending" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Kooporder ontvangen" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Markeer als ontvangen" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "Geen artikelen in deze inkooporder." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Totaal aantal artikelen" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Totaal magazijnen" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Totale voorraadwaarde" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Artikelen met weinig voorraad" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Beschikbare rapporten" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Voorraadwaardering" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Bekijk de voorraadwaarde per magazijn" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Bewegingsgeschiedenis" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Gedetailleerd bewegingslogboek" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Omzetanalyse" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Omloopsnelheid van de voorraad" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Rapport over lage voorraad" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Artikelen onder het bestelpunt" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "%(count)s artikelen gevonden onder het bestelpunt." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Hoeveelheid bij de hand" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Aantal opnieuw bestellen" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "PO aanmaken" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Alle voorraadniveaus zijn goed" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Er zijn momenteel geen artikelen onder het bestelpunt." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "Geen bewegingen gevonden." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "De omloopsnelheid geeft aan hoe vaak voorraad per jaar wordt verkocht en vervangen. Hogere tarieven duiden op sneller bewegende items." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Totaal verkocht" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Gemiddeld voorraadniveau" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Omzetpercentage" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Snel bewegend" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normaal" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "Langzaam bewegend" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "Zeer langzaam" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "Er zijn geen verkoopgegevens gevonden voor de geselecteerde periode." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Voorraadwaardering" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Totale waarde" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "Geen artikelen gevonden met kosteninformatie." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Gereserveerd" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Vervuld" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Gereserveerd bij" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Verloopt op" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "Deze reservering vervullen?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "Deze reservering annuleren?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "Geen reserveringen gevonden." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Eenheid" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Standaardkosten" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Standaardprijs" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "Afbeeldings-URL" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Houd inventaris bij" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Beheer meerdere leveranciers voor dit artikel met verschillende prijzen." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "MOQ" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Doorlooptijd (dagen)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Voorkeur" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Leverancier toevoegen" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "Er is geen bewegingsgeschiedenis gevonden voor dit item." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU, naam, streepjescode..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Alleen actief" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Totaal aantal" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Beschikbaar" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Lage voorraad" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "Geen voorraadartikelen gevonden." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Artikeldetails" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Traceerbaar" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Voorraadniveaus per magazijn" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "Factureerbare status overschrijven" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Geavanceerde tijdinvoerfuncties" -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "Bulkinvoer" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Recente aandelenbewegingen" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Totaal bij de hand" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Totaal gereserveerd" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Totaal beschikbaar" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Waarschuwing voor lage voorraad" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Dit item is niet traceerbaar." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Actieve reserveringen" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Aantal gereserveerd" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Laatst geteld" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "Er is in geen enkel magazijn voorraad gevonden voor dit artikel." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "Geen voorraadniveaus gevonden." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Alleen lage voorraad" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "Oververkocht" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "Er zijn geen voorraadartikelen gevonden in dit magazijn." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Leverancierscode" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Unieke code voor deze leverancier (bijvoorbeeld SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Betalingsvoorwaarden" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "bijv. Netto 30, Netto 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Code, naam, e-mailadres" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "Geen leveranciers gevonden." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Leveranciersgegevens" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Voorraadartikelen van deze leverancier" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Doorlooptijd" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "Er zijn geen voorraadartikelen gekoppeld aan deze leverancier." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Voorkeursartikelen" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Van Magazijn" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Selecteer Bronmagazijn" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Naar Magazijn" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Selecteer Bestemmingsmagazijn" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Optionele opmerkingen over deze overdracht" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Overdracht maken" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "Geen overdrachten gevonden." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Magazijncode" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Unieke code voor dit magazijn (bijvoorbeeld WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "Neem contact op met E-mail" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Neem contact op met Telefoon" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "Geen magazijnen gevonden." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Magazijngegevens" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "Geen voorraadartikelen in dit magazijn." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Totale hoeveelheid" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Maak meerdere tijdsvermeldingen aan voor " +#~ "opeenvolgende dagen met hetzelfde project " +#~ "en dezelfde duur. Perfect voor normale" +#~ " werkpatronen." -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Templates" +#~ msgstr "Sjablonen" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Bewaar veelgebruikte tijdsinvoer als sjablonen" +#~ " voor snel hergebruik. Slaat project, " +#~ "taak en notities op." -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualiseer uw tijdsvermeldingen op een " +#~ "kalender. Sleep en zet neer om een" +#~ " ​​nieuwe afspraak te maken of klik" +#~ " op datums om items toe te " +#~ "voegen." -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "Project Information" +#~ msgstr "Projectinformatie" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "Beschrijvende projectnaam" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "Gekoppelde klantorganisatie" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "Projectdetails en reikwijdte" -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "Actief, voltooid of gearchiveerd" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "Billing Information" +#~ msgstr "Factureringsinformatie" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Of de tijd moet worden bijgehouden voor facturering" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Vraag goedkeuring aan" +#~ msgid "Rate for billable time calculations" +#~ msgstr "Tarief voor factureerbare tijdberekeningen" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Goedkeuringsstatus" +#~ msgid "Billing Reference" +#~ msgstr "Factureringsreferentie" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "PO-nummer of factuurcode" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "Projectoperaties" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Create new projects with client relationships" +#~ msgstr "Creëer nieuwe projecten met klantrelaties" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Edit existing projects to update details" +#~ msgstr "Bewerk bestaande projecten om details bij te werken" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Reden van afwijzing" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "Archiefprojecten om te verbergen voor timers (behoudt gegevens)" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Projecten verwijderen (verwijdert alle bijbehorende tijdsinvoer)" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Snelle acties" +#~ msgid "Best Practices" +#~ msgstr "Beste praktijken" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "Use descriptive project names" +#~ msgstr "Gebruik beschrijvende projectnamen" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Exporteren naar Excel" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Gedeeltelijk betaald" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Volledig betaald" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Factuur maken" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Genereer een nieuwe factuur voor een project en klant" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Selecteer een project" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "Als u een project selecteert, worden de klantgegevens automatisch ingevuld" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Stel nauwkeurige uurtarieven in voor facturering" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Archiveer in plaats van verwijder indien mogelijk" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Belastingtarief (%)" +#~ msgid "Use billing references for external tracking" +#~ msgstr "Gebruik factuurreferenties voor externe tracking" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Tips" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "Het klantbeheersysteem helpt u bij het" +#~ " organiseren van uw werk per " +#~ "klantorganisatie, waardoor fouten worden " +#~ "voorkomen en de projectcreatie wordt " +#~ "gestroomlijnd." -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "Kies het juiste project om de klantgegevens automatisch in te vullen." +#~ msgid "Client Information" +#~ msgstr "Klantinformatie" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "U kunt notities en voorwaarden aanpassen voordat u de factuur verzendt." +#~ msgid "Organization Name" +#~ msgstr "Organisatienaam" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Factuur bewerken" +#~ msgid "Company or client name" +#~ msgstr "Bedrijfs- of klantnaam" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Update factuurgegevens, artikelen en voorwaarden" +#~ msgid "Primary contact details" +#~ msgstr "Primaire contactgegevens" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Op tijd gebaseerde diensten en uurwerk" +#~ msgid "Email & Phone" +#~ msgstr "E-mail en telefoon" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Contact information" +#~ msgstr "Contactgegevens" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Business address" +#~ msgstr "Zakelijk adres" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Benefits" +#~ msgstr "Voordelen" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Selecteer voorraadartikel" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "Dropdownselectie voorkomt typefouten" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "bijvoorbeeld webontwikkelingsdiensten" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Standaardtarieven vullen projecten automatisch in" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "Consistente naamgeving van klanten" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Artikel verwijderen" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Artikelen Subtotaal" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Factureerbare kosten zoals reizen, maaltijden en materialen" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Kosten toevoegen" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "bijvoorbeeld reizen naar een klantbijeenkomst" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Gekoppelde onkosten - titel kan niet worden bewerkt" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Gekoppelde onkosten: beschrijving kan niet worden bewerkt" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Gekoppelde onkosten - categorie kan niet worden bewerkt" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Reis" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Maaltijden" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Accommodatie" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Benodigdheden" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Software" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Apparatuur" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Diensten" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Marketing" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Opleiding" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Ander" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Gekoppelde onkosten: bedrag kan niet worden bewerkt" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Gekoppelde onkosten - datum kan niet worden bewerkt" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Ontkoppel de onkosten van de factuur" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Kosten Subtotaal" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Extra goederen" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Producten, materialen, licenties en andere goederen" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Voeg goed toe" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Prijs" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "bijvoorbeeld softwarelicentie" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Product" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Dienst" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Materiaal" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "Goed verwijderen" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Subtotaal goederen" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Live voorbeeld" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Betaling" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Goederen" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Genereer uit tijd/kosten" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Betaling registreren" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "PDF exporteren" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "CSV exporteren" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Dubbele factuur" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "Weet u zeker dat u deze uitgave van de factuur wilt ontkoppelen?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Ontkoppel de kosten" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Ontkoppelen" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "Voeg ten minste één artikel, uitgave of extra goed toe aan de factuur" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Genereer op basis van tijd, kosten en goederen" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "Selecteer niet-gefactureerde tijdsinvoer, projectkosten en extra goederen om aan deze factuur toe te voegen" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Terug naar Bewerken" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Niet-gefactureerde tijdsinvoer" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "inzendingen" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "Er zijn geen niet-gefactureerde tijdsvermeldingen gevonden voor dit project." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Niet-gefactureerde projectkosten" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "Er zijn geen niet-gefactureerde kosten gevonden voor dit project." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Niet-gefactureerde factureerbare kosten" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Leverancier" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "Er zijn geen niet-gefactureerde kosten gevonden voor dit project." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Project Extra goederen" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "Er zijn geen extra goederen gevonden voor dit project." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Geselecteerde toevoegen aan factuur" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Selectie Samenvatting" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Totaal beschikbare uren" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Totaal beschikbare kosten" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Totaal beschikbare uitgaven" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Totaal beschikbare goederen" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Overzicht prepaid-uren" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "Het plan omvat %(hours)s uren per cyclus (wordt gereset op dag %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "Verbruikt: %(consumed)s h • Resterend: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Er is nog geen prepaid-gebruik geregistreerd voor de geselecteerde periode." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "U kunt meerdere tijdsvermeldingen, kosten, onkosten en extra goederen selecteren." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "Bij het maken van items worden tijdsinvoer gegroepeerd per taak of project." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "Kosten en extra goederen worden als afzonderlijke factuurposten toegevoegd." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "Uitgaven zijn gekoppeld aan de factuur en verschijnen in een apart gedeelte." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "Selecteer minimaal één tijdinvoer, kosten, onkosten of extra goed" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Facturen filteren" +#~ msgid "Easier project organization" +#~ msgstr "Gemakkelijkere projectorganisatie" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Factuurnummer of klant" +#~ msgid "Project Count" +#~ msgstr "Projecttelling" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Geselecteerde facturen verwijderen" +#~ msgid "Total and active projects" +#~ msgstr "Totale en actieve projecten" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Status wijzigen voor geselecteerde facturen" +#~ msgid "Total hours worked" +#~ msgstr "Totaal aantal gewerkte uren" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "Kostenraming" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Estimated billing amounts" +#~ msgstr "Geschatte factuurbedragen" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Deel projecten op in beheersbare taken" +#~ " met gedetailleerde tracking en " +#~ "voortgangsbewaking." -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Factuur verwijderen" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Waarschuwing:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "Weet u zeker dat u de factuur wilt verwijderen?" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "Alle factuuritems, extra goederen en betalingsgegevens die aan deze factuur zijn gekoppeld, worden permanent verwijderd." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "FACTUUR" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Factuur #" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Factuur aan" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Hoeveelheid (uren)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "Gegenereerd op basis van %(num)d tijdinvoer" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Kosten" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Subtotaal:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "Belasting (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Totaal bedrag:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Opmerkingen:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Voorwaarden:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Betalingsinformatie:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Algemene voorwaarden:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Task Properties" +#~ msgstr "Taakeigenschappen" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "Naam & Beschrijving" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "Duidelijke taakidentificatie" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "Prioriteitsniveaus" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Laag, gemiddeld, hoog, dringend" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "Vervaldata" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Betalingsgeschiedenis" +#~ msgid "Deadline tracking" +#~ msgstr "Het bijhouden van deadlines" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Factuur verzenden via e-mail" +#~ msgid "Assignment" +#~ msgstr "Opdracht" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "Taakeigendom" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "Niet toegewezen" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "Status volgen" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "Te doen - Niet gestart" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "In Progress - Currently working" +#~ msgstr "In uitvoering - Werkt momenteel" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "Filters toepassen" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Pagina" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "van" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "Geen gebruikers gevonden." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "Beoordeling - Klaar voor beoordeling" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "Klaar - Voltooid" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "Geannuleerd - Niet nodig" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "Functies voor tijdregistratie" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Taakbeheer" +#~ msgid "Start timers directly from tasks" +#~ msgstr "Start timers rechtstreeks vanuit taken" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Koppel tijdsinvoer aan specifieke taken" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Houd geschatte versus werkelijke uren bij" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "Bewaak de taakvoortgang automatisch" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Task Views" +#~ msgstr "Taakweergaven" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Mijn taken - Uw toegewezen taken" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Alle taken - Volledige takenlijst" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Kolommen beheren" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Achterstallige taken - Achterstallige items" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Sleep taken tussen kolommen om hun status bij te werken" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Projecttaken - Taken binnen projecten" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "Kanban-bord" +#~ msgid "Collaboration Features" +#~ msgstr "Samenwerkingsfuncties" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "verplaatst naar" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Taakopmerkingen - Discussies over taken" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "Geen taken in deze kolom." +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Ondersteuning voor prijsverlagingen - Rijke opmaak in beschrijvingen" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Beheer Kanban-kolommen" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "Gebruikersvermeldingen - Teamleden taggen (indien ingeschakeld)" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Pas de kolommen en taakstatussen van uw kanbanbord aan" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Bestandsbijlagen - Voeg bestanden toe aan taken (indien ingeschakeld)" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Project:" +#~ msgid "Markdown Formatting" +#~ msgstr "Markdown-opmaak" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Globale kolommen" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "Taak- en projectbeschrijvingen ondersteunen Markdown:" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Kolom toevoegen" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Vet**, *Cursief*, ~~Doorhalen~~" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Lijst met Kanban-kolommen" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# Koppen, - Lijsten, [Links](url)" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Sleutel" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```codeblokken```, tabellen, afbeeldingen" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "Compleet?" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualiseer uw workflow met een " +#~ "Kanban-bord met slepen en neerzetten " +#~ "voor intuïtief taakbeheer." -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Sleep om de volgorde te wijzigen" +#~ msgid "Board Features" +#~ msgstr "Bordfuncties" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Kolom bewerken" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Aanpasbare kolommen die overeenkomen met taakstatussen" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Schakel actieve status in" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Taken tussen kolommen slepen en neerzetten" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "Geen kanbankolommen gevonden. Maak uw eerste kolom om aan de slag te gaan." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Tips:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Sleep rijen en zet ze neer om de kolommen opnieuw te ordenen" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "Systeemkolommen (todo, in_progress, done) kunnen niet worden verwijderd, maar kunnen worden aangepast" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "Kolommen gemarkeerd als \"Voltooid\" markeren taken als voltooid wanneer ze naar die kolom worden gesleept" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "Inactieve kolommen worden verborgen op het kanbanbord, maar taken met die status blijven toegankelijk" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Kanban-kolom verwijderen" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "Weet u zeker dat u de kolom wilt verwijderen?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Sleutel:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "Opmerking: Taken met deze status blijven toegankelijk, maar de kolom verschijnt niet langer op het kanbanbord." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Kolom verwijderen" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Kolommen opnieuw gerangschikt" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "Kan de kolommen niet opnieuw rangschikken. Probeer het opnieuw." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Kanban-kolom maken" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Voeg een nieuwe kolom toe aan uw kanbanbord" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Kanban-kolomformulier maken" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Kolomlabel" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "bijvoorbeeld In beoordeling, Geblokkeerd, Testen" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "De weergavenaam die op het kanbanbord wordt weergegeven" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Kolomsleutel" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "bijvoorbeeld in_review, geblokkeerd, testen" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "Unieke identificatiecode (kleine letters, geen spaties, gebruik onderstrepingstekens). Automatisch gegenereerd op basis van label indien leeg." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Globaal (voor alle projecten)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "Selecteer een project om projectspecifieke kolommen te maken, of laat het op Globaal staan ​​voor alle projecten" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Icoon klasse" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Lettertype Geweldige pictogramklasse" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Blader door pictogrammen" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Primair (blauw)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Secundair (grijs)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Succes (groen)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Gevaar (rood)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Waarschuwing (geel)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Info (cyaan)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Bootstrap-kleurklasse voor styling" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Markeer als voltooide staat" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "Taken die naar deze kolom worden verplaatst, worden als voltooid gemarkeerd" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Kolom maken" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Opmerking:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "De kolom wordt aan het einde van het bord toegevoegd. U kunt de kolommen later opnieuw rangschikken vanaf de beheerpagina." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Kanban-kolom bewerken" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Kolominstellingen wijzigen" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Kanban-kolomformulier bewerken" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "De sleutel kan na het aanmaken niet meer worden gewijzigd" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Dit is een projectspecifieke kolom" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Dit is een globale kolom (voor alle projecten)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Voorbeeld" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Inactieve kolommen worden verborgen op het kanbanbord" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Systeemkolom:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "Dit is een systeemkolom. U kunt het uiterlijk ervan aanpassen, maar u kunt het niet verwijderen." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Filter op project, gebruiker of prioriteit" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "Quick search across all tasks" +#~ msgstr "Snel zoeken in alle taken" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Schakel de donkere modus in" +#~ msgid "Using the Kanban Board" +#~ msgstr "Het Kanbanbord gebruiken" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Toegang via het Takenmenu of de projectpagina" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "Sleep taken naar verschillende kolommen om de status te wijzigen" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Klik op een taakkaart om details te bekijken/bewerken" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Gebruik filters om u op specifiek werk te concentreren" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "Het Kanban-bord is perfect voor " +#~ "sprintplanning en dagelijkse stand-ups. " +#~ "Elke kolom vertegenwoordigt een fase in" +#~ " uw workflow!" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "Kosten bijhouden" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Houd zakelijke uitgaven bij, beheer " +#~ "bonnen en handel terugbetalingen efficiënt " +#~ "af." -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "Kostenkenmerken" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Categoriseer uitgaven (reizen, maaltijden, benodigdheden, enz.)" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "Voeg afbeeldingen en documenten van ontvangstbewijzen toe" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Houd bedragen, belastingen en betaalmethoden bij" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Goedkeuringsworkflow voor onkostenverzoeken" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "Facturering en terugbetaling" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Markeer onkosten als factureerbaar aan klanten" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "Kosten opnemen in klantfacturen" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "Volg de terugbetalingsstatus" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "Koppel uitgaven aan specifieke projecten" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "Kosten registreren" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "Vul de gegevens in en upload de kassabon" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "Ter goedkeuring indienen" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Admin reviews and approves" +#~ msgstr "De beheerder beoordeelt en keurt deze goed" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "Factuur/vergoeding" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Toevoegen aan factuur of vergoeden" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "Volg de betaling" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "Bewaak de terugbetalingsstatus" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Professional Invoicing" +#~ msgstr "Professionele facturatie" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "Professionele PDF-generatie" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Stop-timer" +#~ msgid "Company branding and logos" +#~ msgstr "Bedrijfsbranding en logo's" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "Automatische factuurnummering" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "Belastingberekeningen" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Time Integration" +#~ msgstr "Tijdintegratie" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Geen taak" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Generate from time entries" +#~ msgstr "Genereer op basis van tijdsinvoer" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "Waar werk je aan?" +#~ msgid "Smart grouping by task/project" +#~ msgstr "Slim groeperen per taak/project" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "Voorkom dubbele facturering" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "Gebruik projectuurtarieven" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "Klant- en projectgegevens instellen" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Add Items" +#~ msgstr "Artikelen toevoegen" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Generate from time or add manually" +#~ msgstr "Genereer op tijd of voeg handmatig toe" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "Beoordelen en verzenden" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "Exporteer PDF en update de status" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "Status en betalingen monitoren" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Standard Reports" +#~ msgstr "Standaardrapporten" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Projectrapport - Uitsplitsing van de tijd per project" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Gebruikersrapport - Individuele prestatiestatistieken" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Samenvattend rapport - Belangrijkste statistieken en trends" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Tijdsinvoerrapport - Gedetailleerde tijdlogboeken" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Export Options" +#~ msgstr "Exportopties" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "CSV-export - Voor externe analyse" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "Samenvatting" +#~ msgid "Configurable delimiters" +#~ msgstr "Configureerbare scheidingstekens" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "Custom date ranges" +#~ msgstr "Aangepaste datumbereiken" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Bron" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Website, verwijzing, advertentie..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Leadscore" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Geschatte waarde" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Lood opslaan" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Naam, bedrijf, e-mail..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Alle statussen" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Website, verwijzing..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Scoren" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "Geen leads gevonden" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Creëer de eerste lead" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "Filtered data export" +#~ msgstr "Gefilterde gegevensexport" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "Filteropties" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Datumbereik - Aangepaste begin- en einddatum" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Project - Filter op specifieke projecten" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "User - Filter by team members" +#~ msgstr "Gebruiker - Filter op teamleden" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Professioneel urenregistratie en projectmanagement" +#~ msgid "Client - Filter by client organization" +#~ msgstr "Klant - Filter op klantorganisatie" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "Een uitgebreide webgebaseerde urenregistratieapplicatie gebouwd met Flask, met projectbeheer, klantorganisatie, taakbeheer, facturering en geavanceerde analyses." +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Opgeslagen filters - Bewaar veelgebruikte filters" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Facturering" +#~ msgid "Visual Analytics" +#~ msgstr "Visuele analyse" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "Interactive bar charts" +#~ msgstr "Interactieve staafdiagrammen" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Slimme timers" +#~ msgid "Time distribution pie charts" +#~ msgstr "Cirkeldiagrammen voor tijdverdeling" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "Realtime tracking met inactieve detectie en live updates" +#~ msgid "Trend analysis over time" +#~ msgstr "Trendanalyse in de tijd" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Klantenbeheer" +#~ msgid "Mobile-optimized charts" +#~ msgstr "Voor mobiel geoptimaliseerde grafieken" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Organiseer klanten met contacten, tarieven en projectrelaties" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Gebruik opgeslagen filters om snel " +#~ "toegang te krijgen tot uw meest " +#~ "voorkomende rapportweergaven. Bewaar filters " +#~ "voor wekelijkse beoordelingen, maandelijkse " +#~ "facturering of specifieke projecttracking!" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Taaksysteem" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Verhoog uw efficiëntie met sneltoetsen, " +#~ "opdrachtenpalet en automatiseringsfuncties." -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Deel projecten op in taken met voortgangsregistratie" +#~ msgid "Command Palette" +#~ msgstr "Commandopalet" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "PDF-facturen" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "" +#~ "Krijg direct toegang tot elke functie" +#~ " zonder het toetsenbord te verlaten" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Genereer professionele facturen op basis van bijgehouden tijd" +#~ msgid "Opening the Command Palette" +#~ msgstr "Het opdrachtenpalet openen" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Kernfuncties" +#~ msgid "Press the question mark key" +#~ msgstr "Druk op de vraagtekentoets" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Start/stop-timers met project- en taakassociatie" +#~ msgid "Quick search" +#~ msgstr "Snel zoeken" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Handmatige tijdinvoer met notities en tags" +#~ msgid "Go to Projects" +#~ msgstr "Ga naar Projecten" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Klant- en projectorganisatie" +#~ msgid "Go to Tasks" +#~ msgstr "Ga naar Taken" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Op rollen gebaseerde toegang en gebruikersprofielen" +#~ msgid "New Time Entry" +#~ msgstr "Nieuwe tijdinvoer" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Geavanceerde functies" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Sneltoetsen op het toetsenbord" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Branded PDF-facturering met tracking van belastingen en betalingen" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Navigeer sneller met toetsenbordgestuurde " +#~ "opdrachten. Shift+ indrukken? om alle " +#~ "snelkoppelingen te zien." -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Visuele analyses en gedetailleerde rapportage" +#~ msgid "Global Search" +#~ msgstr "Globaal zoeken" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "REST API voor integraties" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "Vind snel projecten, taken, klanten en tijdsinvoer overal in de app." -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "PWA-mogelijkheden en mobielvriendelijke gebruikersinterface" +#~ msgid "Email Notifications" +#~ msgstr "E-mailmeldingen" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Platformondersteuning" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Ontvang via e-mail meldingen over " +#~ "taaktoewijzingen, achterstallige facturen en " +#~ "wekelijkse overzichten." -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Webapplicatie" +#~ msgid "Administrator Features" +#~ msgstr "Beheerderfuncties" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Desktopbrowsers (Chrome, Firefox, Safari, Edge)" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Creëer nieuwe gebruikers met flexibele authenticatie" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Mobiel responsief ontwerp" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Wijs aangepaste rollen toe met specifieke machtigingen" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "Progressieve webapp (PWA)" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Gebruikersaccounts activeren/deactiveren" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Aanraakvriendelijke tabletinterface" +#~ msgid "View user statistics and activity" +#~ msgstr "Bekijk gebruikersstatistieken en activiteit" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Besturingssystemen" +#~ msgid "Generate API tokens for users" +#~ msgstr "Genereer API-tokens voor gebruikers" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "Access Control" +#~ msgstr "Toegangscontrole" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android en iOS (browser)" +#~ msgid "Granular role-based permissions system" +#~ msgstr "Gedetailleerd, op rollen gebaseerd machtigingssysteem" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Raspberry Pi-ondersteuning" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Aangepaste rollen met gedetailleerde toegang" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Gedockeriseerde implementatie" +#~ msgid "User data access controls" +#~ msgstr "Toegangscontroles voor gebruikersgegevens" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Database-ondersteuning" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "OIDC/SSO-integratie (Azure AD, Authelia, etc.)" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (aanbevolen)" +#~ msgid "API token management for integrations" +#~ msgstr "API-tokenbeheer voor integraties" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (ontwikkelaar/test)" +#~ msgid "Authentication Methods" +#~ msgstr "Authenticatiemethoden" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Automatische migraties met Flask-Migrate" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Alleen gebruikersnaam (eenvoudig intern gebruik)" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Hulpmiddelen voor back-up en herstel" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (ondernemingsauthenticatie)" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Technische specificaties" +#~ msgid "Both methods simultaneously" +#~ msgstr "Beide methoden tegelijk" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Technologie stapel" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Automatische roltoewijzing via groepen" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "Achterkant" +#~ msgid "Role & Permission Management" +#~ msgstr "Rol- en machtigingsbeheer" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "Frontend" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Maak aangepaste rollen buiten Beheerder/Gebruiker" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Inzet" +#~ msgid "Set granular permissions per feature" +#~ msgstr "Stel gedetailleerde machtigingen per functie in" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Belangrijkste mogelijkheden" +#~ msgid "Assign users to multiple roles" +#~ msgstr "Wijs gebruikers toe aan meerdere rollen" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "Realtime" +#~ msgid "View and manage all permissions" +#~ msgstr "Bekijk en beheer alle rechten" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "ik18n" +#~ msgid "General Settings" +#~ msgstr "Algemene instellingen" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "Open source en gemeenschap" +#~ msgid "Timezone and locale settings" +#~ msgstr "Tijdzone- en landinstellingen" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Open source-voordelen" +#~ msgid "Currency configuration" +#~ msgstr "Valutaconfiguratie" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Volledige broncode beschikbaar op GitHub" +#~ msgid "Time rounding rules" +#~ msgstr "Regels voor tijdafronding" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Gelicentieerd onder GPL v3.0" +#~ msgid "Self-registration settings" +#~ msgstr "Instellingen voor zelfregistratie" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Gemeenschapsgedreven ontwikkeling" +#~ msgid "Timer Settings" +#~ msgstr "Timerinstellingen" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Transparante probleemtracking en bugrapporten" +#~ msgid "Idle timeout configuration" +#~ msgstr "Configuratie voor time-out bij inactiviteit" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Implementatieopties" +#~ msgid "Single active timer mode" +#~ msgstr "Enkele actieve timermodus" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Docker-installatiekopieën (GHCR)" +#~ msgid "Timer display preferences" +#~ msgstr "Timerweergavevoorkeuren" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Zelf-gehoste implementatie met volledige controle" +#~ msgid "Notification settings" +#~ msgstr "Meldingsinstellingen" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Klaar voor de cloud met Compose-configuraties" +#~ msgid "Database Management" +#~ msgstr "Databasebeheer" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Bekijk op GitHub" +#~ msgid "Create manual database backups" +#~ msgstr "Handmatige databaseback-ups maken" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "Ondersteunde functies" +#~ msgid "View database migration status" +#~ msgstr "Bekijk de databasemigratiestatus" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Monitor database performance" +#~ msgstr "Bewaak de databaseprestaties" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Clean up old data and logs" +#~ msgstr "Ruim oude gegevens en logs op" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "System Monitoring" +#~ msgstr "Systeembewaking" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Hulp en bronnen verkrijgen" +#~ msgid "View system information and health" +#~ msgstr "Bekijk systeeminformatie en status" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Documentatie" +#~ msgid "Monitor application performance" +#~ msgstr "Bewaak de prestaties van applicaties" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Stapsgewijze handleidingen voor alle functies." +#~ msgid "Review system logs and errors" +#~ msgstr "Controleer systeemlogboeken en fouten" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Bekijk Help" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Mobielvriendelijke functies" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Systeeminformatie" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Geoptimaliseerd voor telefoons en tablets" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Status, versies en configuratiedetails." +#~ msgid "Touch-friendly interface" +#~ msgstr "Aanraakvriendelijke interface" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "Beheerderstoegang vereist" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "Adaptieve lay-outs voor alle schermformaten" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Gemeenschapsondersteuning" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Hoog contrast voor zichtbaarheid buitenshuis" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Rapporteer problemen, vraag functies aan, draag bij." +#~ msgid "Mobile Navigation" +#~ msgstr "Mobiele navigatie" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "GitHub-problemen" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Onderste tabbalk voor gemakkelijke toegang" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Quick access to dashboard" +#~ msgstr "Snelle toegang tot dashboard" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "Bekijk alle tijdregistraties" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "Hier vindt u een kort overzicht van uw werk." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "Start/stop-timers met project- en taakassociatie" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "Gemaakt op" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "Start/stop-timers met project- en taakassociatie" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "One-tap time logging" +#~ msgstr "Tijdregistratie met één tik" -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "Pauze" +#~ msgid "Mobile-optimized reports" +#~ msgstr "Voor mobiel geoptimaliseerde rapporten" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "Rug" +#~ msgid "Installation" +#~ msgstr "Installatie" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Open TimeTracker in uw mobiele browser" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Zoek naar de optie \"Toevoegen aan startscherm\"." -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Begonnen om" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Volg browserspecifieke installatieprompts" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Start vanaf uw startscherm als een native app" -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "Aanpassing" +#~ msgid "PWA Benefits" +#~ msgstr "PWA-voordelen" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "Offline mogelijkheden voor basisfuncties" + +#~ msgid "Faster loading times" +#~ msgstr "Snellere laadtijden" + +#~ msgid "Native app-like experience" +#~ msgstr "Native app-achtige ervaring" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Pushmeldingen (waar ondersteund)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "Interactieve staafdiagrammen" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "Technische specificaties" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "Documentatie" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Problemen oplossen en veelgestelde vragen" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "Wat gebeurt er als ik vergeet mijn timer te stoppen?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "De timer blijft lopen totdat u " +#~ "deze handmatig stopt. U kunt uw " +#~ "actieve timer zien op het dashboard " +#~ "en de timerpagina. De timer blijft " +#~ "bestaan, zelfs als u uw browser " +#~ "sluit of uw apparaat opnieuw opstart." +#~ " Als detectie van inactiviteit is " +#~ "ingeschakeld, kan de timer automatisch " +#~ "pauzeren na de geconfigureerde time-" +#~ "outperiode." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "Kan ik tijdinvoer bewerken nadat deze is aangemaakt?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Ja, u kunt elke tijdsinvoer bewerken " +#~ "door op de knop Bewerken in de " +#~ "tijdinvoerlijst te klikken. U kunt het" +#~ " project, de begin-/eindtijden, notities, " +#~ "tags, factureerbare status en taaktoewijzing" +#~ " wijzigen. Beheerders kunnen alle " +#~ "tijdgegevens bewerken, terwijl gewone " +#~ "gebruikers alleen hun eigen gegevens " +#~ "kunnen bewerken." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "Hoe houd ik de tijd bij voor meerdere projecten?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "Standaard kunt u slechts één actieve " +#~ "timer tegelijk hebben. Om van project" +#~ " te wisselen, stopt u uw huidige " +#~ "timer en start u een nieuwe voor" +#~ " het andere project. Als alternatief " +#~ "kunt u handmatige tijdinvoer voor eerder" +#~ " werk aanmaken of het systeem " +#~ "configureren om meerdere actieve timers " +#~ "toe te staan ​​(beheerdersinstelling)." + +#~ msgid "How do I export my time data?" +#~ msgstr "Hoe exporteer ik mijn tijdgegevens?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Ga naar de pagina Rapporten en " +#~ "gebruik de functie \"CSV exporteren\". U" +#~ " kunt filters toepassen om specifieke " +#~ "gegevens te exporteren, of om alle " +#~ "tijdsinvoer te exporteren. Het CSV-" +#~ "bestand bevat alle tijdsinvoergegevens en " +#~ "kan worden geopend in Excel of " +#~ "andere spreadsheettoepassingen. U kunt het " +#~ "scheidingsteken ook configureren voor " +#~ "verschillende regionale standaarden." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "Wat is het verschil tussen factureerbare en niet-factureerbare tijd?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "Factureerbare tijd wordt bijgehouden voor " +#~ "factureringsdoeleinden aan klanten en er " +#~ "kan een uurtarief aan gekoppeld zijn." +#~ " Niet-factureerbare tijd is voor " +#~ "intern werk dat niet aan klanten " +#~ "in rekening wordt gebracht. U kunt " +#~ "individuele tijdsinvoer markeren als " +#~ "factureerbaar of niet-factureerbaar, en " +#~ "projecten kunnen standaard factureerbare " +#~ "instellingen hebben. Dit onderscheid is " +#~ "cruciaal voor een nauwkeurige facturatie " +#~ "en winstgevendheidsanalyse." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "Hoe maak ik een factuur aan van mijn urenregistraties?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Navigeer naar Facturen → Factuur maken," +#~ " stel de klant- en projectgegevens in" +#~ " en gebruik vervolgens \"Genereren uit " +#~ "tijdsinvoer\" om automatisch factuuritems te" +#~ " maken op basis van uw bijgehouden" +#~ " tijd. U kunt filteren op datumbereik" +#~ " en project, en het systeem groepeert" +#~ " tijdinvoer op intelligente wijze. " +#~ "Controleer de gegenereerde items en " +#~ "exporteer ze als een professionele PDF." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "Kan ik TimeTracker op mijn mobiele apparaat gebruiken?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "Ja! TimeTracker is volledig responsive " +#~ "en werkt prima op mobiele apparaten. " +#~ "U kunt het installeren als een " +#~ "Progressive Web App (PWA) voor een " +#~ "native-achtige ervaring. De mobiele " +#~ "interface bevat een tabbalk onderaan " +#~ "voor eenvoudige navigatie en aanraakgevoelige" +#~ " bedieningselementen voor tijdregistratie " +#~ "onderweg." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "Hoe gebruik ik het opdrachtenpalet en de sneltoetsen?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Druk op de vraagtekentoets (?) om " +#~ "het opdrachtenpalet te openen. Van " +#~ "daaruit kunt u typen om naar elk" +#~ " actie- of navigatiedoel te zoeken. " +#~ "Gebruik toetsenbordreeksen zoals \"g d\" " +#~ "voor Dashboard, \"g p\" voor Projecten" +#~ " of \"n e\" voor Nieuw item. " +#~ "Shift+ indrukken? om alle beschikbare " +#~ "snelkoppelingen te zien. Druk op Ctrl+K" +#~ " (of Cmd+K op Mac) voor snel " +#~ "zoeken." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "Hoe maak ik bulktijdinvoer voor meerdere dagen?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Navigeer naar Werk → Bulktijdinvoer. " +#~ "Selecteer uw project, kies een " +#~ "datumbereik, stel uw dagelijkse begin- " +#~ "en eindtijden in en sla eventueel " +#~ "weekenden over. Het systeem maakt voor" +#~ " elke dag in het bereik identieke " +#~ "tijdinvoer aan. Dit is perfect voor " +#~ "het vastleggen van reguliere werkpatronen " +#~ "of het invullen van vroegere tijden " +#~ "waarin u consistente uren werkte." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "Wat zijn tijdregistratiesjablonen en hoe gebruik ik ze?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "Met tijdinvoersjablonen kunt u veelgebruikte" +#~ " tijdinvoerconfiguraties opslaan. Wanneer u " +#~ "een handmatige tijdinvoer maakt, vinkt u" +#~ " \"Opslaan als sjabloon\" aan om het" +#~ " project, de taak en de notities " +#~ "op te slaan. Later, wanneer u " +#~ "nieuwe vermeldingen maakt, kunt u een" +#~ " sjabloon selecteren om deze gegevens " +#~ "snel in te vullen. Sjablonen zijn " +#~ "persoonlijk en alleen voor jou " +#~ "zichtbaar." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "Hoe houd ik uitgaven bij en voeg ik deze toe aan facturen?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Ga naar Kosten → Nieuwe kosten om" +#~ " zakelijke uitgaven vast te leggen. " +#~ "Upload afbeeldingen van ontvangstbewijzen, " +#~ "categoriseer de uitgaven en markeer deze" +#~ " indien nodig als factureerbaar. Bij " +#~ "het aanmaken van facturen kunt u " +#~ "deze uitgaven als regelposten opnemen. " +#~ "Onkosten ondersteunen goedkeuringsworkflows en " +#~ "het volgen van terugbetalingen, en " +#~ "kunnen aan specifieke projecten worden " +#~ "gekoppeld." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "Kan ik Markdown gebruiken in beschrijvingen?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "Ja! Project- en taakbeschrijvingen " +#~ "ondersteunen volledige Markdown-opmaak. U " +#~ "kunt vetgedrukte, cursieve, koppen, lijsten," +#~ " koppelingen, codeblokken, tabellen en " +#~ "afbeeldingen gebruiken. Hierdoor kunt u " +#~ "rechtstreeks in uw projecten en taken" +#~ " rijke, goed opgemaakte documentatie " +#~ "creëren. De Markdown-editor bevat een" +#~ " voorbeeldmodus en ondersteunt een donker" +#~ " thema." + +#~ msgid "Where can I get additional help?" +#~ msgstr "Waar kan ik extra hulp krijgen?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "Meld problemen en vraag functies aan op" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "Als beheerder heeft u toegang tot " +#~ "aanvullende systeeminformatie en diagnostiek " +#~ "in de" + +#~ msgid "section." +#~ msgstr "sectie." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "Nog steeds hulp nodig?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "Kunt u niet vinden wat u zoekt? Hier zijn aanvullende bronnen:" + +#~ msgid "Complete Documentation" +#~ msgstr "" + +#~ msgid "Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started" +#~ msgstr "" + +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "Beheerder" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "Beheerder" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "Slimme timers" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "Opnieuw instellen" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "GitHub-opslagplaats" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Pauze" +#~ msgid "Report Issue" +#~ msgstr "Rapporteer probleem" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Open support" +#~ msgstr "Steun" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Geen actieve timer." +#~ msgid "Search Results" +#~ msgstr "Zoekresultaten" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "Zoek naar notities of tags" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "Einde sessie" +#~ msgid "Results" +#~ msgstr "Resultaten" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "Weet u zeker dat u deze " +#~ "tijdsinvoer wilt verwijderen? Deze actie " +#~ "kan niet ongedaan worden gemaakt." -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "No results found" +#~ msgstr "Geen resultaten gevonden" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "Tijd" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "Probeer een andere zoekopdracht of controleer uw spelling." -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "bijvoorbeeld een klantbijeenkomst, een locatiebezoek" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "Aanvullende details..." -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "Instellingen voor overuren" +#~ msgid "e.g., Office, Home" +#~ msgstr "bijvoorbeeld kantoor, thuis" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "bijvoorbeeld klantlocatie, luchthaven" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "bijvoorbeeld 12345" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "bijvoorbeeld 12400" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "Rechts uitlijnen" +#~ msgid "e.g., VW Golf" +#~ msgstr "bijvoorbeeld VW Golf" -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "Volg de tijd. Blijf georganiseerd." +#~ msgid "e.g., ABC-123" +#~ msgstr "bijvoorbeeld ABC-123" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "Totaal aantal gewerkte uren" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "Tijdregistratie" -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "Actieve waarschuwingen" +#~ msgid "Back to Mileage" +#~ msgstr "Terug naar Rollen" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "Datum vanaf" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "Add Point" +#~ msgstr "Notitie toevoegen" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "Kosten bijhouden" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "Geschatte waarde" +#~ msgid "Track ID" +#~ msgstr "Bijgehouden" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Idle" +#~ msgstr "Titel" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "Tijdregistraties deze week" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Tracking" +#~ msgstr "Tijdregistratie" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "Week" +#~ msgid "GPS tracking started" +#~ msgstr "Start de volgtijd" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "Vorig jaar" +#~ msgid "Track point added" +#~ msgstr "Volg de betaling" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "GPS tracking stopped" +#~ msgstr "Start de volgtijd" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Expense created" +#~ msgstr "Kosten afgewezen" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Recente inzendingen" +#~ msgid "Filter Mileage" +#~ msgstr "Kilometerstand filteren" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "Bekijk alles" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Hervatten - Start een nieuwe timer met dezelfde eigenschappen" +#~ msgid "Purpose, location..." +#~ msgstr "Doel, locatie..." -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Invoer bewerken" +#~ msgid "Optional approval notes..." +#~ msgstr "Optionele goedkeuringsopmerkingen..." -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Dubbele invoer" +#~ msgid "Rejection reason (required)" +#~ msgstr "Reden van afwijzing (verplicht)" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Invoer verwijderen" +#~ msgid "More navigation" +#~ msgstr "Mobiele navigatie" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "Geen recente vermeldingen gevonden." +#~ msgid "Main" +#~ msgstr "E-mail" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "Typ een opdracht of zoek..." -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Wekelijks doel" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Dagen resterend" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Behoefte" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "doel te bereiken" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Geen wekelijks doel" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Stel een wekelijks tijdsdoel in om uw voortgang bij te houden" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Doel creëren" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "Topprojecten (30 dagen)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "Gebruikersrapport" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "Cirkeldiagrammen voor tijdverdeling" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "Geen activiteit in de afgelopen 30 dagen." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "Start de volgtijd" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Topprojecten (30 dagen)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Geen activiteit in de afgelopen 30 dagen." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "Gedupliceerde %(count)d offerte(s)" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "Fout bij genereren van PDF: %(error)s" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "Platformondersteuning" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "Wachtwoord moet minimaal 8 tekens lang zijn" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "Snelstartgids" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "E-mailsjablonen" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Taak (optioneel)" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Opmerkingen (optioneel)" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "Taak (optioneel)" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "bijvoorbeeld vergadering, ontwikkeling, admin" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "Registreer nieuwe betaling" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "Totaal betalingen" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "Gateway-kosten" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Filter Payments" +#~ msgstr "Betalingen filteren" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "ID" +#~ msgstr "Betaald" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "Geselecteerde betalingen verwijderen" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Wijzig de status voor geselecteerde betalingen" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "Gerelateerde factuur" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "bijvoorbeeld zakenreis naar Berlijn" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "bijvoorbeeld DE, VS, GB" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Ondersteuning van ontwikkeling" +#~ msgid "e.g., Berlin" +#~ msgstr "bijvoorbeeld Berlijn" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "Claims filteren" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "Verwijder geselecteerde claims" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Wijzig de status voor geselecteerde claims" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "Aanvullende opmerkingen over dit tarief..." -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "Weet u zeker dat u dit dagtarief wilt verwijderen?" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Per Diem-tarief verwijderen" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "Factureerbaar project" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "Geschatte uren" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "Budgetbedrag" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "Taaknaam" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "Projectcode" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "Create Project" +#~ msgstr "Project maken" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Volledige documentatie en gebruikershandleiding" +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Snelle navigatie" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Secties filteren..." +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Snel beginnen" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Rapporten en analyses" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Productiviteitskenmerken" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Beheerfuncties" +#~ msgid "Kanban board columns" +#~ msgstr "Kanbanbordkolommen" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Mobiel gebruik" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "Documentatie" +#~ msgid "Edit swimlane" +#~ msgstr "Zwembaan bewerken" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Problemen oplossen" +#~ msgid "Column" +#~ msgstr "Kolom" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "TimeTracker-helpcentrum" +#~ msgid "List View" +#~ msgstr "Lijstweergave" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "Alles wat u moet weten om het maximale uit TimeTracker te halen" +#~ msgid "Grid View" +#~ msgstr "Rasterweergave" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Start de volgtijd" +#~ msgid "Rate" +#~ msgstr "Datum" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Bekijk projecten" +#~ msgid "Edit Project" +#~ msgstr "Project bewerken" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Genereer rapporten" +#~ msgid "Add Cost" +#~ msgstr "Notitie toevoegen" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "API-tokens" +#~ msgid "Add Cost to Project" +#~ msgstr "Terug naar Project" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "bijvoorbeeld reizen naar een klantbijeenkomst" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Snelstartgids" +#~ msgid "Brief description of the cost" +#~ msgstr "Korte beschrijving van deze categorie..." -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "Voor nieuwe gebruikers" +#~ msgid "Select category" +#~ msgstr "Categorie" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Log in met uw gebruikersnaam (geen wachtwoord vereist)" +#~ msgid "Materials" +#~ msgstr "Materiaal" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Verken het dashboard om uw overzicht te zien" +#~ msgid "Software/Licenses" +#~ msgstr "bijvoorbeeld softwarelicentie" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Start uw eerste timer op een bestaand project" +#~ msgid "Additional details about this cost" +#~ msgstr "Aanvullende details over deze aanpassing" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Bekijk uw tijdsinvoer in rapporten" +#~ msgid "Billable to client" +#~ msgstr "Terug naar Klant" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "Voor beheerders" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Stel klanten in in de sectie Klantbeheer" +#~ msgid "Add Extra Good" +#~ msgstr "Extra goed toevoegen" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Creëer projecten en wijs deze toe aan klanten" +#~ msgid "Add a product or service to" +#~ msgstr "Voeg een product of dienst toe aan" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Systeeminstellingen configureren (tijdzone, valuta, enz.)" +#~ msgid "Back to Project" +#~ msgstr "Terug naar Project" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Beheer gebruikers en machtigingen" +#~ msgid "SKU/Product Code" +#~ msgstr "SKU/productcode" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Pro-tip:" +#~ msgid "What happens when you archive a project?" +#~ msgstr "Wat gebeurt er als u een project archiveert?" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "Gebruik de mobielvriendelijke interface om onderweg de tijd bij te houden. De timer blijft lopen, zelfs als u uw browser sluit!" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "Het project wordt verborgen voor actieve projectlijsten" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "Realtime tracking met automatische detectie van inactiviteit en WebSocket-updates" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "Er kunnen geen nieuwe tijdgegevens aan dit project worden toegevoegd" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Handmatige invoer" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "Bestaande gegevens en tijdinvoer blijven behouden" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "Registreer de tijd handmatig met aangepaste begin- en eindtijden" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "Indien nodig kunt u het project later uit het archief halen" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Een timer starten" +#~ msgid "Reason for Archiving" +#~ msgstr "Reden voor archivering" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "bijv. Project voltooid, Klantcontract " +#~ "beëindigd, Project geannuleerd, enz." -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "Navigeer naar de Timer-pagina of het dashboard" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "Het toevoegen van een reden helpt " +#~ "bij de projectorganisatie en toekomstige " +#~ "referentie." -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Selecteer een project in de vervolgkeuzelijst" +#~ msgid "Quick Select" +#~ msgstr "Snel selecteren" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "Selecteer optioneel een taak voor meer gedetailleerde tracking" +#~ msgid "Project completed successfully" +#~ msgstr "Project succesvol afgerond" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Voeg notities toe over waar u aan werkt (optioneel)" +#~ msgid "Project Completed" +#~ msgstr "Project voltooid" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Voeg tags toe, gescheiden door komma's (optioneel)" +#~ msgid "Client contract ended" +#~ msgstr "Klantcontract beëindigd" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Klik op \"Starttimer\"" +#~ msgid "Contract Ended" +#~ msgstr "Contract beëindigd" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Timerfuncties" +#~ msgid "Project cancelled by client" +#~ msgstr "Project geannuleerd door klant" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Realtime duurweergave" +#~ msgid "Project on hold indefinitely" +#~ msgstr "Project voor onbepaalde tijd on hold gezet" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "On Hold" +#~ msgstr "In de wacht" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Maintenance period ended" +#~ msgstr "Onderhoudsperiode geëindigd" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Maintenance Ended" +#~ msgstr "Onderhoud beëindigd" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Blijft actief als de browser sluit" +#~ msgid "Archive Project" +#~ msgstr "Archiefproject" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Automatische stationairdetectie (configureerbaar)" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" +#~ "Zet een nieuw project op om uw " +#~ "werk te organiseren en de tijd " +#~ "effectief bij te houden" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Eén actieve timer per gebruiker (configureerbaar)" +#~ msgid "Enter a descriptive project name" +#~ msgstr "Voer een beschrijvende projectnaam in" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "WebSocket live-updates" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "" +#~ "Kies een duidelijke, beschrijvende naam " +#~ "die de reikwijdte van het project " +#~ "uitlegt" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Handmatige tijdinvoer" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Korte code, bijvoorbeeld ABC" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "Maak handmatig tijdinvoer aan als u de tijd wilt registreren die u buiten de computer doorbrengt of als u bestaande invoer wilt aanpassen." +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Optioneel: korte tag weergegeven op Kanban-kaarten" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Vereiste informatie" +#~ msgid "Create new client" +#~ msgstr "Nieuwe klant aanmaken" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Projectselectie" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "" +#~ "Geef gedetailleerde informatie over het " +#~ "project, de doelstellingen en de " +#~ "resultaten..." -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Startdatum en -tijd" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" +#~ "Optioneel: Voeg context, doelstellingen of " +#~ "specifieke vereisten voor het project " +#~ "toe" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Einddatum en -tijd" +#~ msgid "Enable billing for this project" +#~ msgstr "Schakel facturering in voor dit project" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Optionele informatie" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "Laat leeg voor niet-factureerbare projecten" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Taaktoewijzing" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "PO-nummer, contractreferentie, etc." -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Beschrijving/opmerkingen" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" +#~ "Optioneel: Voeg een referentienummer of " +#~ "identificatie toe voor factureringsdoeleinden" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Tags voor categorisatie" +#~ msgid "e.g. 10000.00" +#~ msgstr "bijv. 10000,00" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Factureerbare status overschrijven" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "Optioneel: Stel een totaal projectbudget in om de uitgaven te monitoren" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Geavanceerde tijdinvoerfuncties" +#~ msgid "Alert Threshold (%)" +#~ msgstr "Waarschuwingsdrempel (%)" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Bulkinvoer" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "" +#~ "Geef een melding wanneer het verbruikte" +#~ " budget deze drempel overschrijdt" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "Maak meerdere tijdsvermeldingen aan voor opeenvolgende dagen met hetzelfde project en dezelfde duur. Perfect voor normale werkpatronen." +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Sjablonen" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "Bewaar veelgebruikte tijdsinvoer als sjablonen voor snel hergebruik. Slaat project, taak en notities op." +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "Visualiseer uw tijdsvermeldingen op een kalender. Sleep en zet neer om een ​​nieuwe afspraak te maken of klik op datums om items toe te voegen." +#~ msgid "Project Creation Tips" +#~ msgstr "Tips voor het maken van projecten" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Projectinformatie" +#~ msgid "Clear Naming" +#~ msgstr "Duidelijke naamgeving" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Beschrijvende projectnaam" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "" +#~ "Gebruik beschrijvende namen die duidelijk " +#~ "het doel van het project aangeven" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Gekoppelde klantorganisatie" +#~ msgid "Billing Setup" +#~ msgstr "Facturering instellen" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Projectdetails en reikwijdte" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Stel passende uurtarieven in op basis" +#~ " van de complexiteit van het project" +#~ " en het budget van de klant" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Actief, voltooid of gearchiveerd" +#~ msgid "Detailed Description" +#~ msgstr "Gedetailleerde beschrijving" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Factureringsinformatie" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "Neem projectdoelstellingen, resultaten en belangrijkste vereisten op" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Of de tijd moet worden bijgehouden voor facturering" +#~ msgid "Client Selection" +#~ msgstr "Klantselectie" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Tarief voor factureerbare tijdberekeningen" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "Kies de juiste opdrachtgever voor een goede projectorganisatie" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Factureringsreferentie" +#~ msgid "Creating..." +#~ msgstr "Creëren..." -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "PO-nummer of factuurcode" +#~ msgid "Could not create client. Please try again." +#~ msgstr "Kan klant niet aanmaken. Probeer het opnieuw." -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Projectoperaties" +#~ msgid "Client created" +#~ msgstr "Klant aangemaakt" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Creëer nieuwe projecten met klantrelaties" +#~ msgid "Network error while creating client" +#~ msgstr "Netwerkfout tijdens het aanmaken van de client" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Bewerk bestaande projecten om details bij te werken" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "Projectdashboard en analyses" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Archiefprojecten om te verbergen voor timers (behoudt gegevens)" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Projecten verwijderen (verwijdert alle bijbehorende tijdsinvoer)" +#~ msgid "Budget Analysis" +#~ msgstr "Budgetanalyse" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Beste praktijken" +#~ msgid "All Time" +#~ msgstr "Altijd" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Gebruik beschrijvende projectnamen" +#~ msgid "Last 7 Days" +#~ msgstr "Laatste 7 dagen" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Stel nauwkeurige uurtarieven in voor facturering" +#~ msgid "Last 30 Days" +#~ msgstr "Laatste 30 dagen" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Archiveer in plaats van verwijder indien mogelijk" +#~ msgid "Last 3 Months" +#~ msgstr "Laatste 3 maanden" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Gebruik factuurreferenties voor externe tracking" +#~ msgid "Last Year" +#~ msgstr "Vorig jaar" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "Het klantbeheersysteem helpt u bij het organiseren van uw werk per klantorganisatie, waardoor fouten worden voorkomen en de projectcreatie wordt gestroomlijnd." +#~ msgid "estimated" +#~ msgstr "geschat" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Klantinformatie" +#~ msgid "Budget Used" +#~ msgstr "Budget gebruikt" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Organisatienaam" +#~ msgid "of budget" +#~ msgstr "van de begroting" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Bedrijfs- of klantnaam" +#~ msgid "Tasks Complete" +#~ msgstr "Taken voltooid" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Primaire contactgegevens" +#~ msgid "completion" +#~ msgstr "voltooiing" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "E-mail en telefoon" +#~ msgid "Team Members" +#~ msgstr "Teamleden" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Contactgegevens" +#~ msgid "contributing" +#~ msgstr "bijdragen" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Zakelijk adres" +#~ msgid "Budget vs. Actual" +#~ msgstr "Budget versus Werkelijk" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Voordelen" +#~ msgid "No budget set for this project" +#~ msgstr "Er is geen budget vastgesteld voor dit project" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "Dropdownselectie voorkomt typefouten" +#~ msgid "Task Status Distribution" +#~ msgstr "Distributie van taakstatus" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Standaardtarieven vullen projecten automatisch in" +#~ msgid "No tasks created yet" +#~ msgstr "Er zijn nog geen taken aangemaakt" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Consistente naamgeving van klanten" +#~ msgid "Team Member Contributions" +#~ msgstr "Bijdragen van teamleden" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Gemakkelijkere projectorganisatie" +#~ msgid "No time entries recorded yet" +#~ msgstr "Nog geen tijdregistratie geregistreerd" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Projecttelling" +#~ msgid "Time Tracking Timeline" +#~ msgstr "Tijdregistratie tijdlijn" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Totale en actieve projecten" +#~ msgid "Select a time period to view timeline" +#~ msgstr "Selecteer een tijdsperiode om de tijdlijn te bekijken" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Totaal aantal gewerkte uren" +#~ msgid "Team Member Details" +#~ msgstr "Gegevens teamlid" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Kostenraming" +#~ msgid "tasks" +#~ msgstr "taken" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Geschatte factuurbedragen" +#~ msgid "No team members have logged time yet" +#~ msgstr "Er zijn nog geen teamleden die tijd hebben ingelogd" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "Deel projecten op in beheersbare taken met gedetailleerde tracking en voortgangsbewaking." +#~ msgid "Attention Required" +#~ msgstr "Aandacht vereist" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Taakeigenschappen" +#~ msgid "task(s) are overdue" +#~ msgstr "taak(en) zijn te laat" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Naam & Beschrijving" +#~ msgid "Edit Cost" +#~ msgstr "Eenheidskosten" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Duidelijke taakidentificatie" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Prioriteitsniveaus" +#~ msgid "Update Cost" +#~ msgstr "Rollen bijwerken" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Laag, gemiddeld, hoog, dringend" +#~ msgid "Edit Extra Good" +#~ msgstr "Extra goed bewerken" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Vervaldata" +#~ msgid "Manage products and services for this project" +#~ msgstr "Beheer producten en diensten voor dit project" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Het bijhouden van deadlines" +#~ msgid "Total Goods" +#~ msgstr "Totaal goederen" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Opdracht" +#~ msgid "Billable Amount" +#~ msgstr "Factureerbaar bedrag" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Taakeigendom" +#~ msgid "Categories" +#~ msgstr "Categorieën" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Status volgen" +#~ msgid "Invoiced" +#~ msgstr "Gefactureerd" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "Te doen - Niet gestart" +#~ msgid "Non-billable" +#~ msgstr "Niet factureerbaar" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "In uitvoering - Werkt momenteel" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Weet je zeker dat je dit extra goed wilt verwijderen?" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Beoordeling - Klaar voor beoordeling" +#~ msgid "Delete Extra Good" +#~ msgstr "Extra goed verwijderen" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Klaar - Voltooid" +#~ msgid "No extra goods found for this project" +#~ msgstr "Er zijn geen extra goederen gevonden voor dit project" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Geannuleerd - Niet nodig" +#~ msgid "Add Your First Good" +#~ msgstr "Voeg je eerste goed toe" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Functies voor tijdregistratie" +#~ msgid "Breakdown by Category" +#~ msgstr "Uitsplitsing per categorie" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Start timers rechtstreeks vanuit taken" +#~ msgid "item(s)" +#~ msgstr "artikel(en)" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Koppel tijdsinvoer aan specifieke taken" +#~ msgid "Filter Projects" +#~ msgstr "Projecten filteren" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Houd geschatte versus werkelijke uren bij" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Bewaak de taakvoortgang automatisch" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Taakweergaven" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Mijn taken - Uw toegewezen taken" +#~ msgid "Mark project as Inactive?" +#~ msgstr "Project markeren als inactief?" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Alle taken - Volledige takenlijst" +#~ msgid "Change Project Status" +#~ msgstr "Wijzig de projectstatus" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Achterstallige taken - Achterstallige items" +#~ msgid "Activate project?" +#~ msgstr "Project activeren?" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Projecttaken - Taken binnen projecten" +#~ msgid "Activate Project" +#~ msgstr "Activeer Project" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Samenwerkingsfuncties" +#~ msgid "Archive" +#~ msgstr "Archief" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Taakopmerkingen - Discussies over taken" +#~ msgid "Unarchive project?" +#~ msgstr "Project uit het archief halen?" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Ondersteuning voor prijsverlagingen - Rijke opmaak in beschrijvingen" +#~ msgid "Unarchive Project" +#~ msgstr "Project uit het archief halen" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Gebruikersvermeldingen - Teamleden taggen (indien ingeschakeld)" +#~ msgid "Unarchive" +#~ msgstr "Uit het archief halen" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Bestandsbijlagen - Voeg bestanden toe aan taken (indien ingeschakeld)" +#~ msgid "Delete Project" +#~ msgstr "Project verwijderen" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Markdown-opmaak" +#~ msgid "Archive Information" +#~ msgstr "Archiefinformatie" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "Taak- en projectbeschrijvingen ondersteunen Markdown:" +#~ msgid "Archived on:" +#~ msgstr "Gearchiveerd op:" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Vet**, *Cursief*, ~~Doorhalen~~" +#~ msgid "Archived by:" +#~ msgstr "Gearchiveerd door:" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# Koppen, - Lijsten, [Links](url)" +#~ msgid "Reason:" +#~ msgstr "Reden:" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```codeblokken```, tabellen, afbeeldingen" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "Visualiseer uw workflow met een Kanban-bord met slepen en neerzetten voor intuïtief taakbeheer." +#~ msgid "Budget Overview" +#~ msgstr "Budgetoverzicht" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Bordfuncties" +#~ msgid "Over" +#~ msgstr "Over" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Aanpasbare kolommen die overeenkomen met taakstatussen" +#~ msgid "View Full Budget Analysis" +#~ msgstr "Bekijk de volledige budgetanalyse" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Taken tussen kolommen slepen en neerzetten" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Filter op project, gebruiker of prioriteit" +#~ msgid "Tasks for this project" +#~ msgstr "Taken voor dit project" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Snel zoeken in alle taken" +#~ msgid "Due" +#~ msgstr "Vanwege" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Het Kanbanbord gebruiken" +#~ msgid "Estimated" +#~ msgstr "Geschat" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Toegang via het Takenmenu of de projectpagina" +#~ msgid "No tasks for this project." +#~ msgstr "Geen taken voor dit project." -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Sleep taken naar verschillende kolommen om de status te wijzigen" +#~ msgid "Move up" +#~ msgstr "verplaatst naar" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Klik op een taakkaart om details te bekijken/bewerken" +#~ msgid "Move down" +#~ msgstr "verplaatst naar" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Gebruik filters om u op specifiek werk te concentreren" +#~ msgid "Manual entry" +#~ msgstr "Handmatige invoer" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "Het Kanban-bord is perfect voor sprintplanning en dagelijkse stand-ups. Elke kolom vertegenwoordigt een fase in uw workflow!" +#~ msgid "From stock" +#~ msgstr "Lage voorraad" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Kosten bijhouden" +#~ msgid "Duplicate" +#~ msgstr "Duplicaat" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "Houd zakelijke uitgaven bij, beheer bonnen en handel terugbetalingen efficiënt af." +#~ msgid "Mark as Sent" +#~ msgstr "Markeer als verzonden" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Kostenkenmerken" +#~ msgid "Accepted" +#~ msgstr "Geaccepteerd" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Categoriseer uitgaven (reizen, maaltijden, benodigdheden, enz.)" +#~ msgid "Create Your First Quote" +#~ msgstr "Maak uw eerste offerte" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Voeg afbeeldingen en documenten van ontvangstbewijzen toe" +#~ msgid "Learn More" +#~ msgstr "Meer informatie" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Houd bedragen, belastingen en betaalmethoden bij" +#~ msgid "Back to Quote" +#~ msgstr "Terug naar Citaat" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Goedkeuringsworkflow voor onkostenverzoeken" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" +#~ "Als u deze offerte accepteert, wordt " +#~ "er een nieuw project aangemaakt met " +#~ "het budget uit de offerte." -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Facturering en terugbetaling" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "Het project wordt gemaakt met het budget uit de offerte" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Markeer onkosten als factureerbaar aan klanten" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Offerte accepteren en project maken" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Kosten opnemen in klantfacturen" +#~ msgid "Create Quote" +#~ msgstr "Offerte maken" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Volg de terugbetalingsstatus" +#~ msgid "Quote title" +#~ msgstr "Titel van citaat" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Koppel uitgaven aan specifieke projecten" +#~ msgid "Quote description" +#~ msgstr "Citaatbeschrijving" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Kosten registreren" +#~ msgid "Quote line items" +#~ msgstr "Citeer artikelen" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Vul de gegevens in en upload de kassabon" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Ter goedkeuring indienen" +#~ msgid "Add line" +#~ msgstr "Termijn" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "De beheerder beoordeelt en keurt deze goed" +#~ msgid "Line type" +#~ msgstr "Inhoudstype" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Factuur/vergoeding" +#~ msgid "Stock" +#~ msgstr "Lage voorraad" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Toevoegen aan factuur of vergoeden" +#~ msgid "Line items subtotal" +#~ msgstr "Artikelen Subtotaal" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Volg de betaling" +#~ msgid "Costs" +#~ msgstr "Kosten" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Bewaak de terugbetalingsstatus" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "bijvoorbeeld REIZEN, MAALTIJDEN" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Professionele facturatie" +#~ msgid "Add cost" +#~ msgstr "Notitie toevoegen" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Professionele PDF-generatie" +#~ msgid "Costs subtotal" +#~ msgstr "Artikelen Subtotaal" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Bedrijfsbranding en logo's" +#~ msgid "Extra goods" +#~ msgstr "Extra goederen" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Automatische factuurnummering" +#~ msgid "Products, licenses, hardware" +#~ msgstr "Producten, materialen, licenties en andere goederen" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Belastingberekeningen" +#~ msgid "Add good" +#~ msgstr "Voeg goed toe" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Tijdintegratie" +#~ msgid "Goods subtotal" +#~ msgstr "Subtotaal goederen" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Genereer op basis van tijdsinvoer" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Totaal offertes" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Slim groeperen per taak/project" +#~ msgid "Financial Details" +#~ msgstr "Financiële details" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Voorkom dubbele facturering" +#~ msgid "Select payment terms" +#~ msgstr "Selecteer betalingsvoorwaarden" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Gebruik projectuurtarieven" +#~ msgid "Due on Receipt" +#~ msgstr "Verschuldigd bij ontvangst" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Klant- en projectgegevens instellen" +#~ msgid "Or enter custom payment terms" +#~ msgstr "Of voer aangepaste betalingsvoorwaarden in" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Artikelen toevoegen" +#~ msgid "Use custom terms" +#~ msgstr "Gebruik aangepaste termen" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Genereer op tijd of voeg handmatig toe" +#~ msgid "Discount" +#~ msgstr "Korting" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Beoordelen en verzenden" +#~ msgid "Discount Type" +#~ msgstr "Kortingstype" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "Exporteer PDF en update de status" +#~ msgid "No Discount" +#~ msgstr "Geen korting" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Status en betalingen monitoren" +#~ msgid "Percentage (%)" +#~ msgstr "Percentage (%)" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Standaardrapporten" +#~ msgid "Fixed Amount" +#~ msgstr "Vast bedrag" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Projectrapport - Uitsplitsing van de tijd per project" +#~ msgid "Discount Amount" +#~ msgstr "Kortingsbedrag" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Gebruikersrapport - Individuele prestatiestatistieken" +#~ msgid "0.00" +#~ msgstr "0,00" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Samenvattend rapport - Belangrijkste statistieken en trends" +#~ msgid "Coupon Code" +#~ msgstr "Couponcode" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Tijdsinvoerrapport - Gedetailleerde tijdlogboeken" +#~ msgid "Optional coupon code" +#~ msgstr "Optionele couponcode" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Exportopties" +#~ msgid "Discount Reason" +#~ msgstr "Reden van korting" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "CSV-export - Voor externe analyse" +#~ msgid "Reason for discount" +#~ msgstr "Reden voor korting" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Configureerbare scheidingstekens" +#~ msgid "Approval Workflow" +#~ msgstr "Goedkeuringsworkflow" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Aangepaste datumbereiken" +#~ msgid "Requires approval before sending" +#~ msgstr "Vereist goedkeuring vóór verzending" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Gefilterde gegevensexport" +#~ msgid "Additional Information" +#~ msgstr "Aanvullende informatie" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Filteropties" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Interne opmerkingen (niet zichtbaar voor klant)" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Datumbereik - Aangepaste begin- en einddatum" +#~ msgid "These notes are only visible to your team" +#~ msgstr "Deze notities zijn alleen zichtbaar voor jouw team" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Project - Filter op specifieke projecten" +#~ msgid "Terms and Conditions" +#~ msgstr "Algemene voorwaarden" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Gebruiker - Filter op teamleden" +#~ msgid "Terms and conditions" +#~ msgstr "Algemene voorwaarden" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Klant - Filter op klantorganisatie" +#~ msgid "These terms will be visible to the client" +#~ msgstr "Deze voorwaarden zijn zichtbaar voor de klant" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Opgeslagen filters - Bewaar veelgebruikte filters" +#~ msgid "Edit Quote" +#~ msgstr "Citaat bewerken" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Visuele analyse" +#~ msgid "Client cannot be changed" +#~ msgstr "Klant kan niet worden gewijzigd" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Interactieve staafdiagrammen" +#~ msgid "Update Quote" +#~ msgstr "Offerte bijwerken" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Cirkeldiagrammen voor tijdverdeling" +#~ msgid "Total Quotes" +#~ msgstr "Totaal offertes" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Trendanalyse in de tijd" +#~ msgid "Acceptance Rate" +#~ msgstr "Acceptatiepercentage" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Voor mobiel geoptimaliseerde grafieken" +#~ msgid "Avg Quote Value" +#~ msgstr "Gem. prijsopgavewaarde" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "Gebruik opgeslagen filters om snel toegang te krijgen tot uw meest voorkomende rapportweergaven. Bewaar filters voor wekelijkse beoordelingen, maandelijkse facturering of specifieke projecttracking!" +#~ msgid "Quotes by Status" +#~ msgstr "Citaten op status" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "Verhoog uw efficiëntie met sneltoetsen, opdrachtenpalet en automatiseringsfuncties." +#~ msgid "Top Clients by Quotes" +#~ msgstr "Topklanten op basis van offertes" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Commandopalet" +#~ msgid "Filter Quotes" +#~ msgstr "Citaten filteren" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Krijg direct toegang tot elke functie zonder het toetsenbord te verlaten" +#~ msgid "Search quotes..." +#~ msgstr "Zoek citaten..." -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Het opdrachtenpalet openen" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "Weet u zeker dat u wilt dupliceren" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Druk op de vraagtekentoets" +#~ msgid "quote(s)?" +#~ msgstr "citaten)?" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "Snel zoeken" +#~ msgid "Are you sure you want to mark" +#~ msgstr "Weet u zeker dat u wilt markeren?" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Ga naar Projecten" +#~ msgid "quote(s) as sent?" +#~ msgstr "offerte(s) zoals verzonden?" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Ga naar Taken" +#~ msgid "QUOTE" +#~ msgstr "CITAAT" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Nieuwe tijdinvoer" +#~ msgid "Quote #" +#~ msgstr "Citaat #" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Sneltoetsen op het toetsenbord" +#~ msgid "Quote For" +#~ msgstr "Citaat voor" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "Navigeer sneller met toetsenbordgestuurde opdrachten. Shift+ indrukken? om alle snelkoppelingen te zien." +#~ msgid "Subtotal After Discount:" +#~ msgstr "Subtotaal na korting:" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Globaal zoeken" +#~ msgid "Description:" +#~ msgstr "Beschrijving:" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "Vind snel projecten, taken, klanten en tijdsinvoer overal in de app." +#~ msgid "Subtotal After Discount" +#~ msgstr "Subtotaal na korting" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "E-mailmeldingen" +#~ msgid "Approval not yet requested" +#~ msgstr "Er is nog geen goedkeuring aangevraagd" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "Ontvang via e-mail meldingen over taaktoewijzingen, achterstallige facturen en wekelijkse overzichten." +#~ msgid "Pending approval" +#~ msgstr "In afwachting van goedkeuring" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Beheerderfuncties" +#~ msgid "Rejected by" +#~ msgstr "Afgewezen door" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Creëer nieuwe gebruikers met flexibele authenticatie" +#~ msgid "Request Approval Again" +#~ msgstr "Opnieuw goedkeuring aanvragen" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Wijs aangepaste rollen toe met specifieke machtigingen" +#~ msgid "Send Quote" +#~ msgstr "Offerte verzenden" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Gebruikersaccounts activeren/deactiveren" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "Weet u zeker dat u deze offerte wilt afwijzen?" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Bekijk gebruikersstatistieken en activiteit" +#~ msgid "Delete Quote" +#~ msgstr "Citaat verwijderen" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Genereer API-tokens voor gebruikers" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Interne opmerking (niet zichtbaar voor klant)" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Toegangscontrole" +#~ msgid "Internal" +#~ msgstr "Intern" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Gedetailleerd, op rollen gebaseerd machtigingssysteem" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "Weet je zeker dat je deze reactie wilt verwijderen?" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Aangepaste rollen met gedetailleerde toegang" +#~ msgid "Write a reply..." +#~ msgstr "Schrijf een antwoord..." -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Toegangscontroles voor gebruikersgegevens" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Nog geen opmerkingen. Begin het gesprek" +#~ " door de eerste opmerking toe te " +#~ "voegen." -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "OIDC/SSO-integratie (Azure AD, Authelia, etc.)" +#~ msgid "Sent At" +#~ msgstr "Verzonden op" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "API-tokenbeheer voor integraties" +#~ msgid "Accepted At" +#~ msgstr "Geaccepteerd op" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Authenticatiemethoden" +#~ msgid "Send Quote via Email" +#~ msgstr "Offerte verzenden via e-mail" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Alleen gebruikersnaam (eenvoudig intern gebruik)" +#~ msgid "Recipient Email" +#~ msgstr "E-mailadres van ontvanger" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (ondernemingsauthenticatie)" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "Citaat %(quote_number)s" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Beide methoden tegelijk" +#~ msgid "Custom Message (Optional)" +#~ msgstr "Aangepast bericht (optioneel)" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Automatische roltoewijzing via groepen" +#~ msgid "Add a custom message to the email..." +#~ msgstr "Voeg een aangepast bericht toe aan de e-mail..." -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Rol- en machtigingsbeheer" +#~ msgid "Attach PDF" +#~ msgstr "PDF bijvoegen" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Maak aangepaste rollen buiten Beheerder/Gebruiker" +#~ msgid "Approve Quote" +#~ msgstr "Offerte goedkeuren" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Stel gedetailleerde machtigingen per functie in" +#~ msgid "Notes (Optional)" +#~ msgstr "Opmerkingen (optioneel)" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Wijs gebruikers toe aan meerdere rollen" +#~ msgid "Add approval notes..." +#~ msgstr "Goedkeuringsopmerkingen toevoegen..." -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Bekijk en beheer alle rechten" +#~ msgid "Reject Quote Approval" +#~ msgstr "Goedkeuring van offerte afwijzen" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Algemene instellingen" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Geef een reden voor afwijzing op..." -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Tijdzone- en landinstellingen" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Weet u zeker dat u deze offerte" +#~ " wilt verwijderen? Deze actie kan " +#~ "niet ongedaan worden gemaakt." -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Valutaconfiguratie" +#~ msgid "Create Recurring Invoice" +#~ msgstr "Terugkerende factuur maken" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Regels voor tijdafronding" +#~ msgid "Update Recurring Invoice" +#~ msgstr "Update terugkerende factuur" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Instellingen voor zelfregistratie" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "" +#~ "Automatiseer het genereren van facturen " +#~ "voor facturering op basis van " +#~ "abonnementen" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Timerinstellingen" +#~ msgid "Frequency" +#~ msgstr "Frequentie" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Configuratie voor time-out bij inactiviteit" +#~ msgid "Next Run" +#~ msgstr "Volgende uitvoering" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Enkele actieve timermodus" +#~ msgid "Generate Now" +#~ msgstr "Genereer nu" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Timerweergavevoorkeuren" +#~ msgid "Template Details" +#~ msgstr "Sjabloondetails" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Meldingsinstellingen" +#~ msgid "Invoice Settings" +#~ msgstr "Factuurinstellingen" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Databasebeheer" +#~ msgid "Recently Generated Invoices" +#~ msgstr "Recent gegenereerde facturen" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Handmatige databaseback-ups maken" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Bekijk de databasemigratiestatus" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Bewaak de databaseprestaties" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Ruim oude gegevens en logs op" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Systeembewaking" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Bekijk systeeminformatie en status" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Bewaak de prestaties van applicaties" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Controleer systeemlogboeken en fouten" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Mobielvriendelijke functies" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Geoptimaliseerd voor telefoons en tablets" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Aanraakvriendelijke interface" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "Adaptieve lay-outs voor alle schermformaten" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Hoog contrast voor zichtbaarheid buitenshuis" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Mobiele navigatie" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Onderste tabbalk voor gemakkelijke toegang" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Snelle toegang tot dashboard" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Tijdregistratie met één tik" +#~ msgid "Assign To" +#~ msgstr "Toewijzen aan" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Voor mobiel geoptimaliseerde rapporten" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Installatie" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Open TimeTracker in uw mobiele browser" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Zoek naar de optie \"Toevoegen aan startscherm\"." +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Volg browserspecifieke installatieprompts" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Start vanaf uw startscherm als een native app" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "PWA-voordelen" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Offline mogelijkheden voor basisfuncties" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Snellere laadtijden" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Native app-achtige ervaring" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Pushmeldingen (waar ondersteund)" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "Interactieve staafdiagrammen" +#~ msgid "Add table to report" +#~ msgstr "Beschikbare rapporten" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "Technische specificaties" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Add chart to report" +#~ msgstr "Standaardrapporten" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "Documentatie" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Problemen oplossen en veelgestelde vragen" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "Wat gebeurt er als ik vergeet mijn timer te stoppen?" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "De timer blijft lopen totdat u deze handmatig stopt. U kunt uw actieve timer zien op het dashboard en de timerpagina. De timer blijft bestaan, zelfs als u uw browser sluit of uw apparaat opnieuw opstart. Als detectie van inactiviteit is ingeschakeld, kan de timer automatisch pauzeren na de geconfigureerde time-outperiode." +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "Kan ik tijdinvoer bewerken nadat deze is aangemaakt?" +#~ msgid "Add summary to report" +#~ msgstr "Samenvattend rapport" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "Ja, u kunt elke tijdsinvoer bewerken door op de knop Bewerken in de tijdinvoerlijst te klikken. U kunt het project, de begin-/eindtijden, notities, tags, factureerbare status en taaktoewijzing wijzigen. Beheerders kunnen alle tijdgegevens bewerken, terwijl gewone gebruikers alleen hun eigen gegevens kunnen bewerken." +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "Hoe houd ik de tijd bij voor meerdere projecten?" +#~ msgid "Report canvas" +#~ msgstr "Helder canvas" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "Standaard kunt u slechts één actieve timer tegelijk hebben. Om van project te wisselen, stopt u uw huidige timer en start u een nieuwe voor het andere project. Als alternatief kunt u handmatige tijdinvoer voor eerder werk aanmaken of het systeem configureren om meerdere actieve timers toe te staan ​​(beheerdersinstelling)." +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "Hoe exporteer ik mijn tijdgegevens?" +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "Ga naar de pagina Rapporten en gebruik de functie \"CSV exporteren\". U kunt filters toepassen om specifieke gegevens te exporteren, of om alle tijdsinvoer te exporteren. Het CSV-bestand bevat alle tijdsinvoergegevens en kan worden geopend in Excel of andere spreadsheettoepassingen. U kunt het scheidingsteken ook configureren voor verschillende regionale standaarden." +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "Wat is het verschil tussen factureerbare en niet-factureerbare tijd?" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "Factureerbare tijd wordt bijgehouden voor factureringsdoeleinden aan klanten en er kan een uurtarief aan gekoppeld zijn. Niet-factureerbare tijd is voor intern werk dat niet aan klanten in rekening wordt gebracht. U kunt individuele tijdsinvoer markeren als factureerbaar of niet-factureerbaar, en projecten kunnen standaard factureerbare instellingen hebben. Dit onderscheid is cruciaal voor een nauwkeurige facturatie en winstgevendheidsanalyse." +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "Hoe maak ik een factuur aan van mijn urenregistraties?" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "Navigeer naar Facturen → Factuur maken, stel de klant- en projectgegevens in en gebruik vervolgens \"Genereren uit tijdsinvoer\" om automatisch factuuritems te maken op basis van uw bijgehouden tijd. U kunt filteren op datumbereik en project, en het systeem groepeert tijdinvoer op intelligente wijze. Controleer de gegenereerde items en exporteer ze als een professionele PDF." +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "Kan ik TimeTracker op mijn mobiele apparaat gebruiken?" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "Ja! TimeTracker is volledig responsive en werkt prima op mobiele apparaten. U kunt het installeren als een Progressive Web App (PWA) voor een native-achtige ervaring. De mobiele interface bevat een tabbalk onderaan voor eenvoudige navigatie en aanraakgevoelige bedieningselementen voor tijdregistratie onderweg." +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "Hoe gebruik ik het opdrachtenpalet en de sneltoetsen?" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "Druk op de vraagtekentoets (?) om het opdrachtenpalet te openen. Van daaruit kunt u typen om naar elk actie- of navigatiedoel te zoeken. Gebruik toetsenbordreeksen zoals \"g d\" voor Dashboard, \"g p\" voor Projecten of \"n e\" voor Nieuw item. Shift+ indrukken? om alle beschikbare snelkoppelingen te zien. Druk op Ctrl+K (of Cmd+K op Mac) voor snel zoeken." +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "Hoe maak ik bulktijdinvoer voor meerdere dagen?" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "Navigeer naar Werk → Bulktijdinvoer. Selecteer uw project, kies een datumbereik, stel uw dagelijkse begin- en eindtijden in en sla eventueel weekenden over. Het systeem maakt voor elke dag in het bereik identieke tijdinvoer aan. Dit is perfect voor het vastleggen van reguliere werkpatronen of het invullen van vroegere tijden waarin u consistente uren werkte." +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "Wat zijn tijdregistratiesjablonen en hoe gebruik ik ze?" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "Met tijdinvoersjablonen kunt u veelgebruikte tijdinvoerconfiguraties opslaan. Wanneer u een handmatige tijdinvoer maakt, vinkt u \"Opslaan als sjabloon\" aan om het project, de taak en de notities op te slaan. Later, wanneer u nieuwe vermeldingen maakt, kunt u een sjabloon selecteren om deze gegevens snel in te vullen. Sjablonen zijn persoonlijk en alleen voor jou zichtbaar." +#~ msgid "Private" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "Hoe houd ik uitgaven bij en voeg ik deze toe aan facturen?" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "Ga naar Kosten → Nieuwe kosten om zakelijke uitgaven vast te leggen. Upload afbeeldingen van ontvangstbewijzen, categoriseer de uitgaven en markeer deze indien nodig als factureerbaar. Bij het aanmaken van facturen kunt u deze uitgaven als regelposten opnemen. Onkosten ondersteunen goedkeuringsworkflows en het volgen van terugbetalingen, en kunnen aan specifieke projecten worden gekoppeld." +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "Kan ik Markdown gebruiken in beschrijvingen?" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "Ja! Project- en taakbeschrijvingen ondersteunen volledige Markdown-opmaak. U kunt vetgedrukte, cursieve, koppen, lijsten, koppelingen, codeblokken, tabellen en afbeeldingen gebruiken. Hierdoor kunt u rechtstreeks in uw projecten en taken rijke, goed opgemaakte documentatie creëren. De Markdown-editor bevat een voorbeeldmodus en ondersteunt een donker thema." +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "Waar kan ik extra hulp krijgen?" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Meld problemen en vraag functies aan op" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "Als beheerder heeft u toegang tot aanvullende systeeminformatie en diagnostiek in de" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "sectie." +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "Nog steeds hulp nodig?" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "Kunt u niet vinden wat u zoekt? Hier zijn aanvullende bronnen:" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "GitHub-opslagplaats" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Rapporteer probleem" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "Export Time Entries" +#~ msgstr "Recente tijdinvoer" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "Steun" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Zoekresultaten" +#~ msgid "Export format" +#~ msgstr "Exportformaat" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Zoek naar notities of tags" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "bijvoorbeeld ontwikkeling, ontmoeting, urgent" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Resultaten" +#~ msgid "Reset Filters" +#~ msgstr "Opgeslagen filters" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "Weet u zeker dat u deze tijdsinvoer wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt." +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "Geen resultaten gevonden" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Probeer een andere zoekopdracht of controleer uw spelling." +#~ msgid "Please select both start and end dates." +#~ msgstr "Datumbereik - Aangepaste begin- en einddatum" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "bijvoorbeeld een klantbijeenkomst, een locatiebezoek" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "De startdatum moet vóór de einddatum liggen" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Aanvullende details..." +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "bijvoorbeeld kantoor, thuis" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "bijvoorbeeld klantlocatie, luchthaven" +#~ msgid "Payments Received" +#~ msgstr "Betalingsvelden" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "bijvoorbeeld 12345" +#~ msgid "Net Received" +#~ msgstr "Ontvangen" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "bijvoorbeeld 12400" +#~ msgid "After fees" +#~ msgstr "Gateway-kosten" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "bijvoorbeeld VW Golf" +#~ msgid "Date Range & Comparison" +#~ msgstr "Datumbereik en vergelijking" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "bijvoorbeeld ABC-123" +#~ msgid "Quick Date Ranges" +#~ msgstr "Snelle datumbereiken" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "Tijdregistratie" +#~ msgid "This Week" +#~ msgstr "Week" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "Terug naar Rollen" +#~ msgid "This Month" +#~ msgstr "Maand" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "This Year" +#~ msgstr "Vorig jaar" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "Datum vanaf" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "Notitie toevoegen" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "Kosten bijhouden" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "Bijgehouden" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "Titel" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "Aangepaste datumbereiken" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "Comparison View" +#~ msgstr "Vergelijkingsweergave" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "Tijdregistratie" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "Start de volgtijd" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "Volg de betaling" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "Start de volgtijd" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "Kosten afgewezen" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Kilometerstand filteren" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "Live voorbeeld" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Doel, locatie..." +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Optionele goedkeuringsopmerkingen..." +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Reden van afwijzing (verplicht)" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "Mobiele navigatie" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "E-mail" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Typ een opdracht of zoek..." +#~ msgid "Comparison Results" +#~ msgstr "Vergelijkingsresultaten" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "Rapporten exporteren" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "Exportformaat" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "Rapporten exporteren" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Geplande rapporten" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "CSV-import" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "Exporteren" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "Report Types" +#~ msgstr "Rapporttypen" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "Projectrapport" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "User Report" +#~ msgstr "Gebruikersrapport" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "Samenvattend rapport" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "Taakrapport" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "Tijdinvoer" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "Recente inzendingen" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "No scheduled reports yet." +#~ msgstr "Geplande rapporten" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Add Scheduled Report" +#~ msgstr "Geplande rapporten" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Please set a date range" +#~ msgstr "Aangepaste datumbereiken" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Registreer nieuwe betaling" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Totaal betalingen" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Gateway-kosten" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Betalingen filteren" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "Betaald" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Geselecteerde betalingen verwijderen" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Wijzig de status voor geselecteerde betalingen" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Gerelateerde factuur" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "bijvoorbeeld zakenreis naar Berlijn" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "bijvoorbeeld DE, VS, GB" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "bijvoorbeeld Berlijn" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Claims filteren" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Verwijder geselecteerde claims" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Wijzig de status voor geselecteerde claims" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Aanvullende opmerkingen over dit tarief..." +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "Weet u zeker dat u dit dagtarief wilt verwijderen?" +#~ msgid "No data for the selected period." +#~ msgstr "Er zijn geen verkoopgegevens gevonden voor de geselecteerde periode." -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Per Diem-tarief verwijderen" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Factureerbaar project" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Geschatte uren" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Budgetbedrag" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "Taaknaam" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Projectcode" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Project maken" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Kanbanbordkolommen" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Zwembaan bewerken" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Kolom" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Lijstweergave" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Rasterweergave" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "Datum" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Project bewerken" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "Notitie toevoegen" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "Terug naar Project" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "bijvoorbeeld reizen naar een klantbijeenkomst" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "Korte beschrijving van deze categorie..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "Categorie" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "Materiaal" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "bijvoorbeeld softwarelicentie" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "Aanvullende details over deze aanpassing" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "Terug naar Klant" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Extra goed toevoegen" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Voeg een product of dienst toe aan" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Terug naar Project" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "SKU/productcode" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "Wat gebeurt er als u een project archiveert?" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "Het project wordt verborgen voor actieve projectlijsten" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "Er kunnen geen nieuwe tijdgegevens aan dit project worden toegevoegd" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "Bestaande gegevens en tijdinvoer blijven behouden" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Indien nodig kunt u het project later uit het archief halen" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Reden voor archivering" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Topprojecten (30 dagen)" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "bijv. Project voltooid, Klantcontract beëindigd, Project geannuleerd, enz." +#~ msgid "Time distribution by project" +#~ msgstr "Cirkeldiagrammen voor tijdverdeling" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "Het toevoegen van een reden helpt bij de projectorganisatie en toekomstige referentie." +#~ msgid "No project data for the last 30 days." +#~ msgstr "Geen activiteit in de afgelopen 30 dagen." -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Snel selecteren" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Project succesvol afgerond" +#~ msgid "Daily hours trend" +#~ msgstr "Trend van dagelijkse uren" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Project voltooid" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Klantcontract beëindigd" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Contract beëindigd" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Project geannuleerd door klant" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Project voor onbepaalde tijd on hold gezet" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "In de wacht" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Onderhoudsperiode geëindigd" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Onderhoud beëindigd" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Archiefproject" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "Zet een nieuw project op om uw werk te organiseren en de tijd effectief bij te houden" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Voer een beschrijvende projectnaam in" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Kies een duidelijke, beschrijvende naam die de reikwijdte van het project uitlegt" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Korte code, bijvoorbeeld ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Optioneel: korte tag weergegeven op Kanban-kaarten" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Nieuwe klant aanmaken" +#~ msgid "No trend data." +#~ msgstr "Citaatgegevens" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "Geef gedetailleerde informatie over het project, de doelstellingen en de resultaten..." +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Topprojecten (30 dagen)" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "Optioneel: Voeg context, doelstellingen of specifieke vereisten voor het project toe" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "Er zijn geen verkoopgegevens gevonden voor de geselecteerde periode." -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Schakel facturering in voor dit project" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "Laat leeg voor niet-factureerbare projecten" +#~ msgid "All Clients" +#~ msgstr "Klanten" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "PO-nummer, contractreferentie, etc." +#~ msgid "All Tasks" +#~ msgstr "Bekijk alle taken" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "Optioneel: Voeg een referentienummer of identificatie toe voor factureringsdoeleinden" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "Er zijn geen verkoopgegevens gevonden voor de geselecteerde periode." -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "bijv. 10000,00" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "Optioneel: Stel een totaal projectbudget in om de uitgaven te monitoren" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Waarschuwingsdrempel (%)" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Geef een melding wanneer het verbruikte budget deze drempel overschrijdt" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Tips voor het maken van projecten" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Duidelijke naamgeving" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "Probeer een andere zoekopdracht of controleer uw spelling." -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Gebruik beschrijvende namen die duidelijk het doel van het project aangeven" +#~ msgid "About Overtime Tracking" +#~ msgstr "Over het bijhouden van overuren" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Facturering instellen" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "Stel passende uurtarieven in op basis van de complexiteit van het project en het budget van de klant" +#~ msgid "Back to Reports" +#~ msgstr "Terug naar Rollen" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Gedetailleerde beschrijving" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "Tijdregistraties deze week" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "Neem projectdoelstellingen, resultaten en belangrijkste vereisten op" +#~ msgid "Top projects this week" +#~ msgstr "Topprojecten" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Klantselectie" +#~ msgid "No time logged this week yet." +#~ msgstr "Er zijn voor deze week nog geen tijdsregistraties geregistreerd" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "Kies de juiste opdrachtgever voor een goede projectorganisatie" +#~ msgid "Apply filter" +#~ msgstr "Filter toepassen" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Creëren..." +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "Weet u zeker dat u dit filter wilt verwijderen?" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "Kan klant niet aanmaken. Probeer het opnieuw." +#~ msgid "Delete Filter" +#~ msgstr "Filter verwijderen" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Klant aangemaakt" +#~ msgid "Go to Reports" +#~ msgstr "Rapport over lage voorraad" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Netwerkfout tijdens het aanmaken van de client" +#~ msgid "No saved filters yet" +#~ msgstr "Opgeslagen filters" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "Projectdashboard en analyses" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "Customize Shortcuts" +#~ msgstr "Pas snelkoppelingen aan" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Budgetanalyse" +#~ msgid "Search shortcuts..." +#~ msgstr "Snelkoppelingen zoeken..." -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Altijd" +#~ msgid "Save changes" +#~ msgstr "Wijzigingen opslaan" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "Laatste 7 dagen" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "Laatste 30 dagen" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "Laatste 3 maanden" +#~ msgid "Click to record" +#~ msgstr "Sleep om de volgorde te wijzigen" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "Vorig jaar" +#~ msgid "Revert" +#~ msgstr "Opnieuw instellen" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "geschat" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Budget gebruikt" +#~ msgid "Failed to save" +#~ msgstr "Kan timer niet stoppen" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "van de begroting" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Taken voltooid" +#~ msgid "Failed to save shortcuts." +#~ msgstr "Kan de status niet updaten" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "voltooiing" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "Hiermee worden alle sneltoetsen teruggezet " +#~ "naar hun standaardwaarden. Doorgaan?" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Teamleden" +#~ msgid "Reset to Defaults" +#~ msgstr "Terugzetten naar standaardwaarden" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "bijdragen" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "Terugzetten naar standaardwaarden?" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Budget versus Werkelijk" +#~ msgid "Failed to reset" +#~ msgstr "Kan avatar niet verwijderen." -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "Er is geen budget vastgesteld voor dit project" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Terugzetten naar standaardwaarden" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Distributie van taakstatus" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "Kan de status niet updaten" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Er zijn nog geen taken aangemaakt" +#~ msgid "Failed to load shortcuts." +#~ msgstr "Kan taken niet laden" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Bijdragen van teamleden" +#~ msgid "Welcome" +#~ msgstr "Welkom" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Nog geen tijdregistratie geregistreerd" +#~ msgid "Privacy First" +#~ msgstr "Privacy eerst" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Tijdregistratie tijdlijn" +#~ msgid "Self-hosted on your server" +#~ msgstr "Zelf gehost op uw server" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Selecteer een tijdsperiode om de tijdlijn te bekijken" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Anonieme telemetrie (opt-in)" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Gegevens teamlid" +#~ msgid "No PII collected ever" +#~ msgstr "Er is nooit PII verzameld" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "taken" +#~ msgid "Open source & transparent" +#~ msgstr "Open source en transparant" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Er zijn nog geen teamleden die tijd hebben ingelogd" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Aandacht vereist" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "taak(en) zijn te laat" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "Eenheidskosten" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Welkom bij TimeTracker" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "Laten we u zo meteen klaarmaken" -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "Rollen bijwerken" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Extra goed bewerken" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Beheer producten en diensten voor dit project" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Totaal goederen" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Factureerbaar bedrag" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Categorieën" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "Gefactureerd" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "Niet factureerbaar" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "Weet je zeker dat je dit extra goed wilt verwijderen?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Extra goed verwijderen" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "Er zijn geen extra goederen gevonden voor dit project" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Voeg je eerste goed toe" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Uitsplitsing per categorie" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "artikel(en)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Projecten filteren" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Bedankt dat u voor TimeTracker hebt gekozen!" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "Uw gegevens blijven op uw server en u heeft volledige controle." -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "Region & time" +#~ msgstr "Eindtijd" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "Project markeren als inactief?" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Wijzig de projectstatus" +#~ msgid "Timezone" +#~ msgstr "Tijdzone" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "Project activeren?" +#~ msgid "Date format" +#~ msgstr "Datumnotatie" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Activeer Project" +#~ msgid "Time format" +#~ msgstr "Tijdformaat" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Archief" +#~ msgid "24-hour" +#~ msgstr "uur" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "Project uit het archief halen?" +#~ msgid "12-hour" +#~ msgstr "uur" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Project uit het archief halen" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Uit het archief halen" +#~ msgid "Company name" +#~ msgstr "Bedrijfsnaam" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Project verwijderen" +#~ msgid "Your Company Name" +#~ msgstr "Uw bedrijfsnaam" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Archiefinformatie" +#~ msgid "Your Company Address" +#~ msgstr "Uw bedrijfsadres" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Gearchiveerd op:" +#~ msgid "App behavior and timer settings." +#~ msgstr "Instellingen voor overuren" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Gearchiveerd door:" +#~ msgid "Allow self-registration" +#~ msgstr "Instellingen voor zelfregistratie" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Reden:" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Regels voor tijdafronding" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Budgetoverzicht" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Rond tijdinvoer af op geconfigureerde intervallen" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Over" +#~ msgid "Single active timer per user" +#~ msgstr "Enkele actieve timermodus" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Bekijk de volledige budgetanalyse" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Configuratie voor time-out bij inactiviteit" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Taken voor dit project" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Vanwege" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Geschat" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "Geen taken voor dit project." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "verplaatst naar" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "verplaatst naar" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "Handmatige invoer" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "Lage voorraad" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Duplicaat" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Markeer als verzonden" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Geaccepteerd" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Maak uw eerste offerte" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Meer informatie" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Terug naar Citaat" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "Als u deze offerte accepteert, wordt er een nieuw project aangemaakt met het budget uit de offerte." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "Het project wordt gemaakt met het budget uit de offerte" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Offerte accepteren en project maken" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Offerte maken" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Titel van citaat" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Citaatbeschrijving" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "Citeer artikelen" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "Termijn" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "Inhoudstype" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "Lage voorraad" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "Artikelen Subtotaal" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "Kosten" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "bijvoorbeeld REIZEN, MAALTIJDEN" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "Notitie toevoegen" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "Artikelen Subtotaal" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "Extra goederen" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "Producten, materialen, licenties en andere goederen" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "Voeg goed toe" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "Subtotaal goederen" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "Totaal offertes" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Financiële details" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Selecteer betalingsvoorwaarden" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "Verschuldigd bij ontvangst" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "Of voer aangepaste betalingsvoorwaarden in" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Gebruik aangepaste termen" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Korting" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Kortingstype" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Geen korting" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "Percentage (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Vast bedrag" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Kortingsbedrag" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0,00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Couponcode" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Optionele couponcode" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Reden van korting" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Reden voor korting" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Goedkeuringsworkflow" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Vereist goedkeuring vóór verzending" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "Aanvullende informatie" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Interne opmerkingen (niet zichtbaar voor klant)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Deze notities zijn alleen zichtbaar voor jouw team" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Algemene voorwaarden" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Algemene voorwaarden" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Deze voorwaarden zijn zichtbaar voor de klant" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Citaat bewerken" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "Klant kan niet worden gewijzigd" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Offerte bijwerken" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Totaal offertes" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Acceptatiepercentage" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Gem. prijsopgavewaarde" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Citaten op status" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Topklanten op basis van offertes" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Citaten filteren" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Zoek citaten..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "Weet u zeker dat u wilt dupliceren" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "citaten)?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "Weet u zeker dat u wilt markeren?" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "offerte(s) zoals verzonden?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "CITAAT" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Citaat #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Citaat voor" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Subtotaal na korting:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Beschrijving:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Subtotaal na korting" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Er is nog geen goedkeuring aangevraagd" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "In afwachting van goedkeuring" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Afgewezen door" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Opnieuw goedkeuring aanvragen" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Offerte verzenden" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "Weet u zeker dat u deze offerte wilt afwijzen?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Citaat verwijderen" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Interne opmerking (niet zichtbaar voor klant)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Intern" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "Weet je zeker dat je deze reactie wilt verwijderen?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Schrijf een antwoord..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "Nog geen opmerkingen. Begin het gesprek door de eerste opmerking toe te voegen." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Verzonden op" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Geaccepteerd op" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Offerte verzenden via e-mail" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "E-mailadres van ontvanger" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "Citaat %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Aangepast bericht (optioneel)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Voeg een aangepast bericht toe aan de e-mail..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "PDF bijvoegen" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Offerte goedkeuren" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Opmerkingen (optioneel)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Goedkeuringsopmerkingen toevoegen..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Goedkeuring van offerte afwijzen" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Geef een reden voor afwijzing op..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "Weet u zeker dat u deze offerte wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Terugkerende factuur maken" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "Update terugkerende factuur" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Automatiseer het genereren van facturen voor facturering op basis van abonnementen" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Frequentie" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Volgende uitvoering" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Genereer nu" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Sjabloondetails" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Factuurinstellingen" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Recent gegenereerde facturen" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "Privacy eerst" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Toewijzen aan" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Schakel anonieme telemetrie in" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "Help ons gebruikspatronen te begrijpen om TimeTracker te verbeteren" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "Welke gegevens worden verzameld?" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "Wat we verzamelen:" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Anonieme installatievingerafdruk (gehasht)" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Application version & platform info" +#~ msgstr "Applicatieversie en platforminformatie" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "Statistieken over functiegebruik" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "Wat we NIET verzamelen:" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "Geen gebruikersnamen of e-mailadressen" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "Geen tijdinvoergegevens of aantekeningen" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "Geen klant- of bedrijfsgegevens" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "U kunt dit op elk gewenst moment wijzigen" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "Beschikbare rapporten" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "Als u doorgaat, gaat u ermee akkoord TimeTracker te gebruiken onder de" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "GPL-3.0-licentie" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "Standaardrapporten" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Voltooi de installatie en ga door" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "Taak bewerken" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "Kan de status niet updaten" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "Kan de taakstatus niet bijwerken" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "Kanban-kolom gemaakt" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "Kanban-kolom verwijderd" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "Samenvattend rapport" +#~ msgid "Kanban columns reordered" +#~ msgstr "Kanban-kolommen opnieuw gerangschikt" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "Zichtbaarheid van Kanban-kolommen gewijzigd" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "Helder canvas" +#~ msgid "Kanban columns updated" +#~ msgstr "Kanban-kolommen bijgewerkt" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Update" +#~ msgstr "Update" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "Kanban-kolommen kunnen niet worden vernieuwd" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "Taakdetails laden..." -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Tracked" +#~ msgstr "Bijgehouden" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "Bekijk volledige details" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "Terug naar Taken" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" +#~ "Voeg een nieuwe taak toe aan uw" +#~ " project om het werk op te " +#~ "splitsen in beheersbare componenten" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "Voer een beschrijvende taaknaam in" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "" +#~ "Kies een duidelijke, beschrijvende naam " +#~ "die uitlegt wat er moet gebeuren" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Geef gedetailleerde informatie over de " +#~ "taak, vereisten en eventuele specifieke " +#~ "instructies..." -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" +#~ "Optioneel: Voeg context, vereisten of " +#~ "specifieke instructies voor de taak toe" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Selecteer het project waartoe deze taak behoort" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "Initiële status" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Done" +#~ msgstr "Klaar" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Optioneel: Stel een deadline in voor deze taak" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Optioneel: Schat in hoe lang deze taak zal duren" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Optioneel: wijs deze taak toe aan een teamlid" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Tags voor categorisatie" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "Tips voor het maken van taken" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "Gebruik actiewerkwoorden en wees specifiek over wat er moet gebeuren" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "Realistische schattingen" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "" +#~ "Houd bij het inschatten van tijd " +#~ "rekening met complexiteit en afhankelijkheden" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "Stel deadlines in" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" +#~ "Inleverdata helpen bij het prioriteren " +#~ "van werk en het bijhouden van de" +#~ " voortgang" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "Prioriteit is belangrijk" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Gebruik prioriteitsniveaus om teamleden te " +#~ "helpen zich te concentreren op wat " +#~ "het belangrijkste is" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "Terug naar taak" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "Update taakdetails en instellingen voor \"%(task)s\"" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "Taakinformatie" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "Taak bijwerken" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "Schatting gebruikt" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Actual" +#~ msgstr "Werkelijk" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "Current Task Info" +#~ msgstr "Informatie over huidige taak" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Current Status" +#~ msgstr "Huidige status" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "Huidige prioriteit" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "Momenteel toegewezen aan" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "Huidige vervaldatum" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "Recente tijdinvoer" +#~ msgid "Current Estimate" +#~ msgstr "Huidige schatting" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "Werkelijke uren" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "Exportformaat" +#~ msgid "Started" +#~ msgstr "Gestart" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "bijvoorbeeld ontwikkeling, ontmoeting, urgent" +#~ msgid "Edit Tips" +#~ msgstr "Bewerk tips" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "Opgeslagen filters" +#~ msgid "Status Changes" +#~ msgstr "Statuswijzigingen" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "" +#~ "Een veranderende status kan van invloed" +#~ " zijn op de tijdregistratie en " +#~ "voortgangsberekeningen" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "Updates van vervaldatums" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "Datumbereik - Aangepaste begin- en einddatum" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "Houd rekening met de teamwerklast bij het aanpassen van deadlines" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "De startdatum moet vóór de einddatum liggen" +#~ msgid "Assignment Changes" +#~ msgstr "Wijzigingen in toewijzing" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "Breng teamleden op de hoogte wanneer taken opnieuw worden toegewezen" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "Updating..." +#~ msgstr "Updaten..." -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "Betalingsvelden" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "Ontvangen" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "Gateway-kosten" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Datumbereik en vergelijking" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Snelle datumbereiken" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "Week" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "Maand" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "Vorig jaar" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "Aangepaste datumbereiken" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "Vergelijkingsweergave" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "Live voorbeeld" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "Taken filteren" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "Frontend" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Verwijder geselecteerde taken" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Wijzig de status voor geselecteerde taken" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "Wijs geselecteerde taken toe" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Vergelijkingsresultaten" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Rapporten exporteren" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Exportformaat" - -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "Rapporten exporteren" - -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "Geplande rapporten" - -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "CSV-import" - -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "Exporteren" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "Rapporttypen" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "Projectrapport" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Gebruikersrapport" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Samenvattend rapport" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Taakrapport" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "Tijdinvoer" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "Taken toewijzen" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Verplaats geselecteerde taken naar project" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "Selecteer Project" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "Taken verplaatsen" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "Weet u zeker dat u de taak \"{name}\" wilt verwijderen?" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "Recente inzendingen" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "Kan taak \"{name}\" niet verwijderen " +#~ "omdat deze tijdsinvoer bevat. Verwijder " +#~ "eerst de tijdgegevens." -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "Geplande rapporten" +#~ msgid "Delete Task" +#~ msgstr "Taak verwijderen" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "Geplande rapporten" +#~ msgid "My Tasks" +#~ msgstr "Mijn taken" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "Aangepaste datumbereiken" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Taken die aan u zijn toegewezen of door u zijn aangemaakt" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "total" +#~ msgstr "totaal" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "Filter mijn taken" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "Taaknaam of beschrijving" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "Alle prioriteiten" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "Taaktype" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "Aan mij toegewezen" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "Gemaakt door mij" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "Alleen achterstallige weergave weergeven" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "Gemaakt door mij" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "Paginering van mijn taken" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "Geen taken gevonden" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Er zijn nog geen taken aan u toegewezen of door u aangemaakt." -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "Creëer uw eerste taak" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "Bekijk alle taken" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "Achterstallige taken" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "Vereist onmiddellijke aandacht" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "items" +#~ msgstr "artikelen" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "There are" +#~ msgstr "Er zijn" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "Er zijn geen verkoopgegevens gevonden voor de geselecteerde periode." +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "Controleer en update deze taken om verdere vertragingen te voorkomen." -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Due:" +#~ msgstr "Vanwege:" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Est:" +#~ msgstr "Geschat:" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Actual:" +#~ msgstr "Werkelijk:" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "Vervaldata" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "Vervaldata" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "Projectmanagement" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "Alle prioriteiten" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "Geen achterstallige taken!" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "Geweldig werk! Momenteel liggen alle werkzaamheden op schema." -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Voer een nieuwe vervaldatum in (JJJJ-MM-DD):" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Weet u zeker dat u de vervaldatum wilt verlengen?" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "voor alle achterstallige taken?" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "Voer een nieuwe prioriteit in (laag/gemiddeld/hoog/urgent):" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Weet u zeker dat u prioriteit wilt instellen" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "Ongeldige prioriteit. Gebruik: laag, gemiddeld, hoog of urgent" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "Kan doel niet updaten. Probeer het opnieuw." -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "Taak starten en markeren als In uitvoering?" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "Wijzig de taakstatus" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "Taak markeren als Te doen?" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "Taak markeren als gereed?" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "Voltooi de taak" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Complete" +#~ msgstr "Compleet" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "Taak opnieuw openen om te beoordelen?" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "Heropen de taak" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "Heropenen" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "Projectdetails en reikwijdte" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "Tijdinvoersjabloon maken" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "bijvoorbeeld Daily Standup, klantbijeenkomst" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "bijvoorbeeld 1,0, 0,5" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Opmerkingen vooraf invullen voor dit type tijdsinvoer" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "bijvoorbeeld vergadering, ontwikkeling, admin" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "Sjabloon bewerken" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Weet u zeker dat u deze sjabloon wilt verwijderen?" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "Sjabloon verwijderen" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "Create Your First Template" +#~ msgstr "Creëer uw eerste taak" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "Sjablonen" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "Maak uw eerste e-mailsjabloon om factuur-e-mails aan te passen." -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "Usage Statistics" +#~ msgstr "Gebruiksstatistieken" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "Topprojecten (30 dagen)" +#~ msgid "selected" +#~ msgstr "" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "Cirkeldiagrammen voor tijdverdeling" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "Geen activiteit in de afgelopen 30 dagen." +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "Trend van dagelijkse uren" +#~ msgid "Click to edit" +#~ msgstr "Terug naar Bewerken" -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "Citaatgegevens" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "Topprojecten (30 dagen)" +#~ msgid "Request approval" +#~ msgstr "Vraag goedkeuring aan" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "Er zijn geen verkoopgegevens gevonden voor de geselecteerde periode." +#~ msgid "Clear filters" +#~ msgstr "Schakel Filters in" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "Geen tijdinvoergegevens of aantekeningen" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "Klanten" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "Bekijk alle taken" +#~ msgid "No time entries yet" +#~ msgstr "Nog geen tijdregistratie geregistreerd" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "Er zijn geen verkoopgegevens gevonden voor de geselecteerde periode." +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "Paginering van mijn taken" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "Handmatige tijdinvoer" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "Tijdinvoer" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "Hoe maak ik bulktijdinvoer voor meerdere dagen?" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "Bulkinvoer" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "Geselecteerd project niet gevonden" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Taken worden geladen na het selecteren van een project" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "Tijdbereik" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "Probeer een andere zoekopdracht of controleer uw spelling." +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "Over het bijhouden van overuren" +#~ msgid "Entries will be created for these dates" +#~ msgstr "Tijdsinvoer wordt afgerond op dit interval" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "Slimme timers" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "Terug naar Rollen" - -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "Tijdregistraties deze week" - -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "Topprojecten" - -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "Er zijn voor deze week nog geen tijdsregistraties geregistreerd" - -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Filter toepassen" - -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "Weet u zeker dat u dit filter wilt verwijderen?" - -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Filter verwijderen" - -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "Rapport over lage voorraad" - -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "Opgeslagen filters" - -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Pas snelkoppelingen aan" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Snelkoppelingen zoeken..." +#~ msgid "tag1, tag2, tag3" +#~ msgstr "label1, label2" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "Wijzigingen opslaan" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "Facturen filteren" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Create Entries" +#~ msgstr "Recente inzendingen" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "Sleep om de volgorde te wijzigen" +#~ msgid "Bulk Entry Tips" +#~ msgstr "Bulkinvoer" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "Opnieuw instellen" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "Skip Weekends" +#~ msgstr "Wekelijkse trends" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "Kan timer niet stoppen" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "Doorlooptijd (dagen)" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "Kan de status niet updaten" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "Hiermee worden alle sneltoetsen teruggezet naar hun standaardwaarden. Doorgaan?" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Terugzetten naar standaardwaarden" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "Terugzetten naar standaardwaarden?" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "Kan avatar niet verwijderen." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "Terugzetten naar standaardwaarden" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "Kan de status niet updaten" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "Kan taken niet laden" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Welkom" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "Privacy eerst" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Zelf gehost op uw server" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Anonieme telemetrie (opt-in)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "Er is nooit PII verzameld" - -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Open source en transparant" - -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Welkom bij TimeTracker" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "Laten we u zo meteen klaarmaken" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "Bedankt dat u voor TimeTracker hebt gekozen!" +#~ msgid "Failed to load tasks" +#~ msgstr "Kan taken niet laden" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "Uw gegevens blijven op uw server en u heeft volledige controle." +#~ msgid "Total days" +#~ msgstr "Totaal goederen" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "Eindtijd" +#~ msgid "Weekdays only" +#~ msgstr "De week begint" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "Tijdsinvoer wordt afgerond op dit interval" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Tijdzone" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "Datumnotatie" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "Tijdformaat" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "uur" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "uur" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Agenda" +#~ msgstr "Kalender" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "Bedrijfsnaam" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "Uw bedrijfsnaam" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "Uw bedrijfsadres" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "Instellingen voor overuren" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "Instellingen voor zelfregistratie" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "Tijdformaat" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "Regels voor tijdafronding" +#~ msgid "CSV Format" +#~ msgstr "CSV-import" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "Rond tijdinvoer af op geconfigureerde intervallen" +#~ msgid "Filter by tags..." +#~ msgstr "Filter mijn taken" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "Enkele actieve timermodus" +#~ msgid "Show billable entries only" +#~ msgstr "Geen tijdgegevens gevonden." -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "Factureerbaar bedrag" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "Configuratie voor time-out bij inactiviteit" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "Totaal uren" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "Uren per project" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "Maak een nieuwe tijdinvoer aan" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "Selecteer een project..." -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Terugkerende facturen" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Tijdinvoersjabloon maken" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "Update terugkerende factuur" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "Navigatie" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Views" +#~ msgstr "Weergave" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Day View" +#~ msgstr "Rasterweergave" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Week View" +#~ msgstr "Beoordeling" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "Month View" +#~ msgstr "Maand" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "Agenda View" +#~ msgstr "Kalenderweergave" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "Privacy eerst" +#~ msgid "Create New Entry" +#~ msgstr "Nieuwe klant aanmaken" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Focus Filter" +#~ msgstr "Filters weergeven" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Schakel anonieme telemetrie in" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Help ons gebruikspatronen te begrijpen om TimeTracker te verbeteren" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "Welke gegevens worden verzameld?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "Wat we verzamelen:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "Anonieme installatievingerafdruk (gehasht)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "Applicatieversie en platforminformatie" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Statistieken over functiegebruik" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "Wat we NIET verzamelen:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Geen gebruikersnamen of e-mailadressen" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Geen tijdinvoergegevens of aantekeningen" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Geen klant- of bedrijfsgegevens" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "U kunt dit op elk gewenst moment wijzigen" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "Als u doorgaat, gaat u ermee akkoord TimeTracker te gebruiken onder de" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "GPL-3.0-licentie" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Voltooi de installatie en ga door" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Taak bewerken" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "Kan de status niet updaten" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "Kan de taakstatus niet bijwerken" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Kanban-kolom gemaakt" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Kanban-kolom verwijderd" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Kanban-kolommen opnieuw gerangschikt" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "Zichtbaarheid van Kanban-kolommen gewijzigd" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Kanban-kolommen bijgewerkt" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Update" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "Kanban-kolommen kunnen niet worden vernieuwd" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Taakdetails laden..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Bijgehouden" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Bekijk volledige details" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Terug naar Taken" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "Voeg een nieuwe taak toe aan uw project om het werk op te splitsen in beheersbare componenten" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Voer een beschrijvende taaknaam in" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "Kies een duidelijke, beschrijvende naam die uitlegt wat er moet gebeuren" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "Geef gedetailleerde informatie over de taak, vereisten en eventuele specifieke instructies..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "Optioneel: Voeg context, vereisten of specifieke instructies voor de taak toe" - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Selecteer het project waartoe deze taak behoort" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Initiële status" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Klaar" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Optioneel: Stel een deadline in voor deze taak" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Optioneel: Schat in hoe lang deze taak zal duren" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Optioneel: wijs deze taak toe aan een teamlid" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "Wis alle caches" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "Tags voor categorisatie" +#~ msgid "Close Modal" +#~ msgstr "Dichtbij" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Tips voor het maken van taken" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Gebruik actiewerkwoorden en wees specifiek over wat er moet gebeuren" +#~ msgid "Failed to load events" +#~ msgstr "Kan taken niet laden" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Realistische schattingen" +#~ msgid "Please select a project for new entries" +#~ msgstr "Selecteer een project in de vervolgkeuzelijst" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Houd bij het inschatten van tijd rekening met complexiteit en afhankelijkheden" +#~ msgid "Please select a project first" +#~ msgstr "Selecteer een project" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Stel deadlines in" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Inleverdata helpen bij het prioriteren van werk en het bijhouden van de voortgang" +#~ msgid "Entry created successfully" +#~ msgstr "Evenement succesvol aangemaakt" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Prioriteit is belangrijk" +#~ msgid "Failed to create entry" +#~ msgstr "Kan gebeurtenis niet verwijderen" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "Gebruik prioriteitsniveaus om teamleden te helpen zich te concentreren op wat het belangrijkste is" +#~ msgid "Entry updated" +#~ msgstr "Laatst bijgewerkt" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Terug naar taak" +#~ msgid "Failed to update entry" +#~ msgstr "Kan de status niet updaten" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Update taakdetails en instellingen voor \"%(task)s\"" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Weet u zeker dat u deze notitie wilt verwijderen?" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Taakinformatie" +#~ msgid "Delete Entry" +#~ msgstr "Invoer verwijderen" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Taak bijwerken" +#~ msgid "Automatic Timer" +#~ msgstr "Starttimer" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Schatting gebruikt" +#~ msgid "Entry deleted" +#~ msgstr "Verwijderd" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Werkelijk" +#~ msgid "Failed to delete entry" +#~ msgstr "Kan gebeurtenis niet verwijderen" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Informatie over huidige taak" +#~ msgid "Export started" +#~ msgstr "Gegevens exporteren" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "Huidige status" +#~ msgid "No recurring blocks yet" +#~ msgstr "Terugkerende facturen" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Huidige prioriteit" +#~ msgid "Unknown Project" +#~ msgstr "Geen project" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "Momenteel toegewezen aan" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "Kan taken niet laden" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Huidige vervaldatum" +#~ msgid "No events in this period" +#~ msgstr "Geen taken in deze kolom." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Huidige schatting" +#~ msgid "Failed to load agenda view" +#~ msgstr "Kan activiteiten niet laden" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Werkelijke uren" +#~ msgid "Failed to load event details" +#~ msgstr "Kan taken niet laden" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Gestart" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Weet u zeker dat u deze notitie wilt verwijderen?" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Bewerk tips" +#~ msgid "Delete Recurring Block" +#~ msgstr "Update terugkerende factuur" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Statuswijzigingen" +#~ msgid "Recurring block deleted" +#~ msgstr "Terugkerend evenement" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "Een veranderende status kan van invloed zijn op de tijdregistratie en voortgangsberekeningen" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Updates van vervaldatums" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Houd rekening met de teamwerklast bij het aanpassen van deadlines" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Wijzigingen in toewijzing" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "Breng teamleden op de hoogte wanneer taken opnieuw worden toegewezen" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Updaten..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Taken filteren" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "Frontend" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Verwijder geselecteerde taken" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Wijzig de status voor geselecteerde taken" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Wijs geselecteerde taken toe" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Taken toewijzen" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Verplaats geselecteerde taken naar project" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Selecteer Project" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Taken verplaatsen" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "Weet u zeker dat u de taak \"{name}\" wilt verwijderen?" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "Kan taak \"{name}\" niet verwijderen omdat deze tijdsinvoer bevat. Verwijder eerst de tijdgegevens." +#~ msgid "Failed to delete recurring block" +#~ msgstr "Kan gebeurtenis niet verwijderen" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Taak verwijderen" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Voer een nieuwe vervaldatum in (JJJJ-MM-DD):" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "Mijn taken" +#~ msgid "Entry duplicated successfully" +#~ msgstr "Evenement succesvol bijgewerkt" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Taken die aan u zijn toegewezen of door u zijn aangemaakt" +#~ msgid "Failed to duplicate entry" +#~ msgstr "Kan gebeurtenis niet verwijderen" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "totaal" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "Filter mijn taken" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "Sneltoetsen op het toetsenbord" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Taaknaam of beschrijving" +#~ msgid "Edit Time Entry" +#~ msgstr "Nieuwe tijdinvoer" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Alle prioriteiten" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Taaktype" +#~ msgid "Confirm Changes" +#~ msgstr "Bevestigd" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "Aan mij toegewezen" +#~ msgid "Confirm & Save" +#~ msgstr "Bevestigd" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Gemaakt door mij" +#~ msgid "Admin Mode" +#~ msgstr "Beheerdersgroep" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Alleen achterstallige weergave weergeven" +#~ msgid "Admin Mode:" +#~ msgstr "Beheerdersgroep" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Gemaakt door mij" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "Paginering van mijn taken" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Selecteer het project waartoe deze taak behoort" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "Geen taken gevonden" +#~ msgid "Task (Optional)" +#~ msgstr "Taak (optioneel)" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "Er zijn nog geen taken aan u toegewezen of door u aangemaakt." +#~ msgid "Select a specific task within the project" +#~ msgstr "Geselecteerde taak is ongeldig voor het gekozen project" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Creëer uw eerste taak" +#~ msgid "When the work started" +#~ msgstr "Begindatum van de week" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Bekijk alle taken" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Achterstallige taken" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Vereist onmiddellijke aandacht" +#~ msgid "Time the work ended" +#~ msgstr "Klantcontract beëindigd" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "artikelen" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "Er zijn" +#~ msgid "Automatic" +#~ msgstr "Autorisatie" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "Controleer en update deze taken om verdere vertragingen te voorkomen." +#~ msgid "How this entry was created" +#~ msgstr "Klant aangemaakt" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "Vanwege:" +#~ msgid "Duration:" +#~ msgstr "Duur" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "Geschat:" +#~ msgid "Describe what you worked on" +#~ msgstr "Waar heb je aan gewerkt?" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Werkelijk:" +#~ msgid "tag1, tag2" +#~ msgstr "label1, label2" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "Vervaldata" +#~ msgid "Internal invoice reference" +#~ msgstr "Geen facturen geselecteerd" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Ontvangstbewijs/factuurnummer" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "Vervaldata" +#~ msgid "Reason for Change" +#~ msgstr "Reden voor archivering" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "Projectmanagement" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "Alle prioriteiten" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "Geen achterstallige taken!" +#~ msgid "Task:" +#~ msgstr "Taak" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "Geweldig werk! Momenteel liggen alle werkzaamheden op schema." +#~ msgid "Start:" +#~ msgstr "Begin" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Voer een nieuwe vervaldatum in (JJJJ-MM-DD):" +#~ msgid "End:" +#~ msgstr "Einde" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "Weet u zeker dat u de vervaldatum wilt verlengen?" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "voor alle achterstallige taken?" +#~ msgid "Admin Notice" +#~ msgstr "Notitie toevoegen" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "Voer een nieuwe prioriteit in (laag/gemiddeld/hoog/urgent):" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "Weet u zeker dat u prioriteit wilt instellen" +#~ msgid "Duplicate Entry" +#~ msgstr "Dubbele invoer" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Ongeldige prioriteit. Gebruik: laag, gemiddeld, hoog of urgent" +#~ msgid "Duplicate Time Entry" +#~ msgstr "Dubbele tijdsinvoer" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "Tijd handmatig registreren" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "Kan doel niet updaten. Probeer het opnieuw." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "Taak starten en markeren als In uitvoering?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Wijzig de taakstatus" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "Taak markeren als Te doen?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "Taak markeren als gereed?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Voltooi de taak" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Compleet" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "Taak opnieuw openen om te beoordelen?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Heropen de taak" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Heropenen" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "Projectdetails en reikwijdte" - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Tijdinvoersjabloon maken" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "bijvoorbeeld Daily Standup, klantbijeenkomst" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "bijvoorbeeld 1,0, 0,5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Opmerkingen vooraf invullen voor dit type tijdsinvoer" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "bijvoorbeeld vergadering, ontwikkeling, admin" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Sjabloon bewerken" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "Weet u zeker dat u deze sjabloon wilt verwijderen?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Sjabloon verwijderen" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "Creëer uw eerste taak" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "Sjablonen" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "Maak uw eerste e-mailsjabloon om factuur-e-mails aan te passen." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Gebruiksstatistieken" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Maak een kopie van een eerder item met nieuwe tijden" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "Maak een nieuwe tijdinvoer aan" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "Dubbele invoer:" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "Original:" +#~ msgstr "Origineel:" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "to" +#~ msgstr "naar" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "Terug naar Bewerken" +#~ msgid "Project & task" +#~ msgstr "Projecten" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "Datum en tijd" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "Vraag goedkeuring aan" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "Schakel Filters in" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "Geen tijdinvoergegevens of aantekeningen" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "Nog geen tijdregistratie geregistreerd" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "Paginering van mijn taken" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "Handmatige tijdinvoer" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "Tijdinvoer" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "Hoe maak ik bulktijdinvoer voor meerdere dagen?" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "Bulkinvoer" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "Geselecteerd project niet gevonden" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Taken worden geladen na het selecteren van een project" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "Tijdbereik" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "Gast" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "Tijdsinvoer wordt afgerond op dit interval" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "Slimme timers" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "Waar heb je aan gewerkt?" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "label1, label2" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "Facturen filteren" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "Recente inzendingen" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "Bulkinvoer" +#~ msgid "Apply filters" +#~ msgstr "Filters toepassen" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "Wekelijkse trends" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "Doorlooptijd (dagen)" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "Kan taken niet laden" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "Totaal goederen" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "De week begint" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "Tijdsinvoer wordt afgerond op dit interval" - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "Kalender" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "Tijdformaat" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "CSV-import" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "Filter mijn taken" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "Geen tijdgegevens gevonden." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "Factureerbaar bedrag" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "Totaal uren" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "Uren per project" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "Maak een nieuwe tijdinvoer aan" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Selecteer een project..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "Terugkerende facturen" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "Tijdinvoersjabloon maken" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "Update terugkerende factuur" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "Navigatie" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "Weergave" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "Rasterweergave" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "Beoordeling" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "Maand" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "Kalenderweergave" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "Nieuwe klant aanmaken" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "Filters weergeven" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "Wis alle caches" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "Dichtbij" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "Houd uw tijd bij met een visuele timer" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "Geschatte voltooiing" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "Kan taken niet laden" +#~ msgid "Calculating..." +#~ msgstr "Berekenen..." -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "Selecteer een project in de vervolgkeuzelijst" +#~ msgid "Based on average session duration" +#~ msgstr "Gebaseerd op de gemiddelde sessieduur" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "Selecteer een project" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Geen actieve timer. Begin er hieronder één!" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "Nieuwe timer starten" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "Evenement succesvol aangemaakt" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "Kan gebeurtenis niet verwijderen" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "Laatst bijgewerkt" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "Kan de status niet updaten" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "Weet u zeker dat u deze notitie wilt verwijderen?" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "Invoer verwijderen" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "Starttimer" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "Verwijderd" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "Kan gebeurtenis niet verwijderen" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "Gegevens exporteren" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "Terugkerende facturen" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "Geen project" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "Kan taken niet laden" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "Geen taken in deze kolom." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "Kan activiteiten niet laden" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "Kan taken niet laden" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "Weet u zeker dat u deze notitie wilt verwijderen?" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "Update terugkerende factuur" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "Terugkerend evenement" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "Kan gebeurtenis niet verwijderen" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Voer een nieuwe vervaldatum in (JJJJ-MM-DD):" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "Evenement succesvol bijgewerkt" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "Kan gebeurtenis niet verwijderen" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Voeg notities toe over waar u aan werkt..." -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "Sneltoetsen op het toetsenbord" +#~ msgid "Or use a template" +#~ msgstr "Of gebruik een sjabloon" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "Nieuwe tijdinvoer" +#~ msgid "Recent Projects" +#~ msgstr "Recente projecten" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "De statistieken van vandaag" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "Bevestigd" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "Bevestigd" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "Beheerdersgroep" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "Beheerdersgroep" +#~ msgid "Approval" +#~ msgstr "Goedkeuren" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "Selecteer het project waartoe deze taak behoort" +#~ msgid "License status" +#~ msgstr "Huidige status" -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "Taak (optioneel)" +#~ msgid "Supporter license active" +#~ msgstr "Ondersteunde functies" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "Geselecteerde taak is ongeldig voor het gekozen project" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "Begindatum van de week" +#~ msgid "Not activated" +#~ msgstr "Activeren" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "Voer de klantnaam in" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "Klantcontract beëindigd" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "License key" +#~ msgstr "Licentie" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "Autorisatie" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "Klant aangemaakt" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "Duur" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "Waar heb je aan gewerkt?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "label1, label2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "Geen facturen geselecteerd" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "Ontvangstbewijs/factuurnummer" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "Reden voor archivering" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Validate" +#~ msgstr "Datum" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "Taak" +#~ msgid "Back to Settings" +#~ msgstr "Back-upinstellingen" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "Begin" +#~ msgid "Profile" +#~ msgstr "Profiel" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "Einde" +#~ msgid "In progress" +#~ msgstr "In uitvoering" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "Bekijk alle tijdregistraties" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "Notitie toevoegen" +#~ msgid "No recent time entries" +#~ msgstr "Geen recente tijdinvoer" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Beheer uw accountinstellingen en voorkeuren" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Dubbele invoer" +#~ msgid "Support & Community" +#~ msgstr "Open source en gemeenschap" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Dubbele tijdsinvoer" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Tijd handmatig registreren" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Maak een kopie van een eerder item met nieuwe tijden" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Maak een nieuwe tijdinvoer aan" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Dubbele invoer:" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Origineel:" +#~ msgid "Profile Information" +#~ msgstr "Profielinformatie" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "naar" +#~ msgid "Username cannot be changed" +#~ msgstr "Gebruikersnaam kan niet worden gewijzigd" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "Projecten" +#~ msgid "Required for email notifications" +#~ msgstr "Vereist voor e-mailmeldingen" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "Datum en tijd" +#~ msgid "Notification Preferences" +#~ msgstr "Meldingsvoorkeuren" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "Schakel e-mailmeldingen in" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "Hoofdschakelaar voor alle e-mailmeldingen" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Meldingen van achterstallige facturen" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "Gast" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Meldingen over taaktoewijzing" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Opmerkingen en vermeldingen" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "E-mail met wekelijks tijdsoverzicht" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "Waar heb je aan gewerkt?" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Schakel e-mailmeldingen in" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "Filters toepassen" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "Weergavevoorkeuren" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "System Default" +#~ msgstr "Systeemstandaard" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "Voorkeuren voor tijdafronding" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Configureer hoe uw tijdsinvoer wordt " +#~ "afgerond. Dit heeft invloed op de " +#~ "manier waarop de duur wordt berekend " +#~ "wanneer u timers stopt." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "Tijdafronding inschakelen" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Rond tijdinvoer af op geconfigureerde intervallen" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "Afrondingsinterval" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "Tijdsinvoer wordt afgerond op dit interval" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Houd uw tijd bij met een visuele timer" +#~ msgid "Rounding Method" +#~ msgstr "Afrondingsmethode" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Geschatte voltooiing" +#~ msgid "Overtime Settings" +#~ msgstr "Instellingen voor overuren" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Berekenen..." +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "Gebaseerd op de gemiddelde sessieduur" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Geen actieve timer. Begin er hieronder één!" +#~ msgid "Daily hours" +#~ msgstr "Dagelijkse uren" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Nieuwe timer starten" +#~ msgid "Weekly hours" +#~ msgstr "Wekelijkse doelen" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Voeg notities toe over waar u aan werkt..." +#~ msgid "Standard Hours Per Day" +#~ msgstr "Standaarduren per dag" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "Of gebruik een sjabloon" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Normaal gesproken 8 uur voor een fulltime baan" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "Recente projecten" +#~ msgid "Standard Hours Per Week" +#~ msgstr "Standaarduren per dag" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "De statistieken van vandaag" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "How it works" +#~ msgstr "Hoe het werkt" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "Als u meer dan uw standaarduren " +#~ "per dag werkt, wordt de extra tijd" +#~ " bijgehouden als overuren in rapporten " +#~ "en analyses." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "Goedkeuren" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "Regionale instellingen" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "Huidige status" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "Ondersteunde functies" +#~ msgid "Time Format" +#~ msgstr "Tijdformaat" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "De week begint" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "Activeren" +#~ msgid "Sunday" +#~ msgstr "Zondag" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Monday" +#~ msgstr "Maandag" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "Voer de klantnaam in" +#~ msgid "Saturday" +#~ msgstr "Zaterdag" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "Kalenderweergave" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "Licentie" +#~ msgid "Remember last view" +#~ msgstr "Lid sinds" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "Datum" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "Inkooporder maken" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "Tijdafronding is uitgeschakeld. Alle tijden" +#~ " worden precies geregistreerd zoals " +#~ "bijgehouden." -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "Back-upinstellingen" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "Geen afronding - tijden worden precies geregistreerd zoals bijgehouden." -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Profiel" +#~ msgid "Actual time:" +#~ msgstr "Werkelijke tijd:" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "In uitvoering" +#~ msgid "Rounded:" +#~ msgstr "Afgerond:" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Bekijk alle tijdregistraties" +#~ msgid "With " +#~ msgstr "Met" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "Geen recente tijdinvoer" +#~ msgid " minute intervals" +#~ msgstr "minuten intervallen" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Beheer uw accountinstellingen en voorkeuren" +#~ msgid "Create Weekly Goal" +#~ msgstr "Maak een wekelijks doel" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "Open source en gemeenschap" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Maak een wekelijks tijdsdoel" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "Stel een doel voor het aantal uren dat u deze week wilt werken" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "Doeluren" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "Hoeveel uur wil je deze week werken?" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "Begindatum van de week" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "Laat dit leeg om de huidige week te gebruiken (vanaf maandag)" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Profielinformatie" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "Gebruikersnaam kan niet worden gewijzigd" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Vereist voor e-mailmeldingen" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Optionele opmerkingen over uw doel..." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Meldingsvoorkeuren" +#~ msgid "Quick Presets" +#~ msgstr "Snelle voorinstellingen" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Schakel e-mailmeldingen in" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Tips voor het stellen van doelen" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Hoofdschakelaar voor alle e-mailmeldingen" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "" +#~ "Wees realistisch: denk aan vakanties, " +#~ "vergaderingen en andere verplichtingen" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Meldingen van achterstallige facturen" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "Begin conservatief: Je kunt je doel later altijd nog aanpassen" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Meldingen over taaktoewijzing" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" +#~ "Houd de voortgang bij: Controleer uw " +#~ "dashboard regelmatig om op koers te " +#~ "blijven" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Opmerkingen en vermeldingen" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "Typisch fulltime: 40 uur per week (8 uur/dag, 5 dagen)" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "E-mail met wekelijks tijdsoverzicht" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Wekelijks doel bewerken" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Bewerk het wekelijkse tijdsdoel" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "Weekperiode" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "Schakel e-mailmeldingen in" +#~ msgid "Current Progress" +#~ msgstr "Huidige vooruitgang" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Weet je zeker dat je dit doel wilt verwijderen?" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "Doel verwijderen" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "Wekelijkse tijddoelen" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Stel uw wekelijkse uurdoelen in en volg deze" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "Nieuw doel" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "Totaal aantal doelen" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Weergavevoorkeuren" +#~ msgid "Success Rate" +#~ msgstr "Succespercentage" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "Systeemstandaard" +#~ msgid "Current Week Goal" +#~ msgstr "Doel van de huidige week" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Voorkeuren voor tijdafronding" +#~ msgid "Remaining Hours" +#~ msgstr "Resterende uren" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "Configureer hoe uw tijdsinvoer wordt afgerond. Dit heeft invloed op de manier waarop de duur wordt berekend wanneer u timers stopt." +#~ msgid "Days Remaining" +#~ msgstr "Resterende dagen" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Tijdafronding inschakelen" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Gem. aantal uren/dag nodig" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Rond tijdinvoer af op geconfigureerde intervallen" +#~ msgid "Edit Goal" +#~ msgstr "Doel bewerken" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Afrondingsinterval" +#~ msgid "No goal set for this week" +#~ msgstr "Er is geen doel gesteld voor deze week" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "Tijdsinvoer wordt afgerond op dit interval" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "Maak een wekelijks tijdsdoel om uw voortgang bij te houden" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Afrondingsmethode" +#~ msgid "Goal History" +#~ msgstr "Doelgeschiedenis" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Instellingen voor overuren" +#~ msgid "Target" +#~ msgstr "Doel" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "Wekelijkse doeldetails" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "Dagelijkse uren" +#~ msgid "Daily Breakdown" +#~ msgstr "Dagelijkse uitsplitsing" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "Wekelijkse doelen" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Standaarduren per dag" +#~ msgid "Time Entries This Week" +#~ msgstr "Tijdregistraties deze week" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Normaal gesproken 8 uur voor een fulltime baan" +#~ msgid "No Project" +#~ msgstr "Geen project" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "Standaarduren per dag" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Er zijn voor deze week nog geen tijdsregistraties geregistreerd" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "Hoe het werkt" +#~ msgid "Reference date" +#~ msgstr "Referentietype" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "Als u meer dan uw standaarduren per dag werkt, wordt de extra tijd bijgehouden als overuren in rapporten en analyses." +#~ msgid "Create/Get Period" +#~ msgstr "PO aanmaken" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Start date" +#~ msgstr "Startdatum" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "End date" +#~ msgstr "Einddatum" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Exports" +#~ msgstr "Exporteren" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "Regionale instellingen" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Tijdformaat" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "De week begint" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "Zondag" +#~ msgid "Audit Events CSV" +#~ msgstr "Evenement bewerken" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "Maandag" +#~ msgid "Timesheet Periods" +#~ msgstr "Weekperiode" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "Zaterdag" +#~ msgid "Submit" +#~ msgstr "Onderwerp" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "Kalenderweergave" +#~ msgid "No timesheet periods yet." +#~ msgstr "Nog geen tijdregistratie geregistreerd" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "Lid sinds" +#~ msgid "Leave Balances" +#~ msgstr "Wijzigingen opslaan" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "Inkooporder maken" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "Tijdafronding is uitgeschakeld. Alle tijden worden precies geregistreerd zoals bijgehouden." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "Geen afronding - tijden worden precies geregistreerd zoals bijgehouden." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Werkelijke tijd:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Afgerond:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Met" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "minuten intervallen" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Maak een wekelijks doel" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Maak een wekelijks tijdsdoel" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "Stel een doel voor het aantal uren dat u deze week wilt werken" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Doeluren" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "Hoeveel uur wil je deze week werken?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Begindatum van de week" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "Laat dit leeg om de huidige week te gebruiken (vanaf maandag)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "gebruiker" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Optionele opmerkingen over uw doel..." +#~ msgid "No leave types configured." +#~ msgstr "Niet geconfigureerd" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "Snelle voorinstellingen" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Tips voor het stellen van doelen" +#~ msgid "Select leave type" +#~ msgstr "Selecteer Klant" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Wees realistisch: denk aan vakanties, vergaderingen en andere verplichtingen" +#~ msgid "Requested hours" +#~ msgstr "Geschatte uren" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Begin conservatief: Je kunt je doel later altijd nog aanpassen" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Beschikbare variabelen" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "Houd de voortgang bij: Controleer uw dashboard regelmatig om op koers te blijven" +#~ msgid "Comment" +#~ msgstr "Opmerkingen" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Typisch fulltime: 40 uur per week (8 uur/dag, 5 dagen)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Wekelijks doel bewerken" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Bewerk het wekelijkse tijdsdoel" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Weekperiode" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Huidige vooruitgang" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "Weet je zeker dat je dit doel wilt verwijderen?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Doel verwijderen" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Wekelijkse tijddoelen" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Stel uw wekelijkse uurdoelen in en volg deze" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Nieuw doel" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Totaal aantal doelen" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Succespercentage" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Doel van de huidige week" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Resterende uren" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Resterende dagen" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Gem. aantal uren/dag nodig" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Doel bewerken" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "Er is geen doel gesteld voor deze week" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "Maak een wekelijks tijdsdoel om uw voortgang bij te houden" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Doelgeschiedenis" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Doel" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Wekelijkse doeldetails" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "Afgewezen" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Dagelijkse uitsplitsing" +#~ msgid "Allocated" +#~ msgstr "Gemaakt" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "Tijd" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Tijdregistraties deze week" +#~ msgid "Utilization %" +#~ msgstr "Autorisatie" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Geen project" +#~ msgid "No capacity data available." +#~ msgstr "Er zijn geen gegevens over de brandsnelheid beschikbaar" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Er zijn voor deze week nog geen tijdsregistraties geregistreerd" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "Referentietype" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "PO aanmaken" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "Startdatum" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "Einddatum" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "Exporteren" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "Schakel Klantportaal in" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "Factureerbare status overschrijven" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "Evenement bewerken" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "Weekperiode" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "Onderwerp" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "Nog geen tijdregistratie geregistreerd" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "Wijzigingen opslaan" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "Alleen actief" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "Evenementtype" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "gebruiker" +#~ msgid "Accrual hours per month" +#~ msgstr "Werkelijke uren" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "Niet geconfigureerd" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "Evenementtype" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "Selecteer Klant" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "Geschatte uren" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "Beschikbare variabelen" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "Opmerkingen" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "Gehandicapt" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "Bedrijfsgegevens" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "Afgewezen" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "Gemaakt" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "Tijd" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "Autorisatie" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "Er zijn geen gegevens over de brandsnelheid beschikbaar" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "Rolnaam" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "Opmerkingen (optioneel)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "Voeg goed toe" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "Schakel Klantportaal in" +#~ msgid "No holidays configured." +#~ msgstr "Geen webhooks geconfigureerd" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "Factureerbare status overschrijven" +#~ msgid "Support" +#~ msgstr "Steun" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "Alleen actief" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "Evenementtype" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "Werkelijke uren" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "Evenementtype" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "Gehandicapt" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "Bedrijfsgegevens" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "Rolnaam" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "Opmerkingen (optioneel)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "Voeg goed toe" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "Geen webhooks geconfigureerd" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "Te veel betaald" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Steun" +#~ msgid "Cash" +#~ msgstr "Contant geld" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "Rekening" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "Bankoverschrijving" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "Creditcard" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "Debetkaart" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "Streep" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "Te veel betaald" +#~ msgid "Company Card" +#~ msgstr "Bedrijfskaart" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "Contant geld" +#~ msgid "Reimbursed" +#~ msgstr "Terugbetaald" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Rekening" +#~ msgid "Processing" +#~ msgstr "Verwerking" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Bankoverschrijving" +#~ msgid "80% Budget Warning" +#~ msgstr "80% budgetwaarschuwing" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Creditcard" +#~ msgid "Budget Limit Reached" +#~ msgstr "Budgetlimiet bereikt" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Debetkaart" +#~ msgid "Info" +#~ msgstr "Info" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Streep" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Bedrijfskaart" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Terugbetaald" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Verwerking" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Factuurnummer: %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "80% budgetwaarschuwing" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "Uitgiftedatum: %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Budgetlimiet bereikt" +#~ msgid "Due Date: %(date)s" +#~ msgstr "Vervaldatum: %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Info" +#~ msgid "Quote For:" +#~ msgstr "Citaat voor:" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "Offertedetails:" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "Artikelen:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "Totaal:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "Factuurnummer: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "Uitgiftedatum: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "Vervaldatum: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Citaat voor:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Offertedetails:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Artikelen:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Totaal:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Log in om toegang te krijgen tot deze pagina" +#~ msgid "Please log in to access this page" +#~ msgstr "Log in om toegang te krijgen tot deze pagina" diff --git a/translations/no/LC_MESSAGES/messages.po b/translations/no/LC_MESSAGES/messages.po index cced14a1..3d099afd 100644 --- a/translations/no/LC_MESSAGES/messages.po +++ b/translations/no/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: no\n" @@ -14,26619 +14,18405 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "Logg inn for å få tilgang til klientportalen." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." msgstr "Økten din har utløpt eller siden var åpen for lenge. Vennligst prøv igjen." -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "Krever administratortilgang" +#~ msgid "Administrator access required" +#~ msgstr "Krever administratortilgang" -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "" +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "" -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "Brukernavn er påkrevd" +#~ msgid "Username is required" +#~ msgstr "Brukernavn er påkrevd" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "Brukeren eksisterer allerede" +#~ msgid "User already exists" +#~ msgstr "Brukeren eksisterer allerede" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "Default 'user' role not found. Please run 'flask seed_permissions_cmd' first." -msgstr "" +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" + +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette bruker på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:873 -msgid "Could not create user due to a database error. Please check server logs." -msgstr "Kunne ikke opprette bruker på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "Brukeren \"%(username)s\" ble opprettet" - -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "Brukernavnet finnes allerede" - -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Velg en klient når du aktiverer klientportaltilgang." - -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "Passordet må være minst 8 tegn langt." - -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "Passord stemmer ikke." - -#: app/routes/admin.py:1023 -msgid "Could not update user due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere bruker på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "Brukeren \"%(username)s\" ble opprettet" -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "Brukeren \"%(username)s\" ble oppdatert" +#~ msgid "Username already exists" +#~ msgstr "Brukernavnet finnes allerede" -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "Kan ikke slette den siste administratoren" +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "Velg en klient når du aktiverer klientportaltilgang." -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "Kan ikke slette bruker med eksisterende tidsregistreringer" +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "Passordet må være minst 8 tegn langt." -#: app/routes/admin.py:1078 -msgid "Could not delete user due to a database error. Please check server logs." -msgstr "Kunne ikke slette bruker på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Passwords do not match." +#~ msgstr "Passord stemmer ikke." -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "Brukeren \"%(username)s\" ble slettet" +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere bruker på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "Telemetri er aktivert. Takk for at du hjelper oss å forbedre oss!" +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" -#: app/routes/admin.py:1152 -msgid "Detailed analytics has been disabled. Anonymous base telemetry remains active." -msgstr "" +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "Brukeren \"%(username)s\" ble oppdatert" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "" +#~ msgid "Cannot delete the last administrator" +#~ msgstr "Kan ikke slette den siste administratoren" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "" +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "Kan ikke slette bruker med eksisterende tidsregistreringer" -#: app/routes/admin.py:1241 -#, python-format -msgid "Cannot disable '%(module)s' because the following modules depend on it: %(dependents)s" -msgstr "" +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette bruker på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:1264 -msgid "Could not update module visibility due to a database error. Please check server logs." -msgstr "" +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "Brukeren \"%(username)s\" ble slettet" -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "" +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "Telemetri er aktivert. Takk for at du hjelper oss å forbedre oss!" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "Ugyldig tidssone: %(timezone)s" +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "Invalid locked client selection." +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "Could not update settings due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere innstillingene på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Innstillingene ble oppdatert" +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "" +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Feil under lagring av innstillinger" +#~ msgid "Module visibility updated successfully" +#~ msgstr "" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "" +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "Ugyldig tidssone: %(timezone)s" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "" +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere innstillingene på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" +#~ msgid "Settings updated successfully" +#~ msgstr "Innstillingene ble oppdatert" -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "Kunne ikke oppdatere PDF-oppsettet på grunn av en databasefeil." +#~ msgid "Invalid code." +#~ msgstr "" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "PDF-layout ble oppdatert" +#~ msgid "Error saving settings" +#~ msgstr "Feil under lagring av innstillinger" -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "PDF layout saved but template JSON verification failed. Please check the template." -msgstr "" +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "Kunne ikke tilbakestille PDF-oppsettet på grunn av en databasefeil." +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "" + +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "Kunne ikke oppdatere PDF-oppsettet på grunn av en databasefeil." + +#~ msgid "PDF layout updated successfully" +#~ msgstr "PDF-layout ble oppdatert" -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "PDF-layout tilbakestilt til standard" +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "" +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "Kunne ikke tilbakestille PDF-oppsettet på grunn av en databasefeil." -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "" +#~ msgid "PDF layout reset to defaults" +#~ msgstr "PDF-layout tilbakestilt til standard" -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "" +#~ msgid "Invalid page size" +#~ msgstr "" -#: app/routes/admin.py:2377 app/routes/admin.py:2488 app/routes/clients.py:1269 -#: app/routes/comments.py:291 app/routes/expenses.py:1270 -#: app/routes/invoices.py:1615 app/routes/projects.py:2028 -#: app/routes/quotes.py:1132 app/routes/quotes.py:1994 -#: app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Ingen fil er valgt" +#~ msgid "Template not found for this page size" +#~ msgstr "" -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "" +#~ msgid "No file uploaded" +#~ msgstr "" -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "" +#~ msgid "No file selected" +#~ msgstr "Ingen fil er valgt" -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "" +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "" -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Could not import template due to a database error." +#~ msgstr "" -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "" +#~ msgid "Template imported successfully" +#~ msgstr "" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "" +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "" +#~ msgid "Error importing template: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "Ingen logofil er valgt" - -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "Ugyldig bildefil." - -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "Kunne ikke lagre logoen på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/admin.py:3933 -msgid "Company logo uploaded successfully! You can see it in the \"Current Company Logo\" section above. It will appear on invoices and PDF documents." -msgstr "Firmalogoen ble lastet opp! Du kan se den i delen \"Gjeldende firmalogo\" ovenfor. Det vil vises på fakturaer og PDF-dokumenter." - -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "Ugyldig filtype. Tillatte typer: PNG, JPG, JPEG, GIF, SVG, WEBP" - -#: app/routes/admin.py:3963 -msgid "Could not remove logo due to a database error. Please check server logs." -msgstr "Kunne ikke fjerne logoen på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/admin.py:3965 -msgid "Company logo removed successfully. Upload a new logo in the section below if needed." -msgstr "Firmalogoen ble fjernet. Last opp en ny logo i seksjonen nedenfor om nødvendig." - -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "Ingen logo å fjerne" - -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "Sikkerhetskopiering mislyktes: arkivet ble ikke opprettet" - -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "Sikkerhetskopiering mislyktes: %(error)s" - -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Ugyldig filtype" - -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "Finner ikke sikkerhetskopifilen" - -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "Sikkerhetskopien \"%(filename)s\" ble slettet" - -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "Kunne ikke slette sikkerhetskopi: %(error)s" - -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "Ugyldig filtype. Velg et .zip-sikkerhetskopiarkiv." - -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "Finner ikke sikkerhetskopifilen." - -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "Ugyldig filtype. Last opp et .zip-sikkerhetskopiarkiv." - -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "Ingen sikkerhetskopifil oppgitt" - -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "Gjenoppretting startet. Du kan overvåke fremdriften på denne siden." - -#: app/routes/admin.py:4362 -#, fuzzy -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "OIDC er ikke aktivert. Sett AUTH_METHOD til \"oidc\" eller \"begge\"." - -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC_ISSUER er ikke konfigurert" - -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "Invoice not found" +#~ msgstr "" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "" +#~ msgid "Quote not found" +#~ msgstr "" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "No logo file selected" +#~ msgstr "Ingen logofil er valgt" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "Invalid image file." +#~ msgstr "Ugyldig bildefil." -#: app/routes/admin.py:4417 -msgid "ℹ Docker environment detected - internal service names may be available" -msgstr "" +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kunne ikke lagre logoen på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "✓ Oppdagelsesdokument ble hentet fra %(url)s" +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "Firmalogoen ble lastet opp! Du kan " +#~ "se den i delen \"Gjeldende firmalogo\"" +#~ " ovenfor. Det vil vises på fakturaer" +#~ " og PDF-dokumenter." -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "Ugyldig filtype. Tillatte typer: PNG, JPG, JPEG, GIF, SVG, WEBP" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "✗ Kunne ikke hente oppdagelsesdokumentet: %(error)s" +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke fjerne logoen på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "✗ Uventet feil: %(error)s" +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "Firmalogoen ble fjernet. Last opp en " +#~ "ny logo i seksjonen nedenfor om " +#~ "nødvendig." -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "" +#~ msgid "No logo to remove" +#~ msgstr "Ingen logo å fjerne" -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "✓ OAuth-klient er registrert i applikasjonen" - -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "✗ OAuth-klient er ikke registrert" - -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "✗ Kunne ikke opprette OAuth-klient: %(error)s" - -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "✓ %(endpoint)s: %(url)s" - -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "✗ Mangler %(endpoint)s i oppdagelsesdokumentet" - -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "✓ Omfang \"%(scope)s\" støttes av leverandøren" - -#: app/routes/admin.py:4498 -#, python-format -msgid "⚠ Scope \"%(scope)s\" may not be supported by provider (supported: %(supported)s)" -msgstr "⚠ Omfang «%(scope)s» støttes kanskje ikke av leverandøren (støttet: %(supported)s)" - -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "ℹ Leverandøren støtter krav: %(claims)s" - -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "✓ Konfigurert %(claim_type)s påstand \"%(claim_name)s\" støttes" - -#: app/routes/admin.py:4528 -#, python-format -msgid "⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims list (may still work)" -msgstr "⚠ Konfigurert %(claim_type)s krav \"%(claim_name)s\" er ikke i støttet kravliste (kan fortsatt fungere)" - -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "OIDC-konfigurasjonstest fullført" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "Malnavn er påkrevd" - -#: app/routes/admin.py:5340 app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -#, fuzzy -msgid "HTML template content is required" -msgstr "Malnavn er påkrevd" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "En mal med dette navnet finnes allerede" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "Kunne ikke opprette e-postmal på grunn av en databasefeil." - -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "E-postmal opprettet" - -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "Kunne ikke oppdatere e-postmalen på grunn av en databasefeil." - -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "E-postmalen ble oppdatert" - -#: app/routes/admin.py:5491 -msgid "Cannot delete template that is in use by invoices or recurring invoices" -msgstr "Kan ikke slette mal som er i bruk av fakturaer eller gjentakende fakturaer" - -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "Kunne ikke slette e-postmalen på grunn av en databasefeil." - -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "E-postmalen \"%(name)s\" ble slettet" - -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "" +#~ msgid "Backup failed: archive not created" +#~ msgstr "Sikkerhetskopiering mislyktes: arkivet ble ikke opprettet" -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "Det valgte prosjektet eksisterer ikke eller er inaktivt" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "beskjed" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Backup failed: %(error)s" +#~ msgstr "Sikkerhetskopiering mislyktes: %(error)s" -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "Tabellen for revisjonslogger eksisterer ikke. Vennligst kjør: flask db upgrade" +#~ msgid "Invalid file type" +#~ msgstr "Ugyldig filtype" -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "Finner ikke sikkerhetskopifilen" -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "Sikkerhetskopien \"%(filename)s\" ble slettet" -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "Velkommen tilbake, %(username)s!" +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "Kunne ikke slette sikkerhetskopi: %(error)s" -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "Ugyldig filtype. Velg et .zip-sikkerhetskopiarkiv." -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "" +#~ msgid "Backup file not found." +#~ msgstr "Finner ikke sikkerhetskopifilen." -#: app/routes/auth.py:189 -msgid "If an account matches what you entered and email is configured, you'll receive a reset link shortly." -msgstr "" +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "Ugyldig filtype. Last opp et .zip-sikkerhetskopiarkiv." -#: app/routes/auth.py:213 -#, fuzzy -msgid "Reset your TimeTracker password" -msgstr "Angi passordet ditt" +#~ msgid "No backup file provided" +#~ msgstr "Ingen sikkerhetskopifil oppgitt" -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "Gjenoppretting startet. Du kan overvåke fremdriften på denne siden." -#: app/routes/auth.py:246 -#, fuzzy -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Ugyldig eller utløpt passordkonfigurasjonstoken. Vennligst be om en ny." +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "OIDC er ikke aktivert. Sett AUTH_METHOD til \"oidc\" eller \"begge\"." -#: app/routes/auth.py:250 -#, fuzzy -msgid "Password reset is not available for this account." -msgstr "Klientportalen er ikke aktivert for denne klienten." +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC_ISSUER er ikke konfigurert" -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "" +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:274 -#, fuzzy -msgid "Could not reset password due to a database error." -msgstr "Kunne ikke angi passord på grunn av en databasefeil." +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "" -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "" +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" -#: app/routes/auth.py:349 -msgid "Only the demo account can be used. Please use the credentials shown below." -msgstr "" +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "" +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "" +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "✓ Oppdagelsesdokument ble hentet fra %(url)s" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "" +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/auth.py:425 -msgid "Could not create your account due to a database error. Please try again later." -msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil. Vennligst prøv igjen senere." +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "✗ Kunne ikke hente oppdagelsesdokumentet: %(error)s" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "Velkomst! Kontoen din er opprettet." +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "✗ Uventet feil: %(error)s" -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Bruker ikke funnet. Vennligst kontakt en administrator." +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "" -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "Kunne ikke oppdatere kontorollen din på grunn av en databasefeil." +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "✓ OAuth-klient er registrert i applikasjonen" -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "Kontoen er deaktivert. Vennligst kontakt en administrator." +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "✗ OAuth-klient er ikke registrert" -#: app/routes/auth.py:506 -msgid "No password is set for your account. Please enter a password to set one and log in." -msgstr "" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "✗ Kunne ikke opprette OAuth-klient: %(error)s" -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "✓ %(endpoint)s: %(url)s" -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "✗ Mangler %(endpoint)s i oppdagelsesdokumentet" -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "Uventet feil under pålogging. Prøv igjen eller sjekk serverloggene." +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "✓ Omfang \"%(scope)s\" støttes av leverandøren" -#: app/routes/auth.py:551 app/routes/auth.py:558 -#, fuzzy -msgid "Your login session expired. Please sign in again." -msgstr "Økten din har utløpt eller siden var åpen for lenge. Vennligst prøv igjen." +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" +#~ "⚠ Omfang «%(scope)s» støttes kanskje " +#~ "ikke av leverandøren (støttet: %(supported)s)" -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -#, fuzzy -msgid "Invalid authentication code." -msgstr "Autentiseringsmetode" - -#: app/routes/auth.py:625 -#, fuzzy -msgid "Two-factor authentication enabled." -msgstr "Autentiseringsmetode" - -#: app/routes/auth.py:628 -#, fuzzy -msgid "Could not enable two-factor authentication due to a database error." -msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil." - -#: app/routes/auth.py:654 -#, fuzzy -msgid "Two-factor authentication disabled." -msgstr "Autentiseringsmetode" - -#: app/routes/auth.py:657 -#, fuzzy -msgid "Could not disable two-factor authentication due to a database error." -msgstr "Kunne ikke oppdatere kontorollen din på grunn av en databasefeil." - -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "Farvel, %(username)s!" - -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "Ugyldig avatarfiltype. Tillatt: PNG, JPG, JPEG, GIF, WEBP" - -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "Kunne ikke lagre avataren på serveren." - -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Profilen ble oppdatert" - -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "Kunne ikke oppdatere profilen din på grunn av en databasefeil." - -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "" +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "ℹ Leverandøren støtter krav: %(claims)s" -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "✓ Konfigurert %(claim_type)s påstand \"%(claim_name)s\" støttes" -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "" +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" +#~ "⚠ Konfigurert %(claim_type)s krav " +#~ "\"%(claim_name)s\" er ikke i støttet " +#~ "kravliste (kan fortsatt fungere)" -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "" +#~ msgid "OIDC configuration test completed" +#~ msgstr "OIDC-konfigurasjonstest fullført" -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "" +#~ msgid "Template name is required" +#~ msgstr "Malnavn er påkrevd" -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "" +#~ msgid "HTML template content is required" +#~ msgstr "Malnavn er påkrevd" -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar fjernet" +#~ msgid "A template with this name already exists" +#~ msgstr "En mal med dette navnet finnes allerede" -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "Kunne ikke fjerne avataren." +#~ msgid "Could not create email template due to a database error." +#~ msgstr "Kunne ikke opprette e-postmal på grunn av en databasefeil." -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "Demo mode: only the demo account can be used. Please use the credentials on the login page." -msgstr "" +#~ msgid "Email template created successfully" +#~ msgstr "E-postmal opprettet" -#: app/routes/auth.py:1052 -#, python-format -msgid "Failed to connect to Single Sign-On provider. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "Kunne ikke oppdatere e-postmalen på grunn av en databasefeil." -#: app/routes/auth.py:1061 -#, python-format -msgid "Cannot connect to Single Sign-On provider. DNS resolution may be failing. Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Email template updated successfully" +#~ msgstr "E-postmalen ble oppdatert" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "Enkel pålogging er ikke konfigurert ennå. Vennligst kontakt en administrator." +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" +#~ "Kan ikke slette mal som er i " +#~ "bruk av fakturaer eller gjentakende " +#~ "fakturaer" -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "Enkel pålogging er ikke konfigurert." +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "Kunne ikke slette e-postmalen på grunn av en databasefeil." -#: app/routes/auth.py:1156 -msgid "SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "E-postmalen \"%(name)s\" ble slettet" -#: app/routes/auth.py:1169 -msgid "SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" +#~ msgid "Task name and project are required" +#~ msgstr "" -#: app/routes/auth.py:1312 -msgid "Authentication failed: missing issuer or subject claim. Please check OIDC configuration." -msgstr "Autentisering mislyktes: manglende utsteder- eller emnekrav. Vennligst sjekk OIDC-konfigurasjonen." +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "Det valgte prosjektet eksisterer ikke eller er inaktivt" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "Brukerkonto eksisterer ikke og selvregistrering er deaktivert." +#~ msgid "message" +#~ msgstr "beskjed" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil." +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" -#: app/routes/auth.py:1511 -msgid "Unexpected error during SSO login. Please try again or contact support." -msgstr "Uventet feil under SSO-pålogging. Vennligst prøv igjen eller kontakt kundestøtte." +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" +#~ "Tabellen for revisjonslogger eksisterer ikke." +#~ " Vennligst kjør: flask db upgrade" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "Du har ikke tilgang til dette prosjektet." +#~ msgid "You must change your password before continuing." +#~ msgstr "" -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Dette prosjektet har ikke et budsjett." +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Arrangementet ble opprettet" +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "Velkommen tilbake, %(username)s!" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Arrangementet ble oppdatert" +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "Du har ikke tillatelse til å slette denne hendelsen." +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "Kunne ikke slette aktiviteten" +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Arrangementet ble slettet" +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Angi passordet ditt" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "Feil ved sletting av hendelse: %(error)s" +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "Arrangementet ble flyttet" +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "Ugyldig eller utløpt passordkonfigurasjonstoken. Vennligst be om en ny." -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "Størrelsen på hendelsen ble endret" +#~ msgid "Password reset is not available for this account." +#~ msgstr "Klientportalen er ikke aktivert for denne klienten." -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "Du har ikke tillatelse til å se denne hendelsen." +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "" -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "Du har ikke tillatelse til å redigere denne hendelsen." +#~ msgid "Could not reset password due to a database error." +#~ msgstr "Kunne ikke angi passord på grunn av en databasefeil." -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "" +#~ msgid "Invalid username format" +#~ msgstr "" -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "Notatinnholdet kan ikke være tomt" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Merknaden ble lagt til" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Feil ved å legge til notat" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Feil ved å legge til notat: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "Note tilhører ikke denne klienten" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "Du har ikke tillatelse til å redigere dette notatet" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Feil under oppdatering av notat" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Notatet ble oppdatert" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Feil ved oppdatering av notat: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "Du har ikke tillatelse til å slette dette notatet" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Feil ved sletting av notat" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Notatet ble slettet" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "Feil ved sletting av notat: %(error)s" - -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "Logg inn for å få tilgang til klientportalen." +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Tilgang nektet" +#~ msgid "Password is required" +#~ msgstr "" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Forbudt" +#~ msgid "Invalid username or password" +#~ msgstr "" -#: app/routes/client_portal.py:81 -msgid "You don't have permission to access this resource. Client portal access may not be enabled for your account." -msgstr "" +#~ msgid "Password is required to create an account." +#~ msgstr "" -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "" +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "Kunne ikke opprette kontoen din på " +#~ "grunn av en databasefeil. Vennligst prøv" +#~ " igjen senere." -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "" +#~ msgid "Welcome! Your account has been created." +#~ msgstr "Velkomst! Kontoen din er opprettet." -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "" +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Bruker ikke funnet. Vennligst kontakt en administrator." -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Siden ikke funnet" +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "Kunne ikke oppdatere kontorollen din på grunn av en databasefeil." -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "" +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "Kontoen er deaktivert. Vennligst kontakt en administrator." -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "Siden du leter etter eksisterer ikke eller har blitt flyttet." +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Serverfeil" +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "" +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "" -#: app/routes/client_portal.py:127 -msgid "An unexpected error occurred. Please try again later or contact support if the problem persists." -msgstr "" +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "Uventet feil under pålogging. Prøv igjen eller sjekk serverloggene." -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "Kundeportaltilgang er ikke aktivert for kontoen din." +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "" +#~ "Økten din har utløpt eller siden " +#~ "var åpen for lenge. Vennligst prøv " +#~ "igjen." -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "Kundekontoen din er inaktiv." +#~ msgid "Invalid authentication code." +#~ msgstr "Autentiseringsmetode" -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Brukernavn og passord kreves." +#~ msgid "Two-factor authentication enabled." +#~ msgstr "Autentiseringsmetode" -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Ugyldig brukernavn eller passord." +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil." -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "Velkommen, %(client_name)s!" +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Autentiseringsmetode" -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "Du har blitt logget ut." +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "Kunne ikke oppdatere kontorollen din på grunn av en databasefeil." -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Ugyldig eller manglende passordoppsetttoken." +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "Farvel, %(username)s!" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "Ugyldig eller utløpt passordkonfigurasjonstoken. Vennligst be om en ny." +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "Ugyldig avatarfiltype. Tillatt: PNG, JPG, JPEG, GIF, WEBP" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "Passord kreves." +#~ msgid "Failed to save avatar on server." +#~ msgstr "Kunne ikke lagre avataren på serveren." -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "Kunne ikke angi passord på grunn av en databasefeil." +#~ msgid "Profile updated successfully" +#~ msgstr "Profilen ble oppdatert" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "Passordet ble angitt! Du kan nå logge inn på portalen." +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "Kunne ikke oppdatere profilen din på grunn av en databasefeil." -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "Kan ikke laste klientportaldata." +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "" +#~ msgid "New password is required" +#~ msgstr "" -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Current password is required" +#~ msgstr "" -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "" +#~ msgid "Current password is incorrect" +#~ msgstr "" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Finner ikke faktura." +#~ msgid "Could not update password due to a database error." +#~ msgstr "" -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Sitat ikke funnet." +#~ msgid "Avatar removed" +#~ msgstr "Avatar fjernet" -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "" +#~ msgid "Failed to remove avatar." +#~ msgstr "Kunne ikke fjerne avataren." -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "" +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "" +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "" +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "" +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" +#~ "Enkel pålogging er ikke konfigurert " +#~ "ennå. Vennligst kontakt en administrator." -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "" +#~ msgid "Single Sign-On is not configured." +#~ msgstr "Enkel pålogging er ikke konfigurert." -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "" +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "" +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "Autentisering mislyktes: manglende utsteder- " +#~ "eller emnekrav. Vennligst sjekk OIDC-" +#~ "konfigurasjonen." -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "" +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "Brukerkonto eksisterer ikke og selvregistrering er deaktivert." -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "" +#~ msgid "Could not create your account due to a database error." +#~ msgstr "Kunne ikke opprette kontoen din på grunn av en databasefeil." -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Uventet feil under SSO-pålogging. " +#~ "Vennligst prøv igjen eller kontakt " +#~ "kundestøtte." -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "" +#~ msgid "You do not have access to this project." +#~ msgstr "Du har ikke tilgang til dette prosjektet." -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "Dette prosjektet har ikke et budsjett." -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "" +#~ msgid "Event created successfully" +#~ msgstr "Arrangementet ble opprettet" -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "" +#~ msgid "Event updated successfully" +#~ msgstr "Arrangementet ble oppdatert" -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "Du har ikke tillatelse til å slette denne hendelsen." -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "" +#~ msgid "Failed to delete event" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/routes/client_portal.py:1127 -msgid "Online payment is not currently available. Please contact us for payment instructions." -msgstr "" +#~ msgid "Event deleted successfully" +#~ msgstr "Arrangementet ble slettet" -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "" +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "Feil ved sletting av hendelse: %(error)s" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "" +#~ msgid "Event moved successfully" +#~ msgstr "Arrangementet ble flyttet" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "" +#~ msgid "Event resized successfully" +#~ msgstr "Størrelsen på hendelsen ble endret" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "" +#~ msgid "You do not have permission to view this event." +#~ msgstr "Du har ikke tillatelse til å se denne hendelsen." -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "" +#~ msgid "You do not have permission to edit this event." +#~ msgstr "Du har ikke tillatelse til å redigere denne hendelsen." -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "" -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "Notatinnholdet kan ikke være tomt" -#: app/routes/client_portal.py:1382 -#, fuzzy -msgid "Unable to load report data." -msgstr "Kan ikke laste klientportaldata." - -#: app/routes/client_portal.py:1415 -#, fuzzy -msgid "Client Report" -msgstr "Klientportal" - -#: app/routes/client_portal.py:1415 app/templates/client_portal/reports.html:15 -#, fuzzy, python-format -msgid "Last %(days)s days" -msgstr "Siste 7 dager" - -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Sammendrag" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Totalt antall timer" - -#: app/routes/client_portal.py:1420 app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "" +#~ msgid "Note added successfully" +#~ msgstr "Merknaden ble lagt til" -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Betalt" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Utestående" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Timer etter prosjekt" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 app/templates/issues/edit.html:60 -#: app/templates/issues/list.html:61 app/templates/issues/list.html:95 -#: app/templates/issues/list.html:112 app/templates/issues/new.html:54 -#: app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 app/templates/main/dashboard.html:335 -#: app/templates/main/dashboard.html:344 app/templates/main/dashboard.html:733 -#: app/templates/main/search.html:33 app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Prosjekt" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Timer" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Fakturerbare timer" - -#: app/routes/client_portal.py:1431 -#, fuzzy -msgid "Time by Date" -msgstr "Tidsområde" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 app/templates/quotes/create.html:98 -#: app/templates/quotes/edit.html:146 app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Dato" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Tilgang nektet" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "" +#~ msgid "Error adding note" +#~ msgstr "Feil ved å legge til notat" -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Feil ved å legge til notat: %(error)s" -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "" +#~ msgid "Note does not belong to this client" +#~ msgstr "Note tilhører ikke denne klienten" -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "Du har ikke tillatelse til å opprette klienter" +#~ msgid "You do not have permission to edit this note" +#~ msgstr "Du har ikke tillatelse til å redigere dette notatet" -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "Klientnavn er påkrevd" +#~ msgid "Error updating note" +#~ msgstr "Feil under oppdatering av notat" -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "En klient med dette navnet eksisterer allerede" +#~ msgid "Note updated successfully" +#~ msgstr "Notatet ble oppdatert" -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "" +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Feil ved oppdatering av notat: %(error)s" -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Ugyldig timeprisformat" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "Forskuddsbetalte timer må være et positivt tall." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "Forhåndsbetalt tilbakestillingsdag må være mellom 1 og 28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "You do not have permission to delete this note" +#~ msgstr "Du har ikke tillatelse til å slette dette notatet" -#: app/routes/clients.py:389 -msgid "Could not create client due to a database error. Please check server logs." -msgstr "Kunne ikke opprette klient på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Error deleting note" +#~ msgstr "Feil ved sletting av notat" -#: app/routes/clients.py:439 app/routes/clients.py:580 -#, fuzzy -msgid "You do not have access to this client." -msgstr "Du har ikke tilgang til dette prosjektet." +#~ msgid "Note deleted successfully" +#~ msgstr "Notatet ble slettet" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "Du har ikke tillatelse til å redigere klienter" +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "Feil ved sletting av notat: %(error)s" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "Portalbrukernavn kreves når du aktiverer portaltilgang." +#~ msgid "Access Denied" +#~ msgstr "Tilgang nektet" -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Dette portalbrukernavnet er allerede i bruk av en annen klient." +#~ msgid "403 Forbidden" +#~ msgstr "403 Forbudt" -#: app/routes/clients.py:719 -msgid "Could not update client due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere klienten på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "Du har ikke tillatelse til å sende portal-e-post" +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "Klientportalen er ikke aktivert for denne klienten." +#~ msgid "Your account may be inactive" +#~ msgstr "" -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "Portalbrukernavn er ikke angitt for denne klienten." +#~ msgid "You may not be assigned to a client" +#~ msgstr "" -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "Klientens e-postadresse er ikke angitt. Kan ikke sende e-post for passordoppsett." +#~ msgid "Page Not Found" +#~ msgstr "Siden ikke funnet" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "Kunne ikke generere passordoppsetttoken på grunn av en databasefeil." +#~ msgid "404 Not Found" +#~ msgstr "" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "Passordoppsett-e-post sendt til %(email)s" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "Siden du leter etter eksisterer ikke eller har blitt flyttet." -#: app/routes/clients.py:788 -msgid "Email server is not configured. Please configure email settings in Admin → Email Configuration or set MAIL_SERVER environment variable." -msgstr "E-postserveren er ikke konfigurert. Vennligst konfigurer e-postinnstillinger i Admin → E-postkonfigurasjon eller angi MAIL_SERVER miljøvariabel." +#~ msgid "Server Error" +#~ msgstr "Serverfeil" -#: app/routes/clients.py:795 -msgid "Failed to send password setup email. Please check email configuration and server logs for details." -msgstr "Kunne ikke sende e-post for passordoppsett. Vennligst sjekk e-postkonfigurasjon og serverlogger for detaljer." +#~ msgid "500 Internal Server Error" +#~ msgstr "" -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "Det oppstod en feil under sending av e-posten: %(error)s" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "Du har ikke tillatelse til å arkivere klienter" +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "Kundeportaltilgang er ikke aktivert for kontoen din." -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "Klienten er allerede inaktiv" +#~ msgid "Your client account is inactive." +#~ msgstr "Kundekontoen din er inaktiv." -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "Du har ikke tillatelse til å aktivere klienter" +#~ msgid "Username and password are required." +#~ msgstr "Brukernavn og passord kreves." -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "Klienten er allerede aktiv" +#~ msgid "Invalid username or password." +#~ msgstr "Ugyldig brukernavn eller passord." -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "Du har ikke tillatelse til å slette klienter" +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "Velkommen, %(client_name)s!" -#: app/routes/clients.py:879 -msgid "Cannot delete client with existing projects. Please delete all projects first." -msgstr "" +#~ msgid "You have been logged out." +#~ msgstr "Du har blitt logget ut." -#: app/routes/clients.py:886 -msgid "Cannot delete client with existing invoices. Please delete all invoices first before deleting the client." -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Ugyldig eller manglende passordoppsetttoken." -#: app/routes/clients.py:904 -msgid "Could not delete client due to a database error. Please check server logs." -msgstr "Kunne ikke slette klienten på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "Ingen klienter valgt for sletting" - -#: app/routes/clients.py:987 -msgid "Could not delete clients due to a database error. Please check server logs." -msgstr "Kunne ikke slette klienter på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "Ingen klienter ble slettet" - -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "Du har ikke tillatelse til å endre klientstatus" - -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "Ingen klienter er valgt" - -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Ugyldig status" - -#: app/routes/clients.py:1060 -msgid "Could not update client status due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere klientstatus på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "Ingen klienter ble oppdatert" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "Ingen fil oppgitt" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Filtype ikke tillatt" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "Filstørrelsen overskrider maksimalt tillatt størrelse (10 MB)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "Could not upload attachment due to a database error. Please check server logs." -msgstr "Kunne ikke laste opp vedlegg på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "The attachments feature requires a database migration. Please run: flask db upgrade" -msgstr "" +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "Ugyldig eller utløpt passordkonfigurasjonstoken. Vennligst be om en ny." -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "Vedlegget ble lastet opp" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "Filen ble ikke funnet" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "Could not delete attachment due to a database error. Please check server logs." -msgstr "Kunne ikke slette vedlegg på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "Vedlegget ble slettet" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "Kommentarinnholdet kan ikke være tomt" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "Kommentar må være knyttet til et prosjekt, en oppgave eller et tilbud" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "Kommentar kan ikke knyttes til flere mål" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Ugyldig forelderkommentar" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Kommentar lagt til" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Feil ved å legge til kommentar" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Feil ved å legge til kommentar: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "Du har ikke tillatelse til å redigere denne kommentaren" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Kommentaren ble oppdatert" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Feil ved oppdatering av kommentar: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "Du har ikke tillatelse til å slette denne kommentaren" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Kommentar slettet" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Feil ved sletting av kommentar: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "" +#~ msgid "Password is required." +#~ msgstr "Passord kreves." -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Could not set password due to a database error." +#~ msgstr "Kunne ikke angi passord på grunn av en databasefeil." -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "Du har ikke tillatelse til å slette dette vedlegget" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "Passordet ble angitt! Du kan nå logge inn på portalen." -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "" +#~ msgid "Unable to load client portal data." +#~ msgstr "Kan ikke laste klientportaldata." -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "widget_ids must be a list" +#~ msgstr "" -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Kontakt opprettet" - -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Feil ved opprettelse av kontakt: %(error)s" - -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Kontakten er oppdatert" - -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Feil ved oppdatering av kontakt: %(error)s" - -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Kontakten ble slettet" - -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "Feil ved sletting av kontakt: %(error)s" - -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Kontakt satt som primær" - -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "Feil ved innstilling av primærkontakt: %(error)s" - -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Kommunikasjonen ble registrert" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Feil ved opptak av kommunikasjon: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "" +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "Etikett kreves" +#~ msgid "widget_order must be a list" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "" +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "" +#~ msgid "Invoice not found." +#~ msgstr "Finner ikke faktura." -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" +#~ msgid "Quote not found." +#~ msgstr "Sitat ikke funnet." -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "" +#~ msgid "Issue reporting is not available." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" +#~ msgid "Title is required." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "" +#~ msgid "Invalid project selected." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" +#~ msgid "Could not create issue due to a database error." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "Custom field definition deleted successfully. The field was removed from %(count)d client(s)." -msgstr "" +#~ msgid "Issue not found." +#~ msgstr "" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "" +#~ msgid "Approval not found." +#~ msgstr "" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "" +#~ msgid "No contact found for approval." +#~ msgstr "" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Time entry approved successfully." +#~ msgstr "" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "" +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "" +#~ msgid "Rejection reason is required." +#~ msgstr "" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Time entry rejected." +#~ msgstr "" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" +#~ msgid "This quote cannot be accepted." +#~ msgstr "" -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Ugyldig avtaleverdi" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Avtalen ble opprettet" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Feil ved opprettelse av avtale: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Avtalen ble oppdatert" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Feil ved oppdatering av avtale: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Avtalen ble avsluttet som vunnet" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Feil ved lukking av avtale: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Avtalen ble avsluttet som tapt" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Aktivitet registrert" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Feil ved registrering av aktivitet: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "Kategorinavn er obligatorisk" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Utgiftskategori opprettet" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Feil ved opprettelse av utgiftskategori" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Utgiftskategori er oppdatert" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Feil ved oppdatering av utgiftskategori" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Utgiftskategori er deaktivert" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Feil ved deaktivering av utgiftskategori" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "Tittel er påkrevd" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "Kategori er påkrevd" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "Beløp kreves" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "Utgiftsdato er påkrevd" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Ugyldig datoformat" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Ugyldig beløpsformat" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "" +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "" -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" +#~ msgid "This quote cannot be rejected." +#~ msgstr "" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "" +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "" -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Utgift opprettet" - -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Feil ved opprettelse av utgift" - -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "Du har ikke tillatelse til å se denne utgiften" - -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "Du har ikke tillatelse til å redigere denne utgiften" - -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "Kan ikke redigere godkjente eller refunderte utgifter" - -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Vennligst fyll ut alle obligatoriske felt" - -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Utgiften er oppdatert" - -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Feil ved oppdatering av utgift" - -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "Du har ikke tillatelse til å slette denne utgiften" - -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "Kan ikke slette godkjente eller fakturerte utgifter" - -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Utgift slettet" - -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Feil ved sletting av utgift" - -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "Ingen utgifter valgt for sletting" - -#: app/routes/expenses.py:752 -msgid "Could not delete expenses due to a database error. Please check server logs." -msgstr "Kunne ikke slette utgifter på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "Vellykket slettet %(count)d utgift(er)" - -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "Hoppet over %(count)d utgift(er): %(errors)s" - -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "Ingen utgifter valgt" - -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Ugyldig statusverdi" - -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "Kunne ikke oppdatere utgifter på grunn av en databasefeil" - -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "Vellykket oppdatert %(count)d utgift(er) til %(status)s" - -#: app/routes/expenses.py:824 -#, fuzzy, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "Hoppet over %(count)d utgift(er): %(errors)s" - -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "Hoppet over %(count)d utgift(er) (ingen tillatelse)" - -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Kun administratorer kan godkjenne utgifter" - -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Kun utestående utgifter kan godkjennes" - -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Utgift godkjent" - -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Feil ved godkjenning av utgift" - -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Bare administratorer kan avvise utgifter" - -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Kun utestående utgifter kan avvises" - -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Årsak til avvisning kreves" - -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Utgift avvist" - -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Feil under avvisning av utgift" - -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Kun administratorer kan merke utgifter som refundert" - -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Kun godkjente utgifter kan merkes som refundert" - -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Denne utgiften er ikke merket som refunderbar" - -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Utgift markert som refundert" - -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Feil ved merking av utgift som refundert" - -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "OCR er ikke tilgjengelig. Kontakt administratoren din." - -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Ugyldig filtype. Tillatte typer: png, jpg, jpeg, gif, pdf" - -#: app/routes/expenses.py:1329 -msgid "Receipt scanned successfully! You can now create an expense with the extracted data." -msgstr "Kvittering skannet! Du kan nå opprette en utgift med de utpakkede dataene." - -#: app/routes/expenses.py:1334 -msgid "Error scanning receipt. Please try again or enter the expense manually." -msgstr "Feil ved skanning av kvittering. Vennligst prøv igjen eller skriv inn utgiften manuelt." - -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "Fant ingen skannede kvitteringsdata. Vennligst skann en kvittering først." - -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Utgift opprettet fra skannet kvittering" - -#: app/routes/integrations.py:67 -#, fuzzy -msgid "Permission denied." -msgstr "Ingen tillatelser tildelt." - -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "" +#~ msgid "This invoice is already paid." +#~ msgstr "" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "" -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "" +#~ msgid "Project not found." +#~ msgstr "" -#: app/routes/integrations.py:185 -msgid "Google Calendar OAuth credentials need to be configured first. Redirecting to setup..." -msgstr "" +#~ msgid "Comment cannot be empty." +#~ msgstr "" -#: app/routes/integrations.py:189 -msgid "Google Calendar integration needs to be configured by an administrator first." -msgstr "" +#~ msgid "No contact found for commenting." +#~ msgstr "" -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "" +#~ msgid "Comment added successfully." +#~ msgstr "" -#: app/routes/integrations.py:194 -msgid "Integration not configured. Please ask an administrator to set up OAuth credentials." -msgstr "" +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "" +#~ msgid "Attachment not found or access denied." +#~ msgstr "" -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "Kan ikke laste klientportaldata." -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "" +#~ msgid "Client Report" +#~ msgstr "Klientportal" -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "" +#~ msgid "Last %(days)s days" +#~ msgstr "Siste 7 dager" -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "" +#~ msgid "Summary" +#~ msgstr "Sammendrag" -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "Total Hours" +#~ msgstr "Totalt antall timer" -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "" +#~ msgid "Total Invoiced" +#~ msgstr "" -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "" +#~ msgid "Paid" +#~ msgstr "Betalt" -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "" +#~ msgid "Outstanding" +#~ msgstr "Utestående" -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "" +#~ msgid "Hours by Project" +#~ msgstr "Timer etter prosjekt" -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "" +#~ msgid "Project" +#~ msgstr "Prosjekt" -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "" +#~ msgid "Hours" +#~ msgstr "Timer" -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" +#~ msgid "Billable Hours" +#~ msgstr "Fakturerbare timer" -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "" +#~ msgid "Time by Date" +#~ msgstr "Tidsområde" -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "" +#~ msgid "Date" +#~ msgstr "Dato" -#: app/routes/integrations.py:495 -msgid "Users can now connect their Google Calendar. They will be automatically redirected to Google for authorization." -msgstr "" +#~ msgid "Access denied" +#~ msgstr "Tilgang nektet" -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "" -#: app/routes/integrations.py:506 -#, fuzzy -msgid "Invalid action for this integration." -msgstr "REST API for integrasjoner" +#~ msgid "Portal customization updated successfully" +#~ msgstr "" -#: app/routes/integrations.py:513 -#, fuzzy -msgid "Linear API key is required." -msgstr "Klientnavn er påkrevd" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "Du har ikke tillatelse til å opprette klienter" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "" +#~ msgid "Client name is required" +#~ msgstr "Klientnavn er påkrevd" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "" +#~ msgid "A client with this name already exists" +#~ msgstr "En klient med dette navnet eksisterer allerede" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "" +#~ msgid "Invalid email address" +#~ msgstr "" -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "" +#~ msgid "Invalid hourly rate format" +#~ msgstr "Ugyldig timeprisformat" -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "Forskuddsbetalte timer må være et positivt tall." -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "Forhåndsbetalt tilbakestillingsdag må være mellom 1 og 28." -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette klient på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "You do not have access to this client." +#~ msgstr "Du har ikke tilgang til dette prosjektet." -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "You do not have permission to edit clients" +#~ msgstr "Du har ikke tillatelse til å redigere klienter" -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "Portalbrukernavn kreves når du aktiverer portaltilgang." -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "" +#~ msgid "This portal username is already in use by another client." +#~ msgstr "Dette portalbrukernavnet er allerede i bruk av en annen klient." -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "" +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere klienten på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "Du har ikke tillatelse til å sende portal-e-post" -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "" +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "Klientportalen er ikke aktivert for denne klienten." -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "" +#~ msgid "Portal username is not set for this client." +#~ msgstr "Portalbrukernavn er ikke angitt for denne klienten." -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "" +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "Klientens e-postadresse er ikke angitt. " +#~ "Kan ikke sende e-post for " +#~ "passordoppsett." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "Kunne ikke generere passordoppsetttoken på grunn av en databasefeil." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "Passordoppsett-e-post sendt til %(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "E-postserveren er ikke konfigurert. Vennligst" +#~ " konfigurer e-postinnstillinger i Admin →" +#~ " E-postkonfigurasjon eller angi MAIL_SERVER " +#~ "miljøvariabel." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "Kunne ikke sende e-post for " +#~ "passordoppsett. Vennligst sjekk e-postkonfigurasjon" +#~ " og serverlogger for detaljer." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "Det oppstod en feil under sending av e-posten: %(error)s" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "Du har ikke tillatelse til å arkivere klienter" + +#~ msgid "Client is already inactive" +#~ msgstr "Klienten er allerede inaktiv" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "Du har ikke tillatelse til å aktivere klienter" + +#~ msgid "Client is already active" +#~ msgstr "Klienten er allerede aktiv" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "Du har ikke tillatelse til å slette klienter" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette klienten på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "No clients selected for deletion" +#~ msgstr "Ingen klienter valgt for sletting" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette klienter på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "No clients were deleted" +#~ msgstr "Ingen klienter ble slettet" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "Du har ikke tillatelse til å endre klientstatus" + +#~ msgid "No clients selected" +#~ msgstr "Ingen klienter er valgt" + +#~ msgid "Invalid status" +#~ msgstr "Ugyldig status" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere klientstatus på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." + +#~ msgid "No clients were updated" +#~ msgstr "Ingen klienter ble oppdatert" + +#~ msgid "No file provided" +#~ msgstr "Ingen fil oppgitt" + +#~ msgid "File type not allowed" +#~ msgstr "Filtype ikke tillatt" + +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "Filstørrelsen overskrider maksimalt tillatt størrelse (10 MB)" -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kunne ikke laste opp vedlegg på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "" +#~ msgid "Attachment uploaded successfully" +#~ msgstr "Vedlegget ble lastet opp" -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "" +#~ msgid "File not found" +#~ msgstr "Filen ble ikke funnet" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kunne ikke slette vedlegg på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "" +#~ msgid "Attachment deleted successfully" +#~ msgstr "Vedlegget ble slettet" -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "" +#~ msgid "Comment content cannot be empty" +#~ msgstr "Kommentarinnholdet kan ikke være tomt" -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "" +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "Kommentar må være knyttet til et prosjekt, en oppgave eller et tilbud" -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "" +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "Kommentar kan ikke knyttes til flere mål" -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "" +#~ msgid "Invalid parent comment" +#~ msgstr "Ugyldig forelderkommentar" -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "" +#~ msgid "Comment added successfully" +#~ msgstr "Kommentar lagt til" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "Feil ved å legge til kommentar" -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "" +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Feil ved å legge til kommentar: %(error)s" -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "" +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "Du har ikke tillatelse til å redigere denne kommentaren" -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "" +#~ msgid "Comment updated successfully" +#~ msgstr "Kommentaren ble oppdatert" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Feil ved oppdatering av kommentar: %(error)s" -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "" +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "Du har ikke tillatelse til å slette denne kommentaren" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "" +#~ msgid "Comment deleted successfully" +#~ msgstr "Kommentar slettet" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Feil ved sletting av kommentar: %(error)s" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "Du har ikke tillatelse til å slette dette vedlegget" -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "" -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "" +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "" +#~ msgid "Contact created successfully" +#~ msgstr "Kontakt opprettet" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "" +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Feil ved opprettelse av kontakt: %(error)s" -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "" +#~ msgid "Contact updated successfully" +#~ msgstr "Kontakten er oppdatert" -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Avansert" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Gjennomgå" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "" +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Feil ved oppdatering av kontakt: %(error)s" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "" +#~ msgid "Contact deleted successfully" +#~ msgstr "Kontakten ble slettet" -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "Feil ved sletting av kontakt: %(error)s" -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "" +#~ msgid "Contact set as primary" +#~ msgstr "Kontakt satt som primær" -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Bedrift" +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "Feil ved innstilling av primærkontakt: %(error)s" -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "" +#~ msgid "Communication recorded successfully" +#~ msgstr "Kommunikasjonen ble registrert" -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Feil ved opptak av kommunikasjon: %(error)s" -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Webhooks" +#~ msgid "Field key is required" +#~ msgstr "" -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "" +#~ msgid "Label is required" +#~ msgstr "Etikett kreves" -#: app/routes/integrations.py:1540 app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Prosjekter" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "" +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "" -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "" -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Custom field definition created successfully" +#~ msgstr "" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "" +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "" +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "" +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "SKU eksisterer allerede. Vennligst bruk en annen SKU." - -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Lagervare opprettet." - -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "Feil ved opprettelse av lagervare: %(error)s" - -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Lagervare ble oppdatert." - -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "Feil ved oppdatering av lagervare: %(error)s" - -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "Kan ikke slette lagervare med eksisterende lager eller bevegelseshistorikk." - -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "Lagervare slettet." - -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "Feil ved sletting av lagervare: %(error)s" - -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "Lagerkode finnes allerede. Vennligst bruk en annen kode." - -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Lageret ble opprettet." - -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Feil ved opprettelse av lager: %(error)s" - -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Lageret er oppdatert." - -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "Feil ved oppdatering av lager: %(error)s" - -#: app/routes/inventory.py:747 -msgid "Cannot delete warehouse with existing stock. Please transfer or remove all stock first." -msgstr "Kan ikke slette lager med eksisterende lager. Vennligst overfør eller fjern alt lager først." - -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Lageret ble slettet." - -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Feil ved sletting av lager: %(error)s" - -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "" -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "" +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" +#~ msgid "You do not have permission to view this report." +#~ msgstr "" -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "" -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" +#~ msgid "Invalid deal value" +#~ msgstr "Ugyldig avtaleverdi" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "" +#~ msgid "Deal created successfully" +#~ msgstr "Avtalen ble opprettet" -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "" +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Feil ved opprettelse av avtale: %(error)s" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "" +#~ msgid "Deal updated successfully" +#~ msgstr "Avtalen ble oppdatert" -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "Devaluation cost (%(devalued)s) cannot be greater than original cost (%(original)s)" -msgstr "" +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Feil ved oppdatering av avtale: %(error)s" -#: app/routes/inventory.py:998 -#, python-format -msgid "Insufficient stock to devalue. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Deal closed as won" +#~ msgstr "Avtalen ble avsluttet som vunnet" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "" +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Feil ved lukking av avtale: %(error)s" -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "" +#~ msgid "Deal closed as lost" +#~ msgstr "Avtalen ble avsluttet som tapt" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "" +#~ msgid "Activity recorded successfully" +#~ msgstr "Aktivitet registrert" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Feil ved registrering av aktivitet: %(error)s" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" +#~ msgid "Category name is required" +#~ msgstr "Kategorinavn er obligatorisk" -#: app/routes/inventory.py:1098 -#, python-format -msgid "Insufficient stock to waste. Available: %(available)s, Requested: %(requested)s" -msgstr "" +#~ msgid "Expense category created successfully" +#~ msgstr "Utgiftskategori opprettet" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "Feil ved opprettelse av utgiftskategori" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "" +#~ msgid "Expense category updated successfully" +#~ msgstr "Utgiftskategori er oppdatert" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Error updating expense category" +#~ msgstr "Feil ved oppdatering av utgiftskategori" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Utgiftskategori er deaktivert" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "Aksjebevegelse registrert." +#~ msgid "Error deactivating expense category" +#~ msgstr "Feil ved deaktivering av utgiftskategori" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "Title is required" +#~ msgstr "Tittel er påkrevd" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "Feil ved registrering av lagerbevegelse: %(error)s" +#~ msgid "Category is required" +#~ msgstr "Kategori er påkrevd" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "Kilde- og destinasjonslager må være forskjellige." +#~ msgid "Amount is required" +#~ msgstr "Beløp kreves" -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Utilstrekkelig lager tilgjengelig i kildelageret." +#~ msgid "Expense date is required" +#~ msgstr "Utgiftsdato er påkrevd" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "Ugyldig datoformat" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "" +#~ msgid "Invalid amount format" +#~ msgstr "Ugyldig beløpsformat" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "Aksjeoverføring fullført." - -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Feil ved opprettelse av overføring: %(error)s" - -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "Lagerjustering registrert." - -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Feilopptaksjustering: %(error)s" - -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Reservasjonen fullført." - -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Feil under oppfyllelse av reservasjon: %(error)s" - -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "Reservasjonen ble kansellert." - -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "Feil ved kansellering av reservasjon: %(error)s" - -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "" +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "Leverandør opprettet." - -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Feil ved opprettelse av leverandør: %(error)s" - -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "Leverandørkoden finnes allerede. Vennligst bruk en annen kode." - -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "Leverandøren ble oppdatert." - -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Feil ved oppdatering av leverandør: %(error)s" - -#: app/routes/inventory.py:1757 -msgid "Cannot delete supplier with associated stock items. Remove items first." -msgstr "Kan ikke slette leverandør med tilhørende lagervarer. Fjern elementer først." - -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "Leverandøren ble slettet." - -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Feil ved sletting av leverandør: %(error)s" - -#: app/routes/inventory.py:1817 -#, fuzzy -msgid "Supplier is required." -msgstr "Tittel er påkrevd" - -#: app/routes/inventory.py:1822 -#, fuzzy -msgid "Supplier not found." -msgstr "Ingen leverandører funnet." - -#: app/routes/inventory.py:1827 -#, fuzzy -msgid "Order date is required." -msgstr "Rollenavn er obligatorisk" - -#: app/routes/inventory.py:1908 -#, fuzzy -msgid "Could not create purchase order due to a database error." -msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" - -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Innkjøpsordre opprettet." - -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Feil ved opprettelse av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "Kan ikke redigere en innkjøpsordre som er mottatt." - -#: app/routes/inventory.py:2038 -#, fuzzy -msgid "Could not update purchase order due to a database error." -msgstr "Kunne ikke oppdatere rollen på grunn av en databasefeil" - -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Innkjøpsordre ble oppdatert." - -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Feil ved oppdatering av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:2079 -#, fuzzy -msgid "Could not update purchase order status due to a database error." -msgstr "Kunne ikke oppdatere brukerroller på grunn av en databasefeil" - -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Innkjøpsordre merket som sendt." - -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Feil ved sending av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:2103 -#, fuzzy -msgid "Could not cancel purchase order due to a database error." -msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" - -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Innkjøpsordre kansellert." - -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Feil ved kansellering av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:2125 -msgid "Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "Kan ikke slette en innkjøpsordre som er mottatt. Avbryt den i stedet." - -#: app/routes/inventory.py:2131 -#, fuzzy -msgid "Could not delete purchase order due to a database error." -msgstr "Kunne ikke slette rollen på grunn av en databasefeil" - -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Innkjøpsordre slettet." - -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Feil ved sletting av innkjøpsordre: %(error)s" - -#: app/routes/inventory.py:2175 -#, fuzzy -msgid "Could not receive purchase order due to a database error." -msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Innkjøpsordre merket som mottatt og beholdning oppdatert." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Feil ved mottak av innkjøpsordre: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "" +#~ msgid "Error uploading receipt file." +#~ msgstr "" -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "" +#~ msgid "Expense created successfully" +#~ msgstr "Utgift opprettet" -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "" +#~ msgid "Error creating expense" +#~ msgstr "Feil ved opprettelse av utgift" -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "" +#~ msgid "You do not have permission to view this expense" +#~ msgstr "Du har ikke tillatelse til å se denne utgiften" -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "" +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "Du har ikke tillatelse til å redigere denne utgiften" -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "Kan ikke redigere godkjente eller refunderte utgifter" -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "Prosjekt, kundenavn og forfallsdato kreves" +#~ msgid "Please fill in all required fields" +#~ msgstr "Vennligst fyll ut alle obligatoriske felt" -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Ugyldig forfallsdatoformat" +#~ msgid "Expense updated successfully" +#~ msgstr "Utgiften er oppdatert" -#: app/routes/invoices.py:124 app/routes/offers.py:108 app/routes/offers.py:240 -#: app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Ugyldig skattesatsformat" +#~ msgid "Error updating expense" +#~ msgstr "Feil ved oppdatering av utgift" -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Det valgte prosjektet ble ikke funnet" +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "Du har ikke tillatelse til å slette denne utgiften" -#: app/routes/invoices.py:187 -msgid "Could not create invoice due to a database error. Please check server logs." -msgstr "Kunne ikke opprette faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "Kan ikke slette godkjente eller fakturerte utgifter" -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "Du har ikke tillatelse til å se denne fakturaen" +#~ msgid "Expense deleted successfully" +#~ msgstr "Utgift slettet" -#: app/routes/invoices.py:305 -msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "Feil ved sletting av utgift" -#: app/routes/invoices.py:309 -msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "No expenses selected for deletion" +#~ msgstr "Ingen utgifter valgt for sletting" -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette utgifter på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/invoices.py:319 -msgid "Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's custom fields." -msgstr "" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "Vellykket slettet %(count)d utgift(er)" -#: app/routes/invoices.py:323 -msgid "Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's custom fields." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "Hoppet over %(count)d utgift(er): %(errors)s" -#: app/routes/invoices.py:327 -msgid "Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" +#~ msgid "No expenses selected" +#~ msgstr "Ingen utgifter valgt" -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" +#~ msgid "Invalid status value" +#~ msgstr "Ugyldig statusverdi" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "Du har ikke tillatelse til å redigere denne fakturaen" - -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "Advarsel: Kunne ikke reservere lager for varen %(item)s: %(error)s" - -#: app/routes/invoices.py:561 -msgid "Could not update invoice due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "Fakturaen ble oppdatert" - -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "Advarsel: Kunne ikke redusere lagerbeholdningen for varen %(item)s: %(error)s" - -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "Du har ikke tillatelse til å slette denne fakturaen" - -#: app/routes/invoices.py:749 -#, fuzzy -msgid "Only draft invoices can be deleted." -msgstr "Kun utkast til sitater kan redigeres" - -#: app/routes/invoices.py:755 -msgid "Could not delete invoice due to a database error. Please check server logs." -msgstr "Kunne ikke slette faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "Ingen fakturaer valgt for sletting" - -#: app/routes/invoices.py:806 -msgid "Could not delete invoices due to a database error. Please check server logs." -msgstr "Kunne ikke slette fakturaer på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "Ingen fakturaer er valgt" - -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "Kunne ikke oppdatere fakturaer på grunn av en databasefeil" - -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "Ingen tidsregistreringer, kostnader, utgifter eller ekstra varer er valgt" - -#: app/routes/invoices.py:1009 -msgid "Could not generate items due to a database error. Please check server logs." -msgstr "Kunne ikke generere elementer på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "Fakturaposter generert vellykket fra tidsregistreringer og kostnader" - -#: app/routes/invoices.py:1024 -#, python-format -msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "Brukte %(hours)s forhåndsbetalte timer for %(client)s før faktureringsoverskudd." - -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "Du har ikke tillatelse til å eksportere denne fakturaen" - -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "Kunne ikke oppdatere utgifter på grunn av en databasefeil" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "Vellykket oppdatert %(count)d utgift(er) til %(status)s" -#: app/routes/invoices.py:1216 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF does not ship without embedded XML." -msgstr "" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "Hoppet over %(count)d utgift(er): %(errors)s" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "Hoppet over %(count)d utgift(er) (ingen tillatelse)" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Kun administratorer kan godkjenne utgifter" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Kun utestående utgifter kan godkjennes" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Expense approved successfully" +#~ msgstr "Utgift godkjent" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "PDF-generering mislyktes: %(err)s. Tilbakestilling mislyktes også: %(fb)s" +#~ msgid "Error approving expense" +#~ msgstr "Feil ved godkjenning av utgift" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "Du har ikke tillatelse til å duplisere denne fakturaen" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Bare administratorer kan avvise utgifter" -#: app/routes/invoices.py:1348 -msgid "Could not duplicate invoice due to a database error. Please check server logs." -msgstr "Kunne ikke duplisere faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Kun utestående utgifter kan avvises" -#: app/routes/invoices.py:1379 -msgid "Could not finalize duplicated invoice due to a database error. Please check server logs." -msgstr "Kunne ikke fullføre duplisert faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Rejection reason is required" +#~ msgstr "Årsak til avvisning kreves" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "Utgift avvist" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "" +#~ msgid "Error rejecting expense" +#~ msgstr "Feil under avvisning av utgift" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "Kun administratorer kan merke utgifter som refundert" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "Could not upload image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Kun godkjente utgifter kan merkes som refundert" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Denne utgiften er ikke merket som refunderbar" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Utgift markert som refundert" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "Could not delete image due to a database error. Please check server logs." -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Feil ved merking av utgift som refundert" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "OCR er ikke tilgjengelig. Kontakt administratoren din." -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Faktura merket som sendt" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Ugyldig filtype. Tillatte typer: png, jpg, jpeg, gif, pdf" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Faktura merket som betalt" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "Kvittering skannet! Du kan nå opprette" +#~ " en utgift med de utpakkede dataene." -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Feil ved skanning av kvittering. " +#~ "Vennligst prøv igjen eller skriv inn " +#~ "utgiften manuelt." -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "Fant ingen skannede kvitteringsdata. Vennligst" +#~ " skann en kvittering først." -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Utgift opprettet fra skannet kvittering" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "" +#~ msgid "Permission denied." +#~ msgstr "Ingen tillatelser tildelt." -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "" +#~ msgid "Integration provider not available." +#~ msgstr "" -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "" +#~ msgid "Could not initialize connector." +#~ msgstr "" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "" +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "" +#~ msgid "Authorization code not received." +#~ msgstr "" -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "" +#~ msgid "Integration not found." +#~ msgstr "" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "" +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "" +#~ msgid "Integration connected successfully!" +#~ msgstr "" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "" +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "" +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "" +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "" +#~ msgid "Trello API Key is required." +#~ msgstr "" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "Nøkkel og etikett kreves" +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "" -#: app/routes/kanban.py:189 -msgid "Could not create column due to a database error. Please check server logs." -msgstr "Kunne ikke opprette kolonne på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "OAuth Client ID is required." +#~ msgstr "" -#: app/routes/kanban.py:261 -msgid "Could not update column due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere kolonne på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "" -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "Systemkolonner kan ikke slettes" +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" -#: app/routes/kanban.py:335 -msgid "Could not delete column due to a database error. Please check server logs." -msgstr "Kunne ikke slette kolonne på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "" -#: app/routes/kanban.py:385 -msgid "Could not toggle column due to a database error. Please check server logs." -msgstr "Kunne ikke bytte kolonne på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Integration credentials updated successfully." +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "" +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "No password is set for this account. Please set a password in your profile first." -msgstr "" +#~ msgid "Failed to update credentials." +#~ msgstr "" -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "" +#~ msgid "Invalid action for this integration." +#~ msgstr "REST API for integrasjoner" -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "" +#~ msgid "Linear API key is required." +#~ msgstr "Klientnavn er påkrevd" -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "" +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "" +#~ msgid "Could not save API key." +#~ msgstr "" -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "Timeren stoppet" +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "" -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Kundeemne ble opprettet" +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "" -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Feil ved opprettelse av kundeemne: %(error)s" +#~ msgid "Username is required." +#~ msgstr "" -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Kundeemne ble oppdatert" +#~ msgid "Password is required for new setup." +#~ msgstr "" -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Feil ved oppdatering av lead: %(error)s" +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "" -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "Bly er allerede konvertert" +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Lead konvertert til klient vellykket" +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Feil ved konvertering av lead: %(error)s" +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Bly konvertert til en vellykket avtale" +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Bly merket som tapt" +#~ msgid "Integration configuration updated successfully." +#~ msgstr "" -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "Feil ved merking av kundeemne som tapt: %(error)s" +#~ msgid "Failed to update configuration." +#~ msgstr "" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "" +#~ msgid "Connection test successful!" +#~ msgstr "" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" +#~ msgid "Connector not available." +#~ msgstr "" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "" +#~ msgid "Error during sync: %(error)s" +#~ msgstr "" -#: app/routes/main.py:236 -msgid "You have been using TimeTracker for a week or more. If it fits your workflow, consider supporting continued development." -msgstr "" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "" -#: app/routes/main.py:244 -msgid "You have tracked a solid amount of time today. If TimeTracker makes your day easier, you can support the project in a click." -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "" +#~ msgid "Server URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Kilometeroppføring opprettet" +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Feil ved opprettelse av kjørelengdeoppføring" +#~ msgid "Calendar URL format is invalid." +#~ msgstr "" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "Du har ikke tillatelse til å se denne kilometeroppføringen" +#~ msgid "Selected project not found or is not active." +#~ msgstr "" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "Du har ikke tillatelse til å redigere denne kilometeroppføringen" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "Kan ikke redigere godkjente eller refunderte kjørelengdeoppføringer" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Kilometeroppføringen ble oppdatert" +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Feil ved oppdatering av kjørelengdeoppføring" +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "Du har ikke tillatelse til å slette denne kilometeroppføringen" +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "Kilometeroppføring slettet" +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Feil ved sletting av kjørelengdeoppføring" +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "Ingen kilometerangivelser valgt for sletting" - -#: app/routes/mileage.py:585 -msgid "Could not delete mileage entries due to a database error. Please check server logs." -msgstr "Kunne ikke slette kjørelengdeoppføringer på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "Vellykket slettet %(count)d kjørelengde entr%(plural)s" +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "Hoppet over %(count)d kjørelengdeinnføring%(plural)s: %(errors)s" +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "" -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "Ingen kilometerangivelser er valgt" +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "Kunne ikke oppdatere kjørelengdeoppføringer på grunn av en databasefeil" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "Vellykket oppdatert %(count)d kjørelengde entr%(plural)s til %(status)s" - -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "Hoppet over %(count)d kjørelengde entr%(plural)s (ingen tillatelse)" - -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Bare administratorer kan godkjenne kilometerangivelser" - -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Kun ventende kilometerangivelser kan godkjennes" - -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Kilometerregistrering godkjent" - -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Feil ved godkjenning av kilometerangivelse" - -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Bare administratorer kan avvise kilometerangivelser" - -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "Bare ventende kilometerangivelser kan avvises" - -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Kilometerregistrering avvist" - -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Feil ved avvisning av kilometerangivelse" - -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "Bare administratorer kan merke kilometeroppføringer som refundert" - -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "Kun godkjente kilometerangivelser kan merkes som refundert" - -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Kilometeroppføring merket som refundert" - -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Feil ved merking av kilometerangivelse som refundert" - -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "Sitattittel og klient kreves" - -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Den valgte klienten ble ikke funnet" - -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Ugyldig totalbeløpsformat" - -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Ugyldig estimert timeformat" - -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Ugyldig datoformat for gyldig til" - -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "Could not create quote due to a database error. Please check server logs." -msgstr "Kunne ikke opprette tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Sitat opprettet" - -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "Kun utkast til sitater kan redigeres" - -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "Could not update quote due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere tilbudet på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "Sitat ble oppdatert" - -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "Kun utkast til tilbud kan sendes" - -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "Could not send quote due to a database error. Please check server logs." -msgstr "Kunne ikke sende tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Sitat sendt" - -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Dette sitatet kan ikke aksepteres" - -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "Kunne ikke godta sitat: %(error)s" - -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "Could not accept quote due to a database error. Please check server logs." -msgstr "Kunne ikke godta tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Tilbud akseptert og prosjektet ble opprettet" - -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Dette sitatet kan ikke avvises" - -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "Kunne ikke avvise sitat: %(error)s" +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 app/routes/quotes.py:1399 -msgid "Could not reject quote due to a database error. Please check server logs." -msgstr "Kunne ikke avvise tilbudet på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Connector class not found." +#~ msgstr "" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Sitat avvist" +#~ msgid "Integration configured successfully!" +#~ msgstr "" -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "Kun utkast eller avviste sitater kan slettes" +#~ msgid "Failed to save configuration." +#~ msgstr "" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "Could not delete quote due to a database error. Please check server logs." -msgstr "Kunne ikke slette sitat på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "OAuth Setup" +#~ msgstr "" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Sitat slettet" +#~ msgid "Connection Test" +#~ msgstr "" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "" +#~ msgid "Sync Config" +#~ msgstr "" -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" +#~ msgid "Advanced" +#~ msgstr "Avansert" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "" +#~ msgid "Review" +#~ msgstr "Gjennomgå" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "" +#~ msgid "Instance" +#~ msgstr "" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "Ugyldig fra datoformat" +#~ msgid "OAuth" +#~ msgstr "" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Ugyldig til dato-format" +#~ msgid "Repositories" +#~ msgstr "" -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "Du har ikke tillatelse til å se denne betalingen" +#~ msgid "Sync Settings" +#~ msgstr "" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "Faktura, beløp og betalingsdato kreves" +#~ msgid "Company" +#~ msgstr "Bedrift" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "Finner ikke den valgte fakturaen" +#~ msgid "Mappings" +#~ msgstr "" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "Du har ikke tillatelse til å legge til betalinger på denne fakturaen" +#~ msgid "Tenant" +#~ msgstr "" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "Betalingsbeløpet må være større enn null" +#~ msgid "Webhooks" +#~ msgstr "Webhooks" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Ugyldig betalingsbeløp" +#~ msgid "Workspace" +#~ msgstr "" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Ugyldig betalingsdatoformat" +#~ msgid "Projects" +#~ msgstr "Prosjekter" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "Gateway-avgiften kan ikke være negativ" +#~ msgid "API Keys" +#~ msgstr "" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Ugyldig gateway-avgiftsbeløp" +#~ msgid "Tenant ID" +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "Could not create payment due to a database error. Please check server logs." -msgstr "Kunne ikke opprette betaling på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "Du har ikke tillatelse til å redigere denne betalingen" +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "Could not update payment due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere betaling på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Integration not found" +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Betalingen ble oppdatert" +#~ msgid "Connector not available" +#~ msgstr "" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "Du har ikke tillatelse til å slette denne betalingen" +#~ msgid "SKU is required" +#~ msgstr "" -#: app/routes/payments.py:453 -msgid "Could not delete payment due to a database error. Please check server logs." -msgstr "Kunne ikke slette betaling på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Name is required" +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Betalingen ble slettet" +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "Ingen betalinger valgt for sletting" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/payments.py:516 -msgid "Could not delete payments due to a database error. Please check server logs." -msgstr "Kunne ikke slette betalinger på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "SKU eksisterer allerede. Vennligst bruk en annen SKU." -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "Ingen betalinger er valgt" +#~ msgid "Stock item created successfully." +#~ msgstr "Lagervare opprettet." -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "Kunne ikke oppdatere betalinger på grunn av en databasefeil" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "Feil ved opprettelse av lagervare: %(error)s" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "Startdatoen må være før sluttdatoen" +#~ msgid "Stock item updated successfully." +#~ msgstr "Lagervare ble oppdatert." -#: app/routes/per_diem.py:352 -msgid "No per diem rate found for this location. Please configure rates first." -msgstr "Fant ingen dagpengesats for dette stedet. Vennligst konfigurer priser først." +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "Feil ved oppdatering av lagervare: %(error)s" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Dagpengekrav opprettet" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "Kan ikke slette lagervare med " +#~ "eksisterende lager eller bevegelseshistorikk." -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Feil ved opprettelse av dagpengekrav" +#~ msgid "Stock item deleted successfully." +#~ msgstr "Lagervare slettet." -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "Du har ikke tillatelse til å se dette dagpengekravet" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "Feil ved sletting av lagervare: %(error)s" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "Du har ikke tillatelse til å redigere dette dagpengekravet" +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "Lagerkode finnes allerede. Vennligst bruk en annen kode." -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "Kan ikke redigere godkjente eller refunderte dagpengekrav" +#~ msgid "Warehouse created successfully." +#~ msgstr "Lageret ble opprettet." -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "Dagpengekravet ble oppdatert" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Feil ved opprettelse av lager: %(error)s" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Feil ved oppdatering av dagpengekrav" - -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "Du har ikke tillatelse til å slette dette dagpengekravet" - -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Dagpengekrav slettet" - -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Feil ved sletting av dagpengekrav" - -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "Ingen dagpengekrav valgt for sletting" - -#: app/routes/per_diem.py:583 -msgid "Could not delete per diem claims due to a database error. Please check server logs." -msgstr "Kunne ikke slette dagpengekrav på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "Slettet %(count)d dagpengekrav(er)" - -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "Hoppet over %(count)d dagpengekrav: %(errors)s" - -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "Ingen dagpengekrav valgt" - -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "Kunne ikke oppdatere dagpengekrav på grunn av en databasefeil" - -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "Vellykket oppdatert %(count)d dagpengekrav til %(status)s" - -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "Hoppet over %(count)d dagpengekrav (ingen tillatelse)" - -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Bare administratorer kan godkjenne dagpengekrav" - -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Kun utestående dagpengekrav kan godkjennes" - -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Dagpengekrav godkjent" - -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Feil ved godkjenning av dagpengekrav" - -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Bare administratorer kan avvise dagpengekrav" - -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Kun utestående dagpengekrav kan avvises" - -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Dagpengekravet avvist" - -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Feil ved avvisning av dagpengekrav" - -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Dagpengene er opprettet" - -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Feil ved opprettelse av dagpengesats" - -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Dagpengene er oppdatert" - -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Feil ved oppdatering av dagpengesatsen" - -#: app/routes/per_diem.py:877 -#, python-format -msgid "Cannot delete rate: It is being used by %(count)d per diem claim(s). Deactivate it instead." -msgstr "Kan ikke slette sats: Den brukes av %(count)d dagpengekrav. Deaktiver den i stedet." - -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "Dagpengene ble slettet" - -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Feil ved sletting av dagpengesatsen" - -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "Du har ikke tillatelse til å få tilgang til denne siden" - -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "Rollenavn er obligatorisk" - -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "En rolle med dette navnet finnes allerede" - -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" - -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Rollen ble opprettet" - -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "" +#~ msgid "Warehouse updated successfully." +#~ msgstr "Lageret er oppdatert." -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "Kunne ikke oppdatere rollen på grunn av en databasefeil" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "Feil ved oppdatering av lager: %(error)s" -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Rollen ble oppdatert" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "Kan ikke slette lager med eksisterende" +#~ " lager. Vennligst overfør eller fjern " +#~ "alt lager først." -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "Du har ikke tillatelse til å utføre denne handlingen" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Lageret ble slettet." -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "Systemroller kan ikke slettes" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Feil ved sletting av lager: %(error)s" -#: app/routes/permissions.py:254 -msgid "Cannot delete role that is assigned to users. Please reassign users first." -msgstr "Kan ikke slette rolle som er tildelt brukere. Vennligst tilordne brukere på nytt først." +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "Kunne ikke slette rollen på grunn av en databasefeil" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "Rollen \"%(name)s\" ble slettet" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "" -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "Kunne ikke oppdatere brukerroller på grunn av en databasefeil" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Brukerrollene er oppdatert" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "" +#~ msgid "Invalid unit cost value" +#~ msgstr "" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "" +#~ msgid "Unit cost cannot be negative" +#~ msgstr "" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "" +#~ msgid "Invalid devaluation method" +#~ msgstr "" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "" +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "" +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "" -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "" +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "Prosjektnavn og klient kreves" +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Ugyldig budsjettbeløp" +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Ugyldig budsjettgrenseprosent (0–100)" +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Finner ikke prosjektet" +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "Du har ikke tillatelse til å arkivere prosjekter" +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "Prosjektet er allerede arkivert" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "Aksjebevegelse registrert." -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "Du har ikke tillatelse til å dearkivere prosjekter" +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "Prosjektet er allerede aktivt" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "Feil ved registrering av lagerbevegelse: %(error)s" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "Du har ikke tillatelse til å deaktivere prosjekter" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "Kilde- og destinasjonslager må være forskjellige." -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "Prosjektet er allerede inaktivt" +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Utilstrekkelig lager tilgjengelig i kildelageret." -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "Du har ikke tillatelse til å aktivere prosjekter" +#~ msgid "Stock item not found." +#~ msgstr "" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "Kan ikke slette prosjekt med eksisterende tidsregistreringer" +#~ msgid "Source warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1259 -msgid "Could not delete project due to a database error. Please check server logs." -msgstr "Kunne ikke slette prosjektet på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Destination warehouse not found." +#~ msgstr "" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "Du har ikke tillatelse til å slette prosjekter" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "Aksjeoverføring fullført." -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "Ingen prosjekter er valgt for sletting" +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Feil ved opprettelse av overføring: %(error)s" -#: app/routes/projects.py:1317 -msgid "Could not delete projects due to a database error. Please check server logs." -msgstr "Kunne ikke slette prosjekter på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "Lagerjustering registrert." -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "Ingen prosjekter ble slettet" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Feilopptaksjustering: %(error)s" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "Du har ikke tillatelse til å endre prosjektstatus" +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Reservasjonen fullført." -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "Ingen prosjekter er valgt" +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Feil under oppfyllelse av reservasjon: %(error)s" -#: app/routes/projects.py:1413 -msgid "Could not update project status due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere prosjektstatus på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Reservation cancelled successfully." +#~ msgstr "Reservasjonen ble kansellert." -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "Ingen prosjekter ble oppdatert" +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "Feil ved kansellering av reservasjon: %(error)s" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "Prosjektet er allerede i favoritter" +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Prosjekt lagt til i favoritter" +#~ msgid "Supplier created successfully." +#~ msgstr "Leverandør opprettet." -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "Kunne ikke legge til prosjekt i favoritter" +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Feil ved opprettelse av leverandør: %(error)s" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "Prosjekt er ikke i favoritter" +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "Leverandørkoden finnes allerede. Vennligst bruk en annen kode." -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Prosjekt fjernet fra favoritter" +#~ msgid "Supplier updated successfully." +#~ msgstr "Leverandøren ble oppdatert." -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "Kunne ikke fjerne prosjektet fra favoritter" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Feil ved oppdatering av leverandør: %(error)s" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "Beskrivelse, kategori, beløp og dato kreves" +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "Kan ikke slette leverandør med " +#~ "tilhørende lagervarer. Fjern elementer først." -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "Kunne ikke legge til kostnad på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Supplier deleted successfully." +#~ msgstr "Leverandøren ble slettet." -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Kostnad lagt til" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Feil ved sletting av leverandør: %(error)s" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Pris ikke funnet" +#~ msgid "Supplier is required." +#~ msgstr "Tittel er påkrevd" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "Du har ikke tillatelse til å redigere denne kostnaden" +#~ msgid "Supplier not found." +#~ msgstr "Ingen leverandører funnet." -#: app/routes/projects.py:1703 -msgid "Could not update cost due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere kostnaden på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Order date is required." +#~ msgstr "Rollenavn er obligatorisk" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Kostnaden er oppdatert" +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "Du har ikke tillatelse til å slette denne kostnaden" +#~ msgid "Purchase order created successfully." +#~ msgstr "Innkjøpsordre opprettet." -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "Kan ikke slette kostnad som er fakturert" +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Feil ved opprettelse av innkjøpsordre: %(error)s" -#: app/routes/projects.py:1737 -msgid "Could not delete cost due to a database error. Please check server logs." -msgstr "Kunne ikke slette kostnad på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "Kan ikke redigere en innkjøpsordre som er mottatt." -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Navn og enhetspris kreves" +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "Kunne ikke oppdatere rollen på grunn av en databasefeil" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Ugyldig mengdeformat" +#~ msgid "Purchase order updated successfully." +#~ msgstr "Innkjøpsordre ble oppdatert." -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Ugyldig enhetsprisformat" +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Feil ved oppdatering av innkjøpsordre: %(error)s" -#: app/routes/projects.py:1867 -msgid "Could not add extra good due to a database error. Please check server logs." -msgstr "Kunne ikke legge til ekstra god på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Ekstra bra lagt til" - -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Ekstra god ikke funnet" - -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "Du har ikke tillatelse til å redigere denne ekstra goden" - -#: app/routes/projects.py:1938 -msgid "Could not update extra good due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere ekstra bra på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Ekstra bra oppdatert vellykket" - -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "Du har ikke tillatelse til å slette denne ekstra varen" - -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "Kan ikke slette ekstra vare som er lagt til en faktura" - -#: app/routes/projects.py:1972 -msgid "Could not delete extra good due to a database error. Please check server logs." -msgstr "Kunne ikke slette ekstra god på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Prosjekt opprettet" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Ugyldig format for rabattbeløp" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "Tilbud må godkjennes før det kan sendes" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "Kan ikke sende tilbud: %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "Du har ikke tillatelse til å laste opp vedlegg til dette sitatet" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "Du har ikke tillatelse til å laste ned dette vedlegget" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "Du har ikke tillatelse til å be om godkjenning for dette tilbudet" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Dette tilbudet krever ikke godkjenning" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "Kan ikke be om godkjenning: %(error)s" - -#: app/routes/quotes.py:1312 -msgid "Could not request approval due to a database error. Please check server logs." -msgstr "Kunne ikke be om godkjenning på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Godkjenning ble forespurt" - -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Dette sitatet venter ikke på godkjenning" - -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "Kan ikke godkjenne sitat: %(error)s" - -#: app/routes/quotes.py:1356 -msgid "Could not approve quote due to a database error. Please check server logs." -msgstr "Kunne ikke godkjenne tilbudet på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Sitat godkjent" - -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "Kan ikke avvise sitat: %(error)s" - -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Sitatgodkjenning avvist" - -#: app/routes/quotes.py:1488 -msgid "Could not create template due to a database error. Please check server logs." -msgstr "Kunne ikke opprette mal på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Malen ble opprettet" - -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "" +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "Kunne ikke oppdatere brukerroller på grunn av en databasefeil" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "Du har ikke tillatelse til å lage en mal fra dette sitatet" - -#: app/routes/quotes.py:1555 -msgid "Could not save template due to a database error. Please check server logs." -msgstr "Kunne ikke lagre malen på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Malen ble lagret" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "Du har ikke tillatelse til å eksportere dette tilbudet" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Feil ved generering av PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "Mottakerens e-postadresse kreves" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Sitat sendt til %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "Kunne ikke sende tilbud: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Feil ved sending av e-post: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "Du har ikke tillatelse til å duplisere dette sitatet" - -#: app/routes/quotes.py:1771 -msgid "Could not duplicate quote due to a database error. Please check server logs." -msgstr "Kunne ikke duplisere tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1796 -msgid "Could not finalize duplicated quote due to a database error. Please check server logs." -msgstr "Kunne ikke fullføre duplisert tilbud på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "Sitat %(quote_number)s opprettet som duplikat" - -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Velg en handling og minst ett sitat" - -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "Ugyldige tilbuds-ID-er" - -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "Finner ingen sitater eller du har ikke tillatelse" - -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "Duplisert %(count)d sitat(er)" - -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "Kunne ikke duplisere %(count)d sitat(er)" - -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Feil ved duplisering av sitater" - -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "Merket %(count)d sitat(er) som sendt" - -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "Kunne ikke merke %(count)d sitat(er) som sendt" - -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Feil under oppdatering av sitater" - -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "Slettet %(count)d sitat(er)" - -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "Kunne ikke slette %(count)d sitat(er) (kan være i bruk)" - -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Feil ved sletting av sitater" - -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Ugyldig handling" - -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "" +#~ msgid "Purchase order marked as sent." +#~ msgstr "Innkjøpsordre merket som sendt." -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "" +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Feil ved sending av innkjøpsordre: %(error)s" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "Navn, prosjekt, klient, frekvens og neste kjøringsdato er påkrevd" +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Ugyldig format for neste kjøringsdato" +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Innkjøpsordre kansellert." -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Ugyldig sluttdatoformat" +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Feil ved kansellering av innkjøpsordre: %(error)s" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Det valgte prosjektet eller klienten ble ikke funnet" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "Kan ikke slette en innkjøpsordre som er mottatt. Avbryt den i stedet." -#: app/routes/recurring_invoices.py:137 -msgid "Could not create recurring invoice due to a database error. Please check server logs." -msgstr "Kunne ikke opprette gjentakende faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "Kunne ikke slette rollen på grunn av en databasefeil" -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "Du har ikke tillatelse til å se denne gjentakende fakturaen" +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Innkjøpsordre slettet." -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "Du har ikke tillatelse til å redigere denne gjentakende fakturaen" +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Feil ved sletting av innkjøpsordre: %(error)s" -#: app/routes/recurring_invoices.py:216 -msgid "Could not update recurring invoice due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere gjentakende faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Gjentakende faktura er oppdatert" +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "Innkjøpsordre merket som mottatt og beholdning oppdatert." -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "Du har ikke tillatelse til å slette denne gjentakende fakturaen" +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Feil ved mottak av innkjøpsordre: %(error)s" -#: app/routes/recurring_invoices.py:257 -msgid "Could not delete recurring invoice due to a database error. Please check server logs." -msgstr "Kunne ikke slette gjentakende faktura på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "" -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "" +#~ msgid "Please select at least one approver." +#~ msgstr "" -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "" +#~ msgid "Approval request created successfully." +#~ msgstr "" -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" +#~ msgid "Invoice approved successfully." +#~ msgstr "" -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Start" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "Slutt" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "" +#~ msgid "Please provide a reason for rejection." +#~ msgstr "" -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Oppgave" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Notater" - -#: app/routes/reports.py:1020 app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -#, fuzzy -msgid "Billed" -msgstr "Fakturerbar" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Klient" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Bruker" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "Ja" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "Ingen" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "" +#~ msgid "Invoice approval rejected." +#~ msgstr "" -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "Kunne ikke slette filteret på grunn av en databasefeil" +#~ msgid "Project, client name, and due date are required" +#~ msgstr "Prosjekt, kundenavn og forfallsdato kreves" -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" +#~ msgid "Invalid due date format" +#~ msgstr "Ugyldig forfallsdatoformat" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "" +#~ msgid "Invalid tax rate format" +#~ msgstr "Ugyldig skattesatsformat" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" +#~ msgid "Selected project not found" +#~ msgstr "Det valgte prosjektet ble ikke funnet" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "" +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette faktura på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "" +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "Du har ikke tillatelse til å se denne fakturaen" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "" +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "" +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "" +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "" +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "" +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "" +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "" +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "Du har ikke tillatelse til å redigere denne fakturaen" -#: app/routes/setup.py:107 -#, fuzzy -msgid "Could not save settings. Please check server logs." -msgstr "Kunne ikke oppdatere innstillingene på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "Advarsel: Kunne ikke reservere lager for varen %(item)s: %(error)s" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "Oppsettet er fullført! Takk for at du hjelper oss med å forbedre TimeTracker." +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere faktura på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/setup.py:127 -msgid "Setup complete! Detailed analytics is disabled; anonymous base telemetry remains active." -msgstr "" +#~ msgid "Invoice updated successfully" +#~ msgstr "Fakturaen ble oppdatert" + +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" +#~ "Advarsel: Kunne ikke redusere " +#~ "lagerbeholdningen for varen %(item)s: " +#~ "%(error)s" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "Du har ikke tillatelse til å slette denne fakturaen" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "Kun utkast til sitater kan redigeres" + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette faktura på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "Ingen fakturaer valgt for sletting" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette fakturaer på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "No invoices selected" +#~ msgstr "Ingen fakturaer er valgt" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "Kunne ikke oppdatere fakturaer på grunn av en databasefeil" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "" +#~ "Ingen tidsregistreringer, kostnader, utgifter " +#~ "eller ekstra varer er valgt" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke generere elementer på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "Fakturaposter generert vellykket fra tidsregistreringer og kostnader" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" +#~ "Brukte %(hours)s forhåndsbetalte timer for " +#~ "%(client)s før faktureringsoverskudd." + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "Du har ikke tillatelse til å eksportere denne fakturaen" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" + +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "" + +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" + +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "" +#~ "PDF-generering mislyktes: %(err)s. " +#~ "Tilbakestilling mislyktes også: %(fb)s" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "" +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "Du har ikke tillatelse til å duplisere denne fakturaen" -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "Prosjekt- og oppgavenavn er påkrevd" +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kunne ikke duplisere faktura på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "" +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Kunne ikke fullføre duplisert faktura på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "Det valgte prosjektet eksisterer ikke" +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "" -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "" +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "Du har ikke tilgang til denne oppgaven" - -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Du kan bare redigere oppgaver du har opprettet" - -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "Oppgavenavn er obligatorisk" - -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "Prosjekt er påkrevd" - -#: app/routes/tasks.py:525 -msgid "Could not update status due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere status på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/tasks.py:588 -msgid "Could not update task due to a database error. Please check server logs." -msgstr "Kunne ikke oppdatere oppgaven på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "Du har ikke tillatelse til å oppdatere denne oppgaven" - -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "Du kan bare oppdatere oppgaver du har opprettet" - -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "Du kan bare tildele oppgaver du har opprettet" - -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "Den valgte brukeren eksisterer ikke" - -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Oppgaven er ikke tilordnet" - -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Du kan bare slette oppgaver du har opprettet" - -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "Kan ikke slette oppgave med eksisterende tidsoppføringer" - -#: app/routes/tasks.py:809 -msgid "Could not delete task due to a database error. Please check server logs." -msgstr "Kunne ikke slette oppgaven på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "Ingen oppgaver valgt for sletting" - -#: app/routes/tasks.py:893 -msgid "Could not delete tasks due to a database error. Please check server logs." -msgstr "Kunne ikke slette oppgaver på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "Ingen oppgaver er valgt" - -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "Kunne ikke oppdatere oppgaver på grunn av en databasefeil" - -#: app/routes/tasks.py:995 -#, fuzzy -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" - -#: app/routes/tasks.py:996 -#, fuzzy -msgid "Due date is required" -msgstr "Utgiftsdato er påkrevd" - -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -#, fuzzy -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Ugyldig datoformat" - -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -#, fuzzy -msgid "Database error" -msgstr "Databasestøtte" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy, python-format -msgid "Updated %(count)s task(s)" -msgstr "Duplisert %(count)d sitat(er)" - -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, fuzzy -msgid "No tasks updated" -msgstr "Ingen oppgaver funnet" - -#: app/routes/tasks.py:1046 -#, fuzzy, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "Vellykket oppdatert %(count)d utgift(er) til %(status)s" - -#: app/routes/tasks.py:1050 -#, fuzzy, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "Hoppet over %(count)d utgift(er) (ingen tillatelse)" - -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Ugyldig prioritetsverdi" - -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Ingen bruker valgt for tildeling" - -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Ugyldig bruker er valgt" - -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "Kunne ikke tilordne oppgaver på grunn av en databasefeil" - -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Ingen prosjekter er valgt" - -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Ugyldig prosjekt er valgt" - -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "Kunne ikke flytte oppgaver på grunn av en databasefeil" - -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Bare administratorer kan se alle forfalte oppgaver" - -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "" +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "" +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "" +#~ msgid "Image uploaded successfully" +#~ msgstr "" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "" +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "" +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "" +#~ msgid "Image deleted successfully" +#~ msgstr "" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "" +#~ msgid "Invoice marked as sent" +#~ msgstr "Faktura merket som sendt" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "" +#~ msgid "Invoice marked as paid" +#~ msgstr "Faktura merket som betalt" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "" +#~ msgid "You do not have permission to create issues." +#~ msgstr "" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "" +#~ msgid "Client is required." +#~ msgstr "" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "" +#~ msgid "Issue created successfully." +#~ msgstr "" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "" +#~ msgid "You do not have permission to view this issue." +#~ msgstr "" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "" +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "" +#~ msgid "Project must belong to the same client." +#~ msgstr "" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "Kunne ikke opprette mal på grunn av en databasefeil" +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "Kunne ikke oppdatere malen på grunn av en databasefeil" +#~ msgid "Issue updated successfully." +#~ msgstr "" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "Kunne ikke slette malen på grunn av en databasefeil" +#~ msgid "Please select a task." +#~ msgstr "" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "" +#~ msgid "Issue linked to task successfully." +#~ msgstr "" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "Cannot start timer for an archived project. Please unarchive the project first." -msgstr "Kan ikke starte tidtaker for et arkivert prosjekt. Vennligst deaktiver prosjektet først." +#~ msgid "Please select a project." +#~ msgstr "" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "Kan ikke starte tidtaker for et inaktivt prosjekt" +#~ msgid "Task created from issue successfully." +#~ msgstr "" -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "Den valgte oppgaven er ugyldig for det valgte prosjektet" +#~ msgid "Status is required." +#~ msgstr "" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "" +#~ msgid "Issue status updated successfully." +#~ msgstr "" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "" +#~ msgid "Issue assigned successfully." +#~ msgstr "" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -#, fuzzy -msgid "You do not have access to this project" -msgstr "Du har ikke tilgang til dette prosjektet." - -#: app/routes/timer.py:171 -#, fuzzy -msgid "You do not have access to this client" -msgstr "Du har ikke tilgang til denne oppgaven" - -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Du har allerede en aktiv timer. Stopp det før du starter en ny." - -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "Could not start timer due to a database error. Please check server logs." -msgstr "Kunne ikke starte tidtakeren på grunn av en databasefeil. Vennligst sjekk serverloggene." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Ukjent" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "" +#~ msgid "Could not assign issue." +#~ msgstr "" -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "Malen må ha et prosjekt for å starte en tidtaker" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "Kan ikke starte tidtakeren for dette prosjektet" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "Ingen aktiv timer for å stoppe" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Ikke noe prosjekt" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "Priority is required." +#~ msgstr "" -#: app/routes/timer.py:639 -msgid "Could not stop timer due to an error. Please try again or contact support if the problem persists." -msgstr "" +#~ msgid "Issue priority updated successfully." +#~ msgstr "" -#: app/routes/timer.py:651 -#, fuzzy -msgid "No active timer to pause" -msgstr "Ingen aktiv timer for å stoppe" +#~ msgid "Only administrators can delete issues." +#~ msgstr "" -#: app/routes/timer.py:655 -#, fuzzy -msgid "Timer paused" -msgstr "Timeren stoppet" +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "" -#: app/routes/timer.py:660 -#, fuzzy -msgid "Could not pause timer. Please try again." -msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." +#~ msgid "Issue deleted successfully." +#~ msgstr "" -#: app/routes/timer.py:676 -#, fuzzy -msgid "No active timer to resume" -msgstr "Ingen aktiv timer for å stoppe" +#~ msgid "Key and label are required" +#~ msgstr "Nøkkel og etikett kreves" -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "" +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette kolonne på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/timer.py:685 -#, fuzzy -msgid "Could not resume timer. Please try again." -msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere kolonne på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/timer.py:701 -#, fuzzy -msgid "No active timer to adjust" -msgstr "Ingen aktiv timer for å stoppe" +#~ msgid "System columns cannot be deleted" +#~ msgstr "Systemkolonner kan ikke slettes" -#: app/routes/timer.py:707 -#, fuzzy -msgid "Invalid adjustment value" -msgstr "Ugyldig statusverdi" +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette kolonne på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "Du kan bare redigere dine egne tidtakere" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke bytte kolonne på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Ugyldig oppgave valgt for det valgte prosjektet" +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "Starttidspunkt kan ikke være i fremtiden" +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Ugyldig startdato/tidsformat" +#~ msgid "You have been logged out" +#~ msgstr "" -#: app/routes/timer.py:894 app/routes/timer.py:1423 app/templates/base.html:415 -#: app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "Slutttidspunktet må være etter starttidspunktet" +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Ugyldig format for sluttdato/tidspunkt" +#~ msgid "Stock transfer completed successfully" +#~ msgstr "" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Tidtakeren er oppdatert" +#~ msgid "Timer started successfully" +#~ msgstr "" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "" +#~ msgid "Timer stopped successfully" +#~ msgstr "Timeren stoppet" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Du kan bare slette dine egne tidtakere" +#~ msgid "Lead created successfully" +#~ msgstr "Kundeemne ble opprettet" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "Kan ikke slette en aktiv tidtaker" +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Feil ved opprettelse av kundeemne: %(error)s" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "Could not delete timer due to a database error. Please check server logs." -msgstr "Kunne ikke slette tidtakeren på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Lead updated successfully" +#~ msgstr "Kundeemne ble oppdatert" -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "" +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Feil ved oppdatering av lead: %(error)s" -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "" +#~ msgid "Lead has already been converted" +#~ msgstr "Bly er allerede konvertert" -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "" +#~ msgid "Lead converted to client successfully" +#~ msgstr "Lead konvertert til klient vellykket" -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Feil ved konvertering av lead: %(error)s" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Bly konvertert til en vellykket avtale" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" +#~ msgid "Lead marked as lost" +#~ msgstr "Bly merket som tapt" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "" +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "Feil ved merking av kundeemne som tapt: %(error)s" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Ugyldig dato/klokkeslett-format" +#~ msgid "URL template is required" +#~ msgstr "" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Alle felt er obligatoriske" +#~ msgid "Link template created successfully" +#~ msgstr "" -#: app/routes/timer.py:1649 -msgid "Cannot create time entries for an archived project. Please unarchive the project first." -msgstr "Kan ikke opprette tidsoppføringer for et arkivert prosjekt. Vennligst deaktiver prosjektet først." +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "Kan ikke opprette tidsoppføringer for et inaktivt prosjekt" +#~ msgid "Link template updated successfully" +#~ msgstr "" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Ugyldig oppgave er valgt" +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "Sluttdatoen må være etter eller lik startdatoen" +#~ msgid "Link template deleted successfully" +#~ msgstr "" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "Datoperioden kan ikke overstige 31 dager" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Ugyldig tidsformat" +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "Ingen gyldige datoer funnet i det valgte området" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "" -#: app/routes/timer.py:1813 -msgid "Could not create bulk entries due to a database error. Please check server logs." -msgstr "Kunne ikke opprette masseoppføringer på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "Mileage entry created successfully" +#~ msgstr "Kilometeroppføring opprettet" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "Det oppsto en feil under oppretting av masseoppføringer. Vennligst prøv igjen." +#~ msgid "Error creating mileage entry" +#~ msgstr "Feil ved opprettelse av kjørelengdeoppføring" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Du kan bare duplisere dine egne tidtakere" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "Du har ikke tillatelse til å se denne kilometeroppføringen" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "Du kan bare gjenoppta dine egne tidtakere" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "Du har ikke tillatelse til å redigere denne kilometeroppføringen" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "Prosjektet eksisterer ikke lenger" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "Kan ikke redigere godkjente eller refunderte kjørelengdeoppføringer" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Kilometeroppføringen ble oppdatert" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "" +#~ msgid "Error updating mileage entry" +#~ msgstr "Feil ved oppdatering av kjørelengdeoppføring" -#: app/routes/timer.py:2098 -msgid "Could not resume timer due to a database error. Please check server logs." -msgstr "Kunne ikke gjenoppta tidtakeren på grunn av en databasefeil. Vennligst sjekk serverloggene." +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "Du har ikke tillatelse til å slette denne kilometeroppføringen" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "Kilometeroppføring slettet" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "" +#~ msgid "Error deleting mileage entry" +#~ msgstr "Feil ved sletting av kjørelengdeoppføring" -#: app/routes/timer.py:3042 -msgid "Could not update time entries due to a database error. Please check server logs." -msgstr "" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "Ingen kilometerangivelser valgt for sletting" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke slette kjørelengdeoppføringer på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "" +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "Vellykket slettet %(count)d kjørelengde entr%(plural)s" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "" +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "Hoppet over %(count)d kjørelengdeinnføring%(plural)s: %(errors)s" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Ugyldig tidssone er valgt" +#~ msgid "No mileage entries selected" +#~ msgstr "Ingen kilometerangivelser er valgt" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "Standard timer per dag må være mellom 0,5 og 24" +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "Kunne ikke oppdatere kjørelengdeoppføringer på grunn av en databasefeil" -#: app/routes/user.py:182 -#, fuzzy -msgid "Standard hours per week must be between 1 and 168" -msgstr "Standard timer per dag må være mellom 0,5 og 24" +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "Vellykket oppdatert %(count)d kjørelengde entr%(plural)s til %(status)s" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Innstillingene er lagret" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "Hoppet over %(count)d kjørelengde entr%(plural)s (ingen tillatelse)" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Feil ved lagring av innstillinger: %(error)s" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Bare administratorer kan godkjenne kilometerangivelser" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Kun ventende kilometerangivelser kan godkjennes" -#: app/routes/user.py:265 -#, fuzzy -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "Takk for at du valgte TimeTracker!" - -#: app/routes/user.py:267 -#, fuzzy -msgid "Error saving settings." -msgstr "Feil under lagring av innstillinger" +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Kilometerregistrering godkjent" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Preferansene er oppdatert" +#~ msgid "Error approving mileage entry" +#~ msgstr "Feil ved godkjenning av kilometerangivelse" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Språket er oppdatert" - -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Ugyldig språk" - -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "Språket er oppdatert til %(language)s" - -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "Webhook-navn er påkrevd" - -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "Webhook URL er nødvendig" - -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "Minst én hendelse må velges" - -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook opprettet" - -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Feil ved opprettelse av webhook" - -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "Feil ved opprettelse av webhook: %(error)s" - -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook ble oppdatert" - -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "Feil ved oppdatering av webhook: %(error)s" - -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook ble slettet" - -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "Feil ved sletting av webhook: %(error)s" - -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Vennligst skriv inn en gyldig måltid (større enn 0)" - -#: app/routes/weekly_goals.py:101 -msgid "A goal already exists for this week. Please edit the existing goal instead." -msgstr "Det finnes allerede et mål for denne uken. Rediger det eksisterende målet i stedet." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "Ukentlig tidsmål opprettet med suksess!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "Klarte ikke å lage mål. Vennligst prøv igjen." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "Du har ikke tillatelse til å se dette målet" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "Du har ikke tillatelse til å redigere dette målet" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "Ukentlig tidsmål er oppdatert!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "Kunne ikke oppdatere målet. Vennligst prøv igjen." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "Du har ikke tillatelse til å slette dette målet" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "Ukentlig tidsmål er slettet" +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Bare administratorer kan avvise kilometerangivelser" -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "Kunne ikke slette målet. Vennligst prøv igjen." +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "Bare ventende kilometerangivelser kan avvises" -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "" +#~ msgid "Mileage entry rejected" +#~ msgstr "Kilometerregistrering avvist" -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Feil ved avvisning av kilometerangivelse" -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "" +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "Bare administratorer kan merke kilometeroppføringer som refundert" -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "Kun godkjente kilometerangivelser kan merkes som refundert" -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Kilometeroppføring merket som refundert" -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Feil ved merking av kilometerangivelse som refundert" -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "" +#~ msgid "Quote title and client are required" +#~ msgstr "Sitattittel og klient kreves" -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "" +#~ msgid "Selected client not found" +#~ msgstr "Den valgte klienten ble ikke funnet" -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "" +#~ msgid "Invalid total amount format" +#~ msgstr "Ugyldig totalbeløpsformat" -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "" +#~ msgid "Invalid estimated hours format" +#~ msgstr "Ugyldig estimert timeformat" -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "" +#~ msgid "Invalid date format for valid until" +#~ msgstr "Ugyldig datoformat for gyldig til" -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Oppdater status" +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette tilbud på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "" +#~ msgid "Quote created successfully" +#~ msgstr "Sitat opprettet" -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Opprett oppgave" +#~ msgid "Only draft quotes can be edited" +#~ msgstr "Kun utkast til sitater kan redigeres" -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "" +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere tilbudet på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "Send e-post" +#~ msgid "Quote updated successfully" +#~ msgstr "Sitat ble oppdatert" -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "" +#~ msgid "Only draft quotes can be sent" +#~ msgstr "Kun utkast til tilbud kan sendes" -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "" +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kunne ikke sende tilbud på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "" +#~ msgid "Quote sent successfully" +#~ msgstr "Sitat sendt" -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "" +#~ msgid "This quote cannot be accepted" +#~ msgstr "Dette sitatet kan ikke aksepteres" -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "" +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "Kunne ikke godta sitat: %(error)s" -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "" +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke godta tilbud på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workforce.py:180 -#, fuzzy -msgid "Timesheet period rejected" -msgstr "Velg Prosjekt" +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Tilbud akseptert og prosjektet ble opprettet" -#: app/routes/workforce.py:191 -#, fuzzy -msgid "Only admins can close periods" -msgstr "Bare administratorer kan avvise kilometerangivelser" +#~ msgid "This quote cannot be rejected" +#~ msgstr "Dette sitatet kan ikke avvises" -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "" +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "Kunne ikke avvise sitat: %(error)s" -#: app/routes/workforce.py:243 -#, fuzzy -msgid "Timesheet policy updated" -msgstr "WebSocket live-oppdateringer" +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke avvise tilbudet på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workforce.py:257 -#, fuzzy -msgid "Name and code are required" -msgstr "Navn og enhetspris kreves" +#~ msgid "Quote rejected" +#~ msgstr "Sitat avvist" -#: app/routes/workforce.py:270 -#, fuzzy -msgid "Leave type created" -msgstr "Klient opprettet" +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "Kun utkast eller avviste sitater kan slettes" -#: app/routes/workforce.py:303 -#, fuzzy -msgid "Leave type and date range are required" -msgstr "Nøkkel og etikett kreves" +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette sitat på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "Quote deleted successfully" +#~ msgstr "Sitat slettet" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "" + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" + +#~ msgid "Stripe API key not configured." +#~ msgstr "" + +#~ msgid "Payment processed successfully." +#~ msgstr "" + +#~ msgid "Invalid from date format" +#~ msgstr "Ugyldig fra datoformat" + +#~ msgid "Invalid to date format" +#~ msgstr "Ugyldig til dato-format" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "Du har ikke tillatelse til å se denne betalingen" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "Faktura, beløp og betalingsdato kreves" + +#~ msgid "Selected invoice not found" +#~ msgstr "Finner ikke den valgte fakturaen" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "Du har ikke tillatelse til å legge til betalinger på denne fakturaen" -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "" +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "Betalingsbeløpet må være større enn null" -#: app/routes/workforce.py:344 -#, fuzzy -msgid "Time-off request approved" -msgstr "Be om godkjenning" +#~ msgid "Invalid payment amount" +#~ msgstr "Ugyldig betalingsbeløp" -#: app/routes/workforce.py:368 -#, fuzzy -msgid "Time-off request rejected" -msgstr "Sitat avvist" +#~ msgid "Invalid payment date format" +#~ msgstr "Ugyldig betalingsdatoformat" -#: app/routes/workforce.py:405 -#, fuzzy -msgid "Name and date range are required" -msgstr "Navn og enhetspris kreves" +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "Gateway-avgiften kan ikke være negativ" -#: app/routes/workforce.py:411 -#, fuzzy -msgid "Holiday created" -msgstr "Timepris" +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Ugyldig gateway-avgiftsbeløp" -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette betaling på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "Du har ikke tillatelse til å redigere denne betalingen" -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "gjenværende" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Suksess" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Feil" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Advarsel" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Informasjon" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Laster inn..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Lagrer..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "Sletter ..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Kansellere" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Bekrefte" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Lukke" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Spare" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 app/templates/quotes/list.html:368 -#: app/templates/quotes/view.html:331 app/templates/quotes/view.html:356 -#: app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Slett" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Redigere" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Legge til" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Fjerne" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "OK" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "Er du sikker på at du vil slette dette?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "Du har ulagrede endringer. Er du sikker på at du vil forlate?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "Operasjonen mislyktes" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Operasjonen fullført" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "Ingen elementer er valgt" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Ugyldig inndata" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Dette feltet er obligatorisk" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Ingen aktiv timer" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Timeren stoppet" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "Kunne ikke stoppe tidtakeren" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Feil ved stopp av tidtaker" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "Ingen skjema å lagre" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "Ingen tidtaker funnet" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Timeren stoppet på grunn av inaktivitet" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "" +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere betaling på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Gå til innhold" - -#: app/templates/base.html:480 -#, fuzzy -msgid "Main navigation" -msgstr "Mobilnavigasjon" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navigasjon" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -#, fuzzy -msgid "Open command palette" -msgstr "Kommandopalett" - -#: app/templates/base.html:512 -#, fuzzy -msgid "Commands" -msgstr "Kommentarer" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Bytt sidefelt" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Dashbord" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Timer" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -#, fuzzy -msgid "Time entries" -msgstr "Tidsoppføringer" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Rapporter" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Kalender" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Kalendervisning" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "" +#~ msgid "Payment updated successfully" +#~ msgstr "Betalingen ble oppdatert" -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Tidssporing" - -#: app/templates/base.html:596 -#, fuzzy -msgid "Time Approvals" -msgstr "Be om godkjenning" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "" +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "Du har ikke tillatelse til å slette denne betalingen" -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "" +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette betaling på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Oppgaver" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "" +#~ msgid "Payment deleted successfully" +#~ msgstr "Betalingen ble slettet" -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Kanban-styret" +#~ msgid "No payments selected for deletion" +#~ msgstr "Ingen betalinger valgt for sletting" -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Ukentlige mål" +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette betalinger på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "" +#~ msgid "No payments selected" +#~ msgstr "Ingen betalinger er valgt" -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Tidsregistreringsmaler" +#~ msgid "Could not update payments due to a database error" +#~ msgstr "Kunne ikke oppdatere betalinger på grunn av en databasefeil" -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" +#~ msgid "Start date must be before end date" +#~ msgstr "Startdatoen må være før sluttdatoen" -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Kunder" +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "Fant ingen dagpengesats for dette " +#~ "stedet. Vennligst konfigurer priser først." -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "" +#~ msgid "Per diem claim created successfully" +#~ msgstr "Dagpengekrav opprettet" -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "" +#~ msgid "Error creating per diem claim" +#~ msgstr "Feil ved opprettelse av dagpengekrav" -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "" +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "Du har ikke tillatelse til å se dette dagpengekravet" -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "" +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "Du har ikke tillatelse til å redigere dette dagpengekravet" -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Sitater" +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "Kan ikke redigere godkjente eller refunderte dagpengekrav" -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Økonomi og utgifter" +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Dagpengekravet ble oppdatert" -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "" +#~ msgid "Error updating per diem claim" +#~ msgstr "Feil ved oppdatering av dagpengekrav" -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "Du har ikke tillatelse til å slette dette dagpengekravet" -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "" +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Dagpengekrav slettet" -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Planlagte rapporter" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Fakturaer" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "" +#~ msgid "Error deleting per diem claim" +#~ msgstr "Feil ved sletting av dagpengekrav" -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "Ingen dagpengekrav valgt for sletting" -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Gjentakende fakturaer" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Betalinger" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Utgifter" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Kilometerstand" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Per Diem" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Budsjettvarsler" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Inventar" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Lagervarer" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Varehus" - -#: app/templates/base.html:861 app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Leverandører" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Innkjøpsordrer" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Lagernivåer" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Aksjebevegelser" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Overføringer" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Justeringer" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Reservasjoner" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Varsler om lavt lager" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 app/templates/base.html:912 -#: app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Analytics" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Verktøy og data" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Import/eksport" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Lagrede filtre" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Admin" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Admin Dashboard" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Brukeradministrasjon" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "" +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Kunne ikke slette dagpengekrav på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Roller og tillatelser" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "PDF-maler" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "Faktura PDF" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Sitat PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Systeminnstillinger" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 app/templates/user/license.html:2 -#: app/templates/user/profile.html:31 app/templates/user/settings.html:2 -#: app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Innstillinger" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "" +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "Slettet %(count)d dagpengekrav(er)" -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "E-postkonfigurasjon" +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "Hoppet over %(count)d dagpengekrav: %(errors)s" -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "E-postmaler" +#~ msgid "No per diem claims selected" +#~ msgstr "Ingen dagpengekrav valgt" -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "OIDC-innstillinger" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "Kunne ikke oppdatere dagpengekrav på grunn av en databasefeil" -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "Vellykket oppdatert %(count)d dagpengekrav til %(status)s" -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "API-tokens" +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "Hoppet over %(count)d dagpengekrav (ingen tillatelse)" -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Revisjonslogger" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "Bare administratorer kan godkjenne dagpengekrav" -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "" +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "Kun utestående dagpengekrav kan godkjennes" -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Utgiftskategorier" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Dagpengekrav godkjent" -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Dagpengepriser" +#~ msgid "Error approving per diem claim" +#~ msgstr "Feil ved godkjenning av dagpengekrav" -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "Bare administratorer kan avvise dagpengekrav" -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 app/templates/base.html:1127 -msgid "Link Templates" -msgstr "" +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "Kun utestående dagpengekrav kan avvises" -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "" +#~ msgid "Per diem claim rejected" +#~ msgstr "Dagpengekravet avvist" -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Systeminfo" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Feil ved avvisning av dagpengekrav" -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Sikkerhetskopier" +#~ msgid "Per diem rate created successfully" +#~ msgstr "Dagpengene er opprettet" -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "" +#~ msgid "Error creating per diem rate" +#~ msgstr "Feil ved opprettelse av dagpengesats" -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "Om" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Hjelp" - -#: app/templates/base.html:1189 -#, fuzzy -msgid "Open support options" -msgstr "Eksportalternativer" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Støtte TimeTracker" - -#: app/templates/base.html:1211 -#, fuzzy -msgid "Open sidebar" -msgstr "Bytt sidefelt" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Søk" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Tema" - -#: app/templates/base.html:1234 -#, fuzzy -msgid "Theme options" -msgstr "Filteralternativer" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Lys" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Mørk" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "System" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Dagpengene er oppdatert" -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Start timer" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -#, fuzzy -msgid "Stop" -msgstr "til" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -#, fuzzy -msgid "AI Helper" -msgstr "Se hjelp" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Bytt språk" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Språk" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Brukermeny" - -#: app/templates/base.html:1308 -#, fuzzy -msgid "Supporter" -msgstr "Støtte" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Gjest" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Min profil" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Mine innstillinger" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Tillatelse" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "" +#~ msgid "Error updating per diem rate" +#~ msgstr "Feil ved oppdatering av dagpengesatsen" -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Logg ut" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" +#~ "Kan ikke slette sats: Den brukes " +#~ "av %(count)d dagpengekrav. Deaktiver den " +#~ "i stedet." -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "Liker du TimeTracker?" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "Dagpengene ble slettet" -#: app/templates/base.html:1367 -msgid "Support independent development — licenses are supporter badges, not paywalls." -msgstr "" +#~ msgid "Error deleting per diem rate" +#~ msgstr "Feil ved sletting av dagpengesatsen" -#: app/templates/base.html:1374 app/templates/main/about.html:212 -#, fuzzy -msgid "Support / Get key" -msgstr "Støtte TimeTracker" +#~ msgid "You do not have permission to access this page" +#~ msgstr "Du har ikke tillatelse til å få tilgang til denne siden" -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "" +#~ msgid "Role name is required" +#~ msgstr "Rollenavn er obligatorisk" -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" +#~ msgid "A role with this name already exists" +#~ msgstr "En rolle med dette navnet finnes allerede" -#: app/templates/base.html:1391 -#, fuzzy -msgid "Support / License" -msgstr "Rekvisita" +#~ msgid "Could not create role due to a database error" +#~ msgstr "Kunne ikke opprette rolle på grunn av en databasefeil" -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Avskjedige" +#~ msgid "Role created successfully" +#~ msgstr "Rollen ble opprettet" -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "" +#~ msgid "System role names cannot be changed" +#~ msgstr "" -#: app/templates/base.html:1417 -#, fuzzy -msgid "Software update" -msgstr "Startdato" +#~ msgid "Could not update role due to a database error" +#~ msgstr "Kunne ikke oppdatere rollen på grunn av en databasefeil" -#: app/templates/base.html:1425 -#, fuzzy -msgid "Read more" -msgstr "Last inn mer" +#~ msgid "Role updated successfully" +#~ msgstr "Rollen ble oppdatert" -#: app/templates/base.html:1430 -#, fuzzy -msgid "View Release" -msgstr "Vis oppgave" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "Du har ikke tillatelse til å utføre denne handlingen" -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "Systemroller kan ikke slettes" -#: app/templates/base.html:1447 -#, fuzzy -msgid "Quick actions dock" -msgstr "Raske handlinger" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 app/templates/audit_logs/list.html:160 -#: app/templates/base.html:1454 app/templates/base.html:1482 -#: app/templates/base.html:1484 app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Handlinger" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Loggtid" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Ny oppgave" - -#: app/templates/base.html:1471 -#, fuzzy -msgid "New Project" -msgstr "Se prosjekt" - -#: app/templates/base.html:1475 -#, fuzzy -msgid "New Client" -msgstr "Klient" - -#: app/templates/base.html:1491 -#, fuzzy -msgid "Open AI Helper" -msgstr "Operasjonen mislyktes" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "Kan ikke slette rolle som er " +#~ "tildelt brukere. Vennligst tilordne brukere" +#~ " på nytt først." -#: app/templates/base.html:1508 -#, fuzzy -msgid "Context included" -msgstr "Kontrakt avsluttet" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "Kunne ikke slette rollen på grunn av en databasefeil" -#: app/templates/base.html:1509 -#, fuzzy -msgid "Loading context preview..." -msgstr "Forhåndsvisning av logo" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "Rollen \"%(name)s\" ble slettet" -#: app/templates/base.html:1515 -msgid "Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "" -#: app/templates/base.html:1518 -#, fuzzy -msgid "Send" -msgstr "Slutt" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "Kunne ikke oppdatere brukerroller på grunn av en databasefeil" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "" +#~ msgid "User roles updated successfully" +#~ msgstr "Brukerrollene er oppdatert" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "" +#~ msgid "Template created successfully." +#~ msgstr "" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "Opprett API-token" - -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "Ditt API-token" - -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Eksempler på bruk" - -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "Er du sikker på at du vil" - -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "deaktivere" - -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "aktivere" - -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "dette symbolet?" - -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Deaktiver token" - -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Aktiver token" - -#: app/templates/admin/api_tokens.html:460 app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Deaktiver" - -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Aktiver" - -#: app/templates/admin/api_tokens.html:490 -msgid "Are you sure you want to delete this token? This action cannot be undone." -msgstr "Er du sikker på at du vil slette dette tokenet? Denne handlingen kan ikke angres." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Slett token" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Lag sikkerhetskopi" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Gjenopprett sikkerhetskopi" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Eksisterende sikkerhetskopier" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Viktig informasjon" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Bekreft sletting" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Tøm buffer" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "ServiceWorker Status" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Tøm alle cacher" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "ServiceWorker-handlinger" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Manuell hard oppdatering" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "" +#~ msgid "Template not found." +#~ msgstr "" -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Hele tiden" +#~ msgid "You do not have permission to view this template." +#~ msgstr "" -#: app/templates/admin/dashboard.html:39 app/templates/admin/dashboard.html:430 -#: app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "" -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "" +#~ msgid "Template updated successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Totalt prosjekter" +#~ msgid "Template deleted successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Aktive prosjekter" +#~ msgid "Please select a client." +#~ msgstr "" -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "" +#~ msgid "Project created from template successfully." +#~ msgstr "" -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "" +#~ msgid "Project name and client are required" +#~ msgstr "Prosjektnavn og klient kreves" -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "" +#~ msgid "Invalid budget amount" +#~ msgstr "Ugyldig budsjettbeløp" -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "" +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Ugyldig budsjettgrenseprosent (0–100)" -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "" +#~ msgid "Could not save project due to a database error" +#~ msgstr "" -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "" +#~ msgid "Project not found" +#~ msgstr "Finner ikke prosjektet" -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "" +#~ msgid "Could not update project due to a database error" +#~ msgstr "" -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "Du har ikke tillatelse til å arkivere prosjekter" -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "" +#~ msgid "Project is already archived" +#~ msgstr "Prosjektet er allerede arkivert" -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "" +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "Du har ikke tillatelse til å dearkivere prosjekter" -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Database" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "" +#~ msgid "Project is already active" +#~ msgstr "Prosjektet er allerede aktivt" -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "Du har ikke tillatelse til å deaktivere prosjekter" -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "" +#~ msgid "Project is already inactive" +#~ msgstr "Prosjektet er allerede inaktivt" -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "" +#~ msgid "You do not have permission to activate projects" +#~ msgstr "Du har ikke tillatelse til å aktivere prosjekter" -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "OIDC-brukere" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "brukere" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Administrasjonsseksjoner" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Nylig aktivitet" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Varighet" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "N/A" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "E-postkonfigurasjon og testing" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Konfigurer og test e-postlevering" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Tilbake til Admin" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "Konfigurer e-postinnstillinger her for å lagre dem i databasen." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Aktiver e-postkonfigurasjon for database" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "E-postserver" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Postport" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Bruk TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Bruk SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Brukernavn" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Passord" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "La stå tomt for å holde deg oppdatert" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Standard avsender" - -#: app/templates/admin/email_support.html:82 -#, fuzzy -msgid "Test recipient email" -msgstr "Mottakers e-post" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "Kan ikke slette prosjekt med eksisterende tidsregistreringer" -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Lagre konfigurasjon" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Tilbakestill" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "E-postkonfigurasjonsstatus" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Forfriske" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "E-post er konfigurert!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "E-postinnstillingene dine er riktig konfigurert." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "E-post er ikke konfigurert" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "Vennligst konfigurer e-postinnstillingene ved å bruke skjemaet ovenfor." - -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Konfigurasjonsfeil" - -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Konfigurasjonsadvarsler" - -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Gjeldende e-postinnstillinger" - -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Havn" - -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Passord satt" - -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Send test-e-post" - -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "Mottakers e-postadresse" - -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Konfigurasjonsveiledning" - -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Vanlige SMTP-leverandører" - -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Krever app-passord" - -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Viktige merknader" - -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "Gmail krever et app-passord hvis 2FA er aktivert" - -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Start programmet på nytt etter å ha endret e-postinnstillinger" - -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Sjekk brannmurreglene hvis e-post ikke sendes" - -#: app/templates/admin/email_support.html:255 -msgid "For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "For produksjon, bruk en dedikert e-posttjeneste som SendGrid eller Amazon SES" - -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "passordet er satt" - -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "ikke angitt passord" - -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "Kunne ikke lagre konfigurasjonen. Vennligst prøv igjen." - -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "Suksess!" - -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "Kunne ikke oppdatere status. Vennligst prøv igjen." - -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "Vennligst skriv inn en gyldig e-postadresse" - -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Sender..." - -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "Kunne ikke sende test-e-post. Vennligst sjekk konfigurasjonen din." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette prosjektet på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:16 -#, fuzzy -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Konfigurer OIDC ved å bruke disse miljøvariablene:" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "Du har ikke tillatelse til å slette prosjekter" -#: app/templates/admin/ldap_setup_wizard.html:31 -#, fuzzy -msgid "Server" -msgstr "Service" +#~ msgid "No projects selected for deletion" +#~ msgstr "Ingen prosjekter er valgt for sletting" -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette prosjekter på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Brukere" +#~ msgid "No projects were deleted" +#~ msgstr "Ingen prosjekter ble slettet" -#: app/templates/admin/ldap_setup_wizard.html:46 -#, fuzzy -msgid "Groups" -msgstr "Gruppekrav" +#~ msgid "You do not have permission to change project status" +#~ msgstr "Du har ikke tillatelse til å endre prosjektstatus" -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "" +#~ msgid "No projects selected" +#~ msgstr "Ingen prosjekter er valgt" -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "" +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere prosjektstatus på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:60 -#, fuzzy -msgid "LDAP host" -msgstr "Tapt" +#~ msgid "No projects were updated" +#~ msgstr "Ingen prosjekter ble oppdatert" -#: app/templates/admin/ldap_setup_wizard.html:73 -#, fuzzy -msgid "Use SSL (LDAPS)" -msgstr "Bruk SSL" +#~ msgid "Project is already in favorites" +#~ msgstr "Prosjektet er allerede i favoritter" -#: app/templates/admin/ldap_setup_wizard.html:77 -#, fuzzy -msgid "StartTLS" -msgstr "Start" +#~ msgid "Project added to favorites" +#~ msgstr "Prosjekt lagt til i favoritter" -#: app/templates/admin/ldap_setup_wizard.html:81 -#, fuzzy -msgid "Connection timeout (seconds)" -msgstr "Tidsavbrudd (sekunder)" +#~ msgid "Failed to add project to favorites" +#~ msgstr "Kunne ikke legge til prosjekt i favoritter" -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "" +#~ msgid "Project is not in favorites" +#~ msgstr "Prosjekt er ikke i favoritter" -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "" +#~ msgid "Project removed from favorites" +#~ msgstr "Prosjekt fjernet fra favoritter" -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "" +#~ msgid "Failed to remove project from favorites" +#~ msgstr "Kunne ikke fjerne prosjektet fra favoritter" -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "" +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "Beskrivelse, kategori, beløp og dato kreves" -#: app/templates/admin/ldap_setup_wizard.html:104 -#, fuzzy -msgid "Bind password" -msgstr "Passord" +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "Kunne ikke legge til kostnad på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:107 -#, fuzzy -msgid "Enter bind password" -msgstr "Skriv inn passordet ditt" +#~ msgid "Cost added successfully" +#~ msgstr "Kostnad lagt til" -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "A bind password is already set in the environment. Enter it again here to test or generate configuration." -msgstr "" +#~ msgid "Cost not found" +#~ msgstr "Pris ikke funnet" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "" +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "Du har ikke tillatelse til å redigere denne kostnaden" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -#, fuzzy -msgid "Base DN" -msgstr "Basert på sist" +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere kostnaden på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "" +#~ msgid "Cost updated successfully" +#~ msgstr "Kostnaden er oppdatert" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "Du har ikke tillatelse til å slette denne kostnaden" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "Kan ikke slette kostnad som er fakturert" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette kostnad på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:133 -#, fuzzy -msgid "User object class" -msgstr "Bruk prosjekttimepriser" - -#: app/templates/admin/ldap_setup_wizard.html:140 -#, fuzzy -msgid "Login attribute" -msgstr "Loggtid" - -#: app/templates/admin/ldap_setup_wizard.html:145 -#, fuzzy -msgid "Email attribute" -msgstr "E-postadresse" - -#: app/templates/admin/ldap_setup_wizard.html:150 -#, fuzzy -msgid "First name attribute" -msgstr "Fornavn" - -#: app/templates/admin/ldap_setup_wizard.html:155 -#, fuzzy -msgid "Last name attribute" -msgstr "Etternavn" - -#: app/templates/admin/ldap_setup_wizard.html:164 -#, fuzzy -msgid "Step 4: Groups and authentication mode" -msgstr "Autentiseringsmetode" - -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "" +#~ msgid "Name and unit price are required" +#~ msgstr "Navn og enhetspris kreves" + +#~ msgid "Invalid quantity format" +#~ msgstr "Ugyldig mengdeformat" + +#~ msgid "Invalid unit price format" +#~ msgstr "Ugyldig enhetsprisformat" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke legge til ekstra god på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:173 -#, fuzzy -msgid "Group object class" -msgstr "Topp prosjekter" +#~ msgid "Extra good added successfully" +#~ msgstr "Ekstra bra lagt til" + +#~ msgid "Extra good not found" +#~ msgstr "Ekstra god ikke funnet" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "Du har ikke tillatelse til å redigere denne ekstra goden" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere ekstra bra på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -#, fuzzy -msgid "Admin group (CN)" -msgstr "Administrasjonsgruppe" +#~ msgid "Extra good updated successfully" +#~ msgstr "Ekstra bra oppdatert vellykket" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "Du har ikke tillatelse til å slette denne ekstra varen" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "Kan ikke slette ekstra vare som er lagt til en faktura" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke slette ekstra god på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." + +#~ msgid "Project created successfully" +#~ msgstr "Prosjekt opprettet" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Ugyldig format for rabattbeløp" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "Tilbud må godkjennes før det kan sendes" + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "Kan ikke sende tilbud: %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "Du har ikke tillatelse til å laste opp vedlegg til dette sitatet" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "Du har ikke tillatelse til å laste ned dette vedlegget" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "Du har ikke tillatelse til å be om godkjenning for dette tilbudet" + +#~ msgid "This quote does not require approval" +#~ msgstr "Dette tilbudet krever ikke godkjenning" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "Kan ikke be om godkjenning: %(error)s" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Kunne ikke be om godkjenning på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." + +#~ msgid "Approval requested successfully" +#~ msgstr "Godkjenning ble forespurt" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Dette sitatet venter ikke på godkjenning" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "Kan ikke godkjenne sitat: %(error)s" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke godkjenne tilbudet på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." + +#~ msgid "Quote approved successfully" +#~ msgstr "Sitat godkjent" + +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "Kan ikke avvise sitat: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "" +#~ msgid "Quote approval rejected" +#~ msgstr "Sitatgodkjenning avvist" -#: app/templates/admin/ldap_setup_wizard.html:190 -#, fuzzy -msgid "AUTH_METHOD" -msgstr "Auth metode" +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke opprette mal på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:193 -#, fuzzy -msgid "LDAP only" -msgstr "Kun aktiv" +#~ msgid "Template created successfully" +#~ msgstr "Malen ble opprettet" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "" +#~ msgid "Quote ID is required" +#~ msgstr "" -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "Use \"All\" only if you also configure local and OIDC sign-in; AUTH_METHOD=all enables every method." -msgstr "" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "Du har ikke tillatelse til å lage en mal fra dette sitatet" -#: app/templates/admin/ldap_setup_wizard.html:204 -#, fuzzy -msgid "Step 5: Test and generate configuration" -msgstr "Test konfigurasjon" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke lagre malen på grunn av" +#~ " en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "Test the service bind and user search, then generate .env snippets to copy into your deployment." -msgstr "" +#~ msgid "Template saved successfully" +#~ msgstr "Malen ble lagret" -#: app/templates/admin/ldap_setup_wizard.html:214 -#, fuzzy -msgid "Test connection" -msgstr "Test konfigurasjon" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "Du har ikke tillatelse til å eksportere dette tilbudet" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "Generate environment variable lines for your .env file or Docker Compose." -msgstr "" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Feil ved generering av PDF: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:225 -#, fuzzy -msgid "Generate configuration" -msgstr "Test konfigurasjon" - -#: app/templates/admin/ldap_setup_wizard.html:230 -#, fuzzy -msgid "Environment variables (.env)" -msgstr "Referanse til miljøvariabler" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "" +#~ msgid "Recipient email address is required" +#~ msgstr "Mottakerens e-postadresse kreves" -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Sitat sendt til %(email)s" -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "Add these variables to your environment or Compose file, restart the application, then confirm under Settings → LDAP." -msgstr "" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "Kunne ikke sende tilbud: %(error)s" -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Tidligere" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Neste" - -#: app/templates/admin/modules.html:39 -#, fuzzy -msgid "Feature Module Load Status" -msgstr "Funksjonsbruksstatistikk" - -#: app/templates/admin/modules.html:41 -msgid "This reflects which optional feature modules successfully loaded when the server started." -msgstr "" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Feil ved sending av e-post: %(error)s" -#: app/templates/admin/modules.html:45 -#, fuzzy -msgid "Optional loaded:" -msgstr "Valgfri kupongkode" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "Du har ikke tillatelse til å duplisere dette sitatet" -#: app/templates/admin/modules.html:47 -#, fuzzy -msgid "Attention needed" -msgstr "Oppmerksomhet kreves" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke duplisere tilbud på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/modules.html:56 -#, fuzzy -msgid "Module" -msgstr "Mobil" +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kunne ikke fullføre duplisert tilbud på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "" +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "Sitat %(quote_number)s opprettet som duplikat" -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 app/templates/issues/edit.html:37 -#: app/templates/issues/list.html:36 app/templates/issues/list.html:96 -#: app/templates/issues/list.html:113 app/templates/issues/view.html:95 -#: app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Status" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Detaljer" - -#: app/templates/admin/modules.html:70 -#, fuzzy -msgid "Loaded" -msgstr "Last inn mer" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Mislyktes" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "" +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Velg en handling og minst ett sitat" -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "" +#~ msgid "Invalid quote IDs" +#~ msgstr "Ugyldige tilbuds-ID-er" -#: app/templates/admin/modules.html:103 -msgid "If set, all client selectors across the app will auto-select this client and prevent changes." -msgstr "" +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "Finner ingen sitater eller du har ikke tillatelse" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "" +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "Duplisert %(count)d sitat(er)" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "" +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "Kunne ikke duplisere %(count)d sitat(er)" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "" +#~ msgid "Error duplicating quotes" +#~ msgstr "Feil ved duplisering av sitater" -#: app/templates/admin/modules.html:122 -msgid "Disable modules to hide them from all users. Disabled modules will not appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are always enabled and cannot be disabled." -msgstr "" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "Merket %(count)d sitat(er) som sendt" -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "" +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "Kunne ikke merke %(count)d sitat(er) som sendt" -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "" +#~ msgid "Error updating quotes" +#~ msgstr "Feil under oppdatering av sitater" -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "Slettet %(count)d sitat(er)" -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "" +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "Kunne ikke slette %(count)d sitat(er) (kan være i bruk)" -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "" +#~ msgid "Error deleting quotes" +#~ msgstr "Feil ved sletting av sitater" -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "" +#~ msgid "Invalid action" +#~ msgstr "Ugyldig handling" -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Alle kategorier" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Prosjektledelse" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "" +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "" -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "" -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "Navn, prosjekt, klient, frekvens og neste kjøringsdato er påkrevd" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Aktivert" +#~ msgid "Invalid next run date format" +#~ msgstr "Ugyldig format for neste kjøringsdato" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Funksjonshemmet" +#~ msgid "Invalid end date format" +#~ msgstr "Ugyldig sluttdatoformat" -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "" +#~ msgid "Selected project or client not found" +#~ msgstr "Det valgte prosjektet eller klienten ble ikke funnet" -#: app/templates/admin/modules.html:301 -msgid "Disabling \"Reports\" hides the whole Reports submenu including Report Builder and Scheduled Reports." -msgstr "" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kunne ikke opprette gjentakende faktura " +#~ "på grunn av en databasefeil. Vennligst" +#~ " sjekk serverloggene." -#: app/templates/admin/modules.html:305 app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Lagre endringer" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "Du har ikke tillatelse til å se denne gjentakende fakturaen" -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Note" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "Du har ikke tillatelse til å redigere denne gjentakende fakturaen" -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere gjentakende faktura " +#~ "på grunn av en databasefeil. Vennligst" +#~ " sjekk serverloggene." -#: app/templates/admin/modules.html:323 -msgid "Core modules cannot be disabled as they are required for the application to function." -msgstr "" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Gjentakende faktura er oppdatert" -#: app/templates/admin/modules.html:324 -msgid "Disabling a module affects all users system-wide. Disabled modules will not appear in the navigation sidebar." -msgstr "" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "Du har ikke tillatelse til å slette denne gjentakende fakturaen" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Kunne ikke slette gjentakende faktura på" +#~ " grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "" +#~ msgid "Recurring task created successfully" +#~ msgstr "" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "" +#~ msgid "Start" +#~ msgstr "Start" -#: app/templates/admin/oidc_debug.html:4 app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "OIDC Debug Dashboard" - -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "Inspiser konfigurasjon, leverandørmetadata og OIDC-brukere" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "" +#~ msgid "End" +#~ msgstr "Slutt" -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Test konfigurasjon" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "OIDC-konfigurasjon" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Auth metode" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Utsteder" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "Ikke konfigurert" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "Klient-ID" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Klienthemmelighet" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Sett" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "Ikke satt" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "Omdiriger URI" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Autogenerert" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Omfang" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Krav kartlegging" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Brukernavnkrav" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "E-postkrav" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Fullt navnekrav" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Gruppekrav" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Administrasjonsgruppe" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "Administrator e-poster" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI etter utlogging" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Leverandørmetadata" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Feil ved innlasting av metadata:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Oppdagelsesendepunkt:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Vellykket lastet leverandørmetadata" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Endepunkter" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Autorisasjon" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Token" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Brukerinfo" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Avslutt økten" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Støttede funksjoner" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Svartyper" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Tilskuddstyper" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Auth-metoder" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Krav" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "Leverandørmetadata er ikke lastet inn. Klikk \"Test konfigurasjon\" for å hente." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "E-post" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Fullt navn" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Rolle" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Siste pålogging" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "OIDC-emne" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Inaktiv" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Aldri" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Ingen brukere har logget på via OIDC ennå." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Referanse til miljøvariabler" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Konfigurer OIDC ved å bruke disse miljøvariablene:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Variabel" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 app/templates/deals/activity_form.html:54 -#: app/templates/deals/form.html:97 app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 app/templates/issues/edit.html:30 -#: app/templates/issues/new.html:30 app/templates/issues/view.html:31 -#: app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 app/templates/projects/create.html:283 -#: app/templates/projects/edit.html:48 app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Beskrivelse" - -#: app/templates/admin/oidc_debug.html:180 app/templates/user/settings.html:297 -msgid "Example" -msgstr "Eksempel" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Autentiseringsmetode" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "OIDC-leverandørens utsteder-URL" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "Klient-ID fra OIDC-leverandør" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Klienthemmelighet fra OIDC-leverandør" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "Tilbakeringings-URL (valgfritt, automatisk generert)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Forespurte omfang" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Krav som inneholder brukernavn" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Krav som inneholder e-post" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Påstand som inneholder fullt navn" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Krav som inneholder grupper" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Gruppenavn for administratorrolle (valgfritt)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "Kommaseparerte admin-e-poster (valgfritt)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "" +#~ msgid "Task" +#~ msgstr "Oppgave" -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "" +#~ msgid "Notes" +#~ msgstr "Notater" -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "" +#~ msgid "Billed" +#~ msgstr "Fakturerbar" -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "" +#~ msgid "Client" +#~ msgstr "Klient" -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "" +#~ msgid "User" +#~ msgstr "Bruker" -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "The base URL of your OIDC provider (e.g., https://auth.example.com or https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" +#~ msgid "Yes" +#~ msgstr "Ja" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "" +#~ msgid "No" +#~ msgstr "Ingen" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "" +#~ msgid "You do not have permission to access this page." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "Kunne ikke slette filteret på grunn av en databasefeil" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Autentiseringsmetode" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "" +#~ msgid "Please fill in all required fields." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "" +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "" +#~ msgid "Scheduled report created successfully." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "Choose whether to allow only OIDC login or both OIDC and local password authentication" -msgstr "" +#~ msgid "Permission denied" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "Click \"Test Connection\" to verify DNS resolution and metadata endpoint accessibility." -msgstr "" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "" +#~ msgid "Saved report view not found" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere innstillingene på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "" +#~ "Oppsettet er fullført! Takk for at " +#~ "du hjelper oss med å forbedre " +#~ "TimeTracker." -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" +#~ msgid "Project and task name are required" +#~ msgstr "Prosjekt- og oppgavenavn er påkrevd" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "URL to redirect to after logout (optional, only if your provider supports end_session_endpoint)" -msgstr "" +#~ msgid "Selected project does not exist" +#~ msgstr "Det valgte prosjektet eksisterer ikke" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "" +#~ msgid "Task not found" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "Click \"Generate Configuration\" to create environment variable configuration." -msgstr "" +#~ msgid "You do not have access to this task" +#~ msgstr "Du har ikke tilgang til denne oppgaven" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "" +#~ msgid "You can only edit tasks you created" +#~ msgstr "Du kan bare redigere oppgaver du har opprettet" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "" +#~ msgid "Task name is required" +#~ msgstr "Oppgavenavn er obligatorisk" -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "Copy the configuration above and add it to your environment variables or Docker Compose file, then restart the application." -msgstr "" +#~ msgid "Project is required" +#~ msgstr "Prosjekt er påkrevd" -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "OIDC-brukerdetaljer" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Profil og OIDC-identitet for denne brukeren" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Tilbake til OIDC Debug" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Brukerprofil" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Aktiv" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Foretrukket språk" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Opprettet kl" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "OAIDC-informasjon" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "OIDC-utsteder" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "OIDC-emne (under)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Lokalt" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "This user was created or linked via OIDC. The issuer and subject are used to uniquely identify the user across login sessions." -msgstr "Denne brukeren ble opprettet eller koblet til via OIDC. Utstederen og emnet brukes til å identifisere brukeren unikt på tvers av påloggingsøkter." - -#: app/templates/admin/oidc_user_detail.html:49 -msgid "This user has no OIDC information. They may have been created manually or via self-registration without OIDC." -msgstr "Denne brukeren har ingen OIDC-informasjon. De kan ha blitt opprettet manuelt eller via egenregistrering uten OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Aktivitetsstatistikk" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Tidsoppføringer" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Ingen" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Aktiv timer" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Oppgaver opprettet" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Rediger bruker" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Vis alle brukere" - -#: app/templates/admin/pdf_layout.html:3 -#, fuzzy -msgid "PDF Invoice Designer" -msgstr "PDF-sitatdesigner" - -#: app/templates/admin/pdf_layout.html:1649 -#, fuzzy -msgid "Visual Invoice Designer" -msgstr "Visual Quote Designer" - -#: app/templates/admin/pdf_layout.html:1652 -#, fuzzy -msgid "Drag and drop elements to design your invoice layout" -msgstr "Dra og slipp elementer for å designe tilbudsoppsettet ditt" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Slik bruker du:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "Click elements from the left sidebar to add them to the canvas. Click elements to select and customize them in the properties panel. Use the alignment tools and keyboard shortcuts for faster editing." -msgstr "Klikk på elementer fra venstre sidefelt for å legge dem til på lerretet. Klikk på elementer for å velge og tilpasse dem i egenskapspanelet. Bruk justeringsverktøyene og hurtigtastene for raskere redigering." - -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Tastatursnarveier:" - -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere status på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/pdf_layout.html:1679 -#, fuzzy -msgid "Items Table:" -msgstr "Sitat elementer Tabell" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke oppdatere oppgaven på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/pdf_layout.html:1679 -msgid "Displays time entries, extra goods, and expenses. Add from Invoice Data in the sidebar. Uses" -msgstr "" +#~ msgid "You do not have permission to update this task" +#~ msgstr "Du har ikke tillatelse til å oppdatere denne oppgaven" -#: app/templates/admin/pdf_layout.html:1680 -#, fuzzy -msgid "Expenses Table:" -msgstr "Utgifter Delsum" +#~ msgid "You can only update tasks you created" +#~ msgstr "Du kan bare oppdatere oppgaver du har opprettet" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "You can only assign tasks you created" +#~ msgstr "Du kan bare tildele oppgaver du har opprettet" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -#, fuzzy -msgid "Saving:" -msgstr "Lagrer..." +#~ msgid "Selected user does not exist" +#~ msgstr "Den valgte brukeren eksisterer ikke" -#: app/templates/admin/pdf_layout.html:1681 -msgid "Click \"Save Design\" to persist. If tables disappear after save, try Reset to restore defaults, then re-add tables." -msgstr "" +#~ msgid "Task unassigned" +#~ msgstr "Oppgaven er ikke tilordnet" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "" +#~ msgid "You can only delete tasks you created" +#~ msgstr "Du kan bare slette oppgaver du har opprettet" -#: app/templates/admin/pdf_layout.html:1682 -msgid "Use \"Generate Preview\" to see how the PDF will look with real invoice data." -msgstr "" +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "Kan ikke slette oppgave med eksisterende tidsoppføringer" -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "See" -msgstr "Sett" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -#, fuzzy -msgid "for full documentation." -msgstr "Dokumentasjon" - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Klart lerret" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Generer forhåndsvisning" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Lagre design" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Se kode" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "" +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette oppgaven på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "" +#~ msgid "No tasks selected for deletion" +#~ msgstr "Ingen oppgaver valgt for sletting" -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Fest til rutenett (10px)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Verktøykasse" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Søkeelementer og variabler..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Elementer" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "Variabler" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Grunnleggende elementer" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Egendefinert tekst" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Tekst" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Overskrift" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Linje" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Rektangel" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Sirkel" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Bedriftsinformasjon" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Firmalogo" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "Firmanavn" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Firmadetaljer" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "Adresse" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Telefon" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Nettsted" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "Skatte-ID" - -#: app/templates/admin/pdf_layout.html:1813 -#, fuzzy -msgid "Invoice Data" -msgstr "Fakturadetaljer" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Fakturanummer" - -#: app/templates/admin/pdf_layout.html:1820 -#, fuzzy -msgid "Invoice Date" -msgstr "Fakturert" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Forfallsdato" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Kundeinformasjon" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Kundens navn" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Kundeadresse" - -#: app/templates/admin/pdf_layout.html:1844 -#, fuzzy -msgid "Items Table" -msgstr "Sitat elementer Tabell" - -#: app/templates/admin/pdf_layout.html:1848 -#, fuzzy -msgid "Expenses Table" -msgstr "Utgifter Delsum" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Delsum" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Avgift" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 app/templates/quotes/pdf_default.html:98 -#: app/utils/pdf_generator.py:1157 app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Totalt beløp" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Vilkår" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "Betaling og prosjekt" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Betalingsdato" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Betalingsmåte" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Betalingsstatus" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Innbetalt beløp" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Prosjektnavn" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "Kundens e-post" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Kundetelefon" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "QR-kode" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Strekkode" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Sidetall" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Gjeldende dato" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Vannmerke" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Bankinfo" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Valuta" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "" +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette oppgaver på grunn " +#~ "av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/pdf_layout.html:1948 -#, fuzzy -msgid "Invoice Fields" -msgstr "Fakturavarer" - -#: app/templates/admin/pdf_layout.html:1951 -#, fuzzy -msgid "Invoice number" -msgstr "Fakturanummer" - -#: app/templates/admin/pdf_layout.html:1955 -#, fuzzy -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Sitatstatus (utkast/sendt/betalt/forfalt)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Utstedelsesdato" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Forfallsdato" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Subtotalt beløp" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Skattesats (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Skattebeløp" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Totalt beløp" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Valutakode (EUR, USD osv.)" - -#: app/templates/admin/pdf_layout.html:1987 -#, fuzzy -msgid "Invoice notes" -msgstr "Fakturavarer" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Vilkår og betingelser" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Klientfelt" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Kundens firmanavn" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "Klientens e-postadresse" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "Klientens fulle adresse" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Kundekontaktperson" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Kundens telefonnummer" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Betalingsfelt" - -#: app/templates/admin/pdf_layout.html:2023 -#, fuzzy -msgid "Payment status" -msgstr "Betalingsstatus" - -#: app/templates/admin/pdf_layout.html:2027 -#, fuzzy -msgid "Payment date" -msgstr "Betalingsdato" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Betalingsmåte" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Betalingsreferansenummer" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Innbetalt beløp" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Utestående beløp" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Betalingsanmerkninger" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Prosjektfelt" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Prosjektnavn" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "Prosjektkode" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Prosjektbeskrivelse" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Prosjektfaktureringsreferanse" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Felt for bedrift/innstillinger" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "Firmanavnet ditt" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "Din bedriftsadresse" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "Din bedrifts e-post" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Firmatelefonen din" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Din bedrifts nettside" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "Skatte-ID-nummeret ditt" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "Din bankkontoinformasjon" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Standard fakturavilkår" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Standard fakturanotater" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Dato/klokkeslett-felt" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "Gjeldende dato" - -#: app/templates/admin/pdf_layout.html:2119 -#, fuzzy -msgid "Invoice creation date" -msgstr "Dato for opprettelse av tilbud" - -#: app/templates/admin/pdf_layout.html:2123 -#, fuzzy -msgid "Invoice last update date" -msgstr "Sitat siste oppdateringsdato" - -#: app/templates/admin/pdf_layout.html:2128 -#, fuzzy -msgid "Invoice Items Loop" -msgstr "Fakturavarer" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "" +#~ msgid "No tasks selected" +#~ msgstr "Ingen oppgaver er valgt" -#: app/templates/admin/pdf_layout.html:2135 -#, fuzzy -msgid "Time-based items only" -msgstr "Tidsbaserte tjenester og timearbeid" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Varebeskrivelse" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Vare mengde" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Vare enhetspris" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Vare totalbeløp" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Sluttløkke" - -#: app/templates/admin/pdf_layout.html:2159 -#, fuzzy -msgid "Extra Goods Loop" -msgstr "Ekstra varer" - -#: app/templates/admin/pdf_layout.html:2162 -#, fuzzy -msgid "Loop through extra goods only" -msgstr "Prosjekt Ekstra varer" - -#: app/templates/admin/pdf_layout.html:2166 -#, fuzzy -msgid "Good name" -msgstr "Rollenavn" - -#: app/templates/admin/pdf_layout.html:2170 -#, fuzzy -msgid "Good total amount" -msgstr "Totalt beløp" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Design Canvas" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Sidestørrelse:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Zoom inn" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Zoom ut" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Slett valgte" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Egenskaper" - -#: app/templates/admin/pdf_layout.html:2235 -#, fuzzy -msgid "Warnings" -msgstr "Advarsel" - -#: app/templates/admin/pdf_layout.html:2237 -#, fuzzy -msgid "Refresh warnings" -msgstr "Oppdater siden" - -#: app/templates/admin/pdf_layout.html:2242 -#, fuzzy -msgid "No warnings" -msgstr "Advarsel" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "Kunne ikke oppdatere oppgaver på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Datoformat" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Due date is required" +#~ msgstr "Utgiftsdato er påkrevd" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Velg et element for å redigere egenskapene" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "PDF forhåndsvisning" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Ugyldig datoformat" -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "" +#~ msgid "Database error" +#~ msgstr "Databasestøtte" -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "Duplisert %(count)d sitat(er)" -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "" +#~ msgid "No tasks updated" +#~ msgstr "Ingen oppgaver funnet" -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "Vellykket oppdatert %(count)d utgift(er) til %(status)s" -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "Hoppet over %(count)d utgift(er) (ingen tillatelse)" -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "" +#~ msgid "Invalid priority value" +#~ msgstr "Ugyldig prioritetsverdi" -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "" +#~ msgid "No user selected for assignment" +#~ msgstr "Ingen bruker valgt for tildeling" -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "" +#~ msgid "Invalid user selected" +#~ msgstr "Ugyldig bruker er valgt" -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "Kunne ikke tilordne oppgaver på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "" +#~ msgid "No project selected" +#~ msgstr "Ingen prosjekter er valgt" -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "" +#~ msgid "Invalid project selected" +#~ msgstr "Ugyldig prosjekt er valgt" -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "Kunne ikke flytte oppgaver på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "Bare administratorer kan se alle forfalte oppgaver" -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Generert kode" +#~ msgid "You don't have access to this channel" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "" +#~ msgid "Message cannot be empty" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "" +#~ msgid "Invalid message" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "" +#~ msgid "No attachment found" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "" +#~ msgid "Invalid filename" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "" +#~ msgid "Server error: Could not save file" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "" +#~ msgid "User is not active" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "Vil du slette alle elementene?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Klar" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "" +#~ msgid "Time entry approved" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "" +#~ msgid "Time entry rejected" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "Changing page size will reload the preview with the template for that size. Continue?" -msgstr "" +#~ msgid "Approval requested" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "Preview functionality is currently unavailable. Please check the browser console for errors." -msgstr "" +#~ msgid "Approval cancelled" +#~ msgstr "" -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "Tilbakestille til standard?" +#~ msgid "Could not create template due to a database error" +#~ msgstr "Kunne ikke opprette mal på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "Tilbakestill PDF-oppsett" +#~ msgid "Could not update template due to a database error" +#~ msgstr "Kunne ikke oppdatere malen på grunn av en databasefeil" -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "Kunne ikke slette malen på grunn av en databasefeil" -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "PDF-sitatdesigner" +#~ msgid "Either a project or a client is required" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Visual Quote Designer" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "Kan ikke starte tidtaker for et " +#~ "arkivert prosjekt. Vennligst deaktiver " +#~ "prosjektet først." -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Dra og slipp elementer for å designe tilbudsoppsettet ditt" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "Kan ikke starte tidtaker for et inaktivt prosjekt" -#: app/templates/admin/quote_pdf_layout.html:1487 -#, fuzzy -msgid "Help: Quote Items Table & Saving" -msgstr "Sitat elementer Tabell" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "Den valgte oppgaven er ugyldig for det valgte prosjektet" -#: app/templates/admin/quote_pdf_layout.html:1490 -#, fuzzy -msgid "Quote Items Table:" -msgstr "Sitat elementer Tabell" +#~ msgid "Invalid client selected" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Click \"Save Design\" to persist. If the table disappears after save, try Reset to restore defaults, then re-add the Items Table." -msgstr "" +#~ msgid "You do not have access to this project" +#~ msgstr "Du har ikke tilgang til dette prosjektet." -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" +#~ msgid "You do not have access to this client" +#~ msgstr "Du har ikke tilgang til denne oppgaven" -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Sitat data" +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "Du har allerede en aktiv timer. Stopp det før du starter en ny." -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Sitat nummer" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke starte tidtakeren på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Sitat dato" +#~ msgid "Unknown" +#~ msgstr "Ukjent" -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Sitat elementer Tabell" +#~ msgid "Timer started" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Sitatfelt" +#~ msgid "Template must have a project to start a timer" +#~ msgstr "Malen må ha et prosjekt for å starte en tidtaker" -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Sitat nummer" +#~ msgid "Cannot start timer for this project" +#~ msgstr "Kan ikke starte tidtakeren for dette prosjektet" -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Sitatstatus (utkast/sendt/betalt/forfalt)" +#~ msgid "No active timer to stop" +#~ msgstr "Ingen aktiv timer for å stoppe" -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Sitat notater" +#~ msgid "No project" +#~ msgstr "Ikke noe prosjekt" -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Sitatstatus" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Sitat akseptert dato" +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Dato for opprettelse av tilbud" +#~ msgid "No active timer to pause" +#~ msgstr "Ingen aktiv timer for å stoppe" -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Sitat siste oppdateringsdato" +#~ msgid "Timer paused" +#~ msgstr "Timeren stoppet" -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Sitat elementer Loop" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Gå gjennom fakturaelementer" +#~ msgid "No active timer to resume" +#~ msgstr "Ingen aktiv timer for å stoppe" -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Venstrejuster" +#~ msgid "Timer resumed" +#~ msgstr "" -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Sentrer horisontalt" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Høyrejuster" +#~ msgid "No active timer to adjust" +#~ msgstr "Ingen aktiv timer for å stoppe" -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Juster toppen" +#~ msgid "Invalid adjustment value" +#~ msgstr "Ugyldig statusverdi" -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Sentrer vertikalt" +#~ msgid "You can only edit your own timers" +#~ msgstr "Du kan bare redigere dine egne tidtakere" -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Juster bunnen" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Ugyldig oppgave valgt for det valgte prosjektet" -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "" +#~ msgid "Start time cannot be in the future" +#~ msgstr "Starttidspunkt kan ikke være i fremtiden" -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "" +#~ msgid "Invalid start date/time format" +#~ msgstr "Ugyldig startdato/tidsformat" -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "" +#~ msgid "End time must be after start time" +#~ msgstr "Slutttidspunktet må være etter starttidspunktet" -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "Ugyldig format for sluttdato/tidspunkt" -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "E-postadresse" +#~ msgid "Timer updated successfully" +#~ msgstr "Tidtakeren er oppdatert" -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "" +#~ msgid "You can only delete your own timers" +#~ msgstr "Du kan bare slette dine egne tidtakere" -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "" +#~ msgid "Cannot delete an active timer" +#~ msgstr "Kan ikke slette en aktiv tidtaker" -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke slette tidtakeren på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "" +#~ msgid "No time entries selected" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "" +#~ msgid "Invalid date/time format" +#~ msgstr "Ugyldig dato/klokkeslett-format" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/templates/admin/settings.html:117 -#, fuzzy -msgid "Time Entry Requirements" -msgstr "Tidsregistreringsmaler" +#~ msgid "All fields are required" +#~ msgstr "Alle felt er obligatoriske" -#: app/templates/admin/settings.html:119 -msgid "Optionally require users to provide task and description when logging worked time. Enforced across web, mobile, and desktop." -msgstr "" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "Kan ikke opprette tidsoppføringer for et" +#~ " arkivert prosjekt. Vennligst deaktiver " +#~ "prosjektet først." -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "Kan ikke opprette tidsoppføringer for et inaktivt prosjekt" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "" +#~ msgid "Invalid task selected" +#~ msgstr "Ugyldig oppgave er valgt" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "" +#~ msgid "End date must be after or equal to start date" +#~ msgstr "Sluttdatoen må være etter eller lik startdatoen" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "Datoperioden kan ikke overstige 31 dager" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "" +#~ msgid "Invalid time format" +#~ msgstr "Ugyldig tidsformat" -#: app/templates/admin/settings.html:138 -msgid "Used as the standard hours per day for overtime calculation when new users are created. Existing users keep their own setting." -msgstr "" +#~ msgid "No valid dates found in the selected range" +#~ msgstr "Ingen gyldige datoer funnet i det valgte området" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Kunne ikke opprette masseoppføringer på " +#~ "grunn av en databasefeil. Vennligst " +#~ "sjekk serverloggene." -#: app/templates/admin/settings.html:161 -msgid "Remove donate and support prompts for all users with a one-time key (€25, one key per instance)." -msgstr "" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "" +#~ "Det oppsto en feil under oppretting " +#~ "av masseoppføringer. Vennligst prøv igjen." -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "" +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Du kan bare duplisere dine egne tidtakere" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "Buy key" -msgstr "Nøkkel" +#~ msgid "You can only resume your own timers" +#~ msgstr "Du kan bare gjenoppta dine egne tidtakere" -#: app/templates/admin/settings.html:165 -#, fuzzy -msgid "— key sent by email." -msgstr "Send e-post" +#~ msgid "Project no longer exists" +#~ msgstr "Prosjektet eksisterer ikke lenger" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "" +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -#, fuzzy -msgid "Get key" -msgstr "Nøkkel" +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Kunne ikke gjenoppta tidtakeren på grunn" +#~ " av en databasefeil. Vennligst sjekk " +#~ "serverloggene." -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "" +#~ msgid "Resumed timer" +#~ msgstr "" -#: app/templates/admin/settings.html:189 -msgid "Supporter instance: prompts are minimized; support entry points remain available." -msgstr "" +#~ msgid "Invalid paid status" +#~ msgstr "" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "" +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" -#: app/templates/admin/settings.html:196 -#, fuzzy -msgid "Enter code from email" -msgstr "Kode, navn, e-post" +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "" +#~ msgid "paid" +#~ msgstr "" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Firma merkevarebygging" +#~ msgid "unpaid" +#~ msgstr "" -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Fakturastandarder" +#~ msgid "Invalid timezone selected" +#~ msgstr "Ugyldig tidssone er valgt" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Innstillinger for sikkerhetskopiering" +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "Standard timer per dag må være mellom 0,5 og 24" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "" +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "Standard timer per dag må være mellom 0,5 og 24" -#: app/templates/admin/settings.html:408 -msgid "LDAP authentication is configured with environment variables. Values below are read-only." -msgstr "" +#~ msgid "Settings saved successfully" +#~ msgstr "Innstillingene er lagret" -#: app/templates/admin/settings.html:412 -#, fuzzy -msgid "Enabled for auth" -msgstr "Aktivert" - -#: app/templates/admin/settings.html:416 -#, fuzzy -msgid "Host" -msgstr "Tapt" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -#, fuzzy -msgid "SSL" -msgstr "Bruk SSL" - -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -#, fuzzy -msgid "TLS" -msgstr "Bruk TLS" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "på" - -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#, fuzzy -msgid "off" -msgstr "av" - -#: app/templates/admin/settings.html:429 -#, fuzzy -msgid "User DN" -msgstr "Brukermeny" - -#: app/templates/admin/settings.html:433 -#, fuzzy -msgid "User login attribute" -msgstr "Raskere lastetider" - -#: app/templates/admin/settings.html:447 -#, fuzzy -msgid "Test LDAP Connection" -msgstr "Vilkår og betingelser" - -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Eksportinnstillinger" - -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "" +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Feil ved lagring av innstillinger: %(error)s" -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "" +#~ msgid "This instance is already licensed." +#~ msgstr "" -#: app/templates/admin/settings.html:479 -msgid "Kiosk mode provides a simplified interface for warehouse operations with barcode scanning and time tracking. Access at" -msgstr "" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "Takk for at du valgte TimeTracker!" -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "" +#~ msgid "Error saving settings." +#~ msgstr "Feil under lagring av innstillinger" -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "" +#~ msgid "Preferences updated" +#~ msgstr "Preferansene er oppdatert" -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Innstilling" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Overføre" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Salg" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Utleie" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Kjøpe" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "" +#~ msgid "Language updated successfully" +#~ msgstr "Språket er oppdatert" -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "" +#~ msgid "Invalid language" +#~ msgstr "Ugyldig språk" -#: app/templates/admin/settings.html:518 -msgid "Configure the shared server-side AI helper for the web app, desktop app, and API clients. Hosted provider keys stay on the server." -msgstr "" +#~ msgid "Language updated to %(language)s" +#~ msgstr "Språket er oppdatert til %(language)s" -#: app/templates/admin/settings.html:522 -#, fuzzy -msgid "Availability" -msgstr "Tilgjengelig" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "Use environment default" -msgstr "Fakturastandarder" - -#: app/templates/admin/settings.html:524 -#, fuzzy -msgid "currently" -msgstr "Valuta" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "" +#~ msgid "Webhook name is required" +#~ msgstr "Webhook-navn er påkrevd" -#: app/templates/admin/settings.html:537 -#, fuzzy -msgid "Base URL" -msgstr "Bilde-URL" +#~ msgid "Webhook URL is required" +#~ msgstr "Webhook URL er nødvendig" -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "" +#~ msgid "At least one event must be selected" +#~ msgstr "Minst én hendelse må velges" -#: app/templates/admin/settings.html:542 -#, fuzzy -msgid "Model" -msgstr "Kode" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook opprettet" -#: app/templates/admin/settings.html:546 -#, fuzzy -msgid "Hosted API key" -msgstr "Opprett API-token" +#~ msgid "Error creating webhook" +#~ msgstr "Feil ved opprettelse av webhook" -#: app/templates/admin/settings.html:547 -#, fuzzy -msgid "Stored; leave blank to keep" -msgstr "La feltet stå tomt for å beholde gjeldende passord" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "Feil ved opprettelse av webhook: %(error)s" -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook ble oppdatert" -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "Feil ved oppdatering av webhook: %(error)s" -#: app/templates/admin/settings.html:557 -#, fuzzy -msgid "Timeout seconds" -msgstr "Tidsavbrudd (sekunder)" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook ble slettet" -#: app/templates/admin/settings.html:561 -#, fuzzy -msgid "Context limit" -msgstr "Innholdstype" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "Feil ved sletting av webhook: %(error)s" -#: app/templates/admin/settings.html:566 -#, fuzzy -msgid "System prompt" -msgstr "Systemrolle" +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Vennligst skriv inn en gyldig måltid (større enn 0)" -#: app/templates/admin/settings.html:571 -#, fuzzy -msgid "Test AI connection" -msgstr "Vilkår og betingelser" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "Det finnes allerede et mål for " +#~ "denne uken. Rediger det eksisterende " +#~ "målet i stedet." -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Personvern og analyse" +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Ukentlig tidsmål opprettet med suksess!" -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Lagre innstillinger" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "Klarte ikke å lage mål. Vennligst prøv igjen." -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Last opp ny logo" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "Du har ikke tillatelse til å se dette målet" -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Forhåndsvisning av logo" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "Du har ikke tillatelse til å redigere dette målet" -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "Er du sikker på at du vil fjerne firmalogoen?" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Ukentlig tidsmål er oppdatert!" -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Fjern logo" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "Kunne ikke oppdatere målet. Vennligst prøv igjen." -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "Du har ikke tillatelse til å slette dette målet" -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Ukentlig tidsmål er slettet" -#: app/templates/admin/settings.html:760 -msgid "Success. Donate UI is now hidden for everyone. Reload the page to see the change." -msgstr "" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "Kunne ikke slette målet. Vennligst prøv igjen." -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -#, fuzzy -msgid "Request failed." -msgstr "Be om godkjenning" +#~ msgid "Workflow created successfully" +#~ msgstr "" -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -#, fuzzy -msgid "Testing connection..." -msgstr "Test konfigurasjon" +#~ msgid "Task Status Changes" +#~ msgstr "" -#: app/templates/admin/settings.html:831 -#, fuzzy -msgid "Connection failed." -msgstr "Operasjonen mislyktes" +#~ msgid "Task Created" +#~ msgstr "" -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "" +#~ msgid "Task Completed" +#~ msgstr "" -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -#, fuzzy -msgid "AI connection failed." -msgstr "Operasjonen mislyktes" +#~ msgid "Time Logged" +#~ msgstr "" -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Dashboard for telemetri og analyse" +#~ msgid "Deadline Approaching" +#~ msgstr "" -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Admin → Innstillinger" +#~ msgid "Budget Threshold Reached" +#~ msgstr "" -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "" +#~ msgid "Invoice Created" +#~ msgstr "" -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "La feltet stå tomt for å beholde gjeldende passord" +#~ msgid "Invoice Paid" +#~ msgstr "" -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Klientportaltilgang" +#~ msgid "Log Time Entry" +#~ msgstr "" -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "" +#~ msgid "Send Notification" +#~ msgstr "" -#: app/templates/admin/user_form.html:112 -#, fuzzy -msgid "Assigned clients" -msgstr "Tildelt til" +#~ msgid "Update Status" +#~ msgstr "Oppdater status" -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "" +#~ msgid "Assign Task" +#~ msgstr "" -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Administratortilgang" +#~ msgid "Create Task" +#~ msgstr "Opprett oppgave" -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Migrere til nytt rollesystem" +#~ msgid "Update Project" +#~ msgstr "" -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Migrer" +#~ msgid "Send Email" +#~ msgstr "Send e-post" -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Roller" +#~ msgid "Trigger Webhook" +#~ msgstr "" -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "Ingen brukere funnet." +#~ msgid "Workflow updated successfully" +#~ msgstr "" -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "Cannot delete user \"{name}\" because they have {count} time entries. Users with existing time entries cannot be deleted." -msgstr "Kan ikke slette brukeren «{name}» fordi de har {count} tidsoppføringer. Brukere med eksisterende tidsregistreringer kan ikke slettes." +#~ msgid "Workflow deleted successfully" +#~ msgstr "" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "Kan ikke slette bruker" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "Are you sure you want to delete user \"{name}\"? This action cannot be undone." -msgstr "Er du sikker på at du vil slette brukeren \"{name}\"? Denne handlingen kan ikke angres." +#~ msgid "Timesheet period submitted" +#~ msgstr "" -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Slett bruker" +#~ msgid "Timesheet period approved" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "" +#~ msgid "Timesheet period rejected" +#~ msgstr "Velg Prosjekt" -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "" +#~ msgid "Only admins can close periods" +#~ msgstr "Bare administratorer kan avvise kilometerangivelser" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "" +#~ msgid "Timesheet period closed" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "" +#~ msgid "Timesheet policy updated" +#~ msgstr "WebSocket live-oppdateringer" -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" +#~ msgid "Name and code are required" +#~ msgstr "Navn og enhetspris kreves" -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "" +#~ msgid "Leave type created" +#~ msgstr "Klient opprettet" -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "" +#~ msgid "Leave type and date range are required" +#~ msgstr "Nøkkel og etikett kreves" -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "Unique identifier for this field (letters, numbers, and underscores only). Cannot be changed after creation." -msgstr "" +#~ msgid "Time-off request submitted" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Merkelapp" +#~ msgid "Time-off request approved" +#~ msgstr "Be om godkjenning" -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "" +#~ msgid "Time-off request rejected" +#~ msgstr "Sitat avvist" -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "" +#~ msgid "Name and date range are required" +#~ msgstr "Navn og enhetspris kreves" -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "" +#~ msgid "Holiday created" +#~ msgstr "Timepris" -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "" +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "" +#~ msgid "remaining" +#~ msgstr "gjenværende" -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "" +#~ msgid "Success" +#~ msgstr "Suksess" -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "" +#~ msgid "Error" +#~ msgstr "Feil" -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "" +#~ msgid "Warning" +#~ msgstr "Advarsel" -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "" +#~ msgid "Information" +#~ msgstr "Informasjon" -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "" +#~ msgid "Loading..." +#~ msgstr "Laster inn..." -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "" +#~ msgid "Saving..." +#~ msgstr "Lagrer..." -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Valgfri" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "" +#~ msgid "Deleting..." +#~ msgstr "Sletter ..." -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "" +#~ msgid "Cancel" +#~ msgstr "Kansellere" -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "Custom field definitions allow you to create global fields that can be used across all clients. This eliminates the need to recreate the same custom fields for each client." -msgstr "" +#~ msgid "Confirm" +#~ msgstr "Bekrefte" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "" +#~ msgid "Close" +#~ msgstr "Lukke" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" +#~ msgid "Save" +#~ msgstr "Spare" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" +#~ msgid "Delete" +#~ msgstr "Slett" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "" +#~ msgid "Edit" +#~ msgstr "Redigere" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" +#~ msgid "Add" +#~ msgstr "Legge til" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "" +#~ msgid "Remove" +#~ msgstr "Fjerne" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "Create a field definition with key \"debtor_number\" and label \"Debtor Number\"" -msgstr "" +#~ msgid "OK" +#~ msgstr "OK" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Er du sikker på at du vil slette dette?" -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "When creating or editing a client, this field will automatically appear" -msgstr "" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "Du har ulagrede endringer. Er du sikker på at du vil forlate?" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "Create a link template to make the value clickable (e.g., https://erp.example.com/customer/%value%)" -msgstr "" +#~ msgid "Operation failed" +#~ msgstr "Operasjonen mislyktes" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "Warning: %(count)d client(s) have a value for this custom field. Deleting this field definition will remove the field value from all %(count)d client(s). Are you sure you want to delete the custom field definition \"%(label)s\"?" -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "Operasjonen fullført" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" +#~ msgid "No items selected" +#~ msgstr "Ingen elementer er valgt" -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Angi som standard mal" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "HTML-mal" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Egendefinert melding" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Flere variabler" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Lag mal" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Tilgjengelige variabler" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Fakturavariabler" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Andre variabler" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -#, fuzzy -msgid "Send test email" -msgstr "Send test-e-post" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "Sends the saved template (save changes first). Uses the same rendering as a real invoice email. Default recipient can be set under Admin → Email Configuration." -msgstr "" +#~ msgid "Invalid input" +#~ msgstr "Ugyldig inndata" -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -#, fuzzy -msgid "Recipient" -msgstr "Mottakers e-post" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#, fuzzy -msgid "Invoice ID" -msgstr "Fakturert" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Oppdater mal" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -#, fuzzy -msgid "Failed to send test email." -msgstr "Send test-e-post" - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "Finner ingen e-postmaler." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "Lag din første e-postmal for å tilpasse e-postfakturaer." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "Lag e-postmal" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "Slett e-postmal" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "Er du sikker på at du vil slette" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Denne handlingen kan ikke angres." - -#: app/templates/admin/email_templates/view.html:22 -msgid "Uses the same rendering as a real invoice email. Set a default address under Admin → Email Configuration (Test recipient email)." -msgstr "" +#~ msgid "This field is required" +#~ msgstr "Dette feltet er obligatorisk" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Malinformasjon" +#~ msgid "No active timer" +#~ msgstr "Ingen aktiv timer" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "Timeren stoppet" -#: app/templates/admin/integrations/list.html:21 -msgid "Configure OAuth credentials for each integration. Global integrations are shared across all users." -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "Kunne ikke stoppe tidtakeren" -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "" +#~ msgid "Error stopping timer" +#~ msgstr "Feil ved stopp av tidtaker" -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "" +#~ msgid "No form to save" +#~ msgstr "Ingen skjema å lagre" -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "" +#~ msgid "No timer found" +#~ msgstr "Ingen tidtaker funnet" -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Timeren stoppet på grunn av inaktivitet" -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "" +#~ msgid "Please select either a project or a client" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "" +#~ msgid "Skip to content" +#~ msgstr "Gå til innhold" -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "" +#~ msgid "Main navigation" +#~ msgstr "Mobilnavigasjon" -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "" +#~ msgid "Navigation" +#~ msgstr "Navigasjon" -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "" +#~ msgid "Open command palette" +#~ msgstr "Kommandopalett" -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "" +#~ msgid "Commands" +#~ msgstr "Kommentarer" -#: app/templates/admin/integrations/setup.html:62 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow. The token will be generated automatically during connection." -msgstr "" +#~ msgid "Toggle sidebar" +#~ msgstr "Bytt sidefelt" -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "" +#~ msgid "Dashboard" +#~ msgstr "Dashbord" -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "" +#~ msgid "Timer" +#~ msgstr "Timer" -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" +#~ msgid "Time entries" +#~ msgstr "Tidsoppføringer" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "" +#~ msgid "Reports" +#~ msgstr "Rapporter" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID for single-tenant apps." -msgstr "" +#~ msgid "Calendar" +#~ msgstr "Kalender" -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "" +#~ msgid "Calendar View" +#~ msgstr "Kalendervisning" -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or your self-hosted GitLab URL." -msgstr "" +#~ msgid "Integrations" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "" +#~ msgid "Time Tracking" +#~ msgstr "Tidssporing" -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "Be om godkjenning" -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "" +#~ msgid "Project Templates" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "After you save these credentials, users can click \"Connect Google Calendar\"" -msgstr "" +#~ msgid "Gantt Chart" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "" +#~ msgid "Tasks" +#~ msgstr "Oppgaver" -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" +#~ msgid "Issues" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "" +#~ msgid "Kanban Board" +#~ msgstr "Kanban-styret" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "" +#~ msgid "Weekly Goals" +#~ msgstr "Ukentlige mål" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "" +#~ msgid "Workforce" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:174 -msgid "After you save the OAuth credentials above, users can connect their Google Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" +#~ msgid "Time Entry Templates" +#~ msgstr "Tidsregistreringsmaler" -#: app/templates/admin/integrations/setup.html:178 -msgid "They will be automatically redirected to Google to authorize access - no manual credential entry needed!" -msgstr "" +#~ msgid "CRM" +#~ msgstr "CRM" -#: app/templates/admin/integrations/setup.html:182 -msgid "Each user connects their own Google Calendar account (per-user integration)." -msgstr "" +#~ msgid "Clients" +#~ msgstr "Kunder" -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "" +#~ msgid "Contacts" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "" +#~ msgid "via Clients" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "" +#~ msgid "Deals" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "" +#~ msgid "Leads" +#~ msgstr "" -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "" +#~ msgid "Quotes" +#~ msgstr "Sitater" -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "" +#~ msgid "Finance & Expenses" +#~ msgstr "Økonomi og utgifter" -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "" +#~ msgid "All Reports" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "" +#~ msgid "Report Builder" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "" +#~ msgid "Saved Views" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "Planlagte rapporter" -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "" +#~ msgid "Invoices" +#~ msgstr "Fakturaer" -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "" +#~ msgid "Payment Gateways" +#~ msgstr "" -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "Gjentakende fakturaer" -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "URL with {value} or %value% placeholder. Examples: https://erp.example.com/customer/{value} or https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Payments" +#~ msgstr "Betalinger" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "" +#~ msgid "Expenses" +#~ msgstr "Utgifter" -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Ikon" +#~ msgid "Mileage" +#~ msgstr "Kilometerstand" -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "" +#~ msgid "Per Diem" +#~ msgstr "Per Diem" -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "" +#~ msgid "Budget Alerts" +#~ msgstr "Budsjettvarsler" -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "" +#~ msgid "Inventory" +#~ msgstr "Inventar" -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "" +#~ msgid "Stock Items" +#~ msgstr "Lagervarer" -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Navn" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "" +#~ msgid "Warehouses" +#~ msgstr "Varehus" -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "" +#~ msgid "Suppliers" +#~ msgstr "Leverandører" -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "" +#~ msgid "Purchase Orders" +#~ msgstr "Innkjøpsordrer" -#: app/templates/admin/link_templates/list.html:95 -msgid "Link templates allow you to create quick links to external systems (like ERP systems) using values from client custom fields." -msgstr "" +#~ msgid "Stock Levels" +#~ msgstr "Lagernivåer" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "" +#~ msgid "Stock Movements" +#~ msgstr "Aksjebevegelser" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "" +#~ msgid "Transfers" +#~ msgstr "Overføringer" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "" +#~ msgid "Adjustments" +#~ msgstr "Justeringer" -#: app/templates/admin/link_templates/list.html:101 -msgid "When viewing the client, a link will appear that opens the ERP system with the correct customer ID" -msgstr "" +#~ msgid "Reservations" +#~ msgstr "Reservasjoner" -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "" +#~ msgid "Low Stock Alerts" +#~ msgstr "Varsler om lavt lager" -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "" +#~ msgid "Analytics" +#~ msgstr "Analytics" -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Systemtillatelser" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Alle tilgjengelige tillatelser i systemet" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Tilbake til Roller" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "tillatelser" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "Ingen beskrivelse tilgjengelig" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "Om tillatelser" - -#: app/templates/admin/permissions/list.html:55 -msgid "Permissions define what actions users can perform in the system. These permissions are assigned to roles, and roles are assigned to users. This provides a flexible and granular access control system." -msgstr "Tillatelser definerer hvilke handlinger brukere kan utføre i systemet. Disse tillatelsene tildeles roller, og roller tildeles brukere. Dette gir et fleksibelt og detaljert tilgangskontrollsystem." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Rediger rolle" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Opprett ny rolle" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Rollenavn" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Et unikt navn for denne rollen" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Valgfri beskrivelse av denne rollen" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Tillatelser" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Velg tillatelsene denne rollen skal ha:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Slå på alle" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "" +#~ msgid "Tools & Data" +#~ msgstr "Verktøy og data" -#: app/templates/admin/roles/form.html:101 -msgid "Select which modules should be hidden for this role. Hidden modules will not appear in the navigation and cannot be accessed directly." -msgstr "" +#~ msgid "Import / Export" +#~ msgstr "Import/eksport" -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "" +#~ msgid "Saved Filters" +#~ msgstr "Lagrede filtre" -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Oppdater rolle" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Opprett rolle" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Administrer roller og deres tillatelser" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Se tillatelser" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Totale roller" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Systemroller" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Egendefinerte roller" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Tilordnede brukere" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Type" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Standard rolle" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "bruker" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Ingen brukere" - -#: app/templates/admin/roles/list.html:136 app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Skikk" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 app/templates/issues/list.html:136 -#: app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Utsikt" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Tillatelser for" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "Ingen tillatelser tildelt." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "Ingen roller funnet." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "Om roller og tillatelser" - -#: app/templates/admin/roles/list.html:204 -msgid "Roles are collections of permissions that can be assigned to users. System roles are predefined and cannot be deleted or renamed, but custom roles can be created for your specific needs." -msgstr "Roller er samlinger av tillatelser som kan tildeles brukere. Systemroller er forhåndsdefinert og kan ikke slettes eller gis nytt navn, men tilpassede roller kan opprettes for dine spesifikke behov." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "Er du sikker på at du vil slette rollen" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Slett rolle" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Ingen beskrivelse" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Rolleinformasjon" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Systemrolle" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Egendefinert rolle" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Totale tillatelser" - -#: app/templates/admin/roles/view.html:52 app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Opprettet" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Brukere med denne rollen" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Ingen brukere er tildelt denne rollen ennå." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "Denne rollen har ingen tillatelser tildelt." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Tilbake til Bruker" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Administrer roller for" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Tildel roller" - -#: app/templates/admin/users/roles.html:22 -msgid "Select the roles this user should have. Users inherit all permissions from their assigned roles." -msgstr "Velg rollene denne brukeren skal ha. Brukere arver alle tillatelser fra sine tildelte roller." - -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Oppdater roller" - -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Gjeldende effektive tillatelser" - -#: app/templates/admin/users/roles.html:67 -msgid "These are all the permissions the user currently has through their roles:" -msgstr "Dette er alle tillatelsene brukeren har gjennom rollene sine:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Ingen tillatelser (tilordne roller for å gi tillatelser)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Lag Webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Rediger Webhook" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Konfigurer webhook for integrasjoner" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "Webhook URL" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "Nettadressen som webhook-hendelser vil bli sendt til" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Hendelser" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Velg hvilke hendelser som skal utløse denne webhooken" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "HTTP-metode" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Innholdstype" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Max prøver på nytt" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Forsinkelse på nytt (sekunder)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Tidsavbrudd (sekunder)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Regenerer hemmelighet" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Advarsel: Regenerering av hemmeligheten vil ugyldiggjøre den gjeldende hemmeligheten" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Administrer webhook-integrasjoner" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Statistikk" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Total" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "Ingen webhooks er konfigurert" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Lag din første webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Webhook detaljer" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Test" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Hemmelig" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(avkortet)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Totale leveranser" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Vellykket" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Siste levering" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Nylige leveranser" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Hendelse" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Forsøk" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Svar" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Tid" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Prøver på nytt" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Ingen leveranser ennå" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "Sende et test webhook-arrangement?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "Test webhook sendt!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Feil:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Ukjent feil" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Feil ved sending av testwebhook:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Analytics Dashboard" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "Siste 7 dager" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "Siste 30 dager" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "Siste 90 dager" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "I fjor" - -#: app/templates/analytics/dashboard.html:22 -#, fuzzy -msgid "Export all charts as PNG" -msgstr "Eksporter som JSON" - -#: app/templates/analytics/dashboard.html:23 -#, fuzzy -msgid "Export Charts" -msgstr "Eksporter CSV" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Nøkkelberegninger og innsikt om tidsregistreringen din" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Gjennomsnittlig daglige timer" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Regular" -msgstr "Retur" - -#: app/templates/analytics/dashboard.html:63 -#, fuzzy -msgid "Overtime" -msgstr "Tid" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Trend for daglige timer" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Fakturerbar vs Ikke-fakturerbar" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Ukentlige trender" - -#: app/templates/analytics/dashboard.html:129 -#, fuzzy -msgid "Hours Forecast" -msgstr "timer før" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "" +#~ msgid "Admin" +#~ msgstr "Admin" -#: app/templates/analytics/dashboard.html:146 -#, fuzzy -msgid "Daily Regular vs Overtime" -msgstr "Betalinger over tid" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Timer etter tid på dagen" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Prosjekteffektivitet" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Brukerytelse" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "Kunne ikke laste inn diagrammer. Vennligst prøv igjen." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "Kunne ikke oppdatere diagrammer. Vennligst prøv igjen." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Time på dagen" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Inntekter" - -#: app/templates/analytics/dashboard.html:499 -#, fuzzy -msgid "Forecast" -msgstr "Tilbakestill" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "" +#~ msgid "Admin Dashboard" +#~ msgstr "Admin Dashboard" -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Eksport" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Nøkkelberegninger og praktisk innsikt" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "vs forrige periode" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "av totalt" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Potensielle inntekter" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Gj.sn. rate:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "Trend" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "aktive prosjekter" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Innsikt og anbefalinger" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Kumulativ" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Fakturerbar distribusjon" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Oversikt over oppgavestatus" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Oppgaver fullført" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 app/templates/issues/edit.html:40 -#: app/templates/issues/list.html:40 app/templates/issues/view.html:101 -#: app/templates/tasks/create.html:72 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:476 app/templates/tasks/edit.html:81 -#: app/templates/tasks/edit.html:656 app/templates/tasks/my_tasks.html:57 -#: app/templates/tasks/my_tasks.html:132 app/utils/i18n_helpers.py:17 -#: app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "Pågår" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Å gjøre" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Inntekter etter prosjekt" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Betalinger over tid" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Betalingsmetoder" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Inntekt vs betalinger" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Innsamlingssats" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Prosjektgjennomføringsgrad" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "Fakturerbar" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "Ikke-fakturerbar" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Fullført" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Kansellert" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Fullføringsrate (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Oversikt over mobilinnsikt" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Daglig gj.sn" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Daglige timer" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "Topp prosjekter" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "" +#~ msgid "User Management" +#~ msgstr "Brukeradministrasjon" -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "" +#~ msgid "Manage Users" +#~ msgstr "" -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "" +#~ msgid "Roles & Permissions" +#~ msgstr "Roller og tillatelser" -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Tidsregistrering" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "" +#~ msgid "PDF Templates" +#~ msgstr "PDF-maler" -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "timer" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "" +#~ msgid "Invoice PDF" +#~ msgstr "Faktura PDF" -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Vedta" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Avvis" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "" +#~ msgid "Quote PDF" +#~ msgstr "Sitat PDF" -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "" +#~ msgid "System Settings" +#~ msgstr "Systeminnstillinger" -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "" +#~ msgid "Settings" +#~ msgstr "Innstillinger" -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "" +#~ msgid "Module Management" +#~ msgstr "" -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "" +#~ msgid "Email Configuration" +#~ msgstr "E-postkonfigurasjon" -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "" +#~ msgid "Email Templates" +#~ msgstr "E-postmaler" -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "" +#~ msgid "OIDC Settings" +#~ msgstr "OIDC-innstillinger" -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "" +#~ msgid "Security & Access" +#~ msgstr "" -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "" +#~ msgid "API Tokens" +#~ msgstr "API-tokens" -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "" +#~ msgid "Audit Logs" +#~ msgstr "Revisjonslogger" -#: app/templates/approvals/view.html:26 app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "" +#~ msgid "Data Management" +#~ msgstr "" -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "" +#~ msgid "Expense Categories" +#~ msgstr "Utgiftskategorier" -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "" +#~ msgid "Per Diem Rates" +#~ msgstr "Dagpengepriser" -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Godkjent av" +#~ msgid "Custom Fields" +#~ msgstr "" -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "" +#~ msgid "Link Templates" +#~ msgstr "" -#: app/templates/approvals/view.html:107 -#, fuzzy -msgid "Request comment" -msgstr "Legg inn kommentar" - -#: app/templates/approvals/view.html:113 -#, fuzzy -msgid "Approval comment" -msgstr "Legg inn kommentar" - -#: app/templates/approvals/view.html:119 -#, fuzzy -msgid "Rejection reason" -msgstr "Årsak til avvisning" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Spor hvem som endret hva og når" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Filtre" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Enhetstype" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Alle typer" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "Enhets-ID" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Alle brukere" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Handling" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Alle handlinger" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Oppdatert" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Slettet" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Tidsområde" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Filter" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Tidsstempel" - -#: app/templates/audit_logs/list.html:78 app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Entitet" - -#: app/templates/audit_logs/list.html:79 app/templates/audit_logs/list.html:133 -#: app/templates/deals/view.html:195 app/templates/deals/view.html:207 -msgid "Field" -msgstr "Felt" - -#: app/templates/audit_logs/list.html:80 app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Endre" - -#: app/templates/audit_logs/list.html:129 app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Grunn" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Endre informasjon" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "" +#~ msgid "System Maintenance" +#~ msgstr "" -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "" +#~ msgid "System Info" +#~ msgstr "Systeminfo" -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "" +#~ msgid "Backups" +#~ msgstr "Sikkerhetskopier" -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "" +#~ msgid "Telemetry" +#~ msgstr "" -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "" +#~ msgid "About" +#~ msgstr "Om" -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "" +#~ msgid "Help" +#~ msgstr "Hjelp" -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "" +#~ msgid "Open support options" +#~ msgstr "Eksportalternativer" -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Be om informasjon" +#~ msgid "Support TimeTracker" +#~ msgstr "Støtte TimeTracker" -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "" +#~ msgid "Open sidebar" +#~ msgstr "Bytt sidefelt" -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "" +#~ msgid "Search" +#~ msgstr "Søk" -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "" +#~ msgid "Theme" +#~ msgstr "Tema" -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "" +#~ msgid "Theme options" +#~ msgstr "Filteralternativer" -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "" +#~ msgid "Light" +#~ msgstr "Lys" -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Sikkerhet" +#~ msgid "Dark" +#~ msgstr "Mørk" -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "" +#~ msgid "System" +#~ msgstr "System" -#: app/templates/auth/edit_profile.html:92 app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -#, fuzzy -msgid "Two-factor authentication" -msgstr "OIDC/SSO (bedriftsautentisering)" +#~ msgid "Open chat" +#~ msgstr "" -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "" +#~ msgid "Start Timer" +#~ msgstr "Start timer" -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "Passordet må være minst 8 tegn langt" +#~ msgid "Stop" +#~ msgstr "til" -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "" +#~ msgid "AI Helper" +#~ msgstr "Se hjelp" -#: app/templates/auth/forgot_password.html:6 -#, fuzzy -msgid "Forgot password" -msgstr "Portalpassord" +#~ msgid "Change language" +#~ msgstr "Bytt språk" -#: app/templates/auth/forgot_password.html:19 -#, fuzzy -msgid "Reset your password" -msgstr "Angi passordet ditt" +#~ msgid "Language" +#~ msgstr "Språk" -#: app/templates/auth/forgot_password.html:21 -msgid "Enter your username or email address. If an account matches and email is configured, we will send you a reset link." -msgstr "" +#~ msgid "User menu" +#~ msgstr "Brukermeny" -#: app/templates/auth/forgot_password.html:27 -#, fuzzy -msgid "Username or email" -msgstr "Ingen brukernavn eller e-post" +#~ msgid "Supporter" +#~ msgstr "Støtte" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "" +#~ msgid "Guest" +#~ msgstr "Gjest" -#: app/templates/auth/forgot_password.html:32 -#, fuzzy -msgid "Send reset link" -msgstr "Send test-e-post" - -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -#, fuzzy -msgid "Back to sign in" -msgstr "Tilbake til Admin" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Logg inn" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Spor tid. Hold deg organisert." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Logg på kontoen din" - -#: app/templates/auth/login.html:50 -#, fuzzy -msgid "Demo credentials" -msgstr "Varedetaljer" - -#: app/templates/auth/login.html:72 -#, fuzzy -msgid "Forgot your password?" -msgstr "Angi passordet ditt" - -#: app/templates/auth/login.html:79 -#, fuzzy -msgid "LDAP authentication is enabled" -msgstr "Autentiseringsmetode" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "Logg på" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "" +#~ msgid "My Profile" +#~ msgstr "Min profil" -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Tips: Skriv inn et nytt brukernavn for å opprette kontoen din." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "Eller fortsett med" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Enkel pålogging" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Rediger profil" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Medlem siden" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -#, fuzzy -msgid "Reset password" -msgstr "Angi passord" - -#: app/templates/auth/reset_password.html:19 -#, fuzzy -msgid "Choose a new password" -msgstr "Angi passord" - -#: app/templates/auth/reset_password.html:21 -#, fuzzy -msgid "Enter a new password for your account." -msgstr "Angi et passord for kundeportalkontoen din" - -#: app/templates/auth/reset_password.html:27 -#, fuzzy -msgid "New password" -msgstr "Angi passord" - -#: app/templates/auth/reset_password.html:30 -#, fuzzy -msgid "At least 8 characters" -msgstr "Passordet må være minst 8 tegn langt" - -#: app/templates/auth/reset_password.html:32 -#, fuzzy -msgid "Confirm password" -msgstr "Bekreft passord" - -#: app/templates/auth/reset_password.html:35 -#, fuzzy -msgid "Repeat your new password" -msgstr "Angi passordet ditt" - -#: app/templates/auth/reset_password.html:37 -#, fuzzy -msgid "Update password" -msgstr "Angi passord" - -#: app/templates/auth/two_factor.html:19 -#, fuzzy -msgid "Enter authentication code" -msgstr "Autentiseringsmetode" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "" +#~ msgid "My Settings" +#~ msgstr "Mine innstillinger" -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Kode" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "" +#~ msgid "License" +#~ msgstr "Tillatelse" -#: app/templates/auth/two_factor_setup.html:10 -msgid "Add an extra layer of security to your account using a TOTP authenticator app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" +#~ msgid "Donate or get a supporter license" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:18 -#, fuzzy -msgid "Two-factor authentication is enabled for your account." -msgstr "Kundeportaltilgang er ikke aktivert for kontoen din." +#~ msgid "Logout" +#~ msgstr "Logg ut" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Liker du TimeTracker?" -#: app/templates/auth/two_factor_setup.html:29 -#, fuzzy -msgid "Disable 2FA" -msgstr "Funksjonshemmet" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "" +#~ msgid "Support / Get key" +#~ msgstr "Støtte TimeTracker" -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "" +#~ msgid "Buy Me a Coffee" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "" +#~ msgid "PayPal" +#~ msgstr "PayPal" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" +#~ msgid "Support / License" +#~ msgstr "Rekvisita" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "" +#~ msgid "Dismiss" +#~ msgstr "Avskjedige" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "" +#~ msgid "Built by an independent developer" +#~ msgstr "" -#: app/templates/auth/two_factor_setup.html:64 -#, fuzzy -msgid "Enter the 6-digit code" -msgstr "Generert kode" +#~ msgid "Software update" +#~ msgstr "Startdato" -#: app/templates/auth/two_factor_setup.html:67 -#, fuzzy -msgid "Enable 2FA" -msgstr "Aktivert" +#~ msgid "Read more" +#~ msgstr "Last inn mer" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "" +#~ msgid "View Release" +#~ msgstr "Vis oppgave" -#: app/templates/auth/emails/password_reset.html:16 -msgid "If the button does not work, copy and paste this link into your browser:" -msgstr "" +#~ msgid "Don't show again for this version" +#~ msgstr "" -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "" +#~ msgid "Quick actions dock" +#~ msgstr "Raske handlinger" -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Budsjettvarsler og prognoser" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Overvåke prosjektbudsjetter og prognosefullføring" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Ubekreftede varsler" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Kritiske varsler" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Prosjekter med budsjetter" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Advarselsvarsler" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Aktive varsler" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Bekrefte" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Prosjektbudsjettstatus" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Budsjett" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Forbrukt" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Gjenværende" - -#: app/templates/budget/dashboard.html:120 app/templates/projects/view.html:433 -#: app/templates/projects/view.html:473 app/templates/tasks/_kanban.html:112 -#: app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Framgang" - -#: app/templates/budget/dashboard.html:137 app/templates/projects/view.html:271 -msgid "over" -msgstr "over" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Over budsjett" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Kritisk" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "Sunn" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "Fant ingen prosjekter med budsjetter" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Varsling er godkjent" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "Kunne ikke bekrefte varselet" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Budsjettanalyse og prognoser" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Tilbake til Dashboard" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Se prosjekt" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Totalt budsjett" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Forbrenningshastighetsanalyse" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Daglig brennhastighet" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Ukentlig brennhastighet" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Månedlig brennhastighet" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Periode totalt" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Basert på sist" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "dager" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "Ingen brennhastighetsdata tilgjengelig" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Fullføringsestimat" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Estimert fullføringsdato" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "dager igjen" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Konfidensnivå" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "Ingen ferdigstillelsesestimat tilgjengelig" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Analyse av kostnadstrend" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Gjennomsnittlig" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Ressursfordeling" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Total kostnad" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Timepris" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Teammedlem" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Koste" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Timer %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Kostnad %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "Oppføringer" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Dato og tid" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Sted" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Påminnelse" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "minutter før" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "timer før" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "dager før" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Tilbakevendende" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Til" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Sist oppdatert" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Tilbake til Kalender" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Slett hendelse" - -#: app/templates/calendar/event_detail.html:192 -msgid "Are you sure you want to delete this event? This action cannot be undone." -msgstr "Er du sikker på at du vil slette denne hendelsen? Denne handlingen kan ikke angres." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Rediger hendelse" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Ny begivenhet" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Tittel" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Startdato" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Starttid" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Sluttdato" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Sluttid" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Heldagsarrangement" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Hendelsestype" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Møte" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Ansettelse" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Frist" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "-- Ingen --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Ingen påminnelse" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 minutter før" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 minutter før" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 minutter før" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 time før" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 dag før" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Farge" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Velg en farge for dette arrangementet" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Privat arrangement" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Private arrangementer er kun synlige for deg" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Gjentakende hendelse" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "Dette er en gjenganger" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Gjentakelsesmønster" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Bruk RRULE-format (f.eks. FREKVENS=ukentlig; BYDAY=MO,VI,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Sluttdato for gjentakelse" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Oppdater hendelse" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Opprett hendelse" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "" +#~ msgid "Actions" +#~ msgstr "Handlinger" -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "" +#~ msgid "Log Time" +#~ msgstr "Loggtid" -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "" +#~ msgid "New Task" +#~ msgstr "Ny oppgave" -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "" +#~ msgid "New Project" +#~ msgstr "Se prosjekt" -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "" +#~ msgid "New Client" +#~ msgstr "Klient" -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "" +#~ msgid "Open AI Helper" +#~ msgstr "Operasjonen mislyktes" -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "" +#~ msgid "Context included" +#~ msgstr "Kontrakt avsluttet" -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "" +#~ msgid "Loading context preview..." +#~ msgstr "Forhåndsvisning av logo" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "" +#~ msgid "Send" +#~ msgstr "Slutt" -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "" -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Se og administrer hendelser, oppgaver og tidsoppføringer" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Dag" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Uke" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Måned" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "I dag" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "" -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Laster kalender..." +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "" -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Begivenhetsdetaljer" +#~ msgid "Create API Token" +#~ msgstr "Opprett API-token" -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "" +#~ msgid "Your API Token" +#~ msgstr "Ditt API-token" -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "" +#~ msgid "Usage Examples" +#~ msgstr "Eksempler på bruk" -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "" +#~ msgid "Are you sure you want to" +#~ msgstr "Er du sikker på at du vil" -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "" +#~ msgid "deactivate" +#~ msgstr "deaktivere" -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "" +#~ msgid "activate" +#~ msgstr "aktivere" -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "" +#~ msgid "this token?" +#~ msgstr "dette symbolet?" -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "" +#~ msgid "Deactivate Token" +#~ msgstr "Deaktiver token" -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "" +#~ msgid "Activate Token" +#~ msgstr "Aktiver token" -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "" +#~ msgid "Deactivate" +#~ msgstr "Deaktiver" -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "" +#~ msgid "Activate" +#~ msgstr "Aktiver" -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette dette tokenet? Denne handlingen " +#~ "kan ikke angres." -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "" +#~ msgid "Delete Token" +#~ msgstr "Slett token" -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "" +#~ msgid "Create Backup" +#~ msgstr "Lag sikkerhetskopi" -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "" +#~ msgid "Restore Backup" +#~ msgstr "Gjenopprett sikkerhetskopi" -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "" +#~ msgid "Existing Backups" +#~ msgstr "Eksisterende sikkerhetskopier" -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "" +#~ msgid "Important Information" +#~ msgstr "Viktig informasjon" -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "" +#~ msgid "Confirm Deletion" +#~ msgstr "Bekreft sletting" -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "" +#~ msgid "Clear Cache" +#~ msgstr "Tøm buffer" -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "" +#~ msgid "ServiceWorker Status" +#~ msgstr "ServiceWorker Status" -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "" +#~ msgid "Clear All Caches" +#~ msgstr "Tøm alle cacher" -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "" +#~ msgid "ServiceWorker Actions" +#~ msgstr "ServiceWorker-handlinger" -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "" +#~ msgid "Manual Hard Refresh" +#~ msgstr "Manuell hard oppdatering" -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Rediger klientnotat" +#~ msgid "Total Users" +#~ msgstr "" -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Tilbake til klienten" +#~ msgid "All time" +#~ msgstr "Hele tiden" -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Klient:" +#~ msgid "Active Users" +#~ msgstr "" -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Opprettet den" +#~ msgid "Currently active" +#~ msgstr "" -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Sist redigert den" +#~ msgid "Total Projects" +#~ msgstr "Totalt prosjekter" -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Merk innhold" +#~ msgid "Active Projects" +#~ msgstr "Aktive prosjekter" -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Intern notat som bare er synlig for teamet ditt." +#~ msgid "Total Entries" +#~ msgstr "" -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Merk som viktig" +#~ msgid "Time entries logged" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "" +#~ msgid "Active Timers" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Klientportal" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "" +#~ msgid "Currently running" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:69 -#, fuzzy -msgid "View details" -msgstr "Se detaljer" +#~ msgid "All time tracked" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "" +#~ msgid "Billable time" +#~ msgstr "" -#: app/templates/client_portal/activity_feed.html:85 -msgid "No recent activity to display. Activity will appear here as projects are updated and time entries are logged." -msgstr "" +#~ msgid "User Activity (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "" +#~ msgid "Project Status" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "I påvente av" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Godkjent" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Avvist" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Alle" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "" +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "" +#~ msgid "System Health" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Se detaljer" +#~ msgid "Database" +#~ msgstr "Database" -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "" +#~ msgid "Connected" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" +#~ msgid "OIDC Authentication" +#~ msgstr "" -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "" +#~ msgid "Configured" +#~ msgstr "" -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "" +#~ msgid "Not Configured" +#~ msgstr "" -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "" +#~ msgid "OIDC Users" +#~ msgstr "OIDC-brukere" -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "" +#~ msgid "users" +#~ msgstr "brukere" -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "" +#~ msgid "Admin Sections" +#~ msgstr "Administrasjonsseksjoner" -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "" +#~ msgid "Recent Activity" +#~ msgstr "Nylig aktivitet" -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "Approval update" -msgstr "Godkjenningsstatus" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "A time entry approval was requested." -msgstr "Godkjenning forespurt" - -#: app/templates/client_portal/base.html:418 -#, fuzzy -msgid "An approval was updated." -msgstr "Ingen prosjekter ble oppdatert" - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "Velkommen, %(client_name)s" - -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -#, fuzzy -msgid "Customize dashboard" -msgstr "Tilpass snarveier" - -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "" +#~ msgid "Duration" +#~ msgstr "Varighet" -#: app/templates/client_portal/dashboard.html:74 -#, fuzzy -msgid "Statistics cards" -msgstr "Statistikk" - -#: app/templates/client_portal/dashboard.html:75 -#, fuzzy -msgid "Pending actions" -msgstr "Administrasjonsseksjoner" - -#: app/templates/client_portal/dashboard.html:77 -#, fuzzy -msgid "Recent invoices" -msgstr "Nylige fakturaer" - -#: app/templates/client_portal/dashboard.html:78 -#, fuzzy -msgid "Recent time entries" -msgstr "Nylige tidsinnlegg" - -#: app/templates/client_portal/dashboard.html:127 -#, fuzzy -msgid "Select at least one widget." -msgstr "Velg en klient..." - -#: app/templates/client_portal/dashboard.html:147 -#, fuzzy -msgid "Failed to save." -msgstr "Kunne ikke stoppe tidtakeren" - -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "" +#~ msgid "N/A" +#~ msgstr "N/A" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "" +#~ msgid "Email Configuration & Testing" +#~ msgstr "E-postkonfigurasjon og testing" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "" +#~ msgid "Configure and test email delivery" +#~ msgstr "Konfigurer og test e-postlevering" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "" +#~ msgid "Back to Admin" +#~ msgstr "Tilbake til Admin" -#: app/templates/client_portal/documents.html:82 -msgid "No documents have been shared with you yet. Documents will appear here once they are uploaded and made visible to clients." -msgstr "" +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "Konfigurer e-postinnstillinger her for å lagre dem i databasen." -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "" +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Aktiver e-postkonfigurasjon for database" -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Gå til Dashboard" +#~ msgid "Mail Server" +#~ msgstr "E-postserver" -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "" +#~ msgid "Mail Port" +#~ msgstr "Postport" -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Gå tilbake" +#~ msgid "Use TLS" +#~ msgstr "Bruk TLS" -#: app/templates/client_portal/error.html:69 -msgid "If you believe you should have access to the client portal, please contact your administrator or use the login link above." -msgstr "" +#~ msgid "Use SSL" +#~ msgstr "Bruk SSL" -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Fakturadetaljer" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Utstedelsesdato" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "Denne fakturaen er %(days)d dager forsinket." - -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Fakturavarer" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Mengde" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Enhetspris" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "" +#~ msgid "Username" +#~ msgstr "Brukernavn" -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Tilbake til Fakturaer" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "Fakturaer for %(client_name)s" - -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "Ubetalt" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "Forsinket" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Beløp" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "dager forsinket" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "" +#~ msgid "Password" +#~ msgstr "Passord" -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "" +#~ msgid "Leave empty to keep current" +#~ msgstr "La stå tomt for å holde deg oppdatert" -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "" +#~ msgid "Default Sender" +#~ msgstr "Standard avsender" -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "" +#~ msgid "Test recipient email" +#~ msgstr "Mottakers e-post" -#: app/templates/client_portal/invoices.html:164 -msgid "There are no invoices available at this time. Invoices will appear here once they are created." -msgstr "" +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" -#: app/templates/client_portal/invoices.html:166 -msgid "There are no invoices matching this filter. Try selecting a different status." -msgstr "" +#~ msgid "Save Configuration" +#~ msgstr "Lagre konfigurasjon" -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "" +#~ msgid "Reset" +#~ msgstr "Tilbakestill" -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "" +#~ msgid "Email Configuration Status" +#~ msgstr "E-postkonfigurasjonsstatus" -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "" +#~ msgid "Refresh" +#~ msgstr "Forfriske" -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Prioritet" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "" +#~ msgid "Email is configured!" +#~ msgstr "E-post er konfigurert!" -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "Tildelt til" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 app/templates/issues/edit.html:41 -#: app/templates/issues/list.html:41 app/templates/issues/view.html:102 -#: app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "" +#~ msgid "Your email settings are properly set up." +#~ msgstr "E-postinnstillingene dine er riktig konfigurert." -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "" +#~ msgid "Email is not configured" +#~ msgstr "E-post er ikke konfigurert" -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "" +#~ msgid "Please configure email settings using the form above." +#~ msgstr "Vennligst konfigurer e-postinnstillingene ved å bruke skjemaet ovenfor." -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Configuration Errors" +#~ msgstr "Konfigurasjonsfeil" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Åpne" +#~ msgid "Configuration Warnings" +#~ msgstr "Konfigurasjonsadvarsler" -#: app/templates/client_portal/issues.html:39 app/templates/issues/edit.html:42 -#: app/templates/issues/list.html:42 app/templates/issues/view.html:103 -msgid "Closed" -msgstr "" +#~ msgid "Current Email Settings" +#~ msgstr "Gjeldende e-postinnstillinger" -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "" +#~ msgid "Port" +#~ msgstr "Havn" -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "" +#~ msgid "Password Set" +#~ msgstr "Passord satt" -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Kundeportalpålogging" +#~ msgid "Send Test Email" +#~ msgstr "Send test-e-post" -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Se dine prosjekter og fakturaer" +#~ msgid "Recipient Email Address" +#~ msgstr "Mottakers e-postadresse" -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Logg på kundeportalen" +#~ msgid "Configuration Guide" +#~ msgstr "Konfigurasjonsveiledning" -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "Skriv inn portallegitimasjonen din for å få tilgang til prosjektene og fakturaene dine" +#~ msgid "Common SMTP Providers" +#~ msgstr "Vanlige SMTP-leverandører" -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "portal_brukernavn" +#~ msgid "Requires app password" +#~ msgstr "Krever app-passord" -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Skriv inn passordet ditt" +#~ msgid "Important Notes" +#~ msgstr "Viktige merknader" -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "" +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "Gmail krever et app-passord hvis 2FA er aktivert" -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "" +#~ msgid "Restart the application after changing email settings" +#~ msgstr "Start programmet på nytt etter å ha endret e-postinnstillinger" -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "" +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "Sjekk brannmurreglene hvis e-post ikke sendes" -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "" +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "For produksjon, bruk en dedikert " +#~ "e-posttjeneste som SendGrid eller Amazon " +#~ "SES" -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Lav" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Medium" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Høy" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Som haster" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "" +#~ msgid "password is set" +#~ msgstr "passordet er satt" -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "" +#~ msgid "no password set" +#~ msgstr "ikke angitt passord" -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "" +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "Kunne ikke lagre konfigurasjonen. Vennligst prøv igjen." -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "" +#~ msgid "Success!" +#~ msgstr "Suksess!" -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "" +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "Kunne ikke oppdatere status. Vennligst prøv igjen." -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "" +#~ msgid "Please enter a valid email address" +#~ msgstr "Vennligst skriv inn en gyldig e-postadresse" -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "" +#~ msgid "Sending..." +#~ msgstr "Sender..." -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "" +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "Kunne ikke sende test-e-post. Vennligst sjekk konfigurasjonen din." -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "" +#~ msgid "LDAP Setup Wizard" +#~ msgstr "" -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "" +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Konfigurer OIDC ved å bruke disse miljøvariablene:" -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "" +#~ msgid "Server" +#~ msgstr "Service" -#: app/templates/client_portal/notifications.html:145 -msgid "You have no notifications yet. Notifications will appear here when there are updates to your projects or invoices." -msgstr "" +#~ msgid "Bind" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "" +#~ msgid "Users" +#~ msgstr "Brukere" -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Kommentarer" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Legg til kommentar" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Din kommentar" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "" +#~ msgid "Groups" +#~ msgstr "Gruppekrav" -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Legg inn kommentar" +#~ msgid "Finalize" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "" +#~ msgid "Step 1: Server and TLS" +#~ msgstr "" -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "" +#~ msgid "LDAP host" +#~ msgstr "Tapt" -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Tilbake til prosjekter" +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "Bruk SSL" -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "Prosjekter for %(client_name)s" +#~ msgid "StartTLS" +#~ msgstr "Start" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "" +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Tidsavbrudd (sekunder)" -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "" +#~ msgid "TLS CA certificate file" +#~ msgstr "" -#: app/templates/client_portal/projects.html:101 -msgid "There are no projects available at this time. Projects will appear here once they are created and assigned to your account." -msgstr "" +#~ msgid "optional" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 app/templates/quotes/pdf_default.html:78 -#: app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Sitatdetaljer" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Gyldig til" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Dette sitatet er utløpt." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Sitat elementer" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "SKU" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Vilkår og betingelser" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "" +#~ msgid "Step 2: Service bind account" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Godta sitat" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Avvis sitat" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Tilbake til sitater" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "" +#~ msgid "Bind DN" +#~ msgstr "" -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "" +#~ msgid "Bind password" +#~ msgstr "Passord" -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "Sitater for %(client_name)s" - -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Utløpt" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "Ingen sitater funnet." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "" +#~ msgid "Enter bind password" +#~ msgstr "Skriv inn passordet ditt" -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "" +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" -#: app/templates/client_portal/reports.html:81 -#, fuzzy -msgid "Project progress" -msgstr "Prosjektkode" +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "" -#: app/templates/client_portal/reports.html:93 -#, fuzzy -msgid "Est. / Budget" -msgstr "Over budsjett" +#~ msgid "Base DN" +#~ msgstr "Basert på sist" -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "" +#~ msgid "User subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/reports.html:149 -#, fuzzy -msgid "Task summary" -msgstr "Sammendrag" +#~ msgid "User object class" +#~ msgstr "Bruk prosjekttimepriser" -#: app/templates/client_portal/reports.html:153 -#, fuzzy, python-format -msgid "Total tasks: %(count)s" -msgstr "Totalt beløp" +#~ msgid "Login attribute" +#~ msgstr "Loggtid" -#: app/templates/client_portal/reports.html:164 -#, fuzzy -msgid "No tasks yet." -msgstr "Ingen oppgaver er valgt" +#~ msgid "Email attribute" +#~ msgstr "E-postadresse" -#: app/templates/client_portal/reports.html:178 -#, fuzzy -msgid "Time by date (last 30 days)" -msgstr "Ingen aktivitet de siste 30 dagene." +#~ msgid "First name attribute" +#~ msgstr "Fornavn" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "" +#~ msgid "Last name attribute" +#~ msgstr "Etternavn" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "" +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Autentiseringsmetode" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Angi passord" - -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Angi passordet ditt for å komme i gang" - -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Angi passordet ditt" - -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Angi et passord for kundeportalkontoen din" - -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "Bekreft passord" - -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Bekreft passordet ditt" - -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "Tidsoppføringer for %(client_name)s prosjekter" - -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Alle prosjekter" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "Fra dato" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "Til dags dato" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Totalt antall oppføringer" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Totalt antall timer" - -#: app/templates/client_portal/time_entries.html:170 -msgid "No time entries match your current filters. Try adjusting your filter criteria." -msgstr "" +#~ msgid "Group subtree (relative to base)" +#~ msgstr "" -#: app/templates/client_portal/time_entries.html:172 -msgid "There are no time entries available at this time. Time entries will appear here once they are logged for your projects." -msgstr "" +#~ msgid "Group object class" +#~ msgstr "Topp prosjekter" -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "" +#~ msgid "Admin group (CN)" +#~ msgstr "Administrasjonsgruppe" -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Nylige fakturaer" +#~ msgid "Required group (CN)" +#~ msgstr "" -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Vis alle" +#~ msgid "AUTH_METHOD" +#~ msgstr "Auth metode" -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "" +#~ msgid "LDAP only" +#~ msgstr "Kun aktiv" -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "" +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "" +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "" +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Test konfigurasjon" -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "" +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "" +#~ msgid "Test connection" +#~ msgstr "Test konfigurasjon" -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "" +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "" +#~ msgid "Generate configuration" +#~ msgstr "Test konfigurasjon" -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Totale fakturaer" +#~ msgid "Environment variables (.env)" +#~ msgstr "Referanse til miljøvariabler" -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "" +#~ msgid "Copy" +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Nylige tidsinnlegg" +#~ msgid "Docker Compose" +#~ msgstr "" -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "" +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Eksporter til CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Opprett klient" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Tilbake til klienter" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "Legg til en ny klient for å administrere relaterte prosjekter og fakturering." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Skriv inn klientnavn" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Standard timepris" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "f.eks. 75,00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "This rate will be automatically filled when creating projects for this client" -msgstr "Denne satsen fylles automatisk når du oppretter prosjekter for denne klienten" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Støtter Markdown" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Kort beskrivelse av oppdragsgiver eller prosjektomfang" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Kontaktperson" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Navn på hovedkontakt" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@client.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Månedlige forhåndsbetalte timer" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "f.eks. 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "La stå tomt hvis denne klienten ikke har noen forhåndsbetalt tildeling." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Forhåndsbetalt tilbakestillingsdag" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Dag i måneden da forhåndsbetalte timer tilbakestilles (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Klientadresse" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "These custom fields are defined globally and available for all clients." -msgstr "" +#~ msgid "Previous" +#~ msgstr "Tidligere" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "" +#~ msgid "Next" +#~ msgstr "Neste" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Velg et klart, beskrivende navn for kundeorganisasjonen." +#~ msgid "Feature Module Load Status" +#~ msgstr "Funksjonsbruksstatistikk" -#: app/templates/clients/create.html:125 -msgid "Set the standard hourly rate for this client. This will automatically populate when creating new projects." -msgstr "Angi standard timepris for denne klienten. Denne vil automatisk fylles ut når du oppretter nye prosjekter." +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Kontaktinformasjon" +#~ msgid "Optional loaded:" +#~ msgstr "Valgfri kupongkode" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "Legg til kontaktdetaljer for enkel kommunikasjon og journalføring." +#~ msgid "Attention needed" +#~ msgstr "Oppmerksomhet kreves" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Forhåndsbetalte timer" +#~ msgid "Module" +#~ msgstr "Mobil" -#: app/templates/clients/create.html:133 -msgid "Configure monthly included hours and the reset day if this client has a retainer or prepaid bundle." -msgstr "Konfigurer månedlige inkluderte timer og tilbakestillingsdagen hvis denne klienten har en retainer eller forhåndsbetalt pakke." +#~ msgid "Blueprint" +#~ msgstr "" -#: app/templates/clients/create.html:137 -msgid "Provide context about the client relationship or typical project types." -msgstr "Gi kontekst om klientforholdet eller typiske prosjekttyper." +#~ msgid "Status" +#~ msgstr "Status" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "" +#~ msgid "Details" +#~ msgstr "Detaljer" -#: app/templates/clients/edit.html:104 -msgid "Enable portal access for this client. Clients can log in with their own credentials to view projects, invoices, and time entries." -msgstr "Aktiver portaltilgang for denne klienten. Kunder kan logge på med sin egen legitimasjon for å se prosjekter, fakturaer og tidsregistreringer." +#~ msgid "Loaded" +#~ msgstr "Last inn mer" -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Aktiver klientportal" +#~ msgid "Failed" +#~ msgstr "Mislyktes" -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "" +#~ msgid "—" +#~ msgstr "" -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "" +#~ msgid "Client Lock (optional)" +#~ msgstr "" -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Portal brukernavn" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Unikt brukernavn for portalpålogging" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Portalpassord" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "La det stå tomt for å beholde gjeldende passord" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Angi et nytt passord eller la det stå tomt for å holde deg oppdatert" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Gjeldende portalbrukernavn" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Oppdater klient" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Send e-post for passordoppsett" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "Send en e-post til %(email)s med en lenke for å angi portalpassordet deres." - -#: app/templates/clients/edit.html:163 -msgid "Email address is required to send password setup email. Please set the client email address above." -msgstr "E-postadresse kreves for å sende e-post med passordoppsett. Vennligst angi klientens e-postadresse ovenfor." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Kundestatistikk" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "Est. Total kostnad" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Filtrer klienter" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Slå på filtre" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Skjul filtre" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Vis filtre" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" -#: app/templates/clients/view.html:24 -#, fuzzy -msgid "No billable unbilled time for this client." -msgstr "Ingen ufakturerte tidsregistreringer funnet for dette prosjektet." - -#: app/templates/clients/view.html:25 -#, fuzzy -msgid "No unbilled time" -msgstr "Ufakturerte tidsoppføringer" - -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -#, fuzzy -msgid "Invoice unbilled time" -msgstr "Fakturavarer" - -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "Vil du merke klienten som inaktiv?" - -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Endre klientstatus" - -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Merk inaktiv" - -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "Aktivere klient?" - -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Aktiver klient" - -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Slett klient" - -#: app/templates/clients/view.html:53 -#, fuzzy -msgid "Client details and associated projects." -msgstr "Totale og aktive prosjekter" - -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Administrer" - -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Primær" - -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "flere kontakt(er)" - -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Ingen kontakter ennå" - -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Legg til kontakt" - -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Eldre kontaktinformasjon" - -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "Planen inkluderer %(hours)s timer per syklus. Tilbakestilles på dag %(day)s." - -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Nåværende syklusstart" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Gjenstående timer" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 app/templates/tasks/_tasks_list.html:88 -#: app/templates/tasks/edit.html:170 app/templates/tasks/edit.html:172 -#: app/templates/tasks/edit.html:175 app/templates/tasks/view.html:155 -msgid "h" -msgstr "h" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "Brukte denne syklusen" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "" +#~ msgid "Locked Client" +#~ msgstr "" -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "" +#~ msgid "None (no lock)" +#~ msgstr "" -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Module Visibility" +#~ msgstr "" -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "" +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "" +#~ msgid "Enable All" +#~ msgstr "" -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "" +#~ msgid "Disable All" +#~ msgstr "" -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Klient synlig" +#~ msgid "Total Modules:" +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "" +#~ msgid "Enabled:" +#~ msgstr "" -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "" +#~ msgid "Disabled:" +#~ msgstr "" -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "" +#~ msgid "Search modules..." +#~ msgstr "" -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Arkivert" +#~ msgid "All Categories" +#~ msgstr "Alle kategorier" -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "" +#~ msgid "Project Management" +#~ msgstr "Prosjektledelse" -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "Show disabled only" +#~ msgstr "" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "" +#~ msgid "Show with dependencies" +#~ msgstr "" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Interne merknader" - -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Legg til merknad" - -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Legg til et internt notat om denne klienten..." - -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Lagre notat" - -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "redigert" - -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Viktig" - -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Fjern merking" - -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Merk som viktig" - -#: app/templates/clients/view.html:527 -msgid "No notes yet. Add a note to keep track of important information about this client." -msgstr "Ingen notater ennå. Legg til et notat for å holde styr på viktig informasjon om denne klienten." - -#: app/templates/clients/view.html:590 -#, fuzzy -msgid "Estimated total" -msgstr "Estimert verdi" - -#: app/templates/clients/view.html:594 -#, fuzzy -msgid "Create a draft invoice?" -msgstr "Opprett faktura" - -#: app/templates/clients/view.html:597 -#, fuzzy -msgid "Create invoice" -msgstr "Opprett faktura" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -#, fuzzy -msgid "Could not create invoice." -msgstr "Opprett faktura" - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "Er du sikker på at du vil slette dette notatet?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Slett notat" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Redigert på" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Svar" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "" +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "" +#~ msgid "Enabled" +#~ msgstr "Aktivert" -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Skriv svaret ditt..." +#~ msgid "Disabled" +#~ msgstr "Funksjonshemmet" -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "" +#~ msgid "Depends on:" +#~ msgstr "" -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "" +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Del dine tanker, oppdateringer eller spørsmål..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "Du kan bruke linjeskift til å formatere kommentaren din." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Legg til bilde" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Ingen kommentarer ennå" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Start samtalen ved å legge til den første kommentaren." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Legg til første kommentar" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Rediger kommentar" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Tilbake" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "Redigering av kommentar til:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Opprinnelig lagt ut på" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Kommentarinnhold" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Alle aktiviteter" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Tidsmaler" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Ingen nylig aktivitet" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "Aktivitet vises her mens du jobber" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Last inn mer" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "Kunne ikke laste inn aktiviteter" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "" +#~ msgid "Save Changes" +#~ msgstr "Lagre endringer" -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "" +#~ msgid "No modules available." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "" +#~ msgid "Note" +#~ msgstr "Note" -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "" +#~ msgid "All modules are enabled by default." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "" +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "" +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "" +#~ msgid "Enable all modules?" +#~ msgstr "" -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "" +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "" -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Velg en klient..." +#~ msgid "Disable" +#~ msgstr "" -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "" +#~ msgid "module(s) in this category?" +#~ msgstr "" -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "" +#~ msgid "Validation errors:" +#~ msgstr "" -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "" +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "OIDC Debug Dashboard" -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "" +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "Inspiser konfigurasjon, leverandørmetadata og OIDC-brukere" -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "" +#~ msgid "Setup Wizard" +#~ msgstr "" -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "" +#~ msgid "Test Configuration" +#~ msgstr "Test konfigurasjon" -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "" +#~ msgid "OIDC Configuration" +#~ msgstr "OIDC-konfigurasjon" -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "" +#~ msgid "Auth Method" +#~ msgstr "Auth metode" -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "" +#~ msgid "Issuer" +#~ msgstr "Utsteder" -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "" +#~ msgid "Not configured" +#~ msgstr "Ikke konfigurert" -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "" +#~ msgid "Client ID" +#~ msgstr "Klient-ID" -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "" +#~ msgid "Client Secret" +#~ msgstr "Klienthemmelighet" -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "" +#~ msgid "Set" +#~ msgstr "Sett" -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "" +#~ msgid "Not set" +#~ msgstr "Ikke satt" -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "" +#~ msgid "Redirect URI" +#~ msgstr "Omdiriger URI" -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "" +#~ msgid "Auto-generated" +#~ msgstr "Autogenerert" -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "" +#~ msgid "Scopes" +#~ msgstr "Omfang" -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "" +#~ msgid "Claim Mapping" +#~ msgstr "Krav kartlegging" -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "" +#~ msgid "Username Claim" +#~ msgstr "Brukernavnkrav" -#: app/templates/components/support_modal.html:12 -msgid "Thank you for being a supporter. Sharing the app helps others discover it too." -msgstr "" +#~ msgid "Email Claim" +#~ msgstr "E-postkrav" -#: app/templates/components/support_modal.html:14 -msgid "TimeTracker is free and built independently. If it helps you, consider supporting its development." -msgstr "" +#~ msgid "Full Name Claim" +#~ msgstr "Fullt navnekrav" -#: app/templates/components/support_modal.html:37 -msgid "Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" +#~ msgid "Groups Claim" +#~ msgstr "Gruppekrav" -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -#, fuzzy -msgid "Donate" -msgstr "Ferdig" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "" +#~ msgid "Admin Group" +#~ msgstr "Administrasjonsgruppe" -#: app/templates/components/support_modal.html:48 -#, fuzzy -msgid "Love TimeTracker? Share it" -msgstr "TimeTracker Hjelpesenter" +#~ msgid "Admin Emails" +#~ msgstr "Administrator e-poster" -#: app/templates/components/support_modal.html:51 -msgid "A license is a supporter badge — it does not lock features. You keep full access either way." -msgstr "" +#~ msgid "Post-Logout URI" +#~ msgstr "URI etter utlogging" -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Hjem" +#~ msgid "Provider Metadata" +#~ msgstr "Leverandørmetadata" -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -#, fuzzy -msgid "Pagination" -msgstr "Mine oppgaver paginering" +#~ msgid "Error loading metadata:" +#~ msgstr "Feil ved innlasting av metadata:" -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "Discovery endpoint:" +#~ msgstr "Oppdagelsesendepunkt:" -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "" +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Vellykket lastet leverandørmetadata" -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Ringe" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Beskjed" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Retning" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "Utgående" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "Innkommende" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Tema" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Planlagt" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Oppfølgingsdato" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Innhold/notater" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Lagre kommunikasjon" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Fornavn" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Etternavn" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "Mobil" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "Avdeling" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Kontakt" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Fakturering" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Teknisk" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Angi som primærkontakt" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Tagger" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Lagre kontakt" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Sett Primær" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "Ingen kontakter funnet" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Legg til første kontakt" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Primær kontakt" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Kommunikasjonshistorie" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Legg til kommunikasjon" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "Ingen kommunikasjon registrert" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "" +#~ msgid "Endpoints" +#~ msgstr "Endepunkter" -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -#, fuzzy -msgid "Activity Date" -msgstr "Aktiver" +#~ msgid "Authorization" +#~ msgstr "Autorisasjon" -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "" +#~ msgid "Token" +#~ msgstr "Token" -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Navn på avtale" - -#: app/templates/deals/form.html:32 app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Velg klient" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Velg Kontakt" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Scene" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Deal verdi" - -#: app/templates/deals/form.html:75 app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Vinnsannsynlighet" - -#: app/templates/deals/form.html:80 app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Forventet lukkedato" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Relatert sitat" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Velg Sitat" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Lagre avtale" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Vant" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Tapt" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Alle stadier" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Verdi" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Sannsynlighet" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Forventet Lukk" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "Ingen tilbud funnet" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Opprett første avtale" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "" +#~ msgid "UserInfo" +#~ msgstr "Brukerinfo" -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "" +#~ msgid "End Session" +#~ msgstr "Avslutt økten" -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "" +#~ msgid "JWKS URI" +#~ msgstr "JWKS URI" -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "" +#~ msgid "Supported Features" +#~ msgstr "Støttede funksjoner" -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "" +#~ msgid "Response Types" +#~ msgstr "Svartyper" -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "" +#~ msgid "Grant Types" +#~ msgstr "Tilskuddstyper" -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Relatert prosjekt" +#~ msgid "Auth Methods" +#~ msgstr "Auth-metoder" -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "" +#~ msgid "Claims" +#~ msgstr "Krav" -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "" +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Leverandørmetadata er ikke lastet inn. " +#~ "Klikk \"Test konfigurasjon\" for å " +#~ "hente." -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "" +#~ msgid "Email" +#~ msgstr "E-post" -#: app/templates/deals/view.html:180 -#, fuzzy -msgid "History" -msgstr "Målhistorie" +#~ msgid "Full Name" +#~ msgstr "Fullt navn" -#: app/templates/deals/view.html:183 -#, fuzzy -msgid "View full history" -msgstr "Se alle detaljer" +#~ msgid "Role" +#~ msgstr "Rolle" -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "" +#~ msgid "Last Login" +#~ msgstr "Siste pålogging" -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Du ble nevnt" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Se oppgave og svar" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Faktura" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Forfalt faktura" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Se faktura" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Sitere" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Sitatgodkjenning avvist" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Se sitat" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Godkjenning forespurt" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Gjennomgå sitat" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Sitat godkjent" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "Sitat utløpt" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "Sitat utløper snart" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Sitat sendt" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Oppgaveoppdrag" - -#: app/templates/email/task_assigned.html:117 app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Vis oppgave" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Testdetaljer" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "Ditt ukentlige sammendrag" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 Dårlig forespørsel" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Ugyldig forespørsel" - -#: app/templates/errors/400.html:15 -msgid "The request you made is invalid or contains errors. This could be due to:" -msgstr "Forespørselen du sendte er ugyldig eller inneholder feil. Dette kan skyldes:" - -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Manglende eller ugyldige skjemadata" - -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Feilaktige forespørselsparametere" - -#: app/templates/errors/403.html:15 -msgid "You don't have permission to access this resource. This could be due to:" -msgstr "Du har ikke tillatelse til å få tilgang til denne ressursen. Dette kan skyldes:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Utilstrekkelige privilegier" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "Ikke innlogget" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Ressurstilgangsbegrensninger" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Noe gikk galt hos oss. Vennligst prøv igjen senere." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Prøv igjen" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Det oppsto en feil under behandlingen av forespørselen din." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Oppdater siden" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Gå til Logg inn" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "f.eks. reiser, måltider, kontorrekvisita" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "f.eks. REISER, MÅLTID" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Kort beskrivelse av denne kategorien..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "f.eks. fa-fly, fa-redskaper" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "f.eks. 19.00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Kategori" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Grunnleggende informasjon" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "f.eks. Fly til Berlin" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Ytterligere detaljer om utgiften..." - -#: app/templates/expenses/form.html:52 -#, fuzzy -msgid "Select Category" -msgstr "Kategori" - -#: app/templates/expenses/form.html:75 -#, fuzzy -msgid "Amount Details" -msgstr "Betalingsdetaljer" - -#: app/templates/expenses/form.html:124 -#, fuzzy -msgid "Association" -msgstr "Sted" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Betalingsdetaljer" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "f.eks. Lufthansa" - -#: app/templates/expenses/form.html:201 -#, fuzzy -msgid "Receipt & Additional Information" -msgstr "Tilleggsinformasjon" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Kvittering/Fakturanummer" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "f.eks. INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "f.eks. konferanse, kundemøte, haster" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Ytterligere merknader..." - -#: app/templates/expenses/form.html:254 -#, fuzzy -msgid "Options" -msgstr "Valgfri" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Filtrer utgifter" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Slett valgte utgifter" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Endre status for utvalgte utgifter" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Tilknyttet" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Avvis utgift" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Forklar hvorfor denne utgiften blir avvist..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "Er du sikker på at du vil slette denne utgiften?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Slett utgift" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "" +#~ msgid "OIDC Subject" +#~ msgstr "OIDC-emne" -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Importer/eksporter data" +#~ msgid "Inactive" +#~ msgstr "Inaktiv" -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Import/eksport" +#~ msgid "Never" +#~ msgstr "Aldri" -#: app/templates/import_export/index.html:14 -msgid "Import data from other time trackers or export your data for GDPR compliance and backups" -msgstr "Importer data fra andre tidssporere eller eksporter dataene dine for GDPR-overholdelse og sikkerhetskopier" +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Ingen brukere har logget på via OIDC ennå." -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Importer data" +#~ msgid "Environment Variables Reference" +#~ msgstr "Referanse til miljøvariabler" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "" +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Konfigurer OIDC ved å bruke disse miljøvariablene:" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Importer tidsoppføringer fra en CSV-fil" +#~ msgid "Variable" +#~ msgstr "Variabel" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Velg CSV-fil" +#~ msgid "Description" +#~ msgstr "Beskrivelse" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Last ned mal" +#~ msgid "Example" +#~ msgstr "Eksempel" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "" +#~ msgid "Authentication method" +#~ msgstr "Autentiseringsmetode" -#: app/templates/import_export/index.html:49 -msgid "Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" +#~ msgid "OIDC provider issuer URL" +#~ msgstr "OIDC-leverandørens utsteder-URL" -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "" +#~ msgid "Client ID from OIDC provider" +#~ msgstr "Klient-ID fra OIDC-leverandør" -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "" +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Klienthemmelighet fra OIDC-leverandør" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "" +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "Tilbakeringings-URL (valgfritt, automatisk generert)" -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "" +#~ msgid "Requested scopes" +#~ msgstr "Forespurte omfang" -#: app/templates/import_export/index.html:75 -msgid "Example: Enter \"debtor_number\" to detect duplicates by debtor number only (not by name)" -msgstr "" +#~ msgid "Claim containing username" +#~ msgstr "Krav som inneholder brukernavn" -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Importer fra Toggl Track" +#~ msgid "Claim containing email" +#~ msgstr "Krav som inneholder e-post" -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Importer tidsoppføringer fra Toggl Track" +#~ msgid "Claim containing full name" +#~ msgstr "Påstand som inneholder fullt navn" -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Importer fra Toggl" +#~ msgid "Claim containing groups" +#~ msgstr "Krav som inneholder grupper" -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Import fra Harvest" +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Gruppenavn for administratorrolle (valgfritt)" -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Importer tidsoppføringer fra Harvest" +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "Kommaseparerte admin-e-poster (valgfritt)" -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Gjenopprett fra sikkerhetskopi" +#~ msgid "OIDC Setup Wizard" +#~ msgstr "" -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "" +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Importhistorikk" +#~ msgid "Basic Config" +#~ msgstr "" -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Eksporter data" +#~ msgid "Test Connection" +#~ msgstr "" -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Full dataeksport (GDPR)" +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "" -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Eksporter alle dine personlige data" +#~ msgid "OIDC Issuer URL" +#~ msgstr "" -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Eksporter som JSON" +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Eksporter som ZIP" +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "" -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Filtrert eksport" +#~ msgid "Enter client secret" +#~ msgstr "" -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Eksporter spesifikke data med filtre" +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "" -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Eksporter med filtre" +#~ msgid "Authentication Method" +#~ msgstr "Autentiseringsmetode" -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "" +#~ msgid "OIDC Only" +#~ msgstr "" -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" +#~ msgid "SSO login only, no local passwords" +#~ msgstr "" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "" +#~ msgid "Both" +#~ msgstr "" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Lag en fullstendig sikkerhetskopi av databasen" +#~ msgid "SSO and local password authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Eksporter historikk" +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "API-token" +#~ msgid "Step 2: Test Connection" +#~ msgstr "" -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "Arbeidsområde-ID" +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Import" +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "" -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "Konto-ID" +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "" +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "Import window and web activity from ActivityWatch (aw-server) as automatic time entries" -msgstr "" +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "" +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "" +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "Base URL of your aw-server (no trailing slash). aw-server must be running and reachable from this server." -msgstr "" +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "" + +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" + +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" + +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "" + +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" + +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" + +#~ msgid "Generate Configuration" +#~ msgstr "" + +#~ msgid "Environment Variables (.env file)" +#~ msgstr "" + +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" + +#~ msgid "OIDC User Details" +#~ msgstr "OIDC-brukerdetaljer" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Profil og OIDC-identitet for denne brukeren" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "Tilbake til OIDC Debug" + +#~ msgid "User Profile" +#~ msgstr "Brukerprofil" + +#~ msgid "Active" +#~ msgstr "Aktiv" + +#~ msgid "Preferred Language" +#~ msgstr "Foretrukket språk" + +#~ msgid "Created At" +#~ msgstr "Opprettet kl" + +#~ msgid "OIDC Information" +#~ msgstr "OAIDC-informasjon" + +#~ msgid "OIDC Issuer" +#~ msgstr "OIDC-utsteder" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "OIDC-emne (under)" + +#~ msgid "Local" +#~ msgstr "Lokalt" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Denne brukeren ble opprettet eller " +#~ "koblet til via OIDC. Utstederen og " +#~ "emnet brukes til å identifisere brukeren" +#~ " unikt på tvers av påloggingsøkter." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Denne brukeren har ingen OIDC-" +#~ "informasjon. De kan ha blitt opprettet" +#~ " manuelt eller via egenregistrering uten" +#~ " OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "Aktivitetsstatistikk" + +#~ msgid "Time Entries" +#~ msgstr "Tidsoppføringer" + +#~ msgid "None" +#~ msgstr "Ingen" + +#~ msgid "Active Timer" +#~ msgstr "Aktiv timer" + +#~ msgid "Tasks Created" +#~ msgstr "Oppgaver opprettet" + +#~ msgid "Edit User" +#~ msgstr "Rediger bruker" + +#~ msgid "View All Users" +#~ msgstr "Vis alle brukere" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "PDF-sitatdesigner" + +#~ msgid "Visual Invoice Designer" +#~ msgstr "Visual Quote Designer" + +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "Dra og slipp elementer for å designe tilbudsoppsettet ditt" + +#~ msgid "How to use:" +#~ msgstr "Slik bruker du:" + +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Klikk på elementer fra venstre sidefelt" +#~ " for å legge dem til på " +#~ "lerretet. Klikk på elementer for å " +#~ "velge og tilpasse dem i " +#~ "egenskapspanelet. Bruk justeringsverktøyene og " +#~ "hurtigtastene for raskere redigering." + +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Tastatursnarveier:" + +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "" + +#~ msgid "Items Table:" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" + +#~ msgid "Expenses Table:" +#~ msgstr "Utgifter Delsum" + +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" + +#~ msgid "Saving:" +#~ msgstr "Lagrer..." + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" + +#~ msgid "Preview:" +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" + +#~ msgid "See" +#~ msgstr "Sett" + +#~ msgid "for full documentation." +#~ msgstr "Dokumentasjon" + +#~ msgid "Clear Canvas" +#~ msgstr "Klart lerret" + +#~ msgid "Generate Preview" +#~ msgstr "Generer forhåndsvisning" + +#~ msgid "Save Design" +#~ msgstr "Lagre design" + +#~ msgid "View Code" +#~ msgstr "Se kode" + +#~ msgid "Export JSON" +#~ msgstr "" + +#~ msgid "Import JSON" +#~ msgstr "" + +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Fest til rutenett (10px)" + +#~ msgid "Toolbox" +#~ msgstr "Verktøykasse" + +#~ msgid "Search elements & variables..." +#~ msgstr "Søkeelementer og variabler..." + +#~ msgid "Elements" +#~ msgstr "Elementer" + +#~ msgid "Variables" +#~ msgstr "Variabler" + +#~ msgid "Basic Elements" +#~ msgstr "Grunnleggende elementer" + +#~ msgid "Custom Text" +#~ msgstr "Egendefinert tekst" + +#~ msgid "Text" +#~ msgstr "Tekst" + +#~ msgid "Heading" +#~ msgstr "Overskrift" + +#~ msgid "Line" +#~ msgstr "Linje" + +#~ msgid "Rectangle" +#~ msgstr "Rektangel" + +#~ msgid "Circle" +#~ msgstr "Sirkel" + +#~ msgid "Company Info" +#~ msgstr "Bedriftsinformasjon" + +#~ msgid "Company Logo" +#~ msgstr "Firmalogo" + +#~ msgid "Company Name" +#~ msgstr "Firmanavn" + +#~ msgid "Company Details" +#~ msgstr "Firmadetaljer" + +#~ msgid "Address" +#~ msgstr "Adresse" + +#~ msgid "Phone" +#~ msgstr "Telefon" + +#~ msgid "Website" +#~ msgstr "Nettsted" + +#~ msgid "Tax ID" +#~ msgstr "Skatte-ID" + +#~ msgid "Invoice Data" +#~ msgstr "Fakturadetaljer" + +#~ msgid "Invoice Number" +#~ msgstr "Fakturanummer" + +#~ msgid "Invoice Date" +#~ msgstr "Fakturert" + +#~ msgid "Due Date" +#~ msgstr "Forfallsdato" + +#~ msgid "Client Info" +#~ msgstr "Kundeinformasjon" + +#~ msgid "Client Name" +#~ msgstr "Kundens navn" + +#~ msgid "Client Address" +#~ msgstr "Kundeadresse" + +#~ msgid "Items Table" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "Expenses Table" +#~ msgstr "Utgifter Delsum" + +#~ msgid "Subtotal" +#~ msgstr "Delsum" + +#~ msgid "Tax" +#~ msgstr "Avgift" + +#~ msgid "Total Amount" +#~ msgstr "Totalt beløp" + +#~ msgid "Terms" +#~ msgstr "Vilkår" + +#~ msgid "Payment & Project" +#~ msgstr "Betaling og prosjekt" + +#~ msgid "Payment Date" +#~ msgstr "Betalingsdato" + +#~ msgid "Payment Method" +#~ msgstr "Betalingsmåte" + +#~ msgid "Payment Status" +#~ msgstr "Betalingsstatus" + +#~ msgid "Amount Paid" +#~ msgstr "Innbetalt beløp" + +#~ msgid "Project Name" +#~ msgstr "Prosjektnavn" + +#~ msgid "Client Email" +#~ msgstr "Kundens e-post" + +#~ msgid "Client Phone" +#~ msgstr "Kundetelefon" + +#~ msgid "QR Code" +#~ msgstr "QR-kode" + +#~ msgid "Barcode" +#~ msgstr "Strekkode" + +#~ msgid "Page Number" +#~ msgstr "Sidetall" + +#~ msgid "Current Date" +#~ msgstr "Gjeldende dato" + +#~ msgid "Watermark" +#~ msgstr "Vannmerke" + +#~ msgid "Bank Info" +#~ msgstr "Bankinfo" + +#~ msgid "Currency" +#~ msgstr "Valuta" + +#~ msgid "Decorative Image" +#~ msgstr "" + +#~ msgid "Invoice Fields" +#~ msgstr "Fakturavarer" + +#~ msgid "Invoice number" +#~ msgstr "Fakturanummer" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Sitatstatus (utkast/sendt/betalt/forfalt)" + +#~ msgid "Issue date" +#~ msgstr "Utstedelsesdato" + +#~ msgid "Due date" +#~ msgstr "Forfallsdato" + +#~ msgid "Subtotal amount" +#~ msgstr "Subtotalt beløp" + +#~ msgid "Tax rate (%)" +#~ msgstr "Skattesats (%)" + +#~ msgid "Tax amount" +#~ msgstr "Skattebeløp" + +#~ msgid "Total amount" +#~ msgstr "Totalt beløp" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Valutakode (EUR, USD osv.)" + +#~ msgid "Invoice notes" +#~ msgstr "Fakturavarer" + +#~ msgid "Terms & conditions" +#~ msgstr "Vilkår og betingelser" + +#~ msgid "Client Fields" +#~ msgstr "Klientfelt" + +#~ msgid "Client company name" +#~ msgstr "Kundens firmanavn" + +#~ msgid "Client email address" +#~ msgstr "Klientens e-postadresse" + +#~ msgid "Client full address" +#~ msgstr "Klientens fulle adresse" + +#~ msgid "Client contact person" +#~ msgstr "Kundekontaktperson" + +#~ msgid "Client phone number" +#~ msgstr "Kundens telefonnummer" + +#~ msgid "Payment Fields" +#~ msgstr "Betalingsfelt" + +#~ msgid "Payment status" +#~ msgstr "Betalingsstatus" + +#~ msgid "Payment date" +#~ msgstr "Betalingsdato" + +#~ msgid "Payment method" +#~ msgstr "Betalingsmåte" + +#~ msgid "Payment reference number" +#~ msgstr "Betalingsreferansenummer" + +#~ msgid "Amount paid" +#~ msgstr "Innbetalt beløp" + +#~ msgid "Outstanding amount" +#~ msgstr "Utestående beløp" + +#~ msgid "Payment notes" +#~ msgstr "Betalingsanmerkninger" + +#~ msgid "Project Fields" +#~ msgstr "Prosjektfelt" + +#~ msgid "Project name" +#~ msgstr "Prosjektnavn" + +#~ msgid "Project code" +#~ msgstr "Prosjektkode" + +#~ msgid "Project description" +#~ msgstr "Prosjektbeskrivelse" + +#~ msgid "Project billing reference" +#~ msgstr "Prosjektfaktureringsreferanse" + +#~ msgid "Company/Settings Fields" +#~ msgstr "Felt for bedrift/innstillinger" + +#~ msgid "Your company name" +#~ msgstr "Firmanavnet ditt" + +#~ msgid "Your company address" +#~ msgstr "Din bedriftsadresse" + +#~ msgid "Your company email" +#~ msgstr "Din bedrifts e-post" + +#~ msgid "Your company phone" +#~ msgstr "Firmatelefonen din" + +#~ msgid "Your company website" +#~ msgstr "Din bedrifts nettside" + +#~ msgid "Your tax ID number" +#~ msgstr "Skatte-ID-nummeret ditt" + +#~ msgid "Your bank account info" +#~ msgstr "Din bankkontoinformasjon" + +#~ msgid "Default invoice terms" +#~ msgstr "Standard fakturavilkår" + +#~ msgid "Default invoice notes" +#~ msgstr "Standard fakturanotater" + +#~ msgid "Date/Time Fields" +#~ msgstr "Dato/klokkeslett-felt" + +#~ msgid "Current date" +#~ msgstr "Gjeldende dato" + +#~ msgid "Invoice creation date" +#~ msgstr "Dato for opprettelse av tilbud" + +#~ msgid "Invoice last update date" +#~ msgstr "Sitat siste oppdateringsdato" + +#~ msgid "Invoice Items Loop" +#~ msgstr "Fakturavarer" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "" + +#~ msgid "Time-based items only" +#~ msgstr "Tidsbaserte tjenester og timearbeid" + +#~ msgid "Item description" +#~ msgstr "Varebeskrivelse" + +#~ msgid "Item quantity" +#~ msgstr "Vare mengde" + +#~ msgid "Item unit price" +#~ msgstr "Vare enhetspris" + +#~ msgid "Item total amount" +#~ msgstr "Vare totalbeløp" + +#~ msgid "End loop" +#~ msgstr "Sluttløkke" + +#~ msgid "Extra Goods Loop" +#~ msgstr "Ekstra varer" + +#~ msgid "Loop through extra goods only" +#~ msgstr "Prosjekt Ekstra varer" + +#~ msgid "Good name" +#~ msgstr "Rollenavn" + +#~ msgid "Good total amount" +#~ msgstr "Totalt beløp" + +#~ msgid "Design Canvas" +#~ msgstr "Design Canvas" + +#~ msgid "Page Size:" +#~ msgstr "Sidestørrelse:" + +#~ msgid "Zoom In" +#~ msgstr "Zoom inn" + +#~ msgid "Zoom Out" +#~ msgstr "Zoom ut" + +#~ msgid "Delete Selected" +#~ msgstr "Slett valgte" + +#~ msgid "Properties" +#~ msgstr "Egenskaper" + +#~ msgid "Warnings" +#~ msgstr "Advarsel" + +#~ msgid "Refresh warnings" +#~ msgstr "Oppdater siden" + +#~ msgid "No warnings" +#~ msgstr "Advarsel" + +#~ msgid "Template Settings" +#~ msgstr "" + +#~ msgid "Date Format" +#~ msgstr "Datoformat" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "Velg et element for å redigere egenskapene" + +#~ msgid "PDF Preview" +#~ msgstr "PDF forhåndsvisning" + +#~ msgid "Page Size" +#~ msgstr "" + +#~ msgid "Refresh Preview" +#~ msgstr "" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "" + +#~ msgid "Close Preview" +#~ msgstr "" + +#~ msgid "Zoom Level" +#~ msgstr "" + +#~ msgid "Reset Zoom" +#~ msgstr "" + +#~ msgid "Fit to Width" +#~ msgstr "" + +#~ msgid "Fit Width" +#~ msgstr "" + +#~ msgid "Fit to Height" +#~ msgstr "" + +#~ msgid "Fit Height" +#~ msgstr "" + +#~ msgid "Actual Size" +#~ msgstr "" + +#~ msgid "Generating preview..." +#~ msgstr "" + +#~ msgid "Preview Error" +#~ msgstr "" + +#~ msgid "Retry" +#~ msgstr "" + +#~ msgid "Generated Code" +#~ msgstr "Generert kode" + +#~ msgid "Change Image" +#~ msgstr "" + +#~ msgid "Upload Image" +#~ msgstr "" + +#~ msgid "Remove Image" +#~ msgstr "" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "" + +#~ msgid "Uploading..." +#~ msgstr "" + +#~ msgid "Error: Image update function not found" +#~ msgstr "" + +#~ msgid "Failed to upload image" +#~ msgstr "" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "" + +#~ msgid "Clear all elements?" +#~ msgstr "Vil du slette alle elementene?" + +#~ msgid "Clear" +#~ msgstr "Klar" + +#~ msgid "Exit Fullscreen" +#~ msgstr "" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "" + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" + +#~ msgid "Reset to defaults?" +#~ msgstr "Tilbakestille til standard?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "Tilbakestill PDF-oppsett" + +#~ msgid "Error importing template" +#~ msgstr "" + +#~ msgid "PDF Quote Designer" +#~ msgstr "PDF-sitatdesigner" + +#~ msgid "Visual Quote Designer" +#~ msgstr "Visual Quote Designer" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "Dra og slipp elementer for å designe tilbudsoppsettet ditt" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "Quote Items Table:" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" + +#~ msgid "Quote Data" +#~ msgstr "Sitat data" + +#~ msgid "Quote Number" +#~ msgstr "Sitat nummer" + +#~ msgid "Quote Date" +#~ msgstr "Sitat dato" + +#~ msgid "Quote Items Table" +#~ msgstr "Sitat elementer Tabell" + +#~ msgid "Quote Fields" +#~ msgstr "Sitatfelt" + +#~ msgid "Quote number" +#~ msgstr "Sitat nummer" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Sitatstatus (utkast/sendt/betalt/forfalt)" + +#~ msgid "Quote notes" +#~ msgstr "Sitat notater" + +#~ msgid "Quote status" +#~ msgstr "Sitatstatus" + +#~ msgid "Quote accepted date" +#~ msgstr "Sitat akseptert dato" + +#~ msgid "Quote creation date" +#~ msgstr "Dato for opprettelse av tilbud" + +#~ msgid "Quote last update date" +#~ msgstr "Sitat siste oppdateringsdato" + +#~ msgid "Quote Items Loop" +#~ msgstr "Sitat elementer Loop" + +#~ msgid "Loop through invoice items" +#~ msgstr "Gå gjennom fakturaelementer" + +#~ msgid "Align Left" +#~ msgstr "Venstrejuster" + +#~ msgid "Center Horizontally" +#~ msgstr "Sentrer horisontalt" + +#~ msgid "Align Right" +#~ msgstr "Høyrejuster" + +#~ msgid "Align Top" +#~ msgstr "Juster toppen" + +#~ msgid "Center Vertically" +#~ msgstr "Sentrer vertikalt" + +#~ msgid "Align Bottom" +#~ msgstr "Juster bunnen" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "" + +#~ msgid "Email Mappings" +#~ msgstr "" + +#~ msgid "Add Mapping" +#~ msgstr "" + +#~ msgid "Salesman Initial" +#~ msgstr "" + +#~ msgid "Email Address" +#~ msgstr "E-postadresse" + +#~ msgid "Pattern/Domain" +#~ msgstr "" + +#~ msgid "Add Email Mapping" +#~ msgstr "" + +#~ msgid "1-20 letters only" +#~ msgstr "" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" + +#~ msgid "Direct Email Address" +#~ msgstr "" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" + +#~ msgid "Edit Email Mapping" +#~ msgstr "" + +#~ msgid "Error saving mapping" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "" + +#~ msgid "Error deleting mapping" +#~ msgstr "" + +#~ msgid "Time Entry Requirements" +#~ msgstr "Tidsregistreringsmaler" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" + +#~ msgid "Require description when logging time" +#~ msgstr "" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "" + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" + +#~ msgid "Support visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "" + +#~ msgid "Buy key" +#~ msgstr "Nøkkel" + +#~ msgid "— key sent by email." +#~ msgstr "Send e-post" + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "" + +#~ msgid "Get key" +#~ msgstr "Nøkkel" + +#~ msgid "Step 1: System ID" +#~ msgstr "" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "" + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" + +#~ msgid "Step 3: Paste code" +#~ msgstr "" + +#~ msgid "Enter code from email" +#~ msgstr "Kode, navn, e-post" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "" + +#~ msgid "Company Branding" +#~ msgstr "Firma merkevarebygging" + +#~ msgid "Invoice Defaults" +#~ msgstr "Fakturastandarder" + +#~ msgid "Backup Settings" +#~ msgstr "Innstillinger for sikkerhetskopiering" + +#~ msgid "LDAP" +#~ msgstr "" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" + +#~ msgid "Enabled for auth" +#~ msgstr "Aktivert" + +#~ msgid "Host" +#~ msgstr "Tapt" + +#~ msgid "SSL" +#~ msgstr "Bruk SSL" + +#~ msgid "TLS" +#~ msgstr "Bruk TLS" + +#~ msgid "on" +#~ msgstr "på" + +#~ msgid "off" +#~ msgstr "av" + +#~ msgid "User DN" +#~ msgstr "Brukermeny" + +#~ msgid "User login attribute" +#~ msgstr "Raskere lastetider" + +#~ msgid "Test LDAP Connection" +#~ msgstr "Vilkår og betingelser" + +#~ msgid "Export Settings" +#~ msgstr "Eksportinnstillinger" + +#~ msgid "Kiosk Mode" +#~ msgstr "" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "" + +#~ msgid "Default Movement Type" +#~ msgstr "" + +#~ msgid "Adjustment" +#~ msgstr "Innstilling" + +#~ msgid "Transfer" +#~ msgstr "Overføre" + +#~ msgid "Sale" +#~ msgstr "Salg" + +#~ msgid "Rent" +#~ msgstr "Utleie" + +#~ msgid "Purchase" +#~ msgstr "Kjøpe" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" + +#~ msgid "Availability" +#~ msgstr "Tilgjengelig" + +#~ msgid "Use environment default" +#~ msgstr "Fakturastandarder" + +#~ msgid "currently" +#~ msgstr "Valuta" + +#~ msgid "Provider" +#~ msgstr "" + +#~ msgid "Base URL" +#~ msgstr "Bilde-URL" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "" + +#~ msgid "Model" +#~ msgstr "Kode" + +#~ msgid "Hosted API key" +#~ msgstr "Opprett API-token" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "La feltet stå tomt for å beholde gjeldende passord" + +#~ msgid "Only required for hosted providers" +#~ msgstr "" + +#~ msgid "Clear stored API key" +#~ msgstr "" + +#~ msgid "Timeout seconds" +#~ msgstr "Tidsavbrudd (sekunder)" + +#~ msgid "Context limit" +#~ msgstr "Innholdstype" + +#~ msgid "System prompt" +#~ msgstr "Systemrolle" + +#~ msgid "Test AI connection" +#~ msgstr "Vilkår og betingelser" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Personvern og analyse" + +#~ msgid "Save Settings" +#~ msgstr "Lagre innstillinger" + +#~ msgid "Upload New Logo" +#~ msgstr "Last opp ny logo" + +#~ msgid "Logo Preview" +#~ msgstr "Forhåndsvisning av logo" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Er du sikker på at du vil fjerne firmalogoen?" + +#~ msgid "Remove Logo" +#~ msgstr "Fjern logo" + +#~ msgid "Copied" +#~ msgstr "" + +#~ msgid "Please enter a code." +#~ msgstr "" + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" + +#~ msgid "Request failed." +#~ msgstr "Be om godkjenning" + +#~ msgid "Testing connection..." +#~ msgstr "Test konfigurasjon" + +#~ msgid "Connection failed." +#~ msgstr "Operasjonen mislyktes" + +#~ msgid "AI connection succeeded." +#~ msgstr "" + +#~ msgid "AI connection failed." +#~ msgstr "Operasjonen mislyktes" + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Dashboard for telemetri og analyse" + +#~ msgid "Admin → Settings" +#~ msgstr "Admin → Innstillinger" + +#~ msgid "Password Reset" +#~ msgstr "" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "La feltet stå tomt for å beholde gjeldende passord" + +#~ msgid "Client Portal Access" +#~ msgstr "Klientportaltilgang" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "" + +#~ msgid "Assigned clients" +#~ msgstr "Tildelt til" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "" + +#~ msgid "Admin Access" +#~ msgstr "Administratortilgang" + +#~ msgid "Migrate to new role system" +#~ msgstr "Migrere til nytt rollesystem" + +#~ msgid "Migrate" +#~ msgstr "Migrer" + +#~ msgid "Roles" +#~ msgstr "Roller" + +#~ msgid "No users found." +#~ msgstr "Ingen brukere funnet." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "Kan ikke slette brukeren «{name}» fordi" +#~ " de har {count} tidsoppføringer. Brukere" +#~ " med eksisterende tidsregistreringer kan " +#~ "ikke slettes." + +#~ msgid "Cannot Delete User" +#~ msgstr "Kan ikke slette bruker" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette brukeren \"{name}\"? Denne handlingen" +#~ " kan ikke angres." + +#~ msgid "Delete User" +#~ msgstr "Slett bruker" + +#~ msgid "Custom Field Definitions" +#~ msgstr "" + +#~ msgid "Create" +#~ msgstr "" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" + +#~ msgid "Field Key" +#~ msgstr "" + +#~ msgid "e.g., debtor_number" +#~ msgstr "" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" + +#~ msgid "Label" +#~ msgstr "Merkelapp" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "" + +#~ msgid "Display name shown in client forms" +#~ msgstr "" + +#~ msgid "Optional help text for this field" +#~ msgstr "" + +#~ msgid "Display Order" +#~ msgstr "" + +#~ msgid "Lower numbers appear first" +#~ msgstr "" + +#~ msgid "Mandatory" +#~ msgstr "" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "" + +#~ msgid "Create Custom Field" +#~ msgstr "" + +#~ msgid "Order" +#~ msgstr "" + +#~ msgid "Required" +#~ msgstr "" + +#~ msgid "Optional" +#~ msgstr "Valgfri" + +#~ msgid "No custom field definitions found." +#~ msgstr "" + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" + +#~ msgid "Features:" +#~ msgstr "" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" + +#~ msgid "Control field order and visibility" +#~ msgstr "" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" + +#~ msgid "Example:" +#~ msgstr "" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" + +#~ msgid "Set as default template" +#~ msgstr "Angi som standard mal" + +#~ msgid "HTML Template" +#~ msgstr "HTML-mal" + +#~ msgid "Custom Message" +#~ msgstr "Egendefinert melding" + +#~ msgid "More Variables" +#~ msgstr "Flere variabler" + +#~ msgid "Create Template" +#~ msgstr "Lag mal" + +#~ msgid "Available Variables" +#~ msgstr "Tilgjengelige variabler" + +#~ msgid "Invoice Variables" +#~ msgstr "Fakturavariabler" + +#~ msgid "Other Variables" +#~ msgstr "Andre variabler" + +#~ msgid "Send test email" +#~ msgstr "Send test-e-post" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" + +#~ msgid "Recipient" +#~ msgstr "Mottakers e-post" + +#~ msgid "Invoice ID" +#~ msgstr "Fakturert" + +#~ msgid "Update Template" +#~ msgstr "Oppdater mal" + +#~ msgid "Failed to send test email." +#~ msgstr "Send test-e-post" + +#~ msgid "No email templates found." +#~ msgstr "Finner ingen e-postmaler." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "Lag din første e-postmal for å tilpasse e-postfakturaer." + +#~ msgid "Create Email Template" +#~ msgstr "Lag e-postmal" + +#~ msgid "Delete Email Template" +#~ msgstr "Slett e-postmal" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "Er du sikker på at du vil slette" + +#~ msgid "This action cannot be undone." +#~ msgstr "Denne handlingen kan ikke angres." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" + +#~ msgid "Template Information" +#~ msgstr "Malinformasjon" + +#~ msgid "Integration Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" + +#~ msgid "Global" +#~ msgstr "" + +#~ msgid "Per User" +#~ msgstr "" + +#~ msgid "Setup" +#~ msgstr "" + +#~ msgid "Trello API Key" +#~ msgstr "" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "" + +#~ msgid "Get your API key from" +#~ msgstr "" + +#~ msgid "Trello API Secret" +#~ msgstr "" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "" + +#~ msgid "Get your API secret from" +#~ msgstr "" + +#~ msgid "(shown after generating API key)" +#~ msgstr "" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" + +#~ msgid "OAuth Client ID" +#~ msgstr "" + +#~ msgid "OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" + +#~ msgid "GitLab Instance URL" +#~ msgstr "" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" + +#~ msgid "OAuth Redirect URI" +#~ msgstr "" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "" + +#~ msgid "Save Credentials" +#~ msgstr "" + +#~ msgid "How Google Calendar Works" +#~ msgstr "" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" + +#~ msgid "Connection Status" +#~ msgstr "" + +#~ msgid "View Integration" +#~ msgstr "" + +#~ msgid "Next Steps" +#~ msgstr "" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "" + +#~ msgid "Connect Integration" +#~ msgstr "" + +#~ msgid "Edit Link Template" +#~ msgstr "" + +#~ msgid "Create Link Template" +#~ msgstr "" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "" + +#~ msgid "Template Name" +#~ msgstr "" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "" + +#~ msgid "Optional description" +#~ msgstr "" + +#~ msgid "URL Template" +#~ msgstr "" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "" + +#~ msgid "Icon" +#~ msgstr "Ikon" + +#~ msgid "fas fa-link" +#~ msgstr "" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "" + +#~ msgid "Name" +#~ msgstr "Navn" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "" + +#~ msgid "No link templates found." +#~ msgstr "" + +#~ msgid "How Link Templates Work" +#~ msgstr "" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "" + +#~ msgid "Create a link template with URL:" +#~ msgstr "" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" + +#~ msgid "URL Template Format:" +#~ msgstr "" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "" + +#~ msgid "System Permissions" +#~ msgstr "Systemtillatelser" + +#~ msgid "All available permissions in the system" +#~ msgstr "Alle tilgjengelige tillatelser i systemet" + +#~ msgid "Back to Roles" +#~ msgstr "Tilbake til Roller" + +#~ msgid "permissions" +#~ msgstr "tillatelser" + +#~ msgid "No description available" +#~ msgstr "Ingen beskrivelse tilgjengelig" + +#~ msgid "About Permissions" +#~ msgstr "Om tillatelser" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Tillatelser definerer hvilke handlinger " +#~ "brukere kan utføre i systemet. Disse " +#~ "tillatelsene tildeles roller, og roller " +#~ "tildeles brukere. Dette gir et " +#~ "fleksibelt og detaljert tilgangskontrollsystem." + +#~ msgid "Edit Role" +#~ msgstr "Rediger rolle" + +#~ msgid "Create New Role" +#~ msgstr "Opprett ny rolle" + +#~ msgid "Role Name" +#~ msgstr "Rollenavn" + +#~ msgid "A unique name for this role" +#~ msgstr "Et unikt navn for denne rollen" + +#~ msgid "Optional description of this role" +#~ msgstr "Valgfri beskrivelse av denne rollen" + +#~ msgid "Permissions" +#~ msgstr "Tillatelser" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Velg tillatelsene denne rollen skal ha:" + +#~ msgid "Toggle All" +#~ msgstr "Slå på alle" + +#~ msgid "Module visibility" +#~ msgstr "" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" + +#~ msgid "Hide" +#~ msgstr "" + +#~ msgid "Update Role" +#~ msgstr "Oppdater rolle" + +#~ msgid "Create Role" +#~ msgstr "Opprett rolle" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Administrer roller og deres tillatelser" + +#~ msgid "View Permissions" +#~ msgstr "Se tillatelser" + +#~ msgid "Total Roles" +#~ msgstr "Totale roller" + +#~ msgid "System Roles" +#~ msgstr "Systemroller" + +#~ msgid "Custom Roles" +#~ msgstr "Egendefinerte roller" + +#~ msgid "Assigned Users" +#~ msgstr "Tilordnede brukere" + +#~ msgid "Type" +#~ msgstr "Type" + +#~ msgid "Default role" +#~ msgstr "Standard rolle" + +#~ msgid "user" +#~ msgstr "bruker" + +#~ msgid "No users" +#~ msgstr "Ingen brukere" + +#~ msgid "Custom" +#~ msgstr "Skikk" + +#~ msgid "View" +#~ msgstr "Utsikt" + +#~ msgid "Permissions for" +#~ msgstr "Tillatelser for" + +#~ msgid "No permissions assigned." +#~ msgstr "Ingen tillatelser tildelt." + +#~ msgid "No roles found." +#~ msgstr "Ingen roller funnet." + +#~ msgid "About Roles & Permissions" +#~ msgstr "Om roller og tillatelser" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "Roller er samlinger av tillatelser som" +#~ " kan tildeles brukere. Systemroller er " +#~ "forhåndsdefinert og kan ikke slettes " +#~ "eller gis nytt navn, men tilpassede " +#~ "roller kan opprettes for dine spesifikke" +#~ " behov." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "Er du sikker på at du vil slette rollen" + +#~ msgid "Delete Role" +#~ msgstr "Slett rolle" + +#~ msgid "No description" +#~ msgstr "Ingen beskrivelse" + +#~ msgid "Role Information" +#~ msgstr "Rolleinformasjon" + +#~ msgid "System Role" +#~ msgstr "Systemrolle" + +#~ msgid "Custom Role" +#~ msgstr "Egendefinert rolle" + +#~ msgid "Total Permissions" +#~ msgstr "Totale tillatelser" + +#~ msgid "Created" +#~ msgstr "Opprettet" + +#~ msgid "Users with this Role" +#~ msgstr "Brukere med denne rollen" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Ingen brukere er tildelt denne rollen ennå." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "Denne rollen har ingen tillatelser tildelt." + +#~ msgid "Back to User" +#~ msgstr "Tilbake til Bruker" + +#~ msgid "Manage Roles for" +#~ msgstr "Administrer roller for" + +#~ msgid "Assign Roles" +#~ msgstr "Tildel roller" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Velg rollene denne brukeren skal ha. " +#~ "Brukere arver alle tillatelser fra sine" +#~ " tildelte roller." + +#~ msgid "Update Roles" +#~ msgstr "Oppdater roller" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Gjeldende effektive tillatelser" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "Dette er alle tillatelsene brukeren har gjennom rollene sine:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "Ingen tillatelser (tilordne roller for å gi tillatelser)" + +#~ msgid "Create Webhook" +#~ msgstr "Lag Webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Rediger Webhook" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Konfigurer webhook for integrasjoner" + +#~ msgid "Webhook URL" +#~ msgstr "Webhook URL" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "Nettadressen som webhook-hendelser vil bli sendt til" + +#~ msgid "Events" +#~ msgstr "Hendelser" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Velg hvilke hendelser som skal utløse denne webhooken" + +#~ msgid "HTTP Method" +#~ msgstr "HTTP-metode" + +#~ msgid "Content Type" +#~ msgstr "Innholdstype" + +#~ msgid "Max Retries" +#~ msgstr "Max prøver på nytt" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Forsinkelse på nytt (sekunder)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Tidsavbrudd (sekunder)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Regenerer hemmelighet" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "" +#~ "Advarsel: Regenerering av hemmeligheten vil" +#~ " ugyldiggjøre den gjeldende hemmeligheten" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Administrer webhook-integrasjoner" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "Statistics" +#~ msgstr "Statistikk" + +#~ msgid "Total" +#~ msgstr "Total" + +#~ msgid "No webhooks configured" +#~ msgstr "Ingen webhooks er konfigurert" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Lag din første webhook" + +#~ msgid "Webhook details" +#~ msgstr "Webhook detaljer" + +#~ msgid "Test" +#~ msgstr "Test" + +#~ msgid "Secret" +#~ msgstr "Hemmelig" + +#~ msgid "(truncated)" +#~ msgstr "(avkortet)" + +#~ msgid "Total Deliveries" +#~ msgstr "Totale leveranser" + +#~ msgid "Successful" +#~ msgstr "Vellykket" + +#~ msgid "Last Delivery" +#~ msgstr "Siste levering" + +#~ msgid "Recent Deliveries" +#~ msgstr "Nylige leveranser" + +#~ msgid "Event" +#~ msgstr "Hendelse" + +#~ msgid "Attempt" +#~ msgstr "Forsøk" + +#~ msgid "Response" +#~ msgstr "Svar" + +#~ msgid "Time" +#~ msgstr "Tid" + +#~ msgid "Retrying" +#~ msgstr "Prøver på nytt" + +#~ msgid "No deliveries yet" +#~ msgstr "Ingen leveranser ennå" + +#~ msgid "Send a test webhook event?" +#~ msgstr "Sende et test webhook-arrangement?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "Test webhook sendt!" + +#~ msgid "Error:" +#~ msgstr "Feil:" + +#~ msgid "Unknown error" +#~ msgstr "Ukjent feil" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Feil ved sending av testwebhook:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Analytics Dashboard" + +#~ msgid "Last 7 days" +#~ msgstr "Siste 7 dager" + +#~ msgid "Last 30 days" +#~ msgstr "Siste 30 dager" + +#~ msgid "Last 90 days" +#~ msgstr "Siste 90 dager" + +#~ msgid "Last year" +#~ msgstr "I fjor" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Eksporter som JSON" + +#~ msgid "Export Charts" +#~ msgstr "Eksporter CSV" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Nøkkelberegninger og innsikt om tidsregistreringen din" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Gjennomsnittlig daglige timer" + +#~ msgid "Regular" +#~ msgstr "Retur" + +#~ msgid "Overtime" +#~ msgstr "Tid" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Trend for daglige timer" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Fakturerbar vs Ikke-fakturerbar" + +#~ msgid "Weekly Trends" +#~ msgstr "Ukentlige trender" + +#~ msgid "Hours Forecast" +#~ msgstr "timer før" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Betalinger over tid" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Timer etter tid på dagen" + +#~ msgid "Project Efficiency" +#~ msgstr "Prosjekteffektivitet" + +#~ msgid "User Performance" +#~ msgstr "Brukerytelse" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "Kunne ikke laste inn diagrammer. Vennligst prøv igjen." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "Kunne ikke oppdatere diagrammer. Vennligst prøv igjen." + +#~ msgid "Hour of Day" +#~ msgstr "Time på dagen" + +#~ msgid "Revenue" +#~ msgstr "Inntekter" + +#~ msgid "Forecast" +#~ msgstr "Tilbakestill" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "" + +#~ msgid "Export" +#~ msgstr "Eksport" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Nøkkelberegninger og praktisk innsikt" + +#~ msgid "vs previous period" +#~ msgstr "vs forrige periode" + +#~ msgid "of total" +#~ msgstr "av totalt" + +#~ msgid "Potential Revenue" +#~ msgstr "Potensielle inntekter" + +#~ msgid "Avg rate:" +#~ msgstr "Gj.sn. rate:" + +#~ msgid "Trend" +#~ msgstr "Trend" + +#~ msgid "active projects" +#~ msgstr "aktive prosjekter" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Innsikt og anbefalinger" + +#~ msgid "Cumulative" +#~ msgstr "Kumulativ" + +#~ msgid "Billable Distribution" +#~ msgstr "Fakturerbar distribusjon" + +#~ msgid "Task Status Overview" +#~ msgstr "Oversikt over oppgavestatus" + +#~ msgid "Tasks Completed" +#~ msgstr "Oppgaver fullført" + +#~ msgid "In Progress" +#~ msgstr "Pågår" + +#~ msgid "To Do" +#~ msgstr "Å gjøre" + +#~ msgid "Revenue by Project" +#~ msgstr "Inntekter etter prosjekt" + +#~ msgid "Payments Over Time" +#~ msgstr "Betalinger over tid" + +#~ msgid "Payment Methods" +#~ msgstr "Betalingsmetoder" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Inntekt vs betalinger" + +#~ msgid "Collection Rate" +#~ msgstr "Innsamlingssats" + +#~ msgid "Project Completion Rate" +#~ msgstr "Prosjektgjennomføringsgrad" + +#~ msgid "Billable" +#~ msgstr "Fakturerbar" + +#~ msgid "Non-Billable" +#~ msgstr "Ikke-fakturerbar" + +#~ msgid "Completed" +#~ msgstr "Fullført" + +#~ msgid "Cancelled" +#~ msgstr "Kansellert" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Fullføringsrate (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Oversikt over mobilinnsikt" + +#~ msgid "Daily Avg" +#~ msgstr "Daglig gj.sn" + +#~ msgid "Daily Hours" +#~ msgstr "Daglige timer" + +#~ msgid "Top Projects" +#~ msgstr "Topp prosjekter" + +#~ msgid "Time Entry Approvals" +#~ msgstr "" + +#~ msgid "Review and approve time entries" +#~ msgstr "" + +#~ msgid "Pending Approvals" +#~ msgstr "" + +#~ msgid "Time Entry" +#~ msgstr "Tidsregistrering" + +#~ msgid "Requested by" +#~ msgstr "" + +#~ msgid "hours" +#~ msgstr "timer" + +#~ msgid "Direct" +#~ msgstr "" + +#~ msgid "Approve" +#~ msgstr "Vedta" + +#~ msgid "Reject" +#~ msgstr "Avvis" + +#~ msgid "No pending approvals" +#~ msgstr "" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "" + +#~ msgid "My Requests" +#~ msgstr "" + +#~ msgid "No pending requests" +#~ msgstr "" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "" + +#~ msgid "Reject Time Entry" +#~ msgstr "" + +#~ msgid "Reason for rejection" +#~ msgstr "" + +#~ msgid "Approval Details" +#~ msgstr "" + +#~ msgid "Review time entry approval request" +#~ msgstr "" + +#~ msgid "Time Entry Details" +#~ msgstr "" + +#~ msgid "Entry ID" +#~ msgstr "" + +#~ msgid "Approval Information" +#~ msgstr "" + +#~ msgid "Requested at" +#~ msgstr "" + +#~ msgid "Approved by" +#~ msgstr "Godkjent av" + +#~ msgid "Approved at" +#~ msgstr "" + +#~ msgid "Request comment" +#~ msgstr "Legg inn kommentar" + +#~ msgid "Approval comment" +#~ msgstr "Legg inn kommentar" + +#~ msgid "Rejection reason" +#~ msgstr "Årsak til avvisning" + +#~ msgid "Track who changed what and when" +#~ msgstr "Spor hvem som endret hva og når" + +#~ msgid "Filters" +#~ msgstr "Filtre" + +#~ msgid "Entity Type" +#~ msgstr "Enhetstype" + +#~ msgid "All Types" +#~ msgstr "Alle typer" + +#~ msgid "Entity ID" +#~ msgstr "Enhets-ID" + +#~ msgid "All Users" +#~ msgstr "Alle brukere" + +#~ msgid "Action" +#~ msgstr "Handling" + +#~ msgid "All Actions" +#~ msgstr "Alle handlinger" + +#~ msgid "Updated" +#~ msgstr "Oppdatert" + +#~ msgid "Deleted" +#~ msgstr "Slettet" + +#~ msgid "Time Range" +#~ msgstr "Tidsområde" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Timestamp" +#~ msgstr "Tidsstempel" + +#~ msgid "Entity" +#~ msgstr "Entitet" + +#~ msgid "Field" +#~ msgstr "Felt" + +#~ msgid "Change" +#~ msgstr "Endre" + +#~ msgid "Reason" +#~ msgstr "Grunn" + +#~ msgid "Change Information" +#~ msgstr "Endre informasjon" + +#~ msgid "Entity Context" +#~ msgstr "" + +#~ msgid "TimeEntry Created" +#~ msgstr "" + +#~ msgid "Entry Owner" +#~ msgstr "" + +#~ msgid "Field Change Details" +#~ msgstr "" + +#~ msgid "Full Entity State" +#~ msgstr "" + +#~ msgid "Before Change" +#~ msgstr "" + +#~ msgid "After Change" +#~ msgstr "" + +#~ msgid "Request Information" +#~ msgstr "Be om informasjon" + +#~ msgid "Update your password." +#~ msgstr "" + +#~ msgid "Current Password" +#~ msgstr "" + +#~ msgid "New Password" +#~ msgstr "" + +#~ msgid "Confirm New Password" +#~ msgstr "" + +#~ msgid "Change Password" +#~ msgstr "" + +#~ msgid "Security" +#~ msgstr "Sikkerhet" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "" + +#~ msgid "Two-factor authentication" +#~ msgstr "OIDC/SSO (bedriftsautentisering)" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "Passordet må være minst 8 tegn langt" + +#~ msgid "Passwords do not match" +#~ msgstr "" + +#~ msgid "Forgot password" +#~ msgstr "Portalpassord" + +#~ msgid "Reset your password" +#~ msgstr "Angi passordet ditt" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" + +#~ msgid "Username or email" +#~ msgstr "Ingen brukernavn eller e-post" + +#~ msgid "your-username or you@example.com" +#~ msgstr "" + +#~ msgid "Send reset link" +#~ msgstr "Send test-e-post" + +#~ msgid "Back to sign in" +#~ msgstr "Tilbake til Admin" + +#~ msgid "Login" +#~ msgstr "Logg inn" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Spor tid. Hold deg organisert." + +#~ msgid "Sign in to your account" +#~ msgstr "Logg på kontoen din" + +#~ msgid "Demo credentials" +#~ msgstr "Varedetaljer" + +#~ msgid "Forgot your password?" +#~ msgstr "Angi passordet ditt" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "Autentiseringsmetode" + +#~ msgid "Sign in" +#~ msgstr "Logg på" + +#~ msgid "Use the demo credentials above." +#~ msgstr "" + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "Tips: Skriv inn et nytt brukernavn for å opprette kontoen din." + +#~ msgid "Or continue with" +#~ msgstr "Eller fortsett med" + +#~ msgid "Single Sign-On" +#~ msgstr "Enkel pålogging" + +#~ msgid "Edit Profile" +#~ msgstr "Rediger profil" + +#~ msgid "Member Since" +#~ msgstr "Medlem siden" + +#~ msgid "Reset password" +#~ msgstr "Angi passord" + +#~ msgid "Choose a new password" +#~ msgstr "Angi passord" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Angi et passord for kundeportalkontoen din" + +#~ msgid "New password" +#~ msgstr "Angi passord" + +#~ msgid "At least 8 characters" +#~ msgstr "Passordet må være minst 8 tegn langt" + +#~ msgid "Confirm password" +#~ msgstr "Bekreft passord" + +#~ msgid "Repeat your new password" +#~ msgstr "Angi passordet ditt" + +#~ msgid "Update password" +#~ msgstr "Angi passord" + +#~ msgid "Enter authentication code" +#~ msgstr "Autentiseringsmetode" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "" + +#~ msgid "Code" +#~ msgstr "Kode" + +#~ msgid "Verify" +#~ msgstr "" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "Kundeportaltilgang er ikke aktivert for kontoen din." + +#~ msgid "Enter a current code to disable" +#~ msgstr "" + +#~ msgid "Disable 2FA" +#~ msgstr "Funksjonshemmet" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "" + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "" + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" + +#~ msgid "Provisioning URI:" +#~ msgstr "" + +#~ msgid "2) Verify and enable" +#~ msgstr "" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Generert kode" + +#~ msgid "Enable 2FA" +#~ msgstr "Aktivert" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "" + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "" + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Budsjettvarsler og prognoser" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "Overvåke prosjektbudsjetter og prognosefullføring" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Ubekreftede varsler" + +#~ msgid "Critical Alerts" +#~ msgstr "Kritiske varsler" + +#~ msgid "Projects with Budgets" +#~ msgstr "Prosjekter med budsjetter" + +#~ msgid "Warning Alerts" +#~ msgstr "Advarselsvarsler" + +#~ msgid "Active Alerts" +#~ msgstr "Aktive varsler" + +#~ msgid "Acknowledge" +#~ msgstr "Bekrefte" + +#~ msgid "Project Budget Status" +#~ msgstr "Prosjektbudsjettstatus" + +#~ msgid "Budget" +#~ msgstr "Budsjett" + +#~ msgid "Consumed" +#~ msgstr "Forbrukt" + +#~ msgid "Remaining" +#~ msgstr "Gjenværende" + +#~ msgid "Progress" +#~ msgstr "Framgang" + +#~ msgid "over" +#~ msgstr "over" + +#~ msgid "Over Budget" +#~ msgstr "Over budsjett" + +#~ msgid "Critical" +#~ msgstr "Kritisk" + +#~ msgid "Healthy" +#~ msgstr "Sunn" + +#~ msgid "No projects with budgets found" +#~ msgstr "Fant ingen prosjekter med budsjetter" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Varsling er godkjent" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "Kunne ikke bekrefte varselet" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Budsjettanalyse og prognoser" + +#~ msgid "Back to Dashboard" +#~ msgstr "Tilbake til Dashboard" + +#~ msgid "View Project" +#~ msgstr "Se prosjekt" + +#~ msgid "Total Budget" +#~ msgstr "Totalt budsjett" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Forbrenningshastighetsanalyse" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Daglig brennhastighet" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Ukentlig brennhastighet" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Månedlig brennhastighet" + +#~ msgid "Period Total" +#~ msgstr "Periode totalt" + +#~ msgid "Based on last" +#~ msgstr "Basert på sist" + +#~ msgid "days" +#~ msgstr "dager" + +#~ msgid "No burn rate data available" +#~ msgstr "Ingen brennhastighetsdata tilgjengelig" + +#~ msgid "Completion Estimate" +#~ msgstr "Fullføringsestimat" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Estimert fullføringsdato" + +#~ msgid "days remaining" +#~ msgstr "dager igjen" + +#~ msgid "Confidence Level" +#~ msgstr "Konfidensnivå" + +#~ msgid "No completion estimate available" +#~ msgstr "Ingen ferdigstillelsesestimat tilgjengelig" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Analyse av kostnadstrend" + +#~ msgid "Average" +#~ msgstr "Gjennomsnittlig" + +#~ msgid "Resource Allocation" +#~ msgstr "Ressursfordeling" + +#~ msgid "Total Cost" +#~ msgstr "Total kostnad" + +#~ msgid "Hourly Rate" +#~ msgstr "Timepris" + +#~ msgid "Team Member" +#~ msgstr "Teammedlem" + +#~ msgid "Cost" +#~ msgstr "Koste" + +#~ msgid "Hours %" +#~ msgstr "Timer %" + +#~ msgid "Cost %" +#~ msgstr "Kostnad %" + +#~ msgid "Entries" +#~ msgstr "Oppføringer" + +#~ msgid "Date & Time" +#~ msgstr "Dato og tid" + +#~ msgid "Location" +#~ msgstr "Sted" + +#~ msgid "Reminder" +#~ msgstr "Påminnelse" + +#~ msgid "minutes before" +#~ msgstr "minutter før" + +#~ msgid "hours before" +#~ msgstr "timer før" + +#~ msgid "days before" +#~ msgstr "dager før" + +#~ msgid "Recurring" +#~ msgstr "Tilbakevendende" + +#~ msgid "Until" +#~ msgstr "Til" + +#~ msgid "Last Updated" +#~ msgstr "Sist oppdatert" + +#~ msgid "Back to Calendar" +#~ msgstr "Tilbake til Kalender" + +#~ msgid "Delete Event" +#~ msgstr "Slett hendelse" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette denne hendelsen? Denne handlingen " +#~ "kan ikke angres." + +#~ msgid "Edit Event" +#~ msgstr "Rediger hendelse" + +#~ msgid "New Event" +#~ msgstr "Ny begivenhet" + +#~ msgid "Title" +#~ msgstr "Tittel" + +#~ msgid "Start Date" +#~ msgstr "Startdato" + +#~ msgid "Start Time" +#~ msgstr "Starttid" + +#~ msgid "End Date" +#~ msgstr "Sluttdato" + +#~ msgid "End Time" +#~ msgstr "Sluttid" + +#~ msgid "All Day Event" +#~ msgstr "Heldagsarrangement" + +#~ msgid "Event Type" +#~ msgstr "Hendelsestype" + +#~ msgid "Meeting" +#~ msgstr "Møte" + +#~ msgid "Appointment" +#~ msgstr "Ansettelse" + +#~ msgid "Deadline" +#~ msgstr "Frist" + +#~ msgid "-- None --" +#~ msgstr "-- Ingen --" + +#~ msgid "No reminder" +#~ msgstr "Ingen påminnelse" + +#~ msgid "5 minutes before" +#~ msgstr "5 minutter før" + +#~ msgid "15 minutes before" +#~ msgstr "15 minutter før" + +#~ msgid "30 minutes before" +#~ msgstr "30 minutter før" + +#~ msgid "1 hour before" +#~ msgstr "1 time før" + +#~ msgid "1 day before" +#~ msgstr "1 dag før" + +#~ msgid "Color" +#~ msgstr "Farge" + +#~ msgid "Choose a color for this event" +#~ msgstr "Velg en farge for dette arrangementet" + +#~ msgid "Private Event" +#~ msgstr "Privat arrangement" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Private arrangementer er kun synlige for deg" + +#~ msgid "Recurring Event" +#~ msgstr "Gjentakende hendelse" + +#~ msgid "This is a recurring event" +#~ msgstr "Dette er en gjenganger" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Gjentakelsesmønster" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Bruk RRULE-format (f.eks. FREKVENS=ukentlig; BYDAY=MO,VI,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Sluttdato for gjentakelse" + +#~ msgid "Update Event" +#~ msgstr "Oppdater hendelse" + +#~ msgid "Create Event" +#~ msgstr "Opprett hendelse" + +#~ msgid "Calendar Integrations" +#~ msgstr "" + +#~ msgid "Last synced" +#~ msgstr "" + +#~ msgid "Manage Integration" +#~ msgstr "" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "" + +#~ msgid "Disconnect" +#~ msgstr "" + +#~ msgid "No Calendar Integrations" +#~ msgstr "" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" + +#~ msgid "Connect Google Calendar" +#~ msgstr "" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Se og administrer hendelser, oppgaver og tidsoppføringer" + +#~ msgid "Day" +#~ msgstr "Dag" + +#~ msgid "Week" +#~ msgstr "Uke" + +#~ msgid "Month" +#~ msgstr "Måned" + +#~ msgid "Today" +#~ msgstr "I dag" + +#~ msgid "Calendar colors" +#~ msgstr "" + +#~ msgid "Legend" +#~ msgstr "" + +#~ msgid "Loading calendar..." +#~ msgstr "Laster kalender..." + +#~ msgid "Event Details" +#~ msgstr "Begivenhetsdetaljer" + +#~ msgid "Go to all details" +#~ msgstr "" + +#~ msgid "Team Chat" +#~ msgstr "" + +#~ msgid "Team chat channel" +#~ msgstr "" + +#~ msgid "Type a message..." +#~ msgstr "" + +#~ msgid "Channel Info" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "Channel Settings" +#~ msgstr "" + +#~ msgid "Upload Attachment" +#~ msgstr "" + +#~ msgid "Select File" +#~ msgstr "" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "" + +#~ msgid "Selected:" +#~ msgstr "" + +#~ msgid "Upload" +#~ msgstr "" + +#~ msgid "Please select a file" +#~ msgstr "" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "" + +#~ msgid "Failed to upload attachment" +#~ msgstr "" + +#~ msgid "Communicate with your team" +#~ msgstr "" + +#~ msgid "Channels" +#~ msgstr "" + +#~ msgid "Direct Messages" +#~ msgstr "" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "" + +#~ msgid "Create Channel" +#~ msgstr "" + +#~ msgid "Channel Name" +#~ msgstr "" + +#~ msgid "Private channel" +#~ msgstr "" + +#~ msgid "Edit Client Note" +#~ msgstr "Rediger klientnotat" + +#~ msgid "Back to Client" +#~ msgstr "Tilbake til klienten" + +#~ msgid "Client:" +#~ msgstr "Klient:" + +#~ msgid "Created on" +#~ msgstr "Opprettet den" + +#~ msgid "Last edited on" +#~ msgstr "Sist redigert den" + +#~ msgid "Note Content" +#~ msgstr "Merk innhold" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Intern notat som bare er synlig for teamet ditt." + +#~ msgid "Mark as important" +#~ msgstr "Merk som viktig" + +#~ msgid "Activity Feed" +#~ msgstr "" + +#~ msgid "Client Portal" +#~ msgstr "Klientportal" + +#~ msgid "Recent project activities" +#~ msgstr "" + +#~ msgid "View details" +#~ msgstr "Se detaljer" + +#~ msgid "No Activity" +#~ msgstr "" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" + +#~ msgid "Approvals" +#~ msgstr "" + +#~ msgid "Pending" +#~ msgstr "I påvente av" + +#~ msgid "Approved" +#~ msgstr "Godkjent" + +#~ msgid "Rejected" +#~ msgstr "Avvist" + +#~ msgid "All" +#~ msgstr "Alle" + +#~ msgid "Requested on" +#~ msgstr "" + +#~ msgid "Request Comment" +#~ msgstr "" + +#~ msgid "View Details" +#~ msgstr "Se detaljer" + +#~ msgid "No Approvals" +#~ msgstr "" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" + +#~ msgid "No approvals found for this status." +#~ msgstr "" + +#~ msgid "Notifications" +#~ msgstr "" + +#~ msgid "More" +#~ msgstr "" + +#~ msgid "Documents" +#~ msgstr "" + +#~ msgid "Activity" +#~ msgstr "" + +#~ msgid "Toggle menu" +#~ msgstr "" + +#~ msgid "Approval update" +#~ msgstr "Godkjenningsstatus" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Godkjenning forespurt" + +#~ msgid "An approval was updated." +#~ msgstr "Ingen prosjekter ble oppdatert" + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "Velkommen, %(client_name)s" + +#~ msgid "Customize dashboard" +#~ msgstr "Tilpass snarveier" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "" + +#~ msgid "Statistics cards" +#~ msgstr "Statistikk" + +#~ msgid "Pending actions" +#~ msgstr "Administrasjonsseksjoner" + +#~ msgid "Recent invoices" +#~ msgstr "Nylige fakturaer" + +#~ msgid "Recent time entries" +#~ msgstr "Nylige tidsinnlegg" + +#~ msgid "Select at least one widget." +#~ msgstr "Velg en klient..." + +#~ msgid "Failed to save." +#~ msgstr "Kunne ikke stoppe tidtakeren" + +#~ msgid "View and download project documents" +#~ msgstr "" + +#~ msgid "Client Document" +#~ msgstr "" + +#~ msgid "Download" +#~ msgstr "" + +#~ msgid "No Documents" +#~ msgstr "" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" + +#~ msgid "An error occurred" +#~ msgstr "" + +#~ msgid "Go to Dashboard" +#~ msgstr "Gå til Dashboard" + +#~ msgid "Login to Client Portal" +#~ msgstr "" + +#~ msgid "Go Back" +#~ msgstr "Gå tilbake" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" + +#~ msgid "Invoice Details" +#~ msgstr "Fakturadetaljer" + +#~ msgid "Issue Date" +#~ msgstr "Utstedelsesdato" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "Denne fakturaen er %(days)d dager forsinket." + +#~ msgid "Invoice Items" +#~ msgstr "Fakturavarer" + +#~ msgid "Quantity" +#~ msgstr "Mengde" + +#~ msgid "Unit Price" +#~ msgstr "Enhetspris" + +#~ msgid "Pay Invoice" +#~ msgstr "" + +#~ msgid "Back to Invoices" +#~ msgstr "Tilbake til Fakturaer" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "Fakturaer for %(client_name)s" + +#~ msgid "Unpaid" +#~ msgstr "Ubetalt" + +#~ msgid "Overdue" +#~ msgstr "Forsinket" + +#~ msgid "Amount" +#~ msgstr "Beløp" + +#~ msgid "days overdue" +#~ msgstr "dager forsinket" + +#~ msgid "No invoices found" +#~ msgstr "" + +#~ msgid "No paid invoices" +#~ msgstr "" + +#~ msgid "No unpaid invoices" +#~ msgstr "" + +#~ msgid "No overdue invoices" +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" + +#~ msgid "View All Invoices" +#~ msgstr "" + +#~ msgid "Issue #%(id)s" +#~ msgstr "" + +#~ msgid "No description provided." +#~ msgstr "" + +#~ msgid "Priority" +#~ msgstr "Prioritet" + +#~ msgid "Linked Task" +#~ msgstr "" + +#~ msgid "Assigned To" +#~ msgstr "Tildelt til" + +#~ msgid "Resolved" +#~ msgstr "" + +#~ msgid "Back to Issues" +#~ msgstr "" + +#~ msgid "Issue Reports" +#~ msgstr "" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "Åpne" + +#~ msgid "Closed" +#~ msgstr "" + +#~ msgid "Report New Issue" +#~ msgstr "" + +#~ msgid "No issues found." +#~ msgstr "" + +#~ msgid "Client Portal Login" +#~ msgstr "Kundeportalpålogging" + +#~ msgid "View your projects and invoices" +#~ msgstr "Se dine prosjekter og fakturaer" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Logg på kundeportalen" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "" +#~ "Skriv inn portallegitimasjonen din for å" +#~ " få tilgang til prosjektene og " +#~ "fakturaene dine" + +#~ msgid "portal_username" +#~ msgstr "portal_brukernavn" + +#~ msgid "Enter your password" +#~ msgstr "Skriv inn passordet ditt" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "" + +#~ msgid "Brief description of the issue" +#~ msgstr "" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "" + +#~ msgid "Select a project (optional)" +#~ msgstr "" + +#~ msgid "Low" +#~ msgstr "Lav" + +#~ msgid "Medium" +#~ msgstr "Medium" + +#~ msgid "High" +#~ msgstr "Høy" + +#~ msgid "Urgent" +#~ msgstr "Som haster" + +#~ msgid "Your Name" +#~ msgstr "" + +#~ msgid "Your name (optional)" +#~ msgstr "" + +#~ msgid "Your Email" +#~ msgstr "" + +#~ msgid "Your email (optional)" +#~ msgstr "" + +#~ msgid "Submit Issue" +#~ msgstr "" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "" + +#~ msgid "Unread" +#~ msgstr "" + +#~ msgid "Mark All as Read" +#~ msgstr "" + +#~ msgid "Mark as read" +#~ msgstr "" + +#~ msgid "No Notifications" +#~ msgstr "" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" + +#~ msgid "Project Comments" +#~ msgstr "" + +#~ msgid "Comments" +#~ msgstr "Kommentarer" + +#~ msgid "Add Comment" +#~ msgstr "Legg til kommentar" + +#~ msgid "Your Comment" +#~ msgstr "Din kommentar" + +#~ msgid "Enter your comment..." +#~ msgstr "" + +#~ msgid "Post Comment" +#~ msgstr "Legg inn kommentar" + +#~ msgid "No Comments" +#~ msgstr "" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "" + +#~ msgid "Back to Projects" +#~ msgstr "Tilbake til prosjekter" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "Prosjekter for %(client_name)s" + +#~ msgid "View Time Entries" +#~ msgstr "" + +#~ msgid "No projects found" +#~ msgstr "" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" + +#~ msgid "Quote Details" +#~ msgstr "Sitatdetaljer" + +#~ msgid "Valid Until" +#~ msgstr "Gyldig til" + +#~ msgid "This quote has expired." +#~ msgstr "Dette sitatet er utløpt." + +#~ msgid "Quote Items" +#~ msgstr "Sitat elementer" + +#~ msgid "SKU" +#~ msgstr "SKU" + +#~ msgid "Terms & Conditions" +#~ msgstr "Vilkår og betingelser" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "" + +#~ msgid "Accept Quote" +#~ msgstr "Godta sitat" + +#~ msgid "Reject Quote" +#~ msgstr "Avvis sitat" + +#~ msgid "Back to Quotes" +#~ msgstr "Tilbake til sitater" + +#~ msgid "Reason (optional)" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "" + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "Sitater for %(client_name)s" + +#~ msgid "Expired" +#~ msgstr "Utløpt" + +#~ msgid "No quotes found." +#~ msgstr "Ingen sitater funnet." + +#~ msgid "Project and invoice summaries" +#~ msgstr "" + +#~ msgid "Hours tracked" +#~ msgstr "" + +#~ msgid "Project progress" +#~ msgstr "Prosjektkode" + +#~ msgid "Est. / Budget" +#~ msgstr "Over budsjett" + +#~ msgid "No project hours data available." +#~ msgstr "" + +#~ msgid "Task summary" +#~ msgstr "Sammendrag" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "Totalt beløp" + +#~ msgid "No tasks yet." +#~ msgstr "Ingen oppgaver er valgt" + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Ingen aktivitet de siste 30 dagene." + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "" + +#~ msgid "No recent time entries." +#~ msgstr "" + +#~ msgid "Set Password" +#~ msgstr "Angi passord" + +#~ msgid "Set your password to get started" +#~ msgstr "Angi passordet ditt for å komme i gang" + +#~ msgid "Set Your Password" +#~ msgstr "Angi passordet ditt" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Angi et passord for kundeportalkontoen din" + +#~ msgid "Confirm Password" +#~ msgstr "Bekreft passord" + +#~ msgid "Confirm your password" +#~ msgstr "Bekreft passordet ditt" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "Tidsoppføringer for %(client_name)s prosjekter" + +#~ msgid "All Projects" +#~ msgstr "Alle prosjekter" + +#~ msgid "From Date" +#~ msgstr "Fra dato" + +#~ msgid "To Date" +#~ msgstr "Til dags dato" + +#~ msgid "Total entries" +#~ msgstr "Totalt antall oppføringer" + +#~ msgid "Total hours" +#~ msgstr "Totalt antall timer" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" + +#~ msgid "Clear Filters" +#~ msgstr "" + +#~ msgid "Recent Invoices" +#~ msgstr "Nylige fakturaer" + +#~ msgid "View All" +#~ msgstr "Vis alle" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "" + +#~ msgid "Action Required" +#~ msgstr "" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "" + +#~ msgid "Review Now" +#~ msgstr "" + +#~ msgid "New Updates" +#~ msgstr "" + +#~ msgid "Notifications waiting for you" +#~ msgstr "" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "" + +#~ msgid "Total active" +#~ msgstr "" + +#~ msgid "Total Invoices" +#~ msgstr "Totale fakturaer" + +#~ msgid "All invoices" +#~ msgstr "" + +#~ msgid "Recent Time Entries" +#~ msgstr "Nylige tidsinnlegg" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "" + +#~ msgid "Export to CSV" +#~ msgstr "Eksporter til CSV" + +#~ msgid "Create Client" +#~ msgstr "Opprett klient" + +#~ msgid "Back to Clients" +#~ msgstr "Tilbake til klienter" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" +#~ "Legg til en ny klient for å " +#~ "administrere relaterte prosjekter og " +#~ "fakturering." + +#~ msgid "Enter client name" +#~ msgstr "Skriv inn klientnavn" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Standard timepris" + +#~ msgid "e.g. 75.00" +#~ msgstr "f.eks. 75,00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Denne satsen fylles automatisk når du" +#~ " oppretter prosjekter for denne klienten" + +#~ msgid "Supports Markdown" +#~ msgstr "Støtter Markdown" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Kort beskrivelse av oppdragsgiver eller prosjektomfang" + +#~ msgid "Contact Person" +#~ msgstr "Kontaktperson" + +#~ msgid "Primary contact name" +#~ msgstr "Navn på hovedkontakt" + +#~ msgid "contact@client.com" +#~ msgstr "contact@client.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Månedlige forhåndsbetalte timer" + +#~ msgid "e.g. 50" +#~ msgstr "f.eks. 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "La stå tomt hvis denne klienten ikke har noen forhåndsbetalt tildeling." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Forhåndsbetalt tilbakestillingsdag" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Dag i måneden da forhåndsbetalte timer tilbakestilles (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Klientadresse" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" + +#~ msgid "Enter value" +#~ msgstr "" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "Velg et klart, beskrivende navn for kundeorganisasjonen." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Angi standard timepris for denne " +#~ "klienten. Denne vil automatisk fylles ut" +#~ " når du oppretter nye prosjekter." + +#~ msgid "Contact Information" +#~ msgstr "Kontaktinformasjon" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "Legg til kontaktdetaljer for enkel kommunikasjon og journalføring." + +#~ msgid "Prepaid Hours" +#~ msgstr "Forhåndsbetalte timer" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Konfigurer månedlige inkluderte timer og " +#~ "tilbakestillingsdagen hvis denne klienten har" +#~ " en retainer eller forhåndsbetalt pakke." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "Gi kontekst om klientforholdet eller typiske prosjekttyper." + +#~ msgid "Edit Client" +#~ msgstr "" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Aktiver portaltilgang for denne klienten. " +#~ "Kunder kan logge på med sin egen" +#~ " legitimasjon for å se prosjekter, " +#~ "fakturaer og tidsregistreringer." + +#~ msgid "Enable Client Portal" +#~ msgstr "Aktiver klientportal" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "" + +#~ msgid "Portal Username" +#~ msgstr "Portal brukernavn" + +#~ msgid "Unique username for portal login" +#~ msgstr "Unikt brukernavn for portalpålogging" + +#~ msgid "Portal Password" +#~ msgstr "Portalpassord" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "La det stå tomt for å beholde gjeldende passord" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "Angi et nytt passord eller la det stå tomt for å holde deg oppdatert" + +#~ msgid "Current portal username" +#~ msgstr "Gjeldende portalbrukernavn" + +#~ msgid "Update Client" +#~ msgstr "Oppdater klient" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Send e-post for passordoppsett" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Send en e-post til %(email)s med " +#~ "en lenke for å angi portalpassordet " +#~ "deres." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "E-postadresse kreves for å sende e-post" +#~ " med passordoppsett. Vennligst angi " +#~ "klientens e-postadresse ovenfor." + +#~ msgid "Client Statistics" +#~ msgstr "Kundestatistikk" + +#~ msgid "Est. Total Cost" +#~ msgstr "Est. Total kostnad" + +#~ msgid "Filter Clients" +#~ msgstr "Filtrer klienter" + +#~ msgid "Toggle Filters" +#~ msgstr "Slå på filtre" + +#~ msgid "Hide Filters" +#~ msgstr "Skjul filtre" + +#~ msgid "Show Filters" +#~ msgstr "Vis filtre" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "" + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "Ingen ufakturerte tidsregistreringer funnet for dette prosjektet." + +#~ msgid "No unbilled time" +#~ msgstr "Ufakturerte tidsoppføringer" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Fakturavarer" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "Vil du merke klienten som inaktiv?" + +#~ msgid "Change Client Status" +#~ msgstr "Endre klientstatus" + +#~ msgid "Mark Inactive" +#~ msgstr "Merk inaktiv" + +#~ msgid "Activate client?" +#~ msgstr "Aktivere klient?" + +#~ msgid "Activate Client" +#~ msgstr "Aktiver klient" + +#~ msgid "Delete Client" +#~ msgstr "Slett klient" + +#~ msgid "Client details and associated projects." +#~ msgstr "Totale og aktive prosjekter" + +#~ msgid "Manage" +#~ msgstr "Administrer" + +#~ msgid "Primary" +#~ msgstr "Primær" + +#~ msgid "more contact(s)" +#~ msgstr "flere kontakt(er)" + +#~ msgid "No contacts yet" +#~ msgstr "Ingen kontakter ennå" + +#~ msgid "Add Contact" +#~ msgstr "Legg til kontakt" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Eldre kontaktinformasjon" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" +#~ "Planen inkluderer %(hours)s timer per " +#~ "syklus. Tilbakestilles på dag %(day)s." + +#~ msgid "Current cycle start" +#~ msgstr "Nåværende syklusstart" + +#~ msgid "Remaining hours" +#~ msgstr "Gjenstående timer" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "Consumed this cycle" +#~ msgstr "Brukte denne syklusen" + +#~ msgid "Attachments" +#~ msgstr "" + +#~ msgid "File" +#~ msgstr "" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Description (optional)" +#~ msgstr "" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "" + +#~ msgid "Visible to client in portal" +#~ msgstr "" + +#~ msgid "Client Visible" +#~ msgstr "Klient synlig" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "" + +#~ msgid "Delete Attachment" +#~ msgstr "" + +#~ msgid "No attachments yet" +#~ msgstr "" + +#~ msgid "Archived" +#~ msgstr "Arkivert" + +#~ msgid "Recent Hours History" +#~ msgstr "" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "" + +#~ msgid "Internal Notes" +#~ msgstr "Interne merknader" + +#~ msgid "Add Note" +#~ msgstr "Legg til merknad" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Legg til et internt notat om denne klienten..." + +#~ msgid "Save Note" +#~ msgstr "Lagre notat" + +#~ msgid "edited" +#~ msgstr "redigert" + +#~ msgid "Important" +#~ msgstr "Viktig" + +#~ msgid "Unmark" +#~ msgstr "Fjern merking" + +#~ msgid "Mark Important" +#~ msgstr "Merk som viktig" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Ingen notater ennå. Legg til et " +#~ "notat for å holde styr på viktig" +#~ " informasjon om denne klienten." + +#~ msgid "Estimated total" +#~ msgstr "Estimert verdi" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Opprett faktura" + +#~ msgid "Create invoice" +#~ msgstr "Opprett faktura" + +#~ msgid "Could not create invoice." +#~ msgstr "Opprett faktura" + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "Er du sikker på at du vil slette dette notatet?" + +#~ msgid "Delete Note" +#~ msgstr "Slett notat" + +#~ msgid "Edited on" +#~ msgstr "Redigert på" + +#~ msgid "Reply" +#~ msgstr "Svar" + +#~ msgid "Add Attachment" +#~ msgstr "" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "" + +#~ msgid "Write your reply..." +#~ msgstr "Skriv svaret ditt..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "" + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "" + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Del dine tanker, oppdateringer eller spørsmål..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "Du kan bruke linjeskift til å formatere kommentaren din." + +#~ msgid "Add Image" +#~ msgstr "Legg til bilde" + +#~ msgid "No comments yet" +#~ msgstr "Ingen kommentarer ennå" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "Start samtalen ved å legge til den første kommentaren." + +#~ msgid "Add First Comment" +#~ msgstr "Legg til første kommentar" + +#~ msgid "Edit Comment" +#~ msgstr "Rediger kommentar" + +#~ msgid "Back" +#~ msgstr "Tilbake" + +#~ msgid "Editing comment on:" +#~ msgstr "Redigering av kommentar til:" + +#~ msgid "Originally posted on" +#~ msgstr "Opprinnelig lagt ut på" + +#~ msgid "Comment Content" +#~ msgstr "Kommentarinnhold" + +#~ msgid "All Activities" +#~ msgstr "Alle aktiviteter" + +#~ msgid "Time Templates" +#~ msgstr "Tidsmaler" + +#~ msgid "No recent activity" +#~ msgstr "Ingen nylig aktivitet" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "Aktivitet vises her mens du jobber" + +#~ msgid "Load More" +#~ msgstr "Last inn mer" + +#~ msgid "Failed to load activities" +#~ msgstr "Kunne ikke laste inn aktiviteter" + +#~ msgid "Start a Chat" +#~ msgstr "" + +#~ msgid "Search users..." +#~ msgstr "" + +#~ msgid "Loading users..." +#~ msgstr "" + +#~ msgid "Failed to load users" +#~ msgstr "" + +#~ msgid "No users found" +#~ msgstr "" + +#~ msgid "Starting chat..." +#~ msgstr "" + +#~ msgid "Failed to start chat" +#~ msgstr "" + +#~ msgid "Client (auto-selected)" +#~ msgstr "" + +#~ msgid "Select a client..." +#~ msgstr "Velg en klient..." + +#~ msgid "Select a client (optional)" +#~ msgstr "" + +#~ msgid "Selected" +#~ msgstr "" + +#~ msgid "Search..." +#~ msgstr "" + +#~ msgid "Select all" +#~ msgstr "" + +#~ msgid "No items available" +#~ msgstr "" + +#~ msgid "Apply" +#~ msgstr "" + +#~ msgid "Sync Now" +#~ msgstr "" + +#~ msgid "Pending Sync" +#~ msgstr "" + +#~ msgid "No pending items" +#~ msgstr "" + +#~ msgid "Sync All" +#~ msgstr "" + +#~ msgid "Error loading queue" +#~ msgstr "" + +#~ msgid "Toggle chat" +#~ msgstr "" + +#~ msgid "Chat" +#~ msgstr "" + +#~ msgid "Start new chat" +#~ msgstr "" + +#~ msgid "Minimize chat" +#~ msgstr "" + +#~ msgid "View full" +#~ msgstr "" + +#~ msgid "Failed to load messages" +#~ msgstr "" + +#~ msgid "No messages yet" +#~ msgstr "" + +#~ msgid "Failed to send message" +#~ msgstr "" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" + +#~ msgid "Donate" +#~ msgstr "Ferdig" + +#~ msgid "Buy license (€25)" +#~ msgstr "" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "TimeTracker Hjelpesenter" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" + +#~ msgid "Home" +#~ msgstr "Hjem" + +#~ msgid "Pagination" +#~ msgstr "Mine oppgaver paginering" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "" + +#~ msgid "Call" +#~ msgstr "Ringe" + +#~ msgid "Message" +#~ msgstr "Beskjed" + +#~ msgid "Direction" +#~ msgstr "Retning" + +#~ msgid "Outbound" +#~ msgstr "Utgående" + +#~ msgid "Inbound" +#~ msgstr "Innkommende" + +#~ msgid "Subject" +#~ msgstr "Tema" + +#~ msgid "Scheduled" +#~ msgstr "Planlagt" + +#~ msgid "Follow-up Date" +#~ msgstr "Oppfølgingsdato" + +#~ msgid "Content/Notes" +#~ msgstr "Innhold/notater" + +#~ msgid "Save Communication" +#~ msgstr "Lagre kommunikasjon" + +#~ msgid "First Name" +#~ msgstr "Fornavn" + +#~ msgid "Last Name" +#~ msgstr "Etternavn" + +#~ msgid "Mobile" +#~ msgstr "Mobil" + +#~ msgid "Department" +#~ msgstr "Avdeling" + +#~ msgid "Contact" +#~ msgstr "Kontakt" + +#~ msgid "Billing" +#~ msgstr "Fakturering" + +#~ msgid "Technical" +#~ msgstr "Teknisk" + +#~ msgid "Set as primary contact" +#~ msgstr "Angi som primærkontakt" + +#~ msgid "Tags" +#~ msgstr "Tagger" + +#~ msgid "Save Contact" +#~ msgstr "Lagre kontakt" + +#~ msgid "Set Primary" +#~ msgstr "Sett Primær" + +#~ msgid "No contacts found" +#~ msgstr "Ingen kontakter funnet" + +#~ msgid "Add First Contact" +#~ msgstr "Legg til første kontakt" + +#~ msgid "Primary Contact" +#~ msgstr "Primær kontakt" + +#~ msgid "Communication History" +#~ msgstr "Kommunikasjonshistorie" + +#~ msgid "Add Communication" +#~ msgstr "Legg til kommunikasjon" + +#~ msgid "No communications recorded" +#~ msgstr "Ingen kommunikasjon registrert" + +#~ msgid "Add Activity" +#~ msgstr "" + +#~ msgid "Activity Date" +#~ msgstr "Aktiver" + +#~ msgid "Brief subject or title" +#~ msgstr "" + +#~ msgid "Deal Name" +#~ msgstr "Navn på avtale" + +#~ msgid "Select Client" +#~ msgstr "Velg klient" + +#~ msgid "Select Contact" +#~ msgstr "Velg Kontakt" + +#~ msgid "Stage" +#~ msgstr "Scene" + +#~ msgid "Deal Value" +#~ msgstr "Deal verdi" + +#~ msgid "Win Probability" +#~ msgstr "Vinnsannsynlighet" + +#~ msgid "Expected Close Date" +#~ msgstr "Forventet lukkedato" + +#~ msgid "Related Quote" +#~ msgstr "Relatert sitat" + +#~ msgid "Select Quote" +#~ msgstr "Velg Sitat" + +#~ msgid "Save Deal" +#~ msgstr "Lagre avtale" + +#~ msgid "Won" +#~ msgstr "Vant" + +#~ msgid "Lost" +#~ msgstr "Tapt" + +#~ msgid "All Stages" +#~ msgstr "Alle stadier" + +#~ msgid "Value" +#~ msgstr "Verdi" + +#~ msgid "Probability" +#~ msgstr "Sannsynlighet" + +#~ msgid "Expected Close" +#~ msgstr "Forventet Lukk" + +#~ msgid "No deals found" +#~ msgstr "Ingen tilbud funnet" + +#~ msgid "Create First Deal" +#~ msgstr "Opprett første avtale" + +#~ msgid "Pipeline" +#~ msgstr "" + +#~ msgid "Deal Information" +#~ msgstr "" + +#~ msgid "Actual Close" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Related Lead" +#~ msgstr "" + +#~ msgid "Loss Reason" +#~ msgstr "" + +#~ msgid "Related Project" +#~ msgstr "Relatert prosjekt" + +#~ msgid "by" +#~ msgstr "" + +#~ msgid "No activities recorded yet" +#~ msgstr "" + +#~ msgid "Add first activity" +#~ msgstr "" + +#~ msgid "History" +#~ msgstr "Målhistorie" + +#~ msgid "View full history" +#~ msgstr "Se alle detaljer" + +#~ msgid "No change history yet" +#~ msgstr "" + +#~ msgid "You Were Mentioned" +#~ msgstr "Du ble nevnt" + +#~ msgid "View Task & Reply" +#~ msgstr "Se oppgave og svar" + +#~ msgid "Invoice" +#~ msgstr "Faktura" + +#~ msgid "Invoice Overdue" +#~ msgstr "Forfalt faktura" + +#~ msgid "View Invoice" +#~ msgstr "Se faktura" + +#~ msgid "Quote" +#~ msgstr "Sitere" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Sitatgodkjenning avvist" + +#~ msgid "View Quote" +#~ msgstr "Se sitat" + +#~ msgid "Approval Requested" +#~ msgstr "Godkjenning forespurt" + +#~ msgid "Review Quote" +#~ msgstr "Gjennomgå sitat" + +#~ msgid "Quote Approved" +#~ msgstr "Sitat godkjent" + +#~ msgid "Quote Expired" +#~ msgstr "Sitat utløpt" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "Sitat utløper snart" + +#~ msgid "Quote Sent" +#~ msgstr "Sitat sendt" + +#~ msgid "Task Assignment" +#~ msgstr "Oppgaveoppdrag" + +#~ msgid "View Task" +#~ msgstr "Vis oppgave" + +#~ msgid "Test Details" +#~ msgstr "Testdetaljer" + +#~ msgid "Your Weekly Summary" +#~ msgstr "Ditt ukentlige sammendrag" + +#~ msgid "400 Bad Request" +#~ msgstr "400 Dårlig forespørsel" + +#~ msgid "Invalid Request" +#~ msgstr "Ugyldig forespørsel" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "Forespørselen du sendte er ugyldig eller" +#~ " inneholder feil. Dette kan skyldes:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Manglende eller ugyldige skjemadata" + +#~ msgid "Malformed request parameters" +#~ msgstr "Feilaktige forespørselsparametere" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "" +#~ "Du har ikke tillatelse til å få" +#~ " tilgang til denne ressursen. Dette " +#~ "kan skyldes:" + +#~ msgid "Insufficient privileges" +#~ msgstr "Utilstrekkelige privilegier" + +#~ msgid "Not logged in" +#~ msgstr "Ikke innlogget" + +#~ msgid "Resource access restrictions" +#~ msgstr "Ressurstilgangsbegrensninger" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "Noe gikk galt hos oss. Vennligst prøv igjen senere." + +#~ msgid "Try Again" +#~ msgstr "Prøv igjen" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Det oppsto en feil under behandlingen av forespørselen din." + +#~ msgid "Refresh Page" +#~ msgstr "Oppdater siden" + +#~ msgid "Go to Login" +#~ msgstr "Gå til Logg inn" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "f.eks. reiser, måltider, kontorrekvisita" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "f.eks. REISER, MÅLTID" + +#~ msgid "Brief description of this category..." +#~ msgstr "Kort beskrivelse av denne kategorien..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "f.eks. fa-fly, fa-redskaper" + +#~ msgid "e.g., 19.00" +#~ msgstr "f.eks. 19.00" + +#~ msgid "Category" +#~ msgstr "Kategori" + +#~ msgid "Basic Information" +#~ msgstr "Grunnleggende informasjon" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "f.eks. Fly til Berlin" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Ytterligere detaljer om utgiften..." + +#~ msgid "Select Category" +#~ msgstr "Kategori" + +#~ msgid "Amount Details" +#~ msgstr "Betalingsdetaljer" + +#~ msgid "Association" +#~ msgstr "Sted" + +#~ msgid "Payment Details" +#~ msgstr "Betalingsdetaljer" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "f.eks. Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "Tilleggsinformasjon" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Kvittering/Fakturanummer" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "f.eks. INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "f.eks. konferanse, kundemøte, haster" + +#~ msgid "Additional notes..." +#~ msgstr "Ytterligere merknader..." + +#~ msgid "Options" +#~ msgstr "Valgfri" + +#~ msgid "Filter Expenses" +#~ msgstr "Filtrer utgifter" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Slett valgte utgifter" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Endre status for utvalgte utgifter" + +#~ msgid "Associated With" +#~ msgstr "Tilknyttet" + +#~ msgid "Reject Expense" +#~ msgstr "Avvis utgift" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Forklar hvorfor denne utgiften blir avvist..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "Er du sikker på at du vil slette denne utgiften?" + +#~ msgid "Delete Expense" +#~ msgstr "Slett utgift" + +#~ msgid "Add task" +#~ msgstr "" + +#~ msgid "Import/Export Data" +#~ msgstr "Importer/eksporter data" + +#~ msgid "Import/Export" +#~ msgstr "Import/eksport" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Importer data fra andre tidssporere " +#~ "eller eksporter dataene dine for " +#~ "GDPR-overholdelse og sikkerhetskopier" + +#~ msgid "Import Data" +#~ msgstr "Importer data" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Importer tidsoppføringer fra en CSV-fil" + +#~ msgid "Choose CSV File" +#~ msgstr "Velg CSV-fil" + +#~ msgid "Download Template" +#~ msgstr "Last ned mal" + +#~ msgid "CSV Import - Clients" +#~ msgstr "" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" + +#~ msgid "Skip duplicate clients" +#~ msgstr "" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Importer fra Toggl Track" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Importer tidsoppføringer fra Toggl Track" + +#~ msgid "Import from Toggl" +#~ msgstr "Importer fra Toggl" + +#~ msgid "Import from Harvest" +#~ msgstr "Import fra Harvest" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Importer tidsoppføringer fra Harvest" + +#~ msgid "Restore from Backup" +#~ msgstr "Gjenopprett fra sikkerhetskopi" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "" + +#~ msgid "Import History" +#~ msgstr "Importhistorikk" + +#~ msgid "Export Data" +#~ msgstr "Eksporter data" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Full dataeksport (GDPR)" + +#~ msgid "Export all your personal data" +#~ msgstr "Eksporter alle dine personlige data" + +#~ msgid "Export as JSON" +#~ msgstr "Eksporter som JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "Eksporter som ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "Filtrert eksport" + +#~ msgid "Export specific data with filters" +#~ msgstr "Eksporter spesifikke data med filtre" + +#~ msgid "Export with Filters" +#~ msgstr "Eksporter med filtre" + +#~ msgid "Export Clients" +#~ msgstr "" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" + +#~ msgid "Export Clients to CSV" +#~ msgstr "" + +#~ msgid "Create a full database backup" +#~ msgstr "Lag en fullstendig sikkerhetskopi av databasen" + +#~ msgid "Export History" +#~ msgstr "Eksporter historikk" + +#~ msgid "API Token" +#~ msgstr "API-token" + +#~ msgid "Workspace ID" +#~ msgstr "Arbeidsområde-ID" + +#~ msgid "Import" +#~ msgstr "Import" + +#~ msgid "Account ID" +#~ msgstr "Konto-ID" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" + +#~ msgid "Server Connection" +#~ msgstr "" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" + +#~ msgid "Import Settings" +#~ msgstr "" + +#~ msgid "Default Project" +#~ msgstr "" + +#~ msgid "No project (import without project)" +#~ msgstr "" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "" + +#~ msgid "Create a project" +#~ msgstr "" + +#~ msgid "Lookback Days" +#~ msgstr "" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "" + +#~ msgid "Bucket IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" + +#~ msgid "Enable automatic sync" +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" + +#~ msgid "Sync Schedule" +#~ msgstr "" + +#~ msgid "Manual only" +#~ msgstr "" + +#~ msgid "Every hour" +#~ msgstr "" + +#~ msgid "Daily" +#~ msgstr "" + +#~ msgid "Test & Sync" +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" + +#~ msgid "CalDAV Server URL" +#~ msgstr "" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "" + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "" + +#~ msgid "Calendar URL" +#~ msgstr "" + +#~ msgid "optional if server URL is provided" +#~ msgstr "" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" + +#~ msgid "Calendar Name" +#~ msgstr "" + +#~ msgid "My Calendar" +#~ msgstr "" + +#~ msgid "Authentication" +#~ msgstr "" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "" + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "" + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "" + +#~ msgid "Verify SSL certificate" +#~ msgstr "" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "" + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "" + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" + +#~ msgid "Integration Health" +#~ msgstr "Tidsintegrasjon" + +#~ msgid "Scope" +#~ msgstr "" + +#~ msgid "Last sync" +#~ msgstr "I fjor" + +#~ msgid "Last status" +#~ msgstr "Oppdater status" + +#~ msgid "Credentials" +#~ msgstr "Detaljer" + +#~ msgid "Last error" +#~ msgstr "I fjor" + +#~ msgid "Partial" +#~ msgstr "Delvis" + +#~ msgid "Needs refresh" +#~ msgstr "Forfriske" + +#~ msgid "Expires" +#~ msgstr "" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" + +#~ msgid "Not Connected" +#~ msgstr "" + +#~ msgid "Synced" +#~ msgstr "" + +#~ msgid "Not Set Up" +#~ msgstr "" + +#~ msgid "Connect" +#~ msgstr "" + +#~ msgid "Integration" +#~ msgstr "" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" + +#~ msgid "Launch Setup Wizard" +#~ msgstr "" + +#~ msgid "Linear API Key" +#~ msgstr "Opprett API-token" + +#~ msgid "Personal API Key" +#~ msgstr "" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "" + +#~ msgid "Save API Key" +#~ msgstr "Opprett API-token" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "La stå tomt for å holde deg oppdatert" + +#~ msgid "Enter API secret" +#~ msgstr "Regenerer hemmelighet" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "" + +#~ msgid "CalDAV Authentication" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" + +#~ msgid "Integration Configuration" +#~ msgstr "" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" + +#~ msgid "Connection Management" +#~ msgstr "" + +#~ msgid "Connector Error" +#~ msgstr "" + +#~ msgid "Sync OK" +#~ msgstr "" + +#~ msgid "Sync Error" +#~ msgstr "" + +#~ msgid "No expiration" +#~ msgstr "" + +#~ msgid "Not connected" +#~ msgstr "" + +#~ msgid "Last Sync" +#~ msgstr "" + +#~ msgid "Last Error" +#~ msgstr "" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "" + +#~ msgid "Connect Trello" +#~ msgstr "" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" + +#~ msgid "Back to Integrations" +#~ msgstr "" + +#~ msgid "Integration Status" +#~ msgstr "" + +#~ msgid "Token Expires" +#~ msgstr "" + +#~ msgid "Sync History" +#~ msgstr "" + +#~ msgid "No sync events yet" +#~ msgstr "" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" + +#~ msgid "Edit Configuration" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "" + +#~ msgid "Workspace GID" +#~ msgstr "" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "" + +#~ msgid "Project GIDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "" + +#~ msgid "Sync Direction" +#~ msgstr "" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "" + +#~ msgid "Items to Sync" +#~ msgstr "" + +#~ msgid "Subtasks" +#~ msgstr "" + +#~ msgid "Auto Sync" +#~ msgstr "" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "" + +#~ msgid "Finish" +#~ msgstr "" + +#~ msgid "Step" +#~ msgstr "" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" + +#~ msgid "Create Projects" +#~ msgstr "" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "" + +#~ msgid "Pull Requests" +#~ msgstr "" + +#~ msgid "Projects (Repositories)" +#~ msgstr "" + +#~ msgid "Issue States to Sync" +#~ msgstr "" + +#~ msgid "Open Issues" +#~ msgstr "" + +#~ msgid "Closed Issues" +#~ msgstr "" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "" + +#~ msgid "Webhook Secret" +#~ msgstr "" + +#~ msgid "Enter webhook secret" +#~ msgstr "" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" + +#~ msgid "Weekly" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" + +#~ msgid "All repositories" +#~ msgstr "" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "" + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "" + +#~ msgid "Repository IDs" +#~ msgstr "" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "" + +#~ msgid "Merge Requests" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "" + +#~ msgid "Instance URL" +#~ msgstr "" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Jira Instance URL" +#~ msgstr "" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" + +#~ msgid "JQL Query" +#~ msgstr "" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "" + +#~ msgid "Issues (Tasks)" +#~ msgstr "" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" + +#~ msgid "Jira URL" +#~ msgstr "" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "" + +#~ msgid "Please enter Jira URL first." +#~ msgstr "" + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" + +#~ msgid "Step 2: Company Selection" +#~ msgstr "" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Use Sandbox" +#~ msgstr "" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "" + +#~ msgid "Customers" +#~ msgstr "" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "" + +#~ msgid "Default Expense Account ID" +#~ msgstr "" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Customer Mappings" +#~ msgstr "" + +#~ msgid "JSON" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Account Mappings" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" + +#~ msgid "Company ID" +#~ msgstr "" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "" + +#~ msgid "Get your API key and secret from" +#~ msgstr "" + +#~ msgid "Enter API Key" +#~ msgstr "" + +#~ msgid "Enter API Secret" +#~ msgstr "" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" + +#~ msgid "API Key" +#~ msgstr "" + +#~ msgid "Not tested" +#~ msgstr "" + +#~ msgid "Connection failed" +#~ msgstr "" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "" + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "" + +#~ msgid "Default Expense Account Code" +#~ msgstr "" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" + +#~ msgid "Contact Mappings" +#~ msgstr "" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" + +#~ msgid "Stock Item" +#~ msgstr "Lagervare" + +#~ msgid "Select Item" +#~ msgstr "Velg element" + +#~ msgid "Warehouse" +#~ msgstr "Lager" + +#~ msgid "Select Warehouse" +#~ msgstr "Velg Lager" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Justeringsmengde" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Bruk positive verdier for å øke " +#~ "beholdningen, negative verdier for å " +#~ "redusere" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "f.eks. korrigering av fysisk telling, skade, gjenstander som er funnet" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Ytterligere detaljer om denne justeringen" + +#~ msgid "Record Adjustment" +#~ msgstr "Rekordjustering" + +#~ msgid "All Warehouses" +#~ msgstr "Alle varehus" + +#~ msgid "All Items" +#~ msgstr "Alle varer" + +#~ msgid "Date From" +#~ msgstr "Dato fra" + +#~ msgid "Date To" +#~ msgstr "Dato til" + +#~ msgid "Item" +#~ msgstr "Punkt" + +#~ msgid "No adjustments found." +#~ msgstr "Ingen justeringer funnet." + +#~ msgid "On Hand" +#~ msgstr "På Hand" + +#~ msgid "Reorder Point" +#~ msgstr "Ombestillingspunkt" + +#~ msgid "Shortfall" +#~ msgstr "Mangel" + +#~ msgid "Reorder Qty" +#~ msgstr "Ombestill antall" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "Ingen varsler om lavt lager. Alle varer er over bestillingspunktet." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "Bruk positive verdier for tillegg, negative for fjerninger" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "" + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "" + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "" + +#~ msgid "Movement Type" +#~ msgstr "Bevegelsestype" + +#~ msgid "Return" +#~ msgstr "Retur" + +#~ msgid "Waste" +#~ msgstr "Sløseri" + +#~ msgid "Devaluation" +#~ msgstr "" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "" + +#~ msgid "Apply devaluation" +#~ msgstr "" + +#~ msgid "Method" +#~ msgstr "" + +#~ msgid "Percent off default cost" +#~ msgstr "" + +#~ msgid "Fixed new unit cost" +#~ msgstr "" + +#~ msgid "Percent" +#~ msgstr "" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "" + +#~ msgid "New Unit Cost" +#~ msgstr "" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "f.eks. fysisk tellingskorreksjon" + +#~ msgid "Record Movement" +#~ msgstr "Rekordbevegelse" + +#~ msgid "Reference Type" +#~ msgstr "Referansetype" + +#~ msgid "Manual" +#~ msgstr "Håndbok" + +#~ msgid "Unit Cost" +#~ msgstr "Enhetskostnad" + +#~ msgid "Reference" +#~ msgstr "Referanse" + +#~ msgid "Devalued" +#~ msgstr "" + +#~ msgid "No stock movements found." +#~ msgstr "Ingen aksjebevegelser funnet." + +#~ msgid "Supplier" +#~ msgstr "Leverandør" + +#~ msgid "Select Supplier" +#~ msgstr "Velg Leverandør" + +#~ msgid "Order Date" +#~ msgstr "Bestillingsdato" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Forventet leveringsdato" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Notater synlig for leverandør" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Interne merknader (ikke synlig for leverandøren)" + +#~ msgid "Items" +#~ msgstr "Varer" + +#~ msgid "Add Item" +#~ msgstr "Legg til element" + +#~ msgid "Qty" +#~ msgstr "Antall" + +#~ msgid "Supplier SKU" +#~ msgstr "Leverandør SKU" + +#~ msgid "Create Purchase Order" +#~ msgstr "Opprett innkjøpsordre" + +#~ msgid "Draft" +#~ msgstr "Utkast" + +#~ msgid "Sent" +#~ msgstr "Sendt" + +#~ msgid "Confirmed" +#~ msgstr "Bekreftet" + +#~ msgid "Received" +#~ msgstr "Mottatt" + +#~ msgid "All Suppliers" +#~ msgstr "Alle leverandører" + +#~ msgid "PO Number" +#~ msgstr "PO-nummer" + +#~ msgid "Expected Delivery" +#~ msgstr "Forventet levering" + +#~ msgid "No purchase orders found." +#~ msgstr "Ingen innkjøpsordrer funnet." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "Er du sikker på at du vil kansellere denne innkjøpsordren?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "Er du sikker på at du vil slette denne innkjøpsordren?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Bestillingsdetaljer" + +#~ msgid "Received Date" +#~ msgstr "Mottatt dato" + +#~ msgid "Quantity Ordered" +#~ msgstr "Antall bestilt" + +#~ msgid "Quantity Received" +#~ msgstr "Mottatt mengde" + +#~ msgid "Line Total" +#~ msgstr "Linje totalt" + +#~ msgid "Shipping" +#~ msgstr "Frakt" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Motta innkjøpsordre" + +#~ msgid "Mark as Received" +#~ msgstr "Merk som mottatt" + +#~ msgid "No items in this purchase order." +#~ msgstr "Ingen varer i denne innkjøpsordren." + +#~ msgid "Total Items" +#~ msgstr "Totalt antall varer" + +#~ msgid "Total Warehouses" +#~ msgstr "Totale varehus" + +#~ msgid "Total Inventory Value" +#~ msgstr "Total beholdningsverdi" + +#~ msgid "Low Stock Items" +#~ msgstr "Lite lagervarer" + +#~ msgid "Available Reports" +#~ msgstr "Tilgjengelige rapporter" + +#~ msgid "Stock Valuation" +#~ msgstr "Aksjevurdering" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Se lagerverdi etter lager" + +#~ msgid "Movement History" +#~ msgstr "Bevegelseshistorie" + +#~ msgid "Detailed movement log" +#~ msgstr "Detaljert bevegelseslogg" + +#~ msgid "Turnover Analysis" +#~ msgstr "Omsetningsanalyse" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Omsetningshastigheter for varelager" + +#~ msgid "Low Stock Report" +#~ msgstr "Lav lagerrapport" + +#~ msgid "Items below reorder point" +#~ msgstr "Varer under bestillingspunktet" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "Fant %(count)s varer under bestillingspunktet." + +#~ msgid "Quantity On Hand" +#~ msgstr "Antall på hånden" + +#~ msgid "Reorder Quantity" +#~ msgstr "Bestill på nytt" + +#~ msgid "Create PO" +#~ msgstr "Opprett PO" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Alle lagernivåer er gode" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Ingen varer er for øyeblikket under bestillingspunktet." + +#~ msgid "No movements found." +#~ msgstr "Ingen bevegelser funnet." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "Omsetningshastighet angir hvor mange ganger" +#~ " varelager selges og erstattes i " +#~ "løpet av et år. Høyere priser " +#~ "indikerer varer som beveger seg raskere." + +#~ msgid "Total Sold" +#~ msgstr "Totalt solgt" + +#~ msgid "Avg Stock Level" +#~ msgstr "Gjennomsnittlig lagernivå" + +#~ msgid "Turnover Rate" +#~ msgstr "Omsetningshastighet" + +#~ msgid "Fast Moving" +#~ msgstr "Rask bevegelse" + +#~ msgid "Normal" +#~ msgstr "Normal" + +#~ msgid "Slow Moving" +#~ msgstr "Slow Moving" + +#~ msgid "Very Slow" +#~ msgstr "Veldig sakte" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "Fant ingen salgsdata for den valgte perioden." + +#~ msgid "Inventory Valuation" +#~ msgstr "Lagervurdering" + +#~ msgid "Total Value" +#~ msgstr "Total verdi" + +#~ msgid "No items found with cost information." +#~ msgstr "Ingen varer funnet med kostnadsinformasjon." + +#~ msgid "Reserved" +#~ msgstr "Reservert" + +#~ msgid "Fulfilled" +#~ msgstr "Oppfylt" + +#~ msgid "Reserved At" +#~ msgstr "Reservert kl" + +#~ msgid "Expires At" +#~ msgstr "Utløper kl" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "Vil du oppfylle denne reservasjonen?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "Kansellere denne reservasjonen?" + +#~ msgid "No reservations found." +#~ msgstr "Ingen reservasjoner funnet." + +#~ msgid "Unit" +#~ msgstr "Enhet" + +#~ msgid "Default Cost" +#~ msgstr "Standardkostnad" + +#~ msgid "Default Price" +#~ msgstr "Standardpris" + +#~ msgid "Image URL" +#~ msgstr "Bilde-URL" + +#~ msgid "Track Inventory" +#~ msgstr "Spor inventar" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "Administrer flere leverandører for denne varen med forskjellige priser." + +#~ msgid "MOQ" +#~ msgstr "MOQ" + +#~ msgid "Lead Time (days)" +#~ msgstr "Ledetid (dager)" + +#~ msgid "Preferred" +#~ msgstr "Foretrukket" + +#~ msgid "Add Supplier" +#~ msgstr "Legg til leverandør" + +#~ msgid "No movement history found for this item." +#~ msgstr "Fant ingen bevegelseshistorikk for denne varen." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU, navn, strekkode..." + +#~ msgid "Active Only" +#~ msgstr "Kun aktiv" + +#~ msgid "Total Qty" +#~ msgstr "Totalt antall" + +#~ msgid "Available" +#~ msgstr "Tilgjengelig" + +#~ msgid "Low Stock" +#~ msgstr "Lite lager" + +#~ msgid "No stock items found." +#~ msgstr "Ingen lagervarer funnet." + +#~ msgid "Item Details" +#~ msgstr "Varedetaljer" + +#~ msgid "Trackable" +#~ msgstr "Sporbar" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Lagernivåer etter lager" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" + +#~ msgid "No devaluation" +#~ msgstr "" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Nylige aksjebevegelser" + +#~ msgid "Total On Hand" +#~ msgstr "Totalt på hånden" + +#~ msgid "Total Reserved" +#~ msgstr "Totalt reservert" + +#~ msgid "Total Available" +#~ msgstr "Totalt tilgjengelig" + +#~ msgid "Low Stock Alert" +#~ msgstr "Lavt lagervarsel" + +#~ msgid "This item is not trackable." +#~ msgstr "Denne varen er ikke sporbar." + +#~ msgid "Active Reservations" +#~ msgstr "Aktive reservasjoner" + +#~ msgid "Quantity Reserved" +#~ msgstr "Antall reservert" + +#~ msgid "Last Counted" +#~ msgstr "Sist talt" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "Ingen lager funnet for denne varen i noe lager." + +#~ msgid "No stock levels found." +#~ msgstr "Ingen lagernivåer funnet." + +#~ msgid "Low Stock Only" +#~ msgstr "Kun lite lager" + +#~ msgid "Oversold" +#~ msgstr "Oversolgt" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "Ingen lagervarer funnet i dette lageret." + +#~ msgid "Supplier Code" +#~ msgstr "Leverandørkode" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Unik kode for denne leverandøren (f.eks. SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Betalingsbetingelser" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "f.eks. Net 30, Net 60" + +#~ msgid "Code, name, email" +#~ msgstr "Kode, navn, e-post" + +#~ msgid "No suppliers found." +#~ msgstr "Ingen leverandører funnet." + +#~ msgid "Supplier Details" +#~ msgstr "Leverandørdetaljer" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Lagervarer fra denne leverandøren" + +#~ msgid "Lead Time" +#~ msgstr "Ledetid" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "Ingen lagervarer knyttet til denne leverandøren." + +#~ msgid "Preferred Items" +#~ msgstr "Foretrukne varer" + +#~ msgid "From Warehouse" +#~ msgstr "Fra lageret" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Velg Kildevarehus" + +#~ msgid "To Warehouse" +#~ msgstr "Til lageret" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Velg Destinasjonslager" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Valgfrie merknader om denne overføringen" + +#~ msgid "Create Transfer" +#~ msgstr "Opprett overføring" + +#~ msgid "No transfers found." +#~ msgstr "Ingen overføringer funnet." + +#~ msgid "Warehouse Code" +#~ msgstr "Lagerkode" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Unik kode for dette lageret (f.eks. WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "Kontakt e-post" + +#~ msgid "Contact Phone" +#~ msgstr "Kontakt telefon" + +#~ msgid "No warehouses found." +#~ msgstr "Ingen varehus funnet." + +#~ msgid "Warehouse Details" +#~ msgstr "Lagerdetaljer" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "Ingen lagervarer på dette lageret." + +#~ msgid "Total Quantity" +#~ msgstr "Totalt antall" + +#~ msgid "Current Approver" +#~ msgstr "" + +#~ msgid "You" +#~ msgstr "" + +#~ msgid "No Pending Approvals" +#~ msgstr "" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "" + +#~ msgid "Reject Invoice Approval" +#~ msgstr "" + +#~ msgid "Reason for Rejection" +#~ msgstr "" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "" + +#~ msgid "Request Invoice Approval" +#~ msgstr "" + +#~ msgid "Back to Invoice" +#~ msgstr "" + +#~ msgid "Select Approvers" +#~ msgstr "" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" + +#~ msgid "Request Approval" +#~ msgstr "Be om godkjenning" + +#~ msgid "Approval Status" +#~ msgstr "Godkjenningsstatus" + +#~ msgid "Requested By" +#~ msgstr "" + +#~ msgid "Requested At" +#~ msgstr "" + +#~ msgid "Approved By" +#~ msgstr "" + +#~ msgid "Rejected By" +#~ msgstr "" + +#~ msgid "Rejection Reason" +#~ msgstr "Årsak til avvisning" + +#~ msgid "Approval Stages" +#~ msgstr "" + +#~ msgid "Quick Actions" +#~ msgstr "Raske handlinger" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "" + +#~ msgid "Export to Excel" +#~ msgstr "Eksporter til Excel" + +#~ msgid "Partially Paid" +#~ msgstr "Delvis betalt" + +#~ msgid "Fully Paid" +#~ msgstr "Fullt betalt" + +#~ msgid "Create Invoice" +#~ msgstr "Opprett faktura" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Generer en ny faktura for et prosjekt og klient" + +#~ msgid "Select a project" +#~ msgstr "Velg et prosjekt" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "Hvis du velger et prosjekt, vil klientdetaljer automatisk fylles ut" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Skattesats (%)" + +#~ msgid "Tips" +#~ msgstr "Tips" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "Velg riktig prosjekt for å automatisk fylle ut klientdetaljer." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "Du kan tilpasse notater og vilkår før du sender fakturaen." + +#~ msgid "Edit Invoice" +#~ msgstr "Rediger faktura" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Oppdater fakturadetaljer, varer og vilkår" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Tidsbaserte tjenester og timearbeid" + +#~ msgid "Project / Stock Item" +#~ msgstr "" + +#~ msgid "Task / Warehouse" +#~ msgstr "" + +#~ msgid "Project hours" +#~ msgstr "" + +#~ msgid "Select Stock Item" +#~ msgstr "Velg lagervare" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "f.eks. webutviklingstjenester" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "" + +#~ msgid "Remove item" +#~ msgstr "Fjern elementet" + +#~ msgid "Items Subtotal" +#~ msgstr "Elementer Subtotal" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "Fakturerbare utgifter som reiser, måltider og materialer" + +#~ msgid "Add Expense" +#~ msgstr "Legg til kostnad" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "for eksempel reise til kundemøte" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Koblet utgift - tittel kan ikke redigeres" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Koblet utgift - beskrivelse kan ikke redigeres" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Koblet utgift - kategori kan ikke redigeres" + +#~ msgid "Travel" +#~ msgstr "Reise" + +#~ msgid "Meals" +#~ msgstr "Måltider" + +#~ msgid "Accommodation" +#~ msgstr "Overnatting" + +#~ msgid "Supplies" +#~ msgstr "Rekvisita" + +#~ msgid "Software" +#~ msgstr "Programvare" + +#~ msgid "Equipment" +#~ msgstr "Utstyr" + +#~ msgid "Services" +#~ msgstr "Tjenester" + +#~ msgid "Marketing" +#~ msgstr "Markedsføring" + +#~ msgid "Training" +#~ msgstr "Opplæring" + +#~ msgid "Other" +#~ msgstr "Annen" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Tilknyttet utgift - beløp kan ikke redigeres" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Koblet utgift - dato kan ikke redigeres" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Koble ut regning fra faktura" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Utgifter Delsum" + +#~ msgid "Extra Goods" +#~ msgstr "Ekstra varer" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Produkter, materialer, lisenser og andre varer" + +#~ msgid "Add Good" +#~ msgstr "Legg til Good" + +#~ msgid "Price" +#~ msgstr "Pris" + +#~ msgid "e.g., Software License" +#~ msgstr "f.eks. programvarelisens" + +#~ msgid "Product" +#~ msgstr "Produkt" + +#~ msgid "Service" +#~ msgstr "Service" + +#~ msgid "Material" +#~ msgstr "Materiale" + +#~ msgid "Remove good" +#~ msgstr "Fjern godt" + +#~ msgid "Goods Subtotal" +#~ msgstr "Varer Subtotal" + +#~ msgid "Live Preview" +#~ msgstr "Live forhåndsvisning" + +#~ msgid "Payment" +#~ msgstr "Betaling" + +#~ msgid "Goods" +#~ msgstr "Varer" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Generer fra tid/kostnader" + +#~ msgid "Record Payment" +#~ msgstr "Rekordbetaling" + +#~ msgid "Export PDF" +#~ msgstr "Eksporter PDF" + +#~ msgid "Export CSV" +#~ msgstr "Eksporter CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Duplisert faktura" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "Er du sikker på at du vil fjerne denne utgiften fra fakturaen?" + +#~ msgid "Unlink Expense" +#~ msgstr "Fjern koblingen til kostnad" + +#~ msgid "Unlink" +#~ msgstr "Fjern tilknytningen" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "Legg til minst én vare, utgift eller ekstra vare på fakturaen" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Generer fra tid, kostnader og varer" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Velg ufakturerte tidsregistreringer, " +#~ "prosjektkostnader og ekstra varer som " +#~ "skal legges til denne fakturaen" + +#~ msgid "Back to Edit" +#~ msgstr "Tilbake til Rediger" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Ufakturerte tidsoppføringer" + +#~ msgid "entries" +#~ msgstr "oppføringer" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "Ingen ufakturerte tidsregistreringer funnet for dette prosjektet." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Ufakturerte prosjektkostnader" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "Ingen ufakturerte kostnader funnet for dette prosjektet." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Ufakturerte fakturerbare utgifter" + +#~ msgid "Vendor" +#~ msgstr "Selger" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "Ingen ufakturerte fakturerbare utgifter funnet for dette prosjektet." + +#~ msgid "Project Extra Goods" +#~ msgstr "Prosjekt Ekstra varer" + +#~ msgid "No extra goods found for this project." +#~ msgstr "Ingen ekstra varer funnet for dette prosjektet." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Legg til valgt på faktura" + +#~ msgid "Selection Summary" +#~ msgstr "Sammendrag av utvalg" + +#~ msgid "Total available hours" +#~ msgstr "Totale tilgjengelige timer" + +#~ msgid "Total available costs" +#~ msgstr "Totale tilgjengelige kostnader" + +#~ msgid "Total available expenses" +#~ msgstr "Totale tilgjengelige utgifter" + +#~ msgid "Total available goods" +#~ msgstr "Totalt tilgjengelige varer" + +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Oversikt over forhåndsbetalte timer" + +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" +#~ "Planen inkluderer %(hours)s timer per " +#~ "syklus (tilbakestilles på dag %(day)s)." + +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "Forbrukt: %(consumed)s h • Gjenstående: %(remaining)s h" + +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "Ingen forhåndsbetalt bruk registrert for valgt periode ennå." + +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" +#~ "Du kan velge flere tidsregistreringer, " +#~ "kostnader, utgifter og ekstra varer." + +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "Tidsregistreringer grupperes etter oppgave " +#~ "eller prosjekt ved opprettelse av " +#~ "element." + +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "Kostnader og ekstra varer legges til som individuelle fakturaposter." + +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "Utgifter er knyttet til faktura og fremkommer i eget avsnitt." + +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "Velg minst én gang oppføring, kostnad, utgift eller ekstra vare" + +#~ msgid "Filter Invoices" +#~ msgstr "Filtrer fakturaer" + +#~ msgid "Invoice number or client" +#~ msgstr "Fakturanummer eller klient" + +#~ msgid "Delete Selected Invoices" +#~ msgstr "Slett valgte fakturaer" + +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Endre status for utvalgte fakturaer" + +#~ msgid "Select Status" +#~ msgstr "" + +#~ msgid "Invoice Reference" +#~ msgstr "" + +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "" + +#~ msgid "Delete Invoice" +#~ msgstr "Slett faktura" + +#~ msgid "Warning:" +#~ msgstr "Advarsel:" + +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Er du sikker på at du vil slette faktura" + +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Alle fakturaartikler, ekstravarer og " +#~ "betalingsoppføringer knyttet til denne " +#~ "fakturaen vil bli slettet permanent." + +#~ msgid "INVOICE" +#~ msgstr "FAKTURA" + +#~ msgid "Invoice #" +#~ msgstr "Faktura nr." + +#~ msgid "Bill To" +#~ msgstr "Bill To" + +#~ msgid "Quantity (Hours)" +#~ msgstr "Antall (timer)" + +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "Generert fra %(num)d tidsoppføringer" + +#~ msgid "Expense" +#~ msgstr "Kostnader" + +#~ msgid "Subtotal:" +#~ msgstr "Delsum:" + +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "Skatt (%(rate).2f%%):" + +#~ msgid "Total Amount:" +#~ msgstr "Totalt beløp:" + +#~ msgid "Notes:" +#~ msgstr "Merknader:" + +#~ msgid "Terms:" +#~ msgstr "Vilkår:" + +#~ msgid "Payment Information:" +#~ msgstr "Betalingsinformasjon:" + +#~ msgid "Terms & Conditions:" +#~ msgstr "Vilkår og betingelser:" + +#~ msgid "Download UBL" +#~ msgstr "" + +#~ msgid "Pay Online" +#~ msgstr "" + +#~ msgid "Payment Reference" +#~ msgstr "" + +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "" + +#~ msgid "Invoice Approval" +#~ msgstr "" + +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "" + +#~ msgid "Payment History" +#~ msgstr "Betalingshistorikk" + +#~ msgid "Send Invoice via Email" +#~ msgstr "Send faktura via e-post" + +#~ msgid "Edit Issue" +#~ msgstr "" + +#~ msgid "Unassigned" +#~ msgstr "Ikke tilordnet" + +#~ msgid "Create Issue" +#~ msgstr "" + +#~ msgid "Filter Issues" +#~ msgstr "" + +#~ msgid "Search by title or description" +#~ msgstr "" + +#~ msgid "Apply Filters" +#~ msgstr "Bruk filtre" + +#~ msgid "Page" +#~ msgstr "Side" + +#~ msgid "of" +#~ msgstr "av" + +#~ msgid "No issues found" +#~ msgstr "Ingen brukere funnet." + +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" + +#~ msgid "Create New Issue" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "" + +#~ msgid "Delete Issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "" +#~ msgid "Task Management" +#~ msgstr "Oppgavestyring" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "" +#~ msgid "Link to existing task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "" +#~ msgid "Select a task" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "Assign imported activity events to this project. Leave empty to import without a project." -msgstr "" +#~ msgid "Link" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" +#~ msgid "Create new task from this issue" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "" +#~ msgid "Submitted By" +#~ msgstr "" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "" +#~ msgid "Kanban" +#~ msgstr "Kanban" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "" +#~ msgid "Manage Columns" +#~ msgstr "Administrer kolonner" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "Dra oppgaver mellom kolonner for å oppdatere statusen deres" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "" +#~ msgid "Kanban board" +#~ msgstr "Kanban-tavle" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* and aw-watcher-web_* buckets." -msgstr "" +#~ msgid "moved to" +#~ msgstr "flyttet til" -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "" +#~ msgid "No tasks in this column." +#~ msgstr "Ingen oppgaver i denne kolonnen." -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "Automatically sync activity on a schedule. You can also trigger manual syncs." -msgstr "" +#~ msgid "Manage Kanban Columns" +#~ msgstr "Administrer Kanban-kolonner" -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "" +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "Tilpass kanban-tavlekolonner og oppgavetilstander" -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "" +#~ msgid "Project:" +#~ msgstr "Prosjekt:" -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "" +#~ msgid "Global Columns" +#~ msgstr "Globale kolonner" -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "" +#~ msgid "Add Column" +#~ msgstr "Legg til kolonne" -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "" +#~ msgid "Kanban columns list" +#~ msgstr "Kanban kolonneliste" -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "After saving, you can test the connection and run a sync from the integration page." -msgstr "" +#~ msgid "Key" +#~ msgstr "Nøkkel" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "" +#~ msgid "Complete?" +#~ msgstr "Fullstendig?" -#: app/templates/integrations/caldav_setup.html:15 -msgid "Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time entries" -msgstr "" +#~ msgid "Drag to reorder" +#~ msgstr "Dra for å omorganisere" -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "" +#~ msgid "Edit column" +#~ msgstr "Rediger kolonne" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "" +#~ msgid "Toggle active state" +#~ msgstr "Slå av aktiv tilstand" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" +#~ "Fant ingen kanban-kolonner. Opprett din" +#~ " første kolonne for å komme i " +#~ "gang." -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "" +#~ msgid "Tips:" +#~ msgstr "Tips:" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Dra og slipp rader for å omorganisere kolonner" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "Systemkolonner (todo, in_progress, done) kan" +#~ " ikke slettes, men kan tilpasses" -#: app/templates/integrations/caldav_setup.html:54 -msgid "Direct URL to your calendar collection. If provided, server URL is only used for discovery." -msgstr "" +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "Kolonner merket som \"Fullført\" vil " +#~ "merke oppgaver som fullførte når de " +#~ "dras til den kolonnen" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Inaktive kolonner er skjult fra " +#~ "kanban-tavlen, men oppgaver med den " +#~ "statusen forblir tilgjengelige" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "" +#~ msgid "Delete Kanban Column" +#~ msgstr "Slett Kanban-kolonnen" -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "" +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Er du sikker på at du vil slette kolonnen?" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "" +#~ msgid "Key:" +#~ msgstr "Nøkkel:" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Merk: Oppgaver med denne statusen vil" +#~ " forbli tilgjengelige, men kolonnen vil " +#~ "ikke lenger vises på kanban-tavlen." -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "" +#~ msgid "Delete Column" +#~ msgstr "Slett kolonne" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "" +#~ msgid "Columns reordered successfully" +#~ msgstr "Kolonnene er omorganisert" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "Kunne ikke omorganisere kolonner. Vennligst prøv igjen." -#: app/templates/integrations/caldav_setup.html:145 -msgid "Calendar events will be imported as time entries. If a project is selected, events will be assigned to that project." -msgstr "" +#~ msgid "Create Kanban Column" +#~ msgstr "Opprett Kanban-kolonne" -#: app/templates/integrations/caldav_setup.html:146 -msgid "If an event title contains a project name, that project will be used instead." -msgstr "" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Legg til en ny kolonne på kanban-tavlen" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" +#~ msgid "Create Kanban Column form" +#~ msgstr "Opprett Kanban-kolonneskjema" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "" +#~ msgid "Column Label" +#~ msgstr "Kolonneetikett" -#: app/templates/integrations/caldav_setup.html:189 -msgid "Automatically sync calendar events every hour. You can still trigger manual syncs." -msgstr "" +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "f.eks. i gjennomgang, blokkert, testing" -#: app/templates/integrations/caldav_setup.html:212 -msgid "After saving, you can test the connection and discover available calendars." -msgstr "" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "Visningsnavnet som vises på kanban-tavlen" -#: app/templates/integrations/health.html:4 -#, fuzzy -msgid "Integration Health" -msgstr "Tidsintegrasjon" +#~ msgid "Column Key" +#~ msgstr "Kolonnenøkkel" -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "" +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "f.eks. in_review, blokkert, testing" -#: app/templates/integrations/health.html:25 -#, fuzzy -msgid "Last sync" -msgstr "I fjor" - -#: app/templates/integrations/health.html:26 -#, fuzzy -msgid "Last status" -msgstr "Oppdater status" - -#: app/templates/integrations/health.html:27 -#, fuzzy -msgid "Credentials" -msgstr "Detaljer" - -#: app/templates/integrations/health.html:28 -#, fuzzy -msgid "Last error" -msgstr "I fjor" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Delvis" - -#: app/templates/integrations/health.html:76 -#, fuzzy -msgid "Needs refresh" -msgstr "Forfriske" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Unik identifikator (små bokstaver, ingen " +#~ "mellomrom, bruk understreking). Automatisk " +#~ "generert fra etikett hvis tom." -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" +#~ msgid "Global (for all projects)" +#~ msgstr "Globalt (for alle prosjekter)" -#: app/templates/integrations/list.html:20 -msgid "Connect your Time Tracker with external services. Configure integrations below to sync data, automate workflows, and enhance productivity." -msgstr "" +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Velg et prosjekt for å opprette " +#~ "prosjektspesifikke kolonner, eller la det " +#~ "være Globalt for alle prosjekter" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "" +#~ msgid "Icon Class" +#~ msgstr "Ikon klasse" -#: app/templates/integrations/list.html:36 -msgid "Configure OpenID Connect authentication for Single Sign-On (SSO) with your identity provider" -msgstr "" +#~ msgid "Font Awesome icon class" +#~ msgstr "Font Awesome ikonklasse" -#: app/templates/integrations/list.html:76 -msgid "Configure directory authentication via environment variables; use the wizard to build a working .env snippet and test connectivity." -msgstr "" +#~ msgid "Browse icons" +#~ msgstr "Bla gjennom ikoner" -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "" +#~ msgid "Primary (Blue)" +#~ msgstr "Primær (blå)" -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "" +#~ msgid "Secondary (Gray)" +#~ msgstr "Sekundær (grå)" -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "" +#~ msgid "Success (Green)" +#~ msgstr "Suksess (grønn)" -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "" +#~ msgid "Danger (Red)" +#~ msgstr "Fare (rød)" -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "" +#~ msgid "Warning (Yellow)" +#~ msgstr "Advarsel (gul)" -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "" +#~ msgid "Info (Cyan)" +#~ msgstr "Info (cyan)" -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Bootstrap fargeklasse for styling" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "" +#~ msgid "Mark as Complete State" +#~ msgstr "Merk som fullstendig tilstand" -#: app/templates/integrations/manage.html:43 -#, fuzzy -msgid "Linear API Key" -msgstr "Opprett API-token" +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "Oppgaver som flyttes til denne kolonnen vil bli merket som fullført" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "" +#~ msgid "Create Column" +#~ msgstr "Opprett kolonne" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "" +#~ msgid "Note:" +#~ msgstr "Note:" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "" +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "Kolonnen legges til på slutten av " +#~ "tavlen. Du kan endre rekkefølgen på " +#~ "kolonner senere fra administrasjonssiden." -#: app/templates/integrations/manage.html:60 -#, fuzzy -msgid "Save API Key" -msgstr "Opprett API-token" +#~ msgid "Edit Kanban Column" +#~ msgstr "Rediger Kanban-kolonnen" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "" +#~ msgid "Modify column settings" +#~ msgstr "Endre kolonneinnstillinger" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -#, fuzzy -msgid "Stored; leave empty to keep" -msgstr "La stå tomt for å holde deg oppdatert" +#~ msgid "Edit Kanban Column form" +#~ msgstr "Rediger Kanban-kolonneskjema" -#: app/templates/integrations/manage.html:101 -#, fuzzy -msgid "Enter API secret" -msgstr "Regenerer hemmelighet" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "Nøkkelen kan ikke endres etter opprettelse" -#: app/templates/integrations/manage.html:112 -msgid "After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" +#~ msgid "This is a project-specific column" +#~ msgstr "Dette er en prosjektspesifikk kolonne" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Dette er en global kolonne (for alle prosjekter)" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "" +#~ msgid "Preview" +#~ msgstr "Forhåndsvisning" -#: app/templates/integrations/manage.html:226 -msgid "CalDAV uses username and password authentication (not OAuth). Update your credentials below." -msgstr "" +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Inaktive kolonner er skjult fra kanban-tavlen" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "" +#~ msgid "System Column:" +#~ msgstr "Systemkolonne:" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Dette er en systemkolonne. Du kan " +#~ "tilpasse utseendet, men kan ikke slette" +#~ " det." -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "" -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "" +#~ msgid "Toggle dark mode" +#~ msgstr "Bytt mørk modus" -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "" +#~ msgid "Logout from kiosk mode" +#~ msgstr "" -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "" +#~ msgid "Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "" +#~ msgid "Adjust Stock" +#~ msgstr "" -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "" -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "" -#: app/templates/integrations/manage.html:643 -msgid "CalDAV uses username/password authentication. Click below to set up your CalDAV connection." -msgstr "" +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "" +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "" -#: app/templates/integrations/manage.html:653 -msgid "ActivityWatch imports window and web activity from your local aw-server. Click below to configure." -msgstr "" +#~ msgid "Barcode or SKU input" +#~ msgstr "" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "" +#~ msgid "Use Camera to Scan" +#~ msgstr "" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "" +#~ msgid "Open camera scanner" +#~ msgstr "" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "" +#~ msgid "Close camera scanner" +#~ msgstr "" -#: app/templates/integrations/manage.html:681 -msgid "Please configure Trello API key and token in the OAuth Credentials Setup section above." -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "" -#: app/templates/integrations/manage.html:693 -msgid "Please configure OAuth credentials in the section above before connecting." -msgstr "" +#~ msgid "Decrease quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" +#~ msgid "Adjustment quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:706 -msgid "Connect your Google Calendar account. You will be redirected to Google for authorization." -msgstr "" +#~ msgid "Increase quantity" +#~ msgstr "" -#: app/templates/integrations/manage.html:708 -msgid "Connect this integration. You will be redirected to the provider for authorization." -msgstr "" +#~ msgid "Kiosk adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "" +#~ msgid "Physical count" +#~ msgstr "" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "" +#~ msgid "Found" +#~ msgstr "" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "" +#~ msgid "Damaged" +#~ msgstr "" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "" +#~ msgid "Apply stock adjustment" +#~ msgstr "" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "" +#~ msgid "Apply Adjustment" +#~ msgstr "" + +#~ msgid "Undo last adjustment" +#~ msgstr "" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "" + +#~ msgid "Transfer quantity" +#~ msgstr "" + +#~ msgid "Transfer stock" +#~ msgstr "" + +#~ msgid "Transfer Stock" +#~ msgstr "" + +#~ msgid "Stop timer" +#~ msgstr "" + +#~ msgid "Stop Timer" +#~ msgstr "Stopp timer" + +#~ msgid "Select project..." +#~ msgstr "" + +#~ msgid "No projects available" +#~ msgstr "" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "" + +#~ msgid "No task" +#~ msgstr "Ingen oppgave" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "" + +#~ msgid "What are you working on?" +#~ msgstr "Hva jobber du med?" + +#~ msgid "Start timer" +#~ msgstr "" + +#~ msgid "Recent Items" +#~ msgstr "" + +#~ msgid "Kiosk Login" +#~ msgstr "" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "" + +#~ msgid "Barcode scanning" +#~ msgstr "" + +#~ msgid "Stock management" +#~ msgstr "" + +#~ msgid "Time tracking" +#~ msgstr "" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "" + +#~ msgid "Select your username to continue" +#~ msgstr "" + +#~ msgid "Toggle Theme" +#~ msgstr "" + +#~ msgid "Select User" +#~ msgstr "" + +#~ msgid "your-username" +#~ msgstr "" + +#~ msgid "Standard Login" +#~ msgstr "" + +#~ msgid "Convert to Client" +#~ msgstr "" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" + +#~ msgid "Lead summary" +#~ msgstr "Sammendrag" + +#~ msgid "Convert to Deal" +#~ msgstr "" + +#~ msgid "Source" +#~ msgstr "Kilde" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Nettsted, henvisning, annonse..." + +#~ msgid "Lead Score" +#~ msgstr "Ledelsesscore" + +#~ msgid "Estimated Value" +#~ msgstr "Estimert verdi" + +#~ msgid "Save Lead" +#~ msgstr "Lagre lead" + +#~ msgid "Name, company, email..." +#~ msgstr "Navn, firma, e-post..." + +#~ msgid "All Statuses" +#~ msgstr "Alle statuser" + +#~ msgid "Website, referral..." +#~ msgstr "Nettsted, henvisning..." + +#~ msgid "Score" +#~ msgstr "Score" + +#~ msgid "No leads found" +#~ msgstr "Ingen kundeemner funnet" + +#~ msgid "Create First Lead" +#~ msgstr "Opprett første kundeemne" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "" + +#~ msgid "Mark Lost" +#~ msgstr "" + +#~ msgid "Lead" +#~ msgstr "" + +#~ msgid "No contact details yet" +#~ msgstr "" + +#~ msgid "Lead Details" +#~ msgstr "" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Profesjonell tidsregistrering og prosjektledelse" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "En omfattende nettbasert " +#~ "tidsregistreringsapplikasjon bygget med Flask, " +#~ "med prosjektledelse, klientorganisasjon, " +#~ "oppgavestyring, fakturering og avansert " +#~ "analyse." + +#~ msgid "Invoicing" +#~ msgstr "Fakturering" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" + +#~ msgid "Smart Timers" +#~ msgstr "Smarte timere" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "Sanntidssporing med tomgangsdeteksjon og liveoppdateringer" + +#~ msgid "Client Management" +#~ msgstr "Klientadministrasjon" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "Organiser kunder med kontakter, priser og prosjektrelasjoner" + +#~ msgid "Task System" +#~ msgstr "Oppgavesystem" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Bryt ned prosjekter i oppgaver med fremdriftssporing" + +#~ msgid "PDF Invoices" +#~ msgstr "PDF-fakturaer" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Generer profesjonelle fakturaer fra sporet tid" + +#~ msgid "Core Features" +#~ msgstr "Kjernefunksjoner" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Manuell tidsregistrering med notater og tagger" + +#~ msgid "Client and project organization" +#~ msgstr "Oppdragsgiver og prosjektorganisasjon" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Rollebasert tilgang og brukerprofiler" + +#~ msgid "Advanced Features" +#~ msgstr "Avanserte funksjoner" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Merket PDF-fakturering med skatte- og betalingssporing" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Visuell analyse og detaljert rapportering" + +#~ msgid "REST API for integrations" +#~ msgstr "REST API for integrasjoner" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "PWA-funksjoner og mobilvennlig brukergrensesnitt" + +#~ msgid "Platform Support" +#~ msgstr "Plattformstøtte" + +#~ msgid "Web Application" +#~ msgstr "Webapplikasjon" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Desktop-nettlesere (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Mobil responsiv design" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "Progressive Web App (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Berøringsvennlig nettbrettgrensesnitt" + +#~ msgid "Operating Systems" +#~ msgstr "Operativsystemer" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android og iOS (nettleser)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Raspberry Pi-støtte" + +#~ msgid "Dockerized deployment" +#~ msgstr "Dockerisert utplassering" + +#~ msgid "Database Support" +#~ msgstr "Databasestøtte" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (anbefalt)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (utvikler/test)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Automatiske migreringer med Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Verktøy for sikkerhetskopiering og gjenoppretting" + +#~ msgid "Technical Specifications" +#~ msgstr "Tekniske spesifikasjoner" + +#~ msgid "Technology Stack" +#~ msgstr "Teknologistabel" + +#~ msgid "Backend" +#~ msgstr "Backend" + +#~ msgid "Frontend" +#~ msgstr "Frontend" + +#~ msgid "Deployment" +#~ msgstr "Utplassering" + +#~ msgid "Key Capabilities" +#~ msgstr "Nøkkelegenskaper" + +#~ msgid "Real-time" +#~ msgstr "Sanntid" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "Åpen kildekode og fellesskap" + +#~ msgid "Open Source Benefits" +#~ msgstr "Fordeler med åpen kildekode" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Full kildekode tilgjengelig på GitHub" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Lisensiert under GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "Fellesskapsdrevet utvikling" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Transparent problemsporing og feilrapporter" + +#~ msgid "Deployment Options" +#~ msgstr "Distribusjonsalternativer" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Docker-bilder (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Selvdrevet distribusjon med full kontroll" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Sky-klar med Compose-konfigurasjoner" + +#~ msgid "View on GitHub" +#~ msgstr "Se på GitHub" + +#~ msgid "Support updates" +#~ msgstr "Støttede funksjoner" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "" + +#~ msgid "Getting Help & Resources" +#~ msgstr "Få hjelp og ressurser" + +#~ msgid "Documentation" +#~ msgstr "Dokumentasjon" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Trinn-for-trinn guider for alle funksjoner." + +#~ msgid "View Help" +#~ msgstr "Se hjelp" + +#~ msgid "System Information" +#~ msgstr "Systeminformasjon" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Status, versjoner og konfigurasjonsdetaljer." + +#~ msgid "Admin access required" +#~ msgstr "Administratortilgang kreves" + +#~ msgid "Community Support" +#~ msgstr "Fellesskapsstøtte" + +#~ msgid "Report issues, request features, contribute." +#~ msgstr "Rapporter problemer, be om funksjoner, bidra." + +#~ msgid "GitHub Issues" +#~ msgstr "GitHub-problemer" + +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" + +#~ msgid "View time entries" +#~ msgstr "Se alle tidsregistreringer" + +#~ msgid "Here's a quick overview of your work." +#~ msgstr "Her er en rask oversikt over arbeidet ditt." + +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" + +#~ msgid "Repeat last" +#~ msgstr "Opprettet kl" + +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" + +#~ msgid "Quick start" +#~ msgstr "" + +#~ msgid "Paused" +#~ msgstr "Pause" + +#~ msgid "Break" +#~ msgstr "Tilbake" + +#~ msgid "Running" +#~ msgstr "" + +#~ msgid "Break so far" +#~ msgstr "" + +#~ msgid "Started at" +#~ msgstr "Startet kl" + +#~ msgid "Elapsed" +#~ msgstr "" + +#~ msgid "Adjust time" +#~ msgstr "Innstilling" + +#~ msgid "Subtract 15 min" +#~ msgstr "" + +#~ msgid "Subtract 5 min" +#~ msgstr "" + +#~ msgid "Add 5 min" +#~ msgstr "Admin" + +#~ msgid "Add 15 min" +#~ msgstr "Admin" + +#~ msgid "Resume timer" +#~ msgstr "Smarte timere" + +#~ msgid "Resume" +#~ msgstr "Tilbakestill" + +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "Pause" + +#~ msgid "Stop and save current time" +#~ msgstr "" + +#~ msgid "Stop & save" +#~ msgstr "" + +#~ msgid "No active timer." +#~ msgstr "Ingen aktiv timer." + +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" + +#~ msgid "Resume last session" +#~ msgstr "Avslutt økten" + +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" + +#~ msgid "Today's Hours" +#~ msgstr "" + +#~ msgid "overtime" +#~ msgstr "Tid" + +#~ msgid "Week's Hours" +#~ msgstr "" + +#~ msgid "Month's Hours" +#~ msgstr "" + +#~ msgid "Overtime (YTD)" +#~ msgstr "Overtidsinnstillinger" + +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "" + +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "" + +#~ msgid "Loading insights…" +#~ msgstr "" + +#~ msgid "Value insights" +#~ msgstr "Høyrejuster" + +#~ msgid "Your tracked time at a glance" +#~ msgstr "Spor tid. Hold deg organisert." + +#~ msgid "Total hours tracked" +#~ msgstr "Totalt arbeidede timer" + +#~ msgid "Active days" +#~ msgstr "Aktive varsler" + +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "" + +#~ msgid "Hours per day last seven days" +#~ msgstr "" + +#~ msgid "Most productive day" +#~ msgstr "" + +#~ msgid "Avg session length" +#~ msgstr "" + +#~ msgid "Estimated value tracked" +#~ msgstr "Estimert verdi" + +#~ msgid "This week vs last week" +#~ msgstr "" + +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "" + +#~ msgid "hrs this week" +#~ msgstr "Tidsposter denne uken" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "" +#~ msgid "vs last week" +#~ msgstr "" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "" +#~ msgid "This week" +#~ msgstr "Uke" -#: app/templates/integrations/view.html:147 -msgid "Are you sure you want to reset this integration? This will remove all credentials and configuration." -msgstr "" +#~ msgid "Last week" +#~ msgstr "I fjor" -#: app/templates/integrations/view.html:153 -msgid "Are you sure you want to delete this integration? This action cannot be undone." -msgstr "" +#~ msgid "Could not load comparison." +#~ msgstr "" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "" +#~ msgid "This week and last week hours by day" +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "" +#~ msgid "Recent Entries" +#~ msgstr "Nylige oppføringer" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" +#~ msgid "View all" +#~ msgstr "Vis alle" -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Fortsett - Start en ny tidtaker med samme egenskaper" -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "" +#~ msgid "Edit entry" +#~ msgstr "Rediger oppføring" -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "" +#~ msgid "Duplicate entry" +#~ msgstr "Duplisert oppføring" -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "" +#~ msgid "Delete entry" +#~ msgstr "Slett oppføring" -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "Ingen nylige oppføringer funnet." -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" +#~ msgid "Weekly Goal" +#~ msgstr "Ukentlig mål" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "" +#~ msgid "Days Left" +#~ msgstr "Dager igjen" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "" +#~ msgid "Need" +#~ msgstr "Behov" -#: app/templates/integrations/wizard_asana.html:76 -msgid "Comma-separated list of specific project GIDs to sync. Leave empty to sync all projects in the workspace." -msgstr "" +#~ msgid "to reach goal" +#~ msgstr "å nå målet" -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "" +#~ msgid "No Weekly Goal" +#~ msgstr "Ingen ukemål" -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "Sett et ukentlig tidsmål for å spore fremgangen din" -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "" +#~ msgid "Create Goal" +#~ msgstr "Lag mål" -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Toppprosjekter (30 dager)" -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "" +#~ msgid "View report" +#~ msgstr "Brukerrapport" -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Tidsfordeling kakediagrammer" -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Ingen aktivitet de siste 30 dagene." -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Start sporingstid" -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "" +#~ msgid "Top Projects (30 days)" +#~ msgstr "Toppprosjekter (30 dager)" -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "" +#~ msgid "No activity in the last 30 days." +#~ msgstr "Ingen aktivitet de siste 30 dagene." -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "" -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "" +#~ msgid "Live" +#~ msgstr "" -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:12 -msgid "Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" +#~ msgid "You have created %(count)s entries" +#~ msgstr "Duplisert %(count)d sitat(er)" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Feil ved generering av PDF: %(error)s" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "" +#~ msgid "Share & support" +#~ msgstr "Plattformstøtte" -#: app/templates/integrations/wizard_github.html:57 -msgid "Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave empty to sync all accessible repositories." -msgstr "" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "" +#~ msgid "Buy License (€25)" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "" +#~ msgid "Create new task..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "" +#~ msgid "Loading tasks..." +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "" +#~ msgid "Enter new task name:" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "" +#~ msgid "Failed to create task: " +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "" +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "" +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "" +#~ msgid "A description is required when logging time" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "Passordet må være minst 8 tegn langt" -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "" +#~ msgid "Quick start with a template" +#~ msgstr "Hurtigstartguide" -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "" +#~ msgid "All templates" +#~ msgstr "E-postmaler" -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "" +#~ msgid "Select either a project or a client" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:150 -msgid "Secret token for verifying webhook signatures. Configure this in your GitHub repository webhook settings." -msgstr "" +#~ msgid "Task (optional)" +#~ msgstr "Oppgave (valgfritt)" -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" +#~ msgid "Notes (optional)" +#~ msgstr "Merknader (valgfritt)" -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" +#~ msgid "Tags (optional)" +#~ msgstr "Oppgave (valgfritt)" -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "f.eks. møte, utvikling, admin" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "" +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "" +#~ msgid "Enter a name for the new task." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "" +#~ msgid "Task name" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "Configure OAuth credentials. Create an application in GitLab Settings → Applications." -msgstr "" +#~ msgid "Create task" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "" +#~ msgid "Task name is required." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "Add this URL as an authorized redirect URI in your GitLab application settings:" -msgstr "" +#~ msgid "Uploading" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "" +#~ msgid "images" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "" +#~ msgid "Uploading image" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "Comma-separated list of GitLab project IDs to sync. Leave empty to sync all accessible projects." -msgstr "" +#~ msgid "Successfully uploaded" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" +#~ msgid "image(s) failed to upload" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "" +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "" +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "" +#~ msgid "Support Development" +#~ msgstr "Støtte utvikling" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "" +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "" +#~ msgid "Remove prompts with key" +#~ msgstr "" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "" +#~ msgid "Why Your Support Matters" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "" +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:12 -msgid "First, configure OAuth credentials for Jira. You can get these from Atlassian Developer Console." -msgstr "" +#~ msgid "Server Infrastructure" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "" +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "" +#~ msgid "Feature Development" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "" +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "" +#~ msgid "Security & Maintenance" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:48 -msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:55 -msgid "Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" +#~ msgid "Internationalization" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:71 -msgid "Click \"Test Connection\" to verify that Jira is accessible and OAuth credentials are correct." -msgstr "" +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "" +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:92 -msgid "Jira Query Language query to filter issues to sync. Leave empty to sync all assigned issues." -msgstr "" +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "" +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "" +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "" +#~ msgid "Your TimeTracker Journey" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "" +#~ msgid "Days using TimeTracker" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "" +#~ msgid "Time entries tracked" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:208 -msgid "Review your configuration below. Click \"Finish\" to save and complete the setup." -msgstr "" +#~ msgid "How to Support" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "" +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "" +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "" +#~ msgid "The Impact of Your Support" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "" +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave empty for default." -msgstr "" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "" +#~ msgid "Other Ways to Help" +#~ msgstr "" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "" +#~ msgid "Contribute on GitHub" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "" +#~ msgid "Help Others" +#~ msgstr "" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "Review your configuration and click \"Finish\" to save. After saving, users can connect their Outlook Calendar accounts." -msgstr "" +#~ msgid "Share your knowledge in the community" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "" +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "" +#~ msgid "Complete documentation and user guide" +#~ msgstr "Komplett dokumentasjon og brukerveiledning" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "" +#~ msgid "Quick Navigation" +#~ msgstr "Rask navigering" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "" +#~ msgid "Filter sections..." +#~ msgstr "Filtrer deler..." -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "After saving OAuth credentials, you will need to connect your QuickBooks account via OAuth." -msgstr "" +#~ msgid "Quick Start" +#~ msgstr "Rask start" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "" +#~ msgid "Reports & Analytics" +#~ msgstr "Rapporter og analyser" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "" +#~ msgid "Productivity Features" +#~ msgstr "Produktivitetsfunksjoner" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" +#~ msgid "Admin Features" +#~ msgstr "Administrasjonsfunksjoner" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "" +#~ msgid "Mobile Usage" +#~ msgstr "Mobilbruk" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "" +#~ msgid "API Documentation" +#~ msgstr "Dokumentasjon" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "" +#~ msgid "Troubleshooting" +#~ msgstr "Feilsøking" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "" +#~ msgid "TimeTracker Help Center" +#~ msgstr "TimeTracker Hjelpesenter" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "Alt du trenger å vite for å få mest mulig ut av TimeTracker" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "" +#~ msgid "Start Tracking Time" +#~ msgstr "Start sporingstid" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "" +#~ msgid "View Projects" +#~ msgstr "Se prosjekter" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Generate Reports" +#~ msgstr "Generer rapporter" -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "" +#~ msgid "API Docs" +#~ msgstr "API-tokens" -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "" +#~ msgid "Restart Product Tour" +#~ msgstr "" -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" +#~ msgid "Quick Start Guide" +#~ msgstr "Hurtigstartguide" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "" +#~ msgid "For New Users" +#~ msgstr "For nye brukere" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Logg inn med brukernavnet ditt (ikke nødvendig med passord)" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Utforsk dashbordet for å se oversikten din" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Start din første tidtaker på et eksisterende prosjekt" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "" +#~ msgid "View your time entries in reports" +#~ msgstr "Se dine tidsregistreringer i rapporter" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "" +#~ msgid "For Administrators" +#~ msgstr "For administratorer" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Sett opp klienter i Client Management-delen" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "" +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Lag prosjekter og tilordne dem til kunder" -#: app/templates/integrations/wizard_trello.html:48 -msgid "Click \"Test Connection\" to verify that your Trello API credentials are correct." -msgstr "" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Konfigurer systeminnstillinger (tidssone, valuta osv.)" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "" +#~ msgid "Manage users and permissions" +#~ msgstr "Administrer brukere og tillatelser" -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "" +#~ msgid "Pro Tip:" +#~ msgstr "Pro tips:" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "" +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Bruk det mobilvennlige grensesnittet for " +#~ "å spore tid mens du er på " +#~ "farten. Timeren fortsetter å kjøre selv" +#~ " om du lukker nettleseren!" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Sanntidssporing med automatisk tomgangsdeteksjon " +#~ "og WebSocket-oppdateringer" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "" +#~ msgid "Manual Entry" +#~ msgstr "Manuell inntasting" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "Logg tid manuelt med tilpassede start- og sluttider" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "" +#~ msgid "Starting a Timer" +#~ msgstr "Starte en timer" -#: app/templates/integrations/wizard_xero.html:50 -msgid "Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "" +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Naviger til Timer-siden eller dashbordet" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "" +#~ msgid "Select a project from the dropdown" +#~ msgstr "Velg et prosjekt fra rullegardinmenyen" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "" +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "Velg eventuelt en oppgave for mer detaljert sporing" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Legg til notater om det du jobber med (valgfritt)" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Legg til tagger atskilt med komma (valgfritt)" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Klikk \"Start timer\"" -#: app/templates/integrations/wizard_xero.html:163 -msgid "Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" +#~ msgid "Timer Features" +#~ msgstr "Timer funksjoner" -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Lagervare" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Velg element" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Lager" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Velg Lager" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Justeringsmengde" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "Bruk positive verdier for å øke beholdningen, negative verdier for å redusere" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "f.eks. korrigering av fysisk telling, skade, gjenstander som er funnet" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Ytterligere detaljer om denne justeringen" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Rekordjustering" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Alle varehus" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Alle varer" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Dato fra" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Dato til" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Punkt" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "Ingen justeringer funnet." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "På Hand" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Ombestillingspunkt" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Mangel" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Ombestill antall" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "Ingen varsler om lavt lager. Alle varer er over bestillingspunktet." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "" +#~ msgid "Real-time duration display" +#~ msgstr "Visning av varighet i sanntid" -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "" +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Bruk positive verdier for tillegg, negative for fjerninger" +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "" +#~ msgid "Continues running if browser closes" +#~ msgstr "Fortsetter å kjøre hvis nettleseren lukkes" -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "" +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Automatisk tomgangsdeteksjon (konfigurerbar)" -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "" +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Én aktiv timer per bruker (konfigurerbar)" -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Bevegelsestype" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Retur" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Sløseri" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "" +#~ msgid "WebSocket live updates" +#~ msgstr "WebSocket live-oppdateringer" -#: app/templates/inventory/movements/form.html:41 -msgid "You can apply devaluation below to record returned or wasted items at a reduced cost." -msgstr "" +#~ msgid "Manual Time Entry" +#~ msgstr "Manuell tidsinntasting" -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "" +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Opprett tidsoppføringer manuelt når du " +#~ "trenger å registrere tid brukt borte " +#~ "fra datamaskinen eller justere eksisterende" +#~ " oppføringer." -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "" +#~ msgid "Required Information" +#~ msgstr "Nødvendig informasjon" -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "" +#~ msgid "Project selection" +#~ msgstr "Prosjektvalg" -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "" +#~ msgid "Start date and time" +#~ msgstr "Startdato og klokkeslett" -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "" +#~ msgid "End date and time" +#~ msgstr "Sluttdato og klokkeslett" -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "" +#~ msgid "Optional Information" +#~ msgstr "Valgfri informasjon" -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "" +#~ msgid "Task assignment" +#~ msgstr "Oppgaveoppgave" -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "" +#~ msgid "Description/notes" +#~ msgstr "Beskrivelse/notater" -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "f.eks. fysisk tellingskorreksjon" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Rekordbevegelse" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Referansetype" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Håndbok" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Enhetskostnad" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Referanse" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "" +#~ msgid "Tags for categorization" +#~ msgstr "Tagger for kategorisering" -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "Ingen aksjebevegelser funnet." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Leverandør" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Velg Leverandør" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Bestillingsdato" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Forventet leveringsdato" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Notater synlig for leverandør" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Interne merknader (ikke synlig for leverandøren)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Varer" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Legg til element" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Antall" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "Leverandør SKU" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Opprett innkjøpsordre" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Utkast" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Sendt" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Bekreftet" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Mottatt" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Alle leverandører" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "PO-nummer" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Forventet levering" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "Ingen innkjøpsordrer funnet." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "Er du sikker på at du vil kansellere denne innkjøpsordren?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "Er du sikker på at du vil slette denne innkjøpsordren?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Bestillingsdetaljer" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Mottatt dato" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Antall bestilt" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Mottatt mengde" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Linje totalt" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Frakt" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Motta innkjøpsordre" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Merk som mottatt" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "Ingen varer i denne innkjøpsordren." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Totalt antall varer" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Totale varehus" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Total beholdningsverdi" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Lite lagervarer" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Tilgjengelige rapporter" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Aksjevurdering" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Se lagerverdi etter lager" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Bevegelseshistorie" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Detaljert bevegelseslogg" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Omsetningsanalyse" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Omsetningshastigheter for varelager" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Lav lagerrapport" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Varer under bestillingspunktet" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "Fant %(count)s varer under bestillingspunktet." - -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Antall på hånden" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Bestill på nytt" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "Opprett PO" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Alle lagernivåer er gode" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Ingen varer er for øyeblikket under bestillingspunktet." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "Ingen bevegelser funnet." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "Turnover rate indicates how many times inventory is sold and replaced in a year. Higher rates indicate faster-moving items." -msgstr "Omsetningshastighet angir hvor mange ganger varelager selges og erstattes i løpet av et år. Høyere priser indikerer varer som beveger seg raskere." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Totalt solgt" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Gjennomsnittlig lagernivå" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Omsetningshastighet" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Rask bevegelse" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normal" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "Slow Moving" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "Veldig sakte" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "Fant ingen salgsdata for den valgte perioden." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Lagervurdering" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Total verdi" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "Ingen varer funnet med kostnadsinformasjon." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Reservert" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Oppfylt" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Reservert kl" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Utløper kl" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "Vil du oppfylle denne reservasjonen?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "Kansellere denne reservasjonen?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "Ingen reservasjoner funnet." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Enhet" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Standardkostnad" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Standardpris" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "Bilde-URL" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Spor inventar" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Administrer flere leverandører for denne varen med forskjellige priser." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "MOQ" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Ledetid (dager)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Foretrukket" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Legg til leverandør" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "Fant ingen bevegelseshistorikk for denne varen." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU, navn, strekkode..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Kun aktiv" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Totalt antall" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Tilgjengelig" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Lite lager" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "Ingen lagervarer funnet." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Varedetaljer" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Sporbar" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Lagernivåer etter lager" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "" +#~ msgid "Billable status override" +#~ msgstr "Fakturerbar statusoverstyring" -#: app/templates/inventory/stock_items/view.html:164 -msgid "Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Avanserte tidsregistreringsfunksjoner" -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "" +#~ msgid "Bulk Entry" +#~ msgstr "Masseinngang" -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Nylige aksjebevegelser" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Totalt på hånden" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Totalt reservert" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Totalt tilgjengelig" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Lavt lagervarsel" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Denne varen er ikke sporbar." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Aktive reservasjoner" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Antall reservert" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Sist talt" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "Ingen lager funnet for denne varen i noe lager." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "Ingen lagernivåer funnet." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Kun lite lager" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "Oversolgt" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "Ingen lagervarer funnet i dette lageret." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Leverandørkode" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Unik kode for denne leverandøren (f.eks. SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Betalingsbetingelser" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "f.eks. Net 30, Net 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Kode, navn, e-post" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "Ingen leverandører funnet." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Leverandørdetaljer" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Lagervarer fra denne leverandøren" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Ledetid" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "Ingen lagervarer knyttet til denne leverandøren." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Foretrukne varer" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Fra lageret" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Velg Kildevarehus" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Til lageret" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Velg Destinasjonslager" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Valgfrie merknader om denne overføringen" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Opprett overføring" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "Ingen overføringer funnet." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Lagerkode" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Unik kode for dette lageret (f.eks. WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "Kontakt e-post" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Kontakt telefon" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "Ingen varehus funnet." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Lagerdetaljer" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "Ingen lagervarer på dette lageret." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Totalt antall" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Opprett flere tidsoppføringer for påfølgende" +#~ " dager med samme prosjekt og " +#~ "varighet. Perfekt for vanlige arbeidsmønstre." -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "" +#~ msgid "Templates" +#~ msgstr "Maler" -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Lagre ofte brukte tidsoppføringer som " +#~ "maler for rask gjenbruk. Lagrer " +#~ "prosjekt, oppgave og notater." -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualiser tidsregistreringene dine i en " +#~ "kalender. Dra og slipp for å endre" +#~ " tidsplanen eller klikk på datoer for" +#~ " å legge til oppføringer." -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "" +#~ msgid "Project Information" +#~ msgstr "Prosjektinformasjon" -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "" +#~ msgid "Descriptive project name" +#~ msgstr "Beskrivende prosjektnavn" -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "" +#~ msgid "Associated client organization" +#~ msgstr "Tilknyttet kundeorganisasjon" -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "" +#~ msgid "Project details and scope" +#~ msgstr "Prosjektdetaljer og omfang" -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "" +#~ msgid "Active, completed, or archived" +#~ msgstr "Aktiv, fullført eller arkivert" -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "" +#~ msgid "Billing Information" +#~ msgstr "Faktureringsinformasjon" -#: app/templates/invoice_approvals/request.html:20 -msgid "Select one or more users who need to approve this invoice. Approvals will be processed in order." -msgstr "" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Om tid skal spores for fakturering" -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Be om godkjenning" +#~ msgid "Rate for billable time calculations" +#~ msgstr "Sats for fakturerbar tidsberegninger" -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Godkjenningsstatus" +#~ msgid "Billing Reference" +#~ msgstr "Faktureringsreferanse" -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "" +#~ msgid "PO number or billing code" +#~ msgstr "PO-nummer eller faktureringskode" -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "" +#~ msgid "Project Operations" +#~ msgstr "Prosjektdrift" -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "" +#~ msgid "Create new projects with client relationships" +#~ msgstr "Opprette nye prosjekter med kunderelasjoner" -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "" +#~ msgid "Edit existing projects to update details" +#~ msgstr "Rediger eksisterende prosjekter for å oppdatere detaljer" -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Årsak til avvisning" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "Arkiver prosjekter for å skjule fra tidtakere (bevarer data)" -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Slett prosjekter (fjerner alle tilknyttede tidsoppføringer)" -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Raske handlinger" +#~ msgid "Best Practices" +#~ msgstr "Beste praksis" -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "" +#~ msgid "Use descriptive project names" +#~ msgstr "Bruk beskrivende prosjektnavn" -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Eksporter til Excel" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Delvis betalt" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Fullt betalt" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Opprett faktura" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Generer en ny faktura for et prosjekt og klient" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Velg et prosjekt" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "Hvis du velger et prosjekt, vil klientdetaljer automatisk fylles ut" - -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Angi nøyaktige timepriser for fakturering" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Arkiver i stedet for slett når det er mulig" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Skattesats (%)" +#~ msgid "Use billing references for external tracking" +#~ msgstr "Bruk faktureringsreferanser for ekstern sporing" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Tips" +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "Klientadministrasjonssystemet hjelper til med " +#~ "å organisere arbeidet ditt etter " +#~ "kundeorganisasjoner, forhindrer feil og " +#~ "effektiviserer prosjektoppretting." -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "Velg riktig prosjekt for å automatisk fylle ut klientdetaljer." +#~ msgid "Client Information" +#~ msgstr "Kundeinformasjon" -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "Du kan tilpasse notater og vilkår før du sender fakturaen." +#~ msgid "Organization Name" +#~ msgstr "Organisasjonsnavn" -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Rediger faktura" +#~ msgid "Company or client name" +#~ msgstr "Firma- eller klientnavn" -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Oppdater fakturadetaljer, varer og vilkår" +#~ msgid "Primary contact details" +#~ msgstr "Primær kontaktinformasjon" -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Tidsbaserte tjenester og timearbeid" +#~ msgid "Email & Phone" +#~ msgstr "E-post og telefon" -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "" +#~ msgid "Contact information" +#~ msgstr "Kontaktinformasjon" -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "" +#~ msgid "Business address" +#~ msgstr "Bedriftsadresse" -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "" +#~ msgid "Benefits" +#~ msgstr "Fordeler" -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Velg lagervare" +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "Rullegardinvalg forhindrer skrivefeil" -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "f.eks. webutviklingstjenester" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Standardpriser fyller prosjekter ut automatisk" -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "" +#~ msgid "Consistent client naming" +#~ msgstr "Konsekvent klientnavn" -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Fjern elementet" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Elementer Subtotal" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Fakturerbare utgifter som reiser, måltider og materialer" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Legg til kostnad" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "for eksempel reise til kundemøte" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Koblet utgift - tittel kan ikke redigeres" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Koblet utgift - beskrivelse kan ikke redigeres" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Koblet utgift - kategori kan ikke redigeres" - -#: app/templates/invoices/edit.html:180 app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Reise" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Måltider" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Overnatting" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Rekvisita" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Programvare" - -#: app/templates/invoices/edit.html:185 app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Utstyr" - -#: app/templates/invoices/edit.html:186 app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Tjenester" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Markedsføring" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Opplæring" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Annen" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Tilknyttet utgift - beløp kan ikke redigeres" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Koblet utgift - dato kan ikke redigeres" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Koble ut regning fra faktura" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Utgifter Delsum" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Ekstra varer" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Produkter, materialer, lisenser og andre varer" - -#: app/templates/invoices/edit.html:226 app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Legg til Good" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Pris" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "f.eks. programvarelisens" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Produkt" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Service" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Materiale" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "Fjern godt" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Varer Subtotal" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Live forhåndsvisning" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Betaling" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Varer" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Generer fra tid/kostnader" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Rekordbetaling" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "Eksporter PDF" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "Eksporter CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Duplisert faktura" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "Er du sikker på at du vil fjerne denne utgiften fra fakturaen?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Fjern koblingen til kostnad" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Fjern tilknytningen" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "Legg til minst én vare, utgift eller ekstra vare på fakturaen" - -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Generer fra tid, kostnader og varer" - -#: app/templates/invoices/generate_from_time.html:7 -msgid "Select unbilled time entries, project costs, and extra goods to add to this invoice" -msgstr "Velg ufakturerte tidsregistreringer, prosjektkostnader og ekstra varer som skal legges til denne fakturaen" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Tilbake til Rediger" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Ufakturerte tidsoppføringer" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "oppføringer" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "Ingen ufakturerte tidsregistreringer funnet for dette prosjektet." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Ufakturerte prosjektkostnader" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "Ingen ufakturerte kostnader funnet for dette prosjektet." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Ufakturerte fakturerbare utgifter" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Selger" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "Ingen ufakturerte fakturerbare utgifter funnet for dette prosjektet." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Prosjekt Ekstra varer" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "Ingen ekstra varer funnet for dette prosjektet." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Legg til valgt på faktura" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Sammendrag av utvalg" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Totale tilgjengelige timer" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Totale tilgjengelige kostnader" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Totale tilgjengelige utgifter" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Totalt tilgjengelige varer" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Oversikt over forhåndsbetalte timer" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "Planen inkluderer %(hours)s timer per syklus (tilbakestilles på dag %(day)s)." - -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "Forbrukt: %(consumed)s h • Gjenstående: %(remaining)s h" - -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Ingen forhåndsbetalt bruk registrert for valgt periode ennå." - -#: app/templates/invoices/generate_from_time.html:175 -msgid "You can select multiple time entries, costs, expenses, and extra goods." -msgstr "Du kan velge flere tidsregistreringer, kostnader, utgifter og ekstra varer." - -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "Tidsregistreringer grupperes etter oppgave eller prosjekt ved opprettelse av element." - -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "Kostnader og ekstra varer legges til som individuelle fakturaposter." - -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "Utgifter er knyttet til faktura og fremkommer i eget avsnitt." - -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "Velg minst én gang oppføring, kostnad, utgift eller ekstra vare" - -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Filtrer fakturaer" +#~ msgid "Easier project organization" +#~ msgstr "Enklere prosjektorganisering" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Fakturanummer eller klient" +#~ msgid "Project Count" +#~ msgstr "Prosjektantall" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Slett valgte fakturaer" +#~ msgid "Total and active projects" +#~ msgstr "Totale og aktive prosjekter" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Endre status for utvalgte fakturaer" +#~ msgid "Total hours worked" +#~ msgstr "Totalt arbeidede timer" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "" +#~ msgid "Cost Estimation" +#~ msgstr "Kostnadsestimat" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "" +#~ msgid "Estimated billing amounts" +#~ msgstr "Anslåtte faktureringsbeløp" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "" +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Bryt ned prosjekter i håndterbare " +#~ "oppgaver med detaljert sporing og " +#~ "fremdriftsovervåking." -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Slett faktura" - -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Advarsel:" - -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "Er du sikker på at du vil slette faktura" - -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "All invoice items, extra goods, and payment records associated with this invoice will be permanently deleted." -msgstr "Alle fakturaartikler, ekstravarer og betalingsoppføringer knyttet til denne fakturaen vil bli slettet permanent." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "FAKTURA" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Faktura nr." - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Bill To" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Antall (timer)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "Generert fra %(num)d tidsoppføringer" - -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Kostnader" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Delsum:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "Skatt (%(rate).2f%%):" - -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Totalt beløp:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Merknader:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Vilkår:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Betalingsinformasjon:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Vilkår og betingelser:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "" +#~ msgid "Task Properties" +#~ msgstr "Oppgaveegenskaper" -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "" +#~ msgid "Name & Description" +#~ msgstr "Navn og beskrivelse" -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "" +#~ msgid "Clear task identification" +#~ msgstr "Tydelig oppgaveidentifikasjon" -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "" +#~ msgid "Priority Levels" +#~ msgstr "Prioriterte nivåer" -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Lav, Middels, Høy, Haster" -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "" +#~ msgid "Due Dates" +#~ msgstr "Forfallsdatoer" -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Betalingshistorikk" +#~ msgid "Deadline tracking" +#~ msgstr "Tidsfristsporing" -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Send faktura via e-post" +#~ msgid "Assignment" +#~ msgstr "Tildeling" -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "" +#~ msgid "Task ownership" +#~ msgstr "Oppgaveeierskap" -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "Ikke tilordnet" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "" +#~ msgid "Status Tracking" +#~ msgstr "Statussporing" -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "" +#~ msgid "To Do - Not started" +#~ msgstr "Å gjøre - Ikke startet" -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "" +#~ msgid "In Progress - Currently working" +#~ msgstr "Pågår - jobber for tiden" -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "Bruk filtre" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Side" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "av" - -#: app/templates/issues/list.html:169 -#, fuzzy -msgid "No issues found" -msgstr "Ingen brukere funnet." - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" +#~ msgid "Review - Ready for review" +#~ msgstr "Anmeldelse - Klar for anmeldelse" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "" +#~ msgid "Done - Completed" +#~ msgstr "Ferdig - Fullført" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "" +#~ msgid "Cancelled - Not needed" +#~ msgstr "Kansellert - ikke nødvendig" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "" +#~ msgid "Time Tracking Features" +#~ msgstr "Tidssporingsfunksjoner" -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Oppgavestyring" +#~ msgid "Start timers directly from tasks" +#~ msgstr "Start tidtakere direkte fra oppgaver" -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "" +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Koble tidsoppføringer til spesifikke oppgaver" -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Spor anslåtte kontra faktiske timer" -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "" +#~ msgid "Monitor task progress automatically" +#~ msgstr "Overvåk oppgavefremdriften automatisk" -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "" +#~ msgid "Task Views" +#~ msgstr "Oppgavevisninger" -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Mine oppgaver - Dine tildelte oppgaver" -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Alle oppgaver - Komplett oppgaveliste" -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Administrer kolonner" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Forfalte oppgaver - Forfalte varer" -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Dra oppgaver mellom kolonner for å oppdatere statusen deres" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Prosjektoppgaver - Oppgaver innenfor prosjekter" -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "Kanban-tavle" +#~ msgid "Collaboration Features" +#~ msgstr "Samarbeidsfunksjoner" -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "flyttet til" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Oppgavekommentarer - Trådede diskusjoner om oppgaver" -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "Ingen oppgaver i denne kolonnen." +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Markdown Support - Rik formatering i beskrivelser" -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Administrer Kanban-kolonner" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "Brukeromtaler – Tag teammedlemmer (hvis aktivert)" -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Tilpass kanban-tavlekolonner og oppgavetilstander" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Filvedlegg - Legg ved filer til oppgaver (hvis aktivert)" -#: app/templates/kanban/columns.html:25 app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Prosjekt:" +#~ msgid "Markdown Formatting" +#~ msgstr "Markdown-formatering" -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Globale kolonner" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "Oppgave- og prosjektbeskrivelser støtter Markdown:" -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Legg til kolonne" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Fet**, *kursiv*, ~~gjennomstreking~~" -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Kanban kolonneliste" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# Overskrifter, - Lister, [Links](url)" -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Nøkkel" +#~ msgid "```code blocks```, tables, images" +#~ msgstr "```kodeblokker```, tabeller, bilder" -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "Fullstendig?" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualiser arbeidsflyten din med et " +#~ "dra-og-slipp Kanban-tavle for " +#~ "intuitiv oppgavebehandling." -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Dra for å omorganisere" +#~ msgid "Board Features" +#~ msgstr "Brettfunksjoner" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Rediger kolonne" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Tilpassbare kolonner som samsvarer med oppgavestatuser" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Slå av aktiv tilstand" +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Dra og slipp oppgaver mellom kolonner" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "Fant ingen kanban-kolonner. Opprett din første kolonne for å komme i gang." - -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Tips:" - -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Dra og slipp rader for å omorganisere kolonner" - -#: app/templates/kanban/columns.html:127 -msgid "System columns (todo, in_progress, done) cannot be deleted but can be customized" -msgstr "Systemkolonner (todo, in_progress, done) kan ikke slettes, men kan tilpasses" - -#: app/templates/kanban/columns.html:128 -msgid "Columns marked as \"Complete\" will mark tasks as completed when dragged to that column" -msgstr "Kolonner merket som \"Fullført\" vil merke oppgaver som fullførte når de dras til den kolonnen" - -#: app/templates/kanban/columns.html:129 -msgid "Inactive columns are hidden from the kanban board but tasks with that status remain accessible" -msgstr "Inaktive kolonner er skjult fra kanban-tavlen, men oppgaver med den statusen forblir tilgjengelige" - -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Slett Kanban-kolonnen" - -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "Er du sikker på at du vil slette kolonnen?" - -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Nøkkel:" - -#: app/templates/kanban/columns.html:157 -msgid "Note: Tasks with this status will remain accessible but the column will no longer appear on the kanban board." -msgstr "Merk: Oppgaver med denne statusen vil forbli tilgjengelige, men kolonnen vil ikke lenger vises på kanban-tavlen." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Slett kolonne" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Kolonnene er omorganisert" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "Kunne ikke omorganisere kolonner. Vennligst prøv igjen." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Opprett Kanban-kolonne" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Legg til en ny kolonne på kanban-tavlen" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Opprett Kanban-kolonneskjema" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Kolonneetikett" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "f.eks. i gjennomgang, blokkert, testing" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "Visningsnavnet som vises på kanban-tavlen" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Kolonnenøkkel" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "f.eks. in_review, blokkert, testing" - -#: app/templates/kanban/create_column.html:34 -msgid "Unique identifier (lowercase, no spaces, use underscores). Auto-generated from label if empty." -msgstr "Unik identifikator (små bokstaver, ingen mellomrom, bruk understreking). Automatisk generert fra etikett hvis tom." - -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Globalt (for alle prosjekter)" - -#: app/templates/kanban/create_column.html:46 -msgid "Select a project to create project-specific columns, or leave as Global for all projects" -msgstr "Velg et prosjekt for å opprette prosjektspesifikke kolonner, eller la det være Globalt for alle prosjekter" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Ikon klasse" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Font Awesome ikonklasse" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Bla gjennom ikoner" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Primær (blå)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Sekundær (grå)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Suksess (grønn)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Fare (rød)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Advarsel (gul)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Info (cyan)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Bootstrap fargeklasse for styling" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Merk som fullstendig tilstand" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "Oppgaver som flyttes til denne kolonnen vil bli merket som fullført" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Opprett kolonne" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Note:" - -#: app/templates/kanban/create_column.html:97 -msgid "The column will be added at the end of the board. You can reorder columns later from the management page." -msgstr "Kolonnen legges til på slutten av tavlen. Du kan endre rekkefølgen på kolonner senere fra administrasjonssiden." - -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Rediger Kanban-kolonnen" - -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Endre kolonneinnstillinger" - -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Rediger Kanban-kolonneskjema" - -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "Nøkkelen kan ikke endres etter opprettelse" - -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Dette er en prosjektspesifikk kolonne" - -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Dette er en global kolonne (for alle prosjekter)" - -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Forhåndsvisning" - -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Inaktive kolonner er skjult fra kanban-tavlen" - -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Systemkolonne:" - -#: app/templates/kanban/edit_column.html:100 -msgid "This is a system column. You can customize its appearance but cannot delete it." -msgstr "Dette er en systemkolonne. Du kan tilpasse utseendet, men kan ikke slette det." - -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Filtrer etter prosjekt, bruker eller prioritet" -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "" +#~ msgid "Quick search across all tasks" +#~ msgstr "Rask søk ​​på tvers av alle oppgaver" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Bytt mørk modus" +#~ msgid "Using the Kanban Board" +#~ msgstr "Bruke Kanban-tavlen" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "" +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Tilgang fra Oppgaver-menyen eller prosjektsiden" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "Dra oppgaver til forskjellige kolonner for å endre status" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Klikk på et oppgavekort for å se/redigere detaljer" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Bruk filtre for å fokusere på spesifikt arbeid" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "Kanban-brettet er perfekt for " +#~ "sprintplanlegging og daglige standups. Hver" +#~ " kolonne representerer et stadium i " +#~ "arbeidsflyten din!" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "" +#~ msgid "Expense Tracking" +#~ msgstr "Utgiftssporing" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Spor forretningsutgifter, administrer kvitteringer" +#~ " og håndter refusjoner effektivt." -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "Utgiftsfunksjoner" -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Kategoriser utgifter (reise, måltider, forsyninger, etc.)" -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "" +#~ msgid "Attach receipt images and documents" +#~ msgstr "Legg ved kvitteringsbilder og dokumenter" -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Spor beløp, skatter og betalingsmåter" -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Godkjenningsarbeidsflyt for utgiftsforespørsler" -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "" +#~ msgid "Billing & Reimbursement" +#~ msgstr "Fakturering og refusjon" -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Merk utgifter som fakturerbare til klienter" -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "" +#~ msgid "Include expenses in client invoices" +#~ msgstr "Inkluder utgifter i klientfakturaer" -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "Spor refusjonsstatus" -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "Koble utgifter til konkrete prosjekter" -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "" +#~ msgid "Record Expense" +#~ msgstr "Rekord utgift" -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "" +#~ msgid "Enter details and upload receipt" +#~ msgstr "Skriv inn detaljer og last opp kvittering" -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "" +#~ msgid "Submit for Approval" +#~ msgstr "Send inn for godkjenning" -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "" +#~ msgid "Admin reviews and approves" +#~ msgstr "Administrator vurderer og godkjenner" -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "" +#~ msgid "Invoice/Reimburse" +#~ msgstr "Faktura/Refusjon" -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Legg til faktura eller refunder" -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "" +#~ msgid "Track Payment" +#~ msgstr "Spor betaling" -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "" +#~ msgid "Monitor reimbursement status" +#~ msgstr "Overvåke refusjonsstatus" -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "" +#~ msgid "Professional Invoicing" +#~ msgstr "Profesjonell fakturering" -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "" +#~ msgid "Professional PDF generation" +#~ msgstr "Profesjonell PDF-generering" -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Stopp timer" +#~ msgid "Company branding and logos" +#~ msgstr "Bedriftens merkevarebygging og logoer" -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "" +#~ msgid "Automatic invoice numbering" +#~ msgstr "Automatisk fakturanummerering" -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "" +#~ msgid "Tax calculations" +#~ msgstr "Skatteberegninger" -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "" +#~ msgid "Time Integration" +#~ msgstr "Tidsintegrasjon" -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 app/templates/main/dashboard.html:684 -#: app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Ingen oppgave" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "" +#~ msgid "Generate from time entries" +#~ msgstr "Generer fra tidsregistreringer" -#: app/templates/kiosk/dashboard.html:348 app/templates/main/dashboard.html:692 -#: app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "Hva jobber du med?" +#~ msgid "Smart grouping by task/project" +#~ msgstr "Smart gruppering etter oppgave/prosjekt" -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "Unngå dobbeltfakturering" -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "Bruk prosjekttimepriser" -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "" +#~ msgid "Set up client and project details" +#~ msgstr "Sett opp kunde- og prosjektdetaljer" -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "" +#~ msgid "Add Items" +#~ msgstr "Legg til elementer" -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "" +#~ msgid "Generate from time or add manually" +#~ msgstr "Generer fra tid eller legg til manuelt" -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "" +#~ msgid "Review & Send" +#~ msgstr "Se gjennom og send" -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "" +#~ msgid "Export PDF and update status" +#~ msgstr "Eksporter PDF og oppdater status" -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "" +#~ msgid "Monitor status and payments" +#~ msgstr "Overvåke status og betalinger" -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "" +#~ msgid "Standard Reports" +#~ msgstr "Standard rapporter" -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Prosjektrapport - Tidsfordeling etter prosjekt" -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Brukerrapport – individuelle resultatberegninger" -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Sammendragsrapport - Nøkkelberegninger og trender" -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Time Entry Report - Detaljerte tidslogger" -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "" +#~ msgid "Export Options" +#~ msgstr "Eksportalternativer" -#: app/templates/leads/convert_to_client.html:21 -msgid "This will create a new client and primary contact from this lead, then mark the lead as converted." -msgstr "" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "CSV-eksport - For ekstern analyse" -#: app/templates/leads/convert_to_client.html:23 -#, fuzzy -msgid "Lead summary" -msgstr "Sammendrag" +#~ msgid "Configurable delimiters" +#~ msgstr "Konfigurerbare skilletegn" -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "" +#~ msgid "Custom date ranges" +#~ msgstr "Egendefinerte datoperioder" -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Kilde" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Nettsted, henvisning, annonse..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Ledelsesscore" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Estimert verdi" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Lagre lead" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Navn, firma, e-post..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Alle statuser" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Nettsted, henvisning..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Score" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "Ingen kundeemner funnet" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Opprett første kundeemne" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "" +#~ msgid "Filtered data export" +#~ msgstr "Filtrert dataeksport" -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "" +#~ msgid "Filter Options" +#~ msgstr "Filteralternativer" -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "" +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Datoperiode – Egendefinerte start- og sluttdatoer" -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Prosjekt – Filtrer etter spesifikke prosjekter" -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "" +#~ msgid "User - Filter by team members" +#~ msgstr "Bruker - Filtrer etter teammedlemmer" -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Profesjonell tidsregistrering og prosjektledelse" +#~ msgid "Client - Filter by client organization" +#~ msgstr "Klient – ​​Filtrer etter kundeorganisasjon" -#: app/templates/main/about.html:24 -msgid "A comprehensive web-based time tracking application built with Flask, featuring project management, client organization, task management, invoicing, and advanced analytics." -msgstr "En omfattende nettbasert tidsregistreringsapplikasjon bygget med Flask, med prosjektledelse, klientorganisasjon, oppgavestyring, fakturering og avansert analyse." +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Lagrede filtre - Lagre ofte brukte filtre" -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Fakturering" +#~ msgid "Visual Analytics" +#~ msgstr "Visuell analyse" -#: app/templates/main/about.html:45 -msgid "TimeTracker is free and open source. You can donate or buy a supporter license — features are never locked." -msgstr "" +#~ msgid "Interactive bar charts" +#~ msgstr "Interaktive søylediagrammer" -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Smarte timere" +#~ msgid "Time distribution pie charts" +#~ msgstr "Tidsfordeling kakediagrammer" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "Sanntidssporing med tomgangsdeteksjon og liveoppdateringer" +#~ msgid "Trend analysis over time" +#~ msgstr "Trendanalyse over tid" -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Klientadministrasjon" +#~ msgid "Mobile-optimized charts" +#~ msgstr "Mobiloptimaliserte diagrammer" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Organiser kunder med kontakter, priser og prosjektrelasjoner" +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Bruk lagrede filtre for å få rask" +#~ " tilgang til de vanligste rapportvisningene" +#~ " dine. Lagre filtre for ukentlige " +#~ "anmeldelser, månedlig fakturering eller " +#~ "spesifikk prosjektsporing!" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Oppgavesystem" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Øk effektiviteten din med hurtigtaster, " +#~ "kommandopalett og automatiseringsfunksjoner." -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Bryt ned prosjekter i oppgaver med fremdriftssporing" +#~ msgid "Command Palette" +#~ msgstr "Kommandopalett" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "PDF-fakturaer" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "Få tilgang til alle funksjoner umiddelbart uten å forlate tastaturet" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Generer profesjonelle fakturaer fra sporet tid" +#~ msgid "Opening the Command Palette" +#~ msgstr "Åpne kommandopaletten" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Kjernefunksjoner" +#~ msgid "Press the question mark key" +#~ msgstr "Trykk på spørsmålstegn-tasten" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" +#~ msgid "Quick search" +#~ msgstr "Rask søk" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Manuell tidsregistrering med notater og tagger" +#~ msgid "Go to Projects" +#~ msgstr "Gå til prosjekter" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Oppdragsgiver og prosjektorganisasjon" +#~ msgid "Go to Tasks" +#~ msgstr "Gå til Oppgaver" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Rollebasert tilgang og brukerprofiler" +#~ msgid "New Time Entry" +#~ msgstr "Ny tidsregistrering" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Avanserte funksjoner" +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Tastatursnarveier" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Merket PDF-fakturering med skatte- og betalingssporing" +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Naviger raskere med tastaturdrevne kommandoer." +#~ " Trykk Shift+? for å se alle " +#~ "snarveiene." -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Visuell analyse og detaljert rapportering" +#~ msgid "Global Search" +#~ msgstr "Globalt søk" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "REST API for integrasjoner" +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "Finn raskt prosjekter, oppgaver, klienter " +#~ "og tidsregistreringer fra hvor som helst" +#~ " i appen." -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "PWA-funksjoner og mobilvennlig brukergrensesnitt" +#~ msgid "Email Notifications" +#~ msgstr "E-postvarsler" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Plattformstøtte" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Bli varslet om oppgavetildelinger, forfalte" +#~ " fakturaer og ukentlige sammendrag via " +#~ "e-post." -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Webapplikasjon" +#~ msgid "Administrator Features" +#~ msgstr "Administratorfunksjoner" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Desktop-nettlesere (Chrome, Firefox, Safari, Edge)" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Opprett nye brukere med fleksibel autentisering" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Mobil responsiv design" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Tilordne tilpassede roller med spesifikke tillatelser" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "Progressive Web App (PWA)" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Aktiver/deaktiver brukerkontoer" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Berøringsvennlig nettbrettgrensesnitt" +#~ msgid "View user statistics and activity" +#~ msgstr "Se brukerstatistikk og aktivitet" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Operativsystemer" +#~ msgid "Generate API tokens for users" +#~ msgstr "Generer API-tokens for brukere" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "Access Control" +#~ msgstr "Tilgangskontroll" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android og iOS (nettleser)" +#~ msgid "Granular role-based permissions system" +#~ msgstr "Granulært rollebasert tillatelsessystem" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Raspberry Pi-støtte" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Egendefinerte roller med finmasket tilgang" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Dockerisert utplassering" +#~ msgid "User data access controls" +#~ msgstr "Tilgangskontroller for brukerdata" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Databasestøtte" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "OIDC/SSO-integrasjon (Azure AD, Authelia, etc.)" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (anbefalt)" +#~ msgid "API token management for integrations" +#~ msgstr "API-tokenadministrasjon for integrasjoner" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (utvikler/test)" +#~ msgid "Authentication Methods" +#~ msgstr "Autentiseringsmetoder" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Automatiske migreringer med Flask-Migrate" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Kun brukernavn (enkel intern bruk)" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Verktøy for sikkerhetskopiering og gjenoppretting" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (bedriftsautentisering)" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Tekniske spesifikasjoner" +#~ msgid "Both methods simultaneously" +#~ msgstr "Begge metodene samtidig" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Teknologistabel" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Automatisk rolletildeling via grupper" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "Backend" +#~ msgid "Role & Permission Management" +#~ msgstr "Rolle- og tillatelsesadministrasjon" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "Frontend" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Opprett egendefinerte roller utover Admin/Bruker" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Utplassering" +#~ msgid "Set granular permissions per feature" +#~ msgstr "Angi detaljerte tillatelser per funksjon" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Nøkkelegenskaper" +#~ msgid "Assign users to multiple roles" +#~ msgstr "Tilordne brukere til flere roller" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "Sanntid" +#~ msgid "View and manage all permissions" +#~ msgstr "Se og administrer alle tillatelser" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "General Settings" +#~ msgstr "Generelle innstillinger" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "Åpen kildekode og fellesskap" +#~ msgid "Timezone and locale settings" +#~ msgstr "Tidssone og lokale innstillinger" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Fordeler med åpen kildekode" +#~ msgid "Currency configuration" +#~ msgstr "Valutakonfigurasjon" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Full kildekode tilgjengelig på GitHub" +#~ msgid "Time rounding rules" +#~ msgstr "Tidsavrundingsregler" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Lisensiert under GPL v3.0" +#~ msgid "Self-registration settings" +#~ msgstr "Innstillinger for selvregistrering" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Fellesskapsdrevet utvikling" +#~ msgid "Timer Settings" +#~ msgstr "Timerinnstillinger" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Transparent problemsporing og feilrapporter" +#~ msgid "Idle timeout configuration" +#~ msgstr "Konfigurasjon av inaktiv tidsavbrudd" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Distribusjonsalternativer" +#~ msgid "Single active timer mode" +#~ msgstr "Enkel aktiv timer-modus" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Docker-bilder (GHCR)" +#~ msgid "Timer display preferences" +#~ msgstr "Timervisningspreferanser" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Selvdrevet distribusjon med full kontroll" +#~ msgid "Notification settings" +#~ msgstr "Varslingsinnstillinger" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Sky-klar med Compose-konfigurasjoner" +#~ msgid "Database Management" +#~ msgstr "Databasehåndtering" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Se på GitHub" +#~ msgid "Create manual database backups" +#~ msgstr "Lag manuell sikkerhetskopiering av databaser" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -#, fuzzy -msgid "Support updates" -msgstr "Støttede funksjoner" +#~ msgid "View database migration status" +#~ msgstr "Se databasemigreringsstatus" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "" +#~ msgid "Monitor database performance" +#~ msgstr "Overvåk databaseytelse" -#: app/templates/main/about.html:208 -msgid "TimeTracker is free and open-source. Support updates and new features — or remove prompts with a one-time key." -msgstr "" +#~ msgid "Clean up old data and logs" +#~ msgstr "Rydd opp i gamle data og logger" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "" +#~ msgid "System Monitoring" +#~ msgstr "Systemovervåking" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Få hjelp og ressurser" +#~ msgid "View system information and health" +#~ msgstr "Se systeminformasjon og helse" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Dokumentasjon" +#~ msgid "Monitor application performance" +#~ msgstr "Overvåk applikasjonsytelsen" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Trinn-for-trinn guider for alle funksjoner." +#~ msgid "Review system logs and errors" +#~ msgstr "Se gjennom systemlogger og feil" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Se hjelp" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Mobilvennlige funksjoner" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Systeminformasjon" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Optimalisert for telefoner og nettbrett" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Status, versjoner og konfigurasjonsdetaljer." +#~ msgid "Touch-friendly interface" +#~ msgstr "Berøringsvennlig grensesnitt" -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "Administratortilgang kreves" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "Adaptive oppsett for alle skjermstørrelser" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Fellesskapsstøtte" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Høy kontrast for utendørs synlighet" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Rapporter problemer, be om funksjoner, bidra." +#~ msgid "Mobile Navigation" +#~ msgstr "Mobilnavigasjon" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "GitHub-problemer" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Nederste fanelinje for enkel tilgang" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "Quick access to dashboard" +#~ msgstr "Rask tilgang til dashbordet" -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -#, fuzzy -msgid "View time entries" -msgstr "Se alle tidsregistreringer" - -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "Her er en rask oversikt over arbeidet ditt." - -#: app/templates/main/dashboard.html:43 -#, fuzzy -msgid "Start timer with same project, task and notes as last entry" -msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" - -#: app/templates/main/dashboard.html:44 -#, fuzzy -msgid "Repeat last" -msgstr "Opprettet kl" - -#: app/templates/main/dashboard.html:46 -#, fuzzy -msgid "Start timer with last project and notes?" -msgstr "Start/stopp tidtakere med prosjekt- og oppgavetilknytning" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "" +#~ msgid "One-tap time logging" +#~ msgstr "Ett-trykks logging" -#: app/templates/main/dashboard.html:70 -#, fuzzy -msgid "Paused" -msgstr "Pause" +#~ msgid "Mobile-optimized reports" +#~ msgstr "Mobiloptimaliserte rapporter" -#: app/templates/main/dashboard.html:73 app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -#, fuzzy -msgid "Break" -msgstr "Tilbake" +#~ msgid "Installation" +#~ msgstr "Installasjon" -#: app/templates/main/dashboard.html:78 app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Åpne TimeTracker i mobilnettleseren din" -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "" +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Se etter alternativet \"Legg til på startskjermen\"." -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Startet kl" +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Følg nettleserspesifikke installasjonsveiledninger" -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Start fra startskjermen som en innebygd app" -#: app/templates/main/dashboard.html:102 -#, fuzzy -msgid "Adjust time" -msgstr "Innstilling" +#~ msgid "PWA Benefits" +#~ msgstr "PWA-fordeler" -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "" +#~ msgid "Offline capability for basic functions" +#~ msgstr "Offline-funksjon for grunnleggende funksjoner" + +#~ msgid "Faster loading times" +#~ msgstr "Raskere lastetider" + +#~ msgid "Native app-like experience" +#~ msgstr "Innfødt app-lignende opplevelse" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Push-varsler (der det støttes)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "Interaktive søylediagrammer" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "Tekniske spesifikasjoner" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "" + +#~ msgid "Open API Documentation" +#~ msgstr "Dokumentasjon" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Feilsøking og vanlige spørsmål" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "Hva skjer hvis jeg glemmer å stoppe timeren min?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "Tidtakeren vil fortsette å gå til " +#~ "du stopper den manuelt. Du kan se" +#~ " din aktive tidtaker på dashbordet og" +#~ " tidtakersiden. Tidtakeren vedvarer selv om" +#~ " du lukker nettleseren eller starter " +#~ "enheten på nytt. Hvis tomgangsdeteksjon " +#~ "er aktivert, kan tidtakeren pause " +#~ "automatisk etter den konfigurerte " +#~ "tidsavbruddsperioden." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "Kan jeg redigere tidsoppføringer etter at de er opprettet?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Ja, du kan redigere hvilken som " +#~ "helst tidsregistrering ved å klikke på" +#~ " rediger-knappen i tidsregistreringslisten. " +#~ "Du kan endre prosjektet, " +#~ "start-/sluttidspunkter, notater, tagger, fakturerbar" +#~ " status og oppgavetildeling. Administratorer " +#~ "kan redigere alle tidsoppføringer, mens " +#~ "vanlige brukere bare kan redigere sine" +#~ " egne oppføringer." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "Hvordan sporer jeg tid for flere prosjekter?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "Som standard kan du bare ha én " +#~ "aktiv timer om gangen. For å bytte" +#~ " prosjekt, stopp den nåværende tidtakeren" +#~ " og start en ny for det andre" +#~ " prosjektet. Alternativt kan du opprette" +#~ " manuelle tidsregistreringer for tidligere " +#~ "arbeid eller konfigurere systemet til å" +#~ " tillate flere aktive tidtakere (admin-" +#~ "innstilling)." + +#~ msgid "How do I export my time data?" +#~ msgstr "Hvordan eksporterer jeg tidsdataene mine?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Gå til Rapporter-siden og bruk " +#~ "\"Eksporter CSV\"-funksjonen. Du kan bruke " +#~ "filtre for å eksportere spesifikke data," +#~ " eller eksportere alle tidsoppføringer. " +#~ "CSV-filen inneholder informasjon om alle" +#~ " tider og kan åpnes i Excel " +#~ "eller andre regnearkapplikasjoner. Du kan " +#~ "også konfigurere skilletegnet for forskjellige" +#~ " regionale standarder." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "Hva er forskjellen mellom fakturerbar og ikke-fakturerbar tid?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "Fakturerbar tid spores for " +#~ "klientfaktureringsformål og kan ha en " +#~ "timepris knyttet til seg. Ikke-" +#~ "fakturerbar tid er for internt arbeid" +#~ " som ikke belastes klienter. Du kan" +#~ " merke individuelle tidsoppføringer som " +#~ "fakturerbare eller ikke-fakturerbare, og " +#~ "prosjekter kan ha standard fakturerbare " +#~ "innstillinger. Dette skillet er avgjørende " +#~ "for nøyaktig fakturering og " +#~ "lønnsomhetsanalyse." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "Hvordan lager jeg en faktura fra mine tidsregistreringer?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Naviger til Fakturaer → Opprett faktura," +#~ " konfigurer klient- og prosjektdetaljene, " +#~ "og bruk deretter \"Generer fra " +#~ "tidsregistreringer\" for automatisk å opprette" +#~ " fakturaelementer fra din sporede tid. " +#~ "Du kan filtrere etter datoperiode og " +#~ "prosjekt, og systemet vil gruppere " +#~ "tidsregistreringer intelligent. Se gjennom de" +#~ " genererte elementene og eksporter som " +#~ "en profesjonell PDF." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "Kan jeg bruke TimeTracker på mobilenheten min?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "Ja! TimeTracker er fullstendig responsiv " +#~ "og fungerer utmerket på mobile enheter." +#~ " Du kan installere den som en " +#~ "Progressive Web App (PWA) for en " +#~ "innfødt-lignende opplevelse. Mobilgrensesnittet " +#~ "inkluderer en bunnfanelinje for enkel " +#~ "navigering og berøringsoptimaliserte kontroller " +#~ "for tidsregistrering mens du er på " +#~ "farten." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "Hvordan bruker jeg kommandopaletten og hurtigtastene?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Trykk på spørsmålstegn-tasten (?) for" +#~ " å åpne kommandopaletten. Derfra kan " +#~ "du skrive for å søke etter hvilken" +#~ " som helst handling eller navigasjonsmål." +#~ " Bruk tastatursekvenser som \"g d\" " +#~ "for Dashboard, \"g p\" for Projects, " +#~ "eller \"n e\" for New Entry. Trykk" +#~ " Shift+? for å se alle tilgjengelige" +#~ " snarveier. Trykk Ctrl+K (eller Cmd+K " +#~ "på Mac) for raskt søk." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "Hvordan oppretter jeg massetidsoppføringer for flere dager?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Naviger til Arbeid → Massetidsregistrering." +#~ " Velg prosjektet ditt, velg en " +#~ "datoperiode, angi daglige start- og " +#~ "sluttider, og hopp over helger. Systemet" +#~ " vil opprette identiske tidsregistreringer " +#~ "for hver dag i området. Dette er" +#~ " perfekt for å logge vanlige " +#~ "arbeidsmønstre eller fylle ut tidligere " +#~ "tider når du har jobbet konsekvente " +#~ "timer." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "Hva er tidsregistreringsmaler og hvordan bruker jeg dem?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "Tidsregistreringsmaler lar deg lagre ofte " +#~ "brukte tidsregistreringskonfigurasjoner. Når du " +#~ "oppretter en manuell tidsregistrering, merker" +#~ " du av for \"Lagre som mal\" " +#~ "for å lagre prosjektet, oppgaven og " +#~ "notatene. Senere, når du oppretter nye" +#~ " oppføringer, kan du velge en mal " +#~ "for raskt å fylle ut disse " +#~ "detaljene. Maler er personlige og kun" +#~ " synlige for deg." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "Hvordan sporer jeg utgifter og legger dem til på fakturaer?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Gå til Utgifter → Nye utgifter for" +#~ " å registrere forretningsutgifter. Last opp" +#~ " kvitteringsbilder, kategoriser utgiften og " +#~ "merk den som fakturerbar om nødvendig." +#~ " Når du oppretter fakturaer, kan du" +#~ " inkludere disse utgiftene som linjeposter." +#~ " Utgifter støtter godkjenningsarbeidsflyter, " +#~ "refusjonssporing og kan knyttes til " +#~ "spesifikke prosjekter." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "Kan jeg bruke Markdown i beskrivelser?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "Ja! Prosjekt- og oppgavebeskrivelser støtter" +#~ " full Markdown-formatering. Du kan " +#~ "bruke fet skrift, kursiv, overskrifter, " +#~ "lister, lenker, kodeblokker, tabeller og " +#~ "bilder. Dette lar deg lage rik, " +#~ "velformatert dokumentasjon direkte i " +#~ "prosjektene og oppgavene dine. Markdown-" +#~ "editoren inkluderer en forhåndsvisningsmodus " +#~ "og støtter mørkt tema." + +#~ msgid "Where can I get additional help?" +#~ msgstr "Hvor kan jeg få ekstra hjelp?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" + +#~ msgid "Complete Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started Guide" +#~ msgstr "" + +#~ msgid "Product Overview & Features" +#~ msgstr "" + +#~ msgid "Changelog" +#~ msgstr "" + +#~ msgid "Report issues and request features on" +#~ msgstr "Rapporter problemer og be om funksjoner på" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "Som administrator kan du få tilgang " +#~ "til ytterligere systeminformasjon og " +#~ "diagnostikk i" + +#~ msgid "section." +#~ msgstr "del." + +#~ msgid "Admin documentation:" +#~ msgstr "" + +#~ msgid "Administrator Guide" +#~ msgstr "" + +#~ msgid "Still Need Help?" +#~ msgstr "Trenger du fortsatt hjelp?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "Finner du ikke det du leter etter? Her er tilleggsressurser:" + +#~ msgid "Complete Documentation" +#~ msgstr "" + +#~ msgid "Documentation Index" +#~ msgstr "" + +#~ msgid "Getting Started" +#~ msgstr "" + +#~ msgid "Feature Guides" +#~ msgstr "" -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "" +#~ msgid "Admin Documentation" +#~ msgstr "" -#: app/templates/main/dashboard.html:108 -#, fuzzy -msgid "Add 5 min" -msgstr "Admin" - -#: app/templates/main/dashboard.html:109 -#, fuzzy -msgid "Add 15 min" -msgstr "Admin" - -#: app/templates/main/dashboard.html:118 -#, fuzzy -msgid "Resume timer" -msgstr "Smarte timere" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -#, fuzzy -msgid "Resume" -msgstr "Tilbakestill" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" +#~ msgid "GitHub Repository" +#~ msgstr "GitHub Repository" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Pause" +#~ msgid "Report Issue" +#~ msgstr "Rapporter problem" -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "" +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "" +#~ msgid "Open support" +#~ msgstr "Støtte" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Ingen aktiv timer." +#~ msgid "Search Results" +#~ msgstr "Søkeresultater" -#: app/templates/main/dashboard.html:142 -msgid "Resume your last session or use the buttons above to repeat last / start a new timer." -msgstr "" +#~ msgid "Search notes or tags" +#~ msgstr "Søk i notater eller tagger" -#: app/templates/main/dashboard.html:144 -#, fuzzy -msgid "Resume last session" -msgstr "Avslutt økten" +#~ msgid "Results" +#~ msgstr "Resultater" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette denne tidsoppføringen? Denne handlingen" +#~ " kan ikke angres." -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "" +#~ msgid "No results found" +#~ msgstr "Ingen resultater funnet" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -#, fuzzy -msgid "overtime" -msgstr "Tid" +#~ msgid "Try a different query or check your spelling." +#~ msgstr "Prøv et annet søk eller sjekk stavemåten." -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "f.eks. kundemøte, nettstedsbesøk" -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "" +#~ msgid "Additional details..." +#~ msgstr "Ytterligere detaljer..." -#: app/templates/main/dashboard.html:214 -#, fuzzy -msgid "Overtime (YTD)" -msgstr "Overtidsinnstillinger" +#~ msgid "e.g., Office, Home" +#~ msgstr "f.eks. kontor, hjemme" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "f.eks. klientside, flyplass" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "" +#~ msgid "e.g., 12345" +#~ msgstr "f.eks. 12345" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "" +#~ msgid "e.g., 12400" +#~ msgstr "f.eks. 12400" -#: app/templates/main/dashboard.html:233 -#, fuzzy -msgid "Value insights" -msgstr "Høyrejuster" +#~ msgid "e.g., VW Golf" +#~ msgstr "for eksempel VW Golf" -#: app/templates/main/dashboard.html:234 -#, fuzzy -msgid "Your tracked time at a glance" -msgstr "Spor tid. Hold deg organisert." +#~ msgid "e.g., ABC-123" +#~ msgstr "f.eks. ABC-123" -#: app/templates/main/dashboard.html:246 -#, fuzzy -msgid "Total hours tracked" -msgstr "Totalt arbeidede timer" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "Tidssporing" -#: app/templates/main/dashboard.html:254 -#, fuzzy -msgid "Active days" -msgstr "Aktive varsler" +#~ msgid "Back to Mileage" +#~ msgstr "Tilbake til Roller" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "" +#~ msgid "Rate per km" +#~ msgstr "Dato fra" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "" +#~ msgid "Add Point" +#~ msgstr "Legg til merknad" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "" +#~ msgid "Create Expense from Track" +#~ msgstr "Utgiftssporing" -#: app/templates/main/dashboard.html:273 -#, fuzzy -msgid "Estimated value tracked" -msgstr "Estimert verdi" +#~ msgid "Track ID" +#~ msgstr "Sporet" -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "" +#~ msgid "Idle" +#~ msgstr "Tittel" -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "" +#~ msgid "Distance (km)" +#~ msgstr "" -#: app/templates/main/dashboard.html:285 -#, fuzzy -msgid "hrs this week" -msgstr "Tidsposter denne uken" +#~ msgid "Distance (miles)" +#~ msgstr "" -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "" +#~ msgid "Tracking" +#~ msgstr "Tidssporing" -#: app/templates/main/dashboard.html:287 -#, fuzzy -msgid "This week" -msgstr "Uke" +#~ msgid "GPS tracking started" +#~ msgstr "Start sporingstid" -#: app/templates/main/dashboard.html:288 -#, fuzzy -msgid "Last week" -msgstr "I fjor" +#~ msgid "Track point added" +#~ msgstr "Spor betaling" -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "" +#~ msgid "GPS tracking stopped" +#~ msgstr "Start sporingstid" -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "" +#~ msgid "Expense created" +#~ msgstr "Utgift avvist" -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Nylige oppføringer" +#~ msgid "Filter Mileage" +#~ msgstr "Filter kjørelengde" -#: app/templates/main/dashboard.html:329 -#, fuzzy -msgid "View all" -msgstr "Vis alle" +#~ msgid "Exports use current filters" +#~ msgstr "" -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Fortsett - Start en ny tidtaker med samme egenskaper" +#~ msgid "Purpose, location..." +#~ msgstr "Formål, plassering..." -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Rediger oppføring" +#~ msgid "Optional approval notes..." +#~ msgstr "Valgfrie godkjenningsnotater..." -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Duplisert oppføring" +#~ msgid "Rejection reason (required)" +#~ msgstr "Årsak til avvisning (obligatorisk)" -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Slett oppføring" +#~ msgid "More navigation" +#~ msgstr "Mobilnavigasjon" -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "Ingen nylige oppføringer funnet." +#~ msgid "Main" +#~ msgstr "E-post" -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "" +#~ msgid "Type a command or search..." +#~ msgstr "Skriv inn en kommando eller søk..." -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Ukentlig mål" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Dager igjen" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Behov" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "å nå målet" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Ingen ukemål" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Sett et ukentlig tidsmål for å spore fremgangen din" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Lag mål" - -#: app/templates/main/dashboard.html:480 -#, fuzzy -msgid "Time by project (last 7 days)" -msgstr "Toppprosjekter (30 dager)" - -#: app/templates/main/dashboard.html:482 -#, fuzzy -msgid "View report" -msgstr "Brukerrapport" - -#: app/templates/main/dashboard.html:486 -#, fuzzy -msgid "Time distribution by project for the last 7 days" -msgstr "Tidsfordeling kakediagrammer" - -#: app/templates/main/dashboard.html:525 -#, fuzzy -msgid "No time logged in the last 7 days." -msgstr "Ingen aktivitet de siste 30 dagene." - -#: app/templates/main/dashboard.html:526 -#, fuzzy -msgid "Start tracking to see distribution here." -msgstr "Start sporingstid" - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Toppprosjekter (30 dager)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Ingen aktivitet de siste 30 dagene." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "" +#~ msgid "Configure Payment Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Back to Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:639 -#, fuzzy, python-format -msgid "You have created %(count)s entries" -msgstr "Duplisert %(count)d sitat(er)" +#~ msgid "Gateway Name" +#~ msgstr "" -#: app/templates/main/dashboard.html:641 -#, fuzzy, python-format -msgid "Reports generated: %(n)s" -msgstr "Feil ved generering av PDF: %(error)s" +#~ msgid "e.g., Stripe Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:645 -msgid "Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:647 -#, fuzzy -msgid "Share & support" -msgstr "Plattformstøtte" +#~ msgid "Select provider..." +#~ msgstr "" -#: app/templates/main/dashboard.html:651 -msgid "If this saves you time, consider supporting development — everything stays free and open." -msgstr "" +#~ msgid "Stripe Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "" +#~ msgid "Your Stripe secret key" +#~ msgstr "" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "" +#~ msgid "Publishable Key" +#~ msgstr "" -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "" +#~ msgid "Your Stripe publishable key" +#~ msgstr "" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "" +#~ msgid "PayPal Configuration" +#~ msgstr "" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" +#~ msgid "Test Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "" -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "" +#~ msgid "Save Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, fuzzy, python-format -msgid "Description must be at least %(min)s characters" -msgstr "Passordet må være minst 8 tegn langt" - -#: app/templates/main/dashboard.html:715 -#, fuzzy -msgid "Quick start with a template" -msgstr "Hurtigstartguide" - -#: app/templates/main/dashboard.html:726 -#, fuzzy -msgid "All templates" -msgstr "E-postmaler" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "" +#~ msgid "Mode" +#~ msgstr "" -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Oppgave (valgfritt)" +#~ msgid "Production" +#~ msgstr "" -#: app/templates/main/dashboard.html:756 -msgid "Select a project first to load tasks, or choose \"Create new task...\" to add one" -msgstr "" +#~ msgid "Add Gateway" +#~ msgstr "" -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Merknader (valgfritt)" +#~ msgid "No Payment Gateways" +#~ msgstr "" -#: app/templates/main/dashboard.html:767 -#, fuzzy -msgid "Tags (optional)" -msgstr "Oppgave (valgfritt)" +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" -#: app/templates/main/dashboard.html:768 -#, fuzzy -msgid "e.g. meeting, dev, admin" -msgstr "f.eks. møte, utvikling, admin" +#~ msgid "Amount Due" +#~ msgstr "" -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "" +#~ msgid "Continue to Payment" +#~ msgstr "" -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "" -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "" +#~ msgid "Record New Payment" +#~ msgstr "Registrer ny betaling" -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "" +#~ msgid "Total Payments" +#~ msgstr "Totale betalinger" -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" +#~ msgid "Gateway Fees" +#~ msgstr "Gateway-avgifter" -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "" +#~ msgid "Filter Payments" +#~ msgstr "Filtrer betalinger" -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "" +#~ msgid "ID" +#~ msgstr "Betalt" -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "" +#~ msgid "Delete Selected Payments" +#~ msgstr "Slett valgte betalinger" -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Endre status for utvalgte betalinger" -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "" +#~ msgid "Related Invoice" +#~ msgstr "Relatert faktura" -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "for eksempel forretningsreise til Berlin" -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "f.eks. DE, USA, GB" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Støtte utvikling" +#~ msgid "e.g., Berlin" +#~ msgstr "f.eks. Berlin" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" +#~ msgid "Filter Claims" +#~ msgstr "Filtrer krav" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "" +#~ msgid "Delete Selected Claims" +#~ msgstr "Slett valgte krav" -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Endre status for utvalgte krav" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "" +#~ msgid "Additional notes about this rate..." +#~ msgstr "Ytterligere merknader om denne prisen..." -#: app/templates/main/donate.html:63 -msgid "TimeTracker is a free, open-source project built with passion and dedication. Your donations directly support:" -msgstr "" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "Er du sikker på at du vil slette denne dagpengene?" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Slett dagpengetakst" -#: app/templates/main/donate.html:72 -msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" +#~ msgid "Create Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" +#~ msgid "Back to Templates" +#~ msgstr "" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "" +#~ msgid "e.g., Web Development Project" +#~ msgstr "" -#: app/templates/main/donate.html:92 -msgid "Regular security updates, dependency maintenance, and performance optimization" -msgstr "" +#~ msgid "Describe what this template is used for..." +#~ msgstr "" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "" -#: app/templates/main/donate.html:102 -msgid "Translation support, localization, and making TimeTracker accessible worldwide" -msgstr "" +#~ msgid "Comma-separated tags" +#~ msgstr "" -#: app/templates/main/donate.html:117 -msgid "One key per instance; key sent by email after payment (€25 one-time). No subscription." -msgstr "" +#~ msgid "Project Configuration" +#~ msgstr "" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" +#~ msgid "Billable Project" +#~ msgstr "Fakturerbart prosjekt" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "" +#~ msgid "Estimated Hours" +#~ msgstr "Beregnet timer" -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" +#~ msgid "Budget Amount" +#~ msgstr "Budsjettbeløp" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "" +#~ msgid "Template Tasks" +#~ msgstr "" -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "" +#~ msgid "Task Name" +#~ msgstr "Oppgavenavn" -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "" +#~ msgid "Add Task" +#~ msgstr "" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "" -#: app/templates/main/donate.html:191 -msgid "Every contribution, no matter the size, makes a difference. Your support helps ensure TimeTracker remains free and continues to evolve." -msgstr "" +#~ msgid "Create Project from Template" +#~ msgstr "" -#: app/templates/main/donate.html:207 -msgid "You'll be redirected to Buy Me a Coffee where you can choose your contribution amount" -msgstr "" +#~ msgid "Using template:" +#~ msgstr "" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "" +#~ msgid "Back to Template" +#~ msgstr "" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" +#~ msgid "Leave empty to use template name" +#~ msgstr "" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "" +#~ msgid "Override Settings (Optional)" +#~ msgstr "" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "" +#~ msgid "Project Code" +#~ msgstr "Prosjektkode" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "" +#~ msgid "The following tasks will be created:" +#~ msgstr "" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "" +#~ msgid "Create Project" +#~ msgstr "Opprett prosjekt" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "" +#~ msgid "Edit Project Template" +#~ msgstr "" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "" +#~ msgid "Remove Task" +#~ msgstr "" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "" +#~ msgid "Show Public Templates" +#~ msgstr "" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "" +#~ msgid "uses" +#~ msgstr "" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "" +#~ msgid "Public" +#~ msgstr "" -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Komplett dokumentasjon og brukerveiledning" +#~ msgid "No Templates Found" +#~ msgstr "" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Rask navigering" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Filtrer deler..." +#~ msgid "Project Template" +#~ msgstr "" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Rask start" +#~ msgid "Template Info" +#~ msgstr "" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Rapporter og analyser" +#~ msgid "Usage Count" +#~ msgstr "" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Produktivitetsfunksjoner" +#~ msgid "Last Used" +#~ msgstr "" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Administrasjonsfunksjoner" +#~ msgid "Kanban board columns" +#~ msgstr "Kanban-tavlesøyler" -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Mobilbruk" +#~ msgid "Add task to this column" +#~ msgstr "" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -#, fuzzy -msgid "API Documentation" -msgstr "Dokumentasjon" +#~ msgid "Edit swimlane" +#~ msgstr "Rediger svømmebane" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Feilsøking" +#~ msgid "Column" +#~ msgstr "Søyle" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "TimeTracker Hjelpesenter" +#~ msgid "List View" +#~ msgstr "Listevisning" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "Alt du trenger å vite for å få mest mulig ut av TimeTracker" +#~ msgid "Grid View" +#~ msgstr "Rutenettvisning" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Start sporingstid" +#~ msgid "Rate" +#~ msgstr "Dato" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Se prosjekter" +#~ msgid "Edit Project" +#~ msgstr "Rediger prosjekt" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Generer rapporter" +#~ msgid "Add Cost" +#~ msgstr "Legg til merknad" -#: app/templates/main/help.html:69 -#, fuzzy -msgid "API Docs" -msgstr "API-tokens" +#~ msgid "Add Cost to Project" +#~ msgstr "Tilbake til prosjektet" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "for eksempel reise til kundemøte" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Hurtigstartguide" +#~ msgid "Brief description of the cost" +#~ msgstr "Kort beskrivelse av denne kategorien..." -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "For nye brukere" +#~ msgid "Select category" +#~ msgstr "Kategori" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Logg inn med brukernavnet ditt (ikke nødvendig med passord)" +#~ msgid "Materials" +#~ msgstr "Materiale" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Utforsk dashbordet for å se oversikten din" +#~ msgid "Software/Licenses" +#~ msgstr "f.eks. programvarelisens" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Start din første tidtaker på et eksisterende prosjekt" +#~ msgid "Additional details about this cost" +#~ msgstr "Ytterligere detaljer om denne justeringen" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Se dine tidsregistreringer i rapporter" +#~ msgid "Billable to client" +#~ msgstr "Tilbake til klienten" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "For administratorer" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Sett opp klienter i Client Management-delen" +#~ msgid "Add Extra Good" +#~ msgstr "Legg til Extra Good" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Lag prosjekter og tilordne dem til kunder" +#~ msgid "Add a product or service to" +#~ msgstr "Legg til et produkt eller en tjeneste" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Konfigurer systeminnstillinger (tidssone, valuta osv.)" +#~ msgid "Back to Project" +#~ msgstr "Tilbake til prosjektet" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Administrer brukere og tillatelser" +#~ msgid "SKU/Product Code" +#~ msgstr "SKU/produktkode" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Pro tips:" +#~ msgid "What happens when you archive a project?" +#~ msgstr "Hva skjer når du arkiverer et prosjekt?" -#: app/templates/main/help.html:102 -msgid "Use the mobile-friendly interface to track time on the go. The timer continues running even if you close your browser!" -msgstr "Bruk det mobilvennlige grensesnittet for å spore tid mens du er på farten. Timeren fortsetter å kjøre selv om du lukker nettleseren!" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "Prosjektet vil være skjult fra aktive prosjektlister" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "Sanntidssporing med automatisk tomgangsdeteksjon og WebSocket-oppdateringer" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "Ingen nye tidsregistreringer kan legges til dette prosjektet" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Manuell inntasting" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "Eksisterende data og tidsregistreringer er bevart" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "Logg tid manuelt med tilpassede start- og sluttider" +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "Du kan dearkivere prosjektet senere hvis nødvendig" -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Starte en timer" +#~ msgid "Reason for Archiving" +#~ msgstr "Årsak til arkivering" -#: app/templates/main/help.html:123 -msgid "Click the timer icon in the header (round button) to start or stop from any page" -msgstr "" +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "for eksempel prosjekt fullført, klientkontrakt" +#~ " avsluttet, prosjekt kansellert, etc." -#: app/templates/main/help.html:124 -#, fuzzy -msgid "Or navigate to the Timer page or dashboard" -msgstr "Naviger til Timer-siden eller dashbordet" +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "Å legge til en årsak hjelper med" +#~ " prosjektorganisering og fremtidig referanse." -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Velg et prosjekt fra rullegardinmenyen" +#~ msgid "Quick Select" +#~ msgstr "Hurtigvalg" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "Velg eventuelt en oppgave for mer detaljert sporing" +#~ msgid "Project completed successfully" +#~ msgstr "Prosjekt fullført vellykket" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Legg til notater om det du jobber med (valgfritt)" +#~ msgid "Project Completed" +#~ msgstr "Prosjekt fullført" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Legg til tagger atskilt med komma (valgfritt)" +#~ msgid "Client contract ended" +#~ msgstr "Kundekontrakten ble avsluttet" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Klikk \"Start timer\"" +#~ msgid "Contract Ended" +#~ msgstr "Kontrakt avsluttet" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Timer funksjoner" +#~ msgid "Project cancelled by client" +#~ msgstr "Prosjekt kansellert av klient" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Visning av varighet i sanntid" +#~ msgid "Project on hold indefinitely" +#~ msgstr "Prosjekt på vent på ubestemt tid" -#: app/templates/main/help.html:136 -msgid "Pause and Stop on the dashboard — Pause saves your time so you can resume later" -msgstr "" +#~ msgid "On Hold" +#~ msgstr "På vent" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "" +#~ msgid "Maintenance period ended" +#~ msgstr "Vedlikeholdsperioden er over" -#: app/templates/main/help.html:138 -msgid "Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" +#~ msgid "Maintenance Ended" +#~ msgstr "Vedlikehold avsluttet" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Fortsetter å kjøre hvis nettleseren lukkes" +#~ msgid "Archive Project" +#~ msgstr "Arkivprosjekt" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Automatisk tomgangsdeteksjon (konfigurerbar)" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" +#~ "Sett opp et nytt prosjekt for å" +#~ " organisere arbeidet ditt og spore " +#~ "tid effektivt" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Én aktiv timer per bruker (konfigurerbar)" +#~ msgid "Enter a descriptive project name" +#~ msgstr "Skriv inn et beskrivende prosjektnavn" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "WebSocket live-oppdateringer" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "Velg et klart, beskrivende navn som forklarer prosjektets omfang" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Manuell tidsinntasting" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Kortkode, f.eks. ABC" -#: app/templates/main/help.html:148 -msgid "Create time entries manually when you need to record time spent away from the computer or adjust existing entries." -msgstr "Opprett tidsoppføringer manuelt når du trenger å registrere tid brukt borte fra datamaskinen eller justere eksisterende oppføringer." +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Valgfritt: Kort tag vist på Kanban-kort" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Nødvendig informasjon" +#~ msgid "Create new client" +#~ msgstr "Opprett ny klient" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Prosjektvalg" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "Gi detaljert informasjon om prosjektet, mål og leveranser..." -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Startdato og klokkeslett" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "Valgfritt: Legg til kontekst, mål eller spesifikke krav for prosjektet" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Sluttdato og klokkeslett" +#~ msgid "Enable billing for this project" +#~ msgstr "Aktiver fakturering for dette prosjektet" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Valgfri informasjon" +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "La stå tomt for ikke-fakturerbare prosjekter" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Oppgaveoppgave" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "PO-nummer, kontraktsreferanse osv." -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Beskrivelse/notater" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" +#~ "Valgfritt: Legg til et referansenummer " +#~ "eller identifikator for faktureringsformål" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Tagger for kategorisering" +#~ msgid "e.g. 10000.00" +#~ msgstr "f.eks. 10000,00" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Fakturerbar statusoverstyring" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "Valgfritt: Angi et totalt prosjektbudsjett for å overvåke forbruket" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Avanserte tidsregistreringsfunksjoner" +#~ msgid "Alert Threshold (%)" +#~ msgstr "Varselterskel (%)" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Masseinngang" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "Gi beskjed når forbrukt budsjett overskrider denne terskelen" -#: app/templates/main/help.html:174 -msgid "Create multiple time entries for consecutive days with the same project and duration. Perfect for regular work patterns." -msgstr "Opprett flere tidsoppføringer for påfølgende dager med samme prosjekt og varighet. Perfekt for vanlige arbeidsmønstre." +#~ msgid "Gantt color" +#~ msgstr "" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Maler" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/main/help.html:178 -msgid "Save frequently used time entries as templates for quick reuse. Saves project, task, and notes." -msgstr "Lagre ofte brukte tidsoppføringer som maler for rask gjenbruk. Lagrer prosjekt, oppgave og notater." +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" -#: app/templates/main/help.html:182 -msgid "Visualize your time entries on a calendar. Drag-and-drop to reschedule or click dates to add entries." -msgstr "Visualiser tidsregistreringene dine i en kalender. Dra og slipp for å endre tidsplanen eller klikk på datoer for å legge til oppføringer." +#~ msgid "Project Creation Tips" +#~ msgstr "Tips om prosjektoppretting" -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Prosjektinformasjon" +#~ msgid "Clear Naming" +#~ msgstr "Fjern navn" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Beskrivende prosjektnavn" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "Bruk beskrivende navn som tydelig indikerer prosjektets formål" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Tilknyttet kundeorganisasjon" +#~ msgid "Billing Setup" +#~ msgstr "Faktureringsoppsett" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Prosjektdetaljer og omfang" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Sett passende timepriser basert på " +#~ "prosjektkompleksitet og klientbudsjett" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Aktiv, fullført eller arkivert" +#~ msgid "Detailed Description" +#~ msgstr "Detaljert beskrivelse" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Faktureringsinformasjon" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "Inkluder prosjektmål, leveranser og nøkkelkrav" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Om tid skal spores for fakturering" +#~ msgid "Client Selection" +#~ msgstr "Kundevalg" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Sats for fakturerbar tidsberegninger" +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "Velg riktig klient for å sikre riktig prosjektorganisering" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Faktureringsreferanse" +#~ msgid "Creating..." +#~ msgstr "Oppretter ..." -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "PO-nummer eller faktureringskode" +#~ msgid "Could not create client. Please try again." +#~ msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Prosjektdrift" +#~ msgid "Client created" +#~ msgstr "Klient opprettet" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Opprette nye prosjekter med kunderelasjoner" +#~ msgid "Network error while creating client" +#~ msgstr "Nettverksfeil under oppretting av klient" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Rediger eksisterende prosjekter for å oppdatere detaljer" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "Prosjektdashbord og analyse" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Arkiver prosjekter for å skjule fra tidtakere (bevarer data)" +#~ msgid "Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Slett prosjekter (fjerner alle tilknyttede tidsoppføringer)" +#~ msgid "Budget Analysis" +#~ msgstr "Budsjettanalyse" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Beste praksis" +#~ msgid "All Time" +#~ msgstr "Hele tiden" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Bruk beskrivende prosjektnavn" +#~ msgid "Last 7 Days" +#~ msgstr "Siste 7 dager" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Angi nøyaktige timepriser for fakturering" +#~ msgid "Last 30 Days" +#~ msgstr "Siste 30 dager" -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Arkiver i stedet for slett når det er mulig" +#~ msgid "Last 3 Months" +#~ msgstr "Siste 3 måneder" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Bruk faktureringsreferanser for ekstern sporing" +#~ msgid "Last Year" +#~ msgstr "I fjor" -#: app/templates/main/help.html:237 -msgid "The client management system helps organize your work by client organizations, preventing errors and streamlining project creation." -msgstr "Klientadministrasjonssystemet hjelper til med å organisere arbeidet ditt etter kundeorganisasjoner, forhindrer feil og effektiviserer prosjektoppretting." +#~ msgid "estimated" +#~ msgstr "estimert" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Kundeinformasjon" +#~ msgid "Budget Used" +#~ msgstr "Budsjett brukt" -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Organisasjonsnavn" +#~ msgid "of budget" +#~ msgstr "av budsjettet" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Firma- eller klientnavn" +#~ msgid "Tasks Complete" +#~ msgstr "Oppgaver fullført" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Primær kontaktinformasjon" +#~ msgid "completion" +#~ msgstr "ferdigstillelse" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "E-post og telefon" +#~ msgid "Team Members" +#~ msgstr "Teammedlemmer" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Kontaktinformasjon" +#~ msgid "contributing" +#~ msgstr "bidrar" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Bedriftsadresse" +#~ msgid "Budget vs. Actual" +#~ msgstr "Budsjett kontra faktisk" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Fordeler" +#~ msgid "No budget set for this project" +#~ msgstr "Det er ikke satt opp budsjett for dette prosjektet" -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "Rullegardinvalg forhindrer skrivefeil" +#~ msgid "Task Status Distribution" +#~ msgstr "Distribusjon av oppgavestatus" -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Standardpriser fyller prosjekter ut automatisk" +#~ msgid "No tasks created yet" +#~ msgstr "Ingen oppgaver opprettet ennå" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Konsekvent klientnavn" +#~ msgid "Team Member Contributions" +#~ msgstr "Teammedlemsbidrag" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Enklere prosjektorganisering" +#~ msgid "No time entries recorded yet" +#~ msgstr "Ingen tidsregistreringer registrert ennå" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Prosjektantall" +#~ msgid "Time Tracking Timeline" +#~ msgstr "Tidssporing Tidslinje" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Totale og aktive prosjekter" +#~ msgid "Select a time period to view timeline" +#~ msgstr "Velg en tidsperiode for å se tidslinjen" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Totalt arbeidede timer" +#~ msgid "Team Member Details" +#~ msgstr "Teammedlemsdetaljer" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Kostnadsestimat" +#~ msgid "tasks" +#~ msgstr "oppgaver" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Anslåtte faktureringsbeløp" +#~ msgid "No team members have logged time yet" +#~ msgstr "Ingen teammedlemmer har logget tid ennå" -#: app/templates/main/help.html:280 -msgid "Break down projects into manageable tasks with detailed tracking and progress monitoring." -msgstr "Bryt ned prosjekter i håndterbare oppgaver med detaljert sporing og fremdriftsovervåking." +#~ msgid "Attention Required" +#~ msgstr "Oppmerksomhet kreves" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Oppgaveegenskaper" +#~ msgid "task(s) are overdue" +#~ msgstr "oppgave(r) er forfalt" -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Navn og beskrivelse" +#~ msgid "Edit Cost" +#~ msgstr "Enhetskostnad" -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Tydelig oppgaveidentifikasjon" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Prioriterte nivåer" +#~ msgid "Update Cost" +#~ msgstr "Oppdater roller" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Lav, Middels, Høy, Haster" +#~ msgid "Edit Extra Good" +#~ msgstr "Rediger Ekstra Bra" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Forfallsdatoer" +#~ msgid "Manage products and services for this project" +#~ msgstr "Administrer produkter og tjenester for dette prosjektet" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Tidsfristsporing" +#~ msgid "Total Goods" +#~ msgstr "Totale varer" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Tildeling" +#~ msgid "Billable Amount" +#~ msgstr "Fakturerbart beløp" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Oppgaveeierskap" +#~ msgid "Categories" +#~ msgstr "Kategorier" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Statussporing" +#~ msgid "Invoiced" +#~ msgstr "Fakturert" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "Å gjøre - Ikke startet" +#~ msgid "Non-billable" +#~ msgstr "Ikke fakturerbar" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "Pågår - jobber for tiden" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Er du sikker på at du vil slette denne ekstra varen?" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Anmeldelse - Klar for anmeldelse" +#~ msgid "Delete Extra Good" +#~ msgstr "Slett Extra Good" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Ferdig - Fullført" +#~ msgid "No extra goods found for this project" +#~ msgstr "Ingen ekstra varer funnet for dette prosjektet" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Kansellert - ikke nødvendig" +#~ msgid "Add Your First Good" +#~ msgstr "Legg til ditt første gode" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Tidssporingsfunksjoner" +#~ msgid "Breakdown by Category" +#~ msgstr "Fordeling etter kategori" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Start tidtakere direkte fra oppgaver" +#~ msgid "item(s)" +#~ msgstr "vare(r)" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Koble tidsoppføringer til spesifikke oppgaver" +#~ msgid "Filter Projects" +#~ msgstr "Filtrer prosjekter" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Spor anslåtte kontra faktiske timer" +#~ msgid "Time Entries Overview" +#~ msgstr "" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Overvåk oppgavefremdriften automatisk" +#~ msgid "Days" +#~ msgstr "" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Oppgavevisninger" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Mine oppgaver - Dine tildelte oppgaver" +#~ msgid "Mark project as Inactive?" +#~ msgstr "Vil du merke prosjektet som inaktivt?" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Alle oppgaver - Komplett oppgaveliste" +#~ msgid "Change Project Status" +#~ msgstr "Endre prosjektstatus" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Forfalte oppgaver - Forfalte varer" +#~ msgid "Activate project?" +#~ msgstr "Aktivere prosjektet?" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Prosjektoppgaver - Oppgaver innenfor prosjekter" +#~ msgid "Activate Project" +#~ msgstr "Aktiver prosjekt" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Samarbeidsfunksjoner" +#~ msgid "Archive" +#~ msgstr "Arkiv" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Oppgavekommentarer - Trådede diskusjoner om oppgaver" +#~ msgid "Unarchive project?" +#~ msgstr "Vil du fjerne prosjektet fra arkivet?" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Markdown Support - Rik formatering i beskrivelser" +#~ msgid "Unarchive Project" +#~ msgstr "Unarchive Project" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Brukeromtaler – Tag teammedlemmer (hvis aktivert)" +#~ msgid "Unarchive" +#~ msgstr "Avarkiver" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Filvedlegg - Legg ved filer til oppgaver (hvis aktivert)" +#~ msgid "Delete Project" +#~ msgstr "Slett prosjekt" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Markdown-formatering" +#~ msgid "Archive Information" +#~ msgstr "Arkivinformasjon" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "Oppgave- og prosjektbeskrivelser støtter Markdown:" +#~ msgid "Archived on:" +#~ msgstr "Arkivert på:" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Fet**, *kursiv*, ~~gjennomstreking~~" +#~ msgid "Archived by:" +#~ msgstr "Arkivert av:" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# Overskrifter, - Lister, [Links](url)" +#~ msgid "Reason:" +#~ msgstr "Grunn:" -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "```kodeblokker```, tabeller, bilder" +#~ msgid "Quick Links" +#~ msgstr "" -#: app/templates/main/help.html:347 -msgid "Visualize your workflow with a drag-and-drop Kanban board for intuitive task management." -msgstr "Visualiser arbeidsflyten din med et dra-og-slipp Kanban-tavle for intuitiv oppgavebehandling." +#~ msgid "Budget Overview" +#~ msgstr "Budsjettoversikt" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Brettfunksjoner" +#~ msgid "Over" +#~ msgstr "Over" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Tilpassbare kolonner som samsvarer med oppgavestatuser" +#~ msgid "View Full Budget Analysis" +#~ msgstr "Se hele budsjettanalysen" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Dra og slipp oppgaver mellom kolonner" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Filtrer etter prosjekt, bruker eller prioritet" +#~ msgid "Tasks for this project" +#~ msgstr "Oppgaver for dette prosjektet" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Rask søk ​​på tvers av alle oppgaver" +#~ msgid "Due" +#~ msgstr "Forfaller" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Bruke Kanban-tavlen" +#~ msgid "Estimated" +#~ msgstr "Estimert" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Tilgang fra Oppgaver-menyen eller prosjektsiden" +#~ msgid "No tasks for this project." +#~ msgstr "Ingen oppgaver for dette prosjektet." -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Dra oppgaver til forskjellige kolonner for å endre status" +#~ msgid "Move up" +#~ msgstr "flyttet til" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Klikk på et oppgavekort for å se/redigere detaljer" +#~ msgid "Move down" +#~ msgstr "flyttet til" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Bruk filtre for å fokusere på spesifikt arbeid" +#~ msgid "Manual entry" +#~ msgstr "Manuell inntasting" -#: app/templates/main/help.html:370 -msgid "The Kanban board is perfect for sprint planning and daily standups. Each column represents a stage in your workflow!" -msgstr "Kanban-brettet er perfekt for sprintplanlegging og daglige standups. Hver kolonne representerer et stadium i arbeidsflyten din!" +#~ msgid "From stock" +#~ msgstr "Lite lager" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Utgiftssporing" +#~ msgid "Duplicate" +#~ msgstr "Kopiere" -#: app/templates/main/help.html:377 -msgid "Track business expenses, manage receipts, and handle reimbursements efficiently." -msgstr "Spor forretningsutgifter, administrer kvitteringer og håndter refusjoner effektivt." +#~ msgid "Mark as Sent" +#~ msgstr "Merk som sendt" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Utgiftsfunksjoner" +#~ msgid "Accepted" +#~ msgstr "Godtatt" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Kategoriser utgifter (reise, måltider, forsyninger, etc.)" +#~ msgid "Create Your First Quote" +#~ msgstr "Lag ditt første sitat" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Legg ved kvitteringsbilder og dokumenter" +#~ msgid "Learn More" +#~ msgstr "Lær mer" -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Spor beløp, skatter og betalingsmåter" +#~ msgid "Back to Quote" +#~ msgstr "Tilbake til sitat" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Godkjenningsarbeidsflyt for utgiftsforespørsler" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "" +#~ "Å godta dette tilbudet vil opprette " +#~ "et nytt prosjekt med budsjettet fra " +#~ "tilbudet." -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Fakturering og refusjon" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "Prosjektet vil bli opprettet med budsjettet fra tilbudet" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Merk utgifter som fakturerbare til klienter" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Godta tilbud og opprett prosjekt" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Inkluder utgifter i klientfakturaer" +#~ msgid "Create Quote" +#~ msgstr "Opprett tilbud" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Spor refusjonsstatus" +#~ msgid "Quote title" +#~ msgstr "Sitattittel" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Koble utgifter til konkrete prosjekter" +#~ msgid "Quote description" +#~ msgstr "Sitatbeskrivelse" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Rekord utgift" +#~ msgid "Quote line items" +#~ msgstr "Sitat elementer" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Skriv inn detaljer og last opp kvittering" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Send inn for godkjenning" +#~ msgid "Add line" +#~ msgstr "Frist" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "Administrator vurderer og godkjenner" +#~ msgid "Line type" +#~ msgstr "Innholdstype" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Faktura/Refusjon" +#~ msgid "Stock" +#~ msgstr "Lite lager" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Legg til faktura eller refunder" +#~ msgid "Line items subtotal" +#~ msgstr "Elementer Subtotal" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Spor betaling" +#~ msgid "Costs" +#~ msgstr "Koste" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Overvåke refusjonsstatus" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "f.eks. REISER, MÅLTID" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Profesjonell fakturering" +#~ msgid "Add cost" +#~ msgstr "Legg til merknad" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Profesjonell PDF-generering" +#~ msgid "Costs subtotal" +#~ msgstr "Elementer Subtotal" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Bedriftens merkevarebygging og logoer" +#~ msgid "Extra goods" +#~ msgstr "Ekstra varer" -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Automatisk fakturanummerering" +#~ msgid "Products, licenses, hardware" +#~ msgstr "Produkter, materialer, lisenser og andre varer" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Skatteberegninger" +#~ msgid "Add good" +#~ msgstr "Legg til Good" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Tidsintegrasjon" +#~ msgid "Goods subtotal" +#~ msgstr "Varer Subtotal" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Generer fra tidsregistreringer" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Totale sitater" -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Smart gruppering etter oppgave/prosjekt" +#~ msgid "Financial Details" +#~ msgstr "Økonomiske detaljer" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Unngå dobbeltfakturering" +#~ msgid "Select payment terms" +#~ msgstr "Velg betalingsbetingelser" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Bruk prosjekttimepriser" +#~ msgid "Due on Receipt" +#~ msgstr "Forfaller ved mottak" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Sett opp kunde- og prosjektdetaljer" +#~ msgid "Or enter custom payment terms" +#~ msgstr "Eller angi egendefinerte betalingsbetingelser" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Legg til elementer" +#~ msgid "Use custom terms" +#~ msgstr "Bruk egendefinerte termer" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Generer fra tid eller legg til manuelt" +#~ msgid "Discount" +#~ msgstr "Rabatt" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Se gjennom og send" +#~ msgid "Discount Type" +#~ msgstr "Rabatttype" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "Eksporter PDF og oppdater status" +#~ msgid "No Discount" +#~ msgstr "Ingen rabatt" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Overvåke status og betalinger" +#~ msgid "Percentage (%)" +#~ msgstr "Prosentandel (%)" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Standard rapporter" +#~ msgid "Fixed Amount" +#~ msgstr "Fast beløp" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Prosjektrapport - Tidsfordeling etter prosjekt" +#~ msgid "Discount Amount" +#~ msgstr "Rabattbeløp" -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Brukerrapport – individuelle resultatberegninger" +#~ msgid "0.00" +#~ msgstr "0,00" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Sammendragsrapport - Nøkkelberegninger og trender" +#~ msgid "Coupon Code" +#~ msgstr "Kupongkode" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Time Entry Report - Detaljerte tidslogger" +#~ msgid "Optional coupon code" +#~ msgstr "Valgfri kupongkode" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Eksportalternativer" +#~ msgid "Discount Reason" +#~ msgstr "Årsak til rabatt" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "CSV-eksport - For ekstern analyse" +#~ msgid "Reason for discount" +#~ msgstr "Årsak til rabatt" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Konfigurerbare skilletegn" +#~ msgid "Approval Workflow" +#~ msgstr "Godkjenningsarbeidsflyt" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Egendefinerte datoperioder" +#~ msgid "Requires approval before sending" +#~ msgstr "Krever godkjenning før sending" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Filtrert dataeksport" +#~ msgid "Additional Information" +#~ msgstr "Tilleggsinformasjon" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Filteralternativer" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Interne notater (ikke synlig for klienten)" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Datoperiode – Egendefinerte start- og sluttdatoer" +#~ msgid "These notes are only visible to your team" +#~ msgstr "Disse notatene er bare synlige for teamet ditt" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Prosjekt – Filtrer etter spesifikke prosjekter" +#~ msgid "Terms and Conditions" +#~ msgstr "Vilkår og betingelser" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Bruker - Filtrer etter teammedlemmer" +#~ msgid "Terms and conditions" +#~ msgstr "Vilkår og betingelser" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Klient – ​​Filtrer etter kundeorganisasjon" +#~ msgid "These terms will be visible to the client" +#~ msgstr "Disse vilkårene vil være synlige for kunden" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Lagrede filtre - Lagre ofte brukte filtre" +#~ msgid "Edit Quote" +#~ msgstr "Rediger sitat" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Visuell analyse" +#~ msgid "Client cannot be changed" +#~ msgstr "Klienten kan ikke endres" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Interaktive søylediagrammer" +#~ msgid "Update Quote" +#~ msgstr "Oppdater sitat" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Tidsfordeling kakediagrammer" +#~ msgid "Total Quotes" +#~ msgstr "Totale sitater" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Trendanalyse over tid" +#~ msgid "Acceptance Rate" +#~ msgstr "Akseptrate" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Mobiloptimaliserte diagrammer" +#~ msgid "Avg Quote Value" +#~ msgstr "Gjennomsnittlig tilbudsverdi" -#: app/templates/main/help.html:515 -msgid "Use Saved Filters to quickly access your most common report views. Save filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "Bruk lagrede filtre for å få rask tilgang til de vanligste rapportvisningene dine. Lagre filtre for ukentlige anmeldelser, månedlig fakturering eller spesifikk prosjektsporing!" +#~ msgid "Quotes by Status" +#~ msgstr "Sitater etter status" -#: app/templates/main/help.html:522 -msgid "Boost your efficiency with keyboard shortcuts, command palette, and automation features." -msgstr "Øk effektiviteten din med hurtigtaster, kommandopalett og automatiseringsfunksjoner." +#~ msgid "Top Clients by Quotes" +#~ msgstr "Toppkunder etter sitater" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Kommandopalett" +#~ msgid "Filter Quotes" +#~ msgstr "Filtrer sitater" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Få tilgang til alle funksjoner umiddelbart uten å forlate tastaturet" +#~ msgid "Search quotes..." +#~ msgstr "Søk etter sitater..." -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Åpne kommandopaletten" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "Er du sikker på at du vil duplisere" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Trykk på spørsmålstegn-tasten" +#~ msgid "quote(s)?" +#~ msgstr "sitat(er)?" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "Rask søk" +#~ msgid "Are you sure you want to mark" +#~ msgstr "Er du sikker på at du vil markere" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Gå til prosjekter" +#~ msgid "quote(s) as sent?" +#~ msgstr "sitat(er) som sendt?" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Gå til Oppgaver" +#~ msgid "QUOTE" +#~ msgstr "SITERE" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Ny tidsregistrering" +#~ msgid "Quote #" +#~ msgstr "Sitat #" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Tastatursnarveier" +#~ msgid "Quote For" +#~ msgstr "Sitat for" -#: app/templates/main/help.html:550 -msgid "Navigate faster with keyboard-driven commands. Press Shift+? to see all shortcuts." -msgstr "Naviger raskere med tastaturdrevne kommandoer. Trykk Shift+? for å se alle snarveiene." +#~ msgid "Subtotal After Discount:" +#~ msgstr "Delsum etter rabatt:" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Globalt søk" +#~ msgid "Description:" +#~ msgstr "Beskrivelse:" -#: app/templates/main/help.html:554 -msgid "Quickly find projects, tasks, clients, and time entries from anywhere in the app." -msgstr "Finn raskt prosjekter, oppgaver, klienter og tidsregistreringer fra hvor som helst i appen." +#~ msgid "Subtotal After Discount" +#~ msgstr "Delsum etter rabatt" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "E-postvarsler" +#~ msgid "Approval not yet requested" +#~ msgstr "Godkjenning er ennå ikke bedt om" -#: app/templates/main/help.html:558 -msgid "Get notified about task assignments, overdue invoices, and weekly summaries via email." -msgstr "Bli varslet om oppgavetildelinger, forfalte fakturaer og ukentlige sammendrag via e-post." +#~ msgid "Pending approval" +#~ msgstr "Venter på godkjenning" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Administratorfunksjoner" +#~ msgid "Rejected by" +#~ msgstr "Avvist av" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Opprett nye brukere med fleksibel autentisering" +#~ msgid "Request Approval Again" +#~ msgstr "Be om godkjenning på nytt" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Tilordne tilpassede roller med spesifikke tillatelser" +#~ msgid "Send Quote" +#~ msgstr "Send tilbud" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Aktiver/deaktiver brukerkontoer" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "Er du sikker på at du vil avvise dette sitatet?" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Se brukerstatistikk og aktivitet" +#~ msgid "Delete Quote" +#~ msgstr "Slett sitat" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Generer API-tokens for brukere" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Intern kommentar (ikke synlig for klienten)" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Tilgangskontroll" +#~ msgid "Internal" +#~ msgstr "Innvendig" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Granulært rollebasert tillatelsessystem" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "Er du sikker på at du vil slette denne kommentaren?" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Egendefinerte roller med finmasket tilgang" +#~ msgid "Write a reply..." +#~ msgstr "Skriv et svar..." -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Tilgangskontroller for brukerdata" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Ingen kommentarer ennå. Start samtalen " +#~ "ved å legge til den første " +#~ "kommentaren." -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "OIDC/SSO-integrasjon (Azure AD, Authelia, etc.)" +#~ msgid "Sent At" +#~ msgstr "Sendt kl" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "API-tokenadministrasjon for integrasjoner" +#~ msgid "Accepted At" +#~ msgstr "Akseptert kl" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Autentiseringsmetoder" +#~ msgid "Send Quote via Email" +#~ msgstr "Send tilbud via e-post" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Kun brukernavn (enkel intern bruk)" +#~ msgid "Recipient Email" +#~ msgstr "Mottakers e-post" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (bedriftsautentisering)" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "Sitat %(quote_number)s" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Begge metodene samtidig" +#~ msgid "Custom Message (Optional)" +#~ msgstr "Egendefinert melding (valgfritt)" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Automatisk rolletildeling via grupper" +#~ msgid "Add a custom message to the email..." +#~ msgstr "Legg til en egendefinert melding i e-posten..." -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Rolle- og tillatelsesadministrasjon" +#~ msgid "Attach PDF" +#~ msgstr "Legg ved PDF" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Opprett egendefinerte roller utover Admin/Bruker" +#~ msgid "Approve Quote" +#~ msgstr "Godkjenn sitat" -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Angi detaljerte tillatelser per funksjon" +#~ msgid "Notes (Optional)" +#~ msgstr "Merknader (valgfritt)" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Tilordne brukere til flere roller" +#~ msgid "Add approval notes..." +#~ msgstr "Legg til godkjenningsnotater..." -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Se og administrer alle tillatelser" +#~ msgid "Reject Quote Approval" +#~ msgstr "Avvis tilbudsgodkjenning" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Generelle innstillinger" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Vennligst oppgi en begrunnelse for avvisning..." -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Tidssone og lokale innstillinger" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Er du sikker på at du vil " +#~ "slette dette sitatet? Denne handlingen " +#~ "kan ikke angres." -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Valutakonfigurasjon" +#~ msgid "Create Recurring Invoice" +#~ msgstr "Lag gjentakende faktura" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Tidsavrundingsregler" +#~ msgid "Update Recurring Invoice" +#~ msgstr "Oppdater gjentakende faktura" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Innstillinger for selvregistrering" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "Automatiser fakturagenerering for abonnementsbasert fakturering" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Timerinnstillinger" +#~ msgid "Frequency" +#~ msgstr "Hyppighet" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Konfigurasjon av inaktiv tidsavbrudd" +#~ msgid "Next Run" +#~ msgstr "Neste løp" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Enkel aktiv timer-modus" +#~ msgid "Generate Now" +#~ msgstr "Generer nå" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Timervisningspreferanser" +#~ msgid "Template Details" +#~ msgstr "Maldetaljer" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Varslingsinnstillinger" +#~ msgid "Invoice Settings" +#~ msgstr "Fakturainnstillinger" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Databasehåndtering" +#~ msgid "Recently Generated Invoices" +#~ msgstr "Nylig genererte fakturaer" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Lag manuell sikkerhetskopiering av databaser" +#~ msgid "Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Se databasemigreringsstatus" +#~ msgid "Recurring Tasks" +#~ msgstr "" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Overvåk databaseytelse" +#~ msgid "Create Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Rydd opp i gamle data og logger" +#~ msgid "Edit Recurring Task" +#~ msgstr "" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Systemovervåking" +#~ msgid "Set up automated task creation" +#~ msgstr "" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Se systeminformasjon og helse" +#~ msgid "Task Name Template" +#~ msgstr "" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Overvåk applikasjonsytelsen" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "" -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Se gjennom systemlogger og feil" +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "" -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Mobilvennlige funksjoner" +#~ msgid "Schedule" +#~ msgstr "" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Optimalisert for telefoner og nettbrett" +#~ msgid "Monthly" +#~ msgstr "" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Berøringsvennlig grensesnitt" +#~ msgid "Yearly" +#~ msgstr "" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "Adaptive oppsett for alle skjermstørrelser" +#~ msgid "Interval" +#~ msgstr "" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Høy kontrast for utendørs synlighet" +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Mobilnavigasjon" +#~ msgid "Next Run Date" +#~ msgstr "" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Nederste fanelinje for enkel tilgang" +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "" -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Rask tilgang til dashbordet" +#~ msgid "Task Settings" +#~ msgstr "" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Ett-trykks logging" +#~ msgid "Assign To" +#~ msgstr "Tilordne til" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Mobiloptimaliserte rapporter" +#~ msgid "Auto-assign to creator" +#~ msgstr "" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Installasjon" +#~ msgid "Automated task creation templates" +#~ msgstr "" -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Åpne TimeTracker i mobilnettleseren din" +#~ msgid "Not scheduled" +#~ msgstr "" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Se etter alternativet \"Legg til på startskjermen\"." +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "" -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Følg nettleserspesifikke installasjonsveiledninger" +#~ msgid "No recurring tasks" +#~ msgstr "" -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Start fra startskjermen som en innebygd app" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "PWA-fordeler" +#~ msgid "Edit Report" +#~ msgstr "" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Offline-funksjon for grunnleggende funksjoner" +#~ msgid "Custom Report Builder" +#~ msgstr "" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Raskere lastetider" +#~ msgid "Unpaid time entries" +#~ msgstr "" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Innfødt app-lignende opplevelse" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Push-varsler (der det støttes)" +#~ msgid "Data Sources" +#~ msgstr "" -#: app/templates/main/help.html:699 -msgid "TimeTracker provides a REST API for integration with other tools, mobile apps, and custom workflows." -msgstr "" +#~ msgid "Components" +#~ msgstr "" -#: app/templates/main/help.html:701 -#, fuzzy -msgid "Interactive Swagger UI at" -msgstr "Interaktive søylediagrammer" +#~ msgid "Add table to report" +#~ msgstr "Tilgjengelige rapporter" -#: app/templates/main/help.html:702 -#, fuzzy -msgid "OpenAPI 3.0 specification at" -msgstr "Tekniske spesifikasjoner" +#~ msgid "Table" +#~ msgstr "" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "" +#~ msgid "Add chart to report" +#~ msgstr "Standard rapporter" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "" +#~ msgid "Chart" +#~ msgstr "" -#: app/templates/main/help.html:707 -#, fuzzy -msgid "Open API Documentation" -msgstr "Dokumentasjon" +#~ msgid "Add doughnut chart to report" +#~ msgstr "" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Feilsøking og vanlige spørsmål" +#~ msgid "Doughnut Chart" +#~ msgstr "" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "Hva skjer hvis jeg glemmer å stoppe timeren min?" +#~ msgid "Add bar chart to report" +#~ msgstr "" -#: app/templates/main/help.html:717 -msgid "The timer will continue running until you stop it manually. You can see your active timer on the dashboard and timer page. The timer persists even if you close your browser or restart your device. If idle detection is enabled, the timer may pause automatically after the configured timeout period." -msgstr "Tidtakeren vil fortsette å gå til du stopper den manuelt. Du kan se din aktive tidtaker på dashbordet og tidtakersiden. Tidtakeren vedvarer selv om du lukker nettleseren eller starter enheten på nytt. Hvis tomgangsdeteksjon er aktivert, kan tidtakeren pause automatisk etter den konfigurerte tidsavbruddsperioden." +#~ msgid "Bar Chart" +#~ msgstr "" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "Kan jeg redigere tidsoppføringer etter at de er opprettet?" +#~ msgid "Add summary to report" +#~ msgstr "Sammendragsrapport" -#: app/templates/main/help.html:721 -msgid "Yes, you can edit any time entry by clicking the edit button in the time entry list. You can modify the project, start/end times, notes, tags, billable status, and task assignment. Admins can edit all time entries, while regular users can only edit their own entries." -msgstr "Ja, du kan redigere hvilken som helst tidsregistrering ved å klikke på rediger-knappen i tidsregistreringslisten. Du kan endre prosjektet, start-/sluttidspunkter, notater, tagger, fakturerbar status og oppgavetildeling. Administratorer kan redigere alle tidsoppføringer, mens vanlige brukere bare kan redigere sine egne oppføringer." +#~ msgid "Report Canvas" +#~ msgstr "" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "Hvordan sporer jeg tid for flere prosjekter?" +#~ msgid "Report canvas" +#~ msgstr "Klart lerret" -#: app/templates/main/help.html:725 -msgid "By default, you can only have one active timer at a time. To switch projects, stop your current timer and start a new one for the different project. Alternatively, you can create manual time entries for past work or configure the system to allow multiple active timers (admin setting)." -msgstr "Som standard kan du bare ha én aktiv timer om gangen. For å bytte prosjekt, stopp den nåværende tidtakeren og start en ny for det andre prosjektet. Alternativt kan du opprette manuelle tidsregistreringer for tidligere arbeid eller konfigurere systemet til å tillate flere aktive tidtakere (admin-innstilling)." +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "Hvordan eksporterer jeg tidsdataene mine?" +#~ msgid "Advanced Filters" +#~ msgstr "" -#: app/templates/main/help.html:729 -msgid "Go to the Reports page and use the \"Export CSV\" feature. You can apply filters to export specific data, or export all time entries. The CSV file includes all time entry details and can be opened in Excel or other spreadsheet applications. You can also configure the delimiter for different regional standards." -msgstr "Gå til Rapporter-siden og bruk \"Eksporter CSV\"-funksjonen. Du kan bruke filtre for å eksportere spesifikke data, eller eksportere alle tidsoppføringer. CSV-filen inneholder informasjon om alle tider og kan åpnes i Excel eller andre regnearkapplikasjoner. Du kan også konfigurere skilletegnet for forskjellige regionale standarder." +#~ msgid "Unpaid Hours Only" +#~ msgstr "" -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "Hva er forskjellen mellom fakturerbar og ikke-fakturerbar tid?" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "" -#: app/templates/main/help.html:733 -msgid "Billable time is tracked for client billing purposes and can have an hourly rate associated with it. Non-billable time is for internal work that doesn't get charged to clients. You can mark individual time entries as billable or non-billable, and projects can have default billable settings. This distinction is crucial for accurate invoicing and profitability analysis." -msgstr "Fakturerbar tid spores for klientfaktureringsformål og kan ha en timepris knyttet til seg. Ikke-fakturerbar tid er for internt arbeid som ikke belastes klienter. Du kan merke individuelle tidsoppføringer som fakturerbare eller ikke-fakturerbare, og prosjekter kan ha standard fakturerbare innstillinger. Dette skillet er avgjørende for nøyaktig fakturering og lønnsomhetsanalyse." +#~ msgid "Custom Field" +#~ msgstr "" -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "Hvordan lager jeg en faktura fra mine tidsregistreringer?" +#~ msgid "No Filter" +#~ msgstr "" -#: app/templates/main/help.html:737 -msgid "Navigate to Invoices → Create Invoice, set up the client and project details, then use \"Generate from Time Entries\" to automatically create invoice items from your tracked time. You can filter by date range and project, and the system will group time entries intelligently. Review the generated items and export as a professional PDF." -msgstr "Naviger til Fakturaer → Opprett faktura, konfigurer klient- og prosjektdetaljene, og bruk deretter \"Generer fra tidsregistreringer\" for automatisk å opprette fakturaelementer fra din sporede tid. Du kan filtrere etter datoperiode og prosjekt, og systemet vil gruppere tidsregistreringer intelligent. Se gjennom de genererte elementene og eksporter som en profesjonell PDF." +#~ msgid "Field Value" +#~ msgstr "" -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "Kan jeg bruke TimeTracker på mobilenheten min?" +#~ msgid "e.g., MM, PB" +#~ msgstr "" -#: app/templates/main/help.html:741 -msgid "Yes! TimeTracker is fully responsive and works great on mobile devices. You can install it as a Progressive Web App (PWA) for a native-like experience. The mobile interface includes a bottom tab bar for easy navigation and touch-optimized controls for time tracking on the go." -msgstr "Ja! TimeTracker er fullstendig responsiv og fungerer utmerket på mobile enheter. Du kan installere den som en Progressive Web App (PWA) for en innfødt-lignende opplevelse. Mobilgrensesnittet inkluderer en bunnfanelinje for enkel navigering og berøringsoptimaliserte kontroller for tidsregistrering mens du er på farten." +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "Hvordan bruker jeg kommandopaletten og hurtigtastene?" +#~ msgid "Report Preview" +#~ msgstr "" -#: app/templates/main/help.html:745 -msgid "Press the question mark key (?) to open the command palette. From there, you can type to search for any action or navigation target. Use keyboard sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or Cmd+K on Mac) for quick search." -msgstr "Trykk på spørsmålstegn-tasten (?) for å åpne kommandopaletten. Derfra kan du skrive for å søke etter hvilken som helst handling eller navigasjonsmål. Bruk tastatursekvenser som \"g d\" for Dashboard, \"g p\" for Projects, eller \"n e\" for New Entry. Trykk Shift+? for å se alle tilgjengelige snarveier. Trykk Ctrl+K (eller Cmd+K på Mac) for raskt søk." +#~ msgid "Loading preview..." +#~ msgstr "" -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "Hvordan oppretter jeg massetidsoppføringer for flere dager?" +#~ msgid "Save Report" +#~ msgstr "" -#: app/templates/main/help.html:749 -msgid "Navigate to Work → Bulk Time Entry. Select your project, choose a date range, set your daily start and end times, and optionally skip weekends. The system will create identical time entries for each day in the range. This is perfect for logging regular work patterns or filling in past time when you worked consistent hours." -msgstr "Naviger til Arbeid → Massetidsregistrering. Velg prosjektet ditt, velg en datoperiode, angi daglige start- og sluttider, og hopp over helger. Systemet vil opprette identiske tidsregistreringer for hver dag i området. Dette er perfekt for å logge vanlige arbeidsmønstre eller fylle ut tidligere tider når du har jobbet konsekvente timer." +#~ msgid "Report Name" +#~ msgstr "" -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "Hva er tidsregistreringsmaler og hvordan bruker jeg dem?" +#~ msgid "My Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:753 -msgid "Time entry templates let you save frequently used time entry configurations. When creating a manual time entry, check \"Save as Template\" to save the project, task, and notes. Later, when creating new entries, you can select a template to quickly fill in these details. Templates are personal and only visible to you." -msgstr "Tidsregistreringsmaler lar deg lagre ofte brukte tidsregistreringskonfigurasjoner. Når du oppretter en manuell tidsregistrering, merker du av for \"Lagre som mal\" for å lagre prosjektet, oppgaven og notatene. Senere, når du oppretter nye oppføringer, kan du velge en mal for raskt å fylle ut disse detaljene. Maler er personlige og kun synlige for deg." +#~ msgid "Private" +#~ msgstr "" -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "Hvordan sporer jeg utgifter og legger dem til på fakturaer?" +#~ msgid "Team" +#~ msgstr "" -#: app/templates/main/help.html:757 -msgid "Go to Expenses → New Expense to record business expenses. Upload receipt images, categorize the expense, and mark it as billable if needed. When creating invoices, you can include these expenses as line items. Expenses support approval workflows, reimbursement tracking, and can be linked to specific projects." -msgstr "Gå til Utgifter → Nye utgifter for å registrere forretningsutgifter. Last opp kvitteringsbilder, kategoriser utgiften og merk den som fakturerbar om nødvendig. Når du oppretter fakturaer, kan du inkludere disse utgiftene som linjeposter. Utgifter støtter godkjenningsarbeidsflyter, refusjonssporing og kan knyttes til spesifikke prosjekter." +#~ msgid "Iterative Report Generation" +#~ msgstr "" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "Kan jeg bruke Markdown i beskrivelser?" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" -#: app/templates/main/help.html:761 -msgid "Yes! Project and task descriptions support full Markdown formatting. You can use bold, italic, headings, lists, links, code blocks, tables, and images. This allows you to create rich, well-formatted documentation directly in your projects and tasks. The Markdown editor includes a preview mode and supports dark theme." -msgstr "Ja! Prosjekt- og oppgavebeskrivelser støtter full Markdown-formatering. Du kan bruke fet skrift, kursiv, overskrifter, lister, lenker, kodeblokker, tabeller og bilder. Dette lar deg lage rik, velformatert dokumentasjon direkte i prosjektene og oppgavene dine. Markdown-editoren inkluderer en forhåndsvisningsmodus og støtter mørkt tema." +#~ msgid "Custom Field Name" +#~ msgstr "" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "Hvor kan jeg få ekstra hjelp?" +#~ msgid "Select Field" +#~ msgstr "" -#: app/templates/main/help.html:768 -msgid "This help page covers most common questions and features. For complete documentation:" -msgstr "" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "" +#~ msgid "Please select a data source first" +#~ msgstr "" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "" +#~ msgid "Failed to generate preview" +#~ msgstr "" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "" +#~ msgid "Unknown error occurred" +#~ msgstr "" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "" +#~ msgid "Error loading preview" +#~ msgstr "" -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Rapporter problemer og be om funksjoner på" +#~ msgid "No data found for the selected filters" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "As an admin, you can access additional system information and diagnostics in the" -msgstr "Som administrator kan du få tilgang til ytterligere systeminformasjon og diagnostikk i" +#~ msgid "Please enter a report name" +#~ msgstr "" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "del." +#~ msgid "Report created successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "" +#~ msgid "Report updated successfully!" +#~ msgstr "" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "" +#~ msgid "Failed to save report" +#~ msgstr "" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "Trenger du fortsatt hjelp?" +#~ msgid "Error saving report" +#~ msgstr "" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "Finner du ikke det du leter etter? Her er tilleggsressurser:" +#~ msgid "Custom Report" +#~ msgstr "" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "" +#~ msgid "Data Table" +#~ msgstr "" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "" +#~ msgid "No data found" +#~ msgstr "" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "" +#~ msgid "No summary data available." +#~ msgstr "" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "" +#~ msgid "No data available for chart." +#~ msgstr "" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "GitHub Repository" +#~ msgid "No components configured" +#~ msgstr "" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Rapporter problem" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "" +#~ msgid "Export Time Entries" +#~ msgstr "Nylige tidsinnlegg" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -#, fuzzy -msgid "Open support" -msgstr "Støtte" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Søkeresultater" +#~ msgid "Export format" +#~ msgstr "Eksporter format" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Søk i notater eller tagger" +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "f.eks. utvikling, møte, haster" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Resultater" +#~ msgid "Reset Filters" +#~ msgstr "Lagrede filtre" -#: app/templates/main/search.html:75 -msgid "Are you sure you want to delete this time entry? This action cannot be undone." -msgstr "Er du sikker på at du vil slette denne tidsoppføringen? Denne handlingen kan ikke angres." +#~ msgid "CSV / Excel" +#~ msgstr "" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "Ingen resultater funnet" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Prøv et annet søk eller sjekk stavemåten." +#~ msgid "Please select both start and end dates." +#~ msgstr "Datoperiode – Egendefinerte start- og sluttdatoer" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "f.eks. kundemøte, nettstedsbesøk" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "Startdatoen må være før sluttdatoen" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Ytterligere detaljer..." +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "f.eks. kontor, hjemme" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "f.eks. klientside, flyplass" +#~ msgid "Payments Received" +#~ msgstr "Betalingsfelt" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "f.eks. 12345" +#~ msgid "Net Received" +#~ msgstr "Mottatt" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "f.eks. 12400" +#~ msgid "After fees" +#~ msgstr "Gateway-avgifter" -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "for eksempel VW Golf" +#~ msgid "Date Range & Comparison" +#~ msgstr "Datointervall og sammenligning" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "f.eks. ABC-123" +#~ msgid "Quick Date Ranges" +#~ msgstr "Raske datointervaller" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -#, fuzzy -msgid "GPS Mileage Tracking" -msgstr "Tidssporing" +#~ msgid "This Week" +#~ msgstr "Uke" -#: app/templates/mileage/gps.html:8 -#, fuzzy -msgid "Back to Mileage" -msgstr "Tilbake til Roller" +#~ msgid "This Month" +#~ msgstr "Måned" -#: app/templates/mileage/gps.html:13 -msgid "Use your device GPS to record route points, calculate distance, and convert the track into an expense." -msgstr "" +#~ msgid "This Year" +#~ msgstr "I fjor" -#: app/templates/mileage/gps.html:27 -#, fuzzy -msgid "Rate per km" -msgstr "Dato fra" - -#: app/templates/mileage/gps.html:37 -#, fuzzy -msgid "Add Point" -msgstr "Legg til merknad" - -#: app/templates/mileage/gps.html:38 -#, fuzzy -msgid "Create Expense from Track" -msgstr "Utgiftssporing" - -#: app/templates/mileage/gps.html:43 -#, fuzzy -msgid "Track ID" -msgstr "Sporet" - -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Idle" -msgstr "Tittel" - -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "" +#~ msgid "Custom Range" +#~ msgstr "Egendefinerte datoperioder" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "" +#~ msgid "Comparison View" +#~ msgstr "Sammenligningsvisning" -#: app/templates/mileage/gps.html:82 -#, fuzzy -msgid "Tracking" -msgstr "Tidssporing" - -#: app/templates/mileage/gps.html:125 -#, fuzzy -msgid "GPS tracking started" -msgstr "Start sporingstid" - -#: app/templates/mileage/gps.html:136 -#, fuzzy -msgid "Track point added" -msgstr "Spor betaling" - -#: app/templates/mileage/gps.html:151 -#, fuzzy -msgid "GPS tracking stopped" -msgstr "Start sporingstid" - -#: app/templates/mileage/gps.html:165 -#, fuzzy -msgid "Expense created" -msgstr "Utgift avvist" - -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Filter kjørelengde" - -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "" +#~ msgid "Week in Review" +#~ msgstr "Live forhåndsvisning" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Formål, plassering..." +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Valgfrie godkjenningsnotater..." +#~ msgid "This Month vs Last Month" +#~ msgstr "" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Årsak til avvisning (obligatorisk)" +#~ msgid "Compare current month with previous month" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:24 -#, fuzzy -msgid "More navigation" -msgstr "Mobilnavigasjon" +#~ msgid "This Year vs Last Year" +#~ msgstr "" -#: app/templates/partials/_bottom_nav.html:59 -#, fuzzy -msgid "Main" -msgstr "E-post" +#~ msgid "Compare current year with previous year" +#~ msgstr "" -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Skriv inn en kommando eller søk..." +#~ msgid "Comparison Results" +#~ msgstr "Sammenligningsresultater" -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "" +#~ msgid "Export Reports" +#~ msgstr "Eksporter rapporter" -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" +#~ msgid "Export Format" +#~ msgstr "Eksporter format" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "" +#~ msgid "Export Report" +#~ msgstr "Eksporter rapporter" -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Planlagte rapporter" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "" +#~ msgid "CSV Export" +#~ msgstr "CSV-import" -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "" +#~ msgid "Excel Export" +#~ msgstr "Eksport" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "" +#~ msgid "Report Types" +#~ msgstr "Rapporttyper" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "" +#~ msgid "Project Report" +#~ msgstr "Prosjektrapport" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "" +#~ msgid "User Report" +#~ msgstr "Brukerrapport" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "" +#~ msgid "Summary Report" +#~ msgstr "Sammendragsrapport" -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "" +#~ msgid "Task Report" +#~ msgstr "Oppgaverapport" -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "" +#~ msgid "Time Entries Report" +#~ msgstr "Tidsoppføringer" -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "" +#~ msgid "Unpaid Hours Report" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "" +#~ msgid "Report Management" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "" +#~ msgid "Saved Report Views" +#~ msgstr "" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "" +#~ msgid "Manage automated report delivery via email" +#~ msgstr "" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "" +#~ msgid "No recent entries." +#~ msgstr "Nylige oppføringer" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "" +#~ msgid "No scheduled reports yet." +#~ msgstr "Planlagte rapporter" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "" +#~ msgid "Add Scheduled Report" +#~ msgstr "Planlagte rapporter" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" +#~ msgid "Please set a date range" +#~ msgstr "Egendefinerte datoperioder" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:31 -msgid "You will be redirected to a secure payment page to complete your payment." -msgstr "" +#~ msgid "Schedule Report" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "" +#~ msgid "Report View" +#~ msgstr "" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" +#~ msgid "Select a report view..." +#~ msgstr "" -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Registrer ny betaling" +#~ msgid "Recipients" +#~ msgstr "" -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Totale betalinger" +#~ msgid "Comma-separated email addresses" +#~ msgstr "" -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Gateway-avgifter" +#~ msgid "Create Schedule" +#~ msgstr "" -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Filtrer betalinger" +#~ msgid "Failed to load report views" +#~ msgstr "" -#: app/templates/payments/list.html:141 -#, fuzzy -msgid "ID" -msgstr "Betalt" +#~ msgid "Scheduled report created successfully" +#~ msgstr "" -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Slett valgte betalinger" +#~ msgid "Failed to create scheduled report" +#~ msgstr "" -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Endre status for utvalgte betalinger" +#~ msgid "Failed to update schedule" +#~ msgstr "" -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Relatert faktura" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "" -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "for eksempel forretningsreise til Berlin" +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "" -#: app/templates/per_diem/form.html:63 app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "f.eks. DE, USA, GB" +#~ msgid "Failed to delete scheduled report" +#~ msgstr "" -#: app/templates/per_diem/form.html:74 app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "f.eks. Berlin" +#~ msgid "Iterative Report" +#~ msgstr "" -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Filtrer krav" +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Slett valgte krav" +#~ msgid "Summary by Client" +#~ msgstr "" -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Endre status for utvalgte krav" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Ytterligere merknader om denne prisen..." +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "Er du sikker på at du vil slette denne dagpengene?" +#~ msgid "No data for the selected period." +#~ msgstr "Fant ingen salgsdata for den valgte perioden." -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Slett dagpengetakst" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "" +#~ msgid "Features" +#~ msgstr "" -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "" +#~ msgid "Iterative" +#~ msgstr "" -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "" -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "" +#~ msgid "No Saved Report Views" +#~ msgstr "" -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "" +#~ msgid "Create Report" +#~ msgstr "" -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "" -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Fakturerbart prosjekt" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Beregnet timer" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Budsjettbeløp" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "" +#~ msgid "Select a saved report view..." +#~ msgstr "" -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "" -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "Oppgavenavn" +#~ msgid "Email Recipients" +#~ msgstr "" -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "" -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "" +#~ msgid "Select frequency..." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "" +#~ msgid "Custom (Cron)" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Prosjektkode" +#~ msgid "Cron Expression" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "" -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Opprett prosjekt" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "" -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "" +#~ msgid "Split report by custom field value" +#~ msgstr "" -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "" +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "" +#~ msgid "Email distribution" +#~ msgstr "" -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "" +#~ msgid "All reports to recipients below" +#~ msgstr "" -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "" -#: app/templates/project_templates/list.html:125 -msgid "Create your first project template to quickly set up new projects with pre-configured settings and tasks." -msgstr "" +#~ msgid "Per value: email from template" +#~ msgstr "" -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "" -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "" +#~ msgid "Report" +#~ msgstr "" -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "" +#~ msgid "Split by" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Kanban-tavlesøyler" +#~ msgid "Distribution" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "" +#~ msgid "Template" +#~ msgstr "" -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Rediger svømmebane" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Søyle" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Listevisning" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Rutenettvisning" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -#, fuzzy -msgid "Rate" -msgstr "Dato" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Rediger prosjekt" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -#, fuzzy -msgid "Add Cost" -msgstr "Legg til merknad" - -#: app/templates/projects/add_cost.html:20 -#, fuzzy -msgid "Add Cost to Project" -msgstr "Tilbake til prosjektet" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -#, fuzzy -msgid "e.g., Travel expenses to client site" -msgstr "for eksempel reise til kundemøte" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -#, fuzzy -msgid "Brief description of the cost" -msgstr "Kort beskrivelse av denne kategorien..." - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -#, fuzzy -msgid "Select category" -msgstr "Kategori" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -#, fuzzy -msgid "Materials" -msgstr "Materiale" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -#, fuzzy -msgid "Software/Licenses" -msgstr "f.eks. programvarelisens" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -#, fuzzy -msgid "Additional details about this cost" -msgstr "Ytterligere detaljer om denne justeringen" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -#, fuzzy -msgid "Billable to client" -msgstr "Tilbake til klienten" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "" +#~ msgid "Invalid: saved view not found" +#~ msgstr "" -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Legg til Extra Good" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "" -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Legg til et produkt eller en tjeneste" +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "" -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Tilbake til prosjektet" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "SKU/produktkode" +#~ msgid "No Scheduled Reports" +#~ msgstr "" -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "Hva skjer når du arkiverer et prosjekt?" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "Prosjektet vil være skjult fra aktive prosjektlister" +#~ msgid "Report triggered successfully!" +#~ msgstr "" -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "Ingen nye tidsregistreringer kan legges til dette prosjektet" +#~ msgid "Report sent to recipients." +#~ msgstr "" -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "Eksisterende data og tidsregistreringer er bevart" +#~ msgid "Error triggering report:" +#~ msgstr "" -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Du kan dearkivere prosjektet senere hvis nødvendig" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Årsak til arkivering" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Toppprosjekter (30 dager)" -#: app/templates/projects/archive.html:48 -msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "for eksempel prosjekt fullført, klientkontrakt avsluttet, prosjekt kansellert, etc." +#~ msgid "Time distribution by project" +#~ msgstr "Tidsfordeling kakediagrammer" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "Å legge til en årsak hjelper med prosjektorganisering og fremtidig referanse." +#~ msgid "No project data for the last 30 days." +#~ msgstr "Ingen aktivitet de siste 30 dagene." -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Hurtigvalg" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Prosjekt fullført vellykket" +#~ msgid "Daily hours trend" +#~ msgstr "Trend for daglige timer" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Prosjekt fullført" - -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Kundekontrakten ble avsluttet" - -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Kontrakt avsluttet" - -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Prosjekt kansellert av klient" - -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Prosjekt på vent på ubestemt tid" - -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "På vent" - -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Vedlikeholdsperioden er over" - -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Vedlikehold avsluttet" - -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Arkivprosjekt" - -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "Sett opp et nytt prosjekt for å organisere arbeidet ditt og spore tid effektivt" - -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Skriv inn et beskrivende prosjektnavn" - -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Velg et klart, beskrivende navn som forklarer prosjektets omfang" - -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Kortkode, f.eks. ABC" - -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Valgfritt: Kort tag vist på Kanban-kort" - -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Opprett ny klient" +#~ msgid "No trend data." +#~ msgstr "Sitat data" -#: app/templates/projects/create.html:56 -msgid "Provide detailed information about the project, objectives, and deliverables..." -msgstr "Gi detaljert informasjon om prosjektet, mål og leveranser..." +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Toppprosjekter (30 dager)" -#: app/templates/projects/create.html:59 -msgid "Optional: Add context, objectives, or specific requirements for the project" -msgstr "Valgfritt: Legg til kontekst, mål eller spesifikke krav for prosjektet" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "Fant ingen salgsdata for den valgte perioden." -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Aktiver fakturering for dette prosjektet" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "La stå tomt for ikke-fakturerbare prosjekter" +#~ msgid "All Clients" +#~ msgstr "Kunder" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "PO-nummer, kontraktsreferanse osv." +#~ msgid "All Tasks" +#~ msgstr "Vis alle oppgaver" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "Valgfritt: Legg til et referansenummer eller identifikator for faktureringsformål" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "Fant ingen salgsdata for den valgte perioden." -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "f.eks. 10000,00" +#~ msgid "Total Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "Valgfritt: Angi et totalt prosjektbudsjett for å overvåke forbruket" +#~ msgid "Estimated Amount" +#~ msgstr "" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Varselterskel (%)" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Gi beskjed når forbrukt budsjett overskrider denne terskelen" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "" -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "Optional: Color for this project on the Gantt chart. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Export entries (Excel)" +#~ msgstr "" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "These custom fields are defined globally and available for all projects." -msgstr "" +#~ msgid "Select columns:" +#~ msgstr "" -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Tips om prosjektoppretting" +#~ msgid "Duration (formatted)" +#~ msgstr "" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Fjern navn" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "Prøv et annet søk eller sjekk stavemåten." -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Bruk beskrivende navn som tydelig indikerer prosjektets formål" +#~ msgid "About Overtime Tracking" +#~ msgstr "Om overtidssporing" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Faktureringsoppsett" +#~ msgid "This week's time summary and top projects" +#~ msgstr "" -#: app/templates/projects/create.html:149 -msgid "Set appropriate hourly rates based on project complexity and client budget" -msgstr "Sett passende timepriser basert på prosjektkompleksitet og klientbudsjett" +#~ msgid "Back to Reports" +#~ msgstr "Tilbake til Roller" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Detaljert beskrivelse" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "Tidsposter denne uken" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "Inkluder prosjektmål, leveranser og nøkkelkrav" +#~ msgid "Top projects this week" +#~ msgstr "Topp prosjekter" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Kundevalg" +#~ msgid "No time logged this week yet." +#~ msgstr "Ingen tidsregistreringer registrert for denne uken ennå" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "Velg riktig klient for å sikre riktig prosjektorganisering" +#~ msgid "Apply filter" +#~ msgstr "Bruk filter" -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Oppretter ..." +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "Er du sikker på at du vil slette dette filteret?" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "Kunne ikke opprette klient. Vennligst prøv igjen." +#~ msgid "Delete Filter" +#~ msgstr "Slett filter" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Klient opprettet" +#~ msgid "Go to Reports" +#~ msgstr "Lav lagerrapport" -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Nettverksfeil under oppretting av klient" +#~ msgid "No saved filters yet" +#~ msgstr "Lagrede filtre" -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "Prosjektdashbord og analyse" +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "" -#: app/templates/projects/dashboard.html:27 app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "" +#~ msgid "Customize Shortcuts" +#~ msgstr "Tilpass snarveier" -#: app/templates/projects/dashboard.html:33 app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Budsjettanalyse" +#~ msgid "Search shortcuts..." +#~ msgstr "Søk snarveier..." -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Hele tiden" +#~ msgid "Save changes" +#~ msgstr "Lagre endringer" -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "Siste 7 dager" +#~ msgid "Press keys..." +#~ msgstr "" -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "Siste 30 dager" +#~ msgid "Click then press a key combination" +#~ msgstr "" -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "Siste 3 måneder" +#~ msgid "Click to record" +#~ msgstr "Dra for å omorganisere" -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "I fjor" +#~ msgid "Revert" +#~ msgstr "Tilbakestill" -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "estimert" +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "" -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Budsjett brukt" +#~ msgid "Failed to save" +#~ msgstr "Kunne ikke stoppe tidtakeren" -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "av budsjettet" +#~ msgid "Shortcuts saved." +#~ msgstr "" -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Oppgaver fullført" +#~ msgid "Failed to save shortcuts." +#~ msgstr "Kunne ikke oppdatere status" -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "ferdigstillelse" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "Dette vil tilbakestille alle hurtigtaster " +#~ "til standardverdiene. Fortsette?" -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Teammedlemmer" +#~ msgid "Reset to Defaults" +#~ msgstr "Tilbakestill til standard" -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "bidrar" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "Tilbakestille til standard?" -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Budsjett kontra faktisk" +#~ msgid "Failed to reset" +#~ msgstr "Kunne ikke fjerne avataren." -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "Det er ikke satt opp budsjett for dette prosjektet" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Tilbakestill til standard" -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Distribusjon av oppgavestatus" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "Kunne ikke oppdatere status" -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Ingen oppgaver opprettet ennå" +#~ msgid "Failed to load shortcuts." +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Teammedlemsbidrag" +#~ msgid "Welcome" +#~ msgstr "Velkomst" -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Ingen tidsregistreringer registrert ennå" +#~ msgid "Privacy First" +#~ msgstr "Personvern først" -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Tidssporing Tidslinje" +#~ msgid "Self-hosted on your server" +#~ msgstr "Selvvert på serveren din" -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Velg en tidsperiode for å se tidslinjen" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Anonym telemetri (opt-in)" -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Teammedlemsdetaljer" +#~ msgid "No PII collected ever" +#~ msgstr "Ingen PII samlet noen gang" -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "oppgaver" +#~ msgid "Open source & transparent" +#~ msgstr "Åpen kildekode og gjennomsiktig" -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Ingen teammedlemmer har logget tid ennå" +#~ msgid "Step 1 of 6" +#~ msgstr "" -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Oppmerksomhet kreves" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "oppgave(r) er forfalt" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -#, fuzzy -msgid "Edit Cost" -msgstr "Enhetskostnad" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Velkommen til TimeTracker" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "La oss sette deg opp på et øyeblikk" -#: app/templates/projects/edit_cost.html:108 -#, fuzzy -msgid "Update Cost" -msgstr "Oppdater roller" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Rediger Ekstra Bra" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Administrer produkter og tjenester for dette prosjektet" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Totale varer" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Fakturerbart beløp" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Kategorier" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "Fakturert" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "Ikke fakturerbar" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "Er du sikker på at du vil slette denne ekstra varen?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Slett Extra Good" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "Ingen ekstra varer funnet for dette prosjektet" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Legg til ditt første gode" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Fordeling etter kategori" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "vare(r)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Filtrer prosjekter" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Takk for at du valgte TimeTracker!" -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "" +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "Dataene dine forblir på serveren din, og du har full kontroll." -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" +#~ msgid "Region & time" +#~ msgstr "Sluttid" -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "Vil du merke prosjektet som inaktivt?" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "" -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Endre prosjektstatus" +#~ msgid "Timezone" +#~ msgstr "Tidssone" -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "Aktivere prosjektet?" +#~ msgid "Date format" +#~ msgstr "Datoformat" -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Aktiver prosjekt" +#~ msgid "Time format" +#~ msgstr "Tidsformat" -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Arkiv" +#~ msgid "24-hour" +#~ msgstr "timer" -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "Vil du fjerne prosjektet fra arkivet?" +#~ msgid "12-hour" +#~ msgstr "timer" -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Unarchive Project" +#~ msgid "Company details for invoices and branding." +#~ msgstr "" -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Avarkiver" +#~ msgid "Company name" +#~ msgstr "Firmanavn" -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Slett prosjekt" +#~ msgid "Your Company Name" +#~ msgstr "Firmanavnet ditt" -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Arkivinformasjon" +#~ msgid "Your Company Address" +#~ msgstr "Din bedriftsadresse" -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Arkivert på:" +#~ msgid "App behavior and timer settings." +#~ msgstr "Overtidsinnstillinger" -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Arkivert av:" +#~ msgid "Allow self-registration" +#~ msgstr "Innstillinger for selvregistrering" -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Grunn:" +#~ msgid "Users can create accounts from the login page" +#~ msgstr "" -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Tidsavrundingsregler" -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Budsjettoversikt" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Rund tidsoppføringer til konfigurerte intervaller" -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Over" +#~ msgid "Single active timer per user" +#~ msgstr "Enkel aktiv timer-modus" -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Se hele budsjettanalysen" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "" -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Konfigurasjon av inaktiv tidsavbrudd" -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Oppgaver for dette prosjektet" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Forfaller" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Estimert" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "Ingen oppgaver for dette prosjektet." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -#, fuzzy -msgid "Move up" -msgstr "flyttet til" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -#, fuzzy -msgid "Move down" -msgstr "flyttet til" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -#, fuzzy -msgid "Manual entry" -msgstr "Manuell inntasting" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -#, fuzzy -msgid "From stock" -msgstr "Lite lager" - -#: app/templates/quotes/_quotes_list.html:12 app/templates/quotes/list.html:366 -#: app/templates/quotes/view.html:24 app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Kopiere" - -#: app/templates/quotes/_quotes_list.html:13 app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Merk som sendt" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Godtatt" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Lag ditt første sitat" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Lær mer" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Tilbake til sitat" - -#: app/templates/quotes/accept.html:42 -msgid "Accepting this quote will create a new project with the budget from the quote." -msgstr "Å godta dette tilbudet vil opprette et nytt prosjekt med budsjettet fra tilbudet." - -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "Prosjektet vil bli opprettet med budsjettet fra tilbudet" - -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Godta tilbud og opprett prosjekt" - -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Opprett tilbud" - -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Sitattittel" - -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Sitatbeskrivelse" - -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -#, fuzzy -msgid "Quote line items" -msgstr "Sitat elementer" - -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -#, fuzzy -msgid "Add line" -msgstr "Frist" - -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -#, fuzzy -msgid "Line type" -msgstr "Innholdstype" - -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -#, fuzzy -msgid "Stock" -msgstr "Lite lager" - -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -#, fuzzy -msgid "Line items subtotal" -msgstr "Elementer Subtotal" - -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -#, fuzzy -msgid "Costs" -msgstr "Koste" - -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -#, fuzzy -msgid "One-off costs (e.g. travel, materials)" -msgstr "f.eks. REISER, MÅLTID" - -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -#, fuzzy -msgid "Add cost" -msgstr "Legg til merknad" - -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -#, fuzzy -msgid "Costs subtotal" -msgstr "Elementer Subtotal" - -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -#, fuzzy -msgid "Extra goods" -msgstr "Ekstra varer" - -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -#, fuzzy -msgid "Products, licenses, hardware" -msgstr "Produkter, materialer, lisenser og andre varer" - -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -#, fuzzy -msgid "Add good" -msgstr "Legg til Good" - -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -#, fuzzy -msgid "Goods subtotal" -msgstr "Varer Subtotal" - -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -#, fuzzy -msgid "Subtotal (all quote lines)" -msgstr "Totale sitater" - -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Økonomiske detaljer" - -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Velg betalingsbetingelser" - -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "Forfaller ved mottak" - -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "Eller angi egendefinerte betalingsbetingelser" - -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Bruk egendefinerte termer" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Rabatt" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Rabatttype" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Ingen rabatt" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "Prosentandel (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Fast beløp" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Rabattbeløp" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0,00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Kupongkode" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Valgfri kupongkode" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Årsak til rabatt" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Årsak til rabatt" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Godkjenningsarbeidsflyt" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Krever godkjenning før sending" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "Tilleggsinformasjon" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Interne notater (ikke synlig for klienten)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Disse notatene er bare synlige for teamet ditt" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Vilkår og betingelser" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Vilkår og betingelser" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Disse vilkårene vil være synlige for kunden" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Rediger sitat" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "Klienten kan ikke endres" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Oppdater sitat" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Totale sitater" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Akseptrate" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Gjennomsnittlig tilbudsverdi" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Sitater etter status" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Toppkunder etter sitater" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Filtrer sitater" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Søk etter sitater..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "Er du sikker på at du vil duplisere" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "sitat(er)?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "Er du sikker på at du vil markere" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "sitat(er) som sendt?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "SITERE" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Sitat #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Sitat for" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Delsum etter rabatt:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Beskrivelse:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Delsum etter rabatt" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Godkjenning er ennå ikke bedt om" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "Venter på godkjenning" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Avvist av" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Be om godkjenning på nytt" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Send tilbud" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "Er du sikker på at du vil avvise dette sitatet?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Slett sitat" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Intern kommentar (ikke synlig for klienten)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Innvendig" - -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "Er du sikker på at du vil slette denne kommentaren?" - -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Skriv et svar..." - -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "Ingen kommentarer ennå. Start samtalen ved å legge til den første kommentaren." - -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Sendt kl" - -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Akseptert kl" - -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Send tilbud via e-post" - -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "Mottakers e-post" - -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "Sitat %(quote_number)s" - -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Egendefinert melding (valgfritt)" - -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Legg til en egendefinert melding i e-posten..." - -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "Legg ved PDF" - -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Godkjenn sitat" - -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Merknader (valgfritt)" - -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Legg til godkjenningsnotater..." - -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Avvis tilbudsgodkjenning" - -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Vennligst oppgi en begrunnelse for avvisning..." - -#: app/templates/quotes/view.html:579 -msgid "Are you sure you want to delete this quote? This action cannot be undone." -msgstr "Er du sikker på at du vil slette dette sitatet? Denne handlingen kan ikke angres." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Lag gjentakende faktura" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "Oppdater gjentakende faktura" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Automatiser fakturagenerering for abonnementsbasert fakturering" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Hyppighet" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Neste løp" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Generer nå" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Maldetaljer" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Fakturainnstillinger" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Nylig genererte fakturaer" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "" +#~ msgid "Google Calendar OAuth" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "" +#~ msgid "Client ID (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "" +#~ msgid "Client Secret (optional)" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "" +#~ msgid "Get these from" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "" +#~ msgid "Google Cloud Console" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "" +#~ msgid "Go to" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "" +#~ msgid "Create a new project or select an existing one" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "" +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "" +#~ msgid "Add authorized redirect URI:" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "" +#~ msgid "Privacy & finish" +#~ msgstr "Personvern først" -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Tilordne til" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Aktiver anonym telemetri" -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "" +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "Hjelp oss å forstå bruksmønstre for å forbedre TimeTracker" -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "" +#~ msgid "What data is collected?" +#~ msgstr "Hvilke data samles inn?" -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "" +#~ msgid "What we collect:" +#~ msgstr "Hva vi samler inn:" -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "" +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Anonymt installasjonsfingeravtrykk (hashed)" -#: app/templates/recurring_tasks/list.html:102 -msgid "Create recurring task templates to automatically generate tasks on a schedule." -msgstr "" +#~ msgid "Application version & platform info" +#~ msgstr "Appversjon og plattforminformasjon" -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "" +#~ msgid "Feature usage statistics" +#~ msgstr "Funksjonsbruksstatistikk" -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "" +#~ msgid "What we DON'T collect:" +#~ msgstr "Hva vi IKKE samler inn:" -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "" +#~ msgid "No usernames or emails" +#~ msgstr "Ingen brukernavn eller e-post" -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "" +#~ msgid "No time entry data or notes" +#~ msgstr "Ingen tidsregistreringsdata eller notater" -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "" +#~ msgid "No client or business data" +#~ msgstr "Ingen klient- eller forretningsdata" -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "" +#~ msgid "You can change this anytime in" +#~ msgstr "Du kan endre dette når som helst i" -#: app/templates/reports/builder.html:40 -#, fuzzy -msgid "Add table to report" -msgstr "Tilgjengelige rapporter" +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "Ved å fortsette godtar du å bruke TimeTracker under" -#: app/templates/reports/builder.html:41 app/templates/reports/builder.html:407 -msgid "Table" -msgstr "" +#~ msgid "GPL-3.0 License" +#~ msgstr "GPL-3.0-lisens" -#: app/templates/reports/builder.html:43 -#, fuzzy -msgid "Add chart to report" -msgstr "Standard rapporter" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Fullfør oppsettet og fortsett" -#: app/templates/reports/builder.html:44 app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "" +#~ msgid "Edit Task" +#~ msgstr "Rediger oppgave" -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "" +#~ msgid "Failed to update status" +#~ msgstr "Kunne ikke oppdatere status" -#: app/templates/reports/builder.html:47 app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "" +#~ msgid "Failed to update task status" +#~ msgstr "Kunne ikke oppdatere oppgavestatus" -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "" +#~ msgid "Kanban column created" +#~ msgstr "Kanban-kolonnen er opprettet" -#: app/templates/reports/builder.html:50 app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "" +#~ msgid "Kanban column deleted" +#~ msgstr "Kanban-kolonnen er slettet" -#: app/templates/reports/builder.html:52 -#, fuzzy -msgid "Add summary to report" -msgstr "Sammendragsrapport" +#~ msgid "Kanban columns reordered" +#~ msgstr "Kanban-kolonner omorganisert" -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "" +#~ msgid "Kanban column visibility changed" +#~ msgstr "Kanban-kolonnens synlighet er endret" -#: app/templates/reports/builder.html:74 -#, fuzzy -msgid "Report canvas" -msgstr "Klart lerret" +#~ msgid "Kanban columns updated" +#~ msgstr "Kanban-kolonner oppdatert" -#: app/templates/reports/builder.html:76 app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" +#~ msgid "Update" +#~ msgstr "Oppdater" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "Kunne ikke oppdatere kanban-kolonner" -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "" +#~ msgid "Loading task details..." +#~ msgstr "Laster oppgavedetaljer ..." -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "" +#~ msgid "Tracked" +#~ msgstr "Sporet" -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "" +#~ msgid "View Full Details" +#~ msgstr "Se alle detaljer" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "" +#~ msgid "Back to Tasks" +#~ msgstr "Tilbake til Oppgaver" -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" +#~ "Legg til en ny oppgave i " +#~ "prosjektet ditt for å dele opp " +#~ "arbeidet i håndterbare komponenter" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "" +#~ msgid "Enter a descriptive task name" +#~ msgstr "Skriv inn et beskrivende oppgavenavn" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "Velg et klart, beskrivende navn som forklarer hva som må gjøres" -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Gi detaljert informasjon om oppgaven, " +#~ "krav og eventuelle spesifikke instruksjoner..." -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" +#~ "Valgfritt: Legg til kontekst, krav eller" +#~ " spesifikke instruksjoner for oppgaven" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Velg prosjektet denne oppgaven tilhører" -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "" +#~ msgid "Initial Status" +#~ msgstr "Opprinnelig status" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "" +#~ msgid "Done" +#~ msgstr "Ferdig" -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Valgfritt: Sett en frist for denne oppgaven" -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "" +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Valgfritt: Anslå hvor lang tid denne oppgaven vil ta" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "" +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Valgfritt: Tilordne denne oppgaven til et teammedlem" -#: app/templates/reports/builder.html:203 -msgid "Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "" -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Tagger for kategorisering" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" +#~ msgid "Task Creation Tips" +#~ msgstr "Tips for å lage oppgaver" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "" +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "Bruk handlingsverb og vær konkret om hva som må gjøres" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "" +#~ msgid "Realistic Estimates" +#~ msgstr "Realistiske estimater" -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "" +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "Vurder kompleksitet og avhengigheter når du estimerer tid" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "" +#~ msgid "Set Deadlines" +#~ msgstr "Sett tidsfrister" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "" +#~ "Forfallsdatoer hjelper deg med å " +#~ "prioritere arbeidet og spore fremdriften" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "" +#~ msgid "Priority Matters" +#~ msgstr "Prioritet er viktig" -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Bruk prioritetsnivåer for å hjelpe " +#~ "teammedlemmer med å fokusere på det " +#~ "som er viktigst" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "" +#~ msgid "Back to Task" +#~ msgstr "Tilbake til oppgave" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "Oppdater oppgavedetaljer og innstillinger for \"%(task)s\"" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "" +#~ msgid "Task Information" +#~ msgstr "Oppgaveinformasjon" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "" +#~ msgid "Update Task" +#~ msgstr "Oppdater oppgave" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "" +#~ msgid "Estimate used" +#~ msgstr "Estimat brukt" -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "" +#~ msgid "Actual" +#~ msgstr "Faktisk" -#: app/templates/reports/custom_view.html:53 -msgid "This report has no data matching the current filters. Try adjusting your date range or filters." -msgstr "" +#~ msgid "Current Task Info" +#~ msgstr "Informasjon om gjeldende oppgave" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "" +#~ msgid "Current Status" +#~ msgstr "Nåværende status" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "" +#~ msgid "Current Priority" +#~ msgstr "Gjeldende prioritet" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "" +#~ msgid "Currently Assigned To" +#~ msgstr "For øyeblikket tildelt til" -#: app/templates/reports/custom_view.html:94 -msgid "This report has no components configured. Please edit the report to add components." -msgstr "" +#~ msgid "Current Due Date" +#~ msgstr "Gjeldende forfallsdato" -#: app/templates/reports/export_form.html:9 -#, fuzzy -msgid "Export Time Entries" -msgstr "Nylige tidsinnlegg" +#~ msgid "Current Estimate" +#~ msgstr "Gjeldende estimat" -#: app/templates/reports/export_form.html:24 -msgid "Use the filters below to customize your export. Choose CSV or Excel format. All filters are optional - leave blank to include all entries within the date range." -msgstr "" +#~ msgid "Actual Hours" +#~ msgstr "Faktiske timer" -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -#, fuzzy -msgid "Export format" -msgstr "Eksporter format" +#~ msgid "Started" +#~ msgstr "Startet" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "f.eks. utvikling, møte, haster" +#~ msgid "Edit Tips" +#~ msgstr "Rediger tips" -#: app/templates/reports/export_form.html:191 -#, fuzzy -msgid "Reset Filters" -msgstr "Lagrede filtre" +#~ msgid "Status Changes" +#~ msgstr "Statusendringer" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "Endring av status kan påvirke tidssporing og fremdriftsberegninger" -#: app/templates/reports/export_form.html:217 -msgid "The file will be downloaded with a filename indicating the date range and applied filters." -msgstr "" +#~ msgid "Due Date Updates" +#~ msgstr "Forfallsdatooppdateringer" -#: app/templates/reports/export_form.html:341 -#, fuzzy -msgid "Please select both start and end dates." -msgstr "Datoperiode – Egendefinerte start- og sluttdatoer" +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "Vurder teamets arbeidsbelastning når du justerer tidsfrister" -#: app/templates/reports/export_form.html:347 -#, fuzzy -msgid "Start date must be before or equal to end date." -msgstr "Startdatoen må være før sluttdatoen" +#~ msgid "Assignment Changes" +#~ msgstr "Oppdragsendringer" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "Varsle teammedlemmer når du tildeler oppgaver på nytt" -#: app/templates/reports/index.html:20 -msgid "Support development or get a supporter license — the app stays free for everyone." -msgstr "" +#~ msgid "Updating..." +#~ msgstr "Oppdaterer..." -#: app/templates/reports/index.html:46 -#, fuzzy -msgid "Payments Received" -msgstr "Betalingsfelt" - -#: app/templates/reports/index.html:62 -#, fuzzy -msgid "Net Received" -msgstr "Mottatt" - -#: app/templates/reports/index.html:63 -#, fuzzy -msgid "After fees" -msgstr "Gateway-avgifter" - -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Datointervall og sammenligning" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Raske datointervaller" - -#: app/templates/reports/index.html:79 -#, fuzzy -msgid "This Week" -msgstr "Uke" - -#: app/templates/reports/index.html:82 -#, fuzzy -msgid "This Month" -msgstr "Måned" - -#: app/templates/reports/index.html:85 -#, fuzzy -msgid "This Year" -msgstr "I fjor" - -#: app/templates/reports/index.html:89 -#, fuzzy -msgid "Custom Range" -msgstr "Egendefinerte datoperioder" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "Sammenligningsvisning" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -#, fuzzy -msgid "Week in Review" -msgstr "Live forhåndsvisning" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "" +#~ msgid "Filter Tasks" +#~ msgstr "Filtrer oppgaver" -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "" +#~ msgid "e.g. bug, frontend" +#~ msgstr "Frontend" -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Slett valgte oppgaver" -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Endre status for valgte oppgaver" -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "" +#~ msgid "Assign Selected Tasks" +#~ msgstr "Tilordne valgte oppgaver" -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Sammenligningsresultater" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Eksporter rapporter" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Eksporter format" - -#: app/templates/reports/index.html:155 -#, fuzzy -msgid "Export Report" -msgstr "Eksporter rapporter" - -#: app/templates/reports/index.html:162 -#, fuzzy -msgid "Manage Scheduled Reports" -msgstr "Planlagte rapporter" - -#: app/templates/reports/index.html:169 -#, fuzzy -msgid "CSV Export" -msgstr "CSV-import" - -#: app/templates/reports/index.html:172 -#, fuzzy -msgid "Excel Export" -msgstr "Eksport" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "Rapporttyper" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "Prosjektrapport" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Brukerrapport" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Sammendragsrapport" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Oppgaverapport" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -#, fuzzy -msgid "Time Entries Report" -msgstr "Tidsoppføringer" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "" +#~ msgid "Assign Tasks" +#~ msgstr "Tilordne oppgaver" -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Flytt valgte oppgaver til prosjekt" -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "" +#~ msgid "Select Project" +#~ msgstr "Velg Prosjekt" -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "" +#~ msgid "Move Tasks" +#~ msgstr "Flytt oppgaver" -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "Er du sikker på at du vil slette oppgaven \"{name}\"?" -#: app/templates/reports/index.html:244 -#, fuzzy -msgid "No recent entries." -msgstr "Nylige oppføringer" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "Kan ikke slette oppgaven \"{name}\" " +#~ "fordi den har tidsoppføringer. Vennligst " +#~ "slett tidsregistreringene først." -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -#, fuzzy -msgid "No scheduled reports yet." -msgstr "Planlagte rapporter" +#~ msgid "Delete Task" +#~ msgstr "Slett oppgave" -#: app/templates/reports/index.html:273 -#, fuzzy -msgid "Add Scheduled Report" -msgstr "Planlagte rapporter" +#~ msgid "My Tasks" +#~ msgstr "Mine oppgaver" -#: app/templates/reports/index.html:366 -#, fuzzy -msgid "Please set a date range" -msgstr "Egendefinerte datoperioder" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Oppgaver tildelt eller opprettet av deg" -#: app/templates/reports/index.html:451 -msgid "You need to create a saved report view first. Please create one from the reports page." -msgstr "" +#~ msgid "total" +#~ msgstr "total" -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "" +#~ msgid "Filter My Tasks" +#~ msgstr "Filtrer mine oppgaver" -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "" +#~ msgid "Task name or description" +#~ msgstr "Oppgavenavn eller beskrivelse" -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "" +#~ msgid "All Priorities" +#~ msgstr "Alle prioriteringer" -#: app/templates/reports/index.html:477 app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "" +#~ msgid "Task Type" +#~ msgstr "Oppgavetype" -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "" +#~ msgid "Assigned to Me" +#~ msgstr "Tildelt til meg" -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "" +#~ msgid "Created by Me" +#~ msgstr "Laget av meg" -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "" +#~ msgid "Show overdue only" +#~ msgstr "Vis kun forfalt" -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "" +#~ msgid "Created by me" +#~ msgstr "Laget av meg" -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "" +#~ msgid "My tasks pagination" +#~ msgstr "Mine oppgaver paginering" -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "" +#~ msgid "..." +#~ msgstr "" -#: app/templates/reports/index.html:581 app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "" +#~ msgid "No tasks found" +#~ msgstr "Ingen oppgaver funnet" -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Du har ingen oppgaver tildelt deg eller opprettet av deg ennå." -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "" +#~ msgid "Create Your First Task" +#~ msgstr "Lag din første oppgave" -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "" +#~ msgid "View All Tasks" +#~ msgstr "Vis alle oppgaver" -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Overdue Tasks" +#~ msgstr "Forfalte oppgaver" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "" +#~ msgid "Requires immediate attention" +#~ msgstr "Krever umiddelbar oppmerksomhet" -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "items" +#~ msgstr "gjenstander" -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "There are" +#~ msgstr "Det finnes" -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -#, fuzzy -msgid "No data for the selected period." -msgstr "Fant ingen salgsdata for den valgte perioden." +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "" +#~ "Se gjennom og oppdater disse oppgavene" +#~ " for å unngå ytterligere forsinkelser." -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" +#~ msgid "Due:" +#~ msgstr "Forfaller:" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "" +#~ msgid "Est:" +#~ msgstr "Est:" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "" +#~ msgid "Actual:" +#~ msgstr "Faktisk:" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "" +#~ msgid "Bulk Actions" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "" +#~ msgid "Update Due Dates" +#~ msgstr "Forfallsdatoer" -#: app/templates/reports/saved_views_list.html:84 -msgid "Create and save report configurations to use them in scheduled reports." -msgstr "" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "" +#~ msgid "Extend Due Dates" +#~ msgstr "Forfallsdatoer" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "" +#~ msgid "Priority Management" +#~ msgstr "Prosjektledelse" -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "" +#~ msgid "Adjust Priorities" +#~ msgstr "Alle prioriteringer" -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "" +#~ msgid "No Overdue Tasks!" +#~ msgstr "Ingen forfalte oppgaver!" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "Flott jobb! Alle oppgavene er foreløpig i rute." -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" -#: app/templates/reports/schedule_form.html:36 -msgid "Enter one or more email addresses separated by commas. These recipients will receive the scheduled report via email." -msgstr "" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Er du sikker på at du vil forlenge forfallsdatoen til" -#: app/templates/reports/schedule_form.html:39 -msgid "When using Mapping or Template, these are used as fallback if no address is found for a value." -msgstr "" +#~ msgid "for all overdue tasks?" +#~ msgstr "for alle forfalte oppgaver?" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "Angi ny prioritet (lav/middels/høy/haster):" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Er du sikker på at du vil prioritere" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "Ugyldig prioritet. Vennligst bruk: lav, middels, høy eller haster" -#: app/templates/reports/schedule_form.html:59 -msgid "For monthly runs: report will use the first and last day of the previous month." -msgstr "" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "" +#~ msgid "Update failed. Please try again." +#~ msgstr "Kunne ikke oppdatere målet. Vennligst prøv igjen." -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "Starte oppgaven og markere som Pågår?" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "" +#~ msgid "Change Task Status" +#~ msgstr "Endre oppgavestatus" -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "" +#~ msgid "Mark task as To Do?" +#~ msgstr "Merke oppgaven som å gjøre?" -#: app/templates/reports/schedule_form.html:80 -msgid "The custom field name to iterate over (e.g., \"salesman\"). A separate report will be generated for each unique value." -msgstr "" +#~ msgid "Mark task as Done?" +#~ msgstr "Vil du merke oppgaven som Ferdig?" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "" +#~ msgid "Complete Task" +#~ msgstr "Fullfør oppgaven" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "" +#~ msgid "Complete" +#~ msgstr "Fullstendig" -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "" +#~ msgid "Reopen task to Review?" +#~ msgstr "Åpne oppgaven for gjennomgang på nytt?" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "" +#~ msgid "Reopen Task" +#~ msgstr "Åpne oppgave på nytt" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "" +#~ msgid "Reopen" +#~ msgstr "Åpne igjen" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use {value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Task details and history." +#~ msgstr "Prosjektdetaljer og omfang" -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "" +#~ msgid "Create Time Entry Template" +#~ msgstr "Lag tidsregistreringsmal" -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "f.eks. daglig standup, klientmøte" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "f.eks. 1,0, 0,5" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Forhåndsutfyll notater for denne typen tidsregistrering" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "f.eks. møte, utvikling, admin" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "" +#~ msgid "Edit Template" +#~ msgstr "Rediger mal" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Er du sikker på at du vil slette denne malen?" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "" +#~ msgid "Delete Template" +#~ msgstr "Slett mal" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" +#~ msgid "Create Your First Template" +#~ msgstr "Lag din første oppgave" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "" +#~ msgid "No templates yet" +#~ msgstr "Maler" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "Lag din første e-postmal for å tilpasse e-postfakturaer." -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "" +#~ msgid "Usage Statistics" +#~ msgstr "Bruksstatistikk" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" +#~ msgid "Select All" +#~ msgstr "" -#: app/templates/reports/summary.html:27 -#, fuzzy -msgid "Time by project (last 30 days)" -msgstr "Toppprosjekter (30 dager)" +#~ msgid "selected" +#~ msgstr "" -#: app/templates/reports/summary.html:30 -#, fuzzy -msgid "Time distribution by project" -msgstr "Tidsfordeling kakediagrammer" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "" -#: app/templates/reports/summary.html:65 app/templates/reports/summary.html:130 -#, fuzzy -msgid "No project data for the last 30 days." -msgstr "Ingen aktivitet de siste 30 dagene." +#~ msgid "Project/Client" +#~ msgstr "" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "" +#~ msgid "Invoice Ref" +#~ msgstr "" -#: app/templates/reports/summary.html:73 -#, fuzzy -msgid "Daily hours trend" -msgstr "Trend for daglige timer" +#~ msgid "Click to edit" +#~ msgstr "Tilbake til Rediger" -#: app/templates/reports/summary.html:108 -#, fuzzy -msgid "No trend data." -msgstr "Sitat data" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "" -#: app/templates/reports/summary.html:114 -#, fuzzy -msgid "Top Projects (Last 30 Days)" -msgstr "Toppprosjekter (30 dager)" +#~ msgid "Request approval" +#~ msgstr "Be om godkjenning" -#: app/templates/reports/task_report.html:102 -#, fuzzy -msgid "No tasks with logged time for the selected period." -msgstr "Fant ingen salgsdata for den valgte perioden." +#~ msgid "Clear filters" +#~ msgstr "Slå på filtre" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" +#~ msgid "No time entries match your filters" +#~ msgstr "Ingen tidsregistreringsdata eller notater" -#: app/templates/reports/time_entries_report.html:49 -#, fuzzy -msgid "All Clients" -msgstr "Kunder" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -#, fuzzy -msgid "All Tasks" -msgstr "Vis alle oppgaver" +#~ msgid "No time entries yet" +#~ msgstr "Ingen tidsregistreringer registrert ennå" -#: app/templates/reports/time_entries_report.html:136 -#, fuzzy -msgid "No time entries found for the selected filters." -msgstr "Fant ingen salgsdata for den valgte perioden." +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "" +#~ msgid "Time entries pagination" +#~ msgstr "Mine oppgaver paginering" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "" +#~ msgid "Bulk Time Entry" +#~ msgstr "Manuell tidsinntasting" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "" +#~ msgid "Single Entry" +#~ msgstr "Tidsregistrering" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "Hvordan oppretter jeg massetidsoppføringer for flere dager?" -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" +#~ msgid "Bulk Entry Form" +#~ msgstr "Masseinngang" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "" +#~ msgid "Select the project to log time for" +#~ msgstr "Det valgte prosjektet ble ikke funnet" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Oppgaver lastes inn etter valg av prosjekt" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "" +#~ msgid "Date Range" +#~ msgstr "Tidsområde" -#: app/templates/reports/user_report.html:158 -#, fuzzy -msgid "Try a different date range or ensure time has been logged." -msgstr "Prøv et annet søk eller sjekk stavemåten." +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "Om overtidssporing" +#~ msgid "Entries will be created for these dates" +#~ msgstr "Tidsregistreringer avrundes til dette intervallet" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "" +#~ msgid "Same start time for all days" +#~ msgstr "Smarte timere" -#: app/templates/reports/week_in_review.html:17 -#, fuzzy -msgid "Back to Reports" -msgstr "Tilbake til Roller" - -#: app/templates/reports/week_in_review.html:38 -#, fuzzy, python-format -msgid "%(count)s time entries logged this week." -msgstr "Tidsposter denne uken" - -#: app/templates/reports/week_in_review.html:43 -#, fuzzy -msgid "Top projects this week" -msgstr "Topp prosjekter" - -#: app/templates/reports/week_in_review.html:54 -#, fuzzy -msgid "No time logged this week yet." -msgstr "Ingen tidsregistreringer registrert for denne uken ennå" - -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Bruk filter" - -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "Er du sikker på at du vil slette dette filteret?" - -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Slett filter" - -#: app/templates/saved_filters/list.html:93 -#, fuzzy -msgid "Go to Reports" -msgstr "Lav lagerrapport" - -#: app/templates/saved_filters/list.html:96 -#, fuzzy -msgid "No saved filters yet" -msgstr "Lagrede filtre" - -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "" +#~ msgid "Same end time for all days" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Tilpass snarveier" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Søk snarveier..." +#~ msgid "tag1, tag2, tag3" +#~ msgstr "tag1, tag2" -#: app/templates/settings/keyboard_shortcuts.html:246 -#, fuzzy -msgid "Save changes" -msgstr "Lagre endringer" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "" +#~ msgid "Include in invoices" +#~ msgstr "Filtrer fakturaer" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "" +#~ msgid "Create Entries" +#~ msgstr "Nylige oppføringer" -#: app/templates/settings/keyboard_shortcuts.html:444 -#, fuzzy -msgid "Click to record" -msgstr "Dra for å omorganisere" +#~ msgid "Bulk Entry Tips" +#~ msgstr "Masseinngang" -#: app/templates/settings/keyboard_shortcuts.html:445 -#, fuzzy -msgid "Revert" -msgstr "Tilbakestill" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "" +#~ msgid "Skip Weekends" +#~ msgstr "Ukentlige trender" -#: app/templates/settings/keyboard_shortcuts.html:473 -#, fuzzy -msgid "Failed to save" -msgstr "Kunne ikke stoppe tidtakeren" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "" +#~ msgid "Same Time Daily" +#~ msgstr "Ledetid (dager)" -#: app/templates/settings/keyboard_shortcuts.html:478 -#, fuzzy -msgid "Failed to save shortcuts." -msgstr "Kunne ikke oppdatere status" - -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "Dette vil tilbakestille alle hurtigtaster til standardverdiene. Fortsette?" - -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Tilbakestill til standard" - -#: app/templates/settings/keyboard_shortcuts.html:484 -#, fuzzy -msgid "Reset all shortcuts to defaults?" -msgstr "Tilbakestille til standard?" - -#: app/templates/settings/keyboard_shortcuts.html:489 -#, fuzzy -msgid "Failed to reset" -msgstr "Kunne ikke fjerne avataren." - -#: app/templates/settings/keyboard_shortcuts.html:493 -#, fuzzy -msgid "Shortcuts reset to defaults." -msgstr "Tilbakestill til standard" - -#: app/templates/settings/keyboard_shortcuts.html:494 -#, fuzzy -msgid "Failed to reset shortcuts." -msgstr "Kunne ikke oppdatere status" - -#: app/templates/settings/keyboard_shortcuts.html:511 -#, fuzzy -msgid "Failed to load shortcuts." -msgstr "Kunne ikke laste inn oppgaver" - -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Velkomst" - -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "Personvern først" - -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Selvvert på serveren din" - -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Anonym telemetri (opt-in)" - -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "Ingen PII samlet noen gang" - -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Åpen kildekode og gjennomsiktig" - -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Velkommen til TimeTracker" +#~ msgid "Conflict Check" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "La oss sette deg opp på et øyeblikk" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "Takk for at du valgte TimeTracker!" +#~ msgid "Failed to load tasks" +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "Dataene dine forblir på serveren din, og du har full kontroll." +#~ msgid "Total days" +#~ msgstr "Totale varer" -#: app/templates/setup/initial_setup.html:97 -#, fuzzy -msgid "Region & time" -msgstr "Sluttid" +#~ msgid "Weekdays only" +#~ msgstr "Uken starter på" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "Tidsregistreringer avrundes til dette intervallet" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Tidssone" - -#: app/templates/setup/initial_setup.html:110 -#, fuzzy -msgid "Date format" -msgstr "Datoformat" - -#: app/templates/setup/initial_setup.html:119 -#, fuzzy -msgid "Time format" -msgstr "Tidsformat" - -#: app/templates/setup/initial_setup.html:121 -#, fuzzy -msgid "24-hour" -msgstr "timer" - -#: app/templates/setup/initial_setup.html:122 -#, fuzzy -msgid "12-hour" -msgstr "timer" - -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "" +#~ msgid "Agenda" +#~ msgstr "Kalender" -#: app/templates/setup/initial_setup.html:139 -#, fuzzy -msgid "Company name" -msgstr "Firmanavn" - -#: app/templates/setup/initial_setup.html:140 -#, fuzzy -msgid "Your Company Name" -msgstr "Firmanavnet ditt" - -#: app/templates/setup/initial_setup.html:144 -#, fuzzy -msgid "Your Company Address" -msgstr "Din bedriftsadresse" - -#: app/templates/setup/initial_setup.html:166 -#, fuzzy -msgid "App behavior and timer settings." -msgstr "Overtidsinnstillinger" - -#: app/templates/setup/initial_setup.html:171 -#, fuzzy -msgid "Allow self-registration" -msgstr "Innstillinger for selvregistrering" - -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "" +#~ msgid "iCal Format" +#~ msgstr "Tidsformat" -#: app/templates/setup/initial_setup.html:176 -#, fuzzy -msgid "Time rounding (minutes)" -msgstr "Tidsavrundingsregler" +#~ msgid "CSV Format" +#~ msgstr "CSV-import" -#: app/templates/setup/initial_setup.html:183 -#, fuzzy -msgid "Round time entries to the nearest N minutes." -msgstr "Rund tidsoppføringer til konfigurerte intervaller" +#~ msgid "Filter by tags..." +#~ msgstr "Filtrer mine oppgaver" -#: app/templates/setup/initial_setup.html:188 -#, fuzzy -msgid "Single active timer per user" -msgstr "Enkel aktiv timer-modus" +#~ msgid "Show billable entries only" +#~ msgstr "Fant ingen tidsregistreringer." -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "" +#~ msgid "Billable Only" +#~ msgstr "Fakturerbart beløp" -#: app/templates/setup/initial_setup.html:193 -#, fuzzy -msgid "Idle timeout (minutes)" -msgstr "Konfigurasjon av inaktiv tidsavbrudd" +#~ msgid "Assign to project for new events..." +#~ msgstr "" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "" +#~ msgid "Total Hours:" +#~ msgstr "Totalt antall timer" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" +#~ msgid "Colors assigned by project" +#~ msgstr "Timer etter prosjekt" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "" +#~ msgid "Create Time Entry" +#~ msgstr "Opprett en ny tidsregistrering" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "" +#~ msgid "Select a project..." +#~ msgstr "Velg et prosjekt..." -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Gjentakende fakturaer" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Lag tidsregistreringsmal" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "" +#~ msgid "New Recurring Block" +#~ msgstr "Oppdater gjentakende faktura" -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "" +#~ msgid "Jump to Today" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "" +#~ msgid "Next Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "" +#~ msgid "Previous Week/Month" +#~ msgstr "" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "" +#~ msgid "Navigate Days" +#~ msgstr "Navigasjon" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "" +#~ msgid "Views" +#~ msgstr "Utsikt" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "" +#~ msgid "Day View" +#~ msgstr "Rutenettvisning" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "" +#~ msgid "Week View" +#~ msgstr "Gjennomgå" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "" +#~ msgid "Month View" +#~ msgstr "Måned" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "" +#~ msgid "Agenda View" +#~ msgstr "Kalendervisning" -#: app/templates/setup/initial_setup.html:237 -#, fuzzy -msgid "Privacy & finish" -msgstr "Personvern først" +#~ msgid "Create New Entry" +#~ msgstr "Opprett ny klient" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" +#~ msgid "Focus Filter" +#~ msgstr "Vis filtre" -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Aktiver anonym telemetri" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Hjelp oss å forstå bruksmønstre for å forbedre TimeTracker" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "Hvilke data samles inn?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "Hva vi samler inn:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "Anonymt installasjonsfingeravtrykk (hashed)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "Appversjon og plattforminformasjon" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Funksjonsbruksstatistikk" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "Hva vi IKKE samler inn:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Ingen brukernavn eller e-post" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Ingen tidsregistreringsdata eller notater" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Ingen klient- eller forretningsdata" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "Du kan endre dette når som helst i" - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "Ved å fortsette godtar du å bruke TimeTracker under" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "GPL-3.0-lisens" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Fullfør oppsettet og fortsett" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Rediger oppgave" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "Kunne ikke oppdatere status" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "Kunne ikke oppdatere oppgavestatus" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Kanban-kolonnen er opprettet" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Kanban-kolonnen er slettet" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Kanban-kolonner omorganisert" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "Kanban-kolonnens synlighet er endret" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Kanban-kolonner oppdatert" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Oppdater" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "Kunne ikke oppdatere kanban-kolonner" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Laster oppgavedetaljer ..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Sporet" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Se alle detaljer" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Tilbake til Oppgaver" - -#: app/templates/tasks/create.html:16 -msgid "Add a new task to your project to break down work into manageable components" -msgstr "Legg til en ny oppgave i prosjektet ditt for å dele opp arbeidet i håndterbare komponenter" - -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Skriv inn et beskrivende oppgavenavn" - -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "Velg et klart, beskrivende navn som forklarer hva som må gjøres" - -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "Provide detailed information about the task, requirements, and any specific instructions..." -msgstr "Gi detaljert informasjon om oppgaven, krav og eventuelle spesifikke instruksjoner..." - -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "Optional: Add context, requirements, or specific instructions for the task" -msgstr "Valgfritt: Legg til kontekst, krav eller spesifikke instruksjoner for oppgaven" - -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Velg prosjektet denne oppgaven tilhører" - -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Opprinnelig status" - -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Ferdig" - -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Valgfritt: Sett en frist for denne oppgaven" - -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Valgfritt: Anslå hvor lang tid denne oppgaven vil ta" - -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Valgfritt: Tilordne denne oppgaven til et teammedlem" - -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "" +#~ msgid "Clear All Filters" +#~ msgstr "Tøm alle cacher" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -#, fuzzy -msgid "Comma-separated tags for categorization" -msgstr "Tagger for kategorisering" +#~ msgid "Close Modal" +#~ msgstr "Lukke" -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "Optional: Color for this task on the Gantt chart. If unset, the project color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" +#~ msgid "Show This Help" +#~ msgstr "" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Tips for å lage oppgaver" +#~ msgid "Got it!" +#~ msgstr "" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Bruk handlingsverb og vær konkret om hva som må gjøres" +#~ msgid "Failed to load events" +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Realistiske estimater" +#~ msgid "Please select a project for new entries" +#~ msgstr "Velg et prosjekt fra rullegardinmenyen" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Vurder kompleksitet og avhengigheter når du estimerer tid" +#~ msgid "Please select a project first" +#~ msgstr "Velg et prosjekt" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Sett tidsfrister" +#~ msgid "Showing billable entries only" +#~ msgstr "" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Forfallsdatoer hjelper deg med å prioritere arbeidet og spore fremdriften" +#~ msgid "Entry created successfully" +#~ msgstr "Arrangementet ble opprettet" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Prioritet er viktig" +#~ msgid "Failed to create entry" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/templates/tasks/create.html:183 -msgid "Use priority levels to help team members focus on what's most important" -msgstr "Bruk prioritetsnivåer for å hjelpe teammedlemmer med å fokusere på det som er viktigst" +#~ msgid "Entry updated" +#~ msgstr "Sist oppdatert" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Tilbake til oppgave" +#~ msgid "Failed to update entry" +#~ msgstr "Kunne ikke oppdatere status" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Oppdater oppgavedetaljer og innstillinger for \"%(task)s\"" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Er du sikker på at du vil slette dette notatet?" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Oppgaveinformasjon" +#~ msgid "Delete Entry" +#~ msgstr "Slett oppføring" -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Oppdater oppgave" +#~ msgid "Automatic Timer" +#~ msgstr "Start timer" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Estimat brukt" +#~ msgid "Entry deleted" +#~ msgstr "Slettet" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Faktisk" +#~ msgid "Failed to delete entry" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Informasjon om gjeldende oppgave" +#~ msgid "Export started" +#~ msgstr "Eksporter data" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "Nåværende status" +#~ msgid "No recurring blocks yet" +#~ msgstr "Gjentakende fakturaer" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Gjeldende prioritet" +#~ msgid "Unknown Project" +#~ msgstr "Ingen prosjekt" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "For øyeblikket tildelt til" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Gjeldende forfallsdato" +#~ msgid "No events in this period" +#~ msgstr "Ingen oppgaver i denne kolonnen." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Gjeldende estimat" +#~ msgid "Failed to load agenda view" +#~ msgstr "Kunne ikke laste inn aktiviteter" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Faktiske timer" +#~ msgid "Failed to load event details" +#~ msgstr "Kunne ikke laste inn oppgaver" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Startet" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Er du sikker på at du vil slette dette notatet?" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Rediger tips" +#~ msgid "Delete Recurring Block" +#~ msgstr "Oppdater gjentakende faktura" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Statusendringer" +#~ msgid "Recurring block deleted" +#~ msgstr "Gjentakende hendelse" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "Endring av status kan påvirke tidssporing og fremdriftsberegninger" - -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Forfallsdatooppdateringer" - -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Vurder teamets arbeidsbelastning når du justerer tidsfrister" - -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Oppdragsendringer" - -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "Varsle teammedlemmer når du tildeler oppgaver på nytt" - -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Oppdaterer..." - -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Filtrer oppgaver" - -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -#, fuzzy -msgid "e.g. bug, frontend" -msgstr "Frontend" - -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Slett valgte oppgaver" - -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Endre status for valgte oppgaver" - -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Tilordne valgte oppgaver" - -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Tilordne oppgaver" - -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Flytt valgte oppgaver til prosjekt" - -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Velg Prosjekt" - -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Flytt oppgaver" - -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "Er du sikker på at du vil slette oppgaven \"{name}\"?" - -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "Cannot delete task \"{name}\" because it has time entries. Please delete the time entries first." -msgstr "Kan ikke slette oppgaven \"{name}\" fordi den har tidsoppføringer. Vennligst slett tidsregistreringene først." +#~ msgid "Failed to delete recurring block" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Slett oppgave" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "Mine oppgaver" +#~ msgid "Entry duplicated successfully" +#~ msgstr "Arrangementet ble oppdatert" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Oppgaver tildelt eller opprettet av deg" +#~ msgid "Failed to duplicate entry" +#~ msgstr "Kunne ikke slette aktiviteten" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "total" +#~ msgid "Jumped to today" +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "Filtrer mine oppgaver" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "Tastatursnarveier" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Oppgavenavn eller beskrivelse" +#~ msgid "Edit Time Entry" +#~ msgstr "Ny tidsregistrering" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Alle prioriteringer" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Oppgavetype" +#~ msgid "Confirm Changes" +#~ msgstr "Bekreftet" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "Tildelt til meg" +#~ msgid "Confirm & Save" +#~ msgstr "Bekreftet" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Laget av meg" +#~ msgid "Admin Mode" +#~ msgstr "Administrasjonsgruppe" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Vis kun forfalt" +#~ msgid "Admin Mode:" +#~ msgstr "Administrasjonsgruppe" -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Laget av meg" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "Mine oppgaver paginering" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Velg prosjektet denne oppgaven tilhører" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "Ingen oppgaver funnet" +#~ msgid "Task (Optional)" +#~ msgstr "Oppgave (valgfritt)" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "Du har ingen oppgaver tildelt deg eller opprettet av deg ennå." +#~ msgid "Select a specific task within the project" +#~ msgstr "Den valgte oppgaven er ugyldig for det valgte prosjektet" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Lag din første oppgave" +#~ msgid "When the work started" +#~ msgstr "Uke startdato" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Vis alle oppgaver" +#~ msgid "Time the work started" +#~ msgstr "" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Forfalte oppgaver" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Krever umiddelbar oppmerksomhet" +#~ msgid "Time the work ended" +#~ msgstr "Kundekontrakten ble avsluttet" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "gjenstander" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "Det finnes" +#~ msgid "Automatic" +#~ msgstr "Autorisasjon" -#: app/templates/tasks/overdue.html:26 -#, fuzzy -msgid "overdue tasks that require immediate attention. Please review and update these tasks to prevent further delays." -msgstr "Se gjennom og oppdater disse oppgavene for å unngå ytterligere forsinkelser." +#~ msgid "How this entry was created" +#~ msgstr "Klient opprettet" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "Forfaller:" +#~ msgid "Duration:" +#~ msgstr "Varighet" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "Est:" +#~ msgid "Describe what you worked on" +#~ msgstr "Hva jobbet du med?" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Faktisk:" +#~ msgid "tag1, tag2" +#~ msgstr "tag1, tag2" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "" +#~ msgid "Separate tags with commas" +#~ msgstr "" -#: app/templates/tasks/overdue.html:89 -#, fuzzy -msgid "Update Due Dates" -msgstr "Forfallsdatoer" +#~ msgid "Internal invoice reference" +#~ msgstr "Ingen fakturaer er valgt" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Kvittering/Fakturanummer" -#: app/templates/tasks/overdue.html:91 -#, fuzzy -msgid "Extend Due Dates" -msgstr "Forfallsdatoer" +#~ msgid "Reason for Change" +#~ msgstr "Årsak til arkivering" -#: app/templates/tasks/overdue.html:94 -#, fuzzy -msgid "Priority Management" -msgstr "Prosjektledelse" +#~ msgid "Optional but recommended" +#~ msgstr "" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "" +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "" -#: app/templates/tasks/overdue.html:96 -#, fuzzy -msgid "Adjust Priorities" -msgstr "Alle prioriteringer" +#~ msgid "Explain why you are making these changes" +#~ msgstr "" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "Ingen forfalte oppgaver!" +#~ msgid "Task:" +#~ msgstr "Oppgave" -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "Flott jobb! Alle oppgavene er foreløpig i rute." +#~ msgid "Start:" +#~ msgstr "Start" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" +#~ msgid "End:" +#~ msgstr "Slutt" -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "Er du sikker på at du vil forlenge forfallsdatoen til" +#~ msgid "Entry Details" +#~ msgstr "" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "for alle forfalte oppgaver?" +#~ msgid "Admin Notice" +#~ msgstr "Legg til merknad" -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "Angi ny prioritet (lav/middels/høy/haster):" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "Er du sikker på at du vil prioritere" +#~ msgid "Duplicate Entry" +#~ msgstr "Duplisert oppføring" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Ugyldig prioritet. Vennligst bruk: lav, middels, høy eller haster" +#~ msgid "Duplicate Time Entry" +#~ msgstr "Duplikat tidsregistrering" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Log Time Manually" +#~ msgstr "Logg tid manuelt" -#: app/templates/tasks/overdue.html:117 -#, fuzzy -msgid "Update failed. Please try again." -msgstr "Kunne ikke oppdatere målet. Vennligst prøv igjen." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "Starte oppgaven og markere som Pågår?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Endre oppgavestatus" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "Merke oppgaven som å gjøre?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "Vil du merke oppgaven som Ferdig?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Fullfør oppgaven" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Fullstendig" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "Åpne oppgaven for gjennomgang på nytt?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Åpne oppgave på nytt" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Åpne igjen" - -#: app/templates/tasks/view.html:47 -#, fuzzy -msgid "Task details and history." -msgstr "Prosjektdetaljer og omfang" - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Lag tidsregistreringsmal" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "f.eks. daglig standup, klientmøte" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "f.eks. 1,0, 0,5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Forhåndsutfyll notater for denne typen tidsregistrering" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "f.eks. møte, utvikling, admin" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Rediger mal" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "Er du sikker på at du vil slette denne malen?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Slett mal" - -#: app/templates/time_entry_templates/list.html:111 -#, fuzzy -msgid "Create Your First Template" -msgstr "Lag din første oppgave" - -#: app/templates/time_entry_templates/list.html:114 -#, fuzzy -msgid "No templates yet" -msgstr "Maler" - -#: app/templates/time_entry_templates/list.html:115 -#, fuzzy -msgid "Create your first time entry template to speed up your workflow." -msgstr "Lag din første e-postmal for å tilpasse e-postfakturaer." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Bruksstatistikk" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Lag en kopi av en tidligere oppføring med nye tider" -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "" +#~ msgid "Create a new time entry" +#~ msgstr "Opprett en ny tidsregistrering" -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "" +#~ msgid "Duplicating entry:" +#~ msgstr "Dupliserer oppføring:" -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "" +#~ msgid "Original:" +#~ msgstr "Opprinnelig:" -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "" +#~ msgid "to" +#~ msgstr "til" -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -#, fuzzy -msgid "Click to edit" -msgstr "Tilbake til Rediger" +#~ msgid "Project & task" +#~ msgstr "Prosjekter" -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "" +#~ msgid "Date & time" +#~ msgstr "Dato og tid" -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -#, fuzzy -msgid "Request approval" -msgstr "Be om godkjenning" - -#: app/templates/timer/_time_entries_list.html:201 -#, fuzzy -msgid "Clear filters" -msgstr "Slå på filtre" - -#: app/templates/timer/_time_entries_list.html:204 -#, fuzzy -msgid "No time entries match your filters" -msgstr "Ingen tidsregistreringsdata eller notater" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "Try adjusting your filters or clear them to see all entries. You can also log a new time entry." -msgstr "" +#~ msgid "Worked Time" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -#, fuzzy -msgid "No time entries yet" -msgstr "Ingen tidsregistreringer registrert ennå" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:211 -msgid "Log time to see your entries here. Use the timer on the dashboard or log time manually." -msgstr "" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" -#: app/templates/timer/_time_entries_list.html:222 -#, fuzzy -msgid "Time entries pagination" -msgstr "Mine oppgaver paginering" - -#: app/templates/timer/bulk_entry.html:3 app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Bulk Time Entry" -msgstr "Manuell tidsinntasting" - -#: app/templates/timer/bulk_entry.html:74 -#, fuzzy -msgid "Single Entry" -msgstr "Tidsregistrering" - -#: app/templates/timer/bulk_entry.html:77 -#, fuzzy -msgid "Create multiple time entries for consecutive days" -msgstr "Hvordan oppretter jeg massetidsoppføringer for flere dager?" - -#: app/templates/timer/bulk_entry.html:86 -#, fuzzy -msgid "Bulk Entry Form" -msgstr "Masseinngang" - -#: app/templates/timer/bulk_entry.html:110 -#, fuzzy -msgid "Select the project to log time for" -msgstr "Det valgte prosjektet ble ikke funnet" - -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Oppgaver lastes inn etter valg av prosjekt" - -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -#, fuzzy -msgid "Date Range" -msgstr "Tidsområde" - -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "" +#~ msgid "Suggest" +#~ msgstr "Gjest" -#: app/templates/timer/bulk_entry.html:155 -#, fuzzy -msgid "Entries will be created for these dates" -msgstr "Tidsregistreringer avrundes til dette intervallet" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:172 -#, fuzzy -msgid "Same start time for all days" -msgstr "Smarte timere" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "" +#~ msgid "Project not found or inactive" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "" +#~ msgid "What did you work on?" +#~ msgstr "Hva jobbet du med?" -#: app/templates/timer/bulk_entry.html:200 -#, fuzzy -msgid "tag1, tag2, tag3" -msgstr "tag1, tag2" +#~ msgid "Time Entries Export" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "" +#~ msgid "Generated at" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:211 -#, fuzzy -msgid "Include in invoices" -msgstr "Filtrer fakturaer" +#~ msgid "View and manage all time entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:223 -#, fuzzy -msgid "Create Entries" -msgstr "Nylige oppføringer" +#~ msgid "Paid Hours" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:239 -#, fuzzy -msgid "Bulk Entry Tips" -msgstr "Masseinngang" +#~ msgid "Apply filters" +#~ msgstr "Bruk filtre" -#: app/templates/timer/bulk_entry.html:247 -msgid "Select start and end dates. Entries will be created for each day in the range." -msgstr "" +#~ msgid "Toggle filters" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:253 -#, fuzzy -msgid "Skip Weekends" -msgstr "Ukentlige trender" +#~ msgid "Paid Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:254 -msgid "Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" +#~ msgid "Billable Status" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:260 -#, fuzzy -msgid "Same Time Daily" -msgstr "Ledetid (dager)" +#~ msgid "Search in notes and tags..." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "" +#~ msgid "Reason for Deletion" +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "Kunne ikke laste inn oppgaver" - -#: app/templates/timer/bulk_entry.html:335 -#, fuzzy -msgid "Total days" -msgstr "Totale varer" - -#: app/templates/timer/bulk_entry.html:336 -#, fuzzy -msgid "Weekdays only" -msgstr "Uken starter på" - -#: app/templates/timer/bulk_entry.html:338 -#, fuzzy -msgid "Entries will be created for" -msgstr "Tidsregistreringer avrundes til dette intervallet" - -#: app/templates/timer/calendar.html:35 -#, fuzzy -msgid "Agenda" -msgstr "Kalender" - -#: app/templates/timer/calendar.html:52 -#, fuzzy -msgid "iCal Format" -msgstr "Tidsformat" - -#: app/templates/timer/calendar.html:53 -#, fuzzy -msgid "CSV Format" -msgstr "CSV-import" - -#: app/templates/timer/calendar.html:72 -#, fuzzy -msgid "Filter by tags..." -msgstr "Filtrer mine oppgaver" - -#: app/templates/timer/calendar.html:75 -#, fuzzy -msgid "Show billable entries only" -msgstr "Fant ingen tidsregistreringer." - -#: app/templates/timer/calendar.html:76 -#, fuzzy -msgid "Billable Only" -msgstr "Fakturerbart beløp" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "" -#: app/templates/timer/calendar.html:92 -#, fuzzy -msgid "Total Hours:" -msgstr "Totalt antall timer" - -#: app/templates/timer/calendar.html:129 app/templates/timer/calendar.html:1239 -#, fuzzy -msgid "Colors assigned by project" -msgstr "Timer etter prosjekt" - -#: app/templates/timer/calendar.html:142 -#, fuzzy -msgid "Create Time Entry" -msgstr "Opprett en ny tidsregistrering" - -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Velg et prosjekt..." - -#: app/templates/timer/calendar.html:249 -#, fuzzy -msgid "Recurring Time Blocks" -msgstr "Gjentakende fakturaer" - -#: app/templates/timer/calendar.html:253 -#, fuzzy -msgid "Manage your recurring time entry templates." -msgstr "Lag tidsregistreringsmal" - -#: app/templates/timer/calendar.html:261 -#, fuzzy -msgid "New Recurring Block" -msgstr "Oppdater gjentakende faktura" - -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "" +#~ msgid "Please select at least one time entry" +#~ msgstr "" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "" +#~ msgid "time entry/entries" +#~ msgstr "" -#: app/templates/timer/calendar.html:292 -#, fuzzy -msgid "Navigate Days" -msgstr "Navigasjon" - -#: app/templates/timer/calendar.html:297 -#, fuzzy -msgid "Views" -msgstr "Utsikt" - -#: app/templates/timer/calendar.html:300 -#, fuzzy -msgid "Day View" -msgstr "Rutenettvisning" - -#: app/templates/timer/calendar.html:304 -#, fuzzy -msgid "Week View" -msgstr "Gjennomgå" - -#: app/templates/timer/calendar.html:308 -#, fuzzy -msgid "Month View" -msgstr "Måned" - -#: app/templates/timer/calendar.html:312 -#, fuzzy -msgid "Agenda View" -msgstr "Kalendervisning" - -#: app/templates/timer/calendar.html:320 -#, fuzzy -msgid "Create New Entry" -msgstr "Opprett ny klient" - -#: app/templates/timer/calendar.html:324 -#, fuzzy -msgid "Focus Filter" -msgstr "Vis filtre" - -#: app/templates/timer/calendar.html:328 -#, fuzzy -msgid "Clear All Filters" -msgstr "Tøm alle cacher" - -#: app/templates/timer/calendar.html:332 -#, fuzzy -msgid "Close Modal" -msgstr "Lukke" - -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "" +#~ msgid "Track your time with a visual timer" +#~ msgstr "Spor tiden din med en visuell tidtaker" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "" +#~ msgid "Estimated Completion" +#~ msgstr "Estimert fullføring" -#: app/templates/timer/calendar.html:422 -#, fuzzy -msgid "Failed to load events" -msgstr "Kunne ikke laste inn oppgaver" +#~ msgid "Calculating..." +#~ msgstr "Beregner..." -#: app/templates/timer/calendar.html:436 -#, fuzzy -msgid "Please select a project for new entries" -msgstr "Velg et prosjekt fra rullegardinmenyen" +#~ msgid "Based on average session duration" +#~ msgstr "Basert på gjennomsnittlig øktvarighet" -#: app/templates/timer/calendar.html:529 -#, fuzzy -msgid "Please select a project first" -msgstr "Velg et prosjekt" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Ingen aktiv timer. Start en nedenfor!" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "" +#~ msgid "Start New Timer" +#~ msgstr "Start ny timer" -#: app/templates/timer/calendar.html:734 -#, fuzzy -msgid "Entry created successfully" -msgstr "Arrangementet ble opprettet" - -#: app/templates/timer/calendar.html:744 -#, fuzzy -msgid "Failed to create entry" -msgstr "Kunne ikke slette aktiviteten" - -#: app/templates/timer/calendar.html:767 -#, fuzzy -msgid "Entry updated" -msgstr "Sist oppdatert" - -#: app/templates/timer/calendar.html:771 -#, fuzzy -msgid "Failed to update entry" -msgstr "Kunne ikke oppdatere status" - -#: app/templates/timer/calendar.html:828 -#, fuzzy -msgid "Are you sure you want to delete this entry?" -msgstr "Er du sikker på at du vil slette dette notatet?" - -#: app/templates/timer/calendar.html:829 -#, fuzzy -msgid "Delete Entry" -msgstr "Slett oppføring" - -#: app/templates/timer/calendar.html:890 -#, fuzzy -msgid "Automatic Timer" -msgstr "Start timer" - -#: app/templates/timer/calendar.html:931 -#, fuzzy -msgid "Entry deleted" -msgstr "Slettet" - -#: app/templates/timer/calendar.html:937 -#, fuzzy -msgid "Failed to delete entry" -msgstr "Kunne ikke slette aktiviteten" - -#: app/templates/timer/calendar.html:955 -#, fuzzy -msgid "Export started" -msgstr "Eksporter data" - -#: app/templates/timer/calendar.html:966 -#, fuzzy -msgid "No recurring blocks yet" -msgstr "Gjentakende fakturaer" - -#: app/templates/timer/calendar.html:979 -#, fuzzy -msgid "Unknown Project" -msgstr "Ingen prosjekt" - -#: app/templates/timer/calendar.html:997 -#, fuzzy -msgid "Failed to load recurring blocks" -msgstr "Kunne ikke laste inn oppgaver" - -#: app/templates/timer/calendar.html:1039 -#, fuzzy -msgid "No events in this period" -msgstr "Ingen oppgaver i denne kolonnen." - -#: app/templates/timer/calendar.html:1072 -#, fuzzy -msgid "Failed to load agenda view" -msgstr "Kunne ikke laste inn aktiviteter" - -#: app/templates/timer/calendar.html:1104 -#, fuzzy -msgid "Failed to load event details" -msgstr "Kunne ikke laste inn oppgaver" - -#: app/templates/timer/calendar.html:1115 -#, fuzzy -msgid "Are you sure you want to delete this recurring block?" -msgstr "Er du sikker på at du vil slette dette notatet?" - -#: app/templates/timer/calendar.html:1117 -#, fuzzy -msgid "Delete Recurring Block" -msgstr "Oppdater gjentakende faktura" - -#: app/templates/timer/calendar.html:1133 -#, fuzzy -msgid "Recurring block deleted" -msgstr "Gjentakende hendelse" - -#: app/templates/timer/calendar.html:1136 -#, fuzzy -msgid "Failed to delete recurring block" -msgstr "Kunne ikke slette aktiviteten" - -#: app/templates/timer/calendar.html:1147 -#, fuzzy -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Skriv inn ny forfallsdato (ÅÅÅÅ-MM-DD):" - -#: app/templates/timer/calendar.html:1180 -#, fuzzy -msgid "Entry duplicated successfully" -msgstr "Arrangementet ble oppdatert" - -#: app/templates/timer/calendar.html:1186 -#, fuzzy -msgid "Failed to duplicate entry" -msgstr "Kunne ikke slette aktiviteten" - -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Legg til notater om hva du jobber med..." -#: app/templates/timer/calendar.html:1413 -#, fuzzy -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "Tastatursnarveier" +#~ msgid "Or use a template" +#~ msgstr "Eller bruk en mal" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -#, fuzzy -msgid "Edit Time Entry" -msgstr "Ny tidsregistrering" +#~ msgid "Recent Projects" +#~ msgstr "Nylige prosjekter" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "" +#~ msgid "Today's Stats" +#~ msgstr "Dagens statistikk" -#: app/templates/timer/edit_timer.html:106 -#, fuzzy -msgid "Confirm Changes" -msgstr "Bekreftet" +#~ msgid "View Entry" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:107 -#, fuzzy -msgid "Confirm & Save" -msgstr "Bekreftet" +#~ msgid "View time entry details" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:188 -#, fuzzy -msgid "Admin Mode" -msgstr "Administrasjonsgruppe" +#~ msgid "Project & Client" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:204 -#, fuzzy -msgid "Admin Mode:" -msgstr "Administrasjonsgruppe" +#~ msgid "Approval" +#~ msgstr "Vedta" -#: app/templates/timer/edit_timer.html:204 -msgid "You can edit all fields of this time entry, including project, task, start/end times, and source." -msgstr "" +#~ msgid "Status & Billing" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:215 -msgid "You can edit this entry's project, task, start and end times, and break." -msgstr "" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:238 -#, fuzzy -msgid "Select the project this time entry belongs to" -msgstr "Velg prosjektet denne oppgaven tilhører" +#~ msgid "License status" +#~ msgstr "Nåværende status" -#: app/templates/timer/edit_timer.html:242 -#, fuzzy -msgid "Task (Optional)" -msgstr "Oppgave (valgfritt)" +#~ msgid "Supporter license active" +#~ msgstr "Støttede funksjoner" -#: app/templates/timer/edit_timer.html:252 -#, fuzzy -msgid "Select a specific task within the project" -msgstr "Den valgte oppgaven er ugyldig for det valgte prosjektet" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:264 -#, fuzzy -msgid "When the work started" -msgstr "Uke startdato" +#~ msgid "Not activated" +#~ msgstr "Aktiver" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" +#~ msgid "Enter license key" +#~ msgstr "Skriv inn klientnavn" -#: app/templates/timer/edit_timer.html:292 -#, fuzzy -msgid "Time the work ended" -msgstr "Kundekontrakten ble avsluttet" +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" +#~ msgid "License key" +#~ msgstr "Tillatelse" -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -#, fuzzy -msgid "Automatic" -msgstr "Autorisasjon" - -#: app/templates/timer/edit_timer.html:315 -#, fuzzy -msgid "How this entry was created" -msgstr "Klient opprettet" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -#, fuzzy -msgid "Duration:" -msgstr "Varighet" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -#, fuzzy -msgid "Describe what you worked on" -msgstr "Hva jobbet du med?" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "tag1, tag2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "" +#~ msgid "Paste your key here" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -#, fuzzy -msgid "Internal invoice reference" -msgstr "Ingen fakturaer er valgt" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -#, fuzzy -msgid "Reference to internal invoice number" -msgstr "Kvittering/Fakturanummer" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#, fuzzy -msgid "Reason for Change" -msgstr "Årsak til arkivering" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "" +#~ msgid "Validate" +#~ msgstr "Dato" -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" +#~ msgid "Need a key?" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "" +#~ msgid "Purchase a license key" +#~ msgstr "" -#: app/templates/timer/edit_timer.html:412 -#, fuzzy -msgid "Task:" -msgstr "Oppgave" +#~ msgid "Back to Settings" +#~ msgstr "Innstillinger for sikkerhetskopiering" -#: app/templates/timer/edit_timer.html:417 -#, fuzzy -msgid "Start:" -msgstr "Start" +#~ msgid "Profile" +#~ msgstr "Profil" -#: app/templates/timer/edit_timer.html:421 -#, fuzzy -msgid "End:" -msgstr "Slutt" +#~ msgid "In progress" +#~ msgstr "Pågår" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "" +#~ msgid "View all time entries" +#~ msgstr "Se alle tidsregistreringer" -#: app/templates/timer/edit_timer.html:547 -#, fuzzy -msgid "Admin Notice" -msgstr "Legg til merknad" +#~ msgid "No recent time entries" +#~ msgstr "Ingen nyere tidsoppføringer" -#: app/templates/timer/edit_timer.html:550 -msgid "As an admin, you have full editing privileges for this time entry. Changes will be logged for audit purposes." -msgstr "" +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Administrer kontoinnstillingene og -preferansene dine" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Duplisert oppføring" +#~ msgid "Support & Community" +#~ msgstr "Åpen kildekode og fellesskap" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Duplikat tidsregistrering" +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Logg tid manuelt" +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Lag en kopi av en tidligere oppføring med nye tider" +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Opprett en ny tidsregistrering" +#~ msgid "License & supporter key" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Dupliserer oppføring:" +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Opprinnelig:" +#~ msgid "Profile Information" +#~ msgstr "Profilinformasjon" -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "til" +#~ msgid "Username cannot be changed" +#~ msgstr "Brukernavn kan ikke endres" -#: app/templates/timer/manual_entry.html:57 -#, fuzzy -msgid "Project & task" -msgstr "Prosjekter" +#~ msgid "Required for email notifications" +#~ msgstr "Nødvendig for e-postvarsler" -#: app/templates/timer/manual_entry.html:92 -#, fuzzy -msgid "Date & time" -msgstr "Dato og tid" +#~ msgid "Notification Preferences" +#~ msgstr "Varslingsinnstillinger" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "" +#~ msgid "Enable Email Notifications" +#~ msgstr "Aktiver e-postvarsler" -#: app/templates/timer/manual_entry.html:119 -msgid "Optional: enter HH:MM for duration. You can combine with Start Date/Time to log time on a specific day." -msgstr "" +#~ msgid "Master switch for all email notifications" +#~ msgstr "Hovedbryter for alle e-postvarsler" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Varsler om forfalte fakturaer" -#: app/templates/timer/manual_entry.html:125 -#, fuzzy -msgid "Suggest" -msgstr "Gjest" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Oppgavetildelingsvarsler" -#: app/templates/timer/manual_entry.html:127 -msgid "Optional: break duration (HH:MM). Subtracted from total time to get worked duration." -msgstr "" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Varsler om kommentarer og omtale" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "Ukentlig tidssammendrag e-post" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "" +#~ msgid "Remind me to log time at end of day" +#~ msgstr "" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "Hva jobbet du med?" +#~ msgid "Reminder time (your timezone)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "" +#~ msgid "In-app reminders (toasts)" +#~ msgstr "" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Aktiver e-postvarsler" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "" +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -#, fuzzy -msgid "Apply filters" -msgstr "Bruk filtre" +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "" +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "" +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "" +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "" +#~ msgid "Display Preferences" +#~ msgstr "Visningsinnstillinger" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "" +#~ msgid "System Default" +#~ msgstr "Systemstandard" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "" +#~ msgid "Time Rounding Preferences" +#~ msgstr "Tidsavrundingspreferanser" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "" +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Konfigurer hvordan tidsregistreringene dine " +#~ "avrundes. Dette påvirker hvordan varighetene" +#~ " beregnes når du stopper tidtakere." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "" +#~ msgid "Enable Time Rounding" +#~ msgstr "Aktiver tidsavrunding" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Rund tidsoppføringer til konfigurerte intervaller" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "" +#~ msgid "Rounding Interval" +#~ msgstr "Avrundingsintervall" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "Tidsregistreringer avrundes til dette intervallet" -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Spor tiden din med en visuell tidtaker" +#~ msgid "Rounding Method" +#~ msgstr "Avrundingsmetode" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Estimert fullføring" +#~ msgid "Overtime Settings" +#~ msgstr "Overtidsinnstillinger" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Beregner..." +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "Basert på gjennomsnittlig øktvarighet" +#~ msgid "Calculate overtime by" +#~ msgstr "" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Ingen aktiv timer. Start en nedenfor!" +#~ msgid "Daily hours" +#~ msgstr "Daglige timer" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Start ny timer" +#~ msgid "Weekly hours" +#~ msgstr "Ukentlige mål" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Legg til notater om hva du jobber med..." +#~ msgid "Standard Hours Per Day" +#~ msgstr "Standard timer per dag" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "Eller bruk en mal" +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Typisk 8 timer for en fulltidsjobb" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "Nylige prosjekter" +#~ msgid "Standard Hours Per Week" +#~ msgstr "Standard timer per dag" -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "Dagens statistikk" +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "" +#~ msgid "How it works" +#~ msgstr "Hvordan det fungerer" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "" +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "Hvis du jobber mer enn standardtimer " +#~ "på en dag, vil den ekstra tiden" +#~ " spores som overtid i rapporter og" +#~ " analyser." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "" +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" -#: app/templates/timer/view_timer.html:104 -#, fuzzy -msgid "Approval" -msgstr "Vedta" +#~ msgid "Count weekend hours in overtime" +#~ msgstr "" -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "" +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" -#: app/templates/user/license.html:8 -msgid "Supporter badge: confirm your key and thank you for funding development." -msgstr "" +#~ msgid "Regional Settings" +#~ msgstr "Regionale innstillinger" -#: app/templates/user/license.html:12 -#, fuzzy -msgid "License status" -msgstr "Nåværende status" +#~ msgid "Use system default" +#~ msgstr "" -#: app/templates/user/license.html:16 -#, fuzzy -msgid "Supporter license active" -msgstr "Støttede funksjoner" +#~ msgid "Time Format" +#~ msgstr "Tidsformat" -#: app/templates/user/license.html:18 -msgid "Thank you for supporting TimeTracker. Your badge confirms this instance as a supporter — no features are locked." -msgstr "" +#~ msgid "Week Starts On" +#~ msgstr "Uken starter på" -#: app/templates/user/license.html:22 -#, fuzzy -msgid "Not activated" -msgstr "Aktiver" +#~ msgid "Sunday" +#~ msgstr "søndag" -#: app/templates/user/license.html:25 -msgid "Purchase a supporter license (€25) to unlock the supporter badge for this instance. The app stays fully free either way." -msgstr "" +#~ msgid "Monday" +#~ msgstr "mandag" -#: app/templates/user/license.html:35 -#, fuzzy -msgid "Enter license key" -msgstr "Skriv inn klientnavn" +#~ msgid "Saturday" +#~ msgstr "lørdag" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "" +#~ msgid "Calendar default view" +#~ msgstr "Kalendervisning" -#: app/templates/user/license.html:40 -#, fuzzy -msgid "License key" -msgstr "Tillatelse" +#~ msgid "Remember last view" +#~ msgstr "Medlem siden" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "" +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" -#: app/templates/user/license.html:46 -#, fuzzy -msgid "Validate" -msgstr "Dato" +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "" +#~ msgid "Support & Purchase Key" +#~ msgstr "Opprett innkjøpsordre" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "" +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "Tidsavrunding er deaktivert. Alle tider " +#~ "vil bli registrert nøyaktig som sporet." -#: app/templates/user/license.html:57 -#, fuzzy -msgid "Back to Settings" -msgstr "Innstillinger for sikkerhetskopiering" +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "Ingen avrunding - tider vil bli registrert nøyaktig som sporet." -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Profil" +#~ msgid "Actual time:" +#~ msgstr "Faktisk tid:" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "Pågår" +#~ msgid "Rounded:" +#~ msgstr "Avrundet:" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Se alle tidsregistreringer" +#~ msgid "With " +#~ msgstr "Med" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "Ingen nyere tidsoppføringer" +#~ msgid " minute intervals" +#~ msgstr "minuttintervaller" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Administrer kontoinnstillingene og -preferansene dine" +#~ msgid "Create Weekly Goal" +#~ msgstr "Lag ukentlig mål" -#: app/templates/user/settings.html:14 -#, fuzzy -msgid "Support & Community" -msgstr "Åpen kildekode og fellesskap" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Lag ukentlig tidsmål" -#: app/templates/user/settings.html:19 -msgid "TimeTracker is free and open source. Funding comes from optional donations and supporter licenses — never from locking features." -msgstr "" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "Sett et mål for arbeidstimer denne uken" -#: app/templates/user/settings.html:21 -msgid "This instance already has a supporter license. Thank you — you can still donate or share the app anytime." -msgstr "" +#~ msgid "Target Hours" +#~ msgstr "Måltid" -#: app/templates/user/settings.html:23 -msgid "If the app saves you time, you can donate or buy a supporter license (€25). A license shows a Supporter badge; it does not change what you can use." -msgstr "" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "Hvor mange timer vil du jobbe denne uken?" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "" +#~ msgid "Week Start Date" +#~ msgstr "Uke startdato" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "La stå tomt for å bruke gjeldende uke (starter mandag)" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Profilinformasjon" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "Brukernavn kan ikke endres" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Nødvendig for e-postvarsler" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Valgfrie merknader om målet ditt..." -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Varslingsinnstillinger" +#~ msgid "Quick Presets" +#~ msgstr "Raske forhåndsinnstillinger" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Aktiver e-postvarsler" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Tips for å sette mål" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Hovedbryter for alle e-postvarsler" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "Vær realistisk: Vurder ferier, møter og andre forpliktelser" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Varsler om forfalte fakturaer" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "Begynn konservativt: Du kan alltid justere målet ditt senere" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Oppgavetildelingsvarsler" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "Spor fremgang: Sjekk dashbordet regelmessig for å holde deg på sporet" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Varsler om kommentarer og omtale" +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "Typisk heltid: 40 timer per uke (8 timer/dag, 5 dager)" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "Ukentlig tidssammendrag e-post" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Rediger ukentlig mål" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Rediger ukentlig tidsmål" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "" +#~ msgid "Week Period" +#~ msgstr "Ukeperiode" -#: app/templates/user/settings.html:155 -#, fuzzy -msgid "Enable smart notifications on this device" -msgstr "Aktiver e-postvarsler" +#~ msgid "Current Progress" +#~ msgstr "Nåværende fremgang" -#: app/templates/user/settings.html:163 -msgid "Nudge when no time logged today (uses hour from app settings or override below)" -msgstr "" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Er du sikker på at du vil slette dette målet?" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" +#~ msgid "Delete Goal" +#~ msgstr "Slett mål" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "" +#~ msgid "Weekly Time Goals" +#~ msgstr "Ukentlige tidsmål" -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Angi og spor dine ukentlige timemål" -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "" +#~ msgid "New Goal" +#~ msgstr "Nytt mål" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "" +#~ msgid "Total Goals" +#~ msgstr "Totale mål" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Visningsinnstillinger" +#~ msgid "Success Rate" +#~ msgstr "Suksessrate" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "Systemstandard" +#~ msgid "Current Week Goal" +#~ msgstr "Nåværende ukemål" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Tidsavrundingspreferanser" +#~ msgid "Remaining Hours" +#~ msgstr "Gjenstående timer" -#: app/templates/user/settings.html:251 -msgid "Configure how your time entries are rounded. This affects how durations are calculated when you stop timers." -msgstr "Konfigurer hvordan tidsregistreringene dine avrundes. Dette påvirker hvordan varighetene beregnes når du stopper tidtakere." +#~ msgid "Days Remaining" +#~ msgstr "Dager igjen" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Aktiver tidsavrunding" +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Gj.sn. timer/dag nødvendig" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Rund tidsoppføringer til konfigurerte intervaller" +#~ msgid "Edit Goal" +#~ msgstr "Rediger mål" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Avrundingsintervall" +#~ msgid "No goal set for this week" +#~ msgstr "Ingen mål satt for denne uken" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "Tidsregistreringer avrundes til dette intervallet" +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "Lag et ukentlig tidsmål for å begynne å spore fremgangen din" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Avrundingsmetode" +#~ msgid "Goal History" +#~ msgstr "Målhistorie" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Overtidsinnstillinger" +#~ msgid "Target" +#~ msgstr "Mål" -#: app/templates/user/settings.html:318 -msgid "Choose whether overtime is calculated per day or per week, and set your standard hours accordingly." -msgstr "" +#~ msgid "Weekly Goal Details" +#~ msgstr "Ukentlige måldetaljer" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "" +#~ msgid "5-day work week" +#~ msgstr "" -#: app/templates/user/settings.html:328 -#, fuzzy -msgid "Daily hours" -msgstr "Daglige timer" +#~ msgid "Daily Breakdown" +#~ msgstr "Daglig sammenbrudd" -#: app/templates/user/settings.html:334 -#, fuzzy -msgid "Weekly hours" -msgstr "Ukentlige mål" +#~ msgid "excluded" +#~ msgstr "" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Standard timer per dag" +#~ msgid "Time Entries This Week" +#~ msgstr "Tidsposter denne uken" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Typisk 8 timer for en fulltidsjobb" +#~ msgid "No Project" +#~ msgstr "Ingen prosjekt" -#: app/templates/user/settings.html:357 -#, fuzzy -msgid "Standard Hours Per Week" -msgstr "Standard timer per dag" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Ingen tidsregistreringer registrert for denne uken ennå" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" +#~ msgid "Workforce Governance" +#~ msgstr "" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "Hvordan det fungerer" +#~ msgid "Reference date" +#~ msgstr "Referansetype" -#: app/templates/user/settings.html:376 -msgid "If you work more than your standard hours in a day, the extra time will be tracked as overtime in reports and analytics." -msgstr "Hvis du jobber mer enn standardtimer på en dag, vil den ekstra tiden spores som overtid i rapporter og analyser." +#~ msgid "Create/Get Period" +#~ msgstr "Opprett PO" -#: app/templates/user/settings.html:386 -msgid "Overtime is calculated per week: any hours beyond your standard hours per week count as overtime. Suited for contracts based on weekly hours." -msgstr "" +#~ msgid "Start date" +#~ msgstr "Startdato" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "" +#~ msgid "End date" +#~ msgstr "Sluttdato" -#: app/templates/user/settings.html:398 -msgid "When unchecked, any hours worked on Saturday or Sunday are always counted as overtime." -msgstr "" +#~ msgid "Exports" +#~ msgstr "Eksport" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "Regionale innstillinger" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "" +#~ msgid "Payroll CSV" +#~ msgstr "" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Tidsformat" +#~ msgid "Capacity CSV" +#~ msgstr "" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "Uken starter på" +#~ msgid "Locked Periods CSV" +#~ msgstr "" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "søndag" +#~ msgid "Audit Events CSV" +#~ msgstr "Rediger hendelse" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "mandag" +#~ msgid "Timesheet Periods" +#~ msgstr "Ukeperiode" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "lørdag" +#~ msgid "Submit" +#~ msgstr "Tema" -#: app/templates/user/settings.html:470 -#, fuzzy -msgid "Calendar default view" -msgstr "Kalendervisning" +#~ msgid "No timesheet periods yet." +#~ msgstr "Ingen tidsregistreringer registrert ennå" -#: app/templates/user/settings.html:474 -#, fuzzy -msgid "Remember last view" -msgstr "Medlem siden" +#~ msgid "Leave Balances" +#~ msgstr "Lagre endringer" -#: app/templates/user/settings.html:485 -msgid "Support visibility (hiding donate/support UI) is configured system-wide by administrators in Admin → Settings." -msgstr "" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" +#~ msgid "Take as paid leave" +#~ msgstr "" -#: app/templates/user/settings.html:487 -#, fuzzy -msgid "Support & Purchase Key" -msgstr "Opprett innkjøpsordre" - -#: app/templates/user/settings.html:564 -msgid "Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "Tidsavrunding er deaktivert. Alle tider vil bli registrert nøyaktig som sporet." - -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "Ingen avrunding - tider vil bli registrert nøyaktig som sporet." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Faktisk tid:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Avrundet:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Med" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "minuttintervaller" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Lag ukentlig mål" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Lag ukentlig tidsmål" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "Sett et mål for arbeidstimer denne uken" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Måltid" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "Hvor mange timer vil du jobbe denne uken?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Uke startdato" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "La stå tomt for å bruke gjeldende uke (starter mandag)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "" +#~ msgid "Allowance" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "If checked, the goal will only count Monday through Friday. Week ends on Friday instead of Sunday." -msgstr "" +#~ msgid "Used" +#~ msgstr "bruker" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Valgfrie merknader om målet ditt..." +#~ msgid "No leave types configured." +#~ msgstr "Ikke konfigurert" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "Raske forhåndsinnstillinger" +#~ msgid "Time-Off Requests" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Tips for å sette mål" +#~ msgid "Select leave type" +#~ msgstr "Velg klient" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Vær realistisk: Vurder ferier, møter og andre forpliktelser" +#~ msgid "Requested hours" +#~ msgstr "Beregnet timer" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Begynn konservativt: Du kan alltid justere målet ditt senere" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Tilgjengelige variabler" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "Spor fremgang: Sjekk dashbordet regelmessig for å holde deg på sporet" +#~ msgid "Comment" +#~ msgstr "Kommentarer" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Typisk heltid: 40 timer per uke (8 timer/dag, 5 dager)" +#~ msgid "Submit time-off request" +#~ msgstr "" -#: app/templates/weekly_goals/create.html:151 -msgid "Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 days" -msgstr "" +#~ msgid "Capacity" +#~ msgstr "" -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Rediger ukentlig mål" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Rediger ukentlig tidsmål" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Ukeperiode" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Nåværende fremgang" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "Er du sikker på at du vil slette dette målet?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Slett mål" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Ukentlige tidsmål" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Angi og spor dine ukentlige timemål" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Nytt mål" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Totale mål" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Suksessrate" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Nåværende ukemål" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Gjenstående timer" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Dager igjen" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Gj.sn. timer/dag nødvendig" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Rediger mål" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "Ingen mål satt for denne uken" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "Lag et ukentlig tidsmål for å begynne å spore fremgangen din" - -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Målhistorie" - -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Mål" - -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Ukentlige måldetaljer" - -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "" +#~ msgid "Expected" +#~ msgstr "Avvist" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Daglig sammenbrudd" +#~ msgid "Allocated" +#~ msgstr "Opprettet" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "" +#~ msgid "Time Off" +#~ msgstr "Tid" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Tidsposter denne uken" +#~ msgid "Utilization %" +#~ msgstr "Autorisasjon" -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Ingen prosjekt" +#~ msgid "No capacity data available." +#~ msgstr "Ingen brennhastighetsdata tilgjengelig" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Ingen tidsregistreringer registrert for denne uken ennå" +#~ msgid "Timesheet Policy" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "" +#~ msgid "Auto lock days" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:11 -#, fuzzy -msgid "Reference date" -msgstr "Referansetype" - -#: app/templates/workforce/dashboard.html:14 -#, fuzzy -msgid "Create/Get Period" -msgstr "Opprett PO" - -#: app/templates/workforce/dashboard.html:29 -#, fuzzy -msgid "Start date" -msgstr "Startdato" - -#: app/templates/workforce/dashboard.html:33 -#, fuzzy -msgid "End date" -msgstr "Sluttdato" - -#: app/templates/workforce/dashboard.html:42 -#, fuzzy -msgid "Exports" -msgstr "Eksport" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "" +#~ msgid "Enable multi-level approval" +#~ msgstr "Aktiver klientportal" -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "" +#~ msgid "Require rejection comment" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "" +#~ msgid "Enable admin override" +#~ msgstr "Fakturerbar statusoverstyring" -#: app/templates/workforce/dashboard.html:50 -#, fuzzy -msgid "Audit Events CSV" -msgstr "Rediger hendelse" - -#: app/templates/workforce/dashboard.html:57 -#, fuzzy -msgid "Timesheet Periods" -msgstr "Ukeperiode" - -#: app/templates/workforce/dashboard.html:70 -#, fuzzy -msgid "Submit" -msgstr "Tema" - -#: app/templates/workforce/dashboard.html:101 -#, fuzzy -msgid "No timesheet periods yet." -msgstr "Ingen tidsregistreringer registrert ennå" - -#: app/templates/workforce/dashboard.html:107 -#, fuzzy -msgid "Leave Balances" -msgstr "Lagre endringer" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "" +#~ msgid "Save policy" +#~ msgstr "Kun aktiv" -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "" +#~ msgid "Leave Types" +#~ msgstr "Hendelsestype" -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "" +#~ msgid "Annual allowance (hours)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:122 -#, fuzzy -msgid "Used" -msgstr "bruker" +#~ msgid "Accrual hours per month" +#~ msgstr "Faktiske timer" -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -#, fuzzy -msgid "No leave types configured." -msgstr "Ikke konfigurert" +#~ msgid "Paid leave" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "" +#~ msgid "Add leave type" +#~ msgstr "Hendelsestype" -#: app/templates/workforce/dashboard.html:149 -#, fuzzy -msgid "Select leave type" -msgstr "Velg klient" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -#, fuzzy -msgid "Requested hours" -msgstr "Beregnet timer" - -#: app/templates/workforce/dashboard.html:159 -#, fuzzy -msgid "Available overtime (YTD)" -msgstr "Tilgjengelige variabler" - -#: app/templates/workforce/dashboard.html:164 -#, fuzzy -msgid "Comment" -msgstr "Kommentarer" - -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "" +#~ msgid "disabled" +#~ msgstr "Funksjonshemmet" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "" +#~ msgid "Company Holidays" +#~ msgstr "Firmadetaljer" -#: app/templates/workforce/dashboard.html:209 -#, fuzzy -msgid "Expected" -msgstr "Avvist" - -#: app/templates/workforce/dashboard.html:210 -#, fuzzy -msgid "Allocated" -msgstr "Opprettet" - -#: app/templates/workforce/dashboard.html:211 -#, fuzzy -msgid "Time Off" -msgstr "Tid" - -#: app/templates/workforce/dashboard.html:213 -#, fuzzy -msgid "Utilization %" -msgstr "Autorisasjon" - -#: app/templates/workforce/dashboard.html:227 -#, fuzzy -msgid "No capacity data available." -msgstr "Ingen brennhastighetsdata tilgjengelig" - -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "" +#~ msgid "Holiday name" +#~ msgstr "Rollenavn" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "" +#~ msgid "Region (optional)" +#~ msgstr "Merknader (valgfritt)" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "" +#~ msgid "Add holiday" +#~ msgstr "Legg til Good" -#: app/templates/workforce/dashboard.html:243 -#, fuzzy -msgid "Enable multi-level approval" -msgstr "Aktiver klientportal" +#~ msgid "No holidays configured." +#~ msgstr "Ingen webhooks er konfigurert" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "" +#~ msgid "hours (max from overtime)" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:245 -#, fuzzy -msgid "Enable admin override" -msgstr "Fakturerbar statusoverstyring" +#~ msgid "Support" +#~ msgstr "Støtte" -#: app/templates/workforce/dashboard.html:246 -#, fuzzy -msgid "Save policy" -msgstr "Kun aktiv" +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:251 -#, fuzzy -msgid "Leave Types" -msgstr "Hendelsestype" +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "" +#~ msgid "Link copied to clipboard" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:257 -#, fuzzy -msgid "Accrual hours per month" -msgstr "Faktiske timer" +#~ msgid "Could not copy link" +#~ msgstr "" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "" +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" -#: app/templates/workforce/dashboard.html:259 -#, fuzzy -msgid "Add leave type" -msgstr "Hendelsestype" - -#: app/templates/workforce/dashboard.html:264 -#, fuzzy -msgid "disabled" -msgstr "Funksjonshemmet" - -#: app/templates/workforce/dashboard.html:277 -#, fuzzy -msgid "Company Holidays" -msgstr "Firmadetaljer" - -#: app/templates/workforce/dashboard.html:280 -#, fuzzy -msgid "Holiday name" -msgstr "Rollenavn" - -#: app/templates/workforce/dashboard.html:283 -#, fuzzy -msgid "Region (optional)" -msgstr "Merknader (valgfritt)" - -#: app/templates/workforce/dashboard.html:284 -#, fuzzy -msgid "Add holiday" -msgstr "Legg til Good" - -#: app/templates/workforce/dashboard.html:296 -#, fuzzy -msgid "No holidays configured." -msgstr "Ingen webhooks er konfigurert" - -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "" +#~ msgid "Overpaid" +#~ msgstr "Overbetalt" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Støtte" +#~ msgid "Cash" +#~ msgstr "Kontanter" -#: app/utils/context_processors.py:226 -msgid "That report was quick to generate. If TimeTracker saves you time, consider supporting its development." -msgstr "" +#~ msgid "Check" +#~ msgstr "Sjekke" -#: app/utils/context_processors.py:252 -msgid "You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" +#~ msgid "Bank Transfer" +#~ msgstr "Bankoverføring" -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "" +#~ msgid "Credit Card" +#~ msgstr "Kredittkort" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "" +#~ msgid "Debit Card" +#~ msgstr "Debetkort" -#: app/utils/context_processors.py:258 -msgid "You have been using TimeTracker actively for a while. If it helps your work, consider supporting its development." -msgstr "" +#~ msgid "Stripe" +#~ msgstr "Stripe" -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "Overbetalt" +#~ msgid "Company Card" +#~ msgstr "Bedriftskort" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "Kontanter" +#~ msgid "Reimbursed" +#~ msgstr "Refundert" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Sjekke" +#~ msgid "Processing" +#~ msgstr "Behandling" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Bankoverføring" +#~ msgid "80% Budget Warning" +#~ msgstr "80 % budsjettadvarsel" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Kredittkort" +#~ msgid "Budget Limit Reached" +#~ msgstr "Budsjettgrense nådd" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Debetkort" +#~ msgid "Info" +#~ msgstr "Info" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Stripe" +#~ msgid "Authentication required." +#~ msgstr "" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Bedriftskort" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Refundert" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Behandling" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "Fakturanummer: %(num)s" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "80 % budsjettadvarsel" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "Utstedelsesdato: %(date)s" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Budsjettgrense nådd" +#~ msgid "Due Date: %(date)s" +#~ msgstr "Forfallsdato: %(date)s" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Info" +#~ msgid "Quote For:" +#~ msgstr "Sitat for:" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "" +#~ msgid "Quote Details:" +#~ msgstr "Sitatdetaljer:" -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Items:" +#~ msgstr "Varer:" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Total:" +#~ msgstr "Total:" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "Fakturanummer: %(num)s" - -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "Utstedelsesdato: %(date)s" - -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "Forfallsdato: %(date)s" - -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Sitat for:" - -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Sitatdetaljer:" - -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Varer:" - -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Total:" - -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Logg inn for å få tilgang til denne siden" +#~ msgid "Please log in to access this page" +#~ msgstr "Logg inn for å få tilgang til denne siden" diff --git a/translations/pt/LC_MESSAGES/messages.po b/translations/pt/LC_MESSAGES/messages.po index e1da826d..e6929f63 100644 --- a/translations/pt/LC_MESSAGES/messages.po +++ b/translations/pt/LC_MESSAGES/messages.po @@ -1,28012 +1,19690 @@ # msgid "" msgstr "" -"Project-Id-Version: TimeTracker\n" +"Project-Id-Version: TimeTracker\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-04-29 07:57+0200\n" +"POT-Creation-Date: 2026-09-23 08:30+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Sanitized invalid format strings (scripts/sanitize_po_format_strings.py)\n" -"Language-Team: Portuguese \n" +"Last-Translator: Sanitized invalid format strings " +"(scripts/sanitize_po_format_strings.py)\n" "Language: pt\n" +"Language-Team: Portuguese \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.14.0\n" -#: app/__init__.py:867 app/__init__.py:899 +#: app/__init__.py:509 +msgid "Please log in to access the client portal." +msgstr "Faça login para acessar o portal do cliente." + +#: app/__init__.py:1056 app/__init__.py:1088 msgid "Your session expired or the page was open too long. Please try again." msgstr "" "Sua sessão expirou ou a página ficou aberta por muito tempo. Por favor, " "tente novamente." -#: app/routes/admin.py:613 app/utils/decorators.py:20 -msgid "Administrator access required" -msgstr "Acesso ao administrador necessário" +#~ msgid "Administrator access required" +#~ msgstr "Acesso ao administrador necessário" + +#~ msgid "User creation is disabled in demo mode." +#~ msgstr "A criação do utilizador está desactivada no modo de demonstração." + +#~ msgid "Username is required" +#~ msgstr "O utilizador é necessário" + +#~ msgid "User already exists" +#~ msgstr "O usuário já existe" + +#~ msgid "" +#~ "Default 'user' role not found. Please" +#~ " run 'flask seed_permissions_cmd' first." +#~ msgstr "" +#~ "O papel padrão do 'usuário' não " +#~ "foi encontrado. Por favor, execute " +#~ "primeiro 'flask seed permissions cmd'." + +#~ msgid "" +#~ "Could not create user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível criar o usuário " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "User \"%(username)s\" created successfully" +#~ msgstr "" + +#~ msgid "Username already exists" +#~ msgstr "O utilizador já existe" + +#~ msgid "Please select a client when enabling client portal access." +#~ msgstr "Selecione um cliente ao habilitar o acesso ao portal do cliente." + +#~ msgid "Password must be at least 8 characters long." +#~ msgstr "A senha deve ter pelo menos 8 caracteres." + +#~ msgid "Passwords do not match." +#~ msgstr "As senhas não correspondem." + +#~ msgid "" +#~ "Could not update user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar o usuário " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Password reset successfully for user \"%(username)s\"" +#~ msgstr "" + +#~ msgid "User \"%(username)s\" updated successfully" +#~ msgstr "" + +#~ msgid "Cannot delete the last administrator" +#~ msgstr "Não foi possível apagar o último administrador" + +#~ msgid "Cannot delete user with existing time entries" +#~ msgstr "Não é possível excluir o usuário com os itens de tempo existentes" + +#~ msgid "" +#~ "Could not delete user due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível excluir o usuário " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "User \"%(username)s\" deleted successfully" +#~ msgstr "" + +#~ msgid "Telemetry has been enabled. Thank you for helping us improve!" +#~ msgstr "Telemetria foi activada. Obrigado por nos ajudar a melhorar!" + +#~ msgid "" +#~ "Detailed analytics has been disabled. " +#~ "Anonymous base telemetry remains active." +#~ msgstr "" +#~ "A análise detalhada foi desabilitada. A" +#~ " telemetria anónima continua activa." + +#~ msgid "Invalid locked client selection." +#~ msgstr "Seleção de cliente bloqueada inválida." + +#~ msgid "Selected locked client does not exist or is not active." +#~ msgstr "Cliente bloqueado selecionado não existe ou não está ativo." + +#~ msgid "" +#~ "Cannot disable '%(module)s' because the " +#~ "following modules depend on it: " +#~ "%(dependents)s" +#~ msgstr "" + +#~ msgid "" +#~ "Could not update module visibility due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Não foi possível atualizar a " +#~ "visibilidade do módulo devido a um " +#~ "erro na base de dados. Por favor," +#~ " verifique os registos do servidor." + +#~ msgid "Module visibility updated successfully" +#~ msgstr "Visibilidade do módulo atualizada com sucesso" + +#~ msgid "Invalid timezone: %(timezone)s" +#~ msgstr "" + +#~ msgid "Invalid invoice number pattern: %(reason)s" +#~ msgstr "" + +#~ msgid "" +#~ "Could not update settings due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar as " +#~ "configurações devido a um erro na " +#~ "base de dados. Por favor, verifique " +#~ "os registos do servidor." + +#~ msgid "Settings updated successfully" +#~ msgstr "Configurações atualizadas com sucesso" + +#~ msgid "Invalid code." +#~ msgstr "Código inválido." + +#~ msgid "Error saving settings" +#~ msgstr "Erro ao salvar as configurações" + +#~ msgid "Invalid template JSON format. Please try again." +#~ msgstr "Formato JSON modelo inválido. Por favor, tente novamente." + +#~ msgid "Error: Template JSON is empty. Please try saving again." +#~ msgstr "Erro: O modelo JSON está em branco. Por favor, tente salvar novamente." + +#~ msgid "Error: Template JSON is invalid. Please try saving again." +#~ msgstr "Erro: O modelo JSON é inválido. Por favor, tente salvar novamente." + +#~ msgid "Error: Template JSON is not valid JSON. Please try saving again." +#~ msgstr "" +#~ "Erro: O modelo JSON não é válido" +#~ " JSON. Por favor, tente salvar " +#~ "novamente." + +#~ msgid "Could not update PDF layout due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar a disposição" +#~ " do PDF devido a um erro na " +#~ "base de dados." + +#~ msgid "PDF layout updated successfully" +#~ msgstr "Layout PDF atualizado com sucesso" + +#~ msgid "" +#~ "PDF layout saved but template JSON " +#~ "verification failed. Please check the " +#~ "template." +#~ msgstr "" +#~ "O layout PDF salvo mas a " +#~ "verificação do modelo JSON falhou. Por" +#~ " favor, verifique o modelo." + +#~ msgid "Could not reset PDF layout due to a database error." +#~ msgstr "" +#~ "Não foi possível repor a disposição " +#~ "do PDF devido a um erro na " +#~ "base de dados." + +#~ msgid "PDF layout reset to defaults" +#~ msgstr "Layout PDF reset para padrões" + +#~ msgid "Invalid page size" +#~ msgstr "Tamanho de página inválido" + +#~ msgid "Template not found for this page size" +#~ msgstr "Modelo não encontrado para o tamanho desta página" + +#~ msgid "No file uploaded" +#~ msgstr "Nenhum arquivo carregado" + +#~ msgid "No file selected" +#~ msgstr "Nenhum arquivo selecionado" + +#~ msgid "Invalid template JSON format. Missing 'page' property." +#~ msgstr "Formato JSON modelo inválido. Propriedade de página em falta." + +#~ msgid "Could not import template due to a database error." +#~ msgstr "Não foi possível importar o modelo devido a um erro na base de dados." + +#~ msgid "Template imported successfully" +#~ msgstr "Modelo importado com sucesso" + +#~ msgid "Invalid JSON file: %(error)s" +#~ msgstr "" + +#~ msgid "Error importing template: %(error)s" +#~ msgstr "Erro na importação do modelo: %(error)s" + +#~ msgid "Invoice not found" +#~ msgstr "Fatura não encontrada" + +#~ msgid "Quote not found" +#~ msgstr "Citação não encontrada" + +#~ msgid "No logo file selected" +#~ msgstr "Nenhum arquivo de logotipo selecionado" + +#~ msgid "Invalid image file." +#~ msgstr "Ficheiro de imagem inválido." + +#~ msgid "Could not save logo due to a database error. Please check server logs." +#~ msgstr "" +#~ "Não foi possível salvar o logotipo " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "" +#~ "Company logo uploaded successfully! You " +#~ "can see it in the \"Current " +#~ "Company Logo\" section above. It will" +#~ " appear on invoices and PDF " +#~ "documents." +#~ msgstr "" +#~ "Logotipo da empresa carregado com " +#~ "sucesso! Você pode vê-lo na seção " +#~ "\"Logo Companhia atual\" acima. Ele " +#~ "aparecerá em faturas e documentos PDF." + +#~ msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgstr "" +#~ "Tipo de ficheiro inválido. Tipos " +#~ "permitidos: PNG, JPG, JPEG, GIF, SVG," +#~ " WEBP" + +#~ msgid "" +#~ "Could not remove logo due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível remover o logotipo " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/admin.py:825 -msgid "User creation is disabled in demo mode." -msgstr "A criação do utilizador está desactivada no modo de demonstração." +#~ msgid "" +#~ "Company logo removed successfully. Upload " +#~ "a new logo in the section below" +#~ " if needed." +#~ msgstr "" +#~ "Logotipo da empresa removido com " +#~ "sucesso. Envie um novo logotipo na " +#~ "seção abaixo, se necessário." -#: app/routes/admin.py:833 app/routes/admin.py:905 app/routes/kiosk.py:118 -msgid "Username is required" -msgstr "O utilizador é necessário" +#~ msgid "No logo to remove" +#~ msgstr "Sem logotipo para remover" -#: app/routes/admin.py:839 -msgid "User already exists" -msgstr "O usuário já existe" +#~ msgid "Backup failed: archive not created" +#~ msgstr "A cópia de segurança falhou: o pacote não foi criado" -#: app/routes/admin.py:849 app/routes/admin.py:943 -msgid "" -"Default 'user' role not found. Please run 'flask seed_permissions_cmd' " -"first." -msgstr "" -"O papel padrão do 'usuário' não foi encontrado. Por favor, execute primeiro " -"'flask seed permissions cmd'." +#~ msgid "Backup failed: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:873 -msgid "" -"Could not create user due to a database error. Please check server logs." -msgstr "" -"Não foi possível criar o usuário devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Invalid file type" +#~ msgstr "Tipo de ficheiro inválido" -#: app/routes/admin.py:877 -#, python-format -msgid "User \"%(username)s\" created successfully" -msgstr "" +#~ msgid "Backup file not found" +#~ msgstr "Arquivo de backup não encontrado" -#: app/routes/admin.py:917 -msgid "Username already exists" -msgstr "O utilizador já existe" +#~ msgid "Backup \"%(filename)s\" deleted successfully" +#~ msgstr "" -#: app/routes/admin.py:928 -msgid "Please select a client when enabling client portal access." -msgstr "Selecione um cliente ao habilitar o acesso ao portal do cliente." +#~ msgid "Failed to delete backup: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:960 app/routes/auth.py:258 app/routes/auth.py:394 -#: app/routes/auth.py:516 app/routes/auth.py:795 app/routes/auth.py:887 -#: app/routes/client_portal.py:387 app/templates/auth/change_password.html:28 -msgid "Password must be at least 8 characters long." -msgstr "A senha deve ter pelo menos 8 caracteres." +#~ msgid "Invalid file type. Please select a .zip backup archive." +#~ msgstr "" +#~ "Tipo de ficheiro inválido. Por favor," +#~ " selecione um arquivo de backup .zip." -#: app/routes/admin.py:970 app/routes/auth.py:261 app/routes/auth.py:799 -#: app/routes/auth.py:891 app/routes/client_portal.py:391 -msgid "Passwords do not match." -msgstr "As senhas não correspondem." +#~ msgid "Backup file not found." +#~ msgstr "Arquivo de backup não encontrado." -#: app/routes/admin.py:1023 -msgid "" -"Could not update user due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar o usuário devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Invalid file type. Please upload a .zip backup archive." +#~ msgstr "" +#~ "Tipo de ficheiro inválido. Por favor," +#~ " carregue um arquivo de backup .zip." -#: app/routes/admin.py:1033 -#, python-format -msgid "Password reset successfully for user \"%(username)s\"" -msgstr "" +#~ msgid "No backup file provided" +#~ msgstr "Nenhum arquivo de backup fornecido" -#: app/routes/admin.py:1035 -#, python-format -msgid "User \"%(username)s\" updated successfully" -msgstr "" +#~ msgid "Restore started. You can monitor progress on this page." +#~ msgstr "A restauração começou. Você pode monitorar o progresso nesta página." -#: app/routes/admin.py:1054 -msgid "Cannot delete the last administrator" -msgstr "Não foi possível apagar o último administrador" +#~ msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." +#~ msgstr "" +#~ "O OIDC não está habilitado. Configura" +#~ " o METODO AUTH para \"oidc\", " +#~ "\"ambos\" ou \"todos\"." -#: app/routes/admin.py:1059 -msgid "Cannot delete user with existing time entries" -msgstr "Não é possível excluir o usuário com os itens de tempo existentes" +#~ msgid "OIDC_ISSUER is not configured" +#~ msgstr "OIDC ISSUER não está configurado" -#: app/routes/admin.py:1078 -msgid "" -"Could not delete user due to a database error. Please check server logs." -msgstr "" -"Não foi possível excluir o usuário devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "✗ Failed to parse issuer URL: %(error)s" +#~ msgstr "" + +#~ msgid "Testing DNS resolution with multiple strategies..." +#~ msgstr "Testando resolução DNS com múltiplas estratégias..." + +#~ msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" +#~ msgstr "" + +#~ msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" +#~ msgstr "" + +#~ msgid "ℹ Docker environment detected - internal service names may be available" +#~ msgstr "" +#~ "ambiente i Docker detectado - nomes " +#~ "de serviços internos podem estar " +#~ "disponíveis" -#: app/routes/admin.py:1081 -#, python-format -msgid "User \"%(username)s\" deleted successfully" -msgstr "" +#~ msgid "✓ Discovery document fetched successfully from %(url)s" +#~ msgstr "文 Documento de descoberta obtido com sucesso de %(url)s" -#: app/routes/admin.py:1150 -msgid "Telemetry has been enabled. Thank you for helping us improve!" -msgstr "Telemetria foi activada. Obrigado por nos ajudar a melhorar!" +#~ msgid "✓ DNS strategy used: %(strategy)s" +#~ msgstr "" -#: app/routes/admin.py:1152 -msgid "" -"Detailed analytics has been disabled. Anonymous base telemetry remains " -"active." -msgstr "" -"A análise detalhada foi desabilitada. A telemetria anónima continua activa." +#~ msgid "✗ Failed to fetch discovery document: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:1196 -msgid "Invalid locked client selection." -msgstr "Seleção de cliente bloqueada inválida." +#~ msgid "✗ Unexpected error: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:1207 -msgid "Selected locked client does not exist or is not active." -msgstr "Cliente bloqueado selecionado não existe ou não está ativo." +#~ msgid "✗ Failed to retrieve discovery document" +#~ msgstr "Não foi possível obter o documento de descoberta" -#: app/routes/admin.py:1241 -#, python-format -msgid "" -"Cannot disable '%(module)s' because the following modules depend on it: " -"%(dependents)s" -msgstr "" +#~ msgid "✓ OAuth client is registered in application" +#~ msgstr "文 Cliente OAuth está registrado na aplicação" -#: app/routes/admin.py:1264 -msgid "" -"Could not update module visibility due to a database error. Please check " -"server logs." -msgstr "" -"Não foi possível atualizar a visibilidade do módulo devido a um erro na base" -" de dados. Por favor, verifique os registos do servidor." +#~ msgid "✗ OAuth client is not registered" +#~ msgstr "O cliente OAuth não está registado" -#: app/routes/admin.py:1274 -msgid "Module visibility updated successfully" -msgstr "Visibilidade do módulo atualizada com sucesso" +#~ msgid "✗ Failed to create OAuth client: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:1331 app/routes/setup.py:42 -#, python-format -msgid "Invalid timezone: %(timezone)s" -msgstr "" +#~ msgid "✓ %(endpoint)s: %(url)s" +#~ msgstr "" -#: app/routes/admin.py:1378 -#, python-format -msgid "Invalid invoice number pattern: %(reason)s" -msgstr "" +#~ msgid "✗ Missing %(endpoint)s in discovery document" +#~ msgstr "" -#: app/routes/admin.py:1543 -msgid "" -"Could not update settings due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar as configurações devido a um erro na base de " -"dados. Por favor, verifique os registos do servidor." +#~ msgid "✓ Scope \"%(scope)s\" is supported by provider" +#~ msgstr "‡ Escopo \"%(scope)s\" é suportado pelo provedor" -#: app/routes/admin.py:1578 -msgid "Settings updated successfully" -msgstr "Configurações atualizadas com sucesso" +#~ msgid "" +#~ "⚠ Scope \"%(scope)s\" may not be " +#~ "supported by provider (supported: " +#~ "%(supported)s)" +#~ msgstr "" -#: app/routes/admin.py:1631 app/routes/admin.py:1644 app/routes/user.py:249 -#: app/routes/user.py:261 app/routes/user.py:288 app/routes/user.py:301 -#: app/templates/admin/settings.html:766 -msgid "Invalid code." -msgstr "Código inválido." +#~ msgid "ℹ Provider supports claims: %(claims)s" +#~ msgstr "" -#: app/routes/admin.py:1649 app/routes/user.py:202 app/routes/user.py:306 -msgid "Error saving settings" -msgstr "Erro ao salvar as configurações" +#~ msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" +#~ msgstr "" -#: app/routes/admin.py:1753 app/routes/admin.py:2103 -msgid "Invalid template JSON format. Please try again." -msgstr "Formato JSON modelo inválido. Por favor, tente novamente." +#~ msgid "" +#~ "⚠ Configured %(claim_type)s claim " +#~ "\"%(claim_name)s\" not in supported claims " +#~ "list (may still work)" +#~ msgstr "" -#: app/routes/admin.py:1795 app/routes/admin.py:2152 -msgid "Error: Template JSON is empty. Please try saving again." -msgstr "" -"Erro: O modelo JSON está em branco. Por favor, tente salvar novamente." +#~ msgid "OIDC configuration test completed" +#~ msgstr "Teste de configuração do OIDC concluído" -#: app/routes/admin.py:1807 app/routes/admin.py:2164 -msgid "Error: Template JSON is invalid. Please try saving again." -msgstr "Erro: O modelo JSON é inválido. Por favor, tente salvar novamente." +#~ msgid "Template name is required" +#~ msgstr "O nome do modelo é obrigatório" -#: app/routes/admin.py:1817 app/routes/admin.py:2174 -msgid "Error: Template JSON is not valid JSON. Please try saving again." -msgstr "" -"Erro: O modelo JSON não é válido JSON. Por favor, tente salvar novamente." +#~ msgid "HTML template content is required" +#~ msgstr "O conteúdo do modelo HTML é necessário" -#: app/routes/admin.py:1850 app/routes/admin.py:2188 -msgid "Could not update PDF layout due to a database error." -msgstr "" -"Não foi possível atualizar a disposição do PDF devido a um erro na base de " -"dados." +#~ msgid "A template with this name already exists" +#~ msgstr "Já existe um modelo com este nome" -#: app/routes/admin.py:1860 app/routes/admin.py:2196 -msgid "PDF layout updated successfully" -msgstr "Layout PDF atualizado com sucesso" +#~ msgid "Could not create email template due to a database error." +#~ msgstr "" +#~ "Não foi possível criar um modelo " +#~ "de e- mail devido a um erro " +#~ "na base de dados." -#: app/routes/admin.py:1866 app/routes/admin.py:2202 -msgid "" -"PDF layout saved but template JSON verification failed. Please check the " -"template." -msgstr "" -"O layout PDF salvo mas a verificação do modelo JSON falhou. Por favor, " -"verifique o modelo." +#~ msgid "Email template created successfully" +#~ msgstr "Modelo de e- mail criado com sucesso" -#: app/routes/admin.py:1996 app/routes/admin.py:2311 -msgid "Could not reset PDF layout due to a database error." -msgstr "" -"Não foi possível repor a disposição do PDF devido a um erro na base de " -"dados." - -#: app/routes/admin.py:1998 app/routes/admin.py:2313 -msgid "PDF layout reset to defaults" -msgstr "Layout PDF reset para padrões" - -#: app/routes/admin.py:2329 app/routes/admin.py:2440 -msgid "Invalid page size" -msgstr "Tamanho de página inválido" - -#: app/routes/admin.py:2335 app/routes/admin.py:2446 -msgid "Template not found for this page size" -msgstr "Modelo não encontrado para o tamanho desta página" - -#: app/routes/admin.py:2372 app/routes/admin.py:2483 -msgid "No file uploaded" -msgstr "Nenhum arquivo carregado" - -#: app/routes/admin.py:2377 app/routes/admin.py:2488 -#: app/routes/clients.py:1269 app/routes/comments.py:291 -#: app/routes/expenses.py:1270 app/routes/invoices.py:1615 -#: app/routes/projects.py:2028 app/routes/quotes.py:1132 -#: app/routes/quotes.py:1994 app/routes/team_chat.py:481 -msgid "No file selected" -msgstr "Nenhum arquivo selecionado" - -#: app/routes/admin.py:2387 app/routes/admin.py:2498 -msgid "Invalid template JSON format. Missing 'page' property." -msgstr "Formato JSON modelo inválido. Propriedade de página em falta." - -#: app/routes/admin.py:2413 app/routes/admin.py:2524 -msgid "Could not import template due to a database error." -msgstr "Não foi possível importar o modelo devido a um erro na base de dados." - -#: app/routes/admin.py:2415 app/routes/admin.py:2526 -msgid "Template imported successfully" -msgstr "Modelo importado com sucesso" - -#: app/routes/admin.py:2420 app/routes/admin.py:2531 -#, python-format -msgid "Invalid JSON file: %(error)s" -msgstr "" +#~ msgid "Could not update email template due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar o modelo " +#~ "de e- mail devido a um erro " +#~ "na base de dados." -#: app/routes/admin.py:2424 app/routes/admin.py:2535 -#, python-format -msgid "Error importing template: %(error)s" -msgstr "Erro na importação do modelo: %(error)s" +#~ msgid "Email template updated successfully" +#~ msgstr "Modelo de e- mail actualizado com sucesso" -#: app/routes/admin.py:2704 -msgid "Invoice not found" -msgstr "Fatura não encontrada" +#~ msgid "Cannot delete template that is in use by invoices or recurring invoices" +#~ msgstr "" +#~ "Não é possível excluir o modelo em" +#~ " uso por faturas ou faturas " +#~ "recorrentes" -#: app/routes/admin.py:3342 app/routes/quotes.py:495 -msgid "Quote not found" -msgstr "Citação não encontrada" +#~ msgid "Could not delete email template due to a database error." +#~ msgstr "" +#~ "Não foi possível apagar o modelo " +#~ "de e- mail devido a um erro " +#~ "na base de dados." -#: app/routes/admin.py:3878 app/routes/admin.py:3883 -msgid "No logo file selected" -msgstr "Nenhum arquivo de logotipo selecionado" +#~ msgid "Email template \"%(name)s\" deleted successfully" +#~ msgstr "" + +#~ msgid "Task name and project are required" +#~ msgstr "Nome da tarefa e projeto são necessários" + +#~ msgid "Selected project does not exist or is inactive" +#~ msgstr "O projeto selecionado não existe ou está inativo" + +#~ msgid "message" +#~ msgstr "mensagem" + +#~ msgid "Task \"%(name)s\" created successfully" +#~ msgstr "" + +#~ msgid "Audit logs table does not exist. Please run: flask db upgrade" +#~ msgstr "" +#~ "A tabela de registros de auditoria " +#~ "não existe. Por favor, execute: flower" +#~ " db upgrade" + +#~ msgid "You must change your password before continuing." +#~ msgstr "Você deve alterar sua senha antes de continuar." + +#~ msgid "Administrator accounts must enable two-factor authentication." +#~ msgstr "As contas de administrador devem ativar a autenticação de dois fatores." + +#~ msgid "Welcome back, %(username)s!" +#~ msgstr "" + +#~ msgid "Password reset is not available for this authentication method." +#~ msgstr "" +#~ "A redefinição de senha não está " +#~ "disponível para este método de " +#~ "autenticação." + +#~ msgid "Demo mode: password reset is disabled." +#~ msgstr "Modo de demonstração: a redefinição da senha está desactivada." + +#~ msgid "" +#~ "If an account matches what you " +#~ "entered and email is configured, you'll" +#~ " receive a reset link shortly." +#~ msgstr "" +#~ "Se uma conta corresponder ao que " +#~ "você inseriu e o e-mail estiver " +#~ "configurado, você receberá um link de" +#~ " reset em breve." + +#~ msgid "Reset your TimeTracker password" +#~ msgstr "Reinicie sua senha do TimeTracker" + +#~ msgid "" +#~ "A password reset was requested for your account.\n" +#~ "\n" +#~ "Use this link to set a new password:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "If you did not request this, you can ignore this email." +#~ msgstr "" +#~ "Foi solicitada uma redefinição de senha para a sua conta.\n" +#~ "\n" +#~ "Use este link para definir uma nova senha:\n" +#~ "%(url)s\n" +#~ "\n" +#~ "Se você não solicitou isso, você pode ignorar este e-mail." + +#~ msgid "This reset link is invalid or has expired. Please request a new one." +#~ msgstr "Este link de reset é inválido ou expirou. Por favor, peça um novo." + +#~ msgid "Password reset is not available for this account." +#~ msgstr "A redefinição de senha não está disponível para esta conta." + +#~ msgid "Your password has been updated. You can now sign in." +#~ msgstr "Sua senha foi atualizada. Agora pode assinar." + +#~ msgid "Could not reset password due to a database error." +#~ msgstr "Não foi possível repor a senha devido a um erro na base de dados." + +#~ msgid "Invalid username format" +#~ msgstr "Formato de utilizador inválido" + +#~ msgid "" +#~ "Only the demo account can be used." +#~ " Please use the credentials shown " +#~ "below." +#~ msgstr "" +#~ "Somente a conta demo pode ser " +#~ "usada. Por favor, use as credenciais " +#~ "mostradas abaixo." + +#~ msgid "Password is required" +#~ msgstr "A senha é necessária" + +#~ msgid "Invalid username or password" +#~ msgstr "Utilizador ou senha inválidos" + +#~ msgid "Password is required to create an account." +#~ msgstr "A senha é necessária para criar uma conta." + +#~ msgid "" +#~ "Could not create your account due " +#~ "to a database error. Please try " +#~ "again later." +#~ msgstr "" +#~ "Não foi possível criar a sua conta" +#~ " devido a um erro na base de" +#~ " dados. Por favor, tente mais tarde." + +#~ msgid "Welcome! Your account has been created." +#~ msgstr "Bem-vindos! Sua conta foi criada." + +#~ msgid "User not found. Please contact an administrator." +#~ msgstr "Usuário não encontrado. Por favor contacte um administrador." + +#~ msgid "Could not update your account role due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar a função " +#~ "da sua conta devido a um erro " +#~ "na base de dados." + +#~ msgid "Account is disabled. Please contact an administrator." +#~ msgstr "A conta está desactivada. Por favor contacte um administrador." + +#~ msgid "" +#~ "No password is set for your " +#~ "account. Please enter a password to " +#~ "set one and log in." +#~ msgstr "" +#~ "Nenhuma senha está definida para sua " +#~ "conta. Digite uma senha para definir " +#~ "um e faça login." + +#~ msgid "Could not set password due to a database error. Please try again." +#~ msgstr "" +#~ "Não foi possível definir a senha " +#~ "devido a um erro na base de " +#~ "dados. Por favor, tente novamente." + +#~ msgid "Password has been set. You are now logged in." +#~ msgstr "A senha foi definida. Você está agora logado." + +#~ msgid "Unexpected error during login. Please try again or check server logs." +#~ msgstr "" +#~ "Erro inesperado durante o login. Por " +#~ "favor, tente novamente ou verifique os" +#~ " registros do servidor." + +#~ msgid "Your login session expired. Please sign in again." +#~ msgstr "Sua sessão de login expirou. Por favor, assine novamente." + +#~ msgid "Invalid authentication code." +#~ msgstr "Código de autenticação inválido." + +#~ msgid "Two-factor authentication enabled." +#~ msgstr "A autenticação de dois fatores habilitada." + +#~ msgid "Could not enable two-factor authentication due to a database error." +#~ msgstr "" +#~ "Não foi possível habilitar a " +#~ "autenticação de dois fatores devido a" +#~ " um erro na base de dados." + +#~ msgid "Two-factor authentication disabled." +#~ msgstr "Autenticação de dois fatores desabilitada." + +#~ msgid "Could not disable two-factor authentication due to a database error." +#~ msgstr "" +#~ "Não foi possível desativar a " +#~ "autenticação de dois fatores devido a" +#~ " um erro na base de dados." + +#~ msgid "Goodbye, %(username)s!" +#~ msgstr "" + +#~ msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" +#~ msgstr "Tipo de ficheiro avatar inválido. Permitido: PNG, JPG, JPEG, GIF, WEBP" + +#~ msgid "Failed to save avatar on server." +#~ msgstr "Falha ao salvar o avatar no servidor." + +#~ msgid "Profile updated successfully" +#~ msgstr "Perfil actualizado com sucesso" + +#~ msgid "Could not update your profile due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar seu perfil" +#~ " devido a um erro na base de" +#~ " dados." + +#~ msgid "Password cannot be changed here for your account." +#~ msgstr "A senha não pode ser alterada aqui para a sua conta." + +#~ msgid "New password is required" +#~ msgstr "Nova senha é necessária" + +#~ msgid "Current password is required" +#~ msgstr "É necessária a senha actual" + +#~ msgid "Current password is incorrect" +#~ msgstr "A senha atual está incorreta" + +#~ msgid "Password changed successfully. You can now continue." +#~ msgstr "A senha foi alterada com sucesso. Agora pode continuar." + +#~ msgid "Could not update password due to a database error." +#~ msgstr "Não foi possível atualizar a senha devido a um erro na base de dados." + +#~ msgid "Avatar removed" +#~ msgstr "Avatar removido" + +#~ msgid "Failed to remove avatar." +#~ msgstr "Não foi possível remover o avatar." + +#~ msgid "" +#~ "Demo mode: only the demo account " +#~ "can be used. Please use the " +#~ "credentials on the login page." +#~ msgstr "" +#~ "Modo de demonstração: somente a conta" +#~ " de demonstração pode ser usada. Use" +#~ " as credenciais na página de login." + +#~ msgid "" +#~ "Failed to connect to Single Sign-" +#~ "On provider. Please contact an " +#~ "administrator. Error: %(error)s" +#~ msgstr "" + +#~ msgid "" +#~ "Cannot connect to Single Sign-On " +#~ "provider. DNS resolution may be failing." +#~ " Please contact an administrator. Error:" +#~ " %(error)s" +#~ msgstr "" + +#~ msgid "Single Sign-On is not configured yet. Please contact an administrator." +#~ msgstr "" +#~ "O Single Sign-On ainda não está" +#~ " configurado. Por favor contacte um " +#~ "administrador." -#: app/routes/admin.py:3900 app/routes/auth.py:826 -msgid "Invalid image file." -msgstr "Ficheiro de imagem inválido." +#~ msgid "Single Sign-On is not configured." +#~ msgstr "Single Sign-On não está configurado." -#: app/routes/admin.py:3929 -msgid "Could not save logo due to a database error. Please check server logs." -msgstr "" -"Não foi possível salvar o logotipo devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "" +#~ "SSO failed: encrypted or unsupported ID" +#~ " tokens. Disable ID token encryption " +#~ "on your provider (e.g. in Authentik, " +#~ "leave the Encryption Key empty)." +#~ msgstr "" +#~ "O SSO falhou: símbolos de ID " +#~ "criptografados ou não suportados. Desativar" +#~ " a criptografia do token de ID " +#~ "no seu provedor (por exemplo, em " +#~ "Authentik, deixe a Chave de Encriptação" +#~ " vazia)." -#: app/routes/admin.py:3933 -msgid "" -"Company logo uploaded successfully! You can see it in the \"Current Company " -"Logo\" section above. It will appear on invoices and PDF documents." -msgstr "" -"Logotipo da empresa carregado com sucesso! Você pode vê-lo na seção \"Logo " -"Companhia atual\" acima. Ele aparecerá em faturas e documentos PDF." +#~ msgid "" +#~ "SSO failed. If this repeats, check " +#~ "session cookie and proxy configuration." +#~ msgstr "" +#~ "O SSO falhou. Se isto se repetir," +#~ " verifique a configuração do cookie " +#~ "de sessão e do proxy." -#: app/routes/admin.py:3939 -msgid "Invalid file type. Allowed types: PNG, JPG, JPEG, GIF, SVG, WEBP" -msgstr "" -"Tipo de ficheiro inválido. Tipos permitidos: PNG, JPG, JPEG, GIF, SVG, WEBP" +#~ msgid "" +#~ "Authentication failed: missing issuer or " +#~ "subject claim. Please check OIDC " +#~ "configuration." +#~ msgstr "" +#~ "A autenticação falhou: o emitente em " +#~ "falta ou a reivindicação do sujeito. " +#~ "Verifique a configuração do OIDC." -#: app/routes/admin.py:3963 -msgid "" -"Could not remove logo due to a database error. Please check server logs." -msgstr "" -"Não foi possível remover o logotipo devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "User account does not exist and self-registration is disabled." +#~ msgstr "A conta do usuário não existe e o auto-registro está desativado." -#: app/routes/admin.py:3965 -msgid "" -"Company logo removed successfully. Upload a new logo in the section below if" -" needed." -msgstr "" -"Logotipo da empresa removido com sucesso. Envie um novo logotipo na seção " -"abaixo, se necessário." +#~ msgid "Could not create your account due to a database error." +#~ msgstr "Não foi possível criar a sua conta devido a um erro na base de dados." -#: app/routes/admin.py:3967 -msgid "No logo to remove" -msgstr "Sem logotipo para remover" +#~ msgid "Unexpected error during SSO login. Please try again or contact support." +#~ msgstr "" +#~ "Erro inesperado durante o login do " +#~ "SSO. Por favor, tente novamente ou " +#~ "contacte o suporte." -#: app/routes/admin.py:4097 -msgid "Backup failed: archive not created" -msgstr "A cópia de segurança falhou: o pacote não foi criado" +#~ msgid "You do not have access to this project." +#~ msgstr "Você não tem acesso a este projeto." -#: app/routes/admin.py:4102 -#, python-format -msgid "Backup failed: %(error)s" -msgstr "" +#~ msgid "This project does not have a budget set." +#~ msgstr "Este projecto não tem um orçamento fixado." -#: app/routes/admin.py:4114 app/routes/admin.py:4135 -msgid "Invalid file type" -msgstr "Tipo de ficheiro inválido" +#~ msgid "Event created successfully" +#~ msgstr "Evento criado com sucesso" -#: app/routes/admin.py:4121 app/routes/admin.py:4146 -msgid "Backup file not found" -msgstr "Arquivo de backup não encontrado" +#~ msgid "Event updated successfully" +#~ msgstr "Evento actualizado com sucesso" -#: app/routes/admin.py:4144 -#, python-format -msgid "Backup \"%(filename)s\" deleted successfully" -msgstr "" +#~ msgid "You do not have permission to delete this event." +#~ msgstr "Você não tem permissão para excluir este evento." -#: app/routes/admin.py:4148 -#, python-format -msgid "Failed to delete backup: %(error)s" -msgstr "" +#~ msgid "Failed to delete event" +#~ msgstr "Falha ao apagar o evento" -#: app/routes/admin.py:4167 -msgid "Invalid file type. Please select a .zip backup archive." -msgstr "" -"Tipo de ficheiro inválido. Por favor, selecione um arquivo de backup .zip." +#~ msgid "Event deleted successfully" +#~ msgstr "Evento excluído com sucesso" -#: app/routes/admin.py:4171 -msgid "Backup file not found." -msgstr "Arquivo de backup não encontrado." +#~ msgid "Error deleting event: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4182 -msgid "Invalid file type. Please upload a .zip backup archive." -msgstr "" -"Tipo de ficheiro inválido. Por favor, carregue um arquivo de backup .zip." +#~ msgid "Event moved successfully" +#~ msgstr "Evento movido com sucesso" -#: app/routes/admin.py:4189 -msgid "No backup file provided" -msgstr "Nenhum arquivo de backup fornecido" +#~ msgid "Event resized successfully" +#~ msgstr "O evento foi redimensionado com sucesso" -#: app/routes/admin.py:4224 -msgid "Restore started. You can monitor progress on this page." -msgstr "A restauração começou. Você pode monitorar o progresso nesta página." +#~ msgid "You do not have permission to view this event." +#~ msgstr "Você não tem permissão para ver este evento." -#: app/routes/admin.py:4362 -msgid "OIDC is not enabled. Set AUTH_METHOD to \"oidc\", \"both\", or \"all\"." -msgstr "" -"O OIDC não está habilitado. Configura o METODO AUTH para \"oidc\", \"ambos\"" -" ou \"todos\"." +#~ msgid "You do not have permission to edit this event." +#~ msgstr "Você não tem permissão para editar este evento." -#: app/routes/admin.py:4367 -msgid "OIDC_ISSUER is not configured" -msgstr "OIDC ISSUER não está configurado" +#~ msgid "Clients module is disabled by the administrator." +#~ msgstr "O módulo de clientes é desativado pelo administrador." -#: app/routes/admin.py:4375 -#, python-format -msgid "✗ Failed to parse issuer URL: %(error)s" -msgstr "" +#~ msgid "Note content cannot be empty" +#~ msgstr "O conteúdo da nota não pode estar vazio" -#: app/routes/admin.py:4379 -msgid "Testing DNS resolution with multiple strategies..." -msgstr "Testando resolução DNS com múltiplas estratégias..." +#~ msgid "Note added successfully" +#~ msgstr "Nota adicionada com sucesso" -#: app/routes/admin.py:4402 -#, python-format -msgid "✓ DNS resolution successful using %(strategy)s strategy: %(ip)s" -msgstr "" +#~ msgid "Error adding note" +#~ msgstr "Erro ao adicionar a nota" -#: app/routes/admin.py:4407 -#, python-format -msgid "✗ DNS resolution failed using %(strategy)s strategy: %(error)s" -msgstr "" +#~ msgid "Error adding note: %(error)s" +#~ msgstr "Erro ao adicionar a nota: %(error)s" -#: app/routes/admin.py:4417 -msgid "" -"ℹ Docker environment detected - internal service names may be available" -msgstr "" -"ambiente i Docker detectado - nomes de serviços internos podem estar " -"disponíveis" +#~ msgid "Note does not belong to this client" +#~ msgstr "A nota não pertence a este cliente" -#: app/routes/admin.py:4441 -#, python-format -msgid "✓ Discovery document fetched successfully from %(url)s" -msgstr "文 Documento de descoberta obtido com sucesso de %(url)s" +#~ msgid "You do not have permission to edit this note" +#~ msgstr "Você não tem permissão para editar esta nota" -#: app/routes/admin.py:4446 -#, python-format -msgid "✓ DNS strategy used: %(strategy)s" -msgstr "" +#~ msgid "Error updating note" +#~ msgstr "Erro ao atualizar a nota" -#: app/routes/admin.py:4452 -#, python-format -msgid "✗ Failed to fetch discovery document: %(error)s" -msgstr "" +#~ msgid "Note updated successfully" +#~ msgstr "Nota atualizada com sucesso" -#: app/routes/admin.py:4457 -#, python-format -msgid "✗ Unexpected error: %(error)s" -msgstr "" +#~ msgid "Error updating note: %(error)s" +#~ msgstr "Erro ao atualizar a nota: %(error)s" -#: app/routes/admin.py:4463 -msgid "✗ Failed to retrieve discovery document" -msgstr "Não foi possível obter o documento de descoberta" +#~ msgid "You do not have permission to delete this note" +#~ msgstr "Você não tem permissão para excluir esta nota" -#: app/routes/admin.py:4470 -msgid "✓ OAuth client is registered in application" -msgstr "文 Cliente OAuth está registrado na aplicação" +#~ msgid "Error deleting note" +#~ msgstr "Erro ao apagar a nota" -#: app/routes/admin.py:4473 -msgid "✗ OAuth client is not registered" -msgstr "O cliente OAuth não está registado" +#~ msgid "Note deleted successfully" +#~ msgstr "Nota apagada com sucesso" -#: app/routes/admin.py:4476 -#, python-format -msgid "✗ Failed to create OAuth client: %(error)s" -msgstr "" +#~ msgid "Error deleting note: %(error)s" +#~ msgstr "" -#: app/routes/admin.py:4483 -#, python-format -msgid "✓ %(endpoint)s: %(url)s" -msgstr "" +#~ msgid "Access Denied" +#~ msgstr "Acesso Negado" -#: app/routes/admin.py:4485 -#, python-format -msgid "✗ Missing %(endpoint)s in discovery document" -msgstr "" +#~ msgid "403 Forbidden" +#~ msgstr "403 Proibido" -#: app/routes/admin.py:4492 -#, python-format -msgid "✓ Scope \"%(scope)s\" is supported by provider" -msgstr "‡ Escopo \"%(scope)s\" é suportado pelo provedor" +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. Client portal access may" +#~ " not be enabled for your account." +#~ msgstr "" +#~ "Você não tem permissão para acessar " +#~ "este recurso. O acesso ao portal " +#~ "do cliente pode não estar activo " +#~ "para a sua conta." -#: app/routes/admin.py:4498 -#, python-format -msgid "" -"⚠ Scope \"%(scope)s\" may not be supported by provider (supported: " -"%(supported)s)" -msgstr "" +#~ msgid "Your account may not have client portal access enabled" +#~ msgstr "Sua conta pode não ter acesso ao portal do cliente habilitado" -#: app/routes/admin.py:4506 -#, python-format -msgid "ℹ Provider supports claims: %(claims)s" -msgstr "" +#~ msgid "Your account may be inactive" +#~ msgstr "Sua conta pode ser inativa" -#: app/routes/admin.py:4519 -#, python-format -msgid "✓ Configured %(claim_type)s claim \"%(claim_name)s\" is supported" -msgstr "" +#~ msgid "You may not be assigned to a client" +#~ msgstr "Você não pode ser atribuído a um cliente" -#: app/routes/admin.py:4528 -#, python-format -msgid "" -"⚠ Configured %(claim_type)s claim \"%(claim_name)s\" not in supported claims" -" list (may still work)" -msgstr "" +#~ msgid "Page Not Found" +#~ msgstr "Página Não Encontrada" -#: app/routes/admin.py:4536 -msgid "OIDC configuration test completed" -msgstr "Teste de configuração do OIDC concluído" - -#: app/routes/admin.py:5334 app/routes/admin.py:5448 -#: app/routes/link_templates.py:42 app/routes/link_templates.py:98 -#: app/routes/quotes.py:1433 app/routes/quotes.py:1518 -#: app/routes/time_entry_templates.py:57 -#: app/routes/time_entry_templates.py:167 -msgid "Template name is required" -msgstr "O nome do modelo é obrigatório" - -#: app/routes/admin.py:5340 -#: app/templates/admin/email_templates/create.html:104 -#: app/templates/admin/email_templates/edit.html:121 -msgid "HTML template content is required" -msgstr "O conteúdo do modelo HTML é necessário" - -#: app/routes/admin.py:5348 app/routes/admin.py:5454 -msgid "A template with this name already exists" -msgstr "Já existe um modelo com este nome" - -#: app/routes/admin.py:5368 -msgid "Could not create email template due to a database error." -msgstr "" -"Não foi possível criar um modelo de e- mail devido a um erro na base de " -"dados." +#~ msgid "404 Not Found" +#~ msgstr "404 Não Encontrado" -#: app/routes/admin.py:5373 -msgid "Email template created successfully" -msgstr "Modelo de e- mail criado com sucesso" +#~ msgid "The page you're looking for doesn't exist or has been moved." +#~ msgstr "A página que procura não existe ou foi movida." -#: app/routes/admin.py:5470 -msgid "Could not update email template due to a database error." -msgstr "" -"Não foi possível atualizar o modelo de e- mail devido a um erro na base de " -"dados." +#~ msgid "Server Error" +#~ msgstr "Erro no Servidor" -#: app/routes/admin.py:5473 -msgid "Email template updated successfully" -msgstr "Modelo de e- mail actualizado com sucesso" +#~ msgid "500 Internal Server Error" +#~ msgstr "Erro do Servidor Interno de 500" -#: app/routes/admin.py:5491 -msgid "" -"Cannot delete template that is in use by invoices or recurring invoices" -msgstr "" -"Não é possível excluir o modelo em uso por faturas ou faturas recorrentes" +#~ msgid "" +#~ "An unexpected error occurred. Please try" +#~ " again later or contact support if" +#~ " the problem persists." +#~ msgstr "" +#~ "Ocorreu um erro inesperado. Tente " +#~ "novamente mais tarde ou contacte o " +#~ "suporte se o problema persistir." -#: app/routes/admin.py:5496 -msgid "Could not delete email template due to a database error." -msgstr "" -"Não foi possível apagar o modelo de e- mail devido a um erro na base de " -"dados." +#~ msgid "Client portal access is not enabled for your account." +#~ msgstr "O acesso ao portal do cliente não está habilitado para sua conta." -#: app/routes/admin.py:5498 -#, python-format -msgid "Email template \"%(name)s\" deleted successfully" -msgstr "" +#~ msgid "Your client account is inactive." +#~ msgstr "A sua conta de cliente está inactiva." -#: app/routes/api.py:1325 -msgid "Task name and project are required" -msgstr "Nome da tarefa e projeto são necessários" - -#: app/routes/api.py:1335 app/routes/tasks.py:438 -msgid "Selected project does not exist or is inactive" -msgstr "O projeto selecionado não existe ou está inativo" - -#: app/routes/api.py:1358 app/routes/invoices_refactored.py:222 -#: app/routes/invoices_refactored.py:261 -#: app/routes/projects_refactored_example.py:193 app/routes/tasks.py:273 -#: app/routes/timer.py:193 app/routes/timer_refactored.py:51 -#: app/routes/timer_refactored.py:127 -msgid "message" -msgstr "mensagem" - -#: app/routes/api.py:1394 -#, python-format -msgid "Task \"%(name)s\" created successfully" -msgstr "" +#~ msgid "Username and password are required." +#~ msgstr "Nome de usuário e senha são necessários." -#: app/routes/audit_logs.py:27 -msgid "Audit logs table does not exist. Please run: flask db upgrade" -msgstr "" -"A tabela de registros de auditoria não existe. Por favor, execute: flower db" -" upgrade" +#~ msgid "Invalid username or password." +#~ msgstr "Utilizador ou senha inválidos." -#: app/routes/auth.py:147 app/templates/auth/change_password.html:8 -msgid "You must change your password before continuing." -msgstr "Você deve alterar sua senha antes de continuar." +#~ msgid "Welcome, %(client_name)s!" +#~ msgstr "" -#: app/routes/auth.py:155 -msgid "Administrator accounts must enable two-factor authentication." -msgstr "" -"As contas de administrador devem ativar a autenticação de dois fatores." +#~ msgid "You have been logged out." +#~ msgstr "Você foi desconectado." -#: app/routes/auth.py:162 app/routes/auth.py:1505 -#, python-format -msgid "Welcome back, %(username)s!" -msgstr "" +#~ msgid "Invalid or missing password setup token." +#~ msgstr "Token de configuração de senha inválido ou ausente." -#: app/routes/auth.py:178 -msgid "Password reset is not available for this authentication method." -msgstr "" -"A redefinição de senha não está disponível para este método de autenticação." +#~ msgid "Invalid or expired password setup token. Please request a new one." +#~ msgstr "" +#~ "Token de configuração de senha inválido" +#~ " ou expirado. Por favor, peça um " +#~ "novo." -#: app/routes/auth.py:182 app/routes/auth.py:240 -msgid "Demo mode: password reset is disabled." -msgstr "Modo de demonstração: a redefinição da senha está desactivada." +#~ msgid "Password is required." +#~ msgstr "A senha é necessária." -#: app/routes/auth.py:189 -msgid "" -"If an account matches what you entered and email is configured, you'll " -"receive a reset link shortly." -msgstr "" -"Se uma conta corresponder ao que você inseriu e o e-mail estiver " -"configurado, você receberá um link de reset em breve." +#~ msgid "Could not set password due to a database error." +#~ msgstr "Não foi possível definir a senha devido a um erro na base de dados." -#: app/routes/auth.py:213 -msgid "Reset your TimeTracker password" -msgstr "Reinicie sua senha do TimeTracker" +#~ msgid "Password set successfully! You can now log in to the portal." +#~ msgstr "Senha definida com sucesso! Agora você pode entrar no portal." -#: app/routes/auth.py:214 -#, python-format -msgid "" -"A password reset was requested for your account.\n" -"\n" -"Use this link to set a new password:\n" -"%(url)s\n" -"\n" -"If you did not request this, you can ignore this email." -msgstr "" -"Foi solicitada uma redefinição de senha para a sua conta.\n" -"\n" -"Use este link para definir uma nova senha:\n" -"%(url)s\n" -"\n" -"Se você não solicitou isso, você pode ignorar este e-mail." - -#: app/routes/auth.py:246 -msgid "This reset link is invalid or has expired. Please request a new one." -msgstr "Este link de reset é inválido ou expirou. Por favor, peça um novo." - -#: app/routes/auth.py:250 -msgid "Password reset is not available for this account." -msgstr "A redefinição de senha não está disponível para esta conta." - -#: app/routes/auth.py:270 -msgid "Your password has been updated. You can now sign in." -msgstr "Sua senha foi atualizada. Agora pode assinar." - -#: app/routes/auth.py:274 -msgid "Could not reset password due to a database error." -msgstr "Não foi possível repor a senha devido a um erro na base de dados." - -#: app/routes/auth.py:336 -msgid "Invalid username format" -msgstr "Formato de utilizador inválido" - -#: app/routes/auth.py:349 -msgid "" -"Only the demo account can be used. Please use the credentials shown below." -msgstr "" -"Somente a conta demo pode ser usada. Por favor, use as credenciais mostradas" -" abaixo." +#~ msgid "Unable to load client portal data." +#~ msgstr "Não foi possível carregar dados do portal do cliente." -#: app/routes/auth.py:357 app/routes/auth.py:465 app/routes/auth.py:483 -#: app/routes/kiosk.py:132 -msgid "Password is required" -msgstr "A senha é necessária" +#~ msgid "widget_ids must be a list" +#~ msgstr "widget ids deve ser uma lista" -#: app/routes/auth.py:363 app/routes/auth.py:439 app/routes/auth.py:471 -#: app/routes/auth.py:496 app/routes/kiosk.py:123 app/routes/kiosk.py:136 -msgid "Invalid username or password" -msgstr "Utilizador ou senha inválidos" +#~ msgid "Invalid widget id(s): %(ids)s" +#~ msgstr "" -#: app/routes/auth.py:391 -msgid "Password is required to create an account." -msgstr "A senha é necessária para criar uma conta." +#~ msgid "widget_order must be a list" +#~ msgstr "widget ordem deve ser uma lista" -#: app/routes/auth.py:425 -msgid "" -"Could not create your account due to a database error. Please try again " -"later." -msgstr "" -"Não foi possível criar a sua conta devido a um erro na base de dados. Por " -"favor, tente mais tarde." +#~ msgid "Invalid widget id(s) in order: %(ids)s" +#~ msgstr "" -#: app/routes/auth.py:435 app/routes/auth.py:1387 -msgid "Welcome! Your account has been created." -msgstr "Bem-vindos! Sua conta foi criada." +#~ msgid "Invoice not found." +#~ msgstr "Fatura não encontrada." -#: app/routes/auth.py:441 -msgid "User not found. Please contact an administrator." -msgstr "Usuário não encontrado. Por favor contacte um administrador." +#~ msgid "Quote not found." +#~ msgstr "Citação não encontrada." -#: app/routes/auth.py:449 -msgid "Could not update your account role due to a database error." -msgstr "" -"Não foi possível atualizar a função da sua conta devido a um erro na base de" -" dados." +#~ msgid "Issue reporting is not available." +#~ msgstr "O relatório de emissões não está disponível." -#: app/routes/auth.py:455 app/routes/auth.py:1434 -msgid "Account is disabled. Please contact an administrator." -msgstr "A conta está desactivada. Por favor contacte um administrador." +#~ msgid "Title is required." +#~ msgstr "O título é obrigatório." -#: app/routes/auth.py:506 -msgid "" -"No password is set for your account. Please enter a password to set one and " -"log in." -msgstr "" -"Nenhuma senha está definida para sua conta. Digite uma senha para definir um" -" e faça login." +#~ msgid "Invalid project selected." +#~ msgstr "Projecto inválido seleccionado." -#: app/routes/auth.py:525 -msgid "Could not set password due to a database error. Please try again." -msgstr "" -"Não foi possível definir a senha devido a um erro na base de dados. Por " -"favor, tente novamente." +#~ msgid "Could not create issue due to a database error." +#~ msgstr "Não foi possível criar o problema devido a um erro na base de dados." -#: app/routes/auth.py:528 -msgid "Password has been set. You are now logged in." -msgstr "A senha foi definida. Você está agora logado." +#~ msgid "Issue reported successfully. We will review it shortly." +#~ msgstr "Problema relatado com sucesso. Vamos revê-lo em breve." -#: app/routes/auth.py:537 -msgid "Unexpected error during login. Please try again or check server logs." -msgstr "" -"Erro inesperado durante o login. Por favor, tente novamente ou verifique os " -"registros do servidor." +#~ msgid "Issue not found." +#~ msgstr "Problema não encontrado." -#: app/routes/auth.py:551 app/routes/auth.py:558 -msgid "Your login session expired. Please sign in again." -msgstr "Sua sessão de login expirou. Por favor, assine novamente." +#~ msgid "Approval not found." +#~ msgstr "Aprovação não encontrada." -#: app/routes/auth.py:572 app/routes/auth.py:616 app/routes/auth.py:644 -msgid "Invalid authentication code." -msgstr "Código de autenticação inválido." +#~ msgid "No contact found for approval." +#~ msgstr "Nenhum contacto encontrado para aprovação." -#: app/routes/auth.py:625 -msgid "Two-factor authentication enabled." -msgstr "A autenticação de dois fatores habilitada." +#~ msgid "Time entry approved successfully." +#~ msgstr "Entrada no tempo aprovada com sucesso." -#: app/routes/auth.py:628 -msgid "Could not enable two-factor authentication due to a database error." -msgstr "" -"Não foi possível habilitar a autenticação de dois fatores devido a um erro " -"na base de dados." +#~ msgid "Error approving time entry: %(error)s" +#~ msgstr "Erro ao aprovar o registro de hora: %(error)s" -#: app/routes/auth.py:654 -msgid "Two-factor authentication disabled." -msgstr "Autenticação de dois fatores desabilitada." +#~ msgid "Rejection reason is required." +#~ msgstr "É necessária razão de rejeição." -#: app/routes/auth.py:657 -msgid "Could not disable two-factor authentication due to a database error." -msgstr "" -"Não foi possível desativar a autenticação de dois fatores devido a um erro " -"na base de dados." +#~ msgid "Time entry rejected." +#~ msgstr "Rejeitada a data de entrada." -#: app/routes/auth.py:727 -#, python-format -msgid "Goodbye, %(username)s!" -msgstr "" +#~ msgid "Error rejecting time entry: %(error)s" +#~ msgstr "Erro ao rejeitar a entrada de tempo: %(error)s" -#: app/routes/auth.py:815 -msgid "Invalid avatar file type. Allowed: PNG, JPG, JPEG, GIF, WEBP" -msgstr "" -"Tipo de ficheiro avatar inválido. Permitido: PNG, JPG, JPEG, GIF, WEBP" +#~ msgid "This quote cannot be accepted." +#~ msgstr "Esta citação não pode ser aceite." -#: app/routes/auth.py:840 -msgid "Failed to save avatar on server." -msgstr "Falha ao salvar o avatar no servidor." +#~ msgid "Quote accepted successfully. We will contact you shortly." +#~ msgstr "Citação aceita com sucesso. Entraremos em contacto consigo em breve." -#: app/routes/auth.py:859 -msgid "Profile updated successfully" -msgstr "Perfil actualizado com sucesso" +#~ msgid "This quote cannot be rejected." +#~ msgstr "Esta citação não pode ser rejeitada." -#: app/routes/auth.py:862 -msgid "Could not update your profile due to a database error." -msgstr "" -"Não foi possível atualizar seu perfil devido a um erro na base de dados." +#~ msgid "Quote rejected. We appreciate your feedback." +#~ msgstr "Quota rejeitada. Agradecemos o seu feedback." -#: app/routes/auth.py:873 -msgid "Password cannot be changed here for your account." -msgstr "A senha não pode ser alterada aqui para a sua conta." +#~ msgid "This invoice is already paid." +#~ msgstr "Esta factura já está paga." -#: app/routes/auth.py:883 -msgid "New password is required" -msgstr "Nova senha é necessária" +#~ msgid "" +#~ "Online payment is not currently " +#~ "available. Please contact us for payment" +#~ " instructions." +#~ msgstr "" +#~ "O pagamento online não está disponível" +#~ " atualmente. Entre em contato conosco " +#~ "para instruções de pagamento." -#: app/routes/auth.py:897 -msgid "Current password is required" -msgstr "É necessária a senha actual" +#~ msgid "Payment gateway not yet supported." +#~ msgstr "Gateway de pagamento ainda não suportado." -#: app/routes/auth.py:901 -msgid "Current password is incorrect" -msgstr "A senha atual está incorreta" +#~ msgid "Project not found." +#~ msgstr "Projecto não encontrado." -#: app/routes/auth.py:911 -msgid "Password changed successfully. You can now continue." -msgstr "A senha foi alterada com sucesso. Agora pode continuar." +#~ msgid "Comment cannot be empty." +#~ msgstr "O comentário não pode estar vazio." -#: app/routes/auth.py:915 -msgid "Could not update password due to a database error." -msgstr "Não foi possível atualizar a senha devido a um erro na base de dados." +#~ msgid "No contact found for commenting." +#~ msgstr "Nenhum contacto encontrado para comentar." -#: app/routes/auth.py:938 -msgid "Avatar removed" -msgstr "Avatar removido" +#~ msgid "Comment added successfully." +#~ msgstr "Comentário adicionado com sucesso." -#: app/routes/auth.py:941 -msgid "Failed to remove avatar." -msgstr "Não foi possível remover o avatar." +#~ msgid "Marked %(count)d notifications as read." +#~ msgstr "" -#: app/routes/auth.py:981 app/routes/auth.py:1339 -msgid "" -"Demo mode: only the demo account can be used. Please use the credentials on " -"the login page." -msgstr "" -"Modo de demonstração: somente a conta de demonstração pode ser usada. Use as" -" credenciais na página de login." +#~ msgid "Attachment not found or access denied." +#~ msgstr "Anexo não encontrado ou acesso negado." -#: app/routes/auth.py:1052 -#, python-format -msgid "" -"Failed to connect to Single Sign-On provider. Please contact an " -"administrator. Error: %(error)s" -msgstr "" +#~ msgid "Unable to load report data." +#~ msgstr "Não foi possível carregar os dados do relatório." -#: app/routes/auth.py:1061 -#, python-format -msgid "" -"Cannot connect to Single Sign-On provider. DNS resolution may be failing. " -"Please contact an administrator. Error: %(error)s" -msgstr "" +#~ msgid "Client Report" +#~ msgstr "Relatório do Cliente" -#: app/routes/auth.py:1070 app/routes/auth.py:1111 -msgid "Single Sign-On is not configured yet. Please contact an administrator." -msgstr "" -"O Single Sign-On ainda não está configurado. Por favor contacte um " -"administrador." +#~ msgid "Last %(days)s days" +#~ msgstr "" -#: app/routes/auth.py:1131 -msgid "Single Sign-On is not configured." -msgstr "Single Sign-On não está configurado." +#~ msgid "Summary" +#~ msgstr "Resumo" -#: app/routes/auth.py:1156 -msgid "" -"SSO failed: encrypted or unsupported ID tokens. Disable ID token encryption " -"on your provider (e.g. in Authentik, leave the Encryption Key empty)." -msgstr "" -"O SSO falhou: símbolos de ID criptografados ou não suportados. Desativar a " -"criptografia do token de ID no seu provedor (por exemplo, em Authentik, " -"deixe a Chave de Encriptação vazia)." +#~ msgid "Total Hours" +#~ msgstr "Total de Horas" -#: app/routes/auth.py:1169 -msgid "" -"SSO failed. If this repeats, check session cookie and proxy configuration." -msgstr "" -"O SSO falhou. Se isto se repetir, verifique a configuração do cookie de " -"sessão e do proxy." +#~ msgid "Total Invoiced" +#~ msgstr "Total facturado" -#: app/routes/auth.py:1312 -msgid "" -"Authentication failed: missing issuer or subject claim. Please check OIDC " -"configuration." -msgstr "" -"A autenticação falhou: o emitente em falta ou a reivindicação do sujeito. " -"Verifique a configuração do OIDC." +#~ msgid "Paid" +#~ msgstr "Pago" -#: app/routes/auth.py:1347 -msgid "User account does not exist and self-registration is disabled." -msgstr "A conta do usuário não existe e o auto-registro está desativado." +#~ msgid "Outstanding" +#~ msgstr "Notável" -#: app/routes/auth.py:1391 -msgid "Could not create your account due to a database error." -msgstr "Não foi possível criar a sua conta devido a um erro na base de dados." +#~ msgid "Hours by Project" +#~ msgstr "Horas por Projeto" -#: app/routes/auth.py:1511 -msgid "" -"Unexpected error during SSO login. Please try again or contact support." -msgstr "" -"Erro inesperado durante o login do SSO. Por favor, tente novamente ou " -"contacte o suporte." +#~ msgid "Project" +#~ msgstr "Projeto" -#: app/routes/budget_alerts.py:332 -msgid "You do not have access to this project." -msgstr "Você não tem acesso a este projeto." +#~ msgid "Hours" +#~ msgstr "Horas" -#: app/routes/budget_alerts.py:339 -msgid "This project does not have a budget set." -msgstr "Este projecto não tem um orçamento fixado." +#~ msgid "Billable Hours" +#~ msgstr "Horas Billáveis" -#: app/routes/calendar.py:217 -msgid "Event created successfully" -msgstr "Evento criado com sucesso" +#~ msgid "Time by Date" +#~ msgstr "Hora por Data" -#: app/routes/calendar.py:298 -msgid "Event updated successfully" -msgstr "Evento actualizado com sucesso" +#~ msgid "Date" +#~ msgstr "Data" -#: app/routes/calendar.py:316 -msgid "You do not have permission to delete this event." -msgstr "Você não tem permissão para excluir este evento." +#~ msgid "Access denied" +#~ msgstr "Acesso negado" -#: app/routes/calendar.py:324 -msgid "Failed to delete event" -msgstr "Falha ao apagar o evento" +#~ msgid "File too large. Maximum 5MB." +#~ msgstr "Um arquivo muito grande. Máximo 5MB." -#: app/routes/calendar.py:329 app/routes/calendar.py:332 -msgid "Event deleted successfully" -msgstr "Evento excluído com sucesso" +#~ msgid "Portal customization updated successfully" +#~ msgstr "Personalização do portal atualizada com sucesso" -#: app/routes/calendar.py:337 -#, python-format -msgid "Error deleting event: %(error)s" -msgstr "" +#~ msgid "Search query is too long. Maximum 200 characters." +#~ msgstr "A pesquisa é muito longa. Máximo 200 caracteres." -#: app/routes/calendar.py:364 -msgid "Event moved successfully" -msgstr "Evento movido com sucesso" - -#: app/routes/calendar.py:398 -msgid "Event resized successfully" -msgstr "O evento foi redimensionado com sucesso" - -#: app/routes/calendar.py:415 -msgid "You do not have permission to view this event." -msgstr "Você não tem permissão para ver este evento." - -#: app/routes/calendar.py:466 -msgid "You do not have permission to edit this event." -msgstr "Você não tem permissão para editar este evento." - -#: app/routes/client_notes.py:23 app/routes/clients.py:67 -#: app/routes/clients.py:71 -msgid "Clients module is disabled by the administrator." -msgstr "O módulo de clientes é desativado pelo administrador." - -#: app/routes/client_notes.py:40 app/routes/client_notes.py:86 -msgid "Note content cannot be empty" -msgstr "O conteúdo da nota não pode estar vazio" - -#: app/routes/client_notes.py:51 -msgid "Note added successfully" -msgstr "Nota adicionada com sucesso" - -#: app/routes/client_notes.py:53 -msgid "Error adding note" -msgstr "Erro ao adicionar a nota" - -#: app/routes/client_notes.py:56 app/routes/client_notes.py:58 -#, python-format -msgid "Error adding note: %(error)s" -msgstr "Erro ao adicionar a nota: %(error)s" - -#: app/routes/client_notes.py:72 app/routes/client_notes.py:118 -msgid "Note does not belong to this client" -msgstr "A nota não pertence a este cliente" - -#: app/routes/client_notes.py:77 -msgid "You do not have permission to edit this note" -msgstr "Você não tem permissão para editar esta nota" - -#: app/routes/client_notes.py:92 app/templates/clients/view.html:565 -#: app/templates/clients/view.html:570 -msgid "Error updating note" -msgstr "Erro ao atualizar a nota" - -#: app/routes/client_notes.py:99 -msgid "Note updated successfully" -msgstr "Nota atualizada com sucesso" - -#: app/routes/client_notes.py:103 app/routes/client_notes.py:105 -#, python-format -msgid "Error updating note: %(error)s" -msgstr "Erro ao atualizar a nota: %(error)s" - -#: app/routes/client_notes.py:123 -msgid "You do not have permission to delete this note" -msgstr "Você não tem permissão para excluir esta nota" - -#: app/routes/client_notes.py:132 -msgid "Error deleting note" -msgstr "Erro ao apagar a nota" - -#: app/routes/client_notes.py:139 -msgid "Note deleted successfully" -msgstr "Nota apagada com sucesso" - -#: app/routes/client_notes.py:142 -#, python-format -msgid "Error deleting note: %(error)s" -msgstr "" +#~ msgid "You do not have permission to create clients" +#~ msgstr "Você não tem permissão para criar clientes" -#: app/routes/client_portal.py:64 app/routes/client_portal.py:71 -#: app/routes/client_portal.py:200 app/routes/client_portal.py:228 -#: app/routes/client_portal.py:237 app/routes/client_portal.py:241 -#: app/routes/client_portal.py:266 -msgid "Please log in to access the client portal." -msgstr "Faça login para acessar o portal do cliente." +#~ msgid "Client name is required" +#~ msgstr "O nome do cliente é obrigatório" -#: app/routes/client_portal.py:79 app/templates/errors/403.html:13 -msgid "Access Denied" -msgstr "Acesso Negado" +#~ msgid "A client with this name already exists" +#~ msgstr "Já existe um cliente com este nome" -#: app/routes/client_portal.py:80 app/templates/errors/403.html:3 -msgid "403 Forbidden" -msgstr "403 Proibido" +#~ msgid "Invalid email address" +#~ msgstr "Endereço de e- mail inválido" -#: app/routes/client_portal.py:81 -msgid "" -"You don't have permission to access this resource. Client portal access may " -"not be enabled for your account." -msgstr "" -"Você não tem permissão para acessar este recurso. O acesso ao portal do " -"cliente pode não estar activo para a sua conta." +#~ msgid "Invalid hourly rate format" +#~ msgstr "Formato de taxa horária inválido" -#: app/routes/client_portal.py:85 -msgid "Your account may not have client portal access enabled" -msgstr "Sua conta pode não ter acesso ao portal do cliente habilitado" +#~ msgid "Prepaid hours must be a positive number." +#~ msgstr "O horário pré-pago deve ser um número positivo." -#: app/routes/client_portal.py:86 -msgid "Your account may be inactive" -msgstr "Sua conta pode ser inativa" +#~ msgid "Prepaid reset day must be between 1 and 28." +#~ msgstr "O dia de reset pré-pago deve estar entre 1 e 28." -#: app/routes/client_portal.py:87 -msgid "You may not be assigned to a client" -msgstr "Você não pode ser atribuído a um cliente" +#~ msgid "Custom field '%(field)s' is required" +#~ msgstr "" -#: app/routes/client_portal.py:105 app/templates/errors/404.html:3 -#: app/templates/errors/404.html:14 -msgid "Page Not Found" -msgstr "Página Não Encontrada" +#~ msgid "" +#~ "Could not create client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível criar o cliente " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/client_portal.py:106 -msgid "404 Not Found" -msgstr "404 Não Encontrado" +#~ msgid "You do not have access to this client." +#~ msgstr "Você não tem acesso a este cliente." -#: app/routes/client_portal.py:107 app/templates/errors/404.html:17 -msgid "The page you're looking for doesn't exist or has been moved." -msgstr "A página que procura não existe ou foi movida." +#~ msgid "You do not have permission to edit clients" +#~ msgstr "Você não tem permissão para editar clientes" -#: app/routes/client_portal.py:125 app/templates/errors/500.html:3 -#: app/templates/errors/500.html:14 -msgid "Server Error" -msgstr "Erro no Servidor" +#~ msgid "Portal username is required when enabling portal access." +#~ msgstr "" +#~ "O nome de usuário do portal é " +#~ "necessário para permitir o acesso ao " +#~ "portal." + +#~ msgid "This portal username is already in use by another client." +#~ msgstr "Este nome de utilizador do portal já está em uso por outro cliente." + +#~ msgid "" +#~ "Could not update client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar o cliente " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "You do not have permission to send portal emails" +#~ msgstr "Você não tem permissão para enviar e-mails do portal" + +#~ msgid "Client portal is not enabled for this client." +#~ msgstr "O portal do cliente não está habilitado para este cliente." + +#~ msgid "Portal username is not set for this client." +#~ msgstr "O nome de usuário do portal não está definido para este cliente." + +#~ msgid "Client email address is not set. Cannot send password setup email." +#~ msgstr "" +#~ "O endereço de e- mail do cliente" +#~ " não está definido. Não é possível" +#~ " enviar o e- mail de configuração " +#~ "da senha." + +#~ msgid "Could not generate password setup token due to a database error." +#~ msgstr "" +#~ "Não foi possível gerar o token de" +#~ " configuração de senha devido a um" +#~ " erro no banco de dados." + +#~ msgid "Password setup email sent successfully to %(email)s" +#~ msgstr "Email de configuração de senha enviado com sucesso para %(email)s" + +#~ msgid "" +#~ "Email server is not configured. Please" +#~ " configure email settings in Admin →" +#~ " Email Configuration or set MAIL_SERVER " +#~ "environment variable." +#~ msgstr "" +#~ "O servidor de e- mail não está " +#~ "configurado. Por favor, configure " +#~ "configurações de e-mail no Admin → " +#~ "Configuração de e-mail ou definir " +#~ "variável de ambiente MAIL SERVER." + +#~ msgid "" +#~ "Failed to send password setup email. " +#~ "Please check email configuration and " +#~ "server logs for details." +#~ msgstr "" +#~ "Não foi possível enviar o email de" +#~ " configuração da senha. Verifique por " +#~ "favor a configuração do email e os" +#~ " registros do servidor para detalhes." + +#~ msgid "An error occurred while sending the email: %(error)s" +#~ msgstr "" + +#~ msgid "You do not have permission to archive clients" +#~ msgstr "Você não tem permissão para arquivar clientes" + +#~ msgid "Client is already inactive" +#~ msgstr "O cliente já está inactivo" + +#~ msgid "You do not have permission to activate clients" +#~ msgstr "Você não tem permissão para ativar clientes" + +#~ msgid "Client is already active" +#~ msgstr "O cliente já está activo" + +#~ msgid "You do not have permission to delete clients" +#~ msgstr "Você não tem permissão para excluir clientes" + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "projects. Please delete all projects " +#~ "first." +#~ msgstr "" +#~ "Não é possível excluir cliente com " +#~ "projetos existentes. Por favor, apague " +#~ "todos os projetos primeiro." + +#~ msgid "" +#~ "Cannot delete client with existing " +#~ "invoices. Please delete all invoices " +#~ "first before deleting the client." +#~ msgstr "" +#~ "Não é possível excluir o cliente " +#~ "com as faturas existentes. Por favor," +#~ " apague todas as faturas primeiro " +#~ "antes de excluir o cliente." + +#~ msgid "" +#~ "Could not delete client due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar o cliente " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "No clients selected for deletion" +#~ msgstr "Nenhum cliente selecionado para exclusão" + +#~ msgid "" +#~ "Could not delete clients due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível excluir clientes devido" +#~ " a um erro na base de dados." +#~ " Por favor, verifique os registos do" +#~ " servidor." + +#~ msgid "No clients were deleted" +#~ msgstr "Nenhum cliente foi excluído" + +#~ msgid "You do not have permission to change client status" +#~ msgstr "Você não tem permissão para alterar o status do cliente" + +#~ msgid "No clients selected" +#~ msgstr "Nenhum cliente selecionado" + +#~ msgid "Invalid status" +#~ msgstr "Estado inválido" + +#~ msgid "" +#~ "Could not update client status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Não foi possível atualizar o status " +#~ "do cliente devido a um erro na " +#~ "base de dados. Por favor, verifique " +#~ "os registos do servidor." + +#~ msgid "No clients were updated" +#~ msgstr "Nenhum cliente foi atualizado" + +#~ msgid "No file provided" +#~ msgstr "Nenhum arquivo fornecido" + +#~ msgid "File type not allowed" +#~ msgstr "Tipo de arquivo não permitido" + +#~ msgid "File size exceeds maximum allowed size (10 MB)" +#~ msgstr "O tamanho do arquivo excede o tamanho máximo permitido (10 MB)" + +#~ msgid "" +#~ "Could not upload attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Não foi possível enviar o anexo " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "" +#~ "The attachments feature requires a " +#~ "database migration. Please run: flask db" +#~ " upgrade" +#~ msgstr "" +#~ "O recurso anexos requer uma migração " +#~ "de banco de dados. Por favor, " +#~ "execute: flower db upgrade" + +#~ msgid "Attachment uploaded successfully" +#~ msgstr "O anexo foi carregado com sucesso" + +#~ msgid "File not found" +#~ msgstr "Ficheiro não encontrado" + +#~ msgid "" +#~ "Could not delete attachment due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Não foi possível apagar o anexo " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/client_portal.py:126 -msgid "500 Internal Server Error" -msgstr "Erro do Servidor Interno de 500" +#~ msgid "Attachment deleted successfully" +#~ msgstr "O anexo foi apagado com sucesso" -#: app/routes/client_portal.py:127 -msgid "" -"An unexpected error occurred. Please try again later or contact support if " -"the problem persists." -msgstr "" -"Ocorreu um erro inesperado. Tente novamente mais tarde ou contacte o suporte" -" se o problema persistir." +#~ msgid "Comment content cannot be empty" +#~ msgstr "O conteúdo do comentário não pode estar vazio" -#: app/routes/client_portal.py:204 -msgid "Client portal access is not enabled for your account." -msgstr "O acesso ao portal do cliente não está habilitado para sua conta." +#~ msgid "Comment must be associated with a project, task, or quote" +#~ msgstr "O comentário deve ser associado a um projeto, tarefa ou citação" -#: app/routes/client_portal.py:209 -msgid "Your client account is inactive." -msgstr "A sua conta de cliente está inactiva." +#~ msgid "Comment cannot be associated with multiple targets" +#~ msgstr "O comentário não pode ser associado a múltiplos alvos" -#: app/routes/client_portal.py:329 -msgid "Username and password are required." -msgstr "Nome de usuário e senha são necessários." +#~ msgid "Invalid parent comment" +#~ msgstr "Comentário pai inválido" -#: app/routes/client_portal.py:336 -msgid "Invalid username or password." -msgstr "Utilizador ou senha inválidos." +#~ msgid "Comment added successfully" +#~ msgstr "Comentário adicionado com sucesso" -#: app/routes/client_portal.py:343 -#, python-format -msgid "Welcome, %(client_name)s!" -msgstr "" +#~ msgid "Error adding comment" +#~ msgstr "Erro ao adicionar o comentário" -#: app/routes/client_portal.py:357 -msgid "You have been logged out." -msgstr "Você foi desconectado." +#~ msgid "Error adding comment: %(error)s" +#~ msgstr "Erro ao adicionar o comentário: %(error)s" -#: app/routes/client_portal.py:367 -msgid "Invalid or missing password setup token." -msgstr "Token de configuração de senha inválido ou ausente." +#~ msgid "You do not have permission to edit this comment" +#~ msgstr "Você não tem permissão para editar este comentário" -#: app/routes/client_portal.py:374 -msgid "Invalid or expired password setup token. Please request a new one." -msgstr "" -"Token de configuração de senha inválido ou expirado. Por favor, peça um " -"novo." +#~ msgid "Comment updated successfully" +#~ msgstr "Comentário actualizado com sucesso" -#: app/routes/client_portal.py:383 app/routes/integrations.py:563 -msgid "Password is required." -msgstr "A senha é necessária." +#~ msgid "Error updating comment: %(error)s" +#~ msgstr "Erro ao atualizar o comentário: %(error)s" -#: app/routes/client_portal.py:399 -msgid "Could not set password due to a database error." -msgstr "Não foi possível definir a senha devido a um erro na base de dados." +#~ msgid "You do not have permission to delete this comment" +#~ msgstr "Você não tem permissão para excluir este comentário" -#: app/routes/client_portal.py:402 -msgid "Password set successfully! You can now log in to the portal." -msgstr "Senha definida com sucesso! Agora você pode entrar no portal." +#~ msgid "Comment deleted successfully" +#~ msgstr "Comentário apagado com sucesso" -#: app/routes/client_portal.py:428 app/routes/client_portal.py:564 -#: app/routes/client_portal.py:590 app/routes/client_portal.py:669 -msgid "Unable to load client portal data." -msgstr "Não foi possível carregar dados do portal do cliente." +#~ msgid "Error deleting comment: %(error)s" +#~ msgstr "Erro ao remover o comentário: %(error)s" -#: app/routes/client_portal.py:525 -msgid "widget_ids must be a list" -msgstr "widget ids deve ser uma lista" +#~ msgid "You do not have permission to add attachments to this comment" +#~ msgstr "Você não tem permissão para adicionar anexos a este comentário" -#: app/routes/client_portal.py:528 -#, python-format -msgid "Invalid widget id(s): %(ids)s" -msgstr "" +#~ msgid "Error uploading attachment: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:530 -msgid "widget_order must be a list" -msgstr "widget ordem deve ser uma lista" +#~ msgid "You do not have permission to delete this attachment" +#~ msgstr "Você não tem permissão para excluir este anexo" -#: app/routes/client_portal.py:534 -#, python-format -msgid "Invalid widget id(s) in order: %(ids)s" -msgstr "" +#~ msgid "Error deleting attachment" +#~ msgstr "Erro ao remover o anexo" -#: app/routes/client_portal.py:620 app/routes/client_portal.py:1114 -msgid "Invoice not found." -msgstr "Fatura não encontrada." - -#: app/routes/client_portal.py:653 app/routes/client_portal.py:1018 -#: app/routes/client_portal.py:1063 -msgid "Quote not found." -msgstr "Citação não encontrada." - -#: app/routes/client_portal.py:718 app/routes/client_portal.py:752 -#: app/routes/client_portal.py:844 -msgid "Issue reporting is not available." -msgstr "O relatório de emissões não está disponível." - -#: app/routes/client_portal.py:769 app/routes/issues.py:189 -#: app/routes/issues.py:338 -msgid "Title is required." -msgstr "O título é obrigatório." - -#: app/routes/client_portal.py:786 app/routes/integrations.py:1096 -#: app/routes/integrations.py:1234 app/routes/issues.py:200 -msgid "Invalid project selected." -msgstr "Projecto inválido seleccionado." - -#: app/routes/client_portal.py:815 app/routes/issues.py:218 -msgid "Could not create issue due to a database error." -msgstr "Não foi possível criar o problema devido a um erro na base de dados." - -#: app/routes/client_portal.py:828 -msgid "Issue reported successfully. We will review it shortly." -msgstr "Problema relatado com sucesso. Vamos revê-lo em breve." - -#: app/routes/client_portal.py:850 -msgid "Issue not found." -msgstr "Problema não encontrado." - -#: app/routes/client_portal.py:916 app/routes/client_portal.py:936 -#: app/routes/client_portal.py:976 app/routes/invoice_approvals.py:124 -msgid "Approval not found." -msgstr "Aprovação não encontrada." - -#: app/routes/client_portal.py:946 app/routes/client_portal.py:991 -msgid "No contact found for approval." -msgstr "Nenhum contacto encontrado para aprovação." - -#: app/routes/client_portal.py:955 -msgid "Time entry approved successfully." -msgstr "Entrada no tempo aprovada com sucesso." - -#: app/routes/client_portal.py:957 -#, python-format -msgid "Error approving time entry: %(error)s" -msgstr "Erro ao aprovar o registro de hora: %(error)s" - -#: app/routes/client_portal.py:981 -msgid "Rejection reason is required." -msgstr "É necessária razão de rejeição." - -#: app/routes/client_portal.py:998 -msgid "Time entry rejected." -msgstr "Rejeitada a data de entrada." - -#: app/routes/client_portal.py:1000 -#, python-format -msgid "Error rejecting time entry: %(error)s" -msgstr "Erro ao rejeitar a entrada de tempo: %(error)s" - -#: app/routes/client_portal.py:1022 -msgid "This quote cannot be accepted." -msgstr "Esta citação não pode ser aceite." - -#: app/routes/client_portal.py:1049 -msgid "Quote accepted successfully. We will contact you shortly." -msgstr "Citação aceita com sucesso. Entraremos em contacto consigo em breve." - -#: app/routes/client_portal.py:1067 -msgid "This quote cannot be rejected." -msgstr "Esta citação não pode ser rejeitada." - -#: app/routes/client_portal.py:1097 -msgid "Quote rejected. We appreciate your feedback." -msgstr "Quota rejeitada. Agradecemos o seu feedback." - -#: app/routes/client_portal.py:1119 -msgid "This invoice is already paid." -msgstr "Esta factura já está paga." - -#: app/routes/client_portal.py:1127 -msgid "" -"Online payment is not currently available. Please contact us for payment " -"instructions." -msgstr "" -"O pagamento online não está disponível atualmente. Entre em contato conosco " -"para instruções de pagamento." +#~ msgid "Error deleting attachment: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:1134 app/routes/payment_gateways.py:122 -msgid "Payment gateway not yet supported." -msgstr "Gateway de pagamento ainda não suportado." +#~ msgid "Contact created successfully" +#~ msgstr "Contacto criado com sucesso" -#: app/routes/client_portal.py:1151 -msgid "Project not found." -msgstr "Projecto não encontrado." +#~ msgid "Error creating contact: %(error)s" +#~ msgstr "Erro ao criar contato: %(error)s" -#: app/routes/client_portal.py:1157 -msgid "Comment cannot be empty." -msgstr "O comentário não pode estar vazio." +#~ msgid "Contact updated successfully" +#~ msgstr "Contacto actualizado com sucesso" -#: app/routes/client_portal.py:1167 -msgid "No contact found for commenting." -msgstr "Nenhum contacto encontrado para comentar." +#~ msgid "Error updating contact: %(error)s" +#~ msgstr "Erro ao atualizar o contato: %(error)s" -#: app/routes/client_portal.py:1180 -msgid "Comment added successfully." -msgstr "Comentário adicionado com sucesso." +#~ msgid "Contact deleted successfully" +#~ msgstr "Contacto apagado com sucesso" -#: app/routes/client_portal.py:1259 -#, python-format -msgid "Marked %(count)d notifications as read." -msgstr "" +#~ msgid "Error deleting contact: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:1357 -msgid "Attachment not found or access denied." -msgstr "Anexo não encontrado ou acesso negado." +#~ msgid "Contact set as primary" +#~ msgstr "Contato definido como primário" -#: app/routes/client_portal.py:1382 -msgid "Unable to load report data." -msgstr "Não foi possível carregar os dados do relatório." +#~ msgid "Error setting primary contact: %(error)s" +#~ msgstr "" -#: app/routes/client_portal.py:1415 -msgid "Client Report" -msgstr "Relatório do Cliente" +#~ msgid "Communication recorded successfully" +#~ msgstr "Comunicação gravada com sucesso" -#: app/routes/client_portal.py:1415 -#: app/templates/client_portal/reports.html:15 -#, python-format -msgid "Last %(days)s days" -msgstr "" +#~ msgid "Error recording communication: %(error)s" +#~ msgstr "Erro ao gravar a comunicação: %(error)s" -#: app/routes/client_portal.py:1417 -#: app/templates/inventory/purchase_orders/view.html:182 -#: app/templates/inventory/stock_items/view.html:271 -#: app/templates/inventory/suppliers/view.html:171 -#: app/templates/inventory/warehouses/view.html:165 -#: app/templates/reports/builder.html:53 -#: app/templates/reports/builder.html:411 -#: app/templates/reports/builder.html:584 -#: app/templates/reports/custom_view.html:61 -#: app/templates/reports/unpaid_hours_report.html:42 -msgid "Summary" -msgstr "Resumo" - -#: app/routes/client_portal.py:1418 app/templates/admin/dashboard.html:114 -#: app/templates/analytics/dashboard.html:43 -#: app/templates/analytics/dashboard_improved.html:35 -#: app/templates/analytics/mobile_dashboard.html:31 -#: app/templates/budget/project_detail.html:189 -#: app/templates/client_portal/projects.html:46 -#: app/templates/client_portal/reports.html:24 -#: app/templates/client_portal/reports.html:91 -#: app/templates/client_portal/widgets/stats.html:18 -#: app/templates/clients/edit.html:184 -#: app/templates/projects/dashboard.html:53 -#: app/templates/projects/time_entries_overview.html:22 -#: app/templates/reports/index.html:26 -#: app/templates/reports/unpaid_hours_report.html:74 -#: app/templates/reports/unpaid_hours_report.html:91 -#: app/templates/timer/time_entries_overview.html:22 -#: app/templates/user/profile.html:45 -msgid "Total Hours" -msgstr "Total de Horas" - -#: app/routes/client_portal.py:1420 -#: app/templates/client_portal/reports.html:37 -msgid "Total Invoiced" -msgstr "Total facturado" - -#: app/routes/client_portal.py:1421 -#: app/templates/client_portal/invoices.html:40 -#: app/templates/client_portal/reports.html:50 -#: app/templates/invoices/list.html:131 -#: app/templates/timer/_time_entries_list.html:164 -#: app/templates/timer/edit_timer.html:360 -#: app/templates/timer/edit_timer.html:481 -#: app/templates/timer/time_entries_overview.html:105 -#: app/templates/timer/time_entries_overview.html:198 -#: app/templates/timer/view_timer.html:136 -#: app/templates/timer/view_timer.html:140 app/utils/i18n_helpers.py:66 -#: app/utils/i18n_helpers.py:78 -msgid "Paid" -msgstr "Pago" - -#: app/routes/client_portal.py:1422 app/templates/admin/pdf_layout.html:1892 -#: app/templates/admin/quote_pdf_layout.html:1698 -#: app/templates/client_portal/invoice_detail.html:97 -#: app/templates/client_portal/reports.html:63 -#: app/templates/client_portal/widgets/stats.html:42 -#: app/templates/invoices/edit.html:368 -msgid "Outstanding" -msgstr "Notável" - -#: app/routes/client_portal.py:1424 app/templates/analytics/dashboard.html:101 -#: app/templates/analytics/dashboard_improved.html:168 -#: app/templates/email/weekly_summary.html:104 -msgid "Hours by Project" -msgstr "Horas por Projeto" - -#: app/routes/client_portal.py:1425 app/routes/reports.py:1017 -#: app/templates/admin/dashboard.html:335 app/templates/approvals/view.html:35 -#: app/templates/audit_logs/list.html:112 -#: app/templates/audit_logs/view.html:89 -#: app/templates/budget/dashboard.html:116 -#: app/templates/calendar/event_detail.html:88 -#: app/templates/calendar/event_form.html:116 -#: app/templates/client_portal/approvals.html:119 -#: app/templates/client_portal/issue_detail.html:63 -#: app/templates/client_portal/new_issue.html:41 -#: app/templates/client_portal/reports.html:89 -#: app/templates/client_portal/reports.html:220 -#: app/templates/client_portal/time_entries.html:24 -#: app/templates/client_portal/time_entries.html:63 -#: app/templates/client_portal/widgets/time_entries.html:21 -#: app/templates/clients/view.html:350 -#: app/templates/components/offline_indicator.html:87 -#: app/templates/expenses/list.html:330 app/templates/gantt/view.html:28 -#: app/templates/inventory/movements/list.html:40 -#: app/templates/invoices/create.html:17 -#: app/templates/invoices/pdf_default.html:76 -#: app/templates/issues/edit.html:60 app/templates/issues/list.html:61 -#: app/templates/issues/list.html:95 app/templates/issues/list.html:112 -#: app/templates/issues/new.html:54 app/templates/issues/view.html:132 -#: app/templates/kanban/create_column.html:39 -#: app/templates/kiosk/dashboard.html:303 -#: app/templates/main/dashboard.html:335 app/templates/main/dashboard.html:344 -#: app/templates/main/dashboard.html:733 app/templates/main/search.html:33 -#: app/templates/mileage/gps.html:18 -#: app/templates/recurring_invoices/list.html:24 -#: app/templates/recurring_invoices/list.html:38 -#: app/templates/recurring_tasks/form.html:35 -#: app/templates/recurring_tasks/list.html:31 -#: app/templates/recurring_tasks/list.html:47 -#: app/templates/reports/builder.html:94 app/templates/reports/index.html:225 -#: app/templates/reports/index.html:233 -#: app/templates/reports/iterative_view.html:44 -#: app/templates/reports/iterative_view.html:55 -#: app/templates/reports/time_entries_report.html:35 -#: app/templates/reports/time_entries_report.html:106 -#: app/templates/reports/time_entries_report.html:120 -#: app/templates/reports/unpaid_hours_report.html:120 -#: app/templates/reports/user_report.html:76 -#: app/templates/tasks/_kanban.html:1245 -#: app/templates/tasks/_tasks_list.html:48 app/templates/tasks/create.html:46 -#: app/templates/tasks/edit.html:53 app/templates/tasks/edit.html:201 -#: app/templates/tasks/my_tasks.html:149 -#: app/templates/timer/bulk_entry.html:101 -#: app/templates/timer/calendar.html:148 app/templates/timer/calendar.html:858 -#: app/templates/timer/calendar.html:863 -#: app/templates/timer/edit_timer.html:229 -#: app/templates/timer/manual_entry.html:62 -#: app/templates/timer/time_entries_overview.html:89 -#: app/templates/timer/timer_page.html:138 -#: app/templates/timer/view_timer.html:71 app/utils/pdf_generator.py:1143 -msgid "Project" -msgstr "Projeto" - -#: app/routes/client_portal.py:1425 app/routes/client_portal.py:1432 -#: app/templates/admin/dashboard.html:506 -#: app/templates/analytics/dashboard.html:221 -#: app/templates/analytics/dashboard_improved.html:215 -#: app/templates/analytics/mobile_dashboard.html:161 -#: app/templates/budget/project_detail.html:206 -#: app/templates/client_portal/reports.html:186 -#: app/templates/main/dashboard.html:499 -#: app/templates/projects/dashboard.html:454 -#: app/templates/projects/dashboard.html:488 -#: app/templates/projects/time_entries_overview.html:70 -#: app/templates/projects/time_entries_overview.html:81 -#: app/templates/reports/iterative_view.html:46 -#: app/templates/reports/iterative_view.html:57 -#: app/templates/reports/summary.html:43 app/templates/reports/summary.html:86 -msgid "Hours" -msgstr "Horas" - -#: app/routes/client_portal.py:1425 app/templates/admin/dashboard.html:129 -#: app/templates/analytics/dashboard.html:48 -#: app/templates/analytics/dashboard_improved.html:44 -#: app/templates/client_portal/reports.html:92 -#: app/templates/reports/index.html:27 -#: app/templates/timer/time_entries_overview.html:23 -msgid "Billable Hours" -msgstr "Horas Billáveis" - -#: app/routes/client_portal.py:1431 -msgid "Time by Date" -msgstr "Hora por Data" - -#: app/routes/client_portal.py:1432 app/routes/reports.py:1013 -#: app/templates/admin/dashboard.html:337 -#: app/templates/analytics/dashboard.html:222 -#: app/templates/analytics/dashboard_improved.html:216 -#: app/templates/analytics/mobile_dashboard.html:162 -#: app/templates/approvals/view.html:57 -#: app/templates/client_portal/approvals.html:141 -#: app/templates/client_portal/quote_detail.html:35 -#: app/templates/client_portal/quotes.html:27 -#: app/templates/client_portal/quotes.html:43 -#: app/templates/client_portal/reports.html:185 -#: app/templates/client_portal/reports.html:219 -#: app/templates/client_portal/time_entries.html:62 -#: app/templates/client_portal/widgets/time_entries.html:20 -#: app/templates/clients/view.html:349 -#: app/templates/contacts/communication_form.html:52 -#: app/templates/expenses/dashboard.html:187 -#: app/templates/expenses/list.html:296 -#: app/templates/inventory/adjustments/list.html:56 -#: app/templates/inventory/adjustments/list.html:67 -#: app/templates/inventory/movements/list.html:54 -#: app/templates/inventory/movements/list.html:68 -#: app/templates/inventory/reports/movement_history.html:70 -#: app/templates/inventory/reports/movement_history.html:84 -#: app/templates/inventory/stock_items/history.html:62 -#: app/templates/inventory/stock_items/history.html:75 -#: app/templates/inventory/stock_items/view.html:239 -#: app/templates/inventory/stock_items/view.html:249 -#: app/templates/inventory/transfers/list.html:38 -#: app/templates/inventory/transfers/list.html:53 -#: app/templates/inventory/warehouses/view.html:129 -#: app/templates/inventory/warehouses/view.html:139 -#: app/templates/invoices/edit.html:164 -#: app/templates/invoices/pdf_default.html:123 -#: app/templates/main/dashboard.html:337 app/templates/main/dashboard.html:366 -#: app/templates/payments/list.html:157 -#: app/templates/projects/add_cost.html:50 -#: app/templates/projects/edit_cost.html:57 -#: app/templates/quotes/create.html:98 app/templates/quotes/edit.html:146 -#: app/templates/quotes/pdf_default.html:57 -#: app/templates/reports/index.html:227 app/templates/reports/index.html:235 -#: app/templates/reports/iterative_view.html:42 -#: app/templates/reports/iterative_view.html:53 -#: app/templates/reports/time_entries_report.html:102 -#: app/templates/reports/time_entries_report.html:116 -#: app/templates/reports/unpaid_hours_report.html:122 -#: app/templates/reports/user_report.html:74 app/templates/tasks/view.html:75 -#: app/templates/timer/_time_entries_list.html:34 -#: app/templates/timer/_time_entries_list.html:57 -#: app/utils/pdf_generator_fallback.py:291 -#: app/utils/pdf_generator_fallback.py:555 -msgid "Date" -msgstr "Data" - -#: app/routes/client_portal_customization.py:50 -#: app/routes/recurring_tasks.py:81 app/routes/time_approvals.py:48 -#: app/routes/webhooks.py:103 app/routes/webhooks.py:126 -#: app/routes/webhooks.py:169 app/routes/workflows.py:95 -#: app/routes/workflows.py:116 app/routes/workforce.py:147 -#: app/routes/workforce.py:169 app/routes/workforce.py:228 -#: app/routes/workforce.py:251 app/routes/workforce.py:278 -#: app/routes/workforce.py:331 app/routes/workforce.py:355 -#: app/routes/workforce.py:398 app/routes/workforce.py:419 -#: app/routes/workforce.py:565 app/routes/workforce.py:614 -msgid "Access denied" -msgstr "Acesso negado" - -#: app/routes/client_portal_customization.py:111 -msgid "File too large. Maximum 5MB." -msgstr "Um arquivo muito grande. Máximo 5MB." - -#: app/routes/client_portal_customization.py:139 -msgid "Portal customization updated successfully" -msgstr "Personalização do portal atualizada com sucesso" - -#: app/routes/clients.py:89 -msgid "Search query is too long. Maximum 200 characters." -msgstr "A pesquisa é muito longa. Máximo 200 caracteres." - -#: app/routes/clients.py:255 app/routes/clients.py:256 -msgid "You do not have permission to create clients" -msgstr "Você não tem permissão para criar clientes" - -#: app/routes/clients.py:285 app/routes/clients.py:601 -msgid "Client name is required" -msgstr "O nome do cliente é obrigatório" - -#: app/routes/clients.py:296 app/routes/clients.py:610 -msgid "A client with this name already exists" -msgstr "Já existe um cliente com este nome" - -#: app/routes/clients.py:307 -msgid "Invalid email address" -msgstr "Endereço de e- mail inválido" - -#: app/routes/clients.py:316 app/routes/clients.py:620 app/routes/offers.py:92 -#: app/routes/offers.py:224 app/routes/projects.py:349 -#: app/routes/projects.py:953 app/routes/quotes.py:197 -msgid "Invalid hourly rate format" -msgstr "Formato de taxa horária inválido" - -#: app/routes/clients.py:325 app/routes/clients.py:631 -msgid "Prepaid hours must be a positive number." -msgstr "O horário pré-pago deve ser um número positivo." - -#: app/routes/clients.py:337 app/routes/clients.py:645 -msgid "Prepaid reset day must be between 1 and 28." -msgstr "O dia de reset pré-pago deve estar entre 1 e 28." - -#: app/routes/clients.py:359 app/routes/clients.py:364 -#: app/routes/clients.py:686 app/routes/projects.py:433 -#: app/routes/projects.py:1048 -#, python-format -msgid "Custom field '%(field)s' is required" -msgstr "" +#~ msgid "Field key is required" +#~ msgstr "A tecla de campo é necessária" -#: app/routes/clients.py:389 -msgid "" -"Could not create client due to a database error. Please check server logs." -msgstr "" -"Não foi possível criar o cliente devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Label is required" +#~ msgstr "Rótulo é necessário" -#: app/routes/clients.py:439 app/routes/clients.py:580 -msgid "You do not have access to this client." -msgstr "Você não tem acesso a este cliente." +#~ msgid "Field key must contain only letters, numbers, and underscores" +#~ msgstr "A tecla de campo deve conter apenas letras, números e sublinhados" -#: app/routes/clients.py:585 -msgid "You do not have permission to edit clients" -msgstr "Você não tem permissão para editar clientes" +#~ msgid "A custom field definition with this key already exists" +#~ msgstr "Já existe uma definição personalizada de campo com esta chave" -#: app/routes/clients.py:660 -msgid "Portal username is required when enabling portal access." -msgstr "" -"O nome de usuário do portal é necessário para permitir o acesso ao portal." +#~ msgid "Could not create custom field definition due to a database error." +#~ msgstr "" +#~ "Não foi possível criar a definição " +#~ "personalizada do campo devido a um " +#~ "erro na base de dados." -#: app/routes/clients.py:669 -msgid "This portal username is already in use by another client." -msgstr "Este nome de utilizador do portal já está em uso por outro cliente." +#~ msgid "Custom field definition created successfully" +#~ msgstr "Definição de campo personalizada criada com sucesso" -#: app/routes/clients.py:719 -msgid "" -"Could not update client due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar o cliente devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Could not update custom field definition due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar a definição" +#~ " do campo personalizado devido a um" +#~ " erro na base de dados." -#: app/routes/clients.py:742 -msgid "You do not have permission to send portal emails" -msgstr "Você não tem permissão para enviar e-mails do portal" +#~ msgid "Custom field definition updated successfully" +#~ msgstr "A definição personalizada do campo foi atualizada com sucesso" -#: app/routes/clients.py:747 -msgid "Client portal is not enabled for this client." -msgstr "O portal do cliente não está habilitado para este cliente." +#~ msgid "Could not remove custom field from clients due to a database error." +#~ msgstr "" +#~ "Não foi possível remover o campo " +#~ "personalizado dos clientes devido a um" +#~ " erro na base de dados." -#: app/routes/clients.py:751 -msgid "Portal username is not set for this client." -msgstr "O nome de usuário do portal não está definido para este cliente." +#~ msgid "Could not delete custom field definition due to a database error." +#~ msgstr "" +#~ "Não foi possível apagar a definição " +#~ "personalizada do campo devido a um " +#~ "erro na base de dados." -#: app/routes/clients.py:755 -msgid "Client email address is not set. Cannot send password setup email." -msgstr "" -"O endereço de e- mail do cliente não está definido. Não é possível enviar o " -"e- mail de configuração da senha." +#~ msgid "" +#~ "Custom field definition deleted successfully." +#~ " The field was removed from %(count)d" +#~ " client(s)." +#~ msgstr "" -#: app/routes/clients.py:762 -msgid "Could not generate password setup token due to a database error." -msgstr "" -"Não foi possível gerar o token de configuração de senha devido a um erro no " -"banco de dados." +#~ msgid "Custom field definition deleted successfully" +#~ msgstr "Definição de campo personalizada excluída com sucesso" -#: app/routes/clients.py:777 -#, python-format -msgid "Password setup email sent successfully to %(email)s" -msgstr "Email de configuração de senha enviado com sucesso para %(email)s" +#~ msgid "You do not have permission to edit this report." +#~ msgstr "Você não tem permissão para editar este relatório." -#: app/routes/clients.py:788 -msgid "" -"Email server is not configured. Please configure email settings in Admin → " -"Email Configuration or set MAIL_SERVER environment variable." -msgstr "" -"O servidor de e- mail não está configurado. Por favor, configure " -"configurações de e-mail no Admin → Configuração de e-mail ou definir " -"variável de ambiente MAIL SERVER." +#~ msgid "Report %(action)s successfully" +#~ msgstr "" -#: app/routes/clients.py:795 -msgid "" -"Failed to send password setup email. Please check email configuration and " -"server logs for details." -msgstr "" -"Não foi possível enviar o email de configuração da senha. Verifique por " -"favor a configuração do email e os registros do servidor para detalhes." +#~ msgid "You do not have permission to view this report." +#~ msgstr "Não tem autorização para ver este relatório." -#: app/routes/clients.py:802 -#, python-format -msgid "An error occurred while sending the email: %(error)s" -msgstr "" +#~ msgid "You do not have permission to delete this report view." +#~ msgstr "Você não tem permissão para excluir esta visão de relatório." -#: app/routes/clients.py:815 -msgid "You do not have permission to archive clients" -msgstr "Você não tem permissão para arquivar clientes" +#~ msgid "Cannot delete report view: it is used in %(count)d scheduled report(s)." +#~ msgstr "" -#: app/routes/clients.py:819 -msgid "Client is already inactive" -msgstr "O cliente já está inactivo" +#~ msgid "Report view \"%(name)s\" deleted successfully." +#~ msgstr "" -#: app/routes/clients.py:844 -msgid "You do not have permission to activate clients" -msgstr "Você não tem permissão para ativar clientes" +#~ msgid "Could not delete report view due to a database error" +#~ msgstr "" +#~ "Não foi possível apagar a vista do" +#~ " relatório devido a um erro na " +#~ "base de dados" -#: app/routes/clients.py:848 -msgid "Client is already active" -msgstr "O cliente já está activo" +#~ msgid "Invalid deal value" +#~ msgstr "Valor de negócio inválido" -#: app/routes/clients.py:874 app/routes/clients.py:931 -msgid "You do not have permission to delete clients" -msgstr "Você não tem permissão para excluir clientes" +#~ msgid "Deal created successfully" +#~ msgstr "Deal criado com sucesso" -#: app/routes/clients.py:879 -msgid "" -"Cannot delete client with existing projects. Please delete all projects " -"first." -msgstr "" -"Não é possível excluir cliente com projetos existentes. Por favor, apague " -"todos os projetos primeiro." +#~ msgid "Error creating deal: %(error)s" +#~ msgstr "Erro ao criar negócio: %(error)s" -#: app/routes/clients.py:886 -msgid "" -"Cannot delete client with existing invoices. Please delete all invoices " -"first before deleting the client." -msgstr "" -"Não é possível excluir o cliente com as faturas existentes. Por favor, " -"apague todas as faturas primeiro antes de excluir o cliente." +#~ msgid "Deal updated successfully" +#~ msgstr "Distribuir actualizado com sucesso" -#: app/routes/clients.py:904 -msgid "" -"Could not delete client due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar o cliente devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Error updating deal: %(error)s" +#~ msgstr "Erro ao atualizar o acordo: %(error)s" -#: app/routes/clients.py:937 -msgid "No clients selected for deletion" -msgstr "Nenhum cliente selecionado para exclusão" +#~ msgid "Deal closed as won" +#~ msgstr "Acordo fechado como ganho" -#: app/routes/clients.py:987 -msgid "" -"Could not delete clients due to a database error. Please check server logs." -msgstr "" -"Não foi possível excluir clientes devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Error closing deal: %(error)s" +#~ msgstr "Erro ao fechar negócio: %(error)s" -#: app/routes/clients.py:1007 -msgid "No clients were deleted" -msgstr "Nenhum cliente foi excluído" +#~ msgid "Deal closed as lost" +#~ msgstr "Negócio fechado como perdido" -#: app/routes/clients.py:1018 -msgid "You do not have permission to change client status" -msgstr "Você não tem permissão para alterar o status do cliente" +#~ msgid "Activity recorded successfully" +#~ msgstr "Atividade gravada com sucesso" -#: app/routes/clients.py:1025 -msgid "No clients selected" -msgstr "Nenhum cliente selecionado" +#~ msgid "Error recording activity: %(error)s" +#~ msgstr "Erro ao gravar atividade: %(error)s" -#: app/routes/clients.py:1029 app/routes/projects.py:1354 -#: app/routes/tasks.py:632 -msgid "Invalid status" -msgstr "Estado inválido" +#~ msgid "Category name is required" +#~ msgstr "O nome da categoria é obrigatório" -#: app/routes/clients.py:1060 -msgid "" -"Could not update client status due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível atualizar o status do cliente devido a um erro na base de " -"dados. Por favor, verifique os registos do servidor." - -#: app/routes/clients.py:1077 -msgid "No clients were updated" -msgstr "Nenhum cliente foi atualizado" - -#: app/routes/clients.py:1264 app/routes/comments.py:286 -#: app/routes/expenses.py:1264 app/routes/invoices.py:1608 -#: app/routes/projects.py:2023 app/routes/quotes.py:1127 -#: app/routes/quotes.py:1987 app/routes/team_chat.py:477 -msgid "No file provided" -msgstr "Nenhum arquivo fornecido" - -#: app/routes/clients.py:1273 app/routes/comments.py:295 -#: app/routes/projects.py:2032 app/routes/quotes.py:1136 -msgid "File type not allowed" -msgstr "Tipo de arquivo não permitido" - -#: app/routes/clients.py:1282 app/routes/comments.py:304 -#: app/routes/projects.py:2041 app/routes/quotes.py:1145 -msgid "File size exceeds maximum allowed size (10 MB)" -msgstr "O tamanho do arquivo excede o tamanho máximo permitido (10 MB)" - -#: app/routes/clients.py:1319 app/routes/clients.py:1335 -#: app/routes/comments.py:337 app/routes/projects.py:2078 -#: app/routes/projects.py:2094 app/routes/quotes.py:1191 -msgid "" -"Could not upload attachment due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível enviar o anexo devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Expense category created successfully" +#~ msgstr "Categoria de despesas criada com sucesso" -#: app/routes/clients.py:1332 app/routes/projects.py:2091 -msgid "" -"The attachments feature requires a database migration. Please run: flask db " -"upgrade" -msgstr "" -"O recurso anexos requer uma migração de banco de dados. Por favor, execute: " -"flower db upgrade" - -#: app/routes/clients.py:1357 app/routes/comments.py:354 -#: app/routes/projects.py:2116 app/routes/quotes.py:1212 -msgid "Attachment uploaded successfully" -msgstr "O anexo foi carregado com sucesso" - -#: app/routes/clients.py:1376 app/routes/comments.py:369 -#: app/routes/projects.py:2135 app/routes/quotes.py:1236 -#: app/routes/team_chat.py:424 -msgid "File not found" -msgstr "Ficheiro não encontrado" - -#: app/routes/clients.py:1408 app/routes/projects.py:2169 -#: app/routes/quotes.py:1275 -msgid "" -"Could not delete attachment due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível apagar o anexo devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." - -#: app/routes/clients.py:1418 app/routes/comments.py:402 -#: app/routes/projects.py:2184 app/routes/quotes.py:1285 -msgid "Attachment deleted successfully" -msgstr "O anexo foi apagado com sucesso" - -#: app/routes/comments.py:30 app/routes/comments.py:117 -msgid "Comment content cannot be empty" -msgstr "O conteúdo do comentário não pode estar vazio" - -#: app/routes/comments.py:34 -msgid "Comment must be associated with a project, task, or quote" -msgstr "O comentário deve ser associado a um projeto, tarefa ou citação" - -#: app/routes/comments.py:40 -msgid "Comment cannot be associated with multiple targets" -msgstr "O comentário não pode ser associado a múltiplos alvos" - -#: app/routes/comments.py:64 -msgid "Invalid parent comment" -msgstr "Comentário pai inválido" - -#: app/routes/comments.py:83 -msgid "Comment added successfully" -msgstr "Comentário adicionado com sucesso" - -#: app/routes/comments.py:85 -msgid "Error adding comment" -msgstr "Erro ao adicionar o comentário" - -#: app/routes/comments.py:88 -#, python-format -msgid "Error adding comment: %(error)s" -msgstr "Erro ao adicionar o comentário: %(error)s" - -#: app/routes/comments.py:109 -msgid "You do not have permission to edit this comment" -msgstr "Você não tem permissão para editar este comentário" - -#: app/routes/comments.py:126 -msgid "Comment updated successfully" -msgstr "Comentário actualizado com sucesso" - -#: app/routes/comments.py:139 -#, python-format -msgid "Error updating comment: %(error)s" -msgstr "Erro ao atualizar o comentário: %(error)s" - -#: app/routes/comments.py:152 -msgid "You do not have permission to delete this comment" -msgstr "Você não tem permissão para excluir este comentário" - -#: app/routes/comments.py:167 -msgid "Comment deleted successfully" -msgstr "Comentário apagado com sucesso" - -#: app/routes/comments.py:180 -#, python-format -msgid "Error deleting comment: %(error)s" -msgstr "Erro ao remover o comentário: %(error)s" - -#: app/routes/comments.py:274 -msgid "You do not have permission to add attachments to this comment" -msgstr "Você não tem permissão para adicionar anexos a este comentário" - -#: app/routes/comments.py:350 -#, python-format -msgid "Error uploading attachment: %(error)s" -msgstr "" +#~ msgid "Error creating expense category" +#~ msgstr "Erro ao criar a categoria de despesas" -#: app/routes/comments.py:386 app/routes/quotes.py:1258 -msgid "You do not have permission to delete this attachment" -msgstr "Você não tem permissão para excluir este anexo" +#~ msgid "Expense category updated successfully" +#~ msgstr "Categoria de despesas atualizadas com sucesso" -#: app/routes/comments.py:404 -msgid "Error deleting attachment" -msgstr "Erro ao remover o anexo" +#~ msgid "Error updating expense category" +#~ msgstr "Erro ao atualizar a categoria de despesa" -#: app/routes/comments.py:406 -#, python-format -msgid "Error deleting attachment: %(error)s" -msgstr "" +#~ msgid "Expense category deactivated successfully" +#~ msgstr "Categoria de despesas desactivadas com sucesso" -#: app/routes/contacts.py:62 -msgid "Contact created successfully" -msgstr "Contacto criado com sucesso" +#~ msgid "Error deactivating expense category" +#~ msgstr "Erro ao desativar a categoria de despesas" -#: app/routes/contacts.py:66 -#, python-format -msgid "Error creating contact: %(error)s" -msgstr "Erro ao criar contato: %(error)s" +#~ msgid "Title is required" +#~ msgstr "O título é obrigatório" -#: app/routes/contacts.py:109 -msgid "Contact updated successfully" -msgstr "Contacto actualizado com sucesso" +#~ msgid "Category is required" +#~ msgstr "É necessária a categoria" -#: app/routes/contacts.py:113 -#, python-format -msgid "Error updating contact: %(error)s" -msgstr "Erro ao atualizar o contato: %(error)s" +#~ msgid "Amount is required" +#~ msgstr "Quantidade necessária" -#: app/routes/contacts.py:129 -msgid "Contact deleted successfully" -msgstr "Contacto apagado com sucesso" +#~ msgid "Expense date is required" +#~ msgstr "Data da despesa" -#: app/routes/contacts.py:132 -#, python-format -msgid "Error deleting contact: %(error)s" -msgstr "" +#~ msgid "Invalid date format" +#~ msgstr "Formato de data inválido" -#: app/routes/contacts.py:146 -msgid "Contact set as primary" -msgstr "Contato definido como primário" +#~ msgid "Invalid amount format" +#~ msgstr "Formato de quantidade inválido" -#: app/routes/contacts.py:149 -#, python-format -msgid "Error setting primary contact: %(error)s" -msgstr "" +#~ msgid "Selected project does not match the locked client." +#~ msgstr "O projeto selecionado não corresponde ao cliente bloqueado." -#: app/routes/contacts.py:192 -msgid "Communication recorded successfully" -msgstr "Comunicação gravada com sucesso" - -#: app/routes/contacts.py:196 -#, python-format -msgid "Error recording communication: %(error)s" -msgstr "Erro ao gravar a comunicação: %(error)s" - -#: app/routes/custom_field_definitions.py:44 -#: app/routes/custom_field_definitions.py:101 app/routes/link_templates.py:54 -#: app/routes/link_templates.py:110 -msgid "Field key is required" -msgstr "A tecla de campo é necessária" - -#: app/routes/custom_field_definitions.py:48 -#: app/routes/custom_field_definitions.py:105 app/routes/kanban.py:240 -msgid "Label is required" -msgstr "Rótulo é necessário" - -#: app/routes/custom_field_definitions.py:53 -#: app/routes/custom_field_definitions.py:110 -msgid "Field key must contain only letters, numbers, and underscores" -msgstr "A tecla de campo deve conter apenas letras, números e sublinhados" - -#: app/routes/custom_field_definitions.py:59 -#: app/routes/custom_field_definitions.py:118 -msgid "A custom field definition with this key already exists" -msgstr "Já existe uma definição personalizada de campo com esta chave" - -#: app/routes/custom_field_definitions.py:75 -msgid "Could not create custom field definition due to a database error." -msgstr "" -"Não foi possível criar a definição personalizada do campo devido a um erro " -"na base de dados." +#~ msgid "Error saving receipt file. Please check directory permissions." +#~ msgstr "" +#~ "Erro ao salvar o arquivo de " +#~ "recibo. Verifique as permissões do " +#~ "diretório." -#: app/routes/custom_field_definitions.py:78 -msgid "Custom field definition created successfully" -msgstr "Definição de campo personalizada criada com sucesso" +#~ msgid "Error uploading receipt file." +#~ msgstr "Erro ao enviar o ficheiro de recibo." -#: app/routes/custom_field_definitions.py:131 -msgid "Could not update custom field definition due to a database error." -msgstr "" -"Não foi possível atualizar a definição do campo personalizado devido a um " -"erro na base de dados." +#~ msgid "Expense created successfully" +#~ msgstr "Despesas criadas com sucesso" -#: app/routes/custom_field_definitions.py:134 -msgid "Custom field definition updated successfully" -msgstr "A definição personalizada do campo foi atualizada com sucesso" +#~ msgid "Error creating expense" +#~ msgstr "Erro ao criar despesas" -#: app/routes/custom_field_definitions.py:167 -msgid "Could not remove custom field from clients due to a database error." -msgstr "" -"Não foi possível remover o campo personalizado dos clientes devido a um erro" -" na base de dados." +#~ msgid "You do not have permission to view this expense" +#~ msgstr "Você não tem permissão para ver esta despesa" -#: app/routes/custom_field_definitions.py:174 -msgid "Could not delete custom field definition due to a database error." -msgstr "" -"Não foi possível apagar a definição personalizada do campo devido a um erro " -"na base de dados." +#~ msgid "You do not have permission to edit this expense" +#~ msgstr "Você não tem permissão para editar esta despesa" -#: app/routes/custom_field_definitions.py:178 -#, python-format -msgid "" -"Custom field definition deleted successfully. The field was removed from " -"%(count)d client(s)." -msgstr "" +#~ msgid "Cannot edit approved or reimbursed expenses" +#~ msgstr "Não é possível editar despesas aprovadas ou reembolsadas" -#: app/routes/custom_field_definitions.py:185 -msgid "Custom field definition deleted successfully" -msgstr "Definição de campo personalizada excluída com sucesso" +#~ msgid "Please fill in all required fields" +#~ msgstr "Preencha todos os campos obrigatórios" -#: app/routes/custom_reports.py:43 app/routes/custom_reports.py:661 -msgid "You do not have permission to edit this report." -msgstr "Você não tem permissão para editar este relatório." +#~ msgid "Expense updated successfully" +#~ msgstr "Despesas atualizadas com sucesso" -#: app/routes/custom_reports.py:164 -#, python-format -msgid "Report %(action)s successfully" -msgstr "" +#~ msgid "Error updating expense" +#~ msgstr "Erro ao atualizar a despesa" -#: app/routes/custom_reports.py:192 -msgid "You do not have permission to view this report." -msgstr "Não tem autorização para ver este relatório." +#~ msgid "You do not have permission to delete this expense" +#~ msgstr "Você não tem permissão para excluir esta despesa" -#: app/routes/custom_reports.py:699 -msgid "You do not have permission to delete this report view." -msgstr "Você não tem permissão para excluir esta visão de relatório." +#~ msgid "Cannot delete approved or invoiced expenses" +#~ msgstr "Não é possível apagar despesas aprovadas ou facturadas" -#: app/routes/custom_reports.py:710 -#, python-format -msgid "" -"Cannot delete report view: it is used in %(count)d scheduled report(s)." -msgstr "" +#~ msgid "Expense deleted successfully" +#~ msgstr "Despesas apagadas com sucesso" -#: app/routes/custom_reports.py:716 -#, python-format -msgid "Report view \"%(name)s\" deleted successfully." -msgstr "" +#~ msgid "Error deleting expense" +#~ msgstr "Erro ao excluir despesas" -#: app/routes/custom_reports.py:718 -msgid "Could not delete report view due to a database error" -msgstr "" -"Não foi possível apagar a vista do relatório devido a um erro na base de " -"dados" - -#: app/routes/deals.py:107 app/routes/deals.py:192 -msgid "Invalid deal value" -msgstr "Valor de negócio inválido" - -#: app/routes/deals.py:144 -msgid "Deal created successfully" -msgstr "Deal criado com sucesso" - -#: app/routes/deals.py:148 -#, python-format -msgid "Error creating deal: %(error)s" -msgstr "Erro ao criar negócio: %(error)s" - -#: app/routes/deals.py:224 -msgid "Deal updated successfully" -msgstr "Distribuir actualizado com sucesso" - -#: app/routes/deals.py:228 -#, python-format -msgid "Error updating deal: %(error)s" -msgstr "Erro ao atualizar o acordo: %(error)s" - -#: app/routes/deals.py:258 -msgid "Deal closed as won" -msgstr "Acordo fechado como ganho" - -#: app/routes/deals.py:261 app/routes/deals.py:289 -#, python-format -msgid "Error closing deal: %(error)s" -msgstr "Erro ao fechar negócio: %(error)s" - -#: app/routes/deals.py:286 -msgid "Deal closed as lost" -msgstr "Negócio fechado como perdido" - -#: app/routes/deals.py:326 app/routes/leads.py:339 -msgid "Activity recorded successfully" -msgstr "Atividade gravada com sucesso" - -#: app/routes/deals.py:330 app/routes/leads.py:343 -#, python-format -msgid "Error recording activity: %(error)s" -msgstr "Erro ao gravar atividade: %(error)s" - -#: app/routes/expense_categories.py:53 app/routes/expense_categories.py:143 -msgid "Category name is required" -msgstr "O nome da categoria é obrigatório" - -#: app/routes/expense_categories.py:88 -msgid "Expense category created successfully" -msgstr "Categoria de despesas criada com sucesso" - -#: app/routes/expense_categories.py:93 app/routes/expense_categories.py:100 -msgid "Error creating expense category" -msgstr "Erro ao criar a categoria de despesas" - -#: app/routes/expense_categories.py:174 -msgid "Expense category updated successfully" -msgstr "Categoria de despesas atualizadas com sucesso" - -#: app/routes/expense_categories.py:179 app/routes/expense_categories.py:186 -msgid "Error updating expense category" -msgstr "Erro ao atualizar a categoria de despesa" - -#: app/routes/expense_categories.py:203 -msgid "Expense category deactivated successfully" -msgstr "Categoria de despesas desactivadas com sucesso" - -#: app/routes/expense_categories.py:207 app/routes/expense_categories.py:213 -msgid "Error deactivating expense category" -msgstr "Erro ao desativar a categoria de despesas" - -#: app/routes/expenses.py:286 -msgid "Title is required" -msgstr "O título é obrigatório" - -#: app/routes/expenses.py:290 -msgid "Category is required" -msgstr "É necessária a categoria" - -#: app/routes/expenses.py:294 -msgid "Amount is required" -msgstr "Quantidade necessária" - -#: app/routes/expenses.py:298 -msgid "Expense date is required" -msgstr "Data da despesa" - -#: app/routes/expenses.py:305 app/routes/expenses.py:555 -#: app/routes/expenses.py:1388 app/routes/mileage.py:362 -#: app/routes/per_diem.py:312 app/routes/projects.py:1618 -#: app/routes/projects.py:1689 app/routes/reports.py:129 -#: app/routes/reports.py:189 app/routes/reports.py:369 -#: app/routes/reports.py:696 app/routes/reports.py:882 -#: app/routes/reports.py:964 app/routes/reports.py:1005 -#: app/routes/reports.py:1075 app/routes/reports.py:1155 -#: app/routes/reports.py:1252 app/routes/reports.py:1427 -#: app/routes/reports.py:1506 app/routes/reports.py:1657 -#: app/routes/reports.py:1753 app/routes/timer.py:1703 -#: app/routes/weekly_goals.py:89 app/templates/timer/calendar.html:1152 -msgid "Invalid date format" -msgstr "Formato de data inválido" - -#: app/routes/expenses.py:313 app/routes/expenses.py:563 -#: app/routes/expenses.py:1396 app/routes/projects.py:1611 -#: app/routes/projects.py:1682 -msgid "Invalid amount format" -msgstr "Formato de quantidade inválido" - -#: app/routes/expenses.py:333 app/routes/issues.py:184 -#: app/routes/mileage.py:373 app/routes/per_diem.py:368 -#: app/routes/recurring_invoices.py:100 app/routes/timer.py:122 -#: app/routes/timer.py:1362 -msgid "Selected project does not match the locked client." -msgstr "O projeto selecionado não corresponde ao cliente bloqueado." - -#: app/routes/expenses.py:372 app/routes/expenses.py:632 -msgid "Error saving receipt file. Please check directory permissions." -msgstr "" -"Erro ao salvar o arquivo de recibo. Verifique as permissões do diretório." +#~ msgid "No expenses selected for deletion" +#~ msgstr "Nenhuma despesa selecionada para eliminação" -#: app/routes/expenses.py:375 app/routes/expenses.py:635 -msgid "Error uploading receipt file." -msgstr "Erro ao enviar o ficheiro de recibo." +#~ msgid "" +#~ "Could not delete expenses due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar as despesas " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/expenses.py:403 -msgid "Expense created successfully" -msgstr "Despesas criadas com sucesso" +#~ msgid "Successfully deleted %(count)d expense(s)" +#~ msgstr "" -#: app/routes/expenses.py:418 app/routes/expenses.py:423 -#: app/routes/expenses.py:1443 app/routes/expenses.py:1448 -msgid "Error creating expense" -msgstr "Erro ao criar despesas" +#~ msgid "Skipped %(count)d expense(s): %(errors)s" +#~ msgstr "" -#: app/routes/expenses.py:435 -msgid "You do not have permission to view this expense" -msgstr "Você não tem permissão para ver esta despesa" +#~ msgid "No expenses selected" +#~ msgstr "Nenhuma despesa selecionada" -#: app/routes/expenses.py:507 -msgid "You do not have permission to edit this expense" -msgstr "Você não tem permissão para editar esta despesa" +#~ msgid "Invalid status value" +#~ msgstr "Valor de status inválido" -#: app/routes/expenses.py:512 -msgid "Cannot edit approved or reimbursed expenses" -msgstr "Não é possível editar despesas aprovadas ou reembolsadas" +#~ msgid "Could not update expenses due to a database error" +#~ msgstr "" +#~ "Não foi possível atualizar as despesas" +#~ " devido a um erro na base de" +#~ " dados" -#: app/routes/expenses.py:548 app/routes/expenses.py:1381 -#: app/routes/mileage.py:355 app/routes/per_diem.py:304 -#: app/routes/per_diem.py:764 app/routes/per_diem.py:820 -msgid "Please fill in all required fields" -msgstr "Preencha todos os campos obrigatórios" +#~ msgid "Successfully updated %(count)d expense(s) to %(status)s" +#~ msgstr "" -#: app/routes/expenses.py:640 -msgid "Expense updated successfully" -msgstr "Despesas atualizadas com sucesso" +#~ msgid "Skipped %(count)d expense(s): %(summary)s" +#~ msgstr "" -#: app/routes/expenses.py:645 app/routes/expenses.py:650 -msgid "Error updating expense" -msgstr "Erro ao atualizar a despesa" +#~ msgid "Skipped %(count)d expense(s) (no permission)" +#~ msgstr "" -#: app/routes/expenses.py:662 -msgid "You do not have permission to delete this expense" -msgstr "Você não tem permissão para excluir esta despesa" +#~ msgid "Only administrators can approve expenses" +#~ msgstr "Apenas os administradores podem aprovar despesas" -#: app/routes/expenses.py:667 -msgid "Cannot delete approved or invoiced expenses" -msgstr "Não é possível apagar despesas aprovadas ou facturadas" +#~ msgid "Only pending expenses can be approved" +#~ msgstr "Só podem ser aprovadas despesas pendentes" -#: app/routes/expenses.py:684 -msgid "Expense deleted successfully" -msgstr "Despesas apagadas com sucesso" +#~ msgid "Expense approved successfully" +#~ msgstr "Despesas aprovadas com sucesso" -#: app/routes/expenses.py:688 app/routes/expenses.py:692 -msgid "Error deleting expense" -msgstr "Erro ao excluir despesas" +#~ msgid "Error approving expense" +#~ msgstr "Erro ao aprovar despesas" -#: app/routes/expenses.py:704 -msgid "No expenses selected for deletion" -msgstr "Nenhuma despesa selecionada para eliminação" +#~ msgid "Only administrators can reject expenses" +#~ msgstr "Apenas os administradores podem rejeitar despesas" -#: app/routes/expenses.py:752 -msgid "" -"Could not delete expenses due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar as despesas devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Only pending expenses can be rejected" +#~ msgstr "Apenas as despesas pendentes podem ser rejeitadas" -#: app/routes/expenses.py:757 -#, python-format -msgid "Successfully deleted %(count)d expense(s)" -msgstr "" +#~ msgid "Rejection reason is required" +#~ msgstr "Razão de rejeição necessária" -#: app/routes/expenses.py:761 -#, python-format -msgid "Skipped %(count)d expense(s): %(errors)s" -msgstr "" +#~ msgid "Expense rejected" +#~ msgstr "Despesas rejeitadas" -#: app/routes/expenses.py:775 -msgid "No expenses selected" -msgstr "Nenhuma despesa selecionada" +#~ msgid "Error rejecting expense" +#~ msgstr "Erro ao rejeitar a despesa" -#: app/routes/expenses.py:781 app/routes/invoices.py:834 -#: app/routes/mileage.py:631 app/routes/payments.py:544 -#: app/routes/per_diem.py:617 app/routes/tasks.py:918 -msgid "Invalid status value" -msgstr "Valor de status inválido" +#~ msgid "Only administrators can mark expenses as reimbursed" +#~ msgstr "Apenas os administradores podem marcar despesas como reembolsadas" -#: app/routes/expenses.py:811 -msgid "Could not update expenses due to a database error" -msgstr "" -"Não foi possível atualizar as despesas devido a um erro na base de dados" +#~ msgid "Only approved expenses can be marked as reimbursed" +#~ msgstr "Apenas as despesas aprovadas podem ser assinaladas como reembolsadas" -#: app/routes/expenses.py:815 -#, python-format -msgid "Successfully updated %(count)d expense(s) to %(status)s" -msgstr "" +#~ msgid "This expense is not marked as reimbursable" +#~ msgstr "Esta despesa não é marcada como reembolsável" -#: app/routes/expenses.py:824 -#, python-format -msgid "Skipped %(count)d expense(s): %(summary)s" -msgstr "" +#~ msgid "Expense marked as reimbursed" +#~ msgstr "Despesas assinaladas como reembolsadas" -#: app/routes/expenses.py:826 -#, python-format -msgid "Skipped %(count)d expense(s) (no permission)" -msgstr "" +#~ msgid "Error marking expense as reimbursed" +#~ msgstr "Erro ao marcar despesas como reembolsado" -#: app/routes/expenses.py:836 -msgid "Only administrators can approve expenses" -msgstr "Apenas os administradores podem aprovar despesas" +#~ msgid "OCR is not available. Please contact your administrator." +#~ msgstr "O OCR não está disponível. Por favor contacte o seu administrador." -#: app/routes/expenses.py:842 -msgid "Only pending expenses can be approved" -msgstr "Só podem ser aprovadas despesas pendentes" +#~ msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" +#~ msgstr "Tipo de ficheiro inválido. Tipos permitidos: png, jpg, jpeg, gif, pdf" -#: app/routes/expenses.py:850 -msgid "Expense approved successfully" -msgstr "Despesas aprovadas com sucesso" +#~ msgid "" +#~ "Receipt scanned successfully! You can " +#~ "now create an expense with the " +#~ "extracted data." +#~ msgstr "" +#~ "Recibo digitalizado com sucesso! Agora " +#~ "você pode criar uma despesa com os" +#~ " dados extraídos." -#: app/routes/expenses.py:854 app/routes/expenses.py:858 -msgid "Error approving expense" -msgstr "Erro ao aprovar despesas" +#~ msgid "Error scanning receipt. Please try again or enter the expense manually." +#~ msgstr "" +#~ "Erro ao verificar o recibo. Por " +#~ "favor, tente novamente ou digite a " +#~ "despesa manualmente." -#: app/routes/expenses.py:868 -msgid "Only administrators can reject expenses" -msgstr "Apenas os administradores podem rejeitar despesas" +#~ msgid "No scanned receipt data found. Please scan a receipt first." +#~ msgstr "" +#~ "Não foram encontrados dados de recibo" +#~ " digitalizados. Por favor, verifique um " +#~ "recibo primeiro." -#: app/routes/expenses.py:874 -msgid "Only pending expenses can be rejected" -msgstr "Apenas as despesas pendentes podem ser rejeitadas" +#~ msgid "Expense created successfully from scanned receipt" +#~ msgstr "Despesas criadas com sucesso a partir de recibo digitalizado" -#: app/routes/expenses.py:880 app/routes/mileage.py:735 -#: app/routes/per_diem.py:709 app/routes/quotes.py:1389 -#: app/routes/time_approvals.py:92 app/routes/workforce.py:173 -msgid "Rejection reason is required" -msgstr "Razão de rejeição necessária" +#~ msgid "Permission denied." +#~ msgstr "Permissão negada." -#: app/routes/expenses.py:886 -msgid "Expense rejected" -msgstr "Despesas rejeitadas" +#~ msgid "Integration provider not available." +#~ msgstr "Prestador de integração não disponível." -#: app/routes/expenses.py:890 app/routes/expenses.py:894 -msgid "Error rejecting expense" -msgstr "Erro ao rejeitar a despesa" +#~ msgid "Trello integration must be configured by an administrator." +#~ msgstr "A integração Trello deve ser configurada por um administrador." -#: app/routes/expenses.py:904 -msgid "Only administrators can mark expenses as reimbursed" -msgstr "Apenas os administradores podem marcar despesas como reembolsadas" +#~ msgid "Only administrators can set up global integrations." +#~ msgstr "Somente os administradores podem configurar integrações globais." -#: app/routes/expenses.py:910 -msgid "Only approved expenses can be marked as reimbursed" -msgstr "Apenas as despesas aprovadas podem ser assinaladas como reembolsadas" +#~ msgid "Could not initialize connector." +#~ msgstr "Não foi possível inicializar o conector." -#: app/routes/expenses.py:914 -msgid "This expense is not marked as reimbursable" -msgstr "Esta despesa não é marcada como reembolsável" +#~ msgid "" +#~ "Google Calendar OAuth credentials need " +#~ "to be configured first. Redirecting to" +#~ " setup..." +#~ msgstr "" +#~ "As credenciais do Google Calendar OAuth" +#~ " precisam ser configuradas primeiro. A " +#~ "reencaminhar para a configuração..." -#: app/routes/expenses.py:921 -msgid "Expense marked as reimbursed" -msgstr "Despesas assinaladas como reembolsadas" +#~ msgid "" +#~ "Google Calendar integration needs to be" +#~ " configured by an administrator first." +#~ msgstr "" +#~ "A integração do Google Calendar precisa" +#~ " ser configurada por um administrador " +#~ "primeiro." -#: app/routes/expenses.py:925 app/routes/expenses.py:929 -msgid "Error marking expense as reimbursed" -msgstr "Erro ao marcar despesas como reembolsado" +#~ msgid "OAuth credentials not configured. Please configure them first." +#~ msgstr "Credenciais OAuth não configuradas. Por favor configure- os primeiro." -#: app/routes/expenses.py:1260 -msgid "OCR is not available. Please contact your administrator." -msgstr "O OCR não está disponível. Por favor contacte o seu administrador." +#~ msgid "" +#~ "Integration not configured. Please ask " +#~ "an administrator to set up OAuth " +#~ "credentials." +#~ msgstr "" +#~ "Integração não configurada. Por favor, " +#~ "peça a um administrador para configurar" +#~ " as credenciais OAuth." -#: app/routes/expenses.py:1274 -msgid "Invalid file type. Allowed types: png, jpg, jpeg, gif, pdf" -msgstr "Tipo de ficheiro inválido. Tipos permitidos: png, jpg, jpeg, gif, pdf" +#~ msgid "Authorization failed: %(error)s" +#~ msgstr "A autorização falhou: %(error)s" -#: app/routes/expenses.py:1329 -msgid "" -"Receipt scanned successfully! You can now create an expense with the " -"extracted data." -msgstr "" -"Recibo digitalizado com sucesso! Agora você pode criar uma despesa com os " -"dados extraídos." +#~ msgid "Authorization code not received." +#~ msgstr "Código de autorização não recebido." -#: app/routes/expenses.py:1334 -msgid "" -"Error scanning receipt. Please try again or enter the expense manually." -msgstr "" -"Erro ao verificar o recibo. Por favor, tente novamente ou digite a despesa " -"manualmente." +#~ msgid "Integration not found." +#~ msgstr "Integração não encontrada." -#: app/routes/expenses.py:1347 -msgid "No scanned receipt data found. Please scan a receipt first." -msgstr "" -"Não foram encontrados dados de recibo digitalizados. Por favor, verifique um" -" recibo primeiro." +#~ msgid "Invalid state parameter. Please try connecting again." +#~ msgstr "Parâmetro de estado inválido. Por favor, tente ligar-se novamente." -#: app/routes/expenses.py:1434 -msgid "Expense created successfully from scanned receipt" -msgstr "Despesas criadas com sucesso a partir de recibo digitalizado" +#~ msgid "Integration connected successfully!" +#~ msgstr "Integração conectada com sucesso!" -#: app/routes/integrations.py:67 -msgid "Permission denied." -msgstr "Permissão negada." +#~ msgid "Integration connected but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:105 app/routes/integrations.py:1372 -msgid "Integration provider not available." -msgstr "Prestador de integração não disponível." +#~ msgid "Error connecting integration: %(error)s" +#~ msgstr "Erro ao conectar a integração: %(error)s" -#: app/routes/integrations.py:111 app/templates/integrations/manage.html:665 -msgid "Trello integration must be configured by an administrator." -msgstr "A integração Trello deve ser configurada por um administrador." +#~ msgid "Only administrators can configure global integrations." +#~ msgstr "Apenas administradores podem configurar integrações globais." -#: app/routes/integrations.py:132 -msgid "Only administrators can set up global integrations." -msgstr "Somente os administradores podem configurar integrações globais." +#~ msgid "Trello API Key is required." +#~ msgstr "Trello API Key é necessária." -#: app/routes/integrations.py:154 app/routes/integrations.py:275 -msgid "Could not initialize connector." -msgstr "Não foi possível inicializar o conector." +#~ msgid "Trello API Secret is required for new setup." +#~ msgstr "API Trello O segredo é necessário para uma nova configuração." -#: app/routes/integrations.py:185 -msgid "" -"Google Calendar OAuth credentials need to be configured first. Redirecting " -"to setup..." -msgstr "" -"As credenciais do Google Calendar OAuth precisam ser configuradas primeiro. " -"A reencaminhar para a configuração..." +#~ msgid "OAuth Client ID is required." +#~ msgstr "O ID do cliente OAuth é necessário." -#: app/routes/integrations.py:189 -msgid "" -"Google Calendar integration needs to be configured by an administrator " -"first." -msgstr "" -"A integração do Google Calendar precisa ser configurada por um administrador" -" primeiro." +#~ msgid "OAuth Client Secret is required for new setup." +#~ msgstr "OAuth Client Secret é necessário para uma nova configuração." -#: app/routes/integrations.py:191 -msgid "OAuth credentials not configured. Please configure them first." -msgstr "Credenciais OAuth não configuradas. Por favor configure- os primeiro." +#~ msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." +#~ msgstr "" +#~ "A URL da instância GitLab deve ser" +#~ " uma URL válida (por exemplo, " +#~ "https://gitlab.com)." -#: app/routes/integrations.py:194 -msgid "" -"Integration not configured. Please ask an administrator to set up OAuth " -"credentials." -msgstr "" -"Integração não configurada. Por favor, peça a um administrador para " -"configurar as credenciais OAuth." - -#: app/routes/integrations.py:210 -#, python-format -msgid "Authorization failed: %(error)s" -msgstr "A autorização falhou: %(error)s" - -#: app/routes/integrations.py:214 -msgid "Authorization code not received." -msgstr "Código de autorização não recebido." - -#: app/routes/integrations.py:225 app/routes/integrations.py:509 -#: app/routes/integrations.py:809 app/routes/integrations.py:857 -#: app/routes/integrations.py:898 app/routes/integrations.py:923 -#: app/routes/integrations.py:952 -msgid "Integration not found." -msgstr "Integração não encontrada." - -#: app/routes/integrations.py:262 -msgid "Invalid state parameter. Please try connecting again." -msgstr "Parâmetro de estado inválido. Por favor, tente ligar-se novamente." - -#: app/routes/integrations.py:297 -msgid "Integration connected successfully!" -msgstr "Integração conectada com sucesso!" - -#: app/routes/integrations.py:302 -#, python-format -msgid "Integration connected but connection test failed: %(message)s" -msgstr "" +#~ msgid "GitLab Instance URL format is invalid." +#~ msgstr "O formato de URL da instância GitLab é inválido." -#: app/routes/integrations.py:312 -#, python-format -msgid "Error connecting integration: %(error)s" -msgstr "Erro ao conectar a integração: %(error)s" +#~ msgid "Integration credentials updated successfully." +#~ msgstr "Credenciais de integração atualizados com sucesso." -#: app/routes/integrations.py:366 app/routes/integrations.py:1399 -msgid "Only administrators can configure global integrations." -msgstr "Apenas administradores podem configurar integrações globais." +#~ msgid "" +#~ "Users can now connect their Google " +#~ "Calendar. They will be automatically " +#~ "redirected to Google for authorization." +#~ msgstr "" +#~ "Os usuários agora podem conectar seu " +#~ "Google Calendar. Eles serão automaticamente" +#~ " redirecionados para o Google para " +#~ "autorização." -#: app/routes/integrations.py:379 -msgid "Trello API Key is required." -msgstr "Trello API Key é necessária." +#~ msgid "Failed to update credentials." +#~ msgstr "Falha ao atualizar as credenciais." -#: app/routes/integrations.py:385 -msgid "Trello API Secret is required for new setup." -msgstr "API Trello O segredo é necessário para uma nova configuração." +#~ msgid "Invalid action for this integration." +#~ msgstr "Acção inválida para esta integração." -#: app/routes/integrations.py:411 -msgid "OAuth Client ID is required." -msgstr "O ID do cliente OAuth é necessário." +#~ msgid "Linear API key is required." +#~ msgstr "Chave linear API é necessária." -#: app/routes/integrations.py:417 -msgid "OAuth Client Secret is required for new setup." -msgstr "OAuth Client Secret é necessário para uma nova configuração." +#~ msgid "Linear API key saved. Use Sync to import issues as tasks." +#~ msgstr "" +#~ "Chave linear da API salva. Use " +#~ "Sync para importar problemas como " +#~ "tarefas." -#: app/routes/integrations.py:473 -msgid "GitLab Instance URL must be a valid URL (e.g., https://gitlab.com)." -msgstr "" -"A URL da instância GitLab deve ser uma URL válida (por exemplo, " -"https://gitlab.com)." +#~ msgid "Could not save API key." +#~ msgstr "Não foi possível salvar a chave API." -#: app/routes/integrations.py:476 -msgid "GitLab Instance URL format is invalid." -msgstr "O formato de URL da instância GitLab é inválido." +#~ msgid "This action is only available for CalDAV integrations." +#~ msgstr "Esta ação só está disponível para integrações CalDAV." -#: app/routes/integrations.py:492 -msgid "Integration credentials updated successfully." -msgstr "Credenciais de integração atualizados com sucesso." +#~ msgid "Integration not found. Please connect the integration first." +#~ msgstr "Integração não encontrada. Por favor, conecte a integração primeiro." -#: app/routes/integrations.py:495 -msgid "" -"Users can now connect their Google Calendar. They will be automatically " -"redirected to Google for authorization." -msgstr "" -"Os usuários agora podem conectar seu Google Calendar. Eles serão " -"automaticamente redirecionados para o Google para autorização." +#~ msgid "Username is required." +#~ msgstr "O usuário é necessário." -#: app/routes/integrations.py:502 -msgid "Failed to update credentials." -msgstr "Falha ao atualizar as credenciais." +#~ msgid "Password is required for new setup." +#~ msgstr "A senha é necessária para uma nova configuração." -#: app/routes/integrations.py:506 -msgid "Invalid action for this integration." -msgstr "Acção inválida para esta integração." +#~ msgid "CalDAV credentials updated successfully." +#~ msgstr "Credenciais CalDAV atualizados com sucesso." -#: app/routes/integrations.py:513 -msgid "Linear API key is required." -msgstr "Chave linear API é necessária." +#~ msgid "Failed to update CalDAV credentials: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:527 -msgid "Linear API key saved. Use Sync to import issues as tasks." -msgstr "" -"Chave linear da API salva. Use Sync para importar problemas como tarefas." +#~ msgid "Invalid number for field %(field)s" +#~ msgstr "" -#: app/routes/integrations.py:529 -msgid "Could not save API key." -msgstr "Não foi possível salvar a chave API." +#~ msgid "Field %(field)s is required" +#~ msgstr "" -#: app/routes/integrations.py:536 -msgid "This action is only available for CalDAV integrations." -msgstr "Esta ação só está disponível para integrações CalDAV." +#~ msgid "Invalid JSON for field %(field)s" +#~ msgstr "" -#: app/routes/integrations.py:542 app/routes/integrations.py:594 -msgid "Integration not found. Please connect the integration first." -msgstr "Integração não encontrada. Por favor, conecte a integração primeiro." +#~ msgid "Integration configuration updated successfully." +#~ msgstr "Configuração de integração atualizada com sucesso." -#: app/routes/integrations.py:550 app/routes/integrations.py:1084 -msgid "Username is required." -msgstr "O usuário é necessário." +#~ msgid "Failed to update configuration." +#~ msgstr "Falha ao atualizar a configuração." -#: app/routes/integrations.py:556 app/routes/integrations.py:1086 -msgid "Password is required for new setup." -msgstr "A senha é necessária para uma nova configuração." +#~ msgid "Connection test successful!" +#~ msgstr "Teste de conexão bem sucedido!" -#: app/routes/integrations.py:578 -msgid "CalDAV credentials updated successfully." -msgstr "Credenciais CalDAV atualizados com sucesso." +#~ msgid "Connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:584 -#, python-format -msgid "Failed to update CalDAV credentials: %(message)s" -msgstr "" +#~ msgid "Integration deleted successfully." +#~ msgstr "Integração apagada com sucesso." -#: app/routes/integrations.py:644 -#, python-format -msgid "Invalid number for field %(field)s" -msgstr "" +#~ msgid "Integration reset successfully. You can now reconfigure it." +#~ msgstr "A integração foi reiniciada com sucesso. Agora podes reconfigura-lo." -#: app/routes/integrations.py:651 app/routes/integrations.py:673 -#, python-format -msgid "Field %(field)s is required" -msgstr "" +#~ msgid "Connector not available." +#~ msgstr "O conector não está disponível." -#: app/routes/integrations.py:664 app/routes/integrations.py:1451 -#, python-format -msgid "Invalid JSON for field %(field)s" -msgstr "" +#~ msgid "Sync completed successfully. %(details)s" +#~ msgstr "" -#: app/routes/integrations.py:697 -msgid "Integration configuration updated successfully." -msgstr "Configuração de integração atualizada com sucesso." +#~ msgid "Sync failed: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:700 -msgid "Failed to update configuration." -msgstr "Falha ao atualizar a configuração." +#~ msgid "Error during sync: %(error)s" +#~ msgstr "Erro durante a sincronização: %(error)s" -#: app/routes/integrations.py:879 -msgid "Connection test successful!" -msgstr "Teste de conexão bem sucedido!" +#~ msgid "Either server URL or calendar URL is required." +#~ msgstr "É necessário o URL do servidor ou o URL do calendário." -#: app/routes/integrations.py:881 -#, python-format -msgid "Connection test failed: %(message)s" -msgstr "" +#~ msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." +#~ msgstr "" +#~ "A URL do servidor deve ser uma " +#~ "URL válida (por exemplo, " +#~ "https://mail.example.com/dav)." -#: app/routes/integrations.py:904 -msgid "Integration deleted successfully." -msgstr "Integração apagada com sucesso." +#~ msgid "Server URL format is invalid." +#~ msgstr "O formato de URL do servidor é inválido." -#: app/routes/integrations.py:932 -msgid "Integration reset successfully. You can now reconfigure it." -msgstr "A integração foi reiniciada com sucesso. Agora podes reconfigura-lo." +#~ msgid "Calendar URL must be a valid URL." +#~ msgstr "O URL do calendário deve ser um URL válido." -#: app/routes/integrations.py:957 -msgid "Connector not available." -msgstr "O conector não está disponível." +#~ msgid "Calendar URL format is invalid." +#~ msgstr "O formato de URL do calendário é inválido." -#: app/routes/integrations.py:975 -#, python-format -msgid "Sync completed successfully. %(details)s" -msgstr "" +#~ msgid "Selected project not found or is not active." +#~ msgstr "O projeto selecionado não foi encontrado ou não está ativo." -#: app/routes/integrations.py:979 -#, python-format -msgid "Sync failed: %(message)s" -msgstr "" +#~ msgid "Lookback days must be between 1 and 365." +#~ msgstr "Os dias de busca devem ser entre 1 e 365." -#: app/routes/integrations.py:1001 -#, python-format -msgid "Error during sync: %(error)s" -msgstr "Erro durante a sincronização: %(error)s" +#~ msgid "Lookback days must be a valid number." +#~ msgstr "Os dias de busca devem ser um número válido." -#: app/routes/integrations.py:1051 -msgid "Either server URL or calendar URL is required." -msgstr "É necessário o URL do servidor ou o URL do calendário." +#~ msgid "Failed to save credentials: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:1060 -msgid "Server URL must be a valid URL (e.g., https://mail.example.com/dav)." -msgstr "" -"A URL do servidor deve ser uma URL válida (por exemplo, " -"https://mail.example.com/dav)." +#~ msgid "CalDAV integration configured successfully." +#~ msgstr "A integração com o CalDAV foi configurada com sucesso." -#: app/routes/integrations.py:1062 app/routes/integrations.py:1225 -msgid "Server URL format is invalid." -msgstr "O formato de URL do servidor é inválido." +#~ msgid "Failed to save CalDAV configuration." +#~ msgstr "Não foi possível gravar a configuração do CalDAV." -#: app/routes/integrations.py:1070 -msgid "Calendar URL must be a valid URL." -msgstr "O URL do calendário deve ser um URL válido." +#~ msgid "ActivityWatch server URL is required." +#~ msgstr "Actividade É necessária a URL do servidor de observação." -#: app/routes/integrations.py:1072 -msgid "Calendar URL format is invalid." -msgstr "O formato de URL do calendário é inválido." +#~ msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." +#~ msgstr "" +#~ "A URL do servidor deve ser uma " +#~ "URL válida (por exemplo, " +#~ "http://localhost:5600)." -#: app/routes/integrations.py:1094 app/routes/integrations.py:1232 -msgid "Selected project not found or is not active." -msgstr "O projeto selecionado não foi encontrado ou não está ativo." +#~ msgid "Lookback days must be between 1 and 90." +#~ msgstr "Os dias de busca devem estar entre 1 e 90." -#: app/routes/integrations.py:1101 -msgid "Lookback days must be between 1 and 365." -msgstr "Os dias de busca devem ser entre 1 e 365." +#~ msgid "ActivityWatch integration configured successfully." +#~ msgstr "Actividade Assista à integração configurada com sucesso." -#: app/routes/integrations.py:1103 app/routes/integrations.py:1241 -msgid "Lookback days must be a valid number." -msgstr "Os dias de busca devem ser um número válido." +#~ msgid "Configuration saved but connection test failed: %(message)s" +#~ msgstr "" -#: app/routes/integrations.py:1148 -#, python-format -msgid "Failed to save credentials: %(message)s" -msgstr "" +#~ msgid "Failed to save ActivityWatch configuration." +#~ msgstr "Não foi possível gravar a configuração do ActivityWatch." -#: app/routes/integrations.py:1164 -msgid "CalDAV integration configured successfully." -msgstr "A integração com o CalDAV foi configurada com sucesso." +#~ msgid "Setup wizard not available for this integration." +#~ msgstr "O assistente de configuração não está disponível para esta integração." -#: app/routes/integrations.py:1167 -msgid "Failed to save CalDAV configuration." -msgstr "Não foi possível gravar a configuração do CalDAV." +#~ msgid "Connector class not found." +#~ msgstr "A classe do conector não foi encontrada." -#: app/routes/integrations.py:1218 -msgid "ActivityWatch server URL is required." -msgstr "Actividade É necessária a URL do servidor de observação." +#~ msgid "Integration configured successfully!" +#~ msgstr "Integração configurada com sucesso!" -#: app/routes/integrations.py:1223 -msgid "Server URL must be a valid URL (e.g., http://localhost:5600)." -msgstr "" -"A URL do servidor deve ser uma URL válida (por exemplo, " -"http://localhost:5600)." +#~ msgid "Failed to save configuration." +#~ msgstr "Não foi possível gravar a configuração." -#: app/routes/integrations.py:1239 -msgid "Lookback days must be between 1 and 90." -msgstr "Os dias de busca devem estar entre 1 e 90." +#~ msgid "OAuth Setup" +#~ msgstr "Configuração do OAuth" -#: app/routes/integrations.py:1276 -msgid "ActivityWatch integration configured successfully." -msgstr "Actividade Assista à integração configurada com sucesso." +#~ msgid "Connection Test" +#~ msgstr "Teste de Ligação" -#: app/routes/integrations.py:1282 -#, python-format -msgid "Configuration saved but connection test failed: %(message)s" -msgstr "" +#~ msgid "Sync Config" +#~ msgstr "Sincronizar a Configuração" -#: app/routes/integrations.py:1288 -msgid "Failed to save ActivityWatch configuration." -msgstr "Não foi possível gravar a configuração do ActivityWatch." +#~ msgid "Advanced" +#~ msgstr "Avançado" -#: app/routes/integrations.py:1365 -msgid "Setup wizard not available for this integration." -msgstr "" -"O assistente de configuração não está disponível para esta integração." - -#: app/routes/integrations.py:1378 -msgid "Connector class not found." -msgstr "A classe do conector não foi encontrada." - -#: app/routes/integrations.py:1512 -msgid "Integration configured successfully!" -msgstr "Integração configurada com sucesso!" - -#: app/routes/integrations.py:1519 -msgid "Failed to save configuration." -msgstr "Não foi possível gravar a configuração." - -#: app/routes/integrations.py:1535 -msgid "OAuth Setup" -msgstr "Configuração do OAuth" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1541 -msgid "Connection Test" -msgstr "Teste de Ligação" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 -msgid "Sync Config" -msgstr "Sincronizar a Configuração" - -#: app/routes/integrations.py:1535 app/templates/admin/modules.html:179 -#: app/templates/admin/modules.html:221 -#: app/templates/admin/oidc_setup_wizard.html:41 -#: app/templates/admin/pdf_layout.html:1909 -#: app/templates/admin/quote_pdf_layout.html:1715 -msgid "Advanced" -msgstr "Avançado" - -#: app/routes/integrations.py:1535 app/routes/integrations.py:1536 -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -#: app/routes/integrations.py:1539 app/routes/integrations.py:1540 -#: app/routes/integrations.py:1541 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -#: app/templates/analytics/dashboard_improved.html:224 -#: app/templates/tasks/create.html:73 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:477 app/templates/tasks/edit.html:82 -#: app/templates/tasks/edit.html:657 app/templates/tasks/my_tasks.html:74 -#: app/templates/tasks/my_tasks.html:133 app/utils/i18n_helpers.py:18 -#: app/utils/i18n_helpers.py:30 -msgid "Review" -msgstr "Revisão" - -#: app/routes/integrations.py:1536 -msgid "Instance" -msgstr "Instância" - -#: app/routes/integrations.py:1536 app/routes/integrations.py:1537 -#: app/routes/integrations.py:1538 app/routes/integrations.py:1539 -#: app/routes/integrations.py:1540 app/routes/integrations.py:1542 -#: app/routes/integrations.py:1543 -msgid "OAuth" -msgstr "OAuth" - -#: app/routes/integrations.py:1536 app/routes/integrations.py:1539 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:197 -msgid "Repositories" -msgstr "Repositórios" - -#: app/routes/integrations.py:1536 -msgid "Sync Settings" -msgstr "Configuração da Sincronização" - -#: app/routes/integrations.py:1537 app/templates/leads/list.html:51 -#: app/templates/leads/list.html:65 app/templates/leads/view.html:43 -#: app/templates/setup/initial_setup.html:135 -msgid "Company" -msgstr "Empresa" - -#: app/routes/integrations.py:1537 app/routes/integrations.py:1538 -msgid "Mappings" -msgstr "Mapeamentos" - -#: app/routes/integrations.py:1538 -msgid "Tenant" -msgstr "Tenant" - -#: app/routes/integrations.py:1539 app/templates/admin/webhooks/form.html:7 -#: app/templates/admin/webhooks/list.html:7 -#: app/templates/admin/webhooks/list.html:12 -#: app/templates/admin/webhooks/view.html:7 app/templates/base.html:1079 -msgid "Webhooks" -msgstr "Anzóis Web" - -#: app/routes/integrations.py:1540 -msgid "Workspace" -msgstr "Espaço de trabalho" - -#: app/routes/integrations.py:1540 -#: app/templates/admin/oidc_user_detail.html:61 -#: app/templates/analytics/mobile_dashboard.html:49 -#: app/templates/auth/login.html:37 app/templates/base.html:602 -#: app/templates/client_portal/base.html:257 -#: app/templates/client_portal/base.html:342 -#: app/templates/client_portal/dashboard.html:76 -#: app/templates/client_portal/project_comments.html:9 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:9 -#: app/templates/client_portal/projects.html:14 -#: app/templates/client_portal/widgets/projects.html:8 -#: app/templates/components/activity_feed_widget.html:23 -#: app/templates/components/offline_indicator.html:84 -#: app/templates/integrations/wizard_asana.html:110 -#: app/templates/integrations/wizard_gitlab.html:148 -#: app/templates/integrations/wizard_jira.html:134 -#: app/templates/partials/_bottom_nav.html:78 -#: app/templates/partials/_bottom_nav.html:82 -#: app/templates/projects/add_cost.html:11 -#: app/templates/projects/edit_cost.html:11 -#: app/templates/projects/time_entries_overview.html:8 -#: app/templates/projects/view.html:6 app/templates/reports/builder.html:367 -#: app/templates/reports/unpaid_hours_report.html:76 -#: app/templates/reports/unpaid_hours_report.html:97 -msgid "Projects" -msgstr "Projectos" - -#: app/routes/integrations.py:1541 -msgid "API Keys" -msgstr "Chaves de API" - -#: app/routes/integrations.py:1542 app/routes/integrations.py:1543 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_microsoft_teams.html:82 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:82 -#: app/templates/integrations/wizard_xero.html:43 -#: app/templates/integrations/wizard_xero.html:179 -msgid "Tenant ID" -msgstr "ID do inquilino" - -#: app/routes/integrations.py:1554 -#, python-format -msgid "%(name)s Setup Wizard" -msgstr "" +#~ msgid "Review" +#~ msgstr "Revisão" -#: app/routes/integrations.py:1555 -#, python-format -msgid "Guided step-by-step configuration for %(name)s" -msgstr "" +#~ msgid "Instance" +#~ msgstr "Instância" -#: app/routes/integrations.py:1593 -msgid "Integration not found" -msgstr "Integração não encontrada" +#~ msgid "OAuth" +#~ msgstr "OAuth" -#: app/routes/integrations.py:1598 -msgid "Connector not available" -msgstr "Conector não disponível" +#~ msgid "Repositories" +#~ msgstr "Repositórios" -#: app/routes/inventory.py:190 -msgid "SKU is required" -msgstr "SKU é necessário" +#~ msgid "Sync Settings" +#~ msgstr "Configuração da Sincronização" -#: app/routes/inventory.py:194 -msgid "Name is required" -msgstr "O nome é obrigatório" +#~ msgid "Company" +#~ msgstr "Empresa" -#: app/routes/inventory.py:201 -#, python-format -msgid "Invalid SKU: %(error)s" -msgstr "" +#~ msgid "Mappings" +#~ msgstr "Mapeamentos" -#: app/routes/inventory.py:208 -#, python-format -msgid "Invalid name: %(error)s" -msgstr "" +#~ msgid "Tenant" +#~ msgstr "Tenant" -#: app/routes/inventory.py:214 app/routes/inventory.py:448 -msgid "SKU already exists. Please use a different SKU." -msgstr "A SKU já existe. Por favor, use um SKU diferente." +#~ msgid "Webhooks" +#~ msgstr "Anzóis Web" -#: app/routes/inventory.py:294 -msgid "Stock item created successfully." -msgstr "Item de stock criado com sucesso." +#~ msgid "Workspace" +#~ msgstr "Espaço de trabalho" -#: app/routes/inventory.py:299 -#, python-format -msgid "Error creating stock item: %(error)s" -msgstr "" +#~ msgid "Projects" +#~ msgstr "Projectos" -#: app/routes/inventory.py:565 -msgid "Stock item updated successfully." -msgstr "Artigo de stock actualizado com sucesso." +#~ msgid "API Keys" +#~ msgstr "Chaves de API" -#: app/routes/inventory.py:570 -#, python-format -msgid "Error updating stock item: %(error)s" -msgstr "" +#~ msgid "Tenant ID" +#~ msgstr "ID do inquilino" -#: app/routes/inventory.py:590 -msgid "Cannot delete stock item with existing stock or movement history." -msgstr "" -"Não é possível apagar o item de stock com o histórico de stock ou movimento " -"existente." +#~ msgid "%(name)s Setup Wizard" +#~ msgstr "" -#: app/routes/inventory.py:598 -msgid "Stock item deleted successfully." -msgstr "O item de stock apagado com sucesso." +#~ msgid "Guided step-by-step configuration for %(name)s" +#~ msgstr "" -#: app/routes/inventory.py:602 -#, python-format -msgid "Error deleting stock item: %(error)s" -msgstr "" +#~ msgid "Integration not found" +#~ msgstr "Integração não encontrada" -#: app/routes/inventory.py:640 app/routes/inventory.py:710 -msgid "Warehouse code already exists. Please use a different code." -msgstr "O código do armazém já existe. Por favor, use um código diferente." +#~ msgid "Connector not available" +#~ msgstr "Conector não disponível" -#: app/routes/inventory.py:659 -msgid "Warehouse created successfully." -msgstr "Armazém criado com sucesso." +#~ msgid "SKU is required" +#~ msgstr "SKU é necessário" -#: app/routes/inventory.py:664 -#, python-format -msgid "Error creating warehouse: %(error)s" -msgstr "Erro ao criar o armazém: %(error)s" +#~ msgid "Name is required" +#~ msgstr "O nome é obrigatório" -#: app/routes/inventory.py:726 -msgid "Warehouse updated successfully." -msgstr "Armazém actualizado com sucesso." +#~ msgid "Invalid SKU: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:731 -#, python-format -msgid "Error updating warehouse: %(error)s" -msgstr "" +#~ msgid "Invalid name: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:747 -msgid "" -"Cannot delete warehouse with existing stock. Please transfer or remove all " -"stock first." -msgstr "" -"Não é possível apagar o armazém com o stock existente. Por favor, transfira " -"ou remova todo o stock primeiro." +#~ msgid "SKU already exists. Please use a different SKU." +#~ msgstr "A SKU já existe. Por favor, use um SKU diferente." -#: app/routes/inventory.py:755 -msgid "Warehouse deleted successfully." -msgstr "Armazém apagado com sucesso." +#~ msgid "Stock item created successfully." +#~ msgstr "Item de stock criado com sucesso." -#: app/routes/inventory.py:759 -#, python-format -msgid "Error deleting warehouse: %(error)s" -msgstr "Erro ao remover o armazém: %(error)s" +#~ msgid "Error creating stock item: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:945 app/routes/inventory.py:1027 -msgid "Stock item is not trackable. Devaluation requires trackable items." -msgstr "" -"O item de estoque não é rastreável. A desvalorização requer itens " -"rastreáveis." +#~ msgid "Stock item updated successfully." +#~ msgstr "Artigo de stock actualizado com sucesso." -#: app/routes/inventory.py:947 -msgid "Devaluation quantity must be positive" -msgstr "A quantidade de desvalorização deve ser positiva" +#~ msgid "Error updating stock item: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:951 app/routes/inventory.py:1031 -msgid "Stock item must have a default cost to perform devaluation" -msgstr "" -"O valor das ações deve ter um custo padrão para realizar a desvalorização" +#~ msgid "Cannot delete stock item with existing stock or movement history." +#~ msgstr "" +#~ "Não é possível apagar o item de" +#~ " stock com o histórico de stock " +#~ "ou movimento existente." -#: app/routes/inventory.py:956 -msgid "Devaluation percent is required when using percent method" -msgstr "" -"Percentagem de desvalorização é necessária quando se usa o método da " -"porcentagem" +#~ msgid "Stock item deleted successfully." +#~ msgstr "O item de stock apagado com sucesso." -#: app/routes/inventory.py:960 app/routes/inventory.py:1040 -msgid "Invalid devaluation percent value" -msgstr "Valor percentual de desvalorização inválido" +#~ msgid "Error deleting stock item: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:962 app/routes/inventory.py:1042 -msgid "Devaluation percent cannot be negative" -msgstr "A desvalorização percentual não pode ser negativa" +#~ msgid "Warehouse code already exists. Please use a different code." +#~ msgstr "O código do armazém já existe. Por favor, use um código diferente." -#: app/routes/inventory.py:964 app/routes/inventory.py:1044 -msgid "Devaluation percent cannot exceed 100%" -msgstr "Percentagem de desvalorização não pode exceder 100%" +#~ msgid "Warehouse created successfully." +#~ msgstr "Armazém criado com sucesso." -#: app/routes/inventory.py:968 -msgid "New unit cost is required when using fixed cost method" -msgstr "" -"Novo custo unitário é necessário quando se utiliza o método do custo fixo" +#~ msgid "Error creating warehouse: %(error)s" +#~ msgstr "Erro ao criar o armazém: %(error)s" -#: app/routes/inventory.py:972 app/routes/inventory.py:1054 -msgid "Invalid unit cost value" -msgstr "Valor unitário de custo inválido" +#~ msgid "Warehouse updated successfully." +#~ msgstr "Armazém actualizado com sucesso." -#: app/routes/inventory.py:974 app/routes/inventory.py:1056 -msgid "Unit cost cannot be negative" -msgstr "Custo unitário não pode ser negativo" +#~ msgid "Error updating warehouse: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:976 app/routes/inventory.py:1058 -msgid "Invalid devaluation method" -msgstr "Método de desvalorização inválido" +#~ msgid "" +#~ "Cannot delete warehouse with existing " +#~ "stock. Please transfer or remove all " +#~ "stock first." +#~ msgstr "" +#~ "Não é possível apagar o armazém " +#~ "com o stock existente. Por favor, " +#~ "transfira ou remova todo o stock " +#~ "primeiro." -#: app/routes/inventory.py:984 app/routes/inventory.py:1070 -#: app/routes/inventory.py:1084 -#, python-format -msgid "" -"Devaluation cost (%(devalued)s) cannot be greater than original cost " -"(%(original)s)" -msgstr "" +#~ msgid "Warehouse deleted successfully." +#~ msgstr "Armazém apagado com sucesso." -#: app/routes/inventory.py:998 -#, python-format -msgid "" -"Insufficient stock to devalue. Available: %(available)s, Requested: " -"%(requested)s" -msgstr "" +#~ msgid "Error deleting warehouse: %(error)s" +#~ msgstr "Erro ao remover o armazém: %(error)s" -#: app/routes/inventory.py:1013 -msgid "Stock devaluation recorded successfully." -msgstr "Desvalorização das existências registada com sucesso." +#~ msgid "Stock item is not trackable. Devaluation requires trackable items." +#~ msgstr "" +#~ "O item de estoque não é " +#~ "rastreável. A desvalorização requer itens " +#~ "rastreáveis." -#: app/routes/inventory.py:1020 -msgid "Return movements must use a positive quantity" -msgstr "Os movimentos de retorno devem utilizar uma quantidade positiva" +#~ msgid "Devaluation quantity must be positive" +#~ msgstr "A quantidade de desvalorização deve ser positiva" -#: app/routes/inventory.py:1022 -msgid "Waste movements must use a negative quantity" -msgstr "Os movimentos de resíduos devem utilizar uma quantidade negativa" +#~ msgid "Stock item must have a default cost to perform devaluation" +#~ msgstr "" +#~ "O valor das ações deve ter um " +#~ "custo padrão para realizar a " +#~ "desvalorização" -#: app/routes/inventory.py:1036 -msgid "Devaluation percent is required when devaluation is enabled" -msgstr "" -"Percentagem de desvalorização é necessária quando a desvalorização é ativada" +#~ msgid "Devaluation percent is required when using percent method" +#~ msgstr "" +#~ "Percentagem de desvalorização é necessária " +#~ "quando se usa o método da " +#~ "porcentagem" -#: app/routes/inventory.py:1050 -msgid "New unit cost is required when devaluation is enabled" -msgstr "" -"É necessário um novo custo unitário quando a desvalorização estiver activa" +#~ msgid "Invalid devaluation percent value" +#~ msgstr "Valor percentual de desvalorização inválido" -#: app/routes/inventory.py:1098 -#, python-format -msgid "" -"Insufficient stock to waste. Available: %(available)s, Requested: " -"%(requested)s" -msgstr "" +#~ msgid "Devaluation percent cannot be negative" +#~ msgstr "A desvalorização percentual não pode ser negativa" -#: app/routes/inventory.py:1120 -#, python-format -msgid "Failed to devalue stock before waste: %(error)s" -msgstr "" +#~ msgid "Devaluation percent cannot exceed 100%" +#~ msgstr "Percentagem de desvalorização não pode exceder 100%" -#: app/routes/inventory.py:1142 -#, python-format -msgid "Failed to record movement: %(error)s" -msgstr "Falha ao gravar o movimento: %(error)s" +#~ msgid "New unit cost is required when using fixed cost method" +#~ msgstr "" +#~ "Novo custo unitário é necessário quando" +#~ " se utiliza o método do custo " +#~ "fixo" -#: app/routes/inventory.py:1156 -msgid "Return movement recorded successfully with devaluation applied." -msgstr "" -"Movimento de retorno registrado com sucesso com desvalorização aplicada." +#~ msgid "Invalid unit cost value" +#~ msgstr "Valor unitário de custo inválido" -#: app/routes/inventory.py:1158 -msgid "Waste movement recorded successfully with devaluation applied." -msgstr "" -"Movimento de resíduos registado com sucesso com a desvalorização aplicada." +#~ msgid "Unit cost cannot be negative" +#~ msgstr "Custo unitário não pode ser negativo" -#: app/routes/inventory.py:1160 -msgid "Stock movement recorded successfully." -msgstr "Movimento de ações registrado com sucesso." +#~ msgid "Invalid devaluation method" +#~ msgstr "Método de desvalorização inválido" -#: app/routes/inventory.py:1166 -#, python-format -msgid "Error: %(error)s" -msgstr "" +#~ msgid "" +#~ "Devaluation cost (%(devalued)s) cannot be " +#~ "greater than original cost (%(original)s)" +#~ msgstr "" -#: app/routes/inventory.py:1170 -#, python-format -msgid "Error recording stock movement: %(error)s" -msgstr "" +#~ msgid "" +#~ "Insufficient stock to devalue. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/inventory.py:1242 -msgid "Source and destination warehouses must be different." -msgstr "Os armazéns de origem e destino devem ser diferentes." +#~ msgid "Stock devaluation recorded successfully." +#~ msgstr "Desvalorização das existências registada com sucesso." -#: app/routes/inventory.py:1255 -msgid "Insufficient stock available in source warehouse." -msgstr "Existências insuficientes disponíveis no armazém de origem." +#~ msgid "Return movements must use a positive quantity" +#~ msgstr "Os movimentos de retorno devem utilizar uma quantidade positiva" -#: app/routes/inventory.py:1271 -msgid "Stock item not found." -msgstr "O item da reserva não foi encontrado." +#~ msgid "Waste movements must use a negative quantity" +#~ msgstr "Os movimentos de resíduos devem utilizar uma quantidade negativa" -#: app/routes/inventory.py:1274 -msgid "Source warehouse not found." -msgstr "Armazém fonte não encontrado." +#~ msgid "Devaluation percent is required when devaluation is enabled" +#~ msgstr "" +#~ "Percentagem de desvalorização é necessária " +#~ "quando a desvalorização é ativada" -#: app/routes/inventory.py:1277 -msgid "Destination warehouse not found." -msgstr "Depósito de destino não encontrado." +#~ msgid "New unit cost is required when devaluation is enabled" +#~ msgstr "" +#~ "É necessário um novo custo unitário " +#~ "quando a desvalorização estiver activa" -#: app/routes/inventory.py:1320 -msgid "Stock transfer completed successfully." -msgstr "Transferência de stock concluída com sucesso." +#~ msgid "" +#~ "Insufficient stock to waste. Available: " +#~ "%(available)s, Requested: %(requested)s" +#~ msgstr "" -#: app/routes/inventory.py:1325 -#, python-format -msgid "Error creating transfer: %(error)s" -msgstr "Erro ao criar a transferência: %(error)s" +#~ msgid "Failed to devalue stock before waste: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1425 -msgid "Stock adjustment recorded successfully." -msgstr "Ajustamento de ações registrado com sucesso." +#~ msgid "Failed to record movement: %(error)s" +#~ msgstr "Falha ao gravar o movimento: %(error)s" -#: app/routes/inventory.py:1430 -#, python-format -msgid "Error recording adjustment: %(error)s" -msgstr "Erro ao gravar o ajuste: %(error)s" +#~ msgid "Return movement recorded successfully with devaluation applied." +#~ msgstr "" +#~ "Movimento de retorno registrado com " +#~ "sucesso com desvalorização aplicada." -#: app/routes/inventory.py:1574 -msgid "Reservation fulfilled successfully." -msgstr "Reserva cumprida com sucesso." +#~ msgid "Waste movement recorded successfully with devaluation applied." +#~ msgstr "" +#~ "Movimento de resíduos registado com " +#~ "sucesso com a desvalorização aplicada." -#: app/routes/inventory.py:1577 -#, python-format -msgid "Error fulfilling reservation: %(error)s" -msgstr "Erro ao cumprir a reserva: %(error)s" +#~ msgid "Stock movement recorded successfully." +#~ msgstr "Movimento de ações registrado com sucesso." -#: app/routes/inventory.py:1595 -msgid "Reservation cancelled successfully." -msgstr "A reserva foi cancelada com sucesso." +#~ msgid "Error: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1598 -#, python-format -msgid "Error cancelling reservation: %(error)s" -msgstr "" +#~ msgid "Error recording stock movement: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1642 -#, python-format -msgid "Supplier with code '%(code)s' already exists" -msgstr "O fornecedor com código '%(code)s' já existe" +#~ msgid "Source and destination warehouses must be different." +#~ msgstr "Os armazéns de origem e destino devem ser diferentes." -#: app/routes/inventory.py:1666 -msgid "Supplier created successfully." -msgstr "O fornecedor foi criado com sucesso." +#~ msgid "Insufficient stock available in source warehouse." +#~ msgstr "Existências insuficientes disponíveis no armazém de origem." -#: app/routes/inventory.py:1671 -#, python-format -msgid "Error creating supplier: %(error)s" -msgstr "Erro ao criar o fornecedor: %(error)s" +#~ msgid "Stock item not found." +#~ msgstr "O item da reserva não foi encontrado." -#: app/routes/inventory.py:1715 -msgid "Supplier code already exists. Please use a different code." -msgstr "O código do fornecedor já existe. Por favor, use um código diferente." +#~ msgid "Source warehouse not found." +#~ msgstr "Armazém fonte não encontrado." -#: app/routes/inventory.py:1736 -msgid "Supplier updated successfully." -msgstr "O fornecedor foi actualizado com sucesso." +#~ msgid "Destination warehouse not found." +#~ msgstr "Depósito de destino não encontrado." -#: app/routes/inventory.py:1741 -#, python-format -msgid "Error updating supplier: %(error)s" -msgstr "Erro ao atualizar o fornecedor: %(error)s" +#~ msgid "Stock transfer completed successfully." +#~ msgstr "Transferência de stock concluída com sucesso." -#: app/routes/inventory.py:1757 -msgid "" -"Cannot delete supplier with associated stock items. Remove items first." -msgstr "" -"Não é possível apagar o fornecedor com itens de stock associados. Remova os " -"itens primeiro." +#~ msgid "Error creating transfer: %(error)s" +#~ msgstr "Erro ao criar a transferência: %(error)s" -#: app/routes/inventory.py:1766 -msgid "Supplier deleted successfully." -msgstr "O fornecedor foi excluído com sucesso." +#~ msgid "Stock adjustment recorded successfully." +#~ msgstr "Ajustamento de ações registrado com sucesso." -#: app/routes/inventory.py:1769 -#, python-format -msgid "Error deleting supplier: %(error)s" -msgstr "Erro ao excluir o fornecedor: %(error)s" +#~ msgid "Error recording adjustment: %(error)s" +#~ msgstr "Erro ao gravar o ajuste: %(error)s" -#: app/routes/inventory.py:1817 -msgid "Supplier is required." -msgstr "O fornecedor é necessário." +#~ msgid "Reservation fulfilled successfully." +#~ msgstr "Reserva cumprida com sucesso." -#: app/routes/inventory.py:1822 -msgid "Supplier not found." -msgstr "O fornecedor não foi encontrado." +#~ msgid "Error fulfilling reservation: %(error)s" +#~ msgstr "Erro ao cumprir a reserva: %(error)s" -#: app/routes/inventory.py:1827 -msgid "Order date is required." -msgstr "A data da encomenda é exigida." +#~ msgid "Reservation cancelled successfully." +#~ msgstr "A reserva foi cancelada com sucesso." -#: app/routes/inventory.py:1908 -msgid "Could not create purchase order due to a database error." -msgstr "" -"Não foi possível criar a ordem de compra devido a um erro no banco de dados." +#~ msgid "Error cancelling reservation: %(error)s" +#~ msgstr "" -#: app/routes/inventory.py:1916 -msgid "Purchase order created successfully." -msgstr "Ordem de compra criada com sucesso." +#~ msgid "Supplier with code '%(code)s' already exists" +#~ msgstr "O fornecedor com código '%(code)s' já existe" -#: app/routes/inventory.py:1921 -#, python-format -msgid "Error creating purchase order: %(error)s" -msgstr "Erro ao criar a ordem de compra: %(error)s" +#~ msgid "Supplier created successfully." +#~ msgstr "O fornecedor foi criado com sucesso." -#: app/routes/inventory.py:1966 -msgid "Cannot edit a purchase order that has been received." -msgstr "Não é possível editar uma ordem de compra recebida." +#~ msgid "Error creating supplier: %(error)s" +#~ msgstr "Erro ao criar o fornecedor: %(error)s" -#: app/routes/inventory.py:2038 -msgid "Could not update purchase order due to a database error." -msgstr "" -"Não foi possível atualizar a ordem de compra devido a um erro no banco de " -"dados." +#~ msgid "Supplier code already exists. Please use a different code." +#~ msgstr "O código do fornecedor já existe. Por favor, use um código diferente." -#: app/routes/inventory.py:2042 -msgid "Purchase order updated successfully." -msgstr "Ordem de compra atualizada com sucesso." +#~ msgid "Supplier updated successfully." +#~ msgstr "O fornecedor foi actualizado com sucesso." -#: app/routes/inventory.py:2047 -#, python-format -msgid "Error updating purchase order: %(error)s" -msgstr "Erro ao atualizar a ordem de compra: %(error)s" +#~ msgid "Error updating supplier: %(error)s" +#~ msgstr "Erro ao atualizar o fornecedor: %(error)s" -#: app/routes/inventory.py:2079 -msgid "Could not update purchase order status due to a database error." -msgstr "" -"Não foi possível atualizar o status da ordem de compra devido a um erro na " -"base de dados." +#~ msgid "Cannot delete supplier with associated stock items. Remove items first." +#~ msgstr "" +#~ "Não é possível apagar o fornecedor " +#~ "com itens de stock associados. Remova" +#~ " os itens primeiro." -#: app/routes/inventory.py:2083 -msgid "Purchase order marked as sent." -msgstr "Ordem de compra marcada como enviada." +#~ msgid "Supplier deleted successfully." +#~ msgstr "O fornecedor foi excluído com sucesso." -#: app/routes/inventory.py:2086 -#, python-format -msgid "Error sending purchase order: %(error)s" -msgstr "Erro ao enviar a ordem de compra: %(error)s" +#~ msgid "Error deleting supplier: %(error)s" +#~ msgstr "Erro ao excluir o fornecedor: %(error)s" -#: app/routes/inventory.py:2103 -msgid "Could not cancel purchase order due to a database error." -msgstr "" -"Não foi possível cancelar o pedido de compra devido a um erro na base de " -"dados." +#~ msgid "Supplier is required." +#~ msgstr "O fornecedor é necessário." -#: app/routes/inventory.py:2107 -msgid "Purchase order cancelled successfully." -msgstr "Ordem de compra cancelada com sucesso." +#~ msgid "Supplier not found." +#~ msgstr "O fornecedor não foi encontrado." -#: app/routes/inventory.py:2110 -#, python-format -msgid "Error cancelling purchase order: %(error)s" -msgstr "Erro ao cancelar a ordem de compra: %(error)s" +#~ msgid "Order date is required." +#~ msgstr "A data da encomenda é exigida." -#: app/routes/inventory.py:2125 -msgid "" -"Cannot delete a purchase order that has been received. Cancel it instead." -msgstr "" -"Não é possível excluir uma ordem de compra recebida. Cancela em vez disso." +#~ msgid "Could not create purchase order due to a database error." +#~ msgstr "" +#~ "Não foi possível criar a ordem de" +#~ " compra devido a um erro no " +#~ "banco de dados." -#: app/routes/inventory.py:2131 -msgid "Could not delete purchase order due to a database error." -msgstr "" -"Não foi possível excluir a ordem de compra devido a um erro na base de " -"dados." +#~ msgid "Purchase order created successfully." +#~ msgstr "Ordem de compra criada com sucesso." -#: app/routes/inventory.py:2135 -msgid "Purchase order deleted successfully." -msgstr "Ordem de compra apagada com sucesso." +#~ msgid "Error creating purchase order: %(error)s" +#~ msgstr "Erro ao criar a ordem de compra: %(error)s" -#: app/routes/inventory.py:2139 -#, python-format -msgid "Error deleting purchase order: %(error)s" -msgstr "Erro ao excluir a ordem de compra: %(error)s" +#~ msgid "Cannot edit a purchase order that has been received." +#~ msgstr "Não é possível editar uma ordem de compra recebida." -#: app/routes/inventory.py:2175 -msgid "Could not receive purchase order due to a database error." -msgstr "" -"Não foi possível receber a ordem de compra devido a um erro no banco de " -"dados." - -#: app/routes/inventory.py:2179 -msgid "Purchase order marked as received and stock updated." -msgstr "Ordem de compra marcada como recebido e estoque atualizado." - -#: app/routes/inventory.py:2182 -#, python-format -msgid "Error receiving purchase order: %(error)s" -msgstr "Erro ao receber o pedido de compra: %(error)s" - -#: app/routes/invoice_approvals.py:31 -msgid "An approval request is already pending for this invoice." -msgstr "Já está pendente um pedido de aprovação para esta factura." - -#: app/routes/invoice_approvals.py:44 -#: app/templates/invoice_approvals/request.html:49 -msgid "Please select at least one approver." -msgstr "Selecione pelo menos um aprovador." - -#: app/routes/invoice_approvals.py:52 -msgid "Approval request created successfully." -msgstr "Pedido de aprovação criado com sucesso." - -#: app/routes/invoice_approvals.py:83 -msgid "Invoice approved successfully." -msgstr "A factura foi aprovada com sucesso." - -#: app/routes/invoice_approvals.py:100 -msgid "Please provide a reason for rejection." -msgstr "Por favor, forneça uma razão para a rejeição." - -#: app/routes/invoice_approvals.py:107 -msgid "Invoice approval rejected." -msgstr "A aprovação da factura foi rejeitada." - -#: app/routes/invoices.py:112 -msgid "Project, client name, and due date are required" -msgstr "O projeto, nome do cliente e data de vencimento são necessários" - -#: app/routes/invoices.py:118 app/routes/tasks.py:238 app/routes/tasks.py:461 -msgid "Invalid due date format" -msgstr "Formato de data de vencimento inválido" - -#: app/routes/invoices.py:124 app/routes/offers.py:108 -#: app/routes/offers.py:240 app/routes/quotes.py:225 app/routes/quotes.py:544 -#: app/routes/recurring_invoices.py:88 -msgid "Invalid tax rate format" -msgstr "Formato de taxa de imposto inválido" - -#: app/routes/invoices.py:130 -msgid "Selected project not found" -msgstr "Projeto selecionado não encontrado" - -#: app/routes/invoices.py:187 -msgid "" -"Could not create invoice due to a database error. Please check server logs." -msgstr "" -"Não foi possível criar fatura devido a um erro na base de dados. Por favor, " -"verifique os registos do servidor." +#~ msgid "Could not update purchase order due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar a ordem " +#~ "de compra devido a um erro no " +#~ "banco de dados." -#: app/routes/invoices.py:259 -msgid "You do not have permission to view this invoice" -msgstr "Você não tem permissão para visualizar esta fatura" +#~ msgid "Purchase order updated successfully." +#~ msgstr "Ordem de compra atualizada com sucesso." -#: app/routes/invoices.py:305 -msgid "" -"Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." -msgstr "" -"Empresa Imposto ID (IVA) está faltando em Admin → Configurações → Branding " -"empresa." +#~ msgid "Error updating purchase order: %(error)s" +#~ msgstr "Erro ao atualizar a ordem de compra: %(error)s" -#: app/routes/invoices.py:309 -msgid "" -"Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" -"Sender Endpoint ID está faltando no Admin → Configurações → Peppol " -"e-Invoicing." +#~ msgid "Could not update purchase order status due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar o status " +#~ "da ordem de compra devido a um " +#~ "erro na base de dados." -#: app/routes/invoices.py:313 -msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." -msgstr "" -"Esquema de remetente ID está faltando em Admin → Configurações → Peppol " -"e-Invoicing." +#~ msgid "Purchase order marked as sent." +#~ msgstr "Ordem de compra marcada como enviada." -#: app/routes/invoices.py:319 -msgid "" -"Client Peppol Endpoint ID is missing. Add peppol_endpoint_id to the client's" -" custom fields." -msgstr "" -"Cliente Peppol Endpoint ID está faltando. Adicione peppol endpoint id aos " -"campos personalizados do cliente." +#~ msgid "Error sending purchase order: %(error)s" +#~ msgstr "Erro ao enviar a ordem de compra: %(error)s" -#: app/routes/invoices.py:323 -msgid "" -"Client Peppol Scheme ID is missing. Add peppol_scheme_id to the client's " -"custom fields." -msgstr "" -"Cliente Peppol Esquema ID está faltando. Adicione peppol scheme id aos " -"campos personalizados do cliente." +#~ msgid "Could not cancel purchase order due to a database error." +#~ msgstr "" +#~ "Não foi possível cancelar o pedido " +#~ "de compra devido a um erro na " +#~ "base de dados." -#: app/routes/invoices.py:327 -msgid "" -"Invoice has no linked client; buyer PEPPOL identifiers cannot be checked." -msgstr "" -"A factura não tem nenhum cliente ligado; os identificadores do comprador " -"PEPPOL não podem ser verificados." +#~ msgid "Purchase order cancelled successfully." +#~ msgstr "Ordem de compra cancelada com sucesso." -#: app/routes/invoices.py:334 app/routes/invoices.py:341 -msgid "Could not verify PEPPOL compliance; check configuration." -msgstr "" -"Não foi possível verificar a conformidade com o PEPPOL; verifique a " -"configuração." +#~ msgid "Error cancelling purchase order: %(error)s" +#~ msgstr "Erro ao cancelar a ordem de compra: %(error)s" -#: app/routes/invoices.py:391 app/routes/invoices.py:894 -msgid "You do not have permission to edit this invoice" -msgstr "Você não tem permissão para editar esta fatura" +#~ msgid "" +#~ "Cannot delete a purchase order that " +#~ "has been received. Cancel it instead." +#~ msgstr "" +#~ "Não é possível excluir uma ordem " +#~ "de compra recebida. Cancela em vez " +#~ "disso." + +#~ msgid "Could not delete purchase order due to a database error." +#~ msgstr "" +#~ "Não foi possível excluir a ordem " +#~ "de compra devido a um erro na " +#~ "base de dados." + +#~ msgid "Purchase order deleted successfully." +#~ msgstr "Ordem de compra apagada com sucesso." + +#~ msgid "Error deleting purchase order: %(error)s" +#~ msgstr "Erro ao excluir a ordem de compra: %(error)s" + +#~ msgid "Could not receive purchase order due to a database error." +#~ msgstr "" +#~ "Não foi possível receber a ordem " +#~ "de compra devido a um erro no " +#~ "banco de dados." + +#~ msgid "Purchase order marked as received and stock updated." +#~ msgstr "Ordem de compra marcada como recebido e estoque atualizado." + +#~ msgid "Error receiving purchase order: %(error)s" +#~ msgstr "Erro ao receber o pedido de compra: %(error)s" + +#~ msgid "An approval request is already pending for this invoice." +#~ msgstr "Já está pendente um pedido de aprovação para esta factura." + +#~ msgid "Please select at least one approver." +#~ msgstr "Selecione pelo menos um aprovador." + +#~ msgid "Approval request created successfully." +#~ msgstr "Pedido de aprovação criado com sucesso." + +#~ msgid "Invoice approved successfully." +#~ msgstr "A factura foi aprovada com sucesso." + +#~ msgid "Please provide a reason for rejection." +#~ msgstr "Por favor, forneça uma razão para a rejeição." + +#~ msgid "Invoice approval rejected." +#~ msgstr "A aprovação da factura foi rejeitada." + +#~ msgid "Project, client name, and due date are required" +#~ msgstr "O projeto, nome do cliente e data de vencimento são necessários" + +#~ msgid "Invalid due date format" +#~ msgstr "Formato de data de vencimento inválido" + +#~ msgid "Invalid tax rate format" +#~ msgstr "Formato de taxa de imposto inválido" + +#~ msgid "Selected project not found" +#~ msgstr "Projeto selecionado não encontrado" + +#~ msgid "" +#~ "Could not create invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível criar fatura devido " +#~ "a um erro na base de dados. " +#~ "Por favor, verifique os registos do " +#~ "servidor." + +#~ msgid "You do not have permission to view this invoice" +#~ msgstr "Você não tem permissão para visualizar esta fatura" + +#~ msgid "Company Tax ID (VAT) is missing in Admin → Settings → Company Branding." +#~ msgstr "" +#~ "Empresa Imposto ID (IVA) está faltando" +#~ " em Admin → Configurações → Branding" +#~ " empresa." + +#~ msgid "Sender Endpoint ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" +#~ "Sender Endpoint ID está faltando no " +#~ "Admin → Configurações → Peppol " +#~ "e-Invoicing." + +#~ msgid "Sender Scheme ID is missing in Admin → Settings → Peppol e-Invoicing." +#~ msgstr "" +#~ "Esquema de remetente ID está faltando" +#~ " em Admin → Configurações → Peppol" +#~ " e-Invoicing." + +#~ msgid "" +#~ "Client Peppol Endpoint ID is missing." +#~ " Add peppol_endpoint_id to the client's " +#~ "custom fields." +#~ msgstr "" +#~ "Cliente Peppol Endpoint ID está " +#~ "faltando. Adicione peppol endpoint id " +#~ "aos campos personalizados do cliente." + +#~ msgid "" +#~ "Client Peppol Scheme ID is missing. " +#~ "Add peppol_scheme_id to the client's " +#~ "custom fields." +#~ msgstr "" +#~ "Cliente Peppol Esquema ID está faltando." +#~ " Adicione peppol scheme id aos campos" +#~ " personalizados do cliente." + +#~ msgid "" +#~ "Invoice has no linked client; buyer " +#~ "PEPPOL identifiers cannot be checked." +#~ msgstr "" +#~ "A factura não tem nenhum cliente " +#~ "ligado; os identificadores do comprador " +#~ "PEPPOL não podem ser verificados." + +#~ msgid "Could not verify PEPPOL compliance; check configuration." +#~ msgstr "" +#~ "Não foi possível verificar a " +#~ "conformidade com o PEPPOL; verifique a" +#~ " configuração." + +#~ msgid "You do not have permission to edit this invoice" +#~ msgstr "Você não tem permissão para editar esta fatura" + +#~ msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" +#~ msgstr "" + +#~ msgid "" +#~ "Could not update invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar a fatura " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Invoice updated successfully" +#~ msgstr "A factura foi actualizada com sucesso" + +#~ msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" +#~ msgstr "" + +#~ msgid "You do not have permission to delete this invoice" +#~ msgstr "Você não tem permissão para excluir esta fatura" + +#~ msgid "Only draft invoices can be deleted." +#~ msgstr "Apenas os projetos de faturas podem ser excluídos." + +#~ msgid "" +#~ "Could not delete invoice due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar a factura " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "No invoices selected for deletion" +#~ msgstr "Nenhuma fatura selecionada para exclusão" + +#~ msgid "" +#~ "Could not delete invoices due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível excluir as faturas " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "No invoices selected" +#~ msgstr "Nenhuma factura seleccionada" + +#~ msgid "Could not update invoices due to a database error" +#~ msgstr "Não foi possível atualizar as faturas devido a um erro na base de dados" + +#~ msgid "No time entries, costs, expenses, or extra goods selected" +#~ msgstr "" +#~ "Não foram seleccionadas entradas de " +#~ "tempo, custos, despesas ou bens " +#~ "adicionais" + +#~ msgid "" +#~ "Could not generate items due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível gerar itens devido " +#~ "a um erro na base de dados. " +#~ "Por favor, verifique os registos do " +#~ "servidor." + +#~ msgid "Invoice items generated successfully from time entries and costs" +#~ msgstr "" +#~ "Itens de fatura gerados com sucesso " +#~ "a partir de entradas de tempo e" +#~ " custos" + +#~ msgid "Applied %(hours)s prepaid hours for %(client)s before billing overages." +#~ msgstr "" + +#~ msgid "You do not have permission to export this invoice" +#~ msgstr "Você não tem permissão para exportar esta fatura" + +#~ msgid "Cannot generate UBL: %(msg)s" +#~ msgstr "" + +#~ msgid "UBL export failed: %(msg)s" +#~ msgstr "" + +#~ msgid "" +#~ "Factur-X embedding is enabled but " +#~ "failed: %(err)s. Export aborted so the" +#~ " PDF does not ship without embedded" +#~ " XML." +#~ msgstr "" + +#~ msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "veraPDF validation reported issues: %(summary)s" +#~ msgstr "veraPDF validation reported issues:%(summary)s" + +#~ msgid "veraPDF: %(summary)s" +#~ msgstr "" + +#~ msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." +#~ msgstr "" + +#~ msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" +#~ msgstr "" + +#~ msgid "You do not have permission to duplicate this invoice" +#~ msgstr "Você não tem permissão para duplicar esta fatura" + +#~ msgid "" +#~ "Could not duplicate invoice due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Não foi possível duplicar a factura " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "" +#~ "Could not finalize duplicated invoice " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Não foi possível finalizar a fatura " +#~ "duplicada devido a um erro na base" +#~ " de dados. Por favor, verifique os" +#~ " registos do servidor." + +#~ msgid "You do not have permission to upload images to this invoice" +#~ msgstr "Você não tem permissão para enviar imagens para esta fatura" + +#~ msgid "File type not allowed. Only images are allowed" +#~ msgstr "O tipo de ficheiro não é permitido. Apenas as imagens são permitidas" + +#~ msgid "File size exceeds maximum allowed size (5 MB)" +#~ msgstr "Tamanho do arquivo excede o tamanho máximo permitido (5 MB)" + +#~ msgid "" +#~ "Could not upload image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível enviar a imagem " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Image uploaded successfully" +#~ msgstr "Imagem enviada com sucesso" + +#~ msgid "You do not have permission to delete images from this invoice" +#~ msgstr "Você não tem permissão para excluir imagens desta fatura" + +#~ msgid "" +#~ "Could not delete image due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar a imagem " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Image deleted successfully" +#~ msgstr "Imagem apagada com sucesso" + +#~ msgid "Invoice marked as sent" +#~ msgstr "Fatura marcada como enviada" + +#~ msgid "Invoice marked as paid" +#~ msgstr "Factura marcada como paga" + +#~ msgid "You do not have permission to create issues." +#~ msgstr "Você não tem permissão para criar problemas." + +#~ msgid "Client is required." +#~ msgstr "Cliente é necessário." + +#~ msgid "Issue created successfully." +#~ msgstr "Problema criado com sucesso." + +#~ msgid "You do not have permission to view this issue." +#~ msgstr "Você não tem permissão para ver esta questão." + +#~ msgid "You do not have permission to edit this issue." +#~ msgstr "Você não tem permissão para editar este problema." + +#~ msgid "Project must belong to the same client." +#~ msgstr "O projeto deve pertencer ao mesmo cliente." + +#~ msgid "Could not update issue due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar o problema" +#~ " devido a um erro na base de" +#~ " dados." + +#~ msgid "Issue updated successfully." +#~ msgstr "Edição atualizada com sucesso." + +#~ msgid "Please select a task." +#~ msgstr "Por favor, selecione uma tarefa." + +#~ msgid "Issue linked to task successfully." +#~ msgstr "Problema ligado à tarefa com sucesso." + +#~ msgid "Please select a project." +#~ msgstr "Selecione um projeto." + +#~ msgid "Task created from issue successfully." +#~ msgstr "Tarefa criada a partir do problema com sucesso." + +#~ msgid "Status is required." +#~ msgstr "A situação é necessária." + +#~ msgid "Issue status updated successfully." +#~ msgstr "O estado do problema foi actualizado com sucesso." + +#~ msgid "Issue assigned successfully." +#~ msgstr "Edição atribuída com sucesso." + +#~ msgid "Could not assign issue." +#~ msgstr "Não foi possível atribuir o problema." + +#~ msgid "Priority is required." +#~ msgstr "É necessária prioridade." -#: app/routes/invoices.py:553 app/routes/quotes.py:902 -#: app/routes/quotes.py:1008 -#, python-format -msgid "Warning: Could not reserve stock for item %(item)s: %(error)s" -msgstr "" +#~ msgid "Issue priority updated successfully." +#~ msgstr "Prioridade de emissão atualizada com sucesso." -#: app/routes/invoices.py:561 -msgid "" -"Could not update invoice due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar a fatura devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Only administrators can delete issues." +#~ msgstr "Apenas administradores podem excluir problemas." -#: app/routes/invoices.py:568 -msgid "Invoice updated successfully" -msgstr "A factura foi actualizada com sucesso" +#~ msgid "Could not delete issue due to a database error." +#~ msgstr "Não foi possível apagar o problema devido a um erro na base de dados." -#: app/routes/invoices.py:715 -#, python-format -msgid "Warning: Could not reduce stock for item %(item)s: %(error)s" -msgstr "" +#~ msgid "Issue deleted successfully." +#~ msgstr "O problema foi apagado com sucesso." -#: app/routes/invoices.py:745 -msgid "You do not have permission to delete this invoice" -msgstr "Você não tem permissão para excluir esta fatura" +#~ msgid "Key and label are required" +#~ msgstr "Chave e etiqueta são necessárias" -#: app/routes/invoices.py:749 -msgid "Only draft invoices can be deleted." -msgstr "Apenas os projetos de faturas podem ser excluídos." +#~ msgid "" +#~ "Could not create column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível criar a coluna " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/invoices.py:755 -msgid "" -"Could not delete invoice due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar a factura devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "" +#~ "Could not update column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar a coluna " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/invoices.py:769 -msgid "No invoices selected for deletion" -msgstr "Nenhuma fatura selecionada para exclusão" +#~ msgid "System columns cannot be deleted" +#~ msgstr "As colunas do sistema não podem ser apagadas" -#: app/routes/invoices.py:806 -msgid "" -"Could not delete invoices due to a database error. Please check server logs." -msgstr "" -"Não foi possível excluir as faturas devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "" +#~ "Could not delete column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar a coluna " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/invoices.py:828 -msgid "No invoices selected" -msgstr "Nenhuma factura seleccionada" +#~ msgid "" +#~ "Could not toggle column due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível comutar a coluna " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Kiosk mode is not enabled. Please contact an administrator." +#~ msgstr "O modo do Kiosk não está activo. Por favor contacte um administrador." + +#~ msgid "" +#~ "No password is set for this " +#~ "account. Please set a password in " +#~ "your profile first." +#~ msgstr "" +#~ "Nenhuma senha está definida para esta" +#~ " conta. Por favor, defina uma senha" +#~ " em seu perfil primeiro." + +#~ msgid "You have been logged out" +#~ msgstr "Você foi desconectado" + +#~ msgid "Stock adjustment recorded successfully" +#~ msgstr "Ajustamento das existências registado com êxito" + +#~ msgid "Stock transfer completed successfully" +#~ msgstr "Transferência de stock concluída com sucesso" + +#~ msgid "Timer started successfully" +#~ msgstr "Temporizador iniciado com sucesso" + +#~ msgid "Timer stopped successfully" +#~ msgstr "Temporizador parado com sucesso" + +#~ msgid "Lead created successfully" +#~ msgstr "Chumbo criado com sucesso" + +#~ msgid "Error creating lead: %(error)s" +#~ msgstr "Erro ao criar lead: %(error)s" + +#~ msgid "Lead updated successfully" +#~ msgstr "Chumbo actualizado com sucesso" + +#~ msgid "Error updating lead: %(error)s" +#~ msgstr "Erro ao atualizar o lead: %(error)s" + +#~ msgid "Lead has already been converted" +#~ msgstr "O chumbo já foi convertido" + +#~ msgid "Lead converted to client successfully" +#~ msgstr "Chumbo convertido para cliente com sucesso" + +#~ msgid "Error converting lead: %(error)s" +#~ msgstr "Erro ao converter o lead: %(error)s" + +#~ msgid "Lead converted to deal successfully" +#~ msgstr "Chumbo convertido para negociação com sucesso" + +#~ msgid "Lead marked as lost" +#~ msgstr "Chumbo marcado como perdido" + +#~ msgid "Error marking lead as lost: %(error)s" +#~ msgstr "" + +#~ msgid "URL template is required" +#~ msgstr "É necessário um modelo de URL" + +#~ msgid "URL template must contain {value} or %value% placeholder" +#~ msgstr "" + +#~ msgid "Could not create link template due to a database error." +#~ msgstr "" +#~ "Não foi possível criar o modelo de" +#~ " ligação devido a um erro na " +#~ "base de dados." + +#~ msgid "Link template created successfully" +#~ msgstr "Modelo de ligação criado com sucesso" + +#~ msgid "Could not update link template due to a database error." +#~ msgstr "" +#~ "Não foi possível atualizar o modelo " +#~ "de link devido a um erro de " +#~ "banco de dados." + +#~ msgid "Link template updated successfully" +#~ msgstr "Modelo de ligação actualizado com sucesso" + +#~ msgid "Could not delete link template due to a database error." +#~ msgstr "" +#~ "Não foi possível apagar o modelo " +#~ "de ligação devido a um erro na " +#~ "base de dados." -#: app/routes/invoices.py:872 -msgid "Could not update invoices due to a database error" -msgstr "" -"Não foi possível atualizar as faturas devido a um erro na base de dados" +#~ msgid "Link template deleted successfully" +#~ msgstr "Modelo de ligação excluído com sucesso" -#: app/routes/invoices.py:905 -msgid "No time entries, costs, expenses, or extra goods selected" -msgstr "" -"Não foram seleccionadas entradas de tempo, custos, despesas ou bens " -"adicionais" +#~ msgid "" +#~ "You have been using TimeTracker for " +#~ "a week or more. If it fits " +#~ "your workflow, consider supporting continued" +#~ " development." +#~ msgstr "" +#~ "Você tem usado TimeTracker por uma " +#~ "semana ou mais. Se se encaixa no" +#~ " seu fluxo de trabalho, considere " +#~ "apoiar o desenvolvimento contínuo." -#: app/routes/invoices.py:1009 -msgid "" -"Could not generate items due to a database error. Please check server logs." -msgstr "" -"Não foi possível gerar itens devido a um erro na base de dados. Por favor, " -"verifique os registos do servidor." +#~ msgid "" +#~ "You have tracked a solid amount of" +#~ " time today. If TimeTracker makes " +#~ "your day easier, you can support " +#~ "the project in a click." +#~ msgstr "" +#~ "Você rastreou uma quantidade sólida de" +#~ " tempo hoje. Se TimeTracker facilitar " +#~ "seu dia, você pode suportar o " +#~ "projeto em um clique." -#: app/routes/invoices.py:1021 -msgid "Invoice items generated successfully from time entries and costs" -msgstr "" -"Itens de fatura gerados com sucesso a partir de entradas de tempo e custos" +#~ msgid "PDF export failed: %(error)s" +#~ msgstr "A exportação do PDF falhou: %(error)s" -#: app/routes/invoices.py:1024 -#, python-format -msgid "" -"Applied %(hours)s prepaid hours for %(client)s before billing overages." -msgstr "" +#~ msgid "Mileage entry created successfully" +#~ msgstr "Entrada de Mileage criada com sucesso" -#: app/routes/invoices.py:1064 app/routes/invoices.py:1115 -#: app/routes/invoices.py:1167 -msgid "You do not have permission to export this invoice" -msgstr "Você não tem permissão para exportar esta fatura" +#~ msgid "Error creating mileage entry" +#~ msgstr "Erro ao criar a entrada de quilometragem" -#: app/routes/invoices.py:1130 -#, python-format -msgid "Cannot generate UBL: %(msg)s" -msgstr "" +#~ msgid "You do not have permission to view this mileage entry" +#~ msgstr "Você não tem permissão para ver esta entrada de quilometragem" -#: app/routes/invoices.py:1134 -#, python-format -msgid "UBL export failed: %(msg)s" -msgstr "" +#~ msgid "You do not have permission to edit this mileage entry" +#~ msgstr "Você não tem permissão para editar este item de quilometragem" -#: app/routes/invoices.py:1216 -#, python-format -msgid "" -"Factur-X embedding is enabled but failed: %(err)s. Export aborted so the PDF" -" does not ship without embedded XML." -msgstr "" +#~ msgid "Cannot edit approved or reimbursed mileage entries" +#~ msgstr "" +#~ "Não é possível editar entradas de " +#~ "quilometragem aprovadas ou reembolsadas" -#: app/routes/invoices.py:1228 app/routes/invoices.py:1290 -#, python-format -msgid "PDF/A-3 normalization failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Mileage entry updated successfully" +#~ msgstr "Entrada de milhas atualizada com sucesso" -#: app/routes/invoices.py:1241 -#, python-format -msgid "veraPDF validation reported issues: %(summary)s" -msgstr "veraPDF validation reported issues:%(summary)s" +#~ msgid "Error updating mileage entry" +#~ msgstr "Erro ao atualizar a entrada de quilometragem" -#: app/routes/invoices.py:1243 -#, python-format -msgid "veraPDF: %(summary)s" -msgstr "" +#~ msgid "You do not have permission to delete this mileage entry" +#~ msgstr "Você não tem permissão para excluir este item de quilometragem" -#: app/routes/invoices.py:1285 -#, python-format -msgid "Factur-X embedding is enabled but failed: %(err)s. Export aborted." -msgstr "" +#~ msgid "Mileage entry deleted successfully" +#~ msgstr "A entrada da milhagem foi apagada com sucesso" -#: app/routes/invoices.py:1307 -#, python-format -msgid "PDF generation failed: %(err)s. Fallback also failed: %(fb)s" -msgstr "" +#~ msgid "Error deleting mileage entry" +#~ msgstr "Erro ao remover a entrada de quilometragem" -#: app/routes/invoices.py:1321 -msgid "You do not have permission to duplicate this invoice" -msgstr "Você não tem permissão para duplicar esta fatura" +#~ msgid "No mileage entries selected for deletion" +#~ msgstr "Nenhum item de quilometragem selecionado para exclusão" -#: app/routes/invoices.py:1348 -msgid "" -"Could not duplicate invoice due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível duplicar a factura devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "" +#~ "Could not delete mileage entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Não foi possível apagar entradas de " +#~ "quilometragem devido a um erro na " +#~ "base de dados. Por favor, verifique " +#~ "os registos do servidor." + +#~ msgid "Successfully deleted %(count)d mileage entr%(plural)s" +#~ msgstr "" + +#~ msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" +#~ msgstr "" + +#~ msgid "No mileage entries selected" +#~ msgstr "Nenhum item de quilometragem selecionado" -#: app/routes/invoices.py:1379 -msgid "" -"Could not finalize duplicated invoice due to a database error. Please check " -"server logs." -msgstr "" -"Não foi possível finalizar a fatura duplicada devido a um erro na base de " -"dados. Por favor, verifique os registos do servidor." +#~ msgid "Could not update mileage entries due to a database error" +#~ msgstr "" +#~ "Não foi possível atualizar entradas de" +#~ " quilometragem devido a um erro na" +#~ " base de dados" + +#~ msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" +#~ msgstr "" -#: app/routes/invoices.py:1594 -msgid "You do not have permission to upload images to this invoice" -msgstr "Você não tem permissão para enviar imagens para esta fatura" +#~ msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" +#~ msgstr "" -#: app/routes/invoices.py:1621 app/routes/quotes.py:2000 -msgid "File type not allowed. Only images are allowed" -msgstr "O tipo de ficheiro não é permitido. Apenas as imagens são permitidas" +#~ msgid "Only administrators can approve mileage entries" +#~ msgstr "Apenas administradores podem aprovar entradas de quilometragem" -#: app/routes/invoices.py:1635 app/routes/quotes.py:2014 -msgid "File size exceeds maximum allowed size (5 MB)" -msgstr "Tamanho do arquivo excede o tamanho máximo permitido (5 MB)" +#~ msgid "Only pending mileage entries can be approved" +#~ msgstr "Somente entradas de quilometragem pendentes podem ser aprovadas" -#: app/routes/invoices.py:1683 app/routes/quotes.py:2062 -msgid "" -"Could not upload image due to a database error. Please check server logs." -msgstr "" -"Não foi possível enviar a imagem devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Mileage entry approved successfully" +#~ msgstr "Entrada de milhagem aprovada com sucesso" + +#~ msgid "Error approving mileage entry" +#~ msgstr "Erro ao aprovar a entrada de quilometragem" + +#~ msgid "Only administrators can reject mileage entries" +#~ msgstr "Apenas os administradores podem rejeitar entradas de quilometragem" + +#~ msgid "Only pending mileage entries can be rejected" +#~ msgstr "Somente entradas de quilometragem pendentes podem ser rejeitadas" -#: app/routes/invoices.py:1707 app/routes/quotes.py:2086 -#: app/templates/main/dashboard.html:1606 -#: app/templates/timer/edit_timer.html:871 -#: app/templates/timer/manual_entry.html:1045 -msgid "Image uploaded successfully" -msgstr "Imagem enviada com sucesso" +#~ msgid "Mileage entry rejected" +#~ msgstr "Inserção de quilometragem rejeitada" -#: app/routes/invoices.py:1759 -msgid "You do not have permission to delete images from this invoice" -msgstr "Você não tem permissão para excluir imagens desta fatura" +#~ msgid "Error rejecting mileage entry" +#~ msgstr "Erro ao rejeitar a entrada de quilometragem" -#: app/routes/invoices.py:1776 app/routes/quotes.py:2157 -msgid "" -"Could not delete image due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar a imagem devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Only administrators can mark mileage entries as reimbursed" +#~ msgstr "" +#~ "Apenas os administradores podem marcar " +#~ "entradas de quilometragem como reembolsado" -#: app/routes/invoices.py:1794 app/routes/quotes.py:2175 -msgid "Image deleted successfully" -msgstr "Imagem apagada com sucesso" +#~ msgid "Only approved mileage entries can be marked as reimbursed" +#~ msgstr "" +#~ "Apenas entradas de quilometragem aprovadas " +#~ "podem ser marcadas como reembolsadas" -#: app/routes/invoices_refactored.py:220 -msgid "Invoice marked as sent" -msgstr "Fatura marcada como enviada" +#~ msgid "Mileage entry marked as reimbursed" +#~ msgstr "Entrada por quilometragem marcada como reembolsada" -#: app/routes/invoices_refactored.py:259 -msgid "Invoice marked as paid" -msgstr "Factura marcada como paga" +#~ msgid "Error marking mileage entry as reimbursed" +#~ msgstr "Erro ao marcar entrada de quilometragem como reembolsado" -#: app/routes/issues.py:166 -msgid "You do not have permission to create issues." -msgstr "Você não tem permissão para criar problemas." +#~ msgid "Quote title and client are required" +#~ msgstr "O título da citação e o cliente são necessários" -#: app/routes/issues.py:193 -msgid "Client is required." -msgstr "Cliente é necessário." +#~ msgid "Selected client not found" +#~ msgstr "Cliente selecionado não encontrado" + +#~ msgid "Invalid total amount format" +#~ msgstr "Formato de quantidade total inválido" + +#~ msgid "Invalid estimated hours format" +#~ msgstr "Formato de horas estimado inválido" + +#~ msgid "Invalid date format for valid until" +#~ msgstr "Formato de data inválido para válido até" + +#~ msgid "" +#~ "Could not create quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível criar aspas devido " +#~ "a um erro na base de dados. " +#~ "Por favor, verifique os registos do " +#~ "servidor." + +#~ msgid "Quote created successfully" +#~ msgstr "Citação criada com sucesso" + +#~ msgid "Only draft quotes can be edited" +#~ msgstr "Só podem ser editadas aspas de rascunho" + +#~ msgid "" +#~ "Could not update quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar a citação " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/issues.py:221 -msgid "Issue created successfully." -msgstr "Problema criado com sucesso." +#~ msgid "Quote updated successfully" +#~ msgstr "O orçamento foi actualizado com sucesso" -#: app/routes/issues.py:270 -msgid "You do not have permission to view this issue." -msgstr "Você não tem permissão para ver esta questão." +#~ msgid "Only draft quotes can be sent" +#~ msgstr "Só podem ser enviadas aspas de rascunho" -#: app/routes/issues.py:325 -msgid "You do not have permission to edit this issue." -msgstr "Você não tem permissão para editar este problema." +#~ msgid "Could not send quote due to a database error. Please check server logs." +#~ msgstr "" +#~ "Não foi possível enviar a citação " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/issues.py:345 -msgid "Project must belong to the same client." -msgstr "O projeto deve pertencer ao mesmo cliente." +#~ msgid "Quote sent successfully" +#~ msgstr "Cotação enviada com sucesso" -#: app/routes/issues.py:367 -msgid "Could not update issue due to a database error." -msgstr "" -"Não foi possível atualizar o problema devido a um erro na base de dados." +#~ msgid "This quote cannot be accepted" +#~ msgstr "Esta citação não pode ser aceite" -#: app/routes/issues.py:370 -msgid "Issue updated successfully." -msgstr "Edição atualizada com sucesso." +#~ msgid "Could not accept quote: %(error)s" +#~ msgstr "Não foi possível aceitar a citação: %(error)s" -#: app/routes/issues.py:398 -msgid "Please select a task." -msgstr "Por favor, selecione uma tarefa." +#~ msgid "" +#~ "Could not accept quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível aceitar a citação " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Quote accepted and project created successfully" +#~ msgstr "Citação aceita e projeto criado com sucesso" + +#~ msgid "This quote cannot be rejected" +#~ msgstr "Esta cotação não pode ser rejeitada" + +#~ msgid "Could not reject quote: %(error)s" +#~ msgstr "" + +#~ msgid "" +#~ "Could not reject quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível rejeitar a citação " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Quote rejected" +#~ msgstr "Quota rejeitada" + +#~ msgid "Only draft or rejected quotes can be deleted" +#~ msgstr "Somente o rascunho ou as citações rejeitadas podem ser excluídos" + +#~ msgid "" +#~ "Could not delete quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar a citação " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Quote deleted successfully" +#~ msgstr "Citação apagada com sucesso" + +#~ msgid "Payment gateway created successfully." +#~ msgstr "Gateway de pagamento criado com sucesso." + +#~ msgid "No payment gateway configured. Please contact an administrator." +#~ msgstr "" +#~ "Nenhum gateway de pagamento configurado. " +#~ "Por favor contacte um administrador." + +#~ msgid "Stripe API key not configured." +#~ msgstr "A chave da API da listra não está configurada." + +#~ msgid "Payment processed successfully." +#~ msgstr "Pagamento processado com sucesso." + +#~ msgid "Invalid from date format" +#~ msgstr "Inválido a partir do formato de data" + +#~ msgid "Invalid to date format" +#~ msgstr "Formato inválido até à data" + +#~ msgid "You do not have permission to view this payment" +#~ msgstr "Você não tem permissão para ver este pagamento" + +#~ msgid "Invoice, amount, and payment date are required" +#~ msgstr "Fatura, montante e data de pagamento são necessários" + +#~ msgid "Selected invoice not found" +#~ msgstr "A factura seleccionada não foi encontrada" + +#~ msgid "You do not have permission to add payments to this invoice" +#~ msgstr "Você não tem permissão para adicionar pagamentos a esta fatura" + +#~ msgid "Payment amount must be greater than zero" +#~ msgstr "O montante do pagamento deve ser superior a zero" + +#~ msgid "Invalid payment amount" +#~ msgstr "Montante de pagamento inválido" + +#~ msgid "Invalid payment date format" +#~ msgstr "Formato de data de pagamento inválido" + +#~ msgid "Gateway fee cannot be negative" +#~ msgstr "A taxa de acesso não pode ser negativa" + +#~ msgid "Invalid gateway fee amount" +#~ msgstr "Quantidade de taxa de gateway inválida" + +#~ msgid "" +#~ "Could not create payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível criar o pagamento " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "You do not have permission to edit this payment" +#~ msgstr "Você não tem permissão para editar este pagamento" + +#~ msgid "" +#~ "Could not update payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar o pagamento" +#~ " devido a um erro na base de" +#~ " dados. Por favor, verifique os " +#~ "registos do servidor." + +#~ msgid "Payment updated successfully" +#~ msgstr "Pagamento actualizado com sucesso" + +#~ msgid "You do not have permission to delete this payment" +#~ msgstr "Você não tem permissão para excluir este pagamento" + +#~ msgid "" +#~ "Could not delete payment due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar o pagamento " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Payment deleted successfully" +#~ msgstr "Pagamento excluído com sucesso" + +#~ msgid "No payments selected for deletion" +#~ msgstr "Nenhum pagamento selecionado para exclusão" -#: app/routes/issues.py:403 -msgid "Issue linked to task successfully." -msgstr "Problema ligado à tarefa com sucesso." +#~ msgid "" +#~ "Could not delete payments due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar os pagamentos" +#~ " devido a um erro na base de" +#~ " dados. Por favor, verifique os " +#~ "registos do servidor." -#: app/routes/issues.py:420 -msgid "Please select a project." -msgstr "Selecione um projeto." +#~ msgid "No payments selected" +#~ msgstr "Nenhum pagamento selecionado" -#: app/routes/issues.py:429 -msgid "Task created from issue successfully." -msgstr "Tarefa criada a partir do problema com sucesso." +#~ msgid "Could not update payments due to a database error" +#~ msgstr "" +#~ "Não foi possível atualizar os pagamentos" +#~ " devido a um erro na base de" +#~ " dados" -#: app/routes/issues.py:445 -msgid "Status is required." -msgstr "A situação é necessária." +#~ msgid "Start date must be before end date" +#~ msgstr "A data de início deve ser antes da data final" -#: app/routes/issues.py:464 -msgid "Issue status updated successfully." -msgstr "O estado do problema foi actualizado com sucesso." +#~ msgid "No per diem rate found for this location. Please configure rates first." +#~ msgstr "" +#~ "Nenhuma taxa por dia encontrada para " +#~ "este local. Por favor configure as " +#~ "taxas primeiro." -#: app/routes/issues.py:481 -msgid "Issue assigned successfully." -msgstr "Edição atribuída com sucesso." +#~ msgid "Per diem claim created successfully" +#~ msgstr "Por pedido diem criado com sucesso" -#: app/routes/issues.py:483 -msgid "Could not assign issue." -msgstr "Não foi possível atribuir o problema." +#~ msgid "Error creating per diem claim" +#~ msgstr "Erro ao criar a reivindicação por diem" -#: app/routes/issues.py:497 -msgid "Priority is required." -msgstr "É necessária prioridade." +#~ msgid "You do not have permission to view this per diem claim" +#~ msgstr "Você não tem permissão para ver este pedido per diem" -#: app/routes/issues.py:502 -msgid "Issue priority updated successfully." -msgstr "Prioridade de emissão atualizada com sucesso." +#~ msgid "You do not have permission to edit this per diem claim" +#~ msgstr "Você não tem permissão para editar este pedido por diem" -#: app/routes/issues.py:515 -msgid "Only administrators can delete issues." -msgstr "Apenas administradores podem excluir problemas." +#~ msgid "Cannot edit approved or reimbursed per diem claims" +#~ msgstr "Não é possível editar pedidos aprovados ou reembolsados por dia" -#: app/routes/issues.py:523 -msgid "Could not delete issue due to a database error." -msgstr "Não foi possível apagar o problema devido a um erro na base de dados." +#~ msgid "Per diem claim updated successfully" +#~ msgstr "Por pedido diem atualizado com sucesso" -#: app/routes/issues.py:526 -msgid "Issue deleted successfully." -msgstr "O problema foi apagado com sucesso." +#~ msgid "Error updating per diem claim" +#~ msgstr "Erro ao atualizar a alegação por diem" -#: app/routes/kanban.py:136 -msgid "Key and label are required" -msgstr "Chave e etiqueta são necessárias" +#~ msgid "You do not have permission to delete this per diem claim" +#~ msgstr "Você não tem permissão para excluir esta alegação por diem" -#: app/routes/kanban.py:189 -msgid "" -"Could not create column due to a database error. Please check server logs." -msgstr "" -"Não foi possível criar a coluna devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Per diem claim deleted successfully" +#~ msgstr "Por pedido diem suprimido com sucesso" -#: app/routes/kanban.py:261 -msgid "" -"Could not update column due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar a coluna devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Error deleting per diem claim" +#~ msgstr "Erro ao excluir a alegação por diem" -#: app/routes/kanban.py:299 -msgid "System columns cannot be deleted" -msgstr "As colunas do sistema não podem ser apagadas" +#~ msgid "No per diem claims selected for deletion" +#~ msgstr "Nenhuma reivindicação por diem selecionada para exclusão" -#: app/routes/kanban.py:335 -msgid "" -"Could not delete column due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar a coluna devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "" +#~ "Could not delete per diem claims " +#~ "due to a database error. Please " +#~ "check server logs." +#~ msgstr "" +#~ "Não foi possível apagar as " +#~ "reivindicações por diem devido a um " +#~ "erro na base de dados. Por favor," +#~ " verifique os registos do servidor." -#: app/routes/kanban.py:385 -msgid "" -"Could not toggle column due to a database error. Please check server logs." -msgstr "" -"Não foi possível comutar a coluna devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Successfully deleted %(count)d per diem claim(s)" +#~ msgstr "" -#: app/routes/kiosk.py:35 app/routes/kiosk.py:95 -msgid "Kiosk mode is not enabled. Please contact an administrator." -msgstr "O modo do Kiosk não está activo. Por favor contacte um administrador." +#~ msgid "Skipped %(count)d per diem claim(s): %(errors)s" +#~ msgstr "" -#: app/routes/kiosk.py:140 -msgid "" -"No password is set for this account. Please set a password in your profile " -"first." -msgstr "" -"Nenhuma senha está definida para esta conta. Por favor, defina uma senha em " -"seu perfil primeiro." - -#: app/routes/kiosk.py:179 -msgid "You have been logged out" -msgstr "Você foi desconectado" - -#: app/routes/kiosk.py:326 -msgid "Stock adjustment recorded successfully" -msgstr "Ajustamento das existências registado com êxito" - -#: app/routes/kiosk.py:437 -msgid "Stock transfer completed successfully" -msgstr "Transferência de stock concluída com sucesso" - -#: app/routes/kiosk.py:503 -msgid "Timer started successfully" -msgstr "Temporizador iniciado com sucesso" - -#: app/routes/kiosk.py:528 app/routes/timer_refactored.py:164 -msgid "Timer stopped successfully" -msgstr "Temporizador parado com sucesso" - -#: app/routes/leads.py:112 -msgid "Lead created successfully" -msgstr "Chumbo criado com sucesso" - -#: app/routes/leads.py:116 -#, python-format -msgid "Error creating lead: %(error)s" -msgstr "Erro ao criar lead: %(error)s" - -#: app/routes/leads.py:166 -msgid "Lead updated successfully" -msgstr "Chumbo actualizado com sucesso" - -#: app/routes/leads.py:170 -#, python-format -msgid "Error updating lead: %(error)s" -msgstr "Erro ao atualizar o lead: %(error)s" - -#: app/routes/leads.py:182 app/routes/leads.py:237 -msgid "Lead has already been converted" -msgstr "O chumbo já foi convertido" - -#: app/routes/leads.py:221 -msgid "Lead converted to client successfully" -msgstr "Chumbo convertido para cliente com sucesso" - -#: app/routes/leads.py:225 app/routes/leads.py:276 -#, python-format -msgid "Error converting lead: %(error)s" -msgstr "Erro ao converter o lead: %(error)s" - -#: app/routes/leads.py:272 -msgid "Lead converted to deal successfully" -msgstr "Chumbo convertido para negociação com sucesso" - -#: app/routes/leads.py:299 -msgid "Lead marked as lost" -msgstr "Chumbo marcado como perdido" - -#: app/routes/leads.py:302 -#, python-format -msgid "Error marking lead as lost: %(error)s" -msgstr "" +#~ msgid "No per diem claims selected" +#~ msgstr "Não foram seleccionadas reivindicações por dia" -#: app/routes/link_templates.py:46 app/routes/link_templates.py:102 -msgid "URL template is required" -msgstr "É necessário um modelo de URL" +#~ msgid "Could not update per diem claims due to a database error" +#~ msgstr "" +#~ "Não foi possível atualizar as " +#~ "reivindicações por diem devido a um " +#~ "erro na base de dados" -#: app/routes/link_templates.py:50 app/routes/link_templates.py:106 -#, python-brace-format -msgid "URL template must contain {value} or %value% placeholder" -msgstr "" +#~ msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" +#~ msgstr "" -#: app/routes/link_templates.py:71 -msgid "Could not create link template due to a database error." -msgstr "" -"Não foi possível criar o modelo de ligação devido a um erro na base de " -"dados." +#~ msgid "Skipped %(count)d per diem claim(s) (no permission)" +#~ msgstr "" -#: app/routes/link_templates.py:74 -msgid "Link template created successfully" -msgstr "Modelo de ligação criado com sucesso" +#~ msgid "Only administrators can approve per diem claims" +#~ msgstr "Apenas os administradores podem aprovar reivindicações por diem" -#: app/routes/link_templates.py:124 -msgid "Could not update link template due to a database error." -msgstr "" -"Não foi possível atualizar o modelo de link devido a um erro de banco de " -"dados." +#~ msgid "Only pending per diem claims can be approved" +#~ msgstr "Só podem ser aprovadas alegações pendentes por dia" -#: app/routes/link_templates.py:127 -msgid "Link template updated successfully" -msgstr "Modelo de ligação actualizado com sucesso" +#~ msgid "Per diem claim approved successfully" +#~ msgstr "Por pedido diem aprovado com sucesso" -#: app/routes/link_templates.py:142 -msgid "Could not delete link template due to a database error." -msgstr "" -"Não foi possível apagar o modelo de ligação devido a um erro na base de " -"dados." +#~ msgid "Error approving per diem claim" +#~ msgstr "Erro ao aprovar a alegação por dia" -#: app/routes/link_templates.py:144 -msgid "Link template deleted successfully" -msgstr "Modelo de ligação excluído com sucesso" +#~ msgid "Only administrators can reject per diem claims" +#~ msgstr "Apenas administradores podem rejeitar as reivindicações por diem" -#: app/routes/main.py:236 -msgid "" -"You have been using TimeTracker for a week or more. If it fits your " -"workflow, consider supporting continued development." -msgstr "" -"Você tem usado TimeTracker por uma semana ou mais. Se se encaixa no seu " -"fluxo de trabalho, considere apoiar o desenvolvimento contínuo." +#~ msgid "Only pending per diem claims can be rejected" +#~ msgstr "Apenas as alegações pendentes por dia podem ser rejeitadas" -#: app/routes/main.py:244 -msgid "" -"You have tracked a solid amount of time today. If TimeTracker makes your day" -" easier, you can support the project in a click." -msgstr "" -"Você rastreou uma quantidade sólida de tempo hoje. Se TimeTracker facilitar " -"seu dia, você pode suportar o projeto em um clique." +#~ msgid "Per diem claim rejected" +#~ msgstr "Por dia de alegação rejeitada" -#: app/routes/mileage.py:303 app/routes/per_diem.py:257 -#: app/routes/reports.py:572 app/routes/timer.py:2956 -#, python-format -msgid "PDF export failed: %(error)s" -msgstr "A exportação do PDF falhou: %(error)s" +#~ msgid "Error rejecting per diem claim" +#~ msgstr "Erro ao rejeitar a alegação por diem" -#: app/routes/mileage.py:407 -msgid "Mileage entry created successfully" -msgstr "Entrada de Mileage criada com sucesso" +#~ msgid "Per diem rate created successfully" +#~ msgstr "Por taxa de diem criada com sucesso" -#: app/routes/mileage.py:416 app/routes/mileage.py:421 -msgid "Error creating mileage entry" -msgstr "Erro ao criar a entrada de quilometragem" +#~ msgid "Error creating per diem rate" +#~ msgstr "Erro ao criar por taxa diem" -#: app/routes/mileage.py:434 -msgid "You do not have permission to view this mileage entry" -msgstr "Você não tem permissão para ver esta entrada de quilometragem" +#~ msgid "Per diem rate updated successfully" +#~ msgstr "Per diem taxa atualizada com sucesso" -#: app/routes/mileage.py:453 -msgid "You do not have permission to edit this mileage entry" -msgstr "Você não tem permissão para editar este item de quilometragem" +#~ msgid "Error updating per diem rate" +#~ msgstr "Erro ao atualizar por taxa diem" -#: app/routes/mileage.py:458 -msgid "Cannot edit approved or reimbursed mileage entries" -msgstr "" -"Não é possível editar entradas de quilometragem aprovadas ou reembolsadas" +#~ msgid "" +#~ "Cannot delete rate: It is being " +#~ "used by %(count)d per diem claim(s). " +#~ "Deactivate it instead." +#~ msgstr "" -#: app/routes/mileage.py:503 -msgid "Mileage entry updated successfully" -msgstr "Entrada de milhas atualizada com sucesso" +#~ msgid "Per diem rate deleted successfully" +#~ msgstr "Por taxa diem excluída com sucesso" -#: app/routes/mileage.py:508 app/routes/mileage.py:513 -msgid "Error updating mileage entry" -msgstr "Erro ao atualizar a entrada de quilometragem" +#~ msgid "Error deleting per diem rate" +#~ msgstr "Erro ao apagar a taxa por diem" -#: app/routes/mileage.py:526 -msgid "You do not have permission to delete this mileage entry" -msgstr "Você não tem permissão para excluir este item de quilometragem" +#~ msgid "You do not have permission to access this page" +#~ msgstr "Você não tem permissão para acessar esta página" -#: app/routes/mileage.py:533 -msgid "Mileage entry deleted successfully" -msgstr "A entrada da milhagem foi apagada com sucesso" +#~ msgid "Role name is required" +#~ msgstr "Nome do papel é necessário" -#: app/routes/mileage.py:537 app/routes/mileage.py:541 -msgid "Error deleting mileage entry" -msgstr "Erro ao remover a entrada de quilometragem" +#~ msgid "A role with this name already exists" +#~ msgstr "Já existe um papel com este nome" -#: app/routes/mileage.py:554 -msgid "No mileage entries selected for deletion" -msgstr "Nenhum item de quilometragem selecionado para exclusão" +#~ msgid "Could not create role due to a database error" +#~ msgstr "Não foi possível criar o papel devido a um erro na base de dados" -#: app/routes/mileage.py:585 -msgid "" -"Could not delete mileage entries due to a database error. Please check " -"server logs." -msgstr "" -"Não foi possível apagar entradas de quilometragem devido a um erro na base " -"de dados. Por favor, verifique os registos do servidor." +#~ msgid "Role created successfully" +#~ msgstr "Papel criado com sucesso" -#: app/routes/mileage.py:594 -#, python-format -msgid "Successfully deleted %(count)d mileage entr%(plural)s" -msgstr "" +#~ msgid "System role names cannot be changed" +#~ msgstr "Os nomes das funções do sistema não podem ser alterados" -#: app/routes/mileage.py:608 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s: %(errors)s" -msgstr "" +#~ msgid "Could not update role due to a database error" +#~ msgstr "Não foi possível atualizar o papel devido a um erro na base de dados" -#: app/routes/mileage.py:625 -msgid "No mileage entries selected" -msgstr "Nenhum item de quilometragem selecionado" +#~ msgid "Role updated successfully" +#~ msgstr "Papel actualizado com sucesso" -#: app/routes/mileage.py:658 -msgid "Could not update mileage entries due to a database error" -msgstr "" -"Não foi possível atualizar entradas de quilometragem devido a um erro na " -"base de dados" +#~ msgid "You do not have permission to perform this action" +#~ msgstr "Você não tem permissão para executar esta ação" -#: app/routes/mileage.py:662 -#, python-format -msgid "Successfully updated %(count)d mileage entr%(plural)s to %(status)s" -msgstr "" +#~ msgid "System roles cannot be deleted" +#~ msgstr "As funções do sistema não podem ser apagadas" -#: app/routes/mileage.py:673 -#, python-format -msgid "Skipped %(count)d mileage entr%(plural)s (no permission)" -msgstr "" +#~ msgid "" +#~ "Cannot delete role that is assigned " +#~ "to users. Please reassign users first." +#~ msgstr "" +#~ "Não é possível apagar a função " +#~ "atribuída aos utilizadores. Por favor, " +#~ "reatribua os usuários primeiro." -#: app/routes/mileage.py:690 -msgid "Only administrators can approve mileage entries" -msgstr "Apenas administradores podem aprovar entradas de quilometragem" +#~ msgid "Could not delete role due to a database error" +#~ msgstr "Não foi possível apagar o papel devido a um erro na base de dados" -#: app/routes/mileage.py:696 -msgid "Only pending mileage entries can be approved" -msgstr "Somente entradas de quilometragem pendentes podem ser aprovadas" +#~ msgid "Role \"%(name)s\" deleted successfully" +#~ msgstr "" -#: app/routes/mileage.py:704 -msgid "Mileage entry approved successfully" -msgstr "Entrada de milhagem aprovada com sucesso" +#~ msgid "Only Super Admins can assign the super_admin role" +#~ msgstr "Somente Super Admins pode atribuir a função super admin" -#: app/routes/mileage.py:708 app/routes/mileage.py:712 -msgid "Error approving mileage entry" -msgstr "Erro ao aprovar a entrada de quilometragem" +#~ msgid "Only Super Admins can remove the admin role from themselves" +#~ msgstr "Somente Super Admins pode remover o papel de administrador de si mesmos" -#: app/routes/mileage.py:723 -msgid "Only administrators can reject mileage entries" -msgstr "Apenas os administradores podem rejeitar entradas de quilometragem" +#~ msgid "Only Super Admins can remove the admin role from other users" +#~ msgstr "" +#~ "Somente Super Admins pode remover o " +#~ "papel de administrador de outros " +#~ "usuários" -#: app/routes/mileage.py:729 -msgid "Only pending mileage entries can be rejected" -msgstr "Somente entradas de quilometragem pendentes podem ser rejeitadas" +#~ msgid "Could not update user roles due to a database error" +#~ msgstr "" +#~ "Não foi possível atualizar as funções" +#~ " do usuário devido a um erro na" +#~ " base de dados" -#: app/routes/mileage.py:741 -msgid "Mileage entry rejected" -msgstr "Inserção de quilometragem rejeitada" +#~ msgid "User roles updated successfully" +#~ msgstr "Funções do usuário atualizadas com sucesso" -#: app/routes/mileage.py:745 app/routes/mileage.py:749 -msgid "Error rejecting mileage entry" -msgstr "Erro ao rejeitar a entrada de quilometragem" +#~ msgid "Template created successfully." +#~ msgstr "Modelo criado com sucesso." -#: app/routes/mileage.py:760 -msgid "Only administrators can mark mileage entries as reimbursed" -msgstr "" -"Apenas os administradores podem marcar entradas de quilometragem como " -"reembolsado" +#~ msgid "Template not found." +#~ msgstr "Modelo não encontrado." -#: app/routes/mileage.py:766 -msgid "Only approved mileage entries can be marked as reimbursed" -msgstr "" -"Apenas entradas de quilometragem aprovadas podem ser marcadas como " -"reembolsadas" +#~ msgid "You do not have permission to view this template." +#~ msgstr "Você não tem permissão para ver este modelo." -#: app/routes/mileage.py:773 -msgid "Mileage entry marked as reimbursed" -msgstr "Entrada por quilometragem marcada como reembolsada" +#~ msgid "You do not have permission to edit this template." +#~ msgstr "Você não tem permissão para editar este modelo." -#: app/routes/mileage.py:777 app/routes/mileage.py:781 -msgid "Error marking mileage entry as reimbursed" -msgstr "Erro ao marcar entrada de quilometragem como reembolsado" +#~ msgid "Template updated successfully." +#~ msgstr "Modelo actualizado com sucesso." -#: app/routes/offers.py:69 app/routes/quotes.py:156 -msgid "Quote title and client are required" -msgstr "O título da citação e o cliente são necessários" +#~ msgid "Template deleted successfully." +#~ msgstr "O modelo foi apagado com sucesso." -#: app/routes/offers.py:75 app/routes/quotes.py:168 -msgid "Selected client not found" -msgstr "Cliente selecionado não encontrado" +#~ msgid "Please select a client." +#~ msgstr "Por favor, selecione um cliente." -#: app/routes/offers.py:84 app/routes/offers.py:216 app/routes/quotes.py:183 -msgid "Invalid total amount format" -msgstr "Formato de quantidade total inválido" +#~ msgid "Project created from template successfully." +#~ msgstr "Projeto criado a partir de modelo com sucesso." -#: app/routes/offers.py:100 app/routes/offers.py:232 app/routes/quotes.py:211 -msgid "Invalid estimated hours format" -msgstr "Formato de horas estimado inválido" +#~ msgid "Project name and client are required" +#~ msgstr "Nome do projeto e cliente são necessários" -#: app/routes/offers.py:117 app/routes/offers.py:249 app/routes/quotes.py:263 -#: app/routes/quotes.py:572 -msgid "Invalid date format for valid until" -msgstr "Formato de data inválido para válido até" +#~ msgid "Invalid budget amount" +#~ msgstr "Montante do orçamento inválido" -#: app/routes/offers.py:163 app/routes/quotes.py:450 -msgid "" -"Could not create quote due to a database error. Please check server logs." -msgstr "" -"Não foi possível criar aspas devido a um erro na base de dados. Por favor, " -"verifique os registos do servidor." +#~ msgid "Invalid budget threshold percent (0-100)" +#~ msgstr "Percentagem de limite orçamental inválida (0-100)" -#: app/routes/offers.py:172 app/routes/quotes.py:465 -msgid "Quote created successfully" -msgstr "Citação criada com sucesso" +#~ msgid "Could not save project due to a database error" +#~ msgstr "Não foi possível salvar o projeto devido a um erro na base de dados" -#: app/routes/offers.py:195 app/routes/quotes.py:519 -msgid "Only draft quotes can be edited" -msgstr "Só podem ser editadas aspas de rascunho" +#~ msgid "Project not found" +#~ msgstr "Projeto não encontrado" -#: app/routes/offers.py:265 app/routes/quotes.py:833 -msgid "" -"Could not update quote due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar a citação devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Could not update project due to a database error" +#~ msgstr "Não foi possível atualizar o projeto devido a um erro na base de dados" -#: app/routes/offers.py:271 app/routes/quotes.py:845 -msgid "Quote updated successfully" -msgstr "O orçamento foi actualizado com sucesso" +#~ msgid "You do not have permission to archive projects" +#~ msgstr "Você não tem permissão para arquivar projetos" -#: app/routes/offers.py:285 app/routes/quotes.py:868 -msgid "Only draft quotes can be sent" -msgstr "Só podem ser enviadas aspas de rascunho" +#~ msgid "Project is already archived" +#~ msgstr "O projecto já está arquivado" -#: app/routes/offers.py:291 app/routes/quotes.py:908 -msgid "" -"Could not send quote due to a database error. Please check server logs." -msgstr "" -"Não foi possível enviar a citação devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "You do not have permission to unarchive projects" +#~ msgstr "Você não tem permissão para projetos não arquivos" -#: app/routes/offers.py:297 app/routes/quotes.py:928 -msgid "Quote sent successfully" -msgstr "Cotação enviada com sucesso" +#~ msgid "Project is already active" +#~ msgstr "O projecto já está activo" -#: app/routes/offers.py:309 app/routes/quotes.py:940 -msgid "This quote cannot be accepted" -msgstr "Esta citação não pode ser aceite" +#~ msgid "You do not have permission to deactivate projects" +#~ msgstr "Você não tem permissão para desativar projetos" -#: app/routes/offers.py:340 app/routes/quotes.py:971 -#, python-format -msgid "Could not accept quote: %(error)s" -msgstr "Não foi possível aceitar a citação: %(error)s" +#~ msgid "Project is already inactive" +#~ msgstr "O projeto já está inativo" -#: app/routes/offers.py:345 app/routes/quotes.py:1014 -msgid "" -"Could not accept quote due to a database error. Please check server logs." -msgstr "" -"Não foi possível aceitar a citação devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "You do not have permission to activate projects" +#~ msgstr "Você não tem permissão para ativar projetos" -#: app/routes/offers.py:357 app/routes/quotes.py:1040 -msgid "Quote accepted and project created successfully" -msgstr "Citação aceita e projeto criado com sucesso" +#~ msgid "Cannot delete project with existing time entries" +#~ msgstr "Não é possível excluir o projeto com os itens de tempo existentes" -#: app/routes/offers.py:371 app/routes/quotes.py:1054 -msgid "This quote cannot be rejected" -msgstr "Esta cotação não pode ser rejeitada" +#~ msgid "" +#~ "Could not delete project due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível excluir o projeto " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/offers.py:377 app/routes/quotes.py:1060 -#, python-format -msgid "Could not reject quote: %(error)s" -msgstr "" +#~ msgid "You do not have permission to delete projects" +#~ msgstr "Você não tem permissão para excluir projetos" -#: app/routes/offers.py:381 app/routes/quotes.py:1064 -#: app/routes/quotes.py:1399 -msgid "" -"Could not reject quote due to a database error. Please check server logs." -msgstr "" -"Não foi possível rejeitar a citação devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "No projects selected for deletion" +#~ msgstr "Nenhum projeto selecionado para exclusão" -#: app/routes/offers.py:387 app/routes/quotes.py:1070 -msgid "Quote rejected" -msgstr "Quota rejeitada" +#~ msgid "" +#~ "Could not delete projects due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar os projetos " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/offers.py:400 app/routes/quotes.py:1083 -msgid "Only draft or rejected quotes can be deleted" -msgstr "Somente o rascunho ou as citações rejeitadas podem ser excluídos" +#~ msgid "No projects were deleted" +#~ msgstr "Nenhum projeto foi excluído" -#: app/routes/offers.py:407 app/routes/quotes.py:1090 -msgid "" -"Could not delete quote due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar a citação devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "You do not have permission to change project status" +#~ msgstr "Você não tem permissão para alterar o status do projeto" -#: app/routes/offers.py:413 app/routes/quotes.py:1096 -msgid "Quote deleted successfully" -msgstr "Citação apagada com sucesso" +#~ msgid "No projects selected" +#~ msgstr "Nenhum projeto selecionado" -#: app/routes/payment_gateways.py:61 -msgid "Payment gateway created successfully." -msgstr "Gateway de pagamento criado com sucesso." +#~ msgid "" +#~ "Could not update project status due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Não foi possível atualizar o status " +#~ "do projeto devido a um erro na " +#~ "base de dados. Por favor, verifique " +#~ "os registos do servidor." -#: app/routes/payment_gateways.py:81 -msgid "No payment gateway configured. Please contact an administrator." -msgstr "" -"Nenhum gateway de pagamento configurado. Por favor contacte um " -"administrador." +#~ msgid "No projects were updated" +#~ msgstr "Nenhum projeto foi atualizado" -#: app/routes/payment_gateways.py:97 -msgid "Stripe API key not configured." -msgstr "A chave da API da listra não está configurada." +#~ msgid "Project is already in favorites" +#~ msgstr "Projeto já está em favoritos" + +#~ msgid "Project added to favorites" +#~ msgstr "Projeto adicionado aos favoritos" + +#~ msgid "Failed to add project to favorites" +#~ msgstr "Falha ao adicionar o projeto aos favoritos" + +#~ msgid "Project is not in favorites" +#~ msgstr "Projeto não está em favoritos" + +#~ msgid "Project removed from favorites" +#~ msgstr "Projeto removido dos favoritos" + +#~ msgid "Failed to remove project from favorites" +#~ msgstr "Falha ao remover o projeto dos favoritos" + +#~ msgid "Description, category, amount, and date are required" +#~ msgstr "Descrição, categoria, montante e data são necessários" + +#~ msgid "Could not add cost due to a database error. Please check server logs." +#~ msgstr "" +#~ "Não foi possível adicionar o custo " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Cost added successfully" +#~ msgstr "Custo adicionado com sucesso" + +#~ msgid "Cost not found" +#~ msgstr "Custo não encontrado" + +#~ msgid "You do not have permission to edit this cost" +#~ msgstr "Você não tem permissão para editar este custo" + +#~ msgid "" +#~ "Could not update cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar o custo " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Cost updated successfully" +#~ msgstr "Custo actualizado com sucesso" + +#~ msgid "You do not have permission to delete this cost" +#~ msgstr "Você não tem permissão para excluir este custo" + +#~ msgid "Cannot delete cost that has been invoiced" +#~ msgstr "Não é possível apagar o custo que foi facturado" + +#~ msgid "" +#~ "Could not delete cost due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar o custo " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Name and unit price are required" +#~ msgstr "Nome e preço unitário são exigidos" + +#~ msgid "Invalid quantity format" +#~ msgstr "Formato de quantidade inválido" + +#~ msgid "Invalid unit price format" +#~ msgstr "Formato de preço unitário inválido" + +#~ msgid "" +#~ "Could not add extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Não foi possível adicionar extra bom " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Extra good added successfully" +#~ msgstr "Extra bom adicionado com sucesso" + +#~ msgid "Extra good not found" +#~ msgstr "Extra bom não encontrado" + +#~ msgid "You do not have permission to edit this extra good" +#~ msgstr "Você não tem permissão para editar este bem extra" + +#~ msgid "" +#~ "Could not update extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Não foi possível atualizar extra bom " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Extra good updated successfully" +#~ msgstr "Extra bom atualizado com sucesso" + +#~ msgid "You do not have permission to delete this extra good" +#~ msgstr "Você não tem permissão para excluir este bem extra" + +#~ msgid "Cannot delete extra good that has been added to an invoice" +#~ msgstr "Não é possível excluir o bem extra que foi adicionado a uma fatura" + +#~ msgid "" +#~ "Could not delete extra good due to" +#~ " a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Não foi possível apagar extra bom " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Project created successfully" +#~ msgstr "Projeto criado com sucesso" + +#~ msgid "Invalid discount amount format" +#~ msgstr "Formato de quantidade de desconto inválido" + +#~ msgid "Quote must be approved before it can be sent" +#~ msgstr "A cotação deve ser aprovada antes de poder ser enviada" + +#~ msgid "Cannot send quote: %(error)s" +#~ msgstr "Não foi possível enviar aspas %(error)s" + +#~ msgid "You do not have permission to upload attachments to this quote" +#~ msgstr "Você não tem permissão para enviar anexos para esta citação" + +#~ msgid "You do not have permission to download this attachment" +#~ msgstr "Você não tem permissão para baixar este anexo" + +#~ msgid "You do not have permission to request approval for this quote" +#~ msgstr "Você não tem permissão para solicitar aprovação para esta cotação" + +#~ msgid "This quote does not require approval" +#~ msgstr "Esta citação não requer aprovação" + +#~ msgid "Cannot request approval: %(error)s" +#~ msgstr "" + +#~ msgid "" +#~ "Could not request approval due to " +#~ "a database error. Please check server" +#~ " logs." +#~ msgstr "" +#~ "Não foi possível solicitar aprovação " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Approval requested successfully" +#~ msgstr "Homologação solicitada com sucesso" + +#~ msgid "This quote is not pending approval" +#~ msgstr "Esta citação não está pendente da aprovação" + +#~ msgid "Cannot approve quote: %(error)s" +#~ msgstr "" + +#~ msgid "" +#~ "Could not approve quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível aprovar a citação " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Quote approved successfully" +#~ msgstr "Cotação aprovada com sucesso" + +#~ msgid "Cannot reject quote: %(error)s" +#~ msgstr "Não foi possível rejeitar a citação: %(error)s" + +#~ msgid "Quote approval rejected" +#~ msgstr "Rejeição da aprovação da cotação" + +#~ msgid "" +#~ "Could not create template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível criar o modelo " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "Template created successfully" +#~ msgstr "Modelo criado com sucesso" -#: app/routes/payment_gateways.py:225 -msgid "Payment processed successfully." -msgstr "Pagamento processado com sucesso." +#~ msgid "Quote ID is required" +#~ msgstr "O ID de citação é necessário" -#: app/routes/payments.py:52 -msgid "Invalid from date format" -msgstr "Inválido a partir do formato de data" +#~ msgid "You do not have permission to create a template from this quote" +#~ msgstr "Você não tem permissão para criar um modelo a partir desta citação" -#: app/routes/payments.py:59 -msgid "Invalid to date format" -msgstr "Formato inválido até à data" +#~ msgid "" +#~ "Could not save template due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível salvar o modelo " +#~ "devido a um erro no banco de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/payments.py:132 -msgid "You do not have permission to view this payment" -msgstr "Você não tem permissão para ver este pagamento" +#~ msgid "Template saved successfully" +#~ msgstr "Modelo salvo com sucesso" -#: app/routes/payments.py:158 -msgid "Invoice, amount, and payment date are required" -msgstr "Fatura, montante e data de pagamento são necessários" +#~ msgid "You do not have permission to export this quote" +#~ msgstr "Você não tem permissão para exportar esta citação" -#: app/routes/payments.py:165 -msgid "Selected invoice not found" -msgstr "A factura seleccionada não foi encontrada" +#~ msgid "Error generating PDF: %(error)s" +#~ msgstr "Erro ao gerar PDF: %(error)s" -#: app/routes/payments.py:171 -msgid "You do not have permission to add payments to this invoice" -msgstr "Você não tem permissão para adicionar pagamentos a esta fatura" +#~ msgid "Recipient email address is required" +#~ msgstr "É necessário o endereço de e- mail do destinatário" -#: app/routes/payments.py:178 app/routes/payments.py:348 -msgid "Payment amount must be greater than zero" -msgstr "O montante do pagamento deve ser superior a zero" +#~ msgid "Quote sent successfully to %(email)s" +#~ msgstr "Cotação enviada com sucesso para %(email)s" -#: app/routes/payments.py:182 app/routes/payments.py:351 -msgid "Invalid payment amount" -msgstr "Montante de pagamento inválido" +#~ msgid "Failed to send quote: %(error)s" +#~ msgstr "Falha ao enviar a cotação: %(error)s" -#: app/routes/payments.py:190 app/routes/payments.py:358 -msgid "Invalid payment date format" -msgstr "Formato de data de pagamento inválido" +#~ msgid "Error sending email: %(error)s" +#~ msgstr "Erro ao enviar e- mail: %(error)s" -#: app/routes/payments.py:200 app/routes/payments.py:367 -msgid "Gateway fee cannot be negative" -msgstr "A taxa de acesso não pode ser negativa" +#~ msgid "You do not have permission to duplicate this quote" +#~ msgstr "Você não tem permissão para duplicar esta citação" -#: app/routes/payments.py:204 app/routes/payments.py:370 -msgid "Invalid gateway fee amount" -msgstr "Quantidade de taxa de gateway inválida" +#~ msgid "" +#~ "Could not duplicate quote due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível duplicar a citação " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." + +#~ msgid "" +#~ "Could not finalize duplicated quote due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Não foi possível finalizar a citação " +#~ "duplicada devido a um erro na base" +#~ " de dados. Por favor, verifique os" +#~ " registos do servidor." + +#~ msgid "Quote %(quote_number)s created as duplicate" +#~ msgstr "" + +#~ msgid "Please select an action and at least one quote" +#~ msgstr "Selecione uma ação e pelo menos uma citação" + +#~ msgid "Invalid quote IDs" +#~ msgstr "IDs de citação inválidos" + +#~ msgid "No quotes found or you do not have permission" +#~ msgstr "Nenhuma citação encontrada ou você não tem permissão" + +#~ msgid "Duplicated %(count)d quote(s)" +#~ msgstr "" + +#~ msgid "Failed to duplicate %(count)d quote(s)" +#~ msgstr "" -#: app/routes/payments.py:278 -msgid "" -"Could not create payment due to a database error. Please check server logs." -msgstr "" -"Não foi possível criar o pagamento devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Error duplicating quotes" +#~ msgstr "Erro ao duplicar aspas" -#: app/routes/payments.py:325 -msgid "You do not have permission to edit this payment" -msgstr "Você não tem permissão para editar este pagamento" +#~ msgid "Marked %(count)d quote(s) as sent" +#~ msgstr "" -#: app/routes/payments.py:407 -msgid "" -"Could not update payment due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar o pagamento devido a um erro na base de dados. " -"Por favor, verifique os registos do servidor." +#~ msgid "Could not mark %(count)d quote(s) as sent" +#~ msgstr "" -#: app/routes/payments.py:417 -msgid "Payment updated successfully" -msgstr "Pagamento actualizado com sucesso" +#~ msgid "Error updating quotes" +#~ msgstr "Erro ao atualizar aspas" -#: app/routes/payments.py:433 -msgid "You do not have permission to delete this payment" -msgstr "Você não tem permissão para excluir este pagamento" +#~ msgid "Deleted %(count)d quote(s)" +#~ msgstr "" -#: app/routes/payments.py:453 -msgid "" -"Could not delete payment due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar o pagamento devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Could not delete %(count)d quote(s) (may be in use)" +#~ msgstr "" -#: app/routes/payments.py:459 -msgid "Payment deleted successfully" -msgstr "Pagamento excluído com sucesso" +#~ msgid "Error deleting quotes" +#~ msgstr "Erro ao apagar aspas" -#: app/routes/payments.py:471 -msgid "No payments selected for deletion" -msgstr "Nenhum pagamento selecionado para exclusão" +#~ msgid "Invalid action" +#~ msgstr "Acção inválida" -#: app/routes/payments.py:516 -msgid "" -"Could not delete payments due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar os pagamentos devido a um erro na base de dados. Por" -" favor, verifique os registos do servidor." +#~ msgid "You do not have permission to upload images to this quote" +#~ msgstr "Você não tem permissão para enviar imagens para esta citação" -#: app/routes/payments.py:538 -msgid "No payments selected" -msgstr "Nenhum pagamento selecionado" +#~ msgid "You do not have permission to delete images from this quote" +#~ msgstr "Você não tem permissão para excluir imagens desta citação" -#: app/routes/payments.py:589 -msgid "Could not update payments due to a database error" -msgstr "" -"Não foi possível atualizar os pagamentos devido a um erro na base de dados" +#~ msgid "Name, project, client, frequency, and next run date are required" +#~ msgstr "" +#~ "Nome, projeto, cliente, frequência e " +#~ "próxima data de execução são necessários" -#: app/routes/per_diem.py:316 -msgid "Start date must be before end date" -msgstr "A data de início deve ser antes da data final" +#~ msgid "Invalid next run date format" +#~ msgstr "Formato de data de execução seguinte inválido" -#: app/routes/per_diem.py:352 -msgid "" -"No per diem rate found for this location. Please configure rates first." -msgstr "" -"Nenhuma taxa por dia encontrada para este local. Por favor configure as " -"taxas primeiro." +#~ msgid "Invalid end date format" +#~ msgstr "Formato de data final inválido" -#: app/routes/per_diem.py:408 -msgid "Per diem claim created successfully" -msgstr "Por pedido diem criado com sucesso" +#~ msgid "Selected project or client not found" +#~ msgstr "Projeto selecionado ou cliente não encontrado" -#: app/routes/per_diem.py:417 app/routes/per_diem.py:422 -msgid "Error creating per diem claim" -msgstr "Erro ao criar a reivindicação por diem" +#~ msgid "" +#~ "Could not create recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Não foi possível criar fatura recorrente" +#~ " devido a um erro na base de" +#~ " dados. Por favor, verifique os " +#~ "registos do servidor." -#: app/routes/per_diem.py:435 -msgid "You do not have permission to view this per diem claim" -msgstr "Você não tem permissão para ver este pedido per diem" +#~ msgid "You do not have permission to view this recurring invoice" +#~ msgstr "Você não tem permissão para visualizar esta fatura recorrente" -#: app/routes/per_diem.py:454 -msgid "You do not have permission to edit this per diem claim" -msgstr "Você não tem permissão para editar este pedido por diem" +#~ msgid "You do not have permission to edit this recurring invoice" +#~ msgstr "Você não tem permissão para editar esta fatura recorrente" -#: app/routes/per_diem.py:459 -msgid "Cannot edit approved or reimbursed per diem claims" -msgstr "Não é possível editar pedidos aprovados ou reembolsados por dia" +#~ msgid "" +#~ "Could not update recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Não foi possível atualizar a fatura " +#~ "recorrente devido a um erro na " +#~ "base de dados. Por favor, verifique " +#~ "os registos do servidor." -#: app/routes/per_diem.py:501 -msgid "Per diem claim updated successfully" -msgstr "Por pedido diem atualizado com sucesso" +#~ msgid "Recurring invoice updated successfully" +#~ msgstr "Factura recorrente atualizada com sucesso" -#: app/routes/per_diem.py:506 app/routes/per_diem.py:511 -msgid "Error updating per diem claim" -msgstr "Erro ao atualizar a alegação por diem" +#~ msgid "You do not have permission to delete this recurring invoice" +#~ msgstr "Você não tem permissão para excluir esta fatura recorrente" -#: app/routes/per_diem.py:524 -msgid "You do not have permission to delete this per diem claim" -msgstr "Você não tem permissão para excluir esta alegação por diem" +#~ msgid "" +#~ "Could not delete recurring invoice due" +#~ " to a database error. Please check" +#~ " server logs." +#~ msgstr "" +#~ "Não foi possível apagar a factura " +#~ "recorrente devido a um erro na " +#~ "base de dados. Por favor, verifique " +#~ "os registos do servidor." -#: app/routes/per_diem.py:531 -msgid "Per diem claim deleted successfully" -msgstr "Por pedido diem suprimido com sucesso" +#~ msgid "Recurring task created successfully" +#~ msgstr "Tarefa recorrente criada com sucesso" -#: app/routes/per_diem.py:535 app/routes/per_diem.py:539 -msgid "Error deleting per diem claim" -msgstr "Erro ao excluir a alegação por diem" +#~ msgid "You do not have permission to view other users' time entries" +#~ msgstr "Você não tem permissão para ver os itens temporais de outros usuários" -#: app/routes/per_diem.py:552 -msgid "No per diem claims selected for deletion" -msgstr "Nenhuma reivindicação por diem selecionada para exclusão" +#~ msgid "You do not have permission to export other users' time entries" +#~ msgstr "" +#~ "Você não tem permissão para exportar " +#~ "os itens temporais de outros usuários" -#: app/routes/per_diem.py:583 -msgid "" -"Could not delete per diem claims due to a database error. Please check " -"server logs." -msgstr "" -"Não foi possível apagar as reivindicações por diem devido a um erro na base " -"de dados. Por favor, verifique os registos do servidor." +#~ msgid "Start" +#~ msgstr "Iniciar" -#: app/routes/per_diem.py:591 -#, python-format -msgid "Successfully deleted %(count)d per diem claim(s)" -msgstr "" +#~ msgid "End" +#~ msgstr "Fim" -#: app/routes/per_diem.py:595 -#, python-format -msgid "Skipped %(count)d per diem claim(s): %(errors)s" -msgstr "" +#~ msgid "Duration (hours)" +#~ msgstr "Duração (horas)" -#: app/routes/per_diem.py:611 -msgid "No per diem claims selected" -msgstr "Não foram seleccionadas reivindicações por dia" +#~ msgid "Task" +#~ msgstr "Tarefa" -#: app/routes/per_diem.py:644 -msgid "Could not update per diem claims due to a database error" -msgstr "" -"Não foi possível atualizar as reivindicações por diem devido a um erro na " -"base de dados" +#~ msgid "Notes" +#~ msgstr "Notas" -#: app/routes/per_diem.py:648 -#, python-format -msgid "Successfully updated %(count)d per diem claim(s) to %(status)s" -msgstr "" +#~ msgid "Billed" +#~ msgstr "Faturado" -#: app/routes/per_diem.py:653 -#, python-format -msgid "Skipped %(count)d per diem claim(s) (no permission)" -msgstr "" +#~ msgid "Client" +#~ msgstr "Cliente" -#: app/routes/per_diem.py:664 -msgid "Only administrators can approve per diem claims" -msgstr "Apenas os administradores podem aprovar reivindicações por diem" +#~ msgid "User" +#~ msgstr "Usuário" -#: app/routes/per_diem.py:670 -msgid "Only pending per diem claims can be approved" -msgstr "Só podem ser aprovadas alegações pendentes por dia" +#~ msgid "Yes" +#~ msgstr "Sim." -#: app/routes/per_diem.py:678 -msgid "Per diem claim approved successfully" -msgstr "Por pedido diem aprovado com sucesso" +#~ msgid "No" +#~ msgstr "Não" -#: app/routes/per_diem.py:682 app/routes/per_diem.py:686 -msgid "Error approving per diem claim" -msgstr "Erro ao aprovar a alegação por dia" +#~ msgid "You do not have permission to access this page." +#~ msgstr "Você não tem permissão para acessar esta página." -#: app/routes/per_diem.py:697 -msgid "Only administrators can reject per diem claims" -msgstr "Apenas administradores podem rejeitar as reivindicações por diem" +#~ msgid "Could not delete filter due to a database error" +#~ msgstr "Não foi possível apagar o filtro devido a um erro na base de dados" -#: app/routes/per_diem.py:703 -msgid "Only pending per diem claims can be rejected" -msgstr "Apenas as alegações pendentes por dia podem ser rejeitadas" +#~ msgid "Error loading scheduled reports. Please check the logs." +#~ msgstr "" +#~ "Erro ao carregar os relatórios " +#~ "agendados. Por favor, verifique os " +#~ "registos." -#: app/routes/per_diem.py:715 -msgid "Per diem claim rejected" -msgstr "Por dia de alegação rejeitada" +#~ msgid "Please fill in all required fields." +#~ msgstr "Preencha todos os campos obrigatórios." + +#~ msgid "Please specify a custom field name when enabling report iteration." +#~ msgstr "" +#~ "Indique por favor um nome de campo" +#~ " personalizado ao activar a iteração " +#~ "do relatório." + +#~ msgid "Scheduled report created successfully." +#~ msgstr "Relatório agendado criado com sucesso." -#: app/routes/per_diem.py:719 app/routes/per_diem.py:723 -msgid "Error rejecting per diem claim" -msgstr "Erro ao rejeitar a alegação por diem" +#~ msgid "Scheduled report deleted successfully." +#~ msgstr "O relatório agendado foi apagado com sucesso." -#: app/routes/per_diem.py:789 -msgid "Per diem rate created successfully" -msgstr "Por taxa de diem criada com sucesso" +#~ msgid "Permission denied" +#~ msgstr "Permissão negada" -#: app/routes/per_diem.py:793 app/routes/per_diem.py:798 -msgid "Error creating per diem rate" -msgstr "Erro ao criar por taxa diem" +#~ msgid "You do not have permission to fix this schedule." +#~ msgstr "Você não tem permissão para corrigir este horário." -#: app/routes/per_diem.py:847 -msgid "Per diem rate updated successfully" -msgstr "Per diem taxa atualizada com sucesso" +#~ msgid "Scheduled report deleted: saved view no longer exists." +#~ msgstr "Relatório agendado excluído: a visão salva já não existe." -#: app/routes/per_diem.py:852 app/routes/per_diem.py:857 -msgid "Error updating per diem rate" -msgstr "Erro ao atualizar por taxa diem" +#~ msgid "Scheduled report deactivated: invalid configuration." +#~ msgstr "Relatório agendado desativado: configuração inválida." -#: app/routes/per_diem.py:877 -#, python-format -msgid "" -"Cannot delete rate: It is being used by %(count)d per diem claim(s). " -"Deactivate it instead." -msgstr "" +#~ msgid "Scheduled report deactivated: could not parse configuration." +#~ msgstr "" +#~ "Relatório agendado desativado: não foi " +#~ "possível processar a configuração." -#: app/routes/per_diem.py:888 -msgid "Per diem rate deleted successfully" -msgstr "Por taxa diem excluída com sucesso" +#~ msgid "Scheduled report validated and reactivated." +#~ msgstr "Relatório programado validado e reativado." -#: app/routes/per_diem.py:892 app/routes/per_diem.py:896 -msgid "Error deleting per diem rate" -msgstr "Erro ao apagar a taxa por diem" +#~ msgid "Saved report view not found" +#~ msgstr "Visão de relatório salva não encontrada" -#: app/routes/permissions.py:66 app/routes/permissions.py:137 -#: app/routes/permissions.py:226 app/routes/permissions.py:275 -#: app/routes/permissions.py:302 app/utils/permissions.py:42 -#: app/utils/permissions.py:74 -msgid "You do not have permission to access this page" -msgstr "Você não tem permissão para acessar esta página" +#~ msgid "Your preferences are managed on the main Settings page." +#~ msgstr "Suas preferências são gerenciadas na página principal Configurações." -#: app/routes/permissions.py:76 app/routes/permissions.py:149 -msgid "Role name is required" -msgstr "Nome do papel é necessário" +#~ msgid "Could not save settings. Please check server logs." +#~ msgstr "" +#~ "Não foi possível salvar as " +#~ "configurações. Por favor, verifique os " +#~ "registos do servidor." -#: app/routes/permissions.py:86 app/routes/permissions.py:170 -msgid "A role with this name already exists" -msgstr "Já existe um papel com este nome" +#~ msgid "Setup complete! Thank you for helping us improve TimeTracker." +#~ msgstr "" +#~ "Configuração completa! Obrigado por nos " +#~ "ajudar a melhorar o TimeTracker." -#: app/routes/permissions.py:109 -msgid "Could not create role due to a database error" -msgstr "Não foi possível criar o papel devido a um erro na base de dados" +#~ msgid "" +#~ "Setup complete! Detailed analytics is " +#~ "disabled; anonymous base telemetry remains " +#~ "active." +#~ msgstr "" +#~ "Configuração completa! A análise detalhada " +#~ "está desativada; a telemetria de base" +#~ " anônima permanece ativa." -#: app/routes/permissions.py:117 -msgid "Role created successfully" -msgstr "Papel criado com sucesso" +#~ msgid "Google Calendar OAuth credentials have been configured." +#~ msgstr "As credenciais do Google Calendar OAuth foram configuradas." -#: app/routes/permissions.py:159 app/templates/admin/roles/form.html:39 -msgid "System role names cannot be changed" -msgstr "Os nomes das funções do sistema não podem ser alterados" +#~ msgid "Project and task name are required" +#~ msgstr "O nome do projeto e da tarefa são necessários" -#: app/routes/permissions.py:197 -msgid "Could not update role due to a database error" -msgstr "Não foi possível atualizar o papel devido a um erro na base de dados" +#~ msgid "Invalid task name: %(error)s" +#~ msgstr "Nome da tarefa inválido: %(error)s" -#: app/routes/permissions.py:205 -msgid "Role updated successfully" -msgstr "Papel actualizado com sucesso" +#~ msgid "Selected project does not exist" +#~ msgstr "O projeto selecionado não existe" -#: app/routes/permissions.py:242 -msgid "You do not have permission to perform this action" -msgstr "Você não tem permissão para executar esta ação" +#~ msgid "Task not found" +#~ msgstr "Tarefa não encontrada" -#: app/routes/permissions.py:249 -msgid "System roles cannot be deleted" -msgstr "As funções do sistema não podem ser apagadas" +#~ msgid "You do not have access to this task" +#~ msgstr "Você não tem acesso a esta tarefa" -#: app/routes/permissions.py:254 -msgid "" -"Cannot delete role that is assigned to users. Please reassign users first." -msgstr "" -"Não é possível apagar a função atribuída aos utilizadores. Por favor, " -"reatribua os usuários primeiro." +#~ msgid "You can only edit tasks you created" +#~ msgstr "Você só pode editar tarefas que criou" -#: app/routes/permissions.py:261 -msgid "Could not delete role due to a database error" -msgstr "Não foi possível apagar o papel devido a um erro na base de dados" +#~ msgid "Task name is required" +#~ msgstr "O nome da tarefa é obrigatório" -#: app/routes/permissions.py:264 -#, python-format -msgid "Role \"%(name)s\" deleted successfully" -msgstr "" +#~ msgid "Project is required" +#~ msgstr "O projeto é necessário" -#: app/routes/permissions.py:320 -msgid "Only Super Admins can assign the super_admin role" -msgstr "Somente Super Admins pode atribuir a função super admin" +#~ msgid "" +#~ "Could not update status due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar o estado " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/permissions.py:328 -msgid "Only Super Admins can remove the admin role from themselves" -msgstr "" -"Somente Super Admins pode remover o papel de administrador de si mesmos" +#~ msgid "" +#~ "Could not update task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível atualizar a tarefa " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/permissions.py:334 -msgid "Only Super Admins can remove the admin role from other users" -msgstr "" -"Somente Super Admins pode remover o papel de administrador de outros " -"usuários" +#~ msgid "You do not have permission to update this task" +#~ msgstr "Você não tem permissão para atualizar esta tarefa" -#: app/routes/permissions.py:355 -msgid "Could not update user roles due to a database error" -msgstr "" -"Não foi possível atualizar as funções do usuário devido a um erro na base de" -" dados" +#~ msgid "You can only update tasks you created" +#~ msgstr "Você só pode atualizar tarefas que criou" -#: app/routes/permissions.py:358 -msgid "User roles updated successfully" -msgstr "Funções do usuário atualizadas com sucesso" +#~ msgid "You can only assign tasks you created" +#~ msgstr "Você só pode atribuir tarefas que criou" -#: app/routes/project_templates.py:163 -msgid "Template created successfully." -msgstr "Modelo criado com sucesso." +#~ msgid "Selected user does not exist" +#~ msgstr "O usuário selecionado não existe" -#: app/routes/project_templates.py:182 app/routes/project_templates.py:202 -#: app/routes/project_templates.py:307 -msgid "Template not found." -msgstr "Modelo não encontrado." +#~ msgid "Task unassigned" +#~ msgstr "Tarefa não atribuída" -#: app/routes/project_templates.py:187 -msgid "You do not have permission to view this template." -msgstr "Você não tem permissão para ver este modelo." +#~ msgid "You can only delete tasks you created" +#~ msgstr "Você só pode excluir tarefas que criou" -#: app/routes/project_templates.py:206 -msgid "You do not have permission to edit this template." -msgstr "Você não tem permissão para editar este modelo." +#~ msgid "Cannot delete task with existing time entries" +#~ msgstr "Não é possível apagar a tarefa com os itens de tempo existentes" -#: app/routes/project_templates.py:270 -msgid "Template updated successfully." -msgstr "Modelo actualizado com sucesso." +#~ msgid "" +#~ "Could not delete task due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar a tarefa " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/project_templates.py:289 -msgid "Template deleted successfully." -msgstr "O modelo foi apagado com sucesso." +#~ msgid "No tasks selected for deletion" +#~ msgstr "Nenhuma tarefa selecionada para exclusão" -#: app/routes/project_templates.py:317 -msgid "Please select a client." -msgstr "Por favor, selecione um cliente." +#~ msgid "" +#~ "Could not delete tasks due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar as tarefas " +#~ "devido a um erro na base de " +#~ "dados. Por favor, verifique os registos" +#~ " do servidor." -#: app/routes/project_templates.py:347 -msgid "Project created from template successfully." -msgstr "Projeto criado a partir de modelo com sucesso." +#~ msgid "No tasks selected" +#~ msgstr "Nenhuma tarefa selecionada" -#: app/routes/projects.py:339 app/routes/projects.py:940 -msgid "Project name and client are required" -msgstr "Nome do projeto e cliente são necessários" +#~ msgid "Could not update tasks due to a database error" +#~ msgstr "Não foi possível atualizar as tarefas devido a um erro na base de dados" -#: app/routes/projects.py:363 app/routes/projects.py:970 -msgid "Invalid budget amount" -msgstr "Montante do orçamento inválido" +#~ msgid "Due date is required (YYYY-MM-DD)" +#~ msgstr "Data de vencimento exigida (AAAA-MM-DD)" -#: app/routes/projects.py:376 app/routes/projects.py:985 -msgid "Invalid budget threshold percent (0-100)" -msgstr "Percentagem de limite orçamental inválida (0-100)" +#~ msgid "Due date is required" +#~ msgstr "Data de vencimento necessária" -#: app/routes/projects.py:449 -msgid "Could not save project due to a database error" -msgstr "Não foi possível salvar o projeto devido a um erro na base de dados" +#~ msgid "Invalid date format. Use YYYY-MM-DD" +#~ msgstr "Formato de data inválido. Utilizar AAAA-MM-DD" -#: app/routes/projects.py:569 app/routes/projects_refactored_example.py:113 -msgid "Project not found" -msgstr "Projeto não encontrado" +#~ msgid "Database error" +#~ msgstr "Erro na base de dados" -#: app/routes/projects.py:1068 -msgid "Could not update project due to a database error" -msgstr "" -"Não foi possível atualizar o projeto devido a um erro na base de dados" +#~ msgid "Updated %(count)s task(s)" +#~ msgstr "" -#: app/routes/projects.py:1113 -msgid "You do not have permission to archive projects" -msgstr "Você não tem permissão para arquivar projetos" +#~ msgid "No tasks updated" +#~ msgstr "Nenhuma tarefa atualizada" -#: app/routes/projects.py:1121 -msgid "Project is already archived" -msgstr "O projecto já está arquivado" +#~ msgid "Successfully updated %(count)s task(s) due date to %(date)s" +#~ msgstr "" -#: app/routes/projects.py:1155 -msgid "You do not have permission to unarchive projects" -msgstr "Você não tem permissão para projetos não arquivos" +#~ msgid "Skipped %(count)s task(s) (no permission)" +#~ msgstr "" -#: app/routes/projects.py:1159 app/routes/projects.py:1219 -msgid "Project is already active" -msgstr "O projecto já está activo" +#~ msgid "Invalid priority value" +#~ msgstr "Valor de prioridade inválido" -#: app/routes/projects.py:1192 -msgid "You do not have permission to deactivate projects" -msgstr "Você não tem permissão para desativar projetos" +#~ msgid "No user selected for assignment" +#~ msgstr "Nenhum usuário selecionado para a atribuição" -#: app/routes/projects.py:1196 -msgid "Project is already inactive" -msgstr "O projeto já está inativo" +#~ msgid "Invalid user selected" +#~ msgstr "Utilizador inválido seleccionado" -#: app/routes/projects.py:1215 -msgid "You do not have permission to activate projects" -msgstr "Você não tem permissão para ativar projetos" +#~ msgid "Could not assign tasks due to a database error" +#~ msgstr "Não foi possível atribuir tarefas devido a um erro na base de dados" -#: app/routes/projects.py:1239 -msgid "Cannot delete project with existing time entries" -msgstr "Não é possível excluir o projeto com os itens de tempo existentes" +#~ msgid "No project selected" +#~ msgstr "Nenhum projeto selecionado" -#: app/routes/projects.py:1259 -msgid "" -"Could not delete project due to a database error. Please check server logs." -msgstr "" -"Não foi possível excluir o projeto devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Invalid project selected" +#~ msgstr "Projecto inválido seleccionado" -#: app/routes/projects.py:1272 -msgid "You do not have permission to delete projects" -msgstr "Você não tem permissão para excluir projetos" +#~ msgid "Could not move tasks due to a database error" +#~ msgstr "Não foi possível mover as tarefas devido a um erro na base de dados" -#: app/routes/projects.py:1278 -msgid "No projects selected for deletion" -msgstr "Nenhum projeto selecionado para exclusão" +#~ msgid "Only administrators can view all overdue tasks" +#~ msgstr "Só os administradores podem ver todas as tarefas atrasadas" -#: app/routes/projects.py:1317 -msgid "" -"Could not delete projects due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar os projetos devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "You don't have access to this channel" +#~ msgstr "Você não tem acesso a este canal" -#: app/routes/projects.py:1331 -msgid "No projects were deleted" -msgstr "Nenhum projeto foi excluído" +#~ msgid "Message cannot be empty" +#~ msgstr "A mensagem não pode estar vazia" -#: app/routes/projects.py:1342 -msgid "You do not have permission to change project status" -msgstr "Você não tem permissão para alterar o status do projeto" +#~ msgid "Attachment data was invalid; message sent without attachment." +#~ msgstr "Os dados do anexo eram inválidos; a mensagem enviada sem o anexo." -#: app/routes/projects.py:1350 -msgid "No projects selected" -msgstr "Nenhum projeto selecionado" +#~ msgid "Invalid message" +#~ msgstr "Mensagem inválida" -#: app/routes/projects.py:1413 -msgid "" -"Could not update project status due to a database error. Please check server" -" logs." -msgstr "" -"Não foi possível atualizar o status do projeto devido a um erro na base de " -"dados. Por favor, verifique os registos do servidor." +#~ msgid "No attachment found" +#~ msgstr "Nenhum anexo encontrado" -#: app/routes/projects.py:1430 -msgid "No projects were updated" -msgstr "Nenhum projeto foi atualizado" +#~ msgid "Invalid filename" +#~ msgstr "Nome de arquivo inválido" -#: app/routes/projects.py:1448 app/routes/projects.py:1449 -msgid "Project is already in favorites" -msgstr "Projeto já está em favoritos" +#~ msgid "Server error: Could not create upload directory" +#~ msgstr "Erro do servidor: Não foi possível criar o diretório de envio" -#: app/routes/projects.py:1471 app/routes/projects.py:1472 -msgid "Project added to favorites" -msgstr "Projeto adicionado aos favoritos" +#~ msgid "Server error: Could not save file" +#~ msgstr "Erro no servidor: Não foi possível salvar o arquivo" -#: app/routes/projects.py:1476 app/routes/projects.py:1477 -msgid "Failed to add project to favorites" -msgstr "Falha ao adicionar o projeto aos favoritos" +#~ msgid "Cannot create direct message with yourself" +#~ msgstr "Não é possível criar uma mensagem directa consigo próprio" -#: app/routes/projects.py:1493 app/routes/projects.py:1494 -msgid "Project is not in favorites" -msgstr "Projeto não está em favoritos" +#~ msgid "User is not active" +#~ msgstr "O usuário não está ativo" -#: app/routes/projects.py:1516 app/routes/projects.py:1517 -msgid "Project removed from favorites" -msgstr "Projeto removido dos favoritos" +#~ msgid "Time entry approved" +#~ msgstr "Data de aprovação" -#: app/routes/projects.py:1521 app/routes/projects.py:1522 -msgid "Failed to remove project from favorites" -msgstr "Falha ao remover o projeto dos favoritos" +#~ msgid "Time entry rejected" +#~ msgstr "Rejeitada a data de entrada" -#: app/routes/projects.py:1602 app/routes/projects.py:1673 -msgid "Description, category, amount, and date are required" -msgstr "Descrição, categoria, montante e data são necessários" +#~ msgid "Approval requested" +#~ msgstr "Aprovação solicitada" -#: app/routes/projects.py:1636 -msgid "Could not add cost due to a database error. Please check server logs." -msgstr "" -"Não foi possível adicionar o custo devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Approval cancelled" +#~ msgstr "Aprovação cancelada" -#: app/routes/projects.py:1639 -msgid "Cost added successfully" -msgstr "Custo adicionado com sucesso" +#~ msgid "Could not create template due to a database error" +#~ msgstr "Não foi possível criar o modelo devido a um erro na base de dados" -#: app/routes/projects.py:1654 app/routes/projects.py:1721 -msgid "Cost not found" -msgstr "Custo não encontrado" +#~ msgid "Could not update template due to a database error" +#~ msgstr "Não foi possível atualizar o modelo devido a um erro na base de dados" -#: app/routes/projects.py:1659 -msgid "You do not have permission to edit this cost" -msgstr "Você não tem permissão para editar este custo" +#~ msgid "Could not delete template due to a database error" +#~ msgstr "Não foi possível apagar o modelo devido a um erro na base de dados" -#: app/routes/projects.py:1703 -msgid "" -"Could not update cost due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar o custo devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Either a project or a client is required" +#~ msgstr "É necessário um projeto ou um cliente" -#: app/routes/projects.py:1706 -msgid "Cost updated successfully" -msgstr "Custo actualizado com sucesso" +#~ msgid "" +#~ "Cannot start timer for an archived " +#~ "project. Please unarchive the project " +#~ "first." +#~ msgstr "" +#~ "Não é possível iniciar o temporizador" +#~ " para um projeto arquivado. Por " +#~ "favor, unarchive o projeto primeiro." -#: app/routes/projects.py:1726 -msgid "You do not have permission to delete this cost" -msgstr "Você não tem permissão para excluir este custo" +#~ msgid "Cannot start timer for an inactive project" +#~ msgstr "Não é possível iniciar o temporizador para um projeto inativo" -#: app/routes/projects.py:1731 -msgid "Cannot delete cost that has been invoiced" -msgstr "Não é possível apagar o custo que foi facturado" +#~ msgid "Selected task is invalid for the chosen project" +#~ msgstr "A tarefa selecionada é inválida para o projeto escolhido" -#: app/routes/projects.py:1737 -msgid "" -"Could not delete cost due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar o custo devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Invalid client selected" +#~ msgstr "Cliente inválido selecionado" -#: app/routes/projects.py:1830 app/routes/projects.py:1905 -msgid "Name and unit price are required" -msgstr "Nome e preço unitário são exigidos" +#~ msgid "Tasks can only be selected for project-based timers" +#~ msgstr "Tarefas só podem ser selecionadas para timers baseados em projetos" -#: app/routes/projects.py:1839 app/routes/projects.py:1914 -msgid "Invalid quantity format" -msgstr "Formato de quantidade inválido" +#~ msgid "You do not have access to this project" +#~ msgstr "Você não tem acesso a este projeto" -#: app/routes/projects.py:1848 app/routes/projects.py:1923 -msgid "Invalid unit price format" -msgstr "Formato de preço unitário inválido" +#~ msgid "You do not have access to this client" +#~ msgstr "Você não tem acesso a este cliente" -#: app/routes/projects.py:1867 -msgid "" -"Could not add extra good due to a database error. Please check server logs." -msgstr "" -"Não foi possível adicionar extra bom devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "You already have an active timer. Stop it before starting a new one." +#~ msgstr "Já tens um temporizador activo. Pare antes de começar um novo." -#: app/routes/projects.py:1870 -msgid "Extra good added successfully" -msgstr "Extra bom adicionado com sucesso" +#~ msgid "" +#~ "Could not start timer due to a " +#~ "database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível iniciar o temporizador" +#~ " devido a um erro na base de" +#~ " dados. Por favor, verifique os " +#~ "registos do servidor." -#: app/routes/projects.py:1885 app/routes/projects.py:1956 -msgid "Extra good not found" -msgstr "Extra bom não encontrado" +#~ msgid "Unknown" +#~ msgstr "Desconhecido" -#: app/routes/projects.py:1890 -msgid "You do not have permission to edit this extra good" -msgstr "Você não tem permissão para editar este bem extra" +#~ msgid "Timer started" +#~ msgstr "Temporizador iniciado" -#: app/routes/projects.py:1938 -msgid "" -"Could not update extra good due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível atualizar extra bom devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Template must have a project to start a timer" +#~ msgstr "O modelo deve ter um projeto para iniciar um timer" -#: app/routes/projects.py:1941 -msgid "Extra good updated successfully" -msgstr "Extra bom atualizado com sucesso" +#~ msgid "Cannot start timer for this project" +#~ msgstr "Não foi possível iniciar o temporizador para este projeto" -#: app/routes/projects.py:1961 -msgid "You do not have permission to delete this extra good" -msgstr "Você não tem permissão para excluir este bem extra" +#~ msgid "No active timer to stop" +#~ msgstr "Nenhum timer ativo para parar" -#: app/routes/projects.py:1966 -msgid "Cannot delete extra good that has been added to an invoice" -msgstr "Não é possível excluir o bem extra que foi adicionado a uma fatura" +#~ msgid "No project" +#~ msgstr "Nenhum projeto" -#: app/routes/projects.py:1972 -msgid "" -"Could not delete extra good due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível apagar extra bom devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." - -#: app/routes/projects_refactored_example.py:190 -msgid "Project created successfully" -msgstr "Projeto criado com sucesso" - -#: app/routes/quotes.py:248 app/routes/quotes.py:562 -msgid "Invalid discount amount format" -msgstr "Formato de quantidade de desconto inválido" - -#: app/routes/quotes.py:866 -msgid "Quote must be approved before it can be sent" -msgstr "A cotação deve ser aprovada antes de poder ser enviada" - -#: app/routes/quotes.py:874 -#, python-format -msgid "Cannot send quote: %(error)s" -msgstr "Não foi possível enviar aspas %(error)s" - -#: app/routes/quotes.py:1115 -msgid "You do not have permission to upload attachments to this quote" -msgstr "Você não tem permissão para enviar anexos para esta citação" - -#: app/routes/quotes.py:1229 -msgid "You do not have permission to download this attachment" -msgstr "Você não tem permissão para baixar este anexo" - -#: app/routes/quotes.py:1298 -msgid "You do not have permission to request approval for this quote" -msgstr "Você não tem permissão para solicitar aprovação para esta cotação" - -#: app/routes/quotes.py:1302 app/routes/quotes.py:1340 -#: app/routes/quotes.py:1380 -msgid "This quote does not require approval" -msgstr "Esta citação não requer aprovação" - -#: app/routes/quotes.py:1308 -#, python-format -msgid "Cannot request approval: %(error)s" -msgstr "" +#~ msgid "Cannot stop timer: %(error)s" +#~ msgstr "" -#: app/routes/quotes.py:1312 -msgid "" -"Could not request approval due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível solicitar aprovação devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "" +#~ "Could not stop timer due to an " +#~ "error. Please try again or contact " +#~ "support if the problem persists." +#~ msgstr "" +#~ "Não foi possível parar o temporizador" +#~ " devido a um erro. Por favor, " +#~ "tente novamente ou contacte o suporte" +#~ " se o problema persistir." -#: app/routes/quotes.py:1328 -msgid "Approval requested successfully" -msgstr "Homologação solicitada com sucesso" +#~ msgid "No active timer to pause" +#~ msgstr "Sem temporizador ativo para pausar" -#: app/routes/quotes.py:1344 app/routes/quotes.py:1384 -msgid "This quote is not pending approval" -msgstr "Esta citação não está pendente da aprovação" +#~ msgid "Timer paused" +#~ msgstr "Temporizador parado" -#: app/routes/quotes.py:1352 -#, python-format -msgid "Cannot approve quote: %(error)s" -msgstr "" +#~ msgid "Could not pause timer. Please try again." +#~ msgstr "Não foi possível pausar o temporizador. Por favor, tente novamente." -#: app/routes/quotes.py:1356 -msgid "" -"Could not approve quote due to a database error. Please check server logs." -msgstr "" -"Não foi possível aprovar a citação devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "No active timer to resume" +#~ msgstr "Nenhum timer ativo para retomar" -#: app/routes/quotes.py:1368 -msgid "Quote approved successfully" -msgstr "Cotação aprovada com sucesso" +#~ msgid "Timer resumed" +#~ msgstr "Temporizador retomado" -#: app/routes/quotes.py:1395 -#, python-format -msgid "Cannot reject quote: %(error)s" -msgstr "Não foi possível rejeitar a citação: %(error)s" +#~ msgid "Could not resume timer. Please try again." +#~ msgstr "Não foi possível retomar o temporizador. Por favor, tente novamente." -#: app/routes/quotes.py:1411 -msgid "Quote approval rejected" -msgstr "Rejeição da aprovação da cotação" +#~ msgid "No active timer to adjust" +#~ msgstr "Nenhum timer ativo para ajustar" -#: app/routes/quotes.py:1488 -msgid "" -"Could not create template due to a database error. Please check server logs." -msgstr "" -"Não foi possível criar o modelo devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Invalid adjustment value" +#~ msgstr "Valor de ajuste inválido" -#: app/routes/quotes.py:1494 -msgid "Template created successfully" -msgstr "Modelo criado com sucesso" +#~ msgid "You can only edit your own timers" +#~ msgstr "Você só pode editar seus próprios timers" -#: app/routes/quotes.py:1507 -msgid "Quote ID is required" -msgstr "O ID de citação é necessário" +#~ msgid "Invalid task selected for the chosen project" +#~ msgstr "Tarefa inválida selecionada para o projeto escolhido" -#: app/routes/quotes.py:1513 -msgid "You do not have permission to create a template from this quote" -msgstr "Você não tem permissão para criar um modelo a partir desta citação" +#~ msgid "Start time cannot be in the future" +#~ msgstr "A hora de início não pode ser no futuro" -#: app/routes/quotes.py:1555 -msgid "" -"Could not save template due to a database error. Please check server logs." -msgstr "" -"Não foi possível salvar o modelo devido a um erro no banco de dados. Por " -"favor, verifique os registos do servidor." - -#: app/routes/quotes.py:1561 -msgid "Template saved successfully" -msgstr "Modelo salvo com sucesso" - -#: app/routes/quotes.py:1578 -msgid "You do not have permission to export this quote" -msgstr "Você não tem permissão para exportar esta citação" - -#: app/routes/quotes.py:1649 -#, python-format -msgid "Error generating PDF: %(error)s" -msgstr "Erro ao gerar PDF: %(error)s" - -#: app/routes/quotes.py:1673 -msgid "Recipient email address is required" -msgstr "É necessário o endereço de e- mail do destinatário" - -#: app/routes/quotes.py:1691 -#, python-format -msgid "Quote sent successfully to %(email)s" -msgstr "Cotação enviada com sucesso para %(email)s" - -#: app/routes/quotes.py:1708 -#, python-format -msgid "Failed to send quote: %(error)s" -msgstr "Falha ao enviar a cotação: %(error)s" - -#: app/routes/quotes.py:1714 -#, python-format -msgid "Error sending email: %(error)s" -msgstr "Erro ao enviar e- mail: %(error)s" - -#: app/routes/quotes.py:1733 -msgid "You do not have permission to duplicate this quote" -msgstr "Você não tem permissão para duplicar esta citação" - -#: app/routes/quotes.py:1771 -msgid "" -"Could not duplicate quote due to a database error. Please check server logs." -msgstr "" -"Não foi possível duplicar a citação devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Invalid start date/time format" +#~ msgstr "Formato de data/hora de início inválido" -#: app/routes/quotes.py:1796 -msgid "" -"Could not finalize duplicated quote due to a database error. Please check " -"server logs." -msgstr "" -"Não foi possível finalizar a citação duplicada devido a um erro na base de " -"dados. Por favor, verifique os registos do servidor." +#~ msgid "End time must be after start time" +#~ msgstr "A hora de fim deve ser após a hora de início" -#: app/routes/quotes.py:1799 -#, python-format -msgid "Quote %(quote_number)s created as duplicate" -msgstr "" +#~ msgid "Invalid end date/time format" +#~ msgstr "Formato de data/hora final inválido" -#: app/routes/quotes.py:1824 -msgid "Please select an action and at least one quote" -msgstr "Selecione uma ação e pelo menos uma citação" +#~ msgid "Timer updated successfully" +#~ msgstr "Temporizador actualizado com sucesso" -#: app/routes/quotes.py:1830 -msgid "Invalid quote IDs" -msgstr "IDs de citação inválidos" +#~ msgid "You do not have permission to view this time entry" +#~ msgstr "Você não tem permissão para ver este item de tempo" -#: app/routes/quotes.py:1839 -msgid "No quotes found or you do not have permission" -msgstr "Nenhuma citação encontrada ou você não tem permissão" +#~ msgid "You can only delete your own timers" +#~ msgstr "Você só pode excluir seus próprios timers" -#: app/routes/quotes.py:1905 -#, python-format -msgid "Duplicated %(count)d quote(s)" -msgstr "" +#~ msgid "Cannot delete an active timer" +#~ msgstr "Não é possível excluir um temporizador ativo" -#: app/routes/quotes.py:1907 -#, python-format -msgid "Failed to duplicate %(count)d quote(s)" -msgstr "" +#~ msgid "" +#~ "Could not delete timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível apagar o temporizador" +#~ " devido a um erro na base de" +#~ " dados. Por favor, verifique os " +#~ "registos do servidor." -#: app/routes/quotes.py:1909 -msgid "Error duplicating quotes" -msgstr "Erro ao duplicar aspas" +#~ msgid "No time entries selected" +#~ msgstr "Nenhum item de tempo selecionado" -#: app/routes/quotes.py:1924 -#, python-format -msgid "Marked %(count)d quote(s) as sent" -msgstr "" +#~ msgid "Invalid entry IDs" +#~ msgstr "IDs de entrada inválidos" -#: app/routes/quotes.py:1926 -#, python-format -msgid "Could not mark %(count)d quote(s) as sent" -msgstr "" +#~ msgid "No time entries found" +#~ msgstr "Não foram encontrados itens de tempo" -#: app/routes/quotes.py:1928 -msgid "Error updating quotes" -msgstr "Erro ao atualizar aspas" +#~ msgid "Successfully deleted %(count)d time entry/entries" +#~ msgstr "" -#: app/routes/quotes.py:1944 -#, python-format -msgid "Deleted %(count)d quote(s)" -msgstr "" +#~ msgid "Skipped %(count)d time entry/entries (no permission or active timer)" +#~ msgstr "" -#: app/routes/quotes.py:1946 -#, python-format -msgid "Could not delete %(count)d quote(s) (may be in use)" -msgstr "" +#~ msgid "" +#~ "Please provide either start/end date+time " +#~ "or a worked time duration (HH:MM)." +#~ msgstr "" +#~ "Indicar a data de início/fim+hora ou " +#~ "a duração do tempo de trabalho " +#~ "(HH:MM)." -#: app/routes/quotes.py:1948 -msgid "Error deleting quotes" -msgstr "Erro ao apagar aspas" +#~ msgid "Either a project or a client must be selected" +#~ msgstr "Deve ser seleccionado um projecto ou um cliente" -#: app/routes/quotes.py:1951 -msgid "Invalid action" -msgstr "Acção inválida" +#~ msgid "Invalid date/time format" +#~ msgstr "Formato data/hora inválido" -#: app/routes/quotes.py:1973 -msgid "You do not have permission to upload images to this quote" -msgstr "Você não tem permissão para enviar imagens para esta citação" +#~ msgid "Manual entry created for %(project)s - %(task)s" +#~ msgstr "" -#: app/routes/quotes.py:2140 -msgid "You do not have permission to delete images from this quote" -msgstr "Você não tem permissão para excluir imagens desta citação" +#~ msgid "Manual entry created for %(target)s" +#~ msgstr "" -#: app/routes/recurring_invoices.py:68 -msgid "Name, project, client, frequency, and next run date are required" -msgstr "" -"Nome, projeto, cliente, frequência e próxima data de execução são " -"necessários" +#~ msgid "All fields are required" +#~ msgstr "Todos os campos são necessários" -#: app/routes/recurring_invoices.py:74 -msgid "Invalid next run date format" -msgstr "Formato de data de execução seguinte inválido" +#~ msgid "" +#~ "Cannot create time entries for an " +#~ "archived project. Please unarchive the " +#~ "project first." +#~ msgstr "" +#~ "Não é possível criar itens de " +#~ "tempo para um projeto arquivado. Por " +#~ "favor, unarchive o projeto primeiro." -#: app/routes/recurring_invoices.py:82 -msgid "Invalid end date format" -msgstr "Formato de data final inválido" +#~ msgid "Cannot create time entries for an inactive project" +#~ msgstr "Não é possível criar itens de tempo para um projeto inativo" -#: app/routes/recurring_invoices.py:95 -msgid "Selected project or client not found" -msgstr "Projeto selecionado ou cliente não encontrado" +#~ msgid "Invalid task selected" +#~ msgstr "Tarefa inválida selecionada" -#: app/routes/recurring_invoices.py:137 -msgid "" -"Could not create recurring invoice due to a database error. Please check " -"server logs." -msgstr "" -"Não foi possível criar fatura recorrente devido a um erro na base de dados. " -"Por favor, verifique os registos do servidor." +#~ msgid "End date must be after or equal to start date" +#~ msgstr "A data final deve ser posterior ou igual à data inicial" -#: app/routes/recurring_invoices.py:173 -msgid "You do not have permission to view this recurring invoice" -msgstr "Você não tem permissão para visualizar esta fatura recorrente" +#~ msgid "Date range cannot exceed 31 days" +#~ msgstr "Intervalo de datas não pode exceder 31 dias" -#: app/routes/recurring_invoices.py:191 -msgid "You do not have permission to edit this recurring invoice" -msgstr "Você não tem permissão para editar esta fatura recorrente" +#~ msgid "Invalid time format" +#~ msgstr "Formato de hora inválido" -#: app/routes/recurring_invoices.py:216 -msgid "" -"Could not update recurring invoice due to a database error. Please check " -"server logs." -msgstr "" -"Não foi possível atualizar a fatura recorrente devido a um erro na base de " -"dados. Por favor, verifique os registos do servidor." +#~ msgid "No valid dates found in the selected range" +#~ msgstr "Nenhuma data válida encontrada no intervalo selecionado" -#: app/routes/recurring_invoices.py:224 -msgid "Recurring invoice updated successfully" -msgstr "Factura recorrente atualizada com sucesso" +#~ msgid "" +#~ "Could not create bulk entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Não foi possível criar entradas em " +#~ "massa devido a um erro na base " +#~ "de dados. Por favor, verifique os " +#~ "registos do servidor." -#: app/routes/recurring_invoices.py:251 -msgid "You do not have permission to delete this recurring invoice" -msgstr "Você não tem permissão para excluir esta fatura recorrente" +#~ msgid "An error occurred while creating bulk entries. Please try again." +#~ msgstr "Ocorreu um erro ao criar entradas a granel. Por favor, tente novamente." -#: app/routes/recurring_invoices.py:257 -msgid "" -"Could not delete recurring invoice due to a database error. Please check " -"server logs." -msgstr "" -"Não foi possível apagar a factura recorrente devido a um erro na base de " -"dados. Por favor, verifique os registos do servidor." - -#: app/routes/recurring_tasks.py:64 -msgid "Recurring task created successfully" -msgstr "Tarefa recorrente criada com sucesso" - -#: app/routes/reports.py:134 app/routes/reports.py:208 -#: app/routes/reports.py:860 app/routes/timer.py:2266 -msgid "You do not have permission to view other users' time entries" -msgstr "Você não tem permissão para ver os itens temporais de outros usuários" - -#: app/routes/reports.py:387 app/routes/reports.py:959 -#: app/routes/reports.py:1000 app/routes/reports.py:1093 -#: app/routes/reports.py:1176 app/routes/reports.py:1270 -#: app/routes/reports.py:1445 -msgid "You do not have permission to export other users' time entries" -msgstr "" -"Você não tem permissão para exportar os itens temporais de outros usuários" - -#: app/routes/reports.py:1014 app/templates/main/dashboard.html:706 -#: app/templates/main/search.html:34 app/templates/mileage/gps.html:31 -#: app/templates/projects/_kanban_tailwind.html:78 -#: app/templates/projects/time_entries_overview.html:68 -#: app/templates/projects/time_entries_overview.html:79 -#: app/templates/reports/time_entries_report.html:103 -#: app/templates/reports/time_entries_report.html:117 -#: app/templates/tasks/view.html:14 app/templates/timer/calendar.html:868 -#: app/templates/timer/time_entries_export_pdf.html:14 -msgid "Start" -msgstr "Iniciar" - -#: app/routes/reports.py:1015 app/templates/main/search.html:35 -#: app/templates/projects/time_entries_overview.html:69 -#: app/templates/projects/time_entries_overview.html:80 -#: app/templates/timer/calendar.html:872 -#: app/templates/timer/time_entries_export_pdf.html:15 -msgid "End" -msgstr "Fim" - -#: app/routes/reports.py:1016 app/templates/reports/user_report.html:78 -msgid "Duration (hours)" -msgstr "Duração (horas)" - -#: app/routes/reports.py:1018 app/templates/approvals/view.html:52 -#: app/templates/audit_logs/view.html:95 -#: app/templates/calendar/event_detail.html:104 -#: app/templates/calendar/event_form.html:129 -#: app/templates/clients/view.html:351 -#: app/templates/components/offline_indicator.html:78 -#: app/templates/kiosk/dashboard.html:331 -#: app/templates/main/dashboard.html:750 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/time_entries_overview.html:71 -#: app/templates/projects/time_entries_overview.html:82 -#: app/templates/reports/time_entries_report.html:57 -#: app/templates/reports/time_entries_report.html:107 -#: app/templates/reports/time_entries_report.html:121 -#: app/templates/reports/unpaid_hours_report.html:121 -#: app/templates/reports/user_report.html:77 -#: app/templates/timer/_time_entries_list.html:39 -#: app/templates/timer/_time_entries_list.html:80 -#: app/templates/timer/calendar.html:158 app/templates/timer/calendar.html:811 -#: app/templates/timer/calendar.html:866 -#: app/templates/timer/manual_entry.html:79 -#: app/templates/timer/time_entries_export_pdf.html:17 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/view_timer.html:91 -msgid "Task" -msgstr "Tarefa" - -#: app/routes/reports.py:1019 app/templates/admin/pdf_layout.html:1864 -#: app/templates/admin/quote_pdf_layout.html:1670 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/approvals/view.html:62 -#: app/templates/client_portal/invoice_detail.html:123 -#: app/templates/clients/view.html:354 app/templates/contacts/form.html:84 -#: app/templates/contacts/view.html:70 app/templates/deals/form.html:102 -#: app/templates/deals/view.html:112 -#: app/templates/inventory/adjustments/form.html:50 -#: app/templates/inventory/movements/form.html:108 -#: app/templates/inventory/purchase_orders/form.html:55 -#: app/templates/inventory/purchase_orders/view.html:75 -#: app/templates/inventory/stock_items/form.html:81 -#: app/templates/inventory/suppliers/form.html:73 -#: app/templates/inventory/suppliers/view.html:99 -#: app/templates/inventory/transfers/form.html:54 -#: app/templates/inventory/warehouses/form.html:48 -#: app/templates/inventory/warehouses/view.html:69 -#: app/templates/invoices/create.html:51 app/templates/invoices/edit.html:46 -#: app/templates/kiosk/dashboard.html:347 app/templates/leads/form.html:88 -#: app/templates/leads/view.html:115 app/templates/main/dashboard.html:760 -#: app/templates/main/search.html:37 app/templates/projects/add_cost.html:76 -#: app/templates/projects/edit_cost.html:83 -#: app/templates/reports/iterative_view.html:47 -#: app/templates/reports/iterative_view.html:58 -#: app/templates/reports/time_entries_report.html:108 -#: app/templates/reports/time_entries_report.html:122 -#: app/templates/reports/unpaid_hours_report.html:124 -#: app/templates/reports/user_report.html:79 app/templates/tasks/view.html:78 -#: app/templates/timer/_time_entries_list.html:41 -#: app/templates/timer/_time_entries_list.html:107 -#: app/templates/timer/bulk_entry.html:189 -#: app/templates/timer/calendar.html:187 app/templates/timer/calendar.html:879 -#: app/templates/timer/edit_timer.html:337 -#: app/templates/timer/edit_timer.html:448 -#: app/templates/timer/manual_entry.html:140 -#: app/templates/timer/time_entries_export_pdf.html:19 -#: app/templates/timer/timer_page.html:169 -#: app/templates/timer/view_timer.html:46 -#: app/templates/weekly_goals/create.html:83 -#: app/templates/weekly_goals/edit.html:98 -#: app/templates/weekly_goals/view.html:163 -msgid "Notes" -msgstr "Notas" - -#: app/routes/reports.py:1020 -#: app/templates/reports/time_entries_report.html:68 -#: app/templates/reports/time_entries_report.html:109 -#: app/templates/reports/time_entries_report.html:123 -msgid "Billed" -msgstr "Faturado" - -#: app/routes/reports.py:1021 app/templates/approvals/view.html:44 -#: app/templates/audit_logs/list.html:114 -#: app/templates/audit_logs/view.html:92 -#: app/templates/calendar/event_detail.html:120 -#: app/templates/calendar/event_form.html:142 -#: app/templates/client_portal/invoice_detail.html:23 -#: app/templates/client_portal/project_comments.html:51 -#: app/templates/client_portal/quote_detail.html:23 -#: app/templates/client_portal/set_password.html:41 -#: app/templates/deals/form.html:30 app/templates/deals/list.html:51 -#: app/templates/deals/list.html:65 app/templates/deals/view.html:36 -#: app/templates/issues/list.html:57 app/templates/issues/list.html:94 -#: app/templates/issues/list.html:111 app/templates/issues/new.html:37 -#: app/templates/issues/view.html:126 app/templates/issues/view.html:156 -#: app/templates/leads/convert_to_deal.html:29 -#: app/templates/main/dashboard.html:742 app/templates/main/help.html:196 -#: app/templates/project_templates/create_project.html:21 -#: app/templates/projects/_projects_list.html:79 -#: app/templates/projects/create.html:32 app/templates/projects/edit.html:30 -#: app/templates/projects/list.html:160 -#: app/templates/quotes/_quotes_list.html:35 -#: app/templates/quotes/_quotes_list.html:52 -#: app/templates/quotes/accept.html:22 app/templates/quotes/create.html:32 -#: app/templates/quotes/edit.html:36 app/templates/quotes/view.html:84 -#: app/templates/recurring_invoices/list.html:25 -#: app/templates/recurring_invoices/list.html:41 -#: app/templates/reports/iterative_view.html:43 -#: app/templates/reports/iterative_view.html:54 -#: app/templates/reports/time_entries_report.html:46 -#: app/templates/reports/time_entries_report.html:110 -#: app/templates/reports/time_entries_report.html:124 -#: app/templates/reports/unpaid_hours_report.html:73 -#: app/templates/reports/unpaid_hours_report.html:85 -#: app/templates/reports/user_report.html:81 -#: app/templates/timer/manual_entry.html:71 -#: app/templates/timer/time_entries_overview.html:98 -#: app/templates/timer/timer_page.html:149 -#: app/templates/timer/view_timer.html:81 -msgid "Client" -msgstr "Cliente" - -#: app/routes/reports.py:1024 app/templates/admin/dashboard.html:334 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/audit_logs/list.html:35 app/templates/audit_logs/list.html:76 -#: app/templates/audit_logs/list.html:90 -#: app/templates/client_portal/reports.html:222 -#: app/templates/client_portal/time_entries.html:64 -#: app/templates/client_portal/widgets/time_entries.html:22 -#: app/templates/clients/view.html:352 app/templates/deals/view.html:193 -#: app/templates/deals/view.html:203 app/templates/expenses/list.html:329 -#: app/templates/integrations/health.html:41 -#: app/templates/inventory/adjustments/list.html:61 -#: app/templates/inventory/adjustments/list.html:82 -#: app/templates/inventory/movements/list.html:62 -#: app/templates/inventory/movements/list.html:145 -#: app/templates/inventory/reports/movement_history.html:78 -#: app/templates/inventory/reports/movement_history.html:165 -#: app/templates/inventory/stock_items/history.html:69 -#: app/templates/inventory/stock_items/history.html:151 -#: app/templates/inventory/transfers/list.html:43 -#: app/templates/inventory/transfers/list.html:70 -#: app/templates/projects/time_entries_overview.html:73 -#: app/templates/projects/time_entries_overview.html:90 -#: app/templates/reports/iterative_view.html:45 -#: app/templates/reports/iterative_view.html:56 -#: app/templates/reports/time_entries_report.html:24 -#: app/templates/reports/unpaid_hours_report.html:119 -#: app/templates/reports/user_report.html:75 app/templates/tasks/view.html:77 -#: app/templates/timer/_time_entries_list.html:36 -#: app/templates/timer/_time_entries_list.html:63 -#: app/templates/timer/edit_timer.html:533 -#: app/templates/timer/time_entries_overview.html:67 -#: app/templates/timer/view_timer.html:118 app/templates/user/profile.html:23 -#: app/templates/workforce/dashboard.html:21 -#: app/templates/workforce/dashboard.html:208 -msgid "User" -msgstr "Usuário" - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:183 -#: app/templates/admin/settings.html:413 app/templates/base.html:395 -#: app/templates/integrations/health.html:46 -#: app/templates/integrations/view.html:32 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:113 -#: app/templates/kanban/columns.html:79 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:72 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "Yes" -msgstr "Sim." - -#: app/routes/reports.py:1038 app/templates/admin/email_support.html:185 -#: app/templates/admin/settings.html:413 app/templates/base.html:396 -#: app/templates/integrations/health.html:48 -#: app/templates/integrations/view.html:43 -#: app/templates/integrations/wizard_jira.html:253 -#: app/templates/inventory/stock_items/view.html:115 -#: app/templates/kanban/columns.html:81 -#: app/templates/project_templates/view.html:40 -#: app/templates/reports/time_entries_report.html:73 -#: app/templates/reports/time_entries_report.html:123 -#: app/templates/timer/calendar.html:885 -msgid "No" -msgstr "Não" - -#: app/routes/salesman_reports.py:27 -msgid "You do not have permission to access this page." -msgstr "Você não tem permissão para acessar esta página." - -#: app/routes/saved_filters.py:248 -msgid "Could not delete filter due to a database error" -msgstr "Não foi possível apagar o filtro devido a um erro na base de dados" - -#: app/routes/scheduled_reports.py:104 -msgid "Error loading scheduled reports. Please check the logs." -msgstr "" -"Erro ao carregar os relatórios agendados. Por favor, verifique os registos." +#~ msgid "You can only duplicate your own timers" +#~ msgstr "Você só pode duplicar seus próprios timers" -#: app/routes/scheduled_reports.py:129 app/routes/scheduled_reports.py:195 -msgid "Please fill in all required fields." -msgstr "Preencha todos os campos obrigatórios." +#~ msgid "You can only resume your own timers" +#~ msgstr "Você só pode retomar seus próprios timers" -#: app/routes/scheduled_reports.py:133 app/routes/scheduled_reports.py:200 -msgid "Please specify a custom field name when enabling report iteration." -msgstr "" -"Indique por favor um nome de campo personalizado ao activar a iteração do " -"relatório." +#~ msgid "Project no longer exists" +#~ msgstr "O projecto já não existe" -#: app/routes/scheduled_reports.py:151 -msgid "Scheduled report created successfully." -msgstr "Relatório agendado criado com sucesso." +#~ msgid "Client no longer exists or is inactive" +#~ msgstr "O cliente já não existe ou está inactivo" -#: app/routes/scheduled_reports.py:168 -msgid "Scheduled report deleted successfully." -msgstr "O relatório agendado foi apagado com sucesso." +#~ msgid "Timer is not linked to a project or client" +#~ msgstr "O timer não está ligado a um projeto ou cliente" -#: app/routes/scheduled_reports.py:250 app/routes/scheduled_reports.py:355 -msgid "Permission denied" -msgstr "Permissão negada" +#~ msgid "" +#~ "Could not resume timer due to a" +#~ " database error. Please check server " +#~ "logs." +#~ msgstr "" +#~ "Não foi possível retomar o temporizador" +#~ " devido a um erro na base de" +#~ " dados. Por favor, verifique os " +#~ "registos do servidor." -#: app/routes/scheduled_reports.py:305 -msgid "You do not have permission to fix this schedule." -msgstr "Você não tem permissão para corrigir este horário." +#~ msgid "Resumed timer" +#~ msgstr "Temporizador retomado" -#: app/routes/scheduled_reports.py:313 -msgid "Scheduled report deleted: saved view no longer exists." -msgstr "Relatório agendado excluído: a visão salva já não existe." +#~ msgid "Invalid paid status" +#~ msgstr "Estado pago inválido" -#: app/routes/scheduled_reports.py:327 -msgid "Scheduled report deactivated: invalid configuration." -msgstr "Relatório agendado desativado: configuração inválida." +#~ msgid "" +#~ "Could not update time entries due " +#~ "to a database error. Please check " +#~ "server logs." +#~ msgstr "" +#~ "Não foi possível atualizar os itens " +#~ "de tempo devido a um erro na " +#~ "base de dados. Por favor, verifique " +#~ "os registos do servidor." -#: app/routes/scheduled_reports.py:334 -msgid "Scheduled report deactivated: could not parse configuration." -msgstr "" -"Relatório agendado desativado: não foi possível processar a configuração." +#~ msgid "Successfully marked %(count)d time entry/entries as %(status)s" +#~ msgstr "" -#: app/routes/scheduled_reports.py:340 -msgid "Scheduled report validated and reactivated." -msgstr "Relatório programado validado e reativado." +#~ msgid "paid" +#~ msgstr "pago" -#: app/routes/scheduled_reports.py:359 -msgid "Saved report view not found" -msgstr "Visão de relatório salva não encontrada" +#~ msgid "unpaid" +#~ msgstr "não remunerado" -#: app/routes/settings.py:46 -msgid "Your preferences are managed on the main Settings page." -msgstr "Suas preferências são gerenciadas na página principal Configurações." +#~ msgid "Invalid timezone selected" +#~ msgstr "Período de tempo inválido seleccionado" -#: app/routes/setup.py:107 -msgid "Could not save settings. Please check server logs." -msgstr "" -"Não foi possível salvar as configurações. Por favor, verifique os registos " -"do servidor." +#~ msgid "Standard hours per day must be between 0.5 and 24" +#~ msgstr "As horas padrão por dia devem estar entre 0,5 e 24" -#: app/routes/setup.py:125 -msgid "Setup complete! Thank you for helping us improve TimeTracker." -msgstr "" -"Configuração completa! Obrigado por nos ajudar a melhorar o TimeTracker." +#~ msgid "Standard hours per week must be between 1 and 168" +#~ msgstr "As horas normais por semana devem ser entre 1 e 168" -#: app/routes/setup.py:127 -msgid "" -"Setup complete! Detailed analytics is disabled; anonymous base telemetry " -"remains active." -msgstr "" -"Configuração completa! A análise detalhada está desativada; a telemetria de " -"base anônima permanece ativa." +#~ msgid "Settings saved successfully" +#~ msgstr "Configurações salvas com sucesso" -#: app/routes/setup.py:129 -msgid "Google Calendar OAuth credentials have been configured." -msgstr "As credenciais do Google Calendar OAuth foram configuradas." +#~ msgid "Error saving settings: %(error)s" +#~ msgstr "Erro ao salvar as configurações: %(error)s" -#: app/routes/tasks.py:191 -msgid "Project and task name are required" -msgstr "O nome do projeto e da tarefa são necessários" +#~ msgid "This instance is already licensed." +#~ msgstr "Esta instância já está licenciada." -#: app/routes/tasks.py:200 app/routes/tasks.py:422 -#, python-format -msgid "Invalid task name: %(error)s" -msgstr "Nome da tarefa inválido: %(error)s" +#~ msgid "License activated. Thank you for supporting TimeTracker!" +#~ msgstr "Carta activada. Obrigado por apoiar o TimeTracker!" -#: app/routes/tasks.py:208 -msgid "Selected project does not exist" -msgstr "O projeto selecionado não existe" +#~ msgid "Error saving settings." +#~ msgstr "Erro ao salvar as configurações." -#: app/routes/tasks.py:331 -msgid "Task not found" -msgstr "Tarefa não encontrada" +#~ msgid "Preferences updated" +#~ msgstr "Preferências atualizadas" -#: app/routes/tasks.py:336 -msgid "You do not have access to this task" -msgstr "Você não tem acesso a esta tarefa" +#~ msgid "Language updated successfully" +#~ msgstr "Idioma actualizado com sucesso" -#: app/routes/tasks.py:395 -msgid "You can only edit tasks you created" -msgstr "Você só pode editar tarefas que criou" +#~ msgid "Invalid language" +#~ msgstr "Língua inválida" -#: app/routes/tasks.py:415 -msgid "Task name is required" -msgstr "O nome da tarefa é obrigatório" +#~ msgid "Language updated to %(language)s" +#~ msgstr "" -#: app/routes/tasks.py:434 -msgid "Project is required" -msgstr "O projeto é necessário" +#~ msgid "Webhook name is required" +#~ msgstr "Nome Webhook é necessário" -#: app/routes/tasks.py:525 -msgid "" -"Could not update status due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar o estado devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Webhook URL is required" +#~ msgstr "URL do Webhook é necessário" -#: app/routes/tasks.py:588 -msgid "" -"Could not update task due to a database error. Please check server logs." -msgstr "" -"Não foi possível atualizar a tarefa devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "At least one event must be selected" +#~ msgstr "Pelo menos um evento deve ser selecionado" -#: app/routes/tasks.py:626 -msgid "You do not have permission to update this task" -msgstr "Você não tem permissão para atualizar esta tarefa" +#~ msgid "Webhook created successfully" +#~ msgstr "Webhook criado com sucesso" -#: app/routes/tasks.py:736 -msgid "You can only update tasks you created" -msgstr "Você só pode atualizar tarefas que criou" +#~ msgid "Error creating webhook" +#~ msgstr "Erro ao criar o webhook" -#: app/routes/tasks.py:757 -msgid "You can only assign tasks you created" -msgstr "Você só pode atribuir tarefas que criou" +#~ msgid "Error creating webhook: %(error)s" +#~ msgstr "" -#: app/routes/tasks.py:763 -msgid "Selected user does not exist" -msgstr "O usuário selecionado não existe" +#~ msgid "Webhook updated successfully" +#~ msgstr "Webhook atualizado com sucesso" -#: app/routes/tasks.py:770 -msgid "Task unassigned" -msgstr "Tarefa não atribuída" +#~ msgid "Error updating webhook: %(error)s" +#~ msgstr "" -#: app/routes/tasks.py:783 -msgid "You can only delete tasks you created" -msgstr "Você só pode excluir tarefas que criou" +#~ msgid "Webhook deleted successfully" +#~ msgstr "Webhook apagado com sucesso" -#: app/routes/tasks.py:788 -msgid "Cannot delete task with existing time entries" -msgstr "Não é possível apagar a tarefa com os itens de tempo existentes" +#~ msgid "Error deleting webhook: %(error)s" +#~ msgstr "" -#: app/routes/tasks.py:809 -msgid "" -"Could not delete task due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar a tarefa devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Please enter a valid target hours (greater than 0)" +#~ msgstr "Digite uma hora- alvo válida (maior que 0)" -#: app/routes/tasks.py:831 -msgid "No tasks selected for deletion" -msgstr "Nenhuma tarefa selecionada para exclusão" +#~ msgid "" +#~ "A goal already exists for this " +#~ "week. Please edit the existing goal " +#~ "instead." +#~ msgstr "" +#~ "Já existe um objectivo para esta " +#~ "semana. Por favor, edite o objetivo " +#~ "existente." -#: app/routes/tasks.py:893 -msgid "" -"Could not delete tasks due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar as tarefas devido a um erro na base de dados. Por " -"favor, verifique os registos do servidor." +#~ msgid "Weekly time goal created successfully!" +#~ msgstr "Objetivo de tempo semanal criado com sucesso!" -#: app/routes/tasks.py:914 app/routes/tasks.py:989 app/routes/tasks.py:990 -#: app/routes/tasks.py:1068 app/routes/tasks.py:1069 app/routes/tasks.py:1137 -#: app/routes/tasks.py:1196 -msgid "No tasks selected" -msgstr "Nenhuma tarefa selecionada" +#~ msgid "Failed to create goal. Please try again." +#~ msgstr "Falha ao criar o objetivo. Por favor, tente novamente." -#: app/routes/tasks.py:962 app/routes/tasks.py:1030 app/routes/tasks.py:1105 -msgid "Could not update tasks due to a database error" -msgstr "" -"Não foi possível atualizar as tarefas devido a um erro na base de dados" +#~ msgid "You do not have permission to view this goal" +#~ msgstr "Você não tem permissão para ver este objetivo" -#: app/routes/tasks.py:995 -msgid "Due date is required (YYYY-MM-DD)" -msgstr "Data de vencimento exigida (AAAA-MM-DD)" +#~ msgid "You do not have permission to edit this goal" +#~ msgstr "Você não tem permissão para editar este objetivo" -#: app/routes/tasks.py:996 -msgid "Due date is required" -msgstr "Data de vencimento necessária" +#~ msgid "Weekly time goal updated successfully!" +#~ msgstr "Meta de tempo semanal atualizado com sucesso!" -#: app/routes/tasks.py:1005 app/routes/tasks.py:1006 -msgid "Invalid date format. Use YYYY-MM-DD" -msgstr "Formato de data inválido. Utilizar AAAA-MM-DD" +#~ msgid "Failed to update goal. Please try again." +#~ msgstr "Falha ao atualizar o objetivo. Por favor, tente novamente." -#: app/routes/tasks.py:1029 app/routes/tasks.py:1104 -msgid "Database error" -msgstr "Erro na base de dados" +#~ msgid "You do not have permission to delete this goal" +#~ msgstr "Você não tem permissão para excluir este objetivo" -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -#, python-format -msgid "Updated %(count)s task(s)" -msgstr "" +#~ msgid "Weekly time goal deleted successfully" +#~ msgstr "Objetivo de tempo semanal excluído com sucesso" -#: app/routes/tasks.py:1040 app/routes/tasks.py:1115 -msgid "No tasks updated" -msgstr "Nenhuma tarefa atualizada" +#~ msgid "Failed to delete goal. Please try again." +#~ msgstr "Não foi possível apagar o objetivo. Por favor, tente novamente." -#: app/routes/tasks.py:1046 -#, python-format -msgid "Successfully updated %(count)s task(s) due date to %(date)s" -msgstr "" +#~ msgid "Workflow created successfully" +#~ msgstr "Fluxo de trabalho criado com sucesso" -#: app/routes/tasks.py:1050 -#, python-format -msgid "Skipped %(count)s task(s) (no permission)" -msgstr "" +#~ msgid "Task Status Changes" +#~ msgstr "Alterações no Estado da Tarefa" -#: app/routes/tasks.py:1074 app/routes/tasks.py:1075 -msgid "Invalid priority value" -msgstr "Valor de prioridade inválido" +#~ msgid "Task Created" +#~ msgstr "Tarefa Criada" -#: app/routes/tasks.py:1141 -msgid "No user selected for assignment" -msgstr "Nenhum usuário selecionado para a atribuição" +#~ msgid "Task Completed" +#~ msgstr "Tarefa Concluída" -#: app/routes/tasks.py:1147 -msgid "Invalid user selected" -msgstr "Utilizador inválido seleccionado" +#~ msgid "Time Logged" +#~ msgstr "Tempo Registrado" -#: app/routes/tasks.py:1174 -msgid "Could not assign tasks due to a database error" -msgstr "Não foi possível atribuir tarefas devido a um erro na base de dados" +#~ msgid "Deadline Approaching" +#~ msgstr "Abordagem do Prazo" -#: app/routes/tasks.py:1200 -msgid "No project selected" -msgstr "Nenhum projeto selecionado" +#~ msgid "Budget Threshold Reached" +#~ msgstr "Limiar do orçamento alcançado" -#: app/routes/tasks.py:1206 app/routes/timer.py:116 app/routes/timer.py:434 -#: app/routes/timer.py:823 app/routes/timer.py:1639 -msgid "Invalid project selected" -msgstr "Projecto inválido seleccionado" +#~ msgid "Invoice Created" +#~ msgstr "Fatura Criada" -#: app/routes/tasks.py:1251 -msgid "Could not move tasks due to a database error" -msgstr "Não foi possível mover as tarefas devido a um erro na base de dados" +#~ msgid "Invoice Paid" +#~ msgstr "Fatura paga" -#: app/routes/tasks.py:1484 -msgid "Only administrators can view all overdue tasks" -msgstr "Só os administradores podem ver todas as tarefas atrasadas" +#~ msgid "Log Time Entry" +#~ msgstr "Entrada da hora de registo" -#: app/routes/team_chat.py:58 app/routes/team_chat.py:106 -#: app/routes/team_chat.py:413 app/routes/team_chat.py:451 -msgid "You don't have access to this channel" -msgstr "Você não tem acesso a este canal" +#~ msgid "Send Notification" +#~ msgstr "Enviar notificação" -#: app/routes/team_chat.py:113 -msgid "Message cannot be empty" -msgstr "A mensagem não pode estar vazia" +#~ msgid "Update Status" +#~ msgstr "Atualizar status" -#: app/routes/team_chat.py:133 -msgid "Attachment data was invalid; message sent without attachment." -msgstr "Os dados do anexo eram inválidos; a mensagem enviada sem o anexo." +#~ msgid "Assign Task" +#~ msgstr "Atribuir Tarefa" -#: app/routes/team_chat.py:406 -msgid "Invalid message" -msgstr "Mensagem inválida" +#~ msgid "Create Task" +#~ msgstr "Criar Tarefa" -#: app/routes/team_chat.py:417 -msgid "No attachment found" -msgstr "Nenhum anexo encontrado" +#~ msgid "Update Project" +#~ msgstr "Atualizar projeto" -#: app/routes/team_chat.py:496 -msgid "Invalid filename" -msgstr "Nome de arquivo inválido" +#~ msgid "Send Email" +#~ msgstr "Enviar E- mail" -#: app/routes/team_chat.py:507 -msgid "Server error: Could not create upload directory" -msgstr "Erro do servidor: Não foi possível criar o diretório de envio" +#~ msgid "Trigger Webhook" +#~ msgstr "Trigger Webhook" -#: app/routes/team_chat.py:515 -msgid "Server error: Could not save file" -msgstr "Erro no servidor: Não foi possível salvar o arquivo" +#~ msgid "Workflow updated successfully" +#~ msgstr "Fluxo de trabalho actualizado com sucesso" -#: app/routes/team_chat.py:556 -msgid "Cannot create direct message with yourself" -msgstr "Não é possível criar uma mensagem directa consigo próprio" +#~ msgid "Workflow deleted successfully" +#~ msgstr "Fluxo de trabalho excluído com sucesso" -#: app/routes/team_chat.py:559 -msgid "User is not active" -msgstr "O usuário não está ativo" +#~ msgid "Timesheet period ready: %(start)s to %(end)s" +#~ msgstr "Período da folha de tempo pronto: %(start)s para %(end)s" -#: app/routes/time_approvals.py:73 -msgid "Time entry approved" -msgstr "Data de aprovação" +#~ msgid "Timesheet period submitted" +#~ msgstr "Prazo de apresentação" -#: app/routes/time_approvals.py:101 -msgid "Time entry rejected" -msgstr "Rejeitada a data de entrada" +#~ msgid "Timesheet period approved" +#~ msgstr "Período de validade aprovado" -#: app/routes/time_approvals.py:127 -msgid "Approval requested" -msgstr "Aprovação solicitada" +#~ msgid "Timesheet period rejected" +#~ msgstr "Período de calendário rejeitado" -#: app/routes/time_approvals.py:147 -msgid "Approval cancelled" -msgstr "Aprovação cancelada" +#~ msgid "Only admins can close periods" +#~ msgstr "Apenas os administradores podem fechar períodos" -#: app/routes/time_entry_templates.py:93 -msgid "Could not create template due to a database error" -msgstr "Não foi possível criar o modelo devido a um erro na base de dados" +#~ msgid "Timesheet period closed" +#~ msgstr "Período da folha de tempo encerrado" -#: app/routes/time_entry_templates.py:205 -msgid "Could not update template due to a database error" -msgstr "Não foi possível atualizar o modelo devido a um erro na base de dados" +#~ msgid "Timesheet policy updated" +#~ msgstr "Política de folha de tempo atualizada" -#: app/routes/time_entry_templates.py:248 -msgid "Could not delete template due to a database error" -msgstr "Não foi possível apagar o modelo devido a um erro na base de dados" +#~ msgid "Name and code are required" +#~ msgstr "Nome e código são exigidos" -#: app/routes/timer.py:105 -msgid "Either a project or a client is required" -msgstr "É necessário um projeto ou um cliente" +#~ msgid "Leave type created" +#~ msgstr "Deixar o tipo criado" -#: app/routes/timer.py:127 app/routes/timer.py:440 app/routes/timer.py:2042 -msgid "" -"Cannot start timer for an archived project. Please unarchive the project " -"first." -msgstr "" -"Não é possível iniciar o temporizador para um projeto arquivado. Por favor, " -"unarchive o projeto primeiro." +#~ msgid "Leave type and date range are required" +#~ msgstr "É necessário deixar o tipo e o intervalo de datas" -#: app/routes/timer.py:131 app/routes/timer.py:444 app/routes/timer.py:2045 -msgid "Cannot start timer for an inactive project" -msgstr "Não é possível iniciar o temporizador para um projeto inativo" +#~ msgid "Time-off request submitted" +#~ msgstr "Pedido de adiamento apresentado" -#: app/routes/timer.py:139 -msgid "Selected task is invalid for the chosen project" -msgstr "A tarefa selecionada é inválida para o projeto escolhido" +#~ msgid "Time-off request approved" +#~ msgstr "Pedido de adiamento aprovado" -#: app/routes/timer.py:153 -msgid "Invalid client selected" -msgstr "Cliente inválido selecionado" +#~ msgid "Time-off request rejected" +#~ msgstr "Rejeição do pedido de adiamento" -#: app/routes/timer.py:159 -msgid "Tasks can only be selected for project-based timers" -msgstr "Tarefas só podem ser selecionadas para timers baseados em projetos" +#~ msgid "Name and date range are required" +#~ msgstr "Nome e intervalo de datas são necessários" -#: app/routes/timer.py:167 app/routes/timer.py:356 app/routes/timer.py:449 -msgid "You do not have access to this project" -msgstr "Você não tem acesso a este projeto" +#~ msgid "Holiday created" +#~ msgstr "Feriados criados" -#: app/routes/timer.py:171 -msgid "You do not have access to this client" -msgstr "Você não tem acesso a este cliente" +#~ msgid "Start date and end date are required for payroll export" +#~ msgstr "" +#~ "Data de início e data final são" +#~ " necessários para a exportação da " +#~ "folha de pagamento" -#: app/routes/timer.py:177 app/routes/timer.py:341 app/routes/timer.py:455 -msgid "You already have an active timer. Stop it before starting a new one." -msgstr "Já tens um temporizador activo. Pare antes de começar um novo." +#~ msgid "Start date and end date are required for capacity export" +#~ msgstr "" +#~ "Data de início e data de fim " +#~ "são necessários para a exportação de " +#~ "capacidade" -#: app/routes/timer.py:219 app/routes/timer.py:382 app/routes/timer.py:470 -msgid "" -"Could not start timer due to a database error. Please check server logs." -msgstr "" -"Não foi possível iniciar o temporizador devido a um erro na base de dados. " -"Por favor, verifique os registos do servidor." - -#: app/routes/timer.py:267 app/routes/timer.py:272 app/routes/timer.py:1048 -#: app/routes/timer.py:1055 app/routes/timer.py:2148 -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/client_portal/project_comments.html:55 -#: app/templates/invoice_approvals/list.html:56 -#: app/templates/invoice_approvals/view.html:43 -#: app/templates/invoice_approvals/view.html:50 -#: app/templates/invoice_approvals/view.html:73 -#: app/templates/reports/scheduled.html:38 -msgid "Unknown" -msgstr "Desconhecido" - -#: app/routes/timer.py:326 -msgid "Timer started" -msgstr "Temporizador iniciado" - -#: app/routes/timer.py:346 -msgid "Template must have a project to start a timer" -msgstr "O modelo deve ter um projeto para iniciar um timer" - -#: app/routes/timer.py:352 -msgid "Cannot start timer for this project" -msgstr "Não foi possível iniciar o temporizador para este projeto" - -#: app/routes/timer.py:533 -msgid "No active timer to stop" -msgstr "Nenhum timer ativo para parar" - -#: app/routes/timer.py:623 app/templates/issues/edit.html:62 -#: app/templates/issues/new.html:56 app/templates/main/dashboard.html:91 -#: app/templates/recurring_tasks/list.html:53 -#: app/templates/timer/timer_page.html:59 app/templates/user/profile.html:60 -#: app/templates/user/profile.html:98 -msgid "No project" -msgstr "Nenhum projeto" - -#: app/routes/timer.py:634 -#, python-format -msgid "Cannot stop timer: %(error)s" -msgstr "" +#~ msgid "remaining" +#~ msgstr "restante" -#: app/routes/timer.py:639 -msgid "" -"Could not stop timer due to an error. Please try again or contact support if" -" the problem persists." -msgstr "" -"Não foi possível parar o temporizador devido a um erro. Por favor, tente " -"novamente ou contacte o suporte se o problema persistir." +#~ msgid "Success" +#~ msgstr "Sucesso" -#: app/routes/timer.py:651 -msgid "No active timer to pause" -msgstr "Sem temporizador ativo para pausar" +#~ msgid "Error" +#~ msgstr "Erro" -#: app/routes/timer.py:655 -msgid "Timer paused" -msgstr "Temporizador parado" +#~ msgid "Warning" +#~ msgstr "Atenção" -#: app/routes/timer.py:660 -msgid "Could not pause timer. Please try again." -msgstr "Não foi possível pausar o temporizador. Por favor, tente novamente." +#~ msgid "Information" +#~ msgstr "Informação" -#: app/routes/timer.py:676 -msgid "No active timer to resume" -msgstr "Nenhum timer ativo para retomar" +#~ msgid "Loading..." +#~ msgstr "Carregando..." -#: app/routes/timer.py:680 app/routes/timer.py:2202 -msgid "Timer resumed" -msgstr "Temporizador retomado" +#~ msgid "Saving..." +#~ msgstr "Salvando..." -#: app/routes/timer.py:685 -msgid "Could not resume timer. Please try again." -msgstr "Não foi possível retomar o temporizador. Por favor, tente novamente." +#~ msgid "Deleting..." +#~ msgstr "A apagar..." -#: app/routes/timer.py:701 -msgid "No active timer to adjust" -msgstr "Nenhum timer ativo para ajustar" +#~ msgid "Cancel" +#~ msgstr "Cancelar" -#: app/routes/timer.py:707 -msgid "Invalid adjustment value" -msgstr "Valor de ajuste inválido" +#~ msgid "Confirm" +#~ msgstr "Confirmar" -#: app/routes/timer.py:779 -msgid "You can only edit your own timers" -msgstr "Você só pode editar seus próprios timers" +#~ msgid "Close" +#~ msgstr "Fechar" -#: app/routes/timer.py:841 -msgid "Invalid task selected for the chosen project" -msgstr "Tarefa inválida selecionada para o projeto escolhido" +#~ msgid "Save" +#~ msgstr "Gravar" -#: app/routes/timer.py:869 -msgid "Start time cannot be in the future" -msgstr "A hora de início não pode ser no futuro" +#~ msgid "Delete" +#~ msgstr "Apagar" -#: app/routes/timer.py:877 -msgid "Invalid start date/time format" -msgstr "Formato de data/hora de início inválido" +#~ msgid "Edit" +#~ msgstr "Editar" -#: app/routes/timer.py:894 app/routes/timer.py:1423 -#: app/templates/base.html:415 app/templates/timer/manual_entry.html:648 -msgid "End time must be after start time" -msgstr "A hora de fim deve ser após a hora de início" +#~ msgid "Add" +#~ msgstr "Adicionar" -#: app/routes/timer.py:902 -msgid "Invalid end date/time format" -msgstr "Formato de data/hora final inválido" +#~ msgid "Remove" +#~ msgstr "Remover" -#: app/routes/timer.py:961 -msgid "Timer updated successfully" -msgstr "Temporizador actualizado com sucesso" +#~ msgid "OK" +#~ msgstr "Está bem" -#: app/routes/timer.py:979 -msgid "You do not have permission to view this time entry" -msgstr "Você não tem permissão para ver este item de tempo" +#~ msgid "Are you sure you want to delete this?" +#~ msgstr "Tem a certeza de que deseja apagar isto?" -#: app/routes/timer.py:1034 -msgid "You can only delete your own timers" -msgstr "Você só pode excluir seus próprios timers" +#~ msgid "You have unsaved changes. Are you sure you want to leave?" +#~ msgstr "Você tem mudanças não salvas. Tens a certeza que queres ir embora?" -#: app/routes/timer.py:1039 -msgid "Cannot delete an active timer" -msgstr "Não é possível excluir um temporizador ativo" +#~ msgid "Operation failed" +#~ msgstr "A operação falhou" -#: app/routes/timer.py:1085 app/routes/timer.py:1092 -msgid "" -"Could not delete timer due to a database error. Please check server logs." -msgstr "" -"Não foi possível apagar o temporizador devido a um erro na base de dados. " -"Por favor, verifique os registos do servidor." - -#: app/routes/timer.py:1147 app/routes/timer.py:2983 -msgid "No time entries selected" -msgstr "Nenhum item de tempo selecionado" - -#: app/routes/timer.py:1153 app/routes/timer.py:2995 -msgid "Invalid entry IDs" -msgstr "IDs de entrada inválidos" - -#: app/routes/timer.py:1159 app/routes/timer.py:3001 -#: app/templates/client_portal/time_entries.html:167 -#: app/templates/client_portal/widgets/time_entries.html:68 -msgid "No time entries found" -msgstr "Não foram encontrados itens de tempo" - -#: app/routes/timer.py:1195 -#, python-format -msgid "Successfully deleted %(count)d time entry/entries" -msgstr "" +#~ msgid "Operation completed successfully" +#~ msgstr "Operação concluída com sucesso" -#: app/routes/timer.py:1198 app/routes/timer.py:3055 -#, python-format -msgid "Skipped %(count)d time entry/entries (no permission or active timer)" -msgstr "" +#~ msgid "No items selected" +#~ msgstr "Nenhum item selecionado" -#: app/routes/timer.py:1309 app/templates/timer/manual_entry.html:622 -msgid "" -"Please provide either start/end date+time or a worked time duration (HH:MM)." -msgstr "" -"Indicar a data de início/fim+hora ou a duração do tempo de trabalho (HH:MM)." +#~ msgid "Invalid input" +#~ msgstr "Entrada inválida" -#: app/routes/timer.py:1334 -msgid "Either a project or a client must be selected" -msgstr "Deve ser seleccionado um projecto ou um cliente" +#~ msgid "This field is required" +#~ msgstr "Este campo é obrigatório" -#: app/routes/timer.py:1394 -msgid "Invalid date/time format" -msgstr "Formato data/hora inválido" +#~ msgid "No active timer" +#~ msgstr "Sem temporizador ativo" -#: app/routes/timer.py:1501 -#, python-format -msgid "Manual entry created for %(project)s - %(task)s" -msgstr "" +#~ msgid "Timer stopped" +#~ msgstr "Temporizador parado" -#: app/routes/timer.py:1504 -#, python-format -msgid "Manual entry created for %(target)s" -msgstr "" +#~ msgid "Failed to stop timer" +#~ msgstr "Falha ao parar o temporizador" -#: app/routes/timer.py:1628 -msgid "All fields are required" -msgstr "Todos os campos são necessários" +#~ msgid "Error stopping timer" +#~ msgstr "Erro ao parar o temporizador" -#: app/routes/timer.py:1649 -msgid "" -"Cannot create time entries for an archived project. Please unarchive the " -"project first." -msgstr "" -"Não é possível criar itens de tempo para um projeto arquivado. Por favor, " -"unarchive o projeto primeiro." +#~ msgid "No form to save" +#~ msgstr "Nenhum formulário a gravar" -#: app/routes/timer.py:1657 -msgid "Cannot create time entries for an inactive project" -msgstr "Não é possível criar itens de tempo para um projeto inativo" +#~ msgid "No timer found" +#~ msgstr "Nenhum temporizador encontrado" -#: app/routes/timer.py:1669 -msgid "Invalid task selected" -msgstr "Tarefa inválida selecionada" +#~ msgid "Timer stopped due to inactivity" +#~ msgstr "Temporizador parado devido à inatividade" -#: app/routes/timer.py:1685 -msgid "End date must be after or equal to start date" -msgstr "A data final deve ser posterior ou igual à data inicial" +#~ msgid "Please select either a project or a client" +#~ msgstr "Selecione um projeto ou um cliente" -#: app/routes/timer.py:1695 -msgid "Date range cannot exceed 31 days" -msgstr "Intervalo de datas não pode exceder 31 dias" +#~ msgid "Skip to content" +#~ msgstr "Saltar para o conteúdo" -#: app/routes/timer.py:1725 -msgid "Invalid time format" -msgstr "Formato de hora inválido" +#~ msgid "Main navigation" +#~ msgstr "Navegação principal" -#: app/routes/timer.py:1747 -msgid "No valid dates found in the selected range" -msgstr "Nenhuma data válida encontrada no intervalo selecionado" +#~ msgid "Navigation" +#~ msgstr "Navegação" -#: app/routes/timer.py:1813 -msgid "" -"Could not create bulk entries due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível criar entradas em massa devido a um erro na base de dados. " -"Por favor, verifique os registos do servidor." +#~ msgid "Open command palette" +#~ msgstr "Abrir a paleta de comandos" -#: app/routes/timer.py:1832 -msgid "An error occurred while creating bulk entries. Please try again." -msgstr "" -"Ocorreu um erro ao criar entradas a granel. Por favor, tente novamente." +#~ msgid "Commands" +#~ msgstr "Comandos" -#: app/routes/timer.py:1961 -msgid "You can only duplicate your own timers" -msgstr "Você só pode duplicar seus próprios timers" +#~ msgid "Toggle sidebar" +#~ msgstr "Alternar a barra lateral" -#: app/routes/timer.py:2019 -msgid "You can only resume your own timers" -msgstr "Você só pode retomar seus próprios timers" +#~ msgid "Dashboard" +#~ msgstr "Painel" -#: app/routes/timer.py:2038 -msgid "Project no longer exists" -msgstr "O projecto já não existe" +#~ msgid "Timer" +#~ msgstr "Temporizador" -#: app/routes/timer.py:2064 -msgid "Client no longer exists or is inactive" -msgstr "O cliente já não existe ou está inactivo" +#~ msgid "Time entries" +#~ msgstr "Entradas temporais" -#: app/routes/timer.py:2070 -msgid "Timer is not linked to a project or client" -msgstr "O timer não está ligado a um projeto ou cliente" +#~ msgid "Reports" +#~ msgstr "Relatórios" -#: app/routes/timer.py:2098 -msgid "" -"Could not resume timer due to a database error. Please check server logs." -msgstr "" -"Não foi possível retomar o temporizador devido a um erro na base de dados. " -"Por favor, verifique os registos do servidor." +#~ msgid "Calendar" +#~ msgstr "Calendário" -#: app/routes/timer.py:2149 -msgid "Resumed timer" -msgstr "Temporizador retomado" +#~ msgid "Calendar View" +#~ msgstr "Vista do Calendário" -#: app/routes/timer.py:2987 -msgid "Invalid paid status" -msgstr "Estado pago inválido" +#~ msgid "Integrations" +#~ msgstr "Integração" -#: app/routes/timer.py:3042 -msgid "" -"Could not update time entries due to a database error. Please check server " -"logs." -msgstr "" -"Não foi possível atualizar os itens de tempo devido a um erro na base de " -"dados. Por favor, verifique os registos do servidor." +#~ msgid "Time Tracking" +#~ msgstr "Rastreamento do Tempo" -#: app/routes/timer.py:3046 -#, python-format -msgid "Successfully marked %(count)d time entry/entries as %(status)s" -msgstr "" +#~ msgid "Time Approvals" +#~ msgstr "Homologação" -#: app/routes/timer.py:3049 -msgid "paid" -msgstr "pago" +#~ msgid "Project Templates" +#~ msgstr "Modelos de Projeto" -#: app/routes/timer.py:3049 -msgid "unpaid" -msgstr "não remunerado" +#~ msgid "Gantt Chart" +#~ msgstr "Gráfico Gantt" -#: app/routes/user.py:114 -msgid "Invalid timezone selected" -msgstr "Período de tempo inválido seleccionado" +#~ msgid "Tasks" +#~ msgstr "Tarefas" -#: app/routes/user.py:169 -msgid "Standard hours per day must be between 0.5 and 24" -msgstr "As horas padrão por dia devem estar entre 0,5 e 24" +#~ msgid "Issues" +#~ msgstr "Questões" -#: app/routes/user.py:182 -msgid "Standard hours per week must be between 1 and 168" -msgstr "As horas normais por semana devem ser entre 1 e 168" +#~ msgid "Kanban Board" +#~ msgstr "Tabuleiro Kanban" -#: app/routes/user.py:200 -msgid "Settings saved successfully" -msgstr "Configurações salvas com sucesso" +#~ msgid "Weekly Goals" +#~ msgstr "Objetivos Semanais" -#: app/routes/user.py:205 -#, python-format -msgid "Error saving settings: %(error)s" -msgstr "Erro ao salvar as configurações: %(error)s" +#~ msgid "Workforce" +#~ msgstr "Força de trabalho" -#: app/routes/user.py:244 -msgid "This instance is already licensed." -msgstr "Esta instância já está licenciada." +#~ msgid "Time Entry Templates" +#~ msgstr "Modelos de Entrada de Tempo" -#: app/routes/user.py:265 -msgid "License activated. Thank you for supporting TimeTracker!" -msgstr "Carta activada. Obrigado por apoiar o TimeTracker!" +#~ msgid "CRM" +#~ msgstr "CRM" -#: app/routes/user.py:267 -msgid "Error saving settings." -msgstr "Erro ao salvar as configurações." +#~ msgid "Clients" +#~ msgstr "Clientes" -#: app/routes/user.py:360 -msgid "Preferences updated" -msgstr "Preferências atualizadas" +#~ msgid "Contacts" +#~ msgstr "Contactos" -#: app/routes/user.py:409 -msgid "Language updated successfully" -msgstr "Idioma actualizado com sucesso" +#~ msgid "via Clients" +#~ msgstr "através de Clientes" -#: app/routes/user.py:411 app/routes/user.py:440 -msgid "Invalid language" -msgstr "Língua inválida" +#~ msgid "Deals" +#~ msgstr "Ofertas" -#: app/routes/user.py:434 -#, python-format -msgid "Language updated to %(language)s" -msgstr "" +#~ msgid "Leads" +#~ msgstr "Chumbo" -#: app/routes/webhooks.py:41 -msgid "Webhook name is required" -msgstr "Nome Webhook é necessário" +#~ msgid "Quotes" +#~ msgstr "Citações" -#: app/routes/webhooks.py:47 -msgid "Webhook URL is required" -msgstr "URL do Webhook é necessário" +#~ msgid "Finance & Expenses" +#~ msgstr "Finanças e Despesas" -#: app/routes/webhooks.py:55 -msgid "At least one event must be selected" -msgstr "Pelo menos um evento deve ser selecionado" +#~ msgid "All Reports" +#~ msgstr "Todos os Relatórios" -#: app/routes/webhooks.py:81 -msgid "Webhook created successfully" -msgstr "Webhook criado com sucesso" +#~ msgid "Report Builder" +#~ msgstr "Construtor de Relatórios" -#: app/routes/webhooks.py:85 -msgid "Error creating webhook" -msgstr "Erro ao criar o webhook" +#~ msgid "Saved Views" +#~ msgstr "Vistas Gravadas" -#: app/routes/webhooks.py:88 -#, python-format -msgid "Error creating webhook: %(error)s" -msgstr "" +#~ msgid "Scheduled Reports" +#~ msgstr "Relatórios Agendados" -#: app/routes/webhooks.py:150 -msgid "Webhook updated successfully" -msgstr "Webhook atualizado com sucesso" +#~ msgid "Invoices" +#~ msgstr "Facturas" -#: app/routes/webhooks.py:154 -#, python-format -msgid "Error updating webhook: %(error)s" -msgstr "" +#~ msgid "Invoice Approvals" +#~ msgstr "Aprovações na factura" -#: app/routes/webhooks.py:175 -msgid "Webhook deleted successfully" -msgstr "Webhook apagado com sucesso" +#~ msgid "Payment Gateways" +#~ msgstr "Gateways de pagamento" -#: app/routes/webhooks.py:178 -#, python-format -msgid "Error deleting webhook: %(error)s" -msgstr "" +#~ msgid "Recurring Invoices" +#~ msgstr "Faturas recorrentes" -#: app/routes/weekly_goals.py:80 app/routes/weekly_goals.py:224 -msgid "Please enter a valid target hours (greater than 0)" -msgstr "Digite uma hora- alvo válida (maior que 0)" +#~ msgid "Payments" +#~ msgstr "Pagamentos" -#: app/routes/weekly_goals.py:101 -msgid "" -"A goal already exists for this week. Please edit the existing goal instead." -msgstr "" -"Já existe um objectivo para esta semana. Por favor, edite o objetivo " -"existente." - -#: app/routes/weekly_goals.py:116 -msgid "Weekly time goal created successfully!" -msgstr "Objetivo de tempo semanal criado com sucesso!" - -#: app/routes/weekly_goals.py:132 -msgid "Failed to create goal. Please try again." -msgstr "Falha ao criar o objetivo. Por favor, tente novamente." - -#: app/routes/weekly_goals.py:147 -msgid "You do not have permission to view this goal" -msgstr "Você não tem permissão para ver este objetivo" - -#: app/routes/weekly_goals.py:208 -msgid "You do not have permission to edit this goal" -msgstr "Você não tem permissão para editar este objetivo" - -#: app/routes/weekly_goals.py:245 -msgid "Weekly time goal updated successfully!" -msgstr "Meta de tempo semanal atualizado com sucesso!" - -#: app/routes/weekly_goals.py:262 -msgid "Failed to update goal. Please try again." -msgstr "Falha ao atualizar o objetivo. Por favor, tente novamente." - -#: app/routes/weekly_goals.py:277 -msgid "You do not have permission to delete this goal" -msgstr "Você não tem permissão para excluir este objetivo" - -#: app/routes/weekly_goals.py:285 -msgid "Weekly time goal deleted successfully" -msgstr "Objetivo de tempo semanal excluído com sucesso" - -#: app/routes/weekly_goals.py:295 -msgid "Failed to delete goal. Please try again." -msgstr "Não foi possível apagar o objetivo. Por favor, tente novamente." - -#: app/routes/workflows.py:58 -msgid "Workflow created successfully" -msgstr "Fluxo de trabalho criado com sucesso" - -#: app/routes/workflows.py:63 app/routes/workflows.py:139 -msgid "Task Status Changes" -msgstr "Alterações no Estado da Tarefa" - -#: app/routes/workflows.py:64 app/routes/workflows.py:140 -msgid "Task Created" -msgstr "Tarefa Criada" - -#: app/routes/workflows.py:65 app/routes/workflows.py:141 -msgid "Task Completed" -msgstr "Tarefa Concluída" - -#: app/routes/workflows.py:66 app/routes/workflows.py:142 -msgid "Time Logged" -msgstr "Tempo Registrado" - -#: app/routes/workflows.py:67 app/routes/workflows.py:143 -msgid "Deadline Approaching" -msgstr "Abordagem do Prazo" - -#: app/routes/workflows.py:68 app/routes/workflows.py:144 -msgid "Budget Threshold Reached" -msgstr "Limiar do orçamento alcançado" - -#: app/routes/workflows.py:69 -msgid "Invoice Created" -msgstr "Fatura Criada" - -#: app/routes/workflows.py:70 -msgid "Invoice Paid" -msgstr "Fatura paga" - -#: app/routes/workflows.py:74 app/routes/workflows.py:148 -msgid "Log Time Entry" -msgstr "Entrada da hora de registo" - -#: app/routes/workflows.py:75 app/routes/workflows.py:149 -msgid "Send Notification" -msgstr "Enviar notificação" - -#: app/routes/workflows.py:76 app/routes/workflows.py:150 -#: app/templates/expenses/list.html:234 app/templates/invoices/list.html:140 -#: app/templates/payments/list.html:253 app/templates/per_diem/list.html:183 -#: app/templates/tasks/list.html:177 -msgid "Update Status" -msgstr "Atualizar status" - -#: app/routes/workflows.py:77 app/routes/workflows.py:151 -msgid "Assign Task" -msgstr "Atribuir Tarefa" - -#: app/routes/workflows.py:78 app/templates/issues/view.html:80 -#: app/templates/tasks/create.html:4 app/templates/tasks/create.html:16 -#: app/templates/tasks/create.html:139 -msgid "Create Task" -msgstr "Criar Tarefa" - -#: app/routes/workflows.py:79 -msgid "Update Project" -msgstr "Atualizar projeto" - -#: app/routes/workflows.py:80 app/templates/invoices/edit.html:10 -#: app/templates/invoices/view.html:519 app/templates/quotes/view.html:41 -#: app/templates/quotes/view.html:480 -msgid "Send Email" -msgstr "Enviar E- mail" - -#: app/routes/workflows.py:81 -msgid "Trigger Webhook" -msgstr "Trigger Webhook" - -#: app/routes/workflows.py:135 -msgid "Workflow updated successfully" -msgstr "Fluxo de trabalho actualizado com sucesso" - -#: app/routes/workflows.py:175 -msgid "Workflow deleted successfully" -msgstr "Fluxo de trabalho excluído com sucesso" - -#: app/routes/workforce.py:121 -#, python-format -msgid "Timesheet period ready: %(start)s to %(end)s" -msgstr "Período da folha de tempo pronto: %(start)s para %(end)s" - -#: app/routes/workforce.py:136 -msgid "Timesheet period submitted" -msgstr "Prazo de apresentação" - -#: app/routes/workforce.py:158 -msgid "Timesheet period approved" -msgstr "Período de validade aprovado" - -#: app/routes/workforce.py:180 -msgid "Timesheet period rejected" -msgstr "Período de calendário rejeitado" - -#: app/routes/workforce.py:191 -msgid "Only admins can close periods" -msgstr "Apenas os administradores podem fechar períodos" - -#: app/routes/workforce.py:202 -msgid "Timesheet period closed" -msgstr "Período da folha de tempo encerrado" - -#: app/routes/workforce.py:243 -msgid "Timesheet policy updated" -msgstr "Política de folha de tempo atualizada" - -#: app/routes/workforce.py:257 -msgid "Name and code are required" -msgstr "Nome e código são exigidos" - -#: app/routes/workforce.py:270 -msgid "Leave type created" -msgstr "Deixar o tipo criado" - -#: app/routes/workforce.py:303 -msgid "Leave type and date range are required" -msgstr "É necessário deixar o tipo e o intervalo de datas" - -#: app/routes/workforce.py:320 -msgid "Time-off request submitted" -msgstr "Pedido de adiamento apresentado" - -#: app/routes/workforce.py:344 -msgid "Time-off request approved" -msgstr "Pedido de adiamento aprovado" - -#: app/routes/workforce.py:368 -msgid "Time-off request rejected" -msgstr "Rejeição do pedido de adiamento" - -#: app/routes/workforce.py:405 -msgid "Name and date range are required" -msgstr "Nome e intervalo de datas são necessários" - -#: app/routes/workforce.py:411 -msgid "Holiday created" -msgstr "Feriados criados" - -#: app/routes/workforce.py:441 -msgid "Start date and end date are required for payroll export" -msgstr "" -"Data de início e data final são necessários para a exportação da folha de " -"pagamento" +#~ msgid "Expenses" +#~ msgstr "Despesas" -#: app/routes/workforce.py:505 -msgid "Start date and end date are required for capacity export" -msgstr "" -"Data de início e data de fim são necessários para a exportação de capacidade" - -#: app/templates/_components.html:213 -msgid "remaining" -msgstr "restante" - -#: app/templates/admin/webhooks/list.html:68 -#: app/templates/admin/webhooks/view.html:114 app/templates/base.html:378 -#: app/templates/integrations/health.html:60 -#: app/templates/integrations/view.html:53 -#: app/templates/integrations/view.html:84 -#: app/templates/kanban/columns.html:226 -#: app/templates/reports/builder.html:772 -msgid "Success" -msgstr "Sucesso" - -#: app/templates/admin/email_support.html:401 -#: app/templates/admin/email_support.html:500 app/templates/base.html:379 -#: app/templates/integrations/health.html:64 -#: app/templates/integrations/view.html:55 -#: app/templates/integrations/view.html:86 -#: app/templates/main/dashboard.html:691 -#: app/templates/reports/builder.html:792 -#: app/templates/reports/builder.html:806 -#: app/templates/reports/scheduled.html:71 -#: app/templates/timer/manual_entry.html:400 -#: app/templates/timer/manual_entry.html:412 -#: app/templates/timer/manual_entry.html:444 -#: app/templates/timer/manual_entry.html:533 -#: app/templates/timer/manual_entry.html:560 -#: app/templates/timer/manual_entry.html:583 -#: app/templates/timer/manual_entry.html:598 -#: app/templates/timer/manual_entry.html:624 -#: app/templates/timer/manual_entry.html:650 -#: app/templates/timer/timer_page.html:364 -msgid "Error" -msgstr "Erro" - -#: app/templates/base.html:380 app/templates/budget/dashboard.html:161 -#: app/templates/budget/project_detail.html:67 -#: app/templates/main/dashboard.html:1616 app/templates/projects/view.html:287 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Warning" -msgstr "Atenção" - -#: app/templates/base.html:381 app/templates/calendar/event_detail.html:170 -#: app/templates/quotes/view.html:404 -msgid "Information" -msgstr "Informação" - -#: app/templates/admin/salesman_email_mappings.html:51 -#: app/templates/analytics/dashboard.html:208 -#: app/templates/analytics/dashboard_improved.html:200 -#: app/templates/analytics/mobile_dashboard.html:148 -#: app/templates/base.html:384 -#: app/templates/components/activity_feed_widget.html:237 -#: app/templates/components/ui.html:275 -#: app/templates/import_export/index.html:128 -#: app/templates/import_export/index.html:202 -#: app/templates/main/dashboard.html:180 app/templates/main/dashboard.html:201 -#: app/templates/main/dashboard.html:222 -#: app/templates/reports/unpaid_hours_report.html:64 -#: app/templates/timer/calendar.html:678 -msgid "Loading..." -msgstr "Carregando..." - -#: app/templates/admin/email_support.html:342 app/templates/base.html:385 -#: app/templates/client_notes/edit.html:115 -#: app/templates/client_portal/dashboard.html:135 -#: app/templates/comments/_comments_section.html:169 -#: app/templates/comments/edit.html:112 app/templates/reports/builder.html:674 -#: app/templates/settings/keyboard_shortcuts.html:469 -msgid "Saving..." -msgstr "Salvando..." - -#: app/templates/base.html:386 -msgid "Deleting..." -msgstr "A apagar..." - -#: app/templates/admin/api_tokens.html:461 -#: app/templates/admin/api_tokens.html:494 -#: app/templates/admin/custom_field_definitions/form.html:66 -#: app/templates/admin/email_templates/create.html:120 -#: app/templates/admin/email_templates/edit.html:137 -#: app/templates/admin/email_templates/list.html:80 -#: app/templates/admin/integrations/setup.html:162 -#: app/templates/admin/ldap_setup_wizard.html:265 -#: app/templates/admin/link_templates/form.html:72 -#: app/templates/admin/oidc_setup_wizard.html:316 -#: app/templates/admin/pdf_layout.html:4409 -#: app/templates/admin/pdf_layout.html:7736 -#: app/templates/admin/quote_pdf_layout.html:3928 -#: app/templates/admin/quote_pdf_layout.html:7176 -#: app/templates/admin/roles/form.html:149 -#: app/templates/admin/roles/list.html:215 -#: app/templates/admin/salesman_email_mappings.html:145 -#: app/templates/admin/settings.html:716 app/templates/admin/users.html:124 -#: app/templates/admin/users/roles.html:57 -#: app/templates/admin/webhooks/form.html:128 -#: app/templates/approvals/list.html:138 app/templates/approvals/view.html:157 -#: app/templates/auth/change_password.html:37 app/templates/base.html:387 -#: app/templates/calendar/event_detail.html:194 -#: app/templates/calendar/event_form.html:237 -#: app/templates/chat/channel.html:268 app/templates/chat/index.html:122 -#: app/templates/client_notes/edit.html:83 -#: app/templates/client_portal/dashboard.html:88 -#: app/templates/client_portal/new_issue.html:82 -#: app/templates/client_portal/quote_detail.html:168 -#: app/templates/clients/create.html:108 app/templates/clients/edit.html:143 -#: app/templates/clients/view.html:238 app/templates/clients/view.html:461 -#: app/templates/clients/view.html:598 app/templates/clients/view.html:634 -#: app/templates/comments/_comment.html:120 -#: app/templates/comments/_comment.html:140 -#: app/templates/comments/_comment.html:164 -#: app/templates/comments/_comments_section.html:44 -#: app/templates/comments/edit.html:83 -#: app/templates/contacts/communication_form.html:82 -#: app/templates/contacts/form.html:99 -#: app/templates/deals/activity_form.html:63 app/templates/deals/form.html:112 -#: app/templates/expenses/view.html:401 -#: app/templates/import_export/index.html:239 -#: app/templates/import_export/index.html:277 -#: app/templates/integrations/activitywatch_setup.html:148 -#: app/templates/integrations/caldav_setup.html:202 -#: app/templates/integrations/wizard_base.html:55 -#: app/templates/inventory/adjustments/form.html:56 -#: app/templates/inventory/movements/form.html:114 -#: app/templates/inventory/purchase_orders/form.html:101 -#: app/templates/inventory/stock_items/form.html:134 -#: app/templates/inventory/suppliers/form.html:85 -#: app/templates/inventory/transfers/form.html:60 -#: app/templates/inventory/warehouses/form.html:60 -#: app/templates/invoice_approvals/list.html:85 -#: app/templates/invoice_approvals/request.html:38 -#: app/templates/invoices/edit.html:286 app/templates/invoices/edit.html:670 -#: app/templates/invoices/generate_from_time.html:136 -#: app/templates/invoices/list.html:171 app/templates/invoices/view.html:383 -#: app/templates/issues/edit.html:86 app/templates/issues/new.html:80 -#: app/templates/kanban/columns.html:162 -#: app/templates/kanban/create_column.html:86 -#: app/templates/kanban/edit_column.html:88 -#: app/templates/leads/activity_form.html:63 -#: app/templates/leads/convert_to_client.html:35 -#: app/templates/leads/convert_to_deal.html:63 -#: app/templates/leads/form.html:103 app/templates/main/dashboard.html:790 -#: app/templates/payment_gateways/create.html:79 -#: app/templates/payment_gateways/pay.html:35 -#: app/templates/per_diem/rates_list.html:113 -#: app/templates/project_templates/create.html:106 -#: app/templates/project_templates/create_project.html:66 -#: app/templates/project_templates/edit.html:136 -#: app/templates/projects/add_cost.html:98 -#: app/templates/projects/add_good.html:68 -#: app/templates/projects/archive.html:82 -#: app/templates/projects/create.html:137 -#: app/templates/projects/create.html:307 app/templates/projects/edit.html:128 -#: app/templates/projects/edit_cost.html:105 -#: app/templates/projects/edit_good.html:68 -#: app/templates/projects/view.html:365 app/templates/quotes/accept.html:54 -#: app/templates/quotes/create.html:262 app/templates/quotes/edit.html:348 -#: app/templates/quotes/view.html:304 app/templates/quotes/view.html:385 -#: app/templates/quotes/view.html:477 app/templates/quotes/view.html:551 -#: app/templates/quotes/view.html:569 app/templates/quotes/view.html:581 -#: app/templates/recurring_tasks/form.html:128 -#: app/templates/reports/builder.html:220 app/templates/reports/index.html:492 -#: app/templates/reports/schedule_form.html:100 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/tasks/create.html:138 app/templates/tasks/edit.html:146 -#: app/templates/tasks/list.html:216 app/templates/tasks/list.html:423 -#: app/templates/timer/calendar.html:204 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:1119 -#: app/templates/timer/time_entries_overview.html:181 -#: app/templates/timer/time_entries_overview.html:207 -#: app/templates/user/settings.html:494 -#: app/templates/weekly_goals/create.html:125 -#: app/templates/weekly_goals/edit.html:112 -msgid "Cancel" -msgstr "Cancelar" - -#: app/templates/base.html:388 -msgid "Confirm" -msgstr "Confirmar" - -#: app/templates/admin/pdf_layout.html:2361 -#: app/templates/admin/quote_pdf_layout.html:2133 -#: app/templates/approvals/list.html:129 app/templates/approvals/view.html:148 -#: app/templates/base.html:389 app/templates/base.html:1427 -#: app/templates/base.html:1504 app/templates/calendar/view.html:148 -#: app/templates/chat/index.html:101 -#: app/templates/components/support_modal.html:18 -#: app/templates/invoices/list.html:155 app/templates/invoices/view.html:367 -#: app/templates/kanban/columns.html:143 app/templates/main/dashboard.html:707 -#: app/templates/partials/_bottom_nav.html:18 -#: app/templates/projects/create.html:267 app/templates/quotes/view.html:447 -#: app/templates/tasks/_kanban.html:1363 app/templates/timer/calendar.html:234 -#: app/templates/timer/calendar.html:259 -#: app/templates/workforce/dashboard.html:87 -msgid "Close" -msgstr "Fechar" - -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/admin/salesman_email_mappings.html:148 -#: app/templates/admin/webhooks/form.html:125 app/templates/base.html:390 -#: app/templates/calendar/view.html:112 -#: app/templates/client_portal/dashboard.html:91 -#: app/templates/comments/_comment.html:137 -#: app/templates/inventory/stock_items/form.html:137 -#: app/templates/inventory/suppliers/form.html:88 -#: app/templates/inventory/warehouses/form.html:63 -#: app/templates/recurring_tasks/form.html:130 -#: app/templates/reports/builder.html:69 -#: app/templates/reports/builder.html:221 -msgid "Save" -msgstr "Gravar" - -#: app/templates/admin/api_tokens.html:493 -#: app/templates/admin/custom_field_definitions/list.html:67 -#: app/templates/admin/email_templates/list.html:83 -#: app/templates/admin/link_templates/list.html:71 -#: app/templates/admin/roles/list.html:149 -#: app/templates/admin/roles/list.html:214 app/templates/admin/users.html:83 -#: app/templates/admin/users.html:123 app/templates/base.html:391 -#: app/templates/calendar/event_detail.html:26 -#: app/templates/calendar/event_detail.html:193 -#: app/templates/calendar/view.html:154 app/templates/clients/view.html:278 -#: app/templates/clients/view.html:280 app/templates/clients/view.html:512 -#: app/templates/clients/view.html:633 app/templates/comments/_comment.html:41 -#: app/templates/comments/_comment.html:85 -#: app/templates/expenses/view.html:400 -#: app/templates/integrations/view.html:156 app/templates/issues/view.html:16 -#: app/templates/issues/view.html:19 app/templates/kanban/columns.html:103 -#: app/templates/per_diem/rates_list.html:80 -#: app/templates/per_diem/rates_list.html:112 -#: app/templates/projects/goods.html:81 app/templates/projects/view.html:405 -#: app/templates/projects/view.html:407 -#: app/templates/quotes/_quotes_list.html:15 -#: app/templates/quotes/list.html:368 app/templates/quotes/view.html:331 -#: app/templates/quotes/view.html:356 app/templates/quotes/view.html:584 -#: app/templates/reports/saved_views_list.html:69 -#: app/templates/reports/scheduled.html:100 -#: app/templates/saved_filters/list.html:51 app/templates/tasks/list.html:422 -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -#: app/templates/timer/_time_entries_list.html:21 -#: app/templates/timer/calendar.html:232 app/templates/timer/calendar.html:829 -#: app/templates/timer/calendar.html:991 -#: app/templates/timer/calendar.html:1118 -#: app/templates/timer/time_entries_overview.html:184 -#: app/templates/weekly_goals/edit.html:115 -#: app/templates/weekly_goals/edit.html:117 -#: app/templates/workforce/dashboard.html:94 -#: app/templates/workforce/dashboard.html:193 -#: app/templates/workforce/dashboard.html:267 -#: app/templates/workforce/dashboard.html:292 -msgid "Delete" -msgstr "Apagar" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/list.html:62 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/list.html:66 -#: app/templates/admin/roles/list.html:144 app/templates/admin/users.html:77 -#: app/templates/admin/webhooks/view.html:18 app/templates/base.html:392 -#: app/templates/calendar/event_detail.html:22 -#: app/templates/calendar/view.html:151 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:504 app/templates/comments/_comment.html:36 -#: app/templates/contacts/list.html:59 app/templates/deals/view.html:14 -#: app/templates/kanban/columns.html:93 app/templates/leads/view.html:14 -#: app/templates/per_diem/rates_list.html:70 -#: app/templates/project_templates/list.html:60 -#: app/templates/project_templates/view.html:17 -#: app/templates/quotes/view.html:328 app/templates/quotes/view.html:353 -#: app/templates/recurring_invoices/view.html:16 -#: app/templates/reports/iterative_view.html:19 -#: app/templates/reports/saved_views_list.html:64 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:74 -#: app/templates/timer/_time_entries_list.html:182 -#: app/templates/timer/calendar.html:239 app/templates/timer/calendar.html:818 -#: app/templates/timer/calendar.html:988 -#: app/templates/timer/view_timer.html:17 -#: app/templates/weekly_goals/index.html:196 -#: app/templates/weekly_goals/view.html:26 -msgid "Edit" -msgstr "Editar" - -#: app/templates/base.html:393 -msgid "Add" -msgstr "Adicionar" - -#: app/templates/admin/settings.html:715 app/templates/base.html:394 -#: app/templates/inventory/purchase_orders/form.html:153 -#: app/templates/inventory/stock_items/form.html:120 -#: app/templates/inventory/stock_items/form.html:171 -#: app/templates/quotes/_edit_quote_form_scripts.html:204 -#: app/templates/quotes/_edit_quote_form_scripts.html:239 -#: app/templates/quotes/edit.html:171 app/templates/quotes/edit.html:229 -#: app/templates/reports/builder.html:433 -msgid "Remove" -msgstr "Remover" - -#: app/templates/admin/settings.html:828 app/templates/admin/users.html:108 -#: app/templates/base.html:397 app/templates/integrations/health.html:78 -#: app/templates/inventory/stock_levels/warehouse.html:77 -msgid "OK" -msgstr "Está bem" - -#: app/templates/base.html:400 -msgid "Are you sure you want to delete this?" -msgstr "Tem a certeza de que deseja apagar isto?" - -#: app/templates/base.html:401 -msgid "You have unsaved changes. Are you sure you want to leave?" -msgstr "Você tem mudanças não salvas. Tens a certeza que queres ir embora?" - -#: app/templates/base.html:402 -msgid "Operation failed" -msgstr "A operação falhou" - -#: app/templates/base.html:403 -msgid "Operation completed successfully" -msgstr "Operação concluída com sucesso" - -#: app/templates/base.html:404 -msgid "No items selected" -msgstr "Nenhum item selecionado" - -#: app/templates/base.html:405 -msgid "Invalid input" -msgstr "Entrada inválida" - -#: app/templates/base.html:406 -msgid "This field is required" -msgstr "Este campo é obrigatório" - -#: app/templates/base.html:407 app/templates/kiosk/base.html:103 -#: app/templates/user/profile.html:62 -msgid "No active timer" -msgstr "Sem temporizador ativo" - -#: app/templates/base.html:408 -msgid "Timer stopped" -msgstr "Temporizador parado" - -#: app/templates/base.html:409 -msgid "Failed to stop timer" -msgstr "Falha ao parar o temporizador" - -#: app/templates/base.html:410 -msgid "Error stopping timer" -msgstr "Erro ao parar o temporizador" - -#: app/templates/base.html:411 -msgid "No form to save" -msgstr "Nenhum formulário a gravar" - -#: app/templates/base.html:412 -msgid "No timer found" -msgstr "Nenhum temporizador encontrado" - -#: app/templates/base.html:413 -msgid "Timer stopped due to inactivity" -msgstr "Temporizador parado devido à inatividade" - -#: app/templates/base.html:414 app/templates/main/dashboard.html:689 -#: app/templates/timer/manual_entry.html:531 -#: app/templates/timer/timer_page.html:362 -msgid "Please select either a project or a client" -msgstr "Selecione um projeto ou um cliente" - -#: app/templates/base.html:477 -msgid "Skip to content" -msgstr "Saltar para o conteúdo" - -#: app/templates/base.html:480 -msgid "Main navigation" -msgstr "Navegação principal" - -#: app/templates/base.html:502 app/templates/timer/calendar.html:277 -msgid "Navigation" -msgstr "Navegação" - -#: app/templates/base.html:507 app/templates/base.html:508 -#: app/templates/base.html:1222 -msgid "Open command palette" -msgstr "Abrir a paleta de comandos" - -#: app/templates/base.html:512 -msgid "Commands" -msgstr "Comandos" - -#: app/templates/base.html:519 -msgid "Toggle sidebar" -msgstr "Alternar a barra lateral" - -#: app/templates/base.html:525 app/templates/base.html:527 -#: app/templates/client_portal/base.html:254 -#: app/templates/client_portal/base.html:339 -#: app/templates/main/dashboard.html:28 app/templates/main/dashboard.html:29 -#: app/templates/main/donate.html:8 app/templates/partials/_bottom_nav.html:60 -#: app/templates/partials/_bottom_nav.html:64 -#: app/templates/projects/view.html:35 -msgid "Dashboard" -msgstr "Painel" - -#: app/templates/base.html:531 app/templates/base.html:533 -#: app/templates/base.html:1253 app/templates/kiosk/base.html:155 -#: app/templates/main/dashboard.html:38 -#: app/templates/partials/_bottom_nav.html:66 -#: app/templates/partials/_bottom_nav.html:70 -#: app/templates/tasks/overdue.html:76 app/templates/timer/timer_page.html:7 -#: app/templates/timer/timer_page.html:12 -msgid "Timer" -msgstr "Temporizador" - -#: app/templates/base.html:537 app/templates/base.html:539 -#: app/templates/main/dashboard.html:250 -#: app/templates/partials/_bottom_nav.html:72 -#: app/templates/partials/_bottom_nav.html:76 -msgid "Time entries" -msgstr "Entradas temporais" - -#: app/templates/base.html:544 app/templates/base.html:546 -#: app/templates/base.html:733 app/templates/base.html:902 -#: app/templates/base.html:1479 app/templates/budget/dashboard.html:17 -#: app/templates/client_portal/base.html:293 -#: app/templates/client_portal/base.html:372 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:9 -#: app/templates/client_portal/reports.html:14 -#: app/templates/components/support_modal.html:33 -#: app/templates/partials/_bottom_nav.html:46 -#: app/templates/reports/index.html:7 app/templates/reports/index.html:12 -#: app/templates/reports/week_in_review.html:6 -msgid "Reports" -msgstr "Relatórios" - -#: app/templates/base.html:552 app/templates/base.html:554 -#: app/templates/calendar/view.html:12 app/templates/calendar/view.html:17 -#: app/templates/timer/calendar.html:3 app/templates/timer/calendar.html:23 -msgid "Calendar" -msgstr "Calendário" - -#: app/templates/base.html:562 app/templates/main/help.html:181 -msgid "Calendar View" -msgstr "Vista do Calendário" - -#: app/templates/base.html:567 app/templates/base.html:930 -#: app/templates/integrations/list.html:4 -#: app/templates/integrations/wizard_base.html:8 -#: app/templates/setup/initial_setup.html:202 -msgid "Integrations" -msgstr "Integração" - -#: app/templates/admin/modules.html:172 app/templates/admin/modules.html:214 -#: app/templates/auth/login.html:34 app/templates/base.html:574 -#: app/templates/base.html:576 app/templates/main/about.html:29 -#: app/templates/main/help.html:27 app/templates/main/help.html:108 -#: app/templates/main/help.html:266 app/templates/timer/manual_entry.html:7 -msgid "Time Tracking" -msgstr "Rastreamento do Tempo" - -#: app/templates/base.html:596 -msgid "Time Approvals" -msgstr "Homologação" - -#: app/templates/base.html:608 app/templates/project_templates/list.html:4 -msgid "Project Templates" -msgstr "Modelos de Projeto" - -#: app/templates/base.html:615 app/templates/gantt/view.html:4 -msgid "Gantt Chart" -msgstr "Gráfico Gantt" - -#: app/templates/base.html:621 app/templates/calendar/view.html:80 -#: app/templates/calendar/view.html:97 app/templates/calendar/view.html:98 -#: app/templates/calendar/view.html:108 -#: app/templates/components/activity_feed_widget.html:27 -#: app/templates/components/offline_indicator.html:75 -#: app/templates/integrations/wizard_asana.html:116 -#: app/templates/reports/builder.html:368 app/templates/tasks/create.html:16 -#: app/templates/tasks/edit.html:16 app/templates/tasks/overdue.html:8 -#: app/templates/tasks/view.html:47 -msgid "Tasks" -msgstr "Tarefas" - -#: app/templates/base.html:627 app/templates/client_portal/base.html:273 -#: app/templates/client_portal/base.html:358 -#: app/templates/client_portal/issue_detail.html:9 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:9 -#: app/templates/client_portal/new_issue.html:9 -#: app/templates/integrations/wizard_github.html:100 -#: app/templates/integrations/wizard_gitlab.html:136 -msgid "Issues" -msgstr "Questões" - -#: app/templates/base.html:634 app/templates/kanban/board.html:9 -#: app/templates/kanban/board.html:55 app/templates/main/help.html:31 -#: app/templates/main/help.html:346 app/templates/tasks/_kanban.html:9 -msgid "Kanban Board" -msgstr "Tabuleiro Kanban" - -#: app/templates/base.html:641 app/templates/weekly_goals/index.html:8 -msgid "Weekly Goals" -msgstr "Objetivos Semanais" - -#: app/templates/base.html:647 -msgid "Workforce" -msgstr "Força de trabalho" - -#: app/templates/base.html:653 app/templates/base.html:1117 -msgid "Time Entry Templates" -msgstr "Modelos de Entrada de Tempo" - -#: app/templates/admin/modules.html:174 app/templates/admin/modules.html:216 -#: app/templates/base.html:661 app/templates/base.html:663 -msgid "CRM" -msgstr "CRM" - -#: app/templates/base.html:675 app/templates/clients/create.html:10 -#: app/templates/clients/edit.html:10 app/templates/clients/view.html:53 -#: app/templates/components/activity_feed_widget.html:43 -#: app/templates/partials/_bottom_nav.html:38 -msgid "Clients" -msgstr "Clientes" - -#: app/templates/base.html:682 app/templates/integrations/wizard_xero.html:102 -msgid "Contacts" -msgstr "Contactos" - -#: app/templates/base.html:683 -msgid "via Clients" -msgstr "através de Clientes" - -#: app/templates/base.html:690 app/templates/deals/activity_form.html:8 -#: app/templates/deals/view.html:8 -msgid "Deals" -msgstr "Ofertas" - -#: app/templates/base.html:697 app/templates/leads/activity_form.html:8 -#: app/templates/leads/convert_to_client.html:8 -#: app/templates/leads/convert_to_deal.html:8 app/templates/leads/view.html:8 -msgid "Leads" -msgstr "Chumbo" - -#: app/templates/base.html:704 app/templates/client_portal/quote_detail.html:9 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:9 -#: app/templates/client_portal/quotes.html:14 -msgid "Quotes" -msgstr "Citações" - -#: app/templates/admin/modules.html:175 app/templates/admin/modules.html:217 -#: app/templates/base.html:715 -msgid "Finance & Expenses" -msgstr "Finanças e Despesas" - -#: app/templates/base.html:740 -msgid "All Reports" -msgstr "Todos os Relatórios" - -#: app/templates/base.html:746 app/templates/reports/index.html:201 -msgid "Report Builder" -msgstr "Construtor de Relatórios" - -#: app/templates/base.html:751 app/templates/reports/builder.html:17 -msgid "Saved Views" -msgstr "Vistas Gravadas" - -#: app/templates/base.html:758 app/templates/reports/index.html:159 -#: app/templates/reports/index.html:214 app/templates/reports/index.html:262 -#: app/templates/reports/scheduled.html:4 -msgid "Scheduled Reports" -msgstr "Relatórios Agendados" - -#: app/templates/base.html:768 app/templates/client_portal/base.html:260 -#: app/templates/client_portal/base.html:345 -#: app/templates/client_portal/invoice_detail.html:9 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:9 -#: app/templates/client_portal/invoices.html:14 -#: app/templates/components/activity_feed_widget.html:39 -#: app/templates/integrations/wizard_quickbooks.html:101 -#: app/templates/integrations/wizard_xero.html:84 -#: app/templates/invoices/create.html:8 app/templates/invoices/edit.html:13 -#: app/templates/invoices/view.html:46 -#: app/templates/partials/_bottom_nav.html:30 -#: app/templates/reports/builder.html:369 -msgid "Invoices" -msgstr "Facturas" - -#: app/templates/base.html:775 -msgid "Invoice Approvals" -msgstr "Aprovações na factura" - -#: app/templates/base.html:782 app/templates/payment_gateways/list.html:4 -msgid "Payment Gateways" -msgstr "Gateways de pagamento" - -#: app/templates/base.html:789 app/templates/recurring_invoices/list.html:6 -#: app/templates/recurring_invoices/list.html:11 -msgid "Recurring Invoices" -msgstr "Faturas recorrentes" - -#: app/templates/base.html:796 -#: app/templates/integrations/wizard_quickbooks.html:113 -#: app/templates/integrations/wizard_xero.html:96 -msgid "Payments" -msgstr "Pagamentos" - -#: app/templates/base.html:803 -#: app/templates/integrations/wizard_quickbooks.html:107 -#: app/templates/integrations/wizard_xero.html:90 -#: app/templates/invoices/edit.html:148 app/templates/invoices/edit.html:338 -#: app/templates/main/help.html:33 app/templates/reports/builder.html:370 -msgid "Expenses" -msgstr "Despesas" - -#: app/templates/base.html:810 -msgid "Mileage" -msgstr "Milhagem" - -#: app/templates/base.html:817 -msgid "Per Diem" -msgstr "Per Diem" - -#: app/templates/base.html:824 app/templates/budget/dashboard.html:7 -msgid "Budget Alerts" -msgstr "Alertas orçamentais" - -#: app/templates/admin/modules.html:176 app/templates/admin/modules.html:218 -#: app/templates/base.html:835 -msgid "Inventory" -msgstr "Inventário" - -#: app/templates/base.html:851 app/templates/inventory/suppliers/view.html:174 -msgid "Stock Items" -msgstr "Elementos da unidade populacional" - -#: app/templates/base.html:856 -msgid "Warehouses" -msgstr "Armazéns" - -#: app/templates/base.html:861 -#: app/templates/inventory/stock_items/form.html:98 -#: app/templates/inventory/stock_items/view.html:60 -msgid "Suppliers" -msgstr "Fornecedores" - -#: app/templates/base.html:867 -msgid "Purchase Orders" -msgstr "Ordens de Compra" - -#: app/templates/base.html:872 app/templates/inventory/warehouses/view.html:79 -msgid "Stock Levels" -msgstr "Níveis das existências" - -#: app/templates/base.html:877 -msgid "Stock Movements" -msgstr "Movimentos de unidades populacionais" - -#: app/templates/base.html:882 -msgid "Transfers" -msgstr "Transferências" - -#: app/templates/base.html:887 -msgid "Adjustments" -msgstr "Ajustes" - -#: app/templates/base.html:892 -msgid "Reservations" -msgstr "Reservas" - -#: app/templates/base.html:897 -msgid "Low Stock Alerts" -msgstr "Alertas de ações baixas" - -#: app/templates/admin/modules.html:177 app/templates/admin/modules.html:219 -#: app/templates/analytics/dashboard.html:8 -#: app/templates/analytics/mobile_dashboard.html:3 -#: app/templates/analytics/mobile_dashboard.html:20 -#: app/templates/base.html:912 app/templates/main/about.html:38 -msgid "Analytics" -msgstr "Análise" - -#: app/templates/admin/modules.html:178 app/templates/admin/modules.html:220 -#: app/templates/base.html:920 -msgid "Tools & Data" -msgstr "Ferramentas & Dados" - -#: app/templates/base.html:937 -msgid "Import / Export" -msgstr "Importação / Exportação" - -#: app/templates/base.html:944 -msgid "Saved Filters" -msgstr "Filtros Gravados" - -#: app/templates/admin/custom_field_definitions/form.html:6 -#: app/templates/admin/custom_field_definitions/list.html:6 -#: app/templates/admin/ldap_setup_wizard.html:8 -#: app/templates/admin/link_templates/form.html:6 -#: app/templates/admin/link_templates/list.html:6 -#: app/templates/admin/modules.html:15 app/templates/admin/oidc_debug.html:8 -#: app/templates/admin/oidc_debug.html:152 -#: app/templates/admin/oidc_setup_wizard.html:8 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/admin/permissions/list.html:6 -#: app/templates/admin/roles/list.html:6 -#: app/templates/admin/salesman_email_mappings.html:4 -#: app/templates/admin/webhooks/form.html:6 -#: app/templates/admin/webhooks/list.html:6 -#: app/templates/admin/webhooks/view.html:6 app/templates/base.html:955 -#: app/templates/comments/_comment.html:19 app/templates/user/profile.html:21 -msgid "Admin" -msgstr "Administrador" - -#: app/templates/base.html:963 -msgid "Admin Dashboard" -msgstr "Painel de administração" - -#: app/templates/admin/settings.html:145 app/templates/base.html:973 -#: app/templates/main/help.html:569 -msgid "User Management" -msgstr "Gestão do Utilizador" - -#: app/templates/base.html:980 -msgid "Manage Users" -msgstr "Gerenciar Usuários" - -#: app/templates/admin/permissions/list.html:7 -#: app/templates/admin/roles/list.html:7 -#: app/templates/admin/roles/list.html:12 -#: app/templates/admin/user_form.html:123 app/templates/base.html:987 -msgid "Roles & Permissions" -msgstr "Funções e Permissões" - -#: app/templates/base.html:1000 -msgid "PDF Templates" -msgstr "Modelos PDF" - -#: app/templates/base.html:1006 -msgid "Invoice PDF" -msgstr "PDF da factura" - -#: app/templates/base.html:1011 -msgid "Quote PDF" -msgstr "Citar PDF" - -#: app/templates/base.html:1023 app/templates/main/help.html:65 -msgid "System Settings" -msgstr "Configuração do Sistema" - -#: app/templates/admin/ldap_setup_wizard.html:9 app/templates/base.html:1030 -#: app/templates/partials/_bottom_nav.html:54 -#: app/templates/user/license.html:2 app/templates/user/profile.html:31 -#: app/templates/user/settings.html:2 app/templates/user/settings.html:7 -msgid "Settings" -msgstr "Configurações" - -#: app/templates/admin/modules.html:15 app/templates/base.html:1035 -msgid "Module Management" -msgstr "Gerenciamento de Módulos" - -#: app/templates/admin/email_support.html:18 -#: app/templates/admin/salesman_email_mappings.html:86 -#: app/templates/base.html:1040 -msgid "Email Configuration" -msgstr "Configuração do E- mail" - -#: app/templates/base.html:1045 -msgid "Email Templates" -msgstr "Modelos de E- mail" - -#: app/templates/admin/oidc_debug.html:9 -#: app/templates/admin/oidc_setup_wizard.html:9 app/templates/base.html:1052 -msgid "OIDC Settings" -msgstr "Configuração do OIDC" - -#: app/templates/base.html:1065 -msgid "Security & Access" -msgstr "Segurança e Acesso" - -#: app/templates/base.html:1072 -msgid "API Tokens" -msgstr "Tokens de API" - -#: app/templates/audit_logs/list.html:4 app/templates/audit_logs/list.html:8 -#: app/templates/audit_logs/list.html:13 app/templates/base.html:1086 -msgid "Audit Logs" -msgstr "Registos de Auditoria" - -#: app/templates/base.html:1098 -msgid "Data Management" -msgstr "Gestão de Dados" - -#: app/templates/base.html:1105 -msgid "Expense Categories" -msgstr "Categorias de Despesas" - -#: app/templates/base.html:1110 -msgid "Per Diem Rates" -msgstr "Por Taxas Diem" - -#: app/templates/base.html:1122 app/templates/clients/create.html:78 -#: app/templates/clients/edit.html:72 app/templates/clients/view.html:133 -#: app/templates/projects/create.html:107 app/templates/projects/edit.html:98 -#: app/templates/projects/view.html:160 -msgid "Custom Fields" -msgstr "Campos Personalizados" - -#: app/templates/admin/link_templates/form.html:7 -#: app/templates/admin/link_templates/list.html:7 -#: app/templates/admin/link_templates/list.html:12 -#: app/templates/base.html:1127 -msgid "Link Templates" -msgstr "Modelos de Ligação" - -#: app/templates/base.html:1140 -msgid "System Maintenance" -msgstr "Manutenção do Sistema" - -#: app/templates/base.html:1147 app/templates/main/about.html:250 -#: app/templates/main/help.html:783 app/templates/main/help.html:825 -msgid "System Info" -msgstr "Informações do Sistema" - -#: app/templates/base.html:1154 -msgid "Backups" -msgstr "Backups" - -#: app/templates/base.html:1161 -msgid "Telemetry" -msgstr "Telemetria" - -#: app/templates/base.html:1178 app/templates/main/about.html:3 -#: app/templates/main/about.html:8 app/templates/main/about.html:12 -msgid "About" -msgstr "Sobre" - -#: app/templates/base.html:1184 app/templates/base.html:1255 -#: app/templates/clients/create.html:117 app/templates/main/help.html:3 -#: app/templates/main/help.html:8 app/templates/main/help.html:12 -#: app/templates/timer/calendar.html:337 -msgid "Help" -msgstr "Ajuda" - -#: app/templates/base.html:1189 -msgid "Open support options" -msgstr "Abrir opções de suporte" - -#: app/templates/base.html:1191 app/templates/base.html:1264 -#: app/templates/base.html:1266 app/templates/base.html:1329 -#: app/templates/components/support_modal.html:9 -#: app/templates/main/about.html:46 app/templates/main/donate.html:2 -#: app/templates/main/help.html:836 app/templates/user/settings.html:26 -msgid "Support TimeTracker" -msgstr "Monitor de Tempo de Suporte" - -#: app/templates/base.html:1211 -msgid "Open sidebar" -msgstr "Abrir a barra lateral" - -#: app/templates/base.html:1219 app/templates/base.html:1220 -#: app/templates/components/multi_select.html:68 -#: app/templates/inventory/stock_items/list.html:21 -#: app/templates/inventory/suppliers/list.html:21 -#: app/templates/issues/list.html:31 app/templates/leads/list.html:22 -#: app/templates/main/search.html:3 app/templates/quotes/list.html:74 -#: app/templates/tasks/my_tasks.html:115 -#: app/templates/timer/time_entries_overview.html:118 -msgid "Search" -msgstr "Pesquisar" - -#: app/templates/admin/oidc_user_detail.html:29 app/templates/base.html:1229 -#: app/templates/user/settings.html:215 -msgid "Theme" -msgstr "Tema" - -#: app/templates/base.html:1234 -msgid "Theme options" -msgstr "Opções do tema" - -#: app/templates/base.html:1235 app/templates/user/settings.html:220 -msgid "Light" -msgstr "Luz" - -#: app/templates/base.html:1236 app/templates/kanban/create_column.html:68 -#: app/templates/kanban/edit_column.html:60 -#: app/templates/user/settings.html:221 -msgid "Dark" -msgstr "Escuro" - -#: app/templates/admin/roles/list.html:132 -#: app/templates/admin/users/roles.html:36 app/templates/base.html:1237 -#: app/templates/deals/view.html:204 app/templates/kanban/columns.html:54 -#: app/templates/kanban/columns.html:86 -#: app/templates/setup/initial_setup.html:165 -msgid "System" -msgstr "Sistema" - -#: app/templates/base.html:1244 -msgid "Open chat" -msgstr "Abrir conversa" - -#: app/templates/base.html:1250 app/templates/base.html:1458 -#: app/templates/kiosk/dashboard.html:353 app/templates/main/dashboard.html:58 -#: app/templates/main/dashboard.html:59 app/templates/main/dashboard.html:704 -#: app/templates/tasks/_kanban.html:60 app/templates/tasks/edit.html:285 -#: app/templates/tasks/my_tasks.html:341 -msgid "Start Timer" -msgstr "Iniciar o Temporizador" - -#: app/templates/base.html:1251 app/templates/mileage/gps.html:32 -#: app/templates/reports/time_entries_report.html:104 -#: app/templates/reports/time_entries_report.html:118 -msgid "Stop" -msgstr "Parar" - -#: app/templates/admin/settings.html:516 app/templates/base.html:1259 -#: app/templates/base.html:1491 app/templates/base.html:1493 -#: app/templates/base.html:1498 app/templates/base.html:1501 -msgid "AI Helper" -msgstr "Ajudador de IA" - -#: app/templates/base.html:1273 -msgid "Change language" -msgstr "Mudar idioma" - -#: app/templates/base.html:1278 app/templates/user/settings.html:227 -msgid "Language" -msgstr "Língua" - -#: app/templates/base.html:1294 -msgid "User menu" -msgstr "Menu do usuário" - -#: app/templates/base.html:1308 -msgid "Supporter" -msgstr "Apoiador" - -#: app/templates/base.html:1314 app/templates/base.html:1320 -msgid "Guest" -msgstr "Convidado" - -#: app/templates/base.html:1323 -msgid "My Profile" -msgstr "Meu Perfil" - -#: app/templates/base.html:1324 -msgid "My Settings" -msgstr "Minhas Configurações" - -#: app/templates/base.html:1326 app/templates/invoices/edit.html:255 -#: app/templates/invoices/edit.html:615 app/templates/main/dashboard.html:648 -#: app/templates/projects/add_good.html:34 -#: app/templates/projects/edit_good.html:34 -#: app/templates/quotes/_edit_quote_form_scripts.html:223 -#: app/templates/quotes/edit.html:222 app/templates/user/license.html:2 -#: app/templates/user/license.html:7 -msgid "License" -msgstr "Licença" - -#: app/templates/base.html:1329 -msgid "Donate or get a supporter license" -msgstr "Doar ou obter uma licença de suporte" - -#: app/templates/base.html:1331 app/templates/client_portal/base.html:302 -#: app/templates/client_portal/base.html:379 app/templates/kiosk/base.html:129 -msgid "Logout" -msgstr "Sair" - -#: app/templates/base.html:1364 app/templates/base.html:2459 -#: app/templates/main/dashboard.html:635 app/templates/main/help.html:843 -#: app/templates/reports/index.html:20 -msgid "Enjoying TimeTracker?" -msgstr "Gostando do TimeTracker?" - -#: app/templates/base.html:1367 -msgid "" -"Support independent development — licenses are supporter badges, not " -"paywalls." -msgstr "" -"Suporte ao desenvolvimento independente — as licenças são emblemas de " -"suporte, não paywalls." - -#: app/templates/base.html:1374 app/templates/main/about.html:212 -msgid "Support / Get key" -msgstr "Suporte / Obter chave" - -#: app/templates/base.html:1381 -msgid "Buy Me a Coffee" -msgstr "Compre-me um café" - -#: app/templates/base.html:1388 app/utils/i18n_helpers.py:115 -#: app/utils/i18n_helpers.py:131 -msgid "PayPal" -msgstr "PayPal" - -#: app/templates/base.html:1391 -msgid "Support / License" -msgstr "Suporte / Licença" - -#: app/templates/base.html:1395 app/templates/base.html:1431 -msgid "Dismiss" -msgstr "Licenciamento" - -#: app/templates/base.html:1408 -msgid "Built by an independent developer" -msgstr "Construído por um desenvolvedor independente" - -#: app/templates/base.html:1417 -msgid "Software update" -msgstr "Actualização de software" - -#: app/templates/base.html:1425 -msgid "Read more" -msgstr "Ler mais" - -#: app/templates/base.html:1430 -msgid "View Release" -msgstr "Ver Versão" - -#: app/templates/base.html:1432 -msgid "Don't show again for this version" -msgstr "Não mostrar novamente para esta versão" - -#: app/templates/base.html:1447 -msgid "Quick actions dock" -msgstr "Ações rápidas dock" - -#: app/templates/admin/custom_field_definitions/list.html:29 -#: app/templates/admin/custom_field_definitions/list.html:59 -#: app/templates/admin/link_templates/list.html:30 -#: app/templates/admin/link_templates/list.html:63 -#: app/templates/admin/oidc_debug.html:140 -#: app/templates/admin/oidc_user_detail.html:87 -#: app/templates/admin/roles/list.html:96 -#: app/templates/admin/salesman_email_mappings.html:44 -#: app/templates/admin/salesman_email_mappings.html:217 -#: app/templates/admin/webhooks/list.html:29 -#: app/templates/admin/webhooks/list.html:72 -#: app/templates/audit_logs/list.html:81 -#: app/templates/audit_logs/list.html:160 app/templates/base.html:1454 -#: app/templates/base.html:1482 app/templates/base.html:1484 -#: app/templates/budget/dashboard.html:122 -#: app/templates/client_portal/invoices.html:76 -#: app/templates/client_portal/quote_detail.html:129 -#: app/templates/client_portal/quotes.html:31 -#: app/templates/client_portal/quotes.html:65 -#: app/templates/components/ui.html:526 app/templates/contacts/list.html:32 -#: app/templates/contacts/list.html:56 app/templates/deals/list.html:56 -#: app/templates/deals/list.html:80 app/templates/expenses/dashboard.html:222 -#: app/templates/expenses/list.html:337 -#: app/templates/integrations/health.html:29 -#: app/templates/integrations/view.html:114 -#: app/templates/inventory/low_stock/list.html:28 -#: app/templates/inventory/low_stock/list.html:44 -#: app/templates/inventory/purchase_orders/list.html:56 -#: app/templates/inventory/purchase_orders/list.html:90 -#: app/templates/inventory/reports/low_stock.html:36 -#: app/templates/inventory/reports/low_stock.html:57 -#: app/templates/inventory/reservations/list.html:47 -#: app/templates/inventory/reservations/list.html:100 -#: app/templates/inventory/stock_items/list.html:56 -#: app/templates/inventory/stock_items/list.html:94 -#: app/templates/inventory/suppliers/list.html:47 -#: app/templates/inventory/suppliers/list.html:81 -#: app/templates/inventory/warehouses/list.html:27 -#: app/templates/inventory/warehouses/list.html:54 -#: app/templates/issues/list.html:100 app/templates/issues/list.html:134 -#: app/templates/kanban/columns.html:55 app/templates/leads/list.html:56 -#: app/templates/leads/list.html:84 app/templates/main/dashboard.html:338 -#: app/templates/main/dashboard.html:367 app/templates/main/search.html:39 -#: app/templates/payment_gateways/list.html:29 -#: app/templates/payment_gateways/list.html:55 -#: app/templates/payments/list.html:172 -#: app/templates/projects/_projects_list.html:126 -#: app/templates/projects/goods.html:45 app/templates/projects/goods.html:75 -#: app/templates/projects/list.html:207 app/templates/projects/view.html:434 -#: app/templates/projects/view.html:479 -#: app/templates/quotes/_quotes_list.html:39 -#: app/templates/quotes/_quotes_list.html:76 -#: app/templates/quotes/view.html:191 -#: app/templates/recurring_invoices/list.html:29 -#: app/templates/recurring_invoices/list.html:59 -#: app/templates/recurring_invoices/view.html:113 -#: app/templates/recurring_tasks/list.html:35 -#: app/templates/recurring_tasks/list.html:79 -#: app/templates/reports/saved_views_list.html:32 -#: app/templates/reports/saved_views_list.html:59 -#: app/templates/reports/scheduled.html:31 -#: app/templates/reports/scheduled.html:79 -#: app/templates/tasks/_tasks_list.html:99 app/templates/tasks/view.html:79 -#: app/templates/timer/_time_entries_list.html:45 -#: app/templates/timer/_time_entries_list.html:177 -#: app/templates/timer/calendar.html:317 -msgid "Actions" -msgstr "Acções" - -#: app/templates/base.html:1462 app/templates/reports/index.html:247 -#: app/templates/timer/_time_entries_list.html:201 -#: app/templates/timer/_time_entries_list.html:208 -#: app/templates/timer/manual_entry.html:8 -#: app/templates/timer/manual_entry.html:162 -msgid "Log Time" -msgstr "Tempo de registro" - -#: app/templates/base.html:1466 app/templates/tasks/my_tasks.html:20 -msgid "New Task" -msgstr "Nova Tarefa" - -#: app/templates/base.html:1471 -msgid "New Project" -msgstr "Novo Projeto" - -#: app/templates/base.html:1475 -msgid "New Client" -msgstr "Novo Cliente" - -#: app/templates/base.html:1491 -msgid "Open AI Helper" -msgstr "Abrir o Assistente de IA" - -#: app/templates/base.html:1502 -msgid "Ask about your tracked work, summaries, gaps, and next actions." -msgstr "" -"Pergunte sobre seu trabalho rastreado, resumos, lacunas e ações seguintes." +#~ msgid "Mileage" +#~ msgstr "Milhagem" -#: app/templates/base.html:1508 -msgid "Context included" -msgstr "Contexto incluído" +#~ msgid "Per Diem" +#~ msgstr "Per Diem" -#: app/templates/base.html:1509 -msgid "Loading context preview..." -msgstr "A carregar a antevisão do contexto..." +#~ msgid "Budget Alerts" +#~ msgstr "Alertas orçamentais" -#: app/templates/base.html:1515 -msgid "" -"Ask: What did I work on this week? Draft a time entry from these notes..." -msgstr "" -"Pergunte: Em que trabalhei esta semana? Rascunho uma entrada temporal destas" -" notas..." +#~ msgid "Inventory" +#~ msgstr "Inventário" -#: app/templates/base.html:1518 -msgid "Send" -msgstr "Enviar" +#~ msgid "Stock Items" +#~ msgstr "Elementos da unidade populacional" -#: app/templates/base.html:2450 -msgid "Amazing! You've tracked over 100 hours" -msgstr "Incrível! Seguiste mais de 100 horas." +#~ msgid "Warehouses" +#~ msgstr "Armazéns" -#: app/templates/base.html:2451 app/templates/base.html:2454 -#: app/templates/base.html:2457 app/templates/base.html:2460 -msgid "Support updates and new features — or remove prompts with a key" -msgstr "" -"Atualizações de suporte e novos recursos — ou remover alertas com uma chave" +#~ msgid "Suppliers" +#~ msgstr "Fornecedores" -#: app/templates/base.html:2453 -msgid "Great progress! You've logged 50+ entries" -msgstr "Grande progresso! Você registrou mais de 50 entradas" +#~ msgid "Purchase Orders" +#~ msgstr "Ordens de Compra" -#: app/templates/base.html:2456 -msgid "Thanks for using TimeTracker!" -msgstr "Obrigado por usar o TimeTracker!" +#~ msgid "Stock Levels" +#~ msgstr "Níveis das existências" -#: app/templates/admin/api_tokens.html:129 -msgid "Create API Token" -msgstr "Criar API Token" +#~ msgid "Stock Movements" +#~ msgstr "Movimentos de unidades populacionais" -#: app/templates/admin/api_tokens.html:356 -msgid "Your API Token" -msgstr "Sua API Token" +#~ msgid "Transfers" +#~ msgstr "Transferências" -#: app/templates/admin/api_tokens.html:368 -msgid "Usage Examples" -msgstr "Exemplos de Uso" +#~ msgid "Adjustments" +#~ msgstr "Ajustes" -#: app/templates/admin/api_tokens.html:457 -msgid "Are you sure you want to" -msgstr "Tens a certeza que queres?" +#~ msgid "Reservations" +#~ msgstr "Reservas" -#: app/templates/admin/api_tokens.html:457 -msgid "deactivate" -msgstr "desactivar" +#~ msgid "Low Stock Alerts" +#~ msgstr "Alertas de ações baixas" -#: app/templates/admin/api_tokens.html:457 -msgid "activate" -msgstr "activar" +#~ msgid "Analytics" +#~ msgstr "Análise" -#: app/templates/admin/api_tokens.html:457 -msgid "this token?" -msgstr "Este símbolo?" +#~ msgid "Tools & Data" +#~ msgstr "Ferramentas & Dados" -#: app/templates/admin/api_tokens.html:459 -msgid "Deactivate Token" -msgstr "Desactivar o Token" +#~ msgid "Import / Export" +#~ msgstr "Importação / Exportação" -#: app/templates/admin/api_tokens.html:459 -msgid "Activate Token" -msgstr "Activar o Token" +#~ msgid "Saved Filters" +#~ msgstr "Filtros Gravados" -#: app/templates/admin/api_tokens.html:460 -#: app/templates/kanban/columns.html:98 -msgid "Deactivate" -msgstr "Desactivar" +#~ msgid "Admin" +#~ msgstr "Administrador" -#: app/templates/admin/api_tokens.html:460 app/templates/clients/view.html:35 -#: app/templates/clients/view.html:37 app/templates/kanban/columns.html:98 -#: app/templates/projects/view.html:61 app/templates/projects/view.html:64 -msgid "Activate" -msgstr "Activar" +#~ msgid "Admin Dashboard" +#~ msgstr "Painel de administração" -#: app/templates/admin/api_tokens.html:490 -msgid "" -"Are you sure you want to delete this token? This action cannot be undone." -msgstr "" -"Tem a certeza de que deseja apagar este item? Esta acção não pode ser " -"desfeita." - -#: app/templates/admin/api_tokens.html:492 -msgid "Delete Token" -msgstr "Apagar o Token" - -#: app/templates/admin/backups.html:28 -#: app/templates/import_export/index.html:185 -#: app/templates/import_export/index.html:189 -msgid "Create Backup" -msgstr "Criar cópia de segurança" - -#: app/templates/admin/backups.html:47 app/templates/admin/restore.html:11 -#: app/templates/import_export/index.html:114 -msgid "Restore Backup" -msgstr "Restaurar cópia de segurança" - -#: app/templates/admin/backups.html:61 -msgid "Existing Backups" -msgstr "Cópias de segurança existentes" - -#: app/templates/admin/backups.html:124 -msgid "Important Information" -msgstr "Informação Importante" - -#: app/templates/admin/backups.html:178 -msgid "Confirm Deletion" -msgstr "Confirmar exclusão" - -#: app/templates/admin/clear_cache.html:6 -msgid "Clear Cache" -msgstr "Limpar cache" - -#: app/templates/admin/clear_cache.html:15 -msgid "ServiceWorker Status" -msgstr "Estado do Trabalhador de Serviço" - -#: app/templates/admin/clear_cache.html:23 -msgid "Clear All Caches" -msgstr "Limpar todas as caches" - -#: app/templates/admin/clear_cache.html:35 -msgid "ServiceWorker Actions" -msgstr "Acções do Trabalhador de Serviço" - -#: app/templates/admin/clear_cache.html:49 -msgid "Manual Hard Refresh" -msgstr "Actualização Difícil Manual" - -#: app/templates/admin/dashboard.html:24 -msgid "Total Users" -msgstr "Total de Utilizadores" - -#: app/templates/admin/dashboard.html:26 app/templates/admin/dashboard.html:56 -#: app/templates/audit_logs/list.html:59 app/templates/reports/index.html:26 -#: app/templates/reports/index.html:27 -msgid "All time" -msgstr "Sempre." - -#: app/templates/admin/dashboard.html:39 -#: app/templates/admin/dashboard.html:430 app/templates/reports/index.html:29 -msgid "Active Users" -msgstr "Usuários ativos" - -#: app/templates/admin/dashboard.html:41 app/templates/admin/dashboard.html:71 -#: app/templates/reports/index.html:28 app/templates/reports/index.html:29 -msgid "Currently active" -msgstr "Actualmente activo" - -#: app/templates/admin/dashboard.html:54 app/templates/clients/edit.html:176 -msgid "Total Projects" -msgstr "Total dos projectos" - -#: app/templates/admin/dashboard.html:69 -#: app/templates/analytics/dashboard.html:53 -#: app/templates/client_portal/widgets/stats.html:6 -#: app/templates/clients/edit.html:180 app/templates/reports/index.html:28 -msgid "Active Projects" -msgstr "Projetos ativos" - -#: app/templates/admin/dashboard.html:84 -msgid "Total Entries" -msgstr "Total das entradas" - -#: app/templates/admin/dashboard.html:86 -msgid "Time entries logged" -msgstr "Entradas de tempo registradas" - -#: app/templates/admin/dashboard.html:99 -msgid "Active Timers" -msgstr "Temporizadores Ativos" - -#: app/templates/admin/dashboard.html:101 -msgid "Currently running" -msgstr "Atualmente em execução" - -#: app/templates/admin/dashboard.html:116 -msgid "All time tracked" -msgstr "Todo o tempo seguido" - -#: app/templates/admin/dashboard.html:131 -msgid "Billable time" -msgstr "Tempo Billable" - -#: app/templates/admin/dashboard.html:146 -msgid "User Activity (30 Days)" -msgstr "Actividade do Utilizador (30 dias)" - -#: app/templates/admin/dashboard.html:157 -msgid "Project Status" -msgstr "Estado do Projeto" - -#: app/templates/admin/dashboard.html:168 -msgid "Time Entry Trends (30 Days)" -msgstr "Tendências da hora de entrada (30 dias)" - -#: app/templates/admin/dashboard.html:180 -msgid "System Health" -msgstr "Saúde do Sistema" - -#: app/templates/admin/dashboard.html:189 app/templates/main/about.html:147 -msgid "Database" -msgstr "Base de dados" - -#: app/templates/admin/dashboard.html:190 -#: app/templates/admin/integrations/setup.html:191 -#: app/templates/integrations/list.html:127 -#: app/templates/integrations/manage.html:552 -#: app/templates/integrations/view.html:31 -#: app/templates/integrations/view.html:42 -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connected" -msgstr "Ligado" - -#: app/templates/admin/dashboard.html:200 -msgid "OIDC Authentication" -msgstr "Autenticação do OIDC" - -#: app/templates/admin/dashboard.html:202 -msgid "Configured" -msgstr "Configurado" - -#: app/templates/admin/dashboard.html:202 -#: app/templates/integrations/list.html:51 -msgid "Not Configured" -msgstr "Não Configurado" - -#: app/templates/admin/dashboard.html:214 -#: app/templates/admin/oidc_debug.html:128 -msgid "OIDC Users" -msgstr "Utilizadores do OIDC" - -#: app/templates/admin/dashboard.html:215 -#: app/templates/admin/roles/list.html:123 -#: app/templates/admin/settings.html:827 -msgid "users" -msgstr "usuários" - -#: app/templates/admin/dashboard.html:226 -msgid "Admin Sections" -msgstr "Secções de Administração" - -#: app/templates/admin/dashboard.html:327 -#: app/templates/components/activity_feed_widget.html:6 -#: app/templates/main/dashboard.html:592 -#: app/templates/projects/dashboard.html:242 -#: app/templates/user/profile.html:131 -msgid "Recent Activity" -msgstr "Actividade Recente" - -#: app/templates/admin/dashboard.html:336 app/templates/approvals/view.html:30 -#: app/templates/calendar/event_detail.html:57 -#: app/templates/client_portal/approvals.html:130 -#: app/templates/client_portal/reports.html:221 -#: app/templates/client_portal/time_entries.html:66 -#: app/templates/client_portal/widgets/time_entries.html:23 -#: app/templates/clients/view.html:353 app/templates/main/dashboard.html:336 -#: app/templates/main/dashboard.html:361 app/templates/main/search.html:36 -#: app/templates/reports/index.html:226 app/templates/reports/index.html:234 -#: app/templates/reports/time_entries_report.html:105 -#: app/templates/reports/time_entries_report.html:119 -#: app/templates/reports/unpaid_hours_report.html:123 -#: app/templates/tasks/view.html:76 -#: app/templates/timer/_time_entries_list.html:40 -#: app/templates/timer/_time_entries_list.html:89 -#: app/templates/timer/calendar.html:876 -#: app/templates/timer/time_entries_export_pdf.html:18 -#: app/templates/timer/view_timer.html:41 -msgid "Duration" -msgstr "Duração" - -#: app/templates/admin/dashboard.html:352 -#: app/templates/client_portal/activity_feed.html:60 -#: app/templates/client_portal/approvals.html:90 -#: app/templates/client_portal/approvals.html:121 -#: app/templates/client_portal/approvals.html:143 -#: app/templates/client_portal/notifications.html:96 -#: app/templates/client_portal/project_comments.html:59 -#: app/templates/client_portal/quotes.html:51 -#: app/templates/client_portal/reports.html:102 -#: app/templates/client_portal/reports.html:230 -#: app/templates/client_portal/reports.html:236 -#: app/templates/client_portal/reports.html:250 -#: app/templates/client_portal/time_entries.html:90 -#: app/templates/client_portal/time_entries.html:101 -#: app/templates/client_portal/widgets/time_entries.html:37 -#: app/templates/client_portal/widgets/time_entries.html:45 -#: app/templates/clients/view.html:388 app/templates/main/dashboard.html:358 -#: app/templates/main/search.html:51 app/templates/timer/calendar.html:847 -#: app/templates/timer/calendar.html:851 app/templates/timer/calendar.html:864 -#: app/templates/timer/manual_entry.html:33 app/templates/user/profile.html:77 -msgid "N/A" -msgstr "N/A" - -#: app/templates/admin/email_support.html:6 -msgid "Email Configuration & Testing" -msgstr "Configuração e Teste de E- mail" - -#: app/templates/admin/email_support.html:7 -msgid "Configure and test email delivery" -msgstr "Configurar e testar a entrega de email" - -#: app/templates/admin/email_support.html:11 -msgid "Back to Admin" -msgstr "Voltar ao Administrador" - -#: app/templates/admin/email_support.html:23 -msgid "Configure email settings here to save them in the database." -msgstr "" -"Configurar as configurações de e- mail aqui para salvá- las no banco de " -"dados." - -#: app/templates/admin/email_support.html:31 -msgid "Enable Database Email Configuration" -msgstr "Activar a Configuração de E- mail da Base de Dados" - -#: app/templates/admin/email_support.html:37 -#: app/templates/admin/email_support.html:168 -msgid "Mail Server" -msgstr "Servidor de e- mail" - -#: app/templates/admin/email_support.html:43 -msgid "Mail Port" -msgstr "Porta de Correio" - -#: app/templates/admin/email_support.html:51 -#: app/templates/admin/email_support.html:190 -msgid "Use TLS" -msgstr "Usar TLS" - -#: app/templates/admin/email_support.html:55 -#: app/templates/admin/email_support.html:194 -msgid "Use SSL" -msgstr "Usar SSL" - -#: app/templates/admin/email_support.html:61 -#: app/templates/admin/email_support.html:176 -#: app/templates/admin/oidc_debug.html:134 -#: app/templates/admin/oidc_user_detail.html:23 -#: app/templates/auth/login.html:51 app/templates/auth/login.html:57 -#: app/templates/client_portal/login.html:48 -#: app/templates/client_portal/set_password.html:42 -#: app/templates/integrations/caldav_setup.html:77 -#: app/templates/integrations/manage.html:235 -#: app/templates/kiosk/login.html:116 app/templates/user/settings.html:49 -msgid "Username" -msgstr "Utilizador" - -#: app/templates/admin/email_support.html:68 app/templates/auth/login.html:52 -#: app/templates/auth/login.html:64 app/templates/auth/login.html:67 -#: app/templates/client_portal/login.html:54 -#: app/templates/client_portal/set_password.html:50 -#: app/templates/integrations/caldav_setup.html:93 -#: app/templates/integrations/manage.html:251 -#: app/templates/kiosk/login.html:136 app/templates/kiosk/login.html:146 -msgid "Password" -msgstr "Senha" - -#: app/templates/admin/email_support.html:71 -msgid "Leave empty to keep current" -msgstr "Deixar em branco para manter actual" - -#: app/templates/admin/email_support.html:76 -#: app/templates/admin/email_support.html:198 -msgid "Default Sender" -msgstr "Envio por Omissão" - -#: app/templates/admin/email_support.html:82 -msgid "Test recipient email" -msgstr "Testar o e- mail do destinatário" - -#: app/templates/admin/email_support.html:84 -msgid "Used to prefill “Send Test Email” and invoice template test sends." -msgstr "" -"Usado para pré-preencher “Enviar email de teste” e teste de modelo de fatura" -" envia." - -#: app/templates/admin/email_support.html:91 -#: app/templates/admin/email_support.html:376 -#: app/templates/integrations/activitywatch_setup.html:145 -#: app/templates/integrations/caldav_setup.html:199 -#: app/templates/integrations/manage.html:520 -msgid "Save Configuration" -msgstr "Salvar configuração" - -#: app/templates/admin/email_support.html:94 -#: app/templates/admin/pdf_layout.html:1715 -#: app/templates/admin/pdf_layout.html:7735 -#: app/templates/admin/quote_pdf_layout.html:1525 -#: app/templates/admin/quote_pdf_layout.html:7175 -#: app/templates/components/ui.html:838 -#: app/templates/integrations/health.html:107 -#: app/templates/integrations/view.html:150 -#: app/templates/projects/time_entries_overview.html:40 -#: app/templates/settings/keyboard_shortcuts.html:484 -#: app/templates/timer/bulk_entry.html:90 -msgid "Reset" -msgstr "Reiniciar" - -#: app/templates/admin/email_support.html:106 -msgid "Email Configuration Status" -msgstr "Estado da Configuração do E- mail" - -#: app/templates/admin/email_support.html:108 -#: app/templates/analytics/dashboard.html:20 -#: app/templates/analytics/dashboard_improved.html:22 -#: app/templates/budget/dashboard.html:18 -#: app/templates/components/persistent_chat_widget.html:34 -#: app/templates/gantt/view.html:46 -msgid "Refresh" -msgstr "Atualizar" - -#: app/templates/admin/email_support.html:118 -msgid "Email is configured!" -msgstr "O e- mail está configurado!" - -#: app/templates/admin/email_support.html:119 -msgid "Your email settings are properly set up." -msgstr "Suas configurações de e-mail estão configuradas corretamente." - -#: app/templates/admin/email_support.html:128 -msgid "Email is not configured" -msgstr "E- mail não está configurado" - -#: app/templates/admin/email_support.html:129 -msgid "Please configure email settings using the form above." -msgstr "" -"Por favor, configure as configurações de e- mail usando o formulário acima." +#~ msgid "User Management" +#~ msgstr "Gestão do Utilizador" -#: app/templates/admin/email_support.html:139 -msgid "Configuration Errors" -msgstr "Erros de Configuração" +#~ msgid "Manage Users" +#~ msgstr "Gerenciar Usuários" -#: app/templates/admin/email_support.html:153 -msgid "Configuration Warnings" -msgstr "Avisos de Configuração" +#~ msgid "Roles & Permissions" +#~ msgstr "Funções e Permissões" -#: app/templates/admin/email_support.html:165 -msgid "Current Email Settings" -msgstr "Configuração Actual do E- mail" +#~ msgid "PDF Templates" +#~ msgstr "Modelos PDF" -#: app/templates/admin/email_support.html:172 -#: app/templates/admin/ldap_setup_wizard.html:66 -#: app/templates/admin/settings.html:416 -msgid "Port" -msgstr "Porto" +#~ msgid "Invoice PDF" +#~ msgstr "PDF da factura" -#: app/templates/admin/email_support.html:180 -msgid "Password Set" -msgstr "Senha Definir" +#~ msgid "Quote PDF" +#~ msgstr "Citar PDF" -#: app/templates/admin/email_support.html:208 -#: app/templates/admin/email_support.html:225 -#: app/templates/admin/email_support.html:475 -msgid "Send Test Email" -msgstr "Enviar E- mail de Teste" +#~ msgid "System Settings" +#~ msgstr "Configuração do Sistema" -#: app/templates/admin/email_support.html:213 -msgid "Recipient Email Address" -msgstr "Endereço de E- mail do destinatário" +#~ msgid "Settings" +#~ msgstr "Configurações" -#: app/templates/admin/email_support.html:235 -msgid "Configuration Guide" -msgstr "Guia de configuração" +#~ msgid "Module Management" +#~ msgstr "Gerenciamento de Módulos" -#: app/templates/admin/email_support.html:238 -msgid "Common SMTP Providers" -msgstr "Frequentes SMTP Fornecedores" +#~ msgid "Email Configuration" +#~ msgstr "Configuração do E- mail" -#: app/templates/admin/email_support.html:240 -msgid "Requires app password" -msgstr "Requer senha do aplicativo" +#~ msgid "Email Templates" +#~ msgstr "Modelos de E- mail" -#: app/templates/admin/email_support.html:249 -msgid "Important Notes" -msgstr "Notas Importantes" +#~ msgid "OIDC Settings" +#~ msgstr "Configuração do OIDC" -#: app/templates/admin/email_support.html:252 -msgid "Gmail requires an App Password if 2FA is enabled" -msgstr "O Gmail requer uma senha do aplicativo se o 2FA estiver habilitado" +#~ msgid "Security & Access" +#~ msgstr "Segurança e Acesso" -#: app/templates/admin/email_support.html:253 -msgid "Restart the application after changing email settings" -msgstr "Reiniciar o aplicativo após alterar as configurações de e- mail" +#~ msgid "API Tokens" +#~ msgstr "Tokens de API" -#: app/templates/admin/email_support.html:254 -msgid "Check firewall rules if emails are not sending" -msgstr "Verificar as regras do firewall se os e- mails não forem enviados" +#~ msgid "Audit Logs" +#~ msgstr "Registos de Auditoria" -#: app/templates/admin/email_support.html:255 -msgid "" -"For production, use a dedicated email service like SendGrid or Amazon SES" -msgstr "" -"Para produção, use um serviço de email dedicado como SendGrid ou Amazon SES" +#~ msgid "Data Management" +#~ msgstr "Gestão de Dados" -#: app/templates/admin/email_support.html:307 -msgid "password is set" -msgstr "a senha está definida" +#~ msgid "Expense Categories" +#~ msgstr "Categorias de Despesas" -#: app/templates/admin/email_support.html:310 -msgid "no password set" -msgstr "sem senha definida" +#~ msgid "Per Diem Rates" +#~ msgstr "Por Taxas Diem" -#: app/templates/admin/email_support.html:372 -msgid "Failed to save configuration. Please try again." -msgstr "Não foi possível gravar a configuração. Por favor, tente novamente." +#~ msgid "Custom Fields" +#~ msgstr "Campos Personalizados" -#: app/templates/admin/email_support.html:390 -#: app/templates/admin/email_support.html:489 -msgid "Success!" -msgstr "Sucesso!" +#~ msgid "Link Templates" +#~ msgstr "Modelos de Ligação" -#: app/templates/admin/email_support.html:428 -msgid "Failed to refresh status. Please try again." -msgstr "Não foi possível actualizar o estado. Por favor, tente novamente." +#~ msgid "System Maintenance" +#~ msgstr "Manutenção do Sistema" -#: app/templates/admin/email_support.html:443 -msgid "Please enter a valid email address" -msgstr "Digite um endereço de e- mail válido" +#~ msgid "System Info" +#~ msgstr "Informações do Sistema" -#: app/templates/admin/email_support.html:449 -msgid "Sending..." -msgstr "Enviando..." +#~ msgid "Backups" +#~ msgstr "Backups" -#: app/templates/admin/email_support.html:471 -msgid "Failed to send test email. Please check your configuration." -msgstr "" -"Não foi possível enviar o e- mail de teste. Por favor, verifique sua " -"configuração." - -#: app/templates/admin/ldap_setup_wizard.html:4 -#: app/templates/admin/ldap_setup_wizard.html:10 -#: app/templates/admin/ldap_setup_wizard.html:15 -msgid "LDAP Setup Wizard" -msgstr "Assistente de Configuração LDAP" - -#: app/templates/admin/ldap_setup_wizard.html:16 -msgid "Guided configuration for LDAP authentication (environment variables)" -msgstr "Configuração guiada para autenticação LDAP (variáveis de ambiente)" - -#: app/templates/admin/ldap_setup_wizard.html:31 -msgid "Server" -msgstr "Servidor" - -#: app/templates/admin/ldap_setup_wizard.html:36 -msgid "Bind" -msgstr "Encadernação" - -#: app/templates/admin/ldap_setup_wizard.html:41 -#: app/templates/admin/roles/list.html:94 -#: app/templates/components/activity_feed_widget.html:47 -msgid "Users" -msgstr "Utilizadores" - -#: app/templates/admin/ldap_setup_wizard.html:46 -msgid "Groups" -msgstr "Grupos" - -#: app/templates/admin/ldap_setup_wizard.html:51 -#: app/templates/admin/oidc_setup_wizard.html:46 -msgid "Finalize" -msgstr "Finalizar" - -#: app/templates/admin/ldap_setup_wizard.html:57 -msgid "Step 1: Server and TLS" -msgstr "Passo 1: Servidor e TLS" - -#: app/templates/admin/ldap_setup_wizard.html:60 -msgid "LDAP host" -msgstr "Máquina LDAP" - -#: app/templates/admin/ldap_setup_wizard.html:73 -msgid "Use SSL (LDAPS)" -msgstr "Usar SSL (LDAPS)" - -#: app/templates/admin/ldap_setup_wizard.html:77 -msgid "StartTLS" -msgstr "StartTLS" - -#: app/templates/admin/ldap_setup_wizard.html:81 -msgid "Connection timeout (seconds)" -msgstr "Tempo- limite da ligação (segundos)" - -#: app/templates/admin/ldap_setup_wizard.html:86 -msgid "TLS CA certificate file" -msgstr "Ficheiro de certificado TLS CA" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -#: app/templates/admin/integrations/setup.html:100 -#: app/templates/admin/ldap_setup_wizard.html:86 -#: app/templates/admin/ldap_setup_wizard.html:127 -#: app/templates/admin/ldap_setup_wizard.html:167 -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/oidc_setup_wizard.html:193 -#: app/templates/admin/oidc_setup_wizard.html:206 -#: app/templates/admin/oidc_setup_wizard.html:251 -#: app/templates/admin/salesman_email_mappings.html:124 -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/activitywatch_setup.html:100 -#: app/templates/integrations/caldav_setup.html:60 -#: app/templates/integrations/caldav_setup.html:130 -#: app/templates/integrations/manage.html:151 -#: app/templates/integrations/wizard_asana.html:65 -#: app/templates/integrations/wizard_github.html:50 -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:81 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/integrations/wizard_jira.html:86 -#: app/templates/integrations/wizard_microsoft_teams.html:18 -#: app/templates/integrations/wizard_outlook_calendar.html:18 -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -#: app/templates/setup/initial_setup.html:152 -#: app/templates/setup/initial_setup.html:156 -#: app/templates/setup/initial_setup.html:202 -msgid "optional" -msgstr "opcional" - -#: app/templates/admin/ldap_setup_wizard.html:95 -msgid "Step 2: Service bind account" -msgstr "Passo 2: Serviço vincular conta" - -#: app/templates/admin/ldap_setup_wizard.html:98 -msgid "Bind DN" -msgstr "Ligar DN" - -#: app/templates/admin/ldap_setup_wizard.html:104 -msgid "Bind password" -msgstr "Senha de ligação" - -#: app/templates/admin/ldap_setup_wizard.html:107 -msgid "Enter bind password" -msgstr "Digite a senha de vinculação" - -#: app/templates/admin/ldap_setup_wizard.html:110 -msgid "" -"A bind password is already set in the environment. Enter it again here to " -"test or generate configuration." -msgstr "" -"Uma senha de vinculação já está definida no ambiente. Digite- o novamente " -"aqui para testar ou gerar configuração." +#~ msgid "Telemetry" +#~ msgstr "Telemetria" -#: app/templates/admin/ldap_setup_wizard.html:118 -msgid "Step 3: User directory and attributes" -msgstr "Passo 3: Directório do usuário e atributos" +#~ msgid "About" +#~ msgstr "Sobre" -#: app/templates/admin/ldap_setup_wizard.html:121 -#: app/templates/admin/settings.html:425 -msgid "Base DN" -msgstr "DN base" +#~ msgid "Help" +#~ msgstr "Ajuda" -#: app/templates/admin/ldap_setup_wizard.html:127 -msgid "User subtree (relative to base)" -msgstr "Sub- árvore do utilizador (relativo à base)" +#~ msgid "Open support options" +#~ msgstr "Abrir opções de suporte" -#: app/templates/admin/ldap_setup_wizard.html:133 -msgid "User object class" -msgstr "Classe de objeto do usuário" +#~ msgid "Support TimeTracker" +#~ msgstr "Monitor de Tempo de Suporte" -#: app/templates/admin/ldap_setup_wizard.html:140 -msgid "Login attribute" -msgstr "Atributo de login" +#~ msgid "Open sidebar" +#~ msgstr "Abrir a barra lateral" -#: app/templates/admin/ldap_setup_wizard.html:145 -msgid "Email attribute" -msgstr "Atributo de e- mail" +#~ msgid "Search" +#~ msgstr "Pesquisar" -#: app/templates/admin/ldap_setup_wizard.html:150 -msgid "First name attribute" -msgstr "Atributo do primeiro nome" +#~ msgid "Theme" +#~ msgstr "Tema" -#: app/templates/admin/ldap_setup_wizard.html:155 -msgid "Last name attribute" -msgstr "Atributo de sobrenome" +#~ msgid "Theme options" +#~ msgstr "Opções do tema" -#: app/templates/admin/ldap_setup_wizard.html:164 -msgid "Step 4: Groups and authentication mode" -msgstr "Passo 4: Grupos e modo de autenticação" +#~ msgid "Light" +#~ msgstr "Luz" -#: app/templates/admin/ldap_setup_wizard.html:167 -msgid "Group subtree (relative to base)" -msgstr "Subárvore do grupo (relativo à base)" +#~ msgid "Dark" +#~ msgstr "Escuro" -#: app/templates/admin/ldap_setup_wizard.html:173 -msgid "Group object class" -msgstr "Classe de objeto de grupo" +#~ msgid "System" +#~ msgstr "Sistema" -#: app/templates/admin/ldap_setup_wizard.html:179 -#: app/templates/admin/settings.html:437 -msgid "Admin group (CN)" -msgstr "Grupo de administração (CN)" +#~ msgid "Open chat" +#~ msgstr "Abrir conversa" -#: app/templates/admin/ldap_setup_wizard.html:185 -#: app/templates/admin/settings.html:441 -msgid "Required group (CN)" -msgstr "Grupo necessário (CN)" +#~ msgid "Start Timer" +#~ msgstr "Iniciar o Temporizador" -#: app/templates/admin/ldap_setup_wizard.html:190 -msgid "AUTH_METHOD" -msgstr "METODO DA AUTH" +#~ msgid "Stop" +#~ msgstr "Parar" -#: app/templates/admin/ldap_setup_wizard.html:193 -msgid "LDAP only" -msgstr "Apenas LDAP" +#~ msgid "AI Helper" +#~ msgstr "Ajudador de IA" -#: app/templates/admin/ldap_setup_wizard.html:194 -msgid "All (local + OIDC + LDAP)" -msgstr "Todos (local + OIDC + LDAP)" +#~ msgid "Change language" +#~ msgstr "Mudar idioma" -#: app/templates/admin/ldap_setup_wizard.html:197 -msgid "" -"Use \"All\" only if you also configure local and OIDC sign-in; " -"AUTH_METHOD=all enables every method." -msgstr "" -"Use \"Tudo\" apenas se você também configurar o login local e OIDC; AUTH " -"METHOD=all habilita todos os métodos." +#~ msgid "Language" +#~ msgstr "Língua" -#: app/templates/admin/ldap_setup_wizard.html:204 -msgid "Step 5: Test and generate configuration" -msgstr "Passo 5: Teste e gere a configuração" +#~ msgid "User menu" +#~ msgstr "Menu do usuário" -#: app/templates/admin/ldap_setup_wizard.html:209 -msgid "" -"Test the service bind and user search, then generate .env snippets to copy " -"into your deployment." -msgstr "" -"Teste o serviço vincular e pesquisa do usuário, em seguida, gerar snippets " -".env para copiar em sua implantação." +#~ msgid "Supporter" +#~ msgstr "Apoiador" -#: app/templates/admin/ldap_setup_wizard.html:214 -msgid "Test connection" -msgstr "Conexão de teste" +#~ msgid "Guest" +#~ msgstr "Convidado" -#: app/templates/admin/ldap_setup_wizard.html:221 -msgid "" -"Generate environment variable lines for your .env file or Docker Compose." -msgstr "" -"Gere linhas variáveis de ambiente para seu arquivo .env ou Docker Compose." - -#: app/templates/admin/ldap_setup_wizard.html:225 -msgid "Generate configuration" -msgstr "Gerar a configuração" - -#: app/templates/admin/ldap_setup_wizard.html:230 -msgid "Environment variables (.env)" -msgstr "Variáveis de ambiente (.env)" - -#: app/templates/admin/ldap_setup_wizard.html:233 -#: app/templates/admin/ldap_setup_wizard.html:242 -#: app/templates/admin/oidc_setup_wizard.html:283 -#: app/templates/admin/oidc_setup_wizard.html:292 -#: app/templates/admin/settings.html:180 -msgid "Copy" -msgstr "Copiar" - -#: app/templates/admin/ldap_setup_wizard.html:239 -#: app/templates/admin/oidc_setup_wizard.html:289 -msgid "Docker Compose" -msgstr "Acoplamento Compor" - -#: app/templates/admin/ldap_setup_wizard.html:250 -msgid "" -"Add these variables to your environment or Compose file, restart the " -"application, then confirm under Settings → LDAP." -msgstr "" -"Adicione essas variáveis ao seu ambiente ou Compor arquivo, reinicie o " -"aplicativo e, em seguida, confirme em Configurações → LDAP." - -#: app/templates/admin/ldap_setup_wizard.html:258 -#: app/templates/admin/oidc_setup_wizard.html:309 -#: app/templates/components/ui.html:85 -#: app/templates/integrations/wizard_base.html:48 -#: app/templates/issues/list.html:152 app/templates/main/search.html:95 -#: app/templates/project_templates/list.html:100 -#: app/templates/reports/time_entries_report.html:148 -#: app/templates/tasks/my_tasks.html:358 -#: app/templates/timer/_time_entries_list.html:229 -msgid "Previous" -msgstr "Anterior" - -#: app/templates/admin/ldap_setup_wizard.html:262 -#: app/templates/admin/oidc_setup_wizard.html:313 -#: app/templates/components/ui.html:99 -#: app/templates/integrations/wizard_base.html:52 -#: app/templates/issues/list.html:159 app/templates/main/search.html:105 -#: app/templates/project_templates/list.html:108 -#: app/templates/reports/time_entries_report.html:151 -#: app/templates/setup/initial_setup.html:285 -#: app/templates/tasks/my_tasks.html:384 -#: app/templates/timer/_time_entries_list.html:247 -msgid "Next" -msgstr "Próxima" - -#: app/templates/admin/modules.html:39 -msgid "Feature Module Load Status" -msgstr "Status de carga do módulo de recurso" - -#: app/templates/admin/modules.html:41 -msgid "" -"This reflects which optional feature modules successfully loaded when the " -"server started." -msgstr "" -"Isso reflete quais módulos de recursos opcionais carregados com sucesso " -"quando o servidor começou." - -#: app/templates/admin/modules.html:45 -msgid "Optional loaded:" -msgstr "Carregado opcional:" - -#: app/templates/admin/modules.html:47 -msgid "Attention needed" -msgstr "Atenção necessária" - -#: app/templates/admin/modules.html:56 -msgid "Module" -msgstr "Módulo" - -#: app/templates/admin/modules.html:57 -msgid "Blueprint" -msgstr "Planta" - -#: app/templates/admin/custom_field_definitions/list.html:28 -#: app/templates/admin/custom_field_definitions/list.html:52 -#: app/templates/admin/link_templates/list.html:29 -#: app/templates/admin/link_templates/list.html:56 -#: app/templates/admin/modules.html:58 app/templates/admin/oidc_debug.html:29 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/pdf_layout.html:1828 -#: app/templates/admin/quote_pdf_layout.html:1638 -#: app/templates/admin/salesman_email_mappings.html:41 -#: app/templates/admin/salesman_email_mappings.html:212 -#: app/templates/admin/webhooks/list.html:27 -#: app/templates/admin/webhooks/list.html:58 -#: app/templates/admin/webhooks/view.html:32 -#: app/templates/admin/webhooks/view.html:102 -#: app/templates/admin/webhooks/view.html:112 -#: app/templates/approvals/list.html:99 app/templates/approvals/view.html:74 -#: app/templates/budget/dashboard.html:121 -#: app/templates/budget/project_detail.html:70 -#: app/templates/client_portal/invoice_detail.html:36 -#: app/templates/client_portal/invoices.html:75 -#: app/templates/client_portal/issue_detail.html:39 -#: app/templates/client_portal/quote_detail.html:39 -#: app/templates/client_portal/quotes.html:30 -#: app/templates/client_portal/quotes.html:55 -#: app/templates/client_portal/reports.html:90 -#: app/templates/contacts/communication_form.html:57 -#: app/templates/deals/activity_form.html:34 app/templates/deals/list.html:22 -#: app/templates/deals/view.html:53 app/templates/expenses/dashboard.html:203 -#: app/templates/expenses/list.html:316 -#: app/templates/integrations/view.html:20 -#: app/templates/integrations/wizard_trello.html:71 -#: app/templates/inventory/purchase_orders/list.html:21 -#: app/templates/inventory/purchase_orders/list.html:54 -#: app/templates/inventory/purchase_orders/list.html:74 -#: app/templates/inventory/purchase_orders/view.html:34 -#: app/templates/inventory/reports/turnover.html:49 -#: app/templates/inventory/reports/turnover.html:64 -#: app/templates/inventory/reservations/list.html:20 -#: app/templates/inventory/reservations/list.html:44 -#: app/templates/inventory/reservations/list.html:78 -#: app/templates/inventory/stock_items/list.html:55 -#: app/templates/inventory/stock_items/list.html:87 -#: app/templates/inventory/stock_items/view.html:100 -#: app/templates/inventory/stock_items/view.html:181 -#: app/templates/inventory/stock_items/view.html:202 -#: app/templates/inventory/stock_levels/warehouse.html:52 -#: app/templates/inventory/stock_levels/warehouse.html:71 -#: app/templates/inventory/suppliers/list.html:25 -#: app/templates/inventory/suppliers/list.html:46 -#: app/templates/inventory/suppliers/list.html:74 -#: app/templates/inventory/suppliers/view.html:30 -#: app/templates/inventory/warehouses/list.html:26 -#: app/templates/inventory/warehouses/list.html:47 -#: app/templates/inventory/warehouses/view.html:30 -#: app/templates/invoices/edit.html:309 -#: app/templates/invoices/pdf_default.html:59 -#: app/templates/issues/edit.html:37 app/templates/issues/list.html:36 -#: app/templates/issues/list.html:96 app/templates/issues/list.html:113 -#: app/templates/issues/view.html:95 app/templates/kanban/columns.html:52 -#: app/templates/leads/activity_form.html:34 app/templates/leads/form.html:60 -#: app/templates/leads/list.html:26 app/templates/leads/list.html:53 -#: app/templates/leads/list.html:73 app/templates/leads/view.html:81 -#: app/templates/main/help.html:198 app/templates/mileage/gps.html:44 -#: app/templates/payment_gateways/list.html:27 -#: app/templates/payment_gateways/list.html:41 -#: app/templates/payments/list.html:159 -#: app/templates/projects/_kanban_tailwind.html:30 -#: app/templates/projects/_projects_list.html:86 -#: app/templates/projects/goods.html:44 app/templates/projects/goods.html:66 -#: app/templates/projects/list.html:167 app/templates/projects/view.html:275 -#: app/templates/projects/view.html:430 app/templates/projects/view.html:449 -#: app/templates/quotes/_quotes_list.html:37 -#: app/templates/quotes/_quotes_list.html:60 app/templates/quotes/list.html:78 -#: app/templates/quotes/pdf_default.html:61 app/templates/quotes/view.html:68 -#: app/templates/recurring_invoices/list.html:28 -#: app/templates/recurring_invoices/list.html:52 -#: app/templates/recurring_invoices/view.html:110 -#: app/templates/recurring_tasks/list.html:34 -#: app/templates/recurring_tasks/list.html:71 -#: app/templates/reports/scheduled.html:30 -#: app/templates/reports/scheduled.html:68 -#: app/templates/tasks/_kanban.html:1227 -#: app/templates/tasks/_tasks_list.html:68 app/templates/tasks/edit.html:78 -#: app/templates/tasks/my_tasks.html:128 -#: app/templates/timer/_time_entries_list.html:44 -#: app/templates/timer/_time_entries_list.html:161 -#: app/templates/timer/calendar.html:857 -#: app/templates/timer/time_entries_overview.html:196 -#: app/templates/weekly_goals/edit.html:83 -#: app/templates/weekly_goals/view.html:55 -#: app/templates/workforce/dashboard.html:64 -#: app/templates/workforce/dashboard.html:175 app/utils/pdf_generator.py:1129 -msgid "Status" -msgstr "Estado" - -#: app/templates/admin/modules.html:59 app/templates/admin/oidc_debug.html:157 -#: app/templates/admin/webhooks/view.html:25 -#: app/templates/budget/dashboard.html:172 -#: app/templates/client_portal/error.html:32 -#: app/templates/client_portal/issue_detail.html:36 -#: app/templates/integrations/view.html:96 app/templates/issues/view.html:92 -#: app/templates/projects/view.html:234 -#: app/templates/timer/manual_entry.html:136 -msgid "Details" -msgstr "Detalhes" - -#: app/templates/admin/modules.html:70 -msgid "Loaded" -msgstr "Carregado" - -#: app/templates/admin/modules.html:74 -#: app/templates/admin/webhooks/list.html:69 -#: app/templates/admin/webhooks/view.html:80 -#: app/templates/admin/webhooks/view.html:116 -#: app/templates/weekly_goals/edit.html:90 -#: app/templates/weekly_goals/index.html:51 -#: app/templates/weekly_goals/index.html:180 -#: app/templates/weekly_goals/view.html:71 app/utils/i18n_helpers.py:223 -#: app/utils/i18n_helpers.py:235 app/utils/i18n_helpers.py:246 -#: app/utils/i18n_helpers.py:257 -msgid "Failed" -msgstr "Falhou" - -#: app/templates/admin/modules.html:82 app/templates/main/dashboard.html:290 -msgid "—" -msgstr "—" - -#: app/templates/admin/modules.html:101 -msgid "Client Lock (optional)" -msgstr "Bloqueio do Cliente (opcional)" - -#: app/templates/admin/modules.html:103 -msgid "" -"If set, all client selectors across the app will auto-select this client and" -" prevent changes." -msgstr "" -"Se estiver definido, todos os seletores de clientes em todo o aplicativo " -"selecionarão automaticamente este cliente e evitarão alterações." +#~ msgid "My Profile" +#~ msgstr "Meu Perfil" -#: app/templates/admin/modules.html:106 -msgid "Locked Client" -msgstr "Cliente bloqueado" +#~ msgid "My Settings" +#~ msgstr "Minhas Configurações" -#: app/templates/admin/modules.html:108 -msgid "None (no lock)" -msgstr "Nenhuma (sem bloqueio)" +#~ msgid "License" +#~ msgstr "Licença" -#: app/templates/admin/modules.html:120 -msgid "Module Visibility" -msgstr "Visibilidade do Módulo" +#~ msgid "Donate or get a supporter license" +#~ msgstr "Doar ou obter uma licença de suporte" -#: app/templates/admin/modules.html:122 -msgid "" -"Disable modules to hide them from all users. Disabled modules will not " -"appear in the sidebar. Core modules (Dashboard, Projects, Timer, etc.) are " -"always enabled and cannot be disabled." -msgstr "" -"Desactivar os módulos para os esconder de todos os utilizadores. Os módulos " -"desativados não aparecerão na barra lateral. Os módulos principais " -"(Dashboard, Projects, Timer, etc.) estão sempre habilitados e não podem ser " -"desativados." - -#: app/templates/admin/modules.html:127 app/templates/admin/modules.html:229 -msgid "Enable All" -msgstr "Activar Tudo" - -#: app/templates/admin/modules.html:130 app/templates/admin/modules.html:233 -msgid "Disable All" -msgstr "Desabilitar Tudo" - -#: app/templates/admin/modules.html:148 -msgid "Total Modules:" -msgstr "Módulos totais:" - -#: app/templates/admin/modules.html:152 -msgid "Enabled:" -msgstr "Activado:" - -#: app/templates/admin/modules.html:156 -msgid "Disabled:" -msgstr "Desactivado:" - -#: app/templates/admin/modules.html:165 -msgid "Search modules..." -msgstr "Procurar módulos..." - -#: app/templates/admin/modules.html:169 -#: app/templates/inventory/reports/valuation.html:32 -#: app/templates/inventory/stock_items/list.html:27 -#: app/templates/inventory/stock_levels/list.html:31 -#: app/templates/inventory/stock_levels/warehouse.html:23 -#: app/templates/project_templates/list.html:24 -msgid "All Categories" -msgstr "Todas as categorias" - -#: app/templates/admin/modules.html:173 app/templates/admin/modules.html:215 -#: app/templates/main/about.html:32 app/templates/main/help.html:28 -#: app/templates/main/help.html:190 -msgid "Project Management" -msgstr "Gestão de Projetos" - -#: app/templates/admin/modules.html:186 -msgid "Show disabled only" -msgstr "Mostrar apenas desactivado" - -#: app/templates/admin/modules.html:190 -msgid "Show with dependencies" -msgstr "Mostrar com dependências" - -#: app/templates/admin/modules.html:200 -msgid "Warning: Disabling these modules will also affect dependent modules:" -msgstr "" -"Aviso: A desativação destes módulos também afetará os módulos dependentes:" +#~ msgid "Logout" +#~ msgstr "Sair" -#: app/templates/admin/modules.html:263 app/templates/admin/oidc_debug.html:32 -#: app/templates/admin/settings.html:525 -#: app/templates/integrations/list.html:47 -#: app/templates/integrations/list.html:87 -msgid "Enabled" -msgstr "Activado" +#~ msgid "Enjoying TimeTracker?" +#~ msgstr "Gostando do TimeTracker?" -#: app/templates/admin/modules.html:265 app/templates/admin/oidc_debug.html:34 -#: app/templates/admin/settings.html:526 -msgid "Disabled" -msgstr "Desactivado" +#~ msgid "" +#~ "Support independent development — licenses " +#~ "are supporter badges, not paywalls." +#~ msgstr "" +#~ "Suporte ao desenvolvimento independente — " +#~ "as licenças são emblemas de suporte, " +#~ "não paywalls." -#: app/templates/admin/modules.html:274 -msgid "Depends on:" -msgstr "Depende de:" +#~ msgid "Support / Get key" +#~ msgstr "Suporte / Obter chave" -#: app/templates/admin/modules.html:301 -msgid "" -"Disabling \"Reports\" hides the whole Reports submenu including Report " -"Builder and Scheduled Reports." -msgstr "" -"Desativar \"Relatórios\" esconde todo o submenu Relatórios, incluindo o " -"Construtor de Relatórios e Relatórios Agendados." - -#: app/templates/admin/modules.html:305 -#: app/templates/auth/edit_profile.html:81 -#: app/templates/client_notes/edit.html:86 app/templates/comments/edit.html:80 -#: app/templates/invoices/edit.html:287 app/templates/issues/edit.html:83 -#: app/templates/kanban/edit_column.html:91 -#: app/templates/projects/edit.html:129 -#: app/templates/projects/edit_good.html:69 -#: app/templates/timer/edit_timer.html:393 -#: app/templates/timer/edit_timer.html:514 -#: app/templates/weekly_goals/edit.html:122 -msgid "Save Changes" -msgstr "Salvar alterações" - -#: app/templates/admin/modules.html:310 -msgid "No modules available." -msgstr "Nenhum módulo disponível." - -#: app/templates/admin/modules.html:320 -#: app/templates/contacts/communication_form.html:33 -#: app/templates/deals/activity_form.html:27 -#: app/templates/leads/activity_form.html:27 -msgid "Note" -msgstr "Nota" - -#: app/templates/admin/modules.html:322 -msgid "All modules are enabled by default." -msgstr "Todos os módulos estão habilitados por padrão." - -#: app/templates/admin/modules.html:323 -msgid "" -"Core modules cannot be disabled as they are required for the application to " -"function." -msgstr "" -"Os módulos principais não podem ser desativados, pois são necessários para " -"que a aplicação funcione." +#~ msgid "Buy Me a Coffee" +#~ msgstr "Compre-me um café" -#: app/templates/admin/modules.html:324 -msgid "" -"Disabling a module affects all users system-wide. Disabled modules will not " -"appear in the navigation sidebar." -msgstr "" -"Desativar um módulo afeta todos os usuários em todo o sistema. Os módulos " -"desativados não aparecerão na barra lateral de navegação." +#~ msgid "PayPal" +#~ msgstr "PayPal" -#: app/templates/admin/modules.html:538 -msgid "Enable all modules?" -msgstr "Activar todos os módulos?" +#~ msgid "Support / License" +#~ msgstr "Suporte / Licença" -#: app/templates/admin/modules.html:547 -msgid "Disable all modules? This may affect functionality." -msgstr "Desactivar todos os módulos? Isso pode afetar a funcionalidade." +#~ msgid "Dismiss" +#~ msgstr "Licenciamento" -#: app/templates/admin/modules.html:573 -msgid "Disable" -msgstr "Desactivar" +#~ msgid "Built by an independent developer" +#~ msgstr "Construído por um desenvolvedor independente" -#: app/templates/admin/modules.html:573 -msgid "module(s) in this category?" -msgstr "módulo( s) nesta categoria?" +#~ msgid "Software update" +#~ msgstr "Actualização de software" -#: app/templates/admin/modules.html:618 -msgid "Validation errors:" -msgstr "Erros de validação:" +#~ msgid "Read more" +#~ msgstr "Ler mais" -#: app/templates/admin/oidc_debug.html:4 -#: app/templates/admin/oidc_debug.html:14 -msgid "OIDC Debug Dashboard" -msgstr "Painel de depuração do OIDC" +#~ msgid "View Release" +#~ msgstr "Ver Versão" -#: app/templates/admin/oidc_debug.html:15 -msgid "Inspect configuration, provider metadata and OIDC users" -msgstr "" -"Inspecione a configuração, os metadados do provedor e os usuários do OIDC" - -#: app/templates/admin/oidc_debug.html:17 -#: app/templates/admin/oidc_setup_wizard.html:10 -#: app/templates/integrations/list.html:58 -#: app/templates/integrations/list.html:98 -#: app/templates/integrations/list.html:155 -#: app/templates/integrations/wizard_base.html:10 -msgid "Setup Wizard" -msgstr "Assistente de Configuração" - -#: app/templates/admin/oidc_debug.html:17 -msgid "Test Configuration" -msgstr "Configuração do Teste" - -#: app/templates/admin/oidc_debug.html:25 -msgid "OIDC Configuration" -msgstr "Configuração do OIDC" - -#: app/templates/admin/oidc_debug.html:39 -msgid "Auth Method" -msgstr "Método de autenticação" - -#: app/templates/admin/oidc_debug.html:43 -msgid "Issuer" -msgstr "Emissor" - -#: app/templates/admin/oidc_debug.html:44 -#: app/templates/admin/oidc_debug.html:48 -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/integrations/health.html:86 -#: app/templates/integrations/list.html:91 -msgid "Not configured" -msgstr "Não configurado" - -#: app/templates/admin/oidc_debug.html:47 -#: app/templates/admin/oidc_setup_wizard.html:70 -#: app/templates/payment_gateways/create.html:60 -msgid "Client ID" -msgstr "ID do cliente" - -#: app/templates/admin/oidc_debug.html:51 -#: app/templates/admin/oidc_setup_wizard.html:83 -#: app/templates/payment_gateways/create.html:64 -msgid "Client Secret" -msgstr "Segredo do Cliente" - -#: app/templates/admin/oidc_debug.html:52 -msgid "Set" -msgstr "Definir" - -#: app/templates/admin/oidc_debug.html:52 -#: app/templates/admin/oidc_user_detail.html:39 -#: app/templates/admin/oidc_user_detail.html:40 -#: app/templates/integrations/wizard_asana.html:191 -#: app/templates/integrations/wizard_jira.html:255 -#: app/templates/integrations/wizard_quickbooks.html:224 -#: app/templates/integrations/wizard_xero.html:207 -msgid "Not set" -msgstr "Não definido" - -#: app/templates/admin/oidc_debug.html:55 -#: app/templates/admin/oidc_setup_wizard.html:238 -msgid "Redirect URI" -msgstr "Redirecionar URI" - -#: app/templates/admin/oidc_debug.html:56 -#: app/templates/admin/oidc_debug.html:75 -msgid "Auto-generated" -msgstr "Gerado automaticamente" - -#: app/templates/admin/oidc_debug.html:59 -#: app/templates/admin/oidc_debug.html:109 -#: app/templates/admin/oidc_setup_wizard.html:225 -msgid "Scopes" -msgstr "Âmbito de aplicação" - -#: app/templates/admin/oidc_debug.html:67 -msgid "Claim Mapping" -msgstr "Mapeamento de Reclamações" - -#: app/templates/admin/oidc_debug.html:69 -#: app/templates/admin/oidc_setup_wizard.html:141 -msgid "Username Claim" -msgstr "Reclamação de Nome de Utilizador" - -#: app/templates/admin/oidc_debug.html:70 -#: app/templates/admin/oidc_setup_wizard.html:154 -msgid "Email Claim" -msgstr "Pedido de E- mail" - -#: app/templates/admin/oidc_debug.html:71 -#: app/templates/admin/oidc_setup_wizard.html:167 -msgid "Full Name Claim" -msgstr "Alegação de nome completo" - -#: app/templates/admin/oidc_debug.html:72 -#: app/templates/admin/oidc_setup_wizard.html:180 -msgid "Groups Claim" -msgstr "Alegação de grupos" - -#: app/templates/admin/oidc_debug.html:73 -#: app/templates/admin/oidc_setup_wizard.html:193 -msgid "Admin Group" -msgstr "Grupo de administração" - -#: app/templates/admin/oidc_debug.html:74 -#: app/templates/admin/oidc_setup_wizard.html:206 -msgid "Admin Emails" -msgstr "E- mails de administração" - -#: app/templates/admin/oidc_debug.html:75 -msgid "Post-Logout URI" -msgstr "URI pós- encerramento" - -#: app/templates/admin/oidc_debug.html:83 -#: app/templates/admin/oidc_setup_wizard.html:128 -msgid "Provider Metadata" -msgstr "Metadados do Fornecedor" - -#: app/templates/admin/oidc_debug.html:86 -msgid "Error loading metadata:" -msgstr "Erro ao carregar metadados:" - -#: app/templates/admin/oidc_debug.html:89 -#: app/templates/admin/oidc_debug.html:118 -msgid "Discovery endpoint:" -msgstr "Descoberta:" - -#: app/templates/admin/oidc_debug.html:93 -msgid "Successfully loaded provider metadata" -msgstr "Metadados do provedor carregados com sucesso" - -#: app/templates/admin/oidc_debug.html:97 -msgid "Endpoints" -msgstr "Pontos finais" - -#: app/templates/admin/oidc_debug.html:99 -msgid "Authorization" -msgstr "Autorização" - -#: app/templates/admin/oidc_debug.html:100 -msgid "Token" -msgstr "Token" - -#: app/templates/admin/oidc_debug.html:101 -msgid "UserInfo" -msgstr "Informações do Usuário" - -#: app/templates/admin/oidc_debug.html:102 -msgid "End Session" -msgstr "Fim da Sessão" - -#: app/templates/admin/oidc_debug.html:103 -msgid "JWKS URI" -msgstr "JWKS URI" - -#: app/templates/admin/oidc_debug.html:107 -msgid "Supported Features" -msgstr "Características Suportadas" - -#: app/templates/admin/oidc_debug.html:110 -msgid "Response Types" -msgstr "Tipos de resposta" - -#: app/templates/admin/oidc_debug.html:111 -msgid "Grant Types" -msgstr "Tipos de subvenções" - -#: app/templates/admin/oidc_debug.html:112 -msgid "Auth Methods" -msgstr "Métodos de autenticação" - -#: app/templates/admin/oidc_debug.html:113 -#: app/templates/admin/oidc_setup_wizard.html:36 -msgid "Claims" -msgstr "Alegações" - -#: app/templates/admin/oidc_debug.html:121 -msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." -msgstr "" -"Os metadados do fornecedor não foram carregados. Clique em \"Testar " -"Configuração\" para obter." - -#: app/templates/admin/oidc_debug.html:135 -#: app/templates/admin/oidc_user_detail.html:24 -#: app/templates/admin/pdf_layout.html:1796 -#: app/templates/admin/quote_pdf_layout.html:1606 -#: app/templates/clients/create.html:47 app/templates/clients/edit.html:54 -#: app/templates/contacts/communication_form.html:30 -#: app/templates/contacts/form.html:37 app/templates/contacts/list.html:29 -#: app/templates/contacts/list.html:47 app/templates/contacts/view.html:33 -#: app/templates/deals/activity_form.html:29 -#: app/templates/inventory/suppliers/form.html:40 -#: app/templates/inventory/suppliers/list.html:44 -#: app/templates/inventory/suppliers/list.html:60 -#: app/templates/inventory/suppliers/view.html:53 -#: app/templates/invoices/pdf_default.html:45 -#: app/templates/leads/activity_form.html:29 app/templates/leads/form.html:40 -#: app/templates/leads/list.html:52 app/templates/leads/list.html:66 -#: app/templates/leads/view.html:49 app/templates/projects/create.html:292 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:147 app/utils/pdf_generator.py:1117 -msgid "Email" -msgstr "E- mail" - -#: app/templates/admin/oidc_debug.html:136 -#: app/templates/admin/oidc_user_detail.html:25 -#: app/templates/user/settings.html:58 -msgid "Full Name" -msgstr "Nome completo" - -#: app/templates/admin/oidc_debug.html:137 -#: app/templates/admin/oidc_user_detail.html:26 -#: app/templates/contacts/form.html:62 app/templates/contacts/list.html:31 -#: app/templates/contacts/list.html:55 app/templates/contacts/view.html:59 -msgid "Role" -msgstr "Papel" - -#: app/templates/admin/oidc_debug.html:138 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/auth/profile.html:58 -msgid "Last Login" -msgstr "Última sessão" - -#: app/templates/admin/oidc_debug.html:139 -msgid "OIDC Subject" -msgstr "Assunto do OIDC" - -#: app/templates/admin/custom_field_definitions/list.html:56 -#: app/templates/admin/link_templates/list.html:60 -#: app/templates/admin/oidc_debug.html:148 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/webhooks/list.html:62 -#: app/templates/admin/webhooks/view.html:37 -#: app/templates/calendar/integrations.html:40 -#: app/templates/clients/view.html:321 app/templates/integrations/view.html:25 -#: app/templates/inventory/stock_items/list.html:91 -#: app/templates/inventory/stock_items/view.html:105 -#: app/templates/inventory/suppliers/list.html:78 -#: app/templates/inventory/suppliers/view.html:35 -#: app/templates/inventory/warehouses/list.html:51 -#: app/templates/inventory/warehouses/view.html:35 -#: app/templates/kanban/columns.html:74 -#: app/templates/payment_gateways/list.html:45 -#: app/templates/projects/view.html:121 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:76 -#: app/templates/timer/calendar.html:975 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Inactive" -msgstr "Inativo" - -#: app/templates/admin/oidc_debug.html:153 -#: app/templates/admin/oidc_user_detail.html:31 -#: app/templates/integrations/manage.html:604 -msgid "Never" -msgstr "Nunca" - -#: app/templates/admin/oidc_debug.html:166 -msgid "No users have logged in via OIDC yet." -msgstr "Nenhum usuário fez login via OIDC ainda." - -#: app/templates/admin/oidc_debug.html:172 -msgid "Environment Variables Reference" -msgstr "Referência de Variáveis de Ambiente" - -#: app/templates/admin/oidc_debug.html:173 -msgid "Configure OIDC using these environment variables:" -msgstr "Configurar o OIDC usando estas variáveis de ambiente:" - -#: app/templates/admin/oidc_debug.html:178 -msgid "Variable" -msgstr "Variável" - -#: app/templates/admin/custom_field_definitions/form.html:36 -#: app/templates/admin/link_templates/form.html:30 -#: app/templates/admin/oidc_debug.html:179 -#: app/templates/admin/roles/form.html:47 -#: app/templates/admin/roles/list.html:92 -#: app/templates/admin/webhooks/form.html:29 -#: app/templates/calendar/event_detail.html:66 -#: app/templates/calendar/event_form.html:30 app/templates/chat/index.html:111 -#: app/templates/client_portal/approvals.html:151 -#: app/templates/client_portal/invoice_detail.html:57 -#: app/templates/client_portal/invoice_detail.html:66 -#: app/templates/client_portal/issue_detail.html:23 -#: app/templates/client_portal/new_issue.html:33 -#: app/templates/client_portal/quote_detail.html:57 -#: app/templates/client_portal/quote_detail.html:69 -#: app/templates/client_portal/quote_detail.html:78 -#: app/templates/client_portal/time_entries.html:67 -#: app/templates/client_portal/widgets/time_entries.html:24 -#: app/templates/clients/create.html:32 app/templates/clients/create.html:136 -#: app/templates/clients/edit.html:31 -#: app/templates/deals/activity_form.html:54 app/templates/deals/form.html:97 -#: app/templates/deals/view.html:105 -#: app/templates/inventory/purchase_orders/form.html:78 -#: app/templates/inventory/purchase_orders/form.html:147 -#: app/templates/inventory/purchase_orders/view.html:91 -#: app/templates/inventory/purchase_orders/view.html:110 -#: app/templates/inventory/stock_items/form.html:31 -#: app/templates/inventory/stock_items/view.html:45 -#: app/templates/inventory/suppliers/form.html:32 -#: app/templates/inventory/suppliers/view.html:41 -#: app/templates/invoices/edit.html:74 app/templates/invoices/edit.html:161 -#: app/templates/invoices/edit.html:176 app/templates/invoices/edit.html:233 -#: app/templates/invoices/edit.html:248 app/templates/invoices/edit.html:608 -#: app/templates/invoices/pdf_default.html:88 -#: app/templates/issues/edit.html:30 app/templates/issues/new.html:30 -#: app/templates/issues/view.html:31 app/templates/leads/activity_form.html:54 -#: app/templates/leads/convert_to_deal.html:54 -#: app/templates/main/help.html:197 -#: app/templates/project_templates/create.html:25 -#: app/templates/project_templates/edit.html:25 -#: app/templates/project_templates/view.html:30 -#: app/templates/projects/add_cost.html:28 -#: app/templates/projects/add_good.html:24 -#: app/templates/projects/create.html:52 -#: app/templates/projects/create.html:283 app/templates/projects/edit.html:48 -#: app/templates/projects/edit_cost.html:35 -#: app/templates/projects/edit_good.html:24 -#: app/templates/projects/time_entries_overview.html:72 -#: app/templates/projects/time_entries_overview.html:83 -#: app/templates/quotes/_edit_quote_form_scripts.html:199 -#: app/templates/quotes/_edit_quote_form_scripts.html:233 -#: app/templates/quotes/create.html:41 app/templates/quotes/create.html:64 -#: app/templates/quotes/create.html:95 app/templates/quotes/create.html:126 -#: app/templates/quotes/edit.html:46 app/templates/quotes/edit.html:69 -#: app/templates/quotes/edit.html:143 app/templates/quotes/edit.html:158 -#: app/templates/quotes/edit.html:200 app/templates/quotes/edit.html:216 -#: app/templates/quotes/pdf_default.html:95 app/templates/quotes/view.html:61 -#: app/templates/quotes/view.html:102 -#: app/templates/recurring_tasks/form.html:47 -#: app/templates/tasks/_kanban.html:1253 app/templates/tasks/create.html:34 -#: app/templates/tasks/edit.html:41 app/utils/pdf_generator.py:1154 -#: app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Description" -msgstr "Designação das mercadorias" - -#: app/templates/admin/oidc_debug.html:180 -#: app/templates/user/settings.html:297 -msgid "Example" -msgstr "Exemplo" - -#: app/templates/admin/oidc_debug.html:184 -msgid "Authentication method" -msgstr "Método de autenticação" - -#: app/templates/admin/oidc_debug.html:185 -msgid "OIDC provider issuer URL" -msgstr "URL do emissor de provedor de OIDC" - -#: app/templates/admin/oidc_debug.html:186 -msgid "Client ID from OIDC provider" -msgstr "ID do cliente do provedor OIDC" - -#: app/templates/admin/oidc_debug.html:187 -msgid "Client secret from OIDC provider" -msgstr "Segredo do cliente do provedor OIDC" - -#: app/templates/admin/oidc_debug.html:188 -msgid "Callback URL (optional, auto-generated)" -msgstr "URL de retorno de chamada (opcional, gerado automaticamente)" - -#: app/templates/admin/oidc_debug.html:189 -msgid "Requested scopes" -msgstr "Âmbito de aplicação solicitado" - -#: app/templates/admin/oidc_debug.html:190 -msgid "Claim containing username" -msgstr "Reivindicação contendo nome de usuário" - -#: app/templates/admin/oidc_debug.html:191 -msgid "Claim containing email" -msgstr "Alegação contendo e- mail" - -#: app/templates/admin/oidc_debug.html:192 -msgid "Claim containing full name" -msgstr "Pedido contendo nome completo" - -#: app/templates/admin/oidc_debug.html:193 -msgid "Claim containing groups" -msgstr "Alegação contendo grupos" - -#: app/templates/admin/oidc_debug.html:194 -msgid "Group name for admin role (optional)" -msgstr "Nome do grupo para função de administrador (opcional)" - -#: app/templates/admin/oidc_debug.html:195 -msgid "Comma-separated admin emails (optional)" -msgstr "E-mails de administração separados por vírgulas (opcional)" - -#: app/templates/admin/oidc_setup_wizard.html:4 -#: app/templates/admin/oidc_setup_wizard.html:15 -msgid "OIDC Setup Wizard" -msgstr "Assistente de Configuração do OIDC" - -#: app/templates/admin/oidc_setup_wizard.html:16 -msgid "Guided step-by-step configuration for OpenID Connect authentication" -msgstr "Configuração passo a passo guiada para autenticação OpenID Connect" - -#: app/templates/admin/oidc_setup_wizard.html:26 -msgid "Basic Config" -msgstr "Configuração Básica" - -#: app/templates/admin/oidc_setup_wizard.html:31 -#: app/templates/admin/oidc_setup_wizard.html:125 -#: app/templates/integrations/activitywatch_setup.html:161 -#: app/templates/integrations/caldav_setup.html:210 -#: app/templates/integrations/caldav_setup.html:215 -#: app/templates/integrations/manage.html:624 -#: app/templates/integrations/view.html:137 -#: app/templates/integrations/wizard_jira.html:76 -#: app/templates/integrations/wizard_trello.html:53 -msgid "Test Connection" -msgstr "Testar a Ligação" - -#: app/templates/admin/oidc_setup_wizard.html:53 -msgid "Step 1: Basic Configuration" -msgstr "Passo 1: Configuração Básica" - -#: app/templates/admin/oidc_setup_wizard.html:57 -msgid "OIDC Issuer URL" -msgstr "URL do Emissor OIDC" - -#: app/templates/admin/oidc_setup_wizard.html:64 -msgid "" -"The base URL of your OIDC provider (e.g., https://auth.example.com or " -"https://login.microsoftonline.com/tenant-id/v2.0)" -msgstr "" -"A URL base do seu fornecedor OIDC (por exemplo, https://auth.example.com ou " -"https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgid "Don't show again for this version" +#~ msgstr "Não mostrar novamente para esta versão" -#: app/templates/admin/oidc_setup_wizard.html:77 -msgid "The client ID from your OIDC provider" -msgstr "O ID do cliente do seu provedor OIDC" +#~ msgid "Quick actions dock" +#~ msgstr "Ações rápidas dock" -#: app/templates/admin/oidc_setup_wizard.html:87 -msgid "Enter client secret" -msgstr "Digite o segredo do cliente" +#~ msgid "Actions" +#~ msgstr "Acções" -#: app/templates/admin/oidc_setup_wizard.html:89 -msgid "The client secret from your OIDC provider" -msgstr "O segredo do cliente do seu provedor OIDC" +#~ msgid "Log Time" +#~ msgstr "Tempo de registro" -#: app/templates/admin/oidc_setup_wizard.html:95 -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Authentication Method" -msgstr "Método de autenticação" +#~ msgid "New Task" +#~ msgstr "Nova Tarefa" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "OIDC Only" -msgstr "Apenas OIDC" +#~ msgid "New Project" +#~ msgstr "Novo Projeto" -#: app/templates/admin/oidc_setup_wizard.html:100 -msgid "SSO login only, no local passwords" -msgstr "Apenas login SSO, sem senhas locais" +#~ msgid "New Client" +#~ msgstr "Novo Cliente" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "Both" -msgstr "Ambos" +#~ msgid "Open AI Helper" +#~ msgstr "Abrir o Assistente de IA" -#: app/templates/admin/oidc_setup_wizard.html:103 -msgid "SSO and local password authentication" -msgstr "SSO e autenticação de senha local" +#~ msgid "Ask about your tracked work, summaries, gaps, and next actions." +#~ msgstr "" +#~ "Pergunte sobre seu trabalho rastreado, " +#~ "resumos, lacunas e ações seguintes." -#: app/templates/admin/oidc_setup_wizard.html:107 -msgid "" -"Choose whether to allow only OIDC login or both OIDC and local password " -"authentication" -msgstr "" -"Escolha se permite apenas o login do OIDC ou a autenticação da senha OIDC e " -"local" +#~ msgid "Context included" +#~ msgstr "Contexto incluído" -#: app/templates/admin/oidc_setup_wizard.html:115 -#: app/templates/integrations/wizard_jira.html:66 -#: app/templates/integrations/wizard_trello.html:43 -msgid "Step 2: Test Connection" -msgstr "Passo 2: Ligação de teste" +#~ msgid "Loading context preview..." +#~ msgstr "A carregar a antevisão do contexto..." -#: app/templates/admin/oidc_setup_wizard.html:120 -msgid "" -"Click \"Test Connection\" to verify DNS resolution and metadata endpoint " -"accessibility." -msgstr "" -"Clique em \"Teste Conexão\" para verificar a resolução de DNS e a " -"acessibilidade do endpoint de metadados." +#~ msgid "" +#~ "Ask: What did I work on this " +#~ "week? Draft a time entry from " +#~ "these notes..." +#~ msgstr "" +#~ "Pergunte: Em que trabalhei esta semana?" +#~ " Rascunho uma entrada temporal destas " +#~ "notas..." -#: app/templates/admin/oidc_setup_wizard.html:137 -msgid "Step 3: Claim Mapping" -msgstr "Passo 3: Mapeamento de alegações" +#~ msgid "Send" +#~ msgstr "Enviar" -#: app/templates/admin/oidc_setup_wizard.html:148 -msgid "Claim name containing the username (default: preferred_username)" -msgstr "" -"Nome de reclamação contendo o nome de usuário (por omissão: preferred " -"username)" +#~ msgid "Amazing! You've tracked over 100 hours" +#~ msgstr "Incrível! Seguiste mais de 100 horas." -#: app/templates/admin/oidc_setup_wizard.html:161 -msgid "Claim name containing the email address (default: email)" -msgstr "" -"Nome de reclamação contendo o endereço de e- mail (por omissão: e- mail)" +#~ msgid "Support updates and new features — or remove prompts with a key" +#~ msgstr "" +#~ "Atualizações de suporte e novos recursos" +#~ " — ou remover alertas com uma " +#~ "chave" -#: app/templates/admin/oidc_setup_wizard.html:174 -msgid "Claim name containing the full name (default: name)" -msgstr "Nome da reclamação contendo o nome completo (por omissão: nome)" +#~ msgid "Great progress! You've logged 50+ entries" +#~ msgstr "Grande progresso! Você registrou mais de 50 entradas" -#: app/templates/admin/oidc_setup_wizard.html:187 -msgid "Claim name containing user groups (default: groups, optional)" -msgstr "" -"Nome de reclamação contendo grupos de usuários (padrão: grupos, opcional)" +#~ msgid "Thanks for using TimeTracker!" +#~ msgstr "Obrigado por usar o TimeTracker!" -#: app/templates/admin/oidc_setup_wizard.html:200 -msgid "Group name that grants admin access (optional)" -msgstr "Nome do grupo que concede acesso ao administrador (opcional)" +#~ msgid "Create API Token" +#~ msgstr "Criar API Token" -#: app/templates/admin/oidc_setup_wizard.html:213 -msgid "" -"Comma-separated list of email addresses that grant admin access (optional)" -msgstr "" -"Lista separada por vírgulas de endereços de email que concedem acesso ao " -"administrador (opcional)" +#~ msgid "Your API Token" +#~ msgstr "Sua API Token" -#: app/templates/admin/oidc_setup_wizard.html:221 -#: app/templates/integrations/wizard_jira.html:152 -msgid "Step 4: Advanced Settings" -msgstr "Passo 4: Configurações avançadas" +#~ msgid "Usage Examples" +#~ msgstr "Exemplos de Uso" -#: app/templates/admin/oidc_setup_wizard.html:232 -msgid "Space-separated list of OIDC scopes (default: openid profile email)" -msgstr "" -"Lista separada por espaços dos escopos OIDC (por omissão: e- mail de perfil " -"openid)" +#~ msgid "Are you sure you want to" +#~ msgstr "Tens a certeza que queres?" -#: app/templates/admin/oidc_setup_wizard.html:245 -msgid "OAuth callback URL (usually auto-generated, but can be customized)" -msgstr "" -"URL de retorno de chamada OAuth (geralmente gerado automaticamente, mas pode" -" ser personalizado)" +#~ msgid "deactivate" +#~ msgstr "desactivar" + +#~ msgid "activate" +#~ msgstr "activar" + +#~ msgid "this token?" +#~ msgstr "Este símbolo?" + +#~ msgid "Deactivate Token" +#~ msgstr "Desactivar o Token" + +#~ msgid "Activate Token" +#~ msgstr "Activar o Token" + +#~ msgid "Deactivate" +#~ msgstr "Desactivar" + +#~ msgid "Activate" +#~ msgstr "Activar" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this token? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Tem a certeza de que deseja apagar" +#~ " este item? Esta acção não pode " +#~ "ser desfeita." + +#~ msgid "Delete Token" +#~ msgstr "Apagar o Token" + +#~ msgid "Create Backup" +#~ msgstr "Criar cópia de segurança" + +#~ msgid "Restore Backup" +#~ msgstr "Restaurar cópia de segurança" + +#~ msgid "Existing Backups" +#~ msgstr "Cópias de segurança existentes" + +#~ msgid "Important Information" +#~ msgstr "Informação Importante" + +#~ msgid "Confirm Deletion" +#~ msgstr "Confirmar exclusão" + +#~ msgid "Clear Cache" +#~ msgstr "Limpar cache" + +#~ msgid "ServiceWorker Status" +#~ msgstr "Estado do Trabalhador de Serviço" + +#~ msgid "Clear All Caches" +#~ msgstr "Limpar todas as caches" + +#~ msgid "ServiceWorker Actions" +#~ msgstr "Acções do Trabalhador de Serviço" + +#~ msgid "Manual Hard Refresh" +#~ msgstr "Actualização Difícil Manual" + +#~ msgid "Total Users" +#~ msgstr "Total de Utilizadores" + +#~ msgid "All time" +#~ msgstr "Sempre." + +#~ msgid "Active Users" +#~ msgstr "Usuários ativos" + +#~ msgid "Currently active" +#~ msgstr "Actualmente activo" + +#~ msgid "Total Projects" +#~ msgstr "Total dos projectos" + +#~ msgid "Active Projects" +#~ msgstr "Projetos ativos" + +#~ msgid "Total Entries" +#~ msgstr "Total das entradas" + +#~ msgid "Time entries logged" +#~ msgstr "Entradas de tempo registradas" + +#~ msgid "Active Timers" +#~ msgstr "Temporizadores Ativos" + +#~ msgid "Currently running" +#~ msgstr "Atualmente em execução" + +#~ msgid "All time tracked" +#~ msgstr "Todo o tempo seguido" + +#~ msgid "Billable time" +#~ msgstr "Tempo Billable" + +#~ msgid "User Activity (30 Days)" +#~ msgstr "Actividade do Utilizador (30 dias)" + +#~ msgid "Project Status" +#~ msgstr "Estado do Projeto" + +#~ msgid "Time Entry Trends (30 Days)" +#~ msgstr "Tendências da hora de entrada (30 dias)" + +#~ msgid "System Health" +#~ msgstr "Saúde do Sistema" + +#~ msgid "Database" +#~ msgstr "Base de dados" + +#~ msgid "Connected" +#~ msgstr "Ligado" + +#~ msgid "OIDC Authentication" +#~ msgstr "Autenticação do OIDC" + +#~ msgid "Configured" +#~ msgstr "Configurado" + +#~ msgid "Not Configured" +#~ msgstr "Não Configurado" + +#~ msgid "OIDC Users" +#~ msgstr "Utilizadores do OIDC" + +#~ msgid "users" +#~ msgstr "usuários" + +#~ msgid "Admin Sections" +#~ msgstr "Secções de Administração" + +#~ msgid "Recent Activity" +#~ msgstr "Actividade Recente" + +#~ msgid "Duration" +#~ msgstr "Duração" + +#~ msgid "N/A" +#~ msgstr "N/A" + +#~ msgid "Email Configuration & Testing" +#~ msgstr "Configuração e Teste de E- mail" + +#~ msgid "Configure and test email delivery" +#~ msgstr "Configurar e testar a entrega de email" + +#~ msgid "Back to Admin" +#~ msgstr "Voltar ao Administrador" + +#~ msgid "Configure email settings here to save them in the database." +#~ msgstr "" +#~ "Configurar as configurações de e- mail" +#~ " aqui para salvá- las no banco " +#~ "de dados." + +#~ msgid "Enable Database Email Configuration" +#~ msgstr "Activar a Configuração de E- mail da Base de Dados" + +#~ msgid "Mail Server" +#~ msgstr "Servidor de e- mail" + +#~ msgid "Mail Port" +#~ msgstr "Porta de Correio" + +#~ msgid "Use TLS" +#~ msgstr "Usar TLS" + +#~ msgid "Use SSL" +#~ msgstr "Usar SSL" + +#~ msgid "Username" +#~ msgstr "Utilizador" + +#~ msgid "Password" +#~ msgstr "Senha" + +#~ msgid "Leave empty to keep current" +#~ msgstr "Deixar em branco para manter actual" + +#~ msgid "Default Sender" +#~ msgstr "Envio por Omissão" + +#~ msgid "Test recipient email" +#~ msgstr "Testar o e- mail do destinatário" + +#~ msgid "Used to prefill “Send Test Email” and invoice template test sends." +#~ msgstr "" +#~ "Usado para pré-preencher “Enviar email " +#~ "de teste” e teste de modelo de " +#~ "fatura envia." + +#~ msgid "Save Configuration" +#~ msgstr "Salvar configuração" + +#~ msgid "Reset" +#~ msgstr "Reiniciar" + +#~ msgid "Email Configuration Status" +#~ msgstr "Estado da Configuração do E- mail" + +#~ msgid "Refresh" +#~ msgstr "Atualizar" + +#~ msgid "Email is configured!" +#~ msgstr "O e- mail está configurado!" + +#~ msgid "Your email settings are properly set up." +#~ msgstr "Suas configurações de e-mail estão configuradas corretamente." + +#~ msgid "Email is not configured" +#~ msgstr "E- mail não está configurado" + +#~ msgid "Please configure email settings using the form above." +#~ msgstr "" +#~ "Por favor, configure as configurações de" +#~ " e- mail usando o formulário acima." + +#~ msgid "Configuration Errors" +#~ msgstr "Erros de Configuração" + +#~ msgid "Configuration Warnings" +#~ msgstr "Avisos de Configuração" + +#~ msgid "Current Email Settings" +#~ msgstr "Configuração Actual do E- mail" + +#~ msgid "Port" +#~ msgstr "Porto" + +#~ msgid "Password Set" +#~ msgstr "Senha Definir" + +#~ msgid "Send Test Email" +#~ msgstr "Enviar E- mail de Teste" + +#~ msgid "Recipient Email Address" +#~ msgstr "Endereço de E- mail do destinatário" + +#~ msgid "Configuration Guide" +#~ msgstr "Guia de configuração" + +#~ msgid "Common SMTP Providers" +#~ msgstr "Frequentes SMTP Fornecedores" + +#~ msgid "Requires app password" +#~ msgstr "Requer senha do aplicativo" + +#~ msgid "Important Notes" +#~ msgstr "Notas Importantes" + +#~ msgid "Gmail requires an App Password if 2FA is enabled" +#~ msgstr "O Gmail requer uma senha do aplicativo se o 2FA estiver habilitado" + +#~ msgid "Restart the application after changing email settings" +#~ msgstr "Reiniciar o aplicativo após alterar as configurações de e- mail" + +#~ msgid "Check firewall rules if emails are not sending" +#~ msgstr "Verificar as regras do firewall se os e- mails não forem enviados" + +#~ msgid "" +#~ "For production, use a dedicated email" +#~ " service like SendGrid or Amazon SES" +#~ msgstr "" +#~ "Para produção, use um serviço de " +#~ "email dedicado como SendGrid ou Amazon" +#~ " SES" + +#~ msgid "password is set" +#~ msgstr "a senha está definida" + +#~ msgid "no password set" +#~ msgstr "sem senha definida" + +#~ msgid "Failed to save configuration. Please try again." +#~ msgstr "Não foi possível gravar a configuração. Por favor, tente novamente." + +#~ msgid "Success!" +#~ msgstr "Sucesso!" + +#~ msgid "Failed to refresh status. Please try again." +#~ msgstr "Não foi possível actualizar o estado. Por favor, tente novamente." + +#~ msgid "Please enter a valid email address" +#~ msgstr "Digite um endereço de e- mail válido" + +#~ msgid "Sending..." +#~ msgstr "Enviando..." + +#~ msgid "Failed to send test email. Please check your configuration." +#~ msgstr "" +#~ "Não foi possível enviar o e- mail" +#~ " de teste. Por favor, verifique sua" +#~ " configuração." + +#~ msgid "LDAP Setup Wizard" +#~ msgstr "Assistente de Configuração LDAP" + +#~ msgid "Guided configuration for LDAP authentication (environment variables)" +#~ msgstr "Configuração guiada para autenticação LDAP (variáveis de ambiente)" + +#~ msgid "Server" +#~ msgstr "Servidor" + +#~ msgid "Bind" +#~ msgstr "Encadernação" + +#~ msgid "Users" +#~ msgstr "Utilizadores" + +#~ msgid "Groups" +#~ msgstr "Grupos" + +#~ msgid "Finalize" +#~ msgstr "Finalizar" + +#~ msgid "Step 1: Server and TLS" +#~ msgstr "Passo 1: Servidor e TLS" + +#~ msgid "LDAP host" +#~ msgstr "Máquina LDAP" + +#~ msgid "Use SSL (LDAPS)" +#~ msgstr "Usar SSL (LDAPS)" + +#~ msgid "StartTLS" +#~ msgstr "StartTLS" + +#~ msgid "Connection timeout (seconds)" +#~ msgstr "Tempo- limite da ligação (segundos)" + +#~ msgid "TLS CA certificate file" +#~ msgstr "Ficheiro de certificado TLS CA" + +#~ msgid "optional" +#~ msgstr "opcional" + +#~ msgid "Step 2: Service bind account" +#~ msgstr "Passo 2: Serviço vincular conta" + +#~ msgid "Bind DN" +#~ msgstr "Ligar DN" + +#~ msgid "Bind password" +#~ msgstr "Senha de ligação" + +#~ msgid "Enter bind password" +#~ msgstr "Digite a senha de vinculação" + +#~ msgid "" +#~ "A bind password is already set in" +#~ " the environment. Enter it again here" +#~ " to test or generate configuration." +#~ msgstr "" +#~ "Uma senha de vinculação já está " +#~ "definida no ambiente. Digite- o " +#~ "novamente aqui para testar ou gerar " +#~ "configuração." + +#~ msgid "Step 3: User directory and attributes" +#~ msgstr "Passo 3: Directório do usuário e atributos" + +#~ msgid "Base DN" +#~ msgstr "DN base" + +#~ msgid "User subtree (relative to base)" +#~ msgstr "Sub- árvore do utilizador (relativo à base)" + +#~ msgid "User object class" +#~ msgstr "Classe de objeto do usuário" + +#~ msgid "Login attribute" +#~ msgstr "Atributo de login" + +#~ msgid "Email attribute" +#~ msgstr "Atributo de e- mail" + +#~ msgid "First name attribute" +#~ msgstr "Atributo do primeiro nome" + +#~ msgid "Last name attribute" +#~ msgstr "Atributo de sobrenome" + +#~ msgid "Step 4: Groups and authentication mode" +#~ msgstr "Passo 4: Grupos e modo de autenticação" + +#~ msgid "Group subtree (relative to base)" +#~ msgstr "Subárvore do grupo (relativo à base)" + +#~ msgid "Group object class" +#~ msgstr "Classe de objeto de grupo" + +#~ msgid "Admin group (CN)" +#~ msgstr "Grupo de administração (CN)" + +#~ msgid "Required group (CN)" +#~ msgstr "Grupo necessário (CN)" + +#~ msgid "AUTH_METHOD" +#~ msgstr "METODO DA AUTH" + +#~ msgid "LDAP only" +#~ msgstr "Apenas LDAP" + +#~ msgid "All (local + OIDC + LDAP)" +#~ msgstr "Todos (local + OIDC + LDAP)" + +#~ msgid "" +#~ "Use \"All\" only if you also " +#~ "configure local and OIDC sign-in; " +#~ "AUTH_METHOD=all enables every method." +#~ msgstr "" +#~ "Use \"Tudo\" apenas se você também " +#~ "configurar o login local e OIDC; " +#~ "AUTH METHOD=all habilita todos os " +#~ "métodos." + +#~ msgid "Step 5: Test and generate configuration" +#~ msgstr "Passo 5: Teste e gere a configuração" + +#~ msgid "" +#~ "Test the service bind and user " +#~ "search, then generate .env snippets to" +#~ " copy into your deployment." +#~ msgstr "" +#~ "Teste o serviço vincular e pesquisa " +#~ "do usuário, em seguida, gerar snippets" +#~ " .env para copiar em sua implantação." + +#~ msgid "Test connection" +#~ msgstr "Conexão de teste" + +#~ msgid "" +#~ "Generate environment variable lines for " +#~ "your .env file or Docker Compose." +#~ msgstr "" +#~ "Gere linhas variáveis de ambiente para" +#~ " seu arquivo .env ou Docker Compose." + +#~ msgid "Generate configuration" +#~ msgstr "Gerar a configuração" + +#~ msgid "Environment variables (.env)" +#~ msgstr "Variáveis de ambiente (.env)" + +#~ msgid "Copy" +#~ msgstr "Copiar" + +#~ msgid "Docker Compose" +#~ msgstr "Acoplamento Compor" + +#~ msgid "" +#~ "Add these variables to your environment" +#~ " or Compose file, restart the " +#~ "application, then confirm under Settings " +#~ "→ LDAP." +#~ msgstr "" +#~ "Adicione essas variáveis ao seu ambiente" +#~ " ou Compor arquivo, reinicie o " +#~ "aplicativo e, em seguida, confirme em" +#~ " Configurações → LDAP." + +#~ msgid "Previous" +#~ msgstr "Anterior" + +#~ msgid "Next" +#~ msgstr "Próxima" + +#~ msgid "Feature Module Load Status" +#~ msgstr "Status de carga do módulo de recurso" + +#~ msgid "" +#~ "This reflects which optional feature " +#~ "modules successfully loaded when the " +#~ "server started." +#~ msgstr "" +#~ "Isso reflete quais módulos de recursos" +#~ " opcionais carregados com sucesso quando" +#~ " o servidor começou." + +#~ msgid "Optional loaded:" +#~ msgstr "Carregado opcional:" + +#~ msgid "Attention needed" +#~ msgstr "Atenção necessária" + +#~ msgid "Module" +#~ msgstr "Módulo" + +#~ msgid "Blueprint" +#~ msgstr "Planta" + +#~ msgid "Status" +#~ msgstr "Estado" + +#~ msgid "Details" +#~ msgstr "Detalhes" + +#~ msgid "Loaded" +#~ msgstr "Carregado" + +#~ msgid "Failed" +#~ msgstr "Falhou" + +#~ msgid "—" +#~ msgstr "—" + +#~ msgid "Client Lock (optional)" +#~ msgstr "Bloqueio do Cliente (opcional)" + +#~ msgid "" +#~ "If set, all client selectors across " +#~ "the app will auto-select this " +#~ "client and prevent changes." +#~ msgstr "" +#~ "Se estiver definido, todos os seletores" +#~ " de clientes em todo o aplicativo " +#~ "selecionarão automaticamente este cliente e" +#~ " evitarão alterações." + +#~ msgid "Locked Client" +#~ msgstr "Cliente bloqueado" + +#~ msgid "None (no lock)" +#~ msgstr "Nenhuma (sem bloqueio)" + +#~ msgid "Module Visibility" +#~ msgstr "Visibilidade do Módulo" + +#~ msgid "" +#~ "Disable modules to hide them from " +#~ "all users. Disabled modules will not " +#~ "appear in the sidebar. Core modules " +#~ "(Dashboard, Projects, Timer, etc.) are " +#~ "always enabled and cannot be disabled." +#~ msgstr "" +#~ "Desactivar os módulos para os esconder" +#~ " de todos os utilizadores. Os módulos" +#~ " desativados não aparecerão na barra " +#~ "lateral. Os módulos principais (Dashboard, " +#~ "Projects, Timer, etc.) estão sempre " +#~ "habilitados e não podem ser desativados." + +#~ msgid "Enable All" +#~ msgstr "Activar Tudo" + +#~ msgid "Disable All" +#~ msgstr "Desabilitar Tudo" + +#~ msgid "Total Modules:" +#~ msgstr "Módulos totais:" + +#~ msgid "Enabled:" +#~ msgstr "Activado:" + +#~ msgid "Disabled:" +#~ msgstr "Desactivado:" + +#~ msgid "Search modules..." +#~ msgstr "Procurar módulos..." + +#~ msgid "All Categories" +#~ msgstr "Todas as categorias" + +#~ msgid "Project Management" +#~ msgstr "Gestão de Projetos" + +#~ msgid "Show disabled only" +#~ msgstr "Mostrar apenas desactivado" + +#~ msgid "Show with dependencies" +#~ msgstr "Mostrar com dependências" + +#~ msgid "Warning: Disabling these modules will also affect dependent modules:" +#~ msgstr "" +#~ "Aviso: A desativação destes módulos " +#~ "também afetará os módulos dependentes:" + +#~ msgid "Enabled" +#~ msgstr "Activado" + +#~ msgid "Disabled" +#~ msgstr "Desactivado" + +#~ msgid "Depends on:" +#~ msgstr "Depende de:" + +#~ msgid "" +#~ "Disabling \"Reports\" hides the whole " +#~ "Reports submenu including Report Builder " +#~ "and Scheduled Reports." +#~ msgstr "" +#~ "Desativar \"Relatórios\" esconde todo o " +#~ "submenu Relatórios, incluindo o Construtor " +#~ "de Relatórios e Relatórios Agendados." + +#~ msgid "Save Changes" +#~ msgstr "Salvar alterações" + +#~ msgid "No modules available." +#~ msgstr "Nenhum módulo disponível." + +#~ msgid "Note" +#~ msgstr "Nota" + +#~ msgid "All modules are enabled by default." +#~ msgstr "Todos os módulos estão habilitados por padrão." + +#~ msgid "" +#~ "Core modules cannot be disabled as " +#~ "they are required for the application" +#~ " to function." +#~ msgstr "" +#~ "Os módulos principais não podem ser " +#~ "desativados, pois são necessários para " +#~ "que a aplicação funcione." + +#~ msgid "" +#~ "Disabling a module affects all users " +#~ "system-wide. Disabled modules will not" +#~ " appear in the navigation sidebar." +#~ msgstr "" +#~ "Desativar um módulo afeta todos os " +#~ "usuários em todo o sistema. Os " +#~ "módulos desativados não aparecerão na " +#~ "barra lateral de navegação." + +#~ msgid "Enable all modules?" +#~ msgstr "Activar todos os módulos?" + +#~ msgid "Disable all modules? This may affect functionality." +#~ msgstr "Desactivar todos os módulos? Isso pode afetar a funcionalidade." + +#~ msgid "Disable" +#~ msgstr "Desactivar" + +#~ msgid "module(s) in this category?" +#~ msgstr "módulo( s) nesta categoria?" + +#~ msgid "Validation errors:" +#~ msgstr "Erros de validação:" + +#~ msgid "OIDC Debug Dashboard" +#~ msgstr "Painel de depuração do OIDC" + +#~ msgid "Inspect configuration, provider metadata and OIDC users" +#~ msgstr "" +#~ "Inspecione a configuração, os metadados " +#~ "do provedor e os usuários do OIDC" + +#~ msgid "Setup Wizard" +#~ msgstr "Assistente de Configuração" + +#~ msgid "Test Configuration" +#~ msgstr "Configuração do Teste" + +#~ msgid "OIDC Configuration" +#~ msgstr "Configuração do OIDC" + +#~ msgid "Auth Method" +#~ msgstr "Método de autenticação" + +#~ msgid "Issuer" +#~ msgstr "Emissor" + +#~ msgid "Not configured" +#~ msgstr "Não configurado" + +#~ msgid "Client ID" +#~ msgstr "ID do cliente" + +#~ msgid "Client Secret" +#~ msgstr "Segredo do Cliente" + +#~ msgid "Set" +#~ msgstr "Definir" + +#~ msgid "Not set" +#~ msgstr "Não definido" + +#~ msgid "Redirect URI" +#~ msgstr "Redirecionar URI" + +#~ msgid "Auto-generated" +#~ msgstr "Gerado automaticamente" + +#~ msgid "Scopes" +#~ msgstr "Âmbito de aplicação" + +#~ msgid "Claim Mapping" +#~ msgstr "Mapeamento de Reclamações" + +#~ msgid "Username Claim" +#~ msgstr "Reclamação de Nome de Utilizador" + +#~ msgid "Email Claim" +#~ msgstr "Pedido de E- mail" + +#~ msgid "Full Name Claim" +#~ msgstr "Alegação de nome completo" + +#~ msgid "Groups Claim" +#~ msgstr "Alegação de grupos" + +#~ msgid "Admin Group" +#~ msgstr "Grupo de administração" + +#~ msgid "Admin Emails" +#~ msgstr "E- mails de administração" + +#~ msgid "Post-Logout URI" +#~ msgstr "URI pós- encerramento" + +#~ msgid "Provider Metadata" +#~ msgstr "Metadados do Fornecedor" + +#~ msgid "Error loading metadata:" +#~ msgstr "Erro ao carregar metadados:" + +#~ msgid "Discovery endpoint:" +#~ msgstr "Descoberta:" + +#~ msgid "Successfully loaded provider metadata" +#~ msgstr "Metadados do provedor carregados com sucesso" + +#~ msgid "Endpoints" +#~ msgstr "Pontos finais" + +#~ msgid "Authorization" +#~ msgstr "Autorização" + +#~ msgid "Token" +#~ msgstr "Token" + +#~ msgid "UserInfo" +#~ msgstr "Informações do Usuário" + +#~ msgid "End Session" +#~ msgstr "Fim da Sessão" + +#~ msgid "JWKS URI" +#~ msgstr "JWKS URI" + +#~ msgid "Supported Features" +#~ msgstr "Características Suportadas" + +#~ msgid "Response Types" +#~ msgstr "Tipos de resposta" + +#~ msgid "Grant Types" +#~ msgstr "Tipos de subvenções" + +#~ msgid "Auth Methods" +#~ msgstr "Métodos de autenticação" + +#~ msgid "Claims" +#~ msgstr "Alegações" + +#~ msgid "Provider metadata not loaded. Click \"Test Configuration\" to fetch." +#~ msgstr "" +#~ "Os metadados do fornecedor não foram " +#~ "carregados. Clique em \"Testar Configuração\"" +#~ " para obter." + +#~ msgid "Email" +#~ msgstr "E- mail" + +#~ msgid "Full Name" +#~ msgstr "Nome completo" + +#~ msgid "Role" +#~ msgstr "Papel" + +#~ msgid "Last Login" +#~ msgstr "Última sessão" + +#~ msgid "OIDC Subject" +#~ msgstr "Assunto do OIDC" + +#~ msgid "Inactive" +#~ msgstr "Inativo" + +#~ msgid "Never" +#~ msgstr "Nunca" + +#~ msgid "No users have logged in via OIDC yet." +#~ msgstr "Nenhum usuário fez login via OIDC ainda." + +#~ msgid "Environment Variables Reference" +#~ msgstr "Referência de Variáveis de Ambiente" + +#~ msgid "Configure OIDC using these environment variables:" +#~ msgstr "Configurar o OIDC usando estas variáveis de ambiente:" + +#~ msgid "Variable" +#~ msgstr "Variável" + +#~ msgid "Description" +#~ msgstr "Designação das mercadorias" + +#~ msgid "Example" +#~ msgstr "Exemplo" + +#~ msgid "Authentication method" +#~ msgstr "Método de autenticação" + +#~ msgid "OIDC provider issuer URL" +#~ msgstr "URL do emissor de provedor de OIDC" + +#~ msgid "Client ID from OIDC provider" +#~ msgstr "ID do cliente do provedor OIDC" + +#~ msgid "Client secret from OIDC provider" +#~ msgstr "Segredo do cliente do provedor OIDC" + +#~ msgid "Callback URL (optional, auto-generated)" +#~ msgstr "URL de retorno de chamada (opcional, gerado automaticamente)" + +#~ msgid "Requested scopes" +#~ msgstr "Âmbito de aplicação solicitado" + +#~ msgid "Claim containing username" +#~ msgstr "Reivindicação contendo nome de usuário" + +#~ msgid "Claim containing email" +#~ msgstr "Alegação contendo e- mail" + +#~ msgid "Claim containing full name" +#~ msgstr "Pedido contendo nome completo" + +#~ msgid "Claim containing groups" +#~ msgstr "Alegação contendo grupos" + +#~ msgid "Group name for admin role (optional)" +#~ msgstr "Nome do grupo para função de administrador (opcional)" + +#~ msgid "Comma-separated admin emails (optional)" +#~ msgstr "E-mails de administração separados por vírgulas (opcional)" + +#~ msgid "OIDC Setup Wizard" +#~ msgstr "Assistente de Configuração do OIDC" + +#~ msgid "Guided step-by-step configuration for OpenID Connect authentication" +#~ msgstr "Configuração passo a passo guiada para autenticação OpenID Connect" + +#~ msgid "Basic Config" +#~ msgstr "Configuração Básica" + +#~ msgid "Test Connection" +#~ msgstr "Testar a Ligação" + +#~ msgid "Step 1: Basic Configuration" +#~ msgstr "Passo 1: Configuração Básica" + +#~ msgid "OIDC Issuer URL" +#~ msgstr "URL do Emissor OIDC" + +#~ msgid "" +#~ "The base URL of your OIDC provider" +#~ " (e.g., https://auth.example.com or " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" +#~ msgstr "" +#~ "A URL base do seu fornecedor OIDC" +#~ " (por exemplo, https://auth.example.com ou " +#~ "https://login.microsoftonline.com/tenant-id/v2.0)" + +#~ msgid "The client ID from your OIDC provider" +#~ msgstr "O ID do cliente do seu provedor OIDC" + +#~ msgid "Enter client secret" +#~ msgstr "Digite o segredo do cliente" + +#~ msgid "The client secret from your OIDC provider" +#~ msgstr "O segredo do cliente do seu provedor OIDC" + +#~ msgid "Authentication Method" +#~ msgstr "Método de autenticação" + +#~ msgid "OIDC Only" +#~ msgstr "Apenas OIDC" + +#~ msgid "SSO login only, no local passwords" +#~ msgstr "Apenas login SSO, sem senhas locais" + +#~ msgid "Both" +#~ msgstr "Ambos" + +#~ msgid "SSO and local password authentication" +#~ msgstr "SSO e autenticação de senha local" + +#~ msgid "" +#~ "Choose whether to allow only OIDC " +#~ "login or both OIDC and local " +#~ "password authentication" +#~ msgstr "" +#~ "Escolha se permite apenas o login " +#~ "do OIDC ou a autenticação da senha" +#~ " OIDC e local" + +#~ msgid "Step 2: Test Connection" +#~ msgstr "Passo 2: Ligação de teste" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify DNS" +#~ " resolution and metadata endpoint " +#~ "accessibility." +#~ msgstr "" +#~ "Clique em \"Teste Conexão\" para " +#~ "verificar a resolução de DNS e a" +#~ " acessibilidade do endpoint de metadados." + +#~ msgid "Step 3: Claim Mapping" +#~ msgstr "Passo 3: Mapeamento de alegações" + +#~ msgid "Claim name containing the username (default: preferred_username)" +#~ msgstr "" +#~ "Nome de reclamação contendo o nome " +#~ "de usuário (por omissão: preferred " +#~ "username)" + +#~ msgid "Claim name containing the email address (default: email)" +#~ msgstr "" +#~ "Nome de reclamação contendo o endereço" +#~ " de e- mail (por omissão: e- " +#~ "mail)" + +#~ msgid "Claim name containing the full name (default: name)" +#~ msgstr "Nome da reclamação contendo o nome completo (por omissão: nome)" + +#~ msgid "Claim name containing user groups (default: groups, optional)" +#~ msgstr "" +#~ "Nome de reclamação contendo grupos de" +#~ " usuários (padrão: grupos, opcional)" + +#~ msgid "Group name that grants admin access (optional)" +#~ msgstr "Nome do grupo que concede acesso ao administrador (opcional)" + +#~ msgid "" +#~ "Comma-separated list of email addresses" +#~ " that grant admin access (optional)" +#~ msgstr "" +#~ "Lista separada por vírgulas de endereços" +#~ " de email que concedem acesso ao " +#~ "administrador (opcional)" + +#~ msgid "Step 4: Advanced Settings" +#~ msgstr "Passo 4: Configurações avançadas" + +#~ msgid "Space-separated list of OIDC scopes (default: openid profile email)" +#~ msgstr "" +#~ "Lista separada por espaços dos escopos" +#~ " OIDC (por omissão: e- mail de " +#~ "perfil openid)" + +#~ msgid "OAuth callback URL (usually auto-generated, but can be customized)" +#~ msgstr "" +#~ "URL de retorno de chamada OAuth " +#~ "(geralmente gerado automaticamente, mas pode" +#~ " ser personalizado)" + +#~ msgid "Post-Logout Redirect URI" +#~ msgstr "Redireccionar o URI pós- encerramento" + +#~ msgid "" +#~ "URL to redirect to after logout " +#~ "(optional, only if your provider " +#~ "supports end_session_endpoint)" +#~ msgstr "" +#~ "URL para redirecionar para após o " +#~ "logout (opcional, somente se seu " +#~ "provedor suporta end session endpoint)" + +#~ msgid "Step 5: Generate Configuration" +#~ msgstr "Passo 5: Gerar a Configuração" + +#~ msgid "" +#~ "Click \"Generate Configuration\" to create " +#~ "environment variable configuration." +#~ msgstr "" +#~ "Clique em \"Generate Configuration\" para " +#~ "criar configuração de variável de " +#~ "ambiente." + +#~ msgid "Generate Configuration" +#~ msgstr "Gerar a Configuração" + +#~ msgid "Environment Variables (.env file)" +#~ msgstr "Variáveis de Ambiente (arquivo.env)" + +#~ msgid "" +#~ "Copy the configuration above and add " +#~ "it to your environment variables or " +#~ "Docker Compose file, then restart the" +#~ " application." +#~ msgstr "" +#~ "Copie a configuração acima e adicione-a" +#~ " às variáveis de ambiente ou ao " +#~ "arquivo Docker Compose e reinicie o " +#~ "aplicativo." + +#~ msgid "OIDC User Details" +#~ msgstr "Detalhes do usuário do OIDC" + +#~ msgid "Profile and OIDC identity for this user" +#~ msgstr "Perfil e identidade do OIDC para este usuário" + +#~ msgid "Back to OIDC Debug" +#~ msgstr "Voltar à Depuração do OIDC" + +#~ msgid "User Profile" +#~ msgstr "Perfil do Usuário" + +#~ msgid "Active" +#~ msgstr "Activo" + +#~ msgid "Preferred Language" +#~ msgstr "Idioma Preferido" + +#~ msgid "Created At" +#~ msgstr "Criado em" + +#~ msgid "OIDC Information" +#~ msgstr "Informação do OIDC" + +#~ msgid "OIDC Issuer" +#~ msgstr "Emissor OIDC" + +#~ msgid "OIDC Subject (sub)" +#~ msgstr "Assunto do OIDC (sub)" + +#~ msgid "Local" +#~ msgstr "Local" + +#~ msgid "" +#~ "This user was created or linked " +#~ "via OIDC. The issuer and subject " +#~ "are used to uniquely identify the " +#~ "user across login sessions." +#~ msgstr "" +#~ "Este usuário foi criado ou vinculado " +#~ "via OIDC. O emitente e o sujeito" +#~ " são usados para identificar exclusivamente" +#~ " o usuário em sessões de login." + +#~ msgid "" +#~ "This user has no OIDC information. " +#~ "They may have been created manually " +#~ "or via self-registration without OIDC." +#~ msgstr "" +#~ "Este utilizador não tem informações " +#~ "OIDC. Eles podem ter sido criados " +#~ "manualmente ou através de auto-registro" +#~ " sem OIDC." + +#~ msgid "Activity Statistics" +#~ msgstr "Estatísticas de Actividades" + +#~ msgid "Time Entries" +#~ msgstr "Menções de Tempo" + +#~ msgid "None" +#~ msgstr "Nenhum" + +#~ msgid "Active Timer" +#~ msgstr "Temporizador ativo" + +#~ msgid "Tasks Created" +#~ msgstr "Tarefas Criado" + +#~ msgid "Edit User" +#~ msgstr "Editar usuário" + +#~ msgid "View All Users" +#~ msgstr "Ver todos os usuários" + +#~ msgid "PDF Invoice Designer" +#~ msgstr "Designer de Fatura PDF" + +#~ msgid "Visual Invoice Designer" +#~ msgstr "Designer Visual de Fatura" + +#~ msgid "Drag and drop elements to design your invoice layout" +#~ msgstr "Arraste e solte elementos para projetar seu layout de fatura" + +#~ msgid "How to use:" +#~ msgstr "Como utilizar:" + +#~ msgid "" +#~ "Click elements from the left sidebar " +#~ "to add them to the canvas. Click" +#~ " elements to select and customize " +#~ "them in the properties panel. Use " +#~ "the alignment tools and keyboard " +#~ "shortcuts for faster editing." +#~ msgstr "" +#~ "Clique em elementos da barra lateral " +#~ "esquerda para adicioná-los à tela. " +#~ "Clique em elementos para selecioná-los e" +#~ " personalizá-los no painel de propriedades." +#~ " Use as ferramentas de alinhamento e" +#~ " atalhos de teclado para edição mais" +#~ " rápida." + +#~ msgid "Keyboard Shortcuts:" +#~ msgstr "Atalhos do Teclado:" + +#~ msgid "Help: Items Table, Expenses Table & Saving" +#~ msgstr "Ajuda: tabela de itens, tabela de despesas e economia" + +#~ msgid "Items Table:" +#~ msgstr "Tabela de itens:" + +#~ msgid "" +#~ "Displays time entries, extra goods, and" +#~ " expenses. Add from Invoice Data in" +#~ " the sidebar. Uses" +#~ msgstr "" +#~ "Exibe entradas de tempo, bens extras " +#~ "e despesas. Adicionar dados de fatura" +#~ " na barra lateral. Usos" + +#~ msgid "Expenses Table:" +#~ msgstr "Quadro de Despesas:" + +#~ msgid "" +#~ "Optional separate table for expenses. " +#~ "Add from Invoice Data in the " +#~ "sidebar." +#~ msgstr "" +#~ "Tabela separada opcional para despesas. " +#~ "Adicionar dados de fatura na barra " +#~ "lateral." + +#~ msgid "Saving:" +#~ msgstr "Salvando:" + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "tables disappear after save, try Reset" +#~ " to restore defaults, then re-add " +#~ "tables." +#~ msgstr "" +#~ "Clique em \"Salvar Design\" para " +#~ "persistir. Se as tabelas desaparecerem " +#~ "após salvar, tente Reiniciar para " +#~ "restaurar os padrões, em seguida, re-" +#~ "adicione tabelas." + +#~ msgid "Preview:" +#~ msgstr "Antevisão:" + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real " +#~ "invoice data." +#~ msgstr "" +#~ "Use \"Generate Preview\" para ver como" +#~ " o PDF vai ficar com dados " +#~ "reais da fatura." + +#~ msgid "See" +#~ msgstr "Veja" + +#~ msgid "for full documentation." +#~ msgstr "para documentação completa." + +#~ msgid "Clear Canvas" +#~ msgstr "Limpar a Tela" + +#~ msgid "Generate Preview" +#~ msgstr "Gerar a Visualização" + +#~ msgid "Save Design" +#~ msgstr "Gravar o Desenho" + +#~ msgid "View Code" +#~ msgstr "Ver Código" + +#~ msgid "Export JSON" +#~ msgstr "Exportar o JSON" + +#~ msgid "Import JSON" +#~ msgstr "Importar o JSON" + +#~ msgid "Snap to Grid (10px)" +#~ msgstr "Ajustar à Grelha (10px)" + +#~ msgid "Toolbox" +#~ msgstr "Caixa de Ferramentas" + +#~ msgid "Search elements & variables..." +#~ msgstr "Procurar elementos & variáveis..." + +#~ msgid "Elements" +#~ msgstr "Elementos" + +#~ msgid "Variables" +#~ msgstr "Variáveis" + +#~ msgid "Basic Elements" +#~ msgstr "Elementos Básicos" + +#~ msgid "Custom Text" +#~ msgstr "Texto Personalizado" + +#~ msgid "Text" +#~ msgstr "Texto" + +#~ msgid "Heading" +#~ msgstr "Rubrica" + +#~ msgid "Line" +#~ msgstr "Linha" + +#~ msgid "Rectangle" +#~ msgstr "Rectângulo" + +#~ msgid "Circle" +#~ msgstr "Círculo" + +#~ msgid "Company Info" +#~ msgstr "Informações da Empresa" + +#~ msgid "Company Logo" +#~ msgstr "Logotipo da empresa" + +#~ msgid "Company Name" +#~ msgstr "Nome da empresa" + +#~ msgid "Company Details" +#~ msgstr "Detalhes da empresa" + +#~ msgid "Address" +#~ msgstr "Endereço" + +#~ msgid "Phone" +#~ msgstr "Telefone" + +#~ msgid "Website" +#~ msgstr "Sítio Web" + +#~ msgid "Tax ID" +#~ msgstr "ID fiscal" + +#~ msgid "Invoice Data" +#~ msgstr "Dados da factura" + +#~ msgid "Invoice Number" +#~ msgstr "Número da factura" + +#~ msgid "Invoice Date" +#~ msgstr "Data da factura" + +#~ msgid "Due Date" +#~ msgstr "Data de vencimento" + +#~ msgid "Client Info" +#~ msgstr "Informações do Cliente" + +#~ msgid "Client Name" +#~ msgstr "Nome do Cliente" + +#~ msgid "Client Address" +#~ msgstr "Endereço do Cliente" + +#~ msgid "Items Table" +#~ msgstr "Quadro de Itens" + +#~ msgid "Expenses Table" +#~ msgstr "Quadro de Despesas" + +#~ msgid "Subtotal" +#~ msgstr "Subtotal" + +#~ msgid "Tax" +#~ msgstr "Imposto" + +#~ msgid "Total Amount" +#~ msgstr "Montante total" + +#~ msgid "Terms" +#~ msgstr "Termos" + +#~ msgid "Payment & Project" +#~ msgstr "& Projeto de pagamento" + +#~ msgid "Payment Date" +#~ msgstr "Data de pagamento" + +#~ msgid "Payment Method" +#~ msgstr "Método de pagamento" + +#~ msgid "Payment Status" +#~ msgstr "Status do pagamento" + +#~ msgid "Amount Paid" +#~ msgstr "Montante pago" + +#~ msgid "Project Name" +#~ msgstr "Nome do projeto" + +#~ msgid "Client Email" +#~ msgstr "E- mail do Cliente" + +#~ msgid "Client Phone" +#~ msgstr "Telefone do Cliente" + +#~ msgid "QR Code" +#~ msgstr "Código QR" + +#~ msgid "Barcode" +#~ msgstr "Código de barras" + +#~ msgid "Page Number" +#~ msgstr "Número da página" + +#~ msgid "Current Date" +#~ msgstr "Data atual" + +#~ msgid "Watermark" +#~ msgstr "Marca de água" + +#~ msgid "Bank Info" +#~ msgstr "Informações do Banco" + +#~ msgid "Currency" +#~ msgstr "Moeda" + +#~ msgid "Decorative Image" +#~ msgstr "Imagem decorativa" + +#~ msgid "Invoice Fields" +#~ msgstr "Campos de Fatura" + +#~ msgid "Invoice number" +#~ msgstr "Número da factura" + +#~ msgid "Invoice status (draft/sent/paid/overdue)" +#~ msgstr "Estatuto da factura (projeto/envio/pago/excedente)" + +#~ msgid "Issue date" +#~ msgstr "Data de emissão" + +#~ msgid "Due date" +#~ msgstr "Data de vencimento" + +#~ msgid "Subtotal amount" +#~ msgstr "Montante total" + +#~ msgid "Tax rate (%)" +#~ msgstr "Taxa fiscal (%)" + +#~ msgid "Tax amount" +#~ msgstr "Montante fiscal" + +#~ msgid "Total amount" +#~ msgstr "Montante total" + +#~ msgid "Currency code (EUR, USD, etc)" +#~ msgstr "Código monetário (EUR, USD, etc.)" + +#~ msgid "Invoice notes" +#~ msgstr "Notas de factura" + +#~ msgid "Terms & conditions" +#~ msgstr "Termos e condições" + +#~ msgid "Client Fields" +#~ msgstr "Campos do Cliente" + +#~ msgid "Client company name" +#~ msgstr "Nome da empresa cliente" + +#~ msgid "Client email address" +#~ msgstr "Endereço de e- mail do cliente" + +#~ msgid "Client full address" +#~ msgstr "Endereço completo do cliente" + +#~ msgid "Client contact person" +#~ msgstr "Pessoa de contacto do cliente" + +#~ msgid "Client phone number" +#~ msgstr "Número de telefone do cliente" + +#~ msgid "Payment Fields" +#~ msgstr "Campos de pagamento" + +#~ msgid "Payment status" +#~ msgstr "Situação do pagamento" + +#~ msgid "Payment date" +#~ msgstr "Data de pagamento" + +#~ msgid "Payment method" +#~ msgstr "Método de pagamento" + +#~ msgid "Payment reference number" +#~ msgstr "Número de referência do pagamento" + +#~ msgid "Amount paid" +#~ msgstr "Montante pago" + +#~ msgid "Outstanding amount" +#~ msgstr "Montante por liquidar" + +#~ msgid "Payment notes" +#~ msgstr "Notas de pagamento" + +#~ msgid "Project Fields" +#~ msgstr "Campos do Projeto" + +#~ msgid "Project name" +#~ msgstr "Nome do projeto" + +#~ msgid "Project code" +#~ msgstr "Código do projecto" + +#~ msgid "Project description" +#~ msgstr "Descrição do projecto" + +#~ msgid "Project billing reference" +#~ msgstr "Referência de facturação do projecto" + +#~ msgid "Company/Settings Fields" +#~ msgstr "Áreas da Empresa/Configurações" + +#~ msgid "Your company name" +#~ msgstr "O nome da sua empresa" + +#~ msgid "Your company address" +#~ msgstr "Endereço da sua empresa" + +#~ msgid "Your company email" +#~ msgstr "Seu email da empresa" + +#~ msgid "Your company phone" +#~ msgstr "Seu telefone da empresa" + +#~ msgid "Your company website" +#~ msgstr "Seu site da empresa" + +#~ msgid "Your tax ID number" +#~ msgstr "O seu número de identificação fiscal" + +#~ msgid "Your bank account info" +#~ msgstr "Informações da sua conta bancária" + +#~ msgid "Default invoice terms" +#~ msgstr "Termos da factura por omissão" + +#~ msgid "Default invoice notes" +#~ msgstr "Notas de fatura padrão" + +#~ msgid "Date/Time Fields" +#~ msgstr "Campos de Data/Hora" + +#~ msgid "Current date" +#~ msgstr "Data atual" + +#~ msgid "Invoice creation date" +#~ msgstr "Data de criação da factura" + +#~ msgid "Invoice last update date" +#~ msgstr "Data da última atualização da factura" + +#~ msgid "Invoice Items Loop" +#~ msgstr "Circulação de Itens de Fatura" + +#~ msgid "All items (time + extra goods + expenses)" +#~ msgstr "Todos os itens (tempo + bens extras + despesas)" + +#~ msgid "Time-based items only" +#~ msgstr "Apenas itens baseados no tempo" + +#~ msgid "Item description" +#~ msgstr "Descrição do item" + +#~ msgid "Item quantity" +#~ msgstr "Quantidade do item" + +#~ msgid "Item unit price" +#~ msgstr "Preço unitário do item" + +#~ msgid "Item total amount" +#~ msgstr "Montante total do item" + +#~ msgid "End loop" +#~ msgstr "Ciclo final" + +#~ msgid "Extra Goods Loop" +#~ msgstr "Circulação de Bens Extra" + +#~ msgid "Loop through extra goods only" +#~ msgstr "Circular apenas através de mercadorias extra" + +#~ msgid "Good name" +#~ msgstr "Bom nome" + +#~ msgid "Good total amount" +#~ msgstr "Montante total positivo" + +#~ msgid "Design Canvas" +#~ msgstr "Desenho de Tela" + +#~ msgid "Page Size:" +#~ msgstr "Tamanho da Página:" + +#~ msgid "Zoom In" +#~ msgstr "Ampliar" + +#~ msgid "Zoom Out" +#~ msgstr "Reduzir" + +#~ msgid "Delete Selected" +#~ msgstr "Apagar os Seleccionados" + +#~ msgid "Properties" +#~ msgstr "Propriedades" + +#~ msgid "Warnings" +#~ msgstr "Avisos" + +#~ msgid "Refresh warnings" +#~ msgstr "Actualizar as advertências" + +#~ msgid "No warnings" +#~ msgstr "Sem avisos" + +#~ msgid "Template Settings" +#~ msgstr "Configuração do Modelo" + +#~ msgid "Date Format" +#~ msgstr "Formato da Data" + +#~ msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" +#~ msgstr "" + +#~ msgid "Select an element to edit its properties" +#~ msgstr "Selecione um elemento para editar suas propriedades" + +#~ msgid "PDF Preview" +#~ msgstr "Visualização em PDF" + +#~ msgid "Page Size" +#~ msgstr "Tamanho da Página" + +#~ msgid "Refresh Preview" +#~ msgstr "Actualizar a Antevisão" + +#~ msgid "Toggle Fullscreen" +#~ msgstr "Alternar tela cheia" + +#~ msgid "Close Preview" +#~ msgstr "Fechar a Visualização" + +#~ msgid "Zoom Level" +#~ msgstr "Nível de Ampliação" + +#~ msgid "Reset Zoom" +#~ msgstr "Reiniciar ampliação" + +#~ msgid "Fit to Width" +#~ msgstr "Ajustar à Largura" + +#~ msgid "Fit Width" +#~ msgstr "Largura de ajuste" + +#~ msgid "Fit to Height" +#~ msgstr "Ajustar à Altura" + +#~ msgid "Fit Height" +#~ msgstr "Altura Ajustada" + +#~ msgid "Actual Size" +#~ msgstr "Tamanho Real" + +#~ msgid "Generating preview..." +#~ msgstr "A gerar a antevisão..." + +#~ msgid "Preview Error" +#~ msgstr "Erro de Antevisão" + +#~ msgid "Retry" +#~ msgstr "Repetir" + +#~ msgid "Generated Code" +#~ msgstr "Código Gerado" + +#~ msgid "Change Image" +#~ msgstr "Mudar imagem" + +#~ msgid "Upload Image" +#~ msgstr "Enviar imagem" + +#~ msgid "Remove Image" +#~ msgstr "Remover imagem" + +#~ msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" +#~ msgstr "Apenas são permitidos arquivos de imagem (PNG, JPG, JPEG, GIF, WEBP)" + +#~ msgid "File size must be less than 5MB" +#~ msgstr "O tamanho do arquivo deve ser inferior a 5MB" + +#~ msgid "Uploading..." +#~ msgstr "Enviando..." + +#~ msgid "Error: Image update function not found" +#~ msgstr "Erro: A função de atualização da imagem não foi encontrada" + +#~ msgid "Failed to upload image" +#~ msgstr "Falha ao enviar a imagem" + +#~ msgid "Are you sure you want to remove this image?" +#~ msgstr "Tem certeza de que deseja remover esta imagem?" + +#~ msgid "Clear all elements?" +#~ msgstr "Limpar todos os elementos?" + +#~ msgid "Clear" +#~ msgstr "Limpar" + +#~ msgid "Exit Fullscreen" +#~ msgstr "Sair do Ecrã Completo" + +#~ msgid "Failed to load preview. Please try again." +#~ msgstr "Não foi possível carregar a antevisão. Por favor, tente novamente." + +#~ msgid "" +#~ "Changing page size will reload the " +#~ "preview with the template for that " +#~ "size. Continue?" +#~ msgstr "" +#~ "Alterar o tamanho da página irá " +#~ "recarregar a visualização com o modelo" +#~ " para esse tamanho. Continuar?" + +#~ msgid "" +#~ "Preview functionality is currently " +#~ "unavailable. Please check the browser " +#~ "console for errors." +#~ msgstr "" +#~ "A funcionalidade de visualização não " +#~ "está disponível no momento. Por favor," +#~ " verifique se há erros na consola " +#~ "do navegador." + +#~ msgid "Reset to defaults?" +#~ msgstr "Reiniciar como padrão?" + +#~ msgid "Reset PDF Layout" +#~ msgstr "Reiniciar PDF Disposição" + +#~ msgid "Error importing template" +#~ msgstr "Erro ao importar modelo" + +#~ msgid "PDF Quote Designer" +#~ msgstr "Designer de Citações PDF" + +#~ msgid "Visual Quote Designer" +#~ msgstr "Desenhador de Citações Visual" + +#~ msgid "Drag and drop elements to design your quote layout" +#~ msgstr "Arraste e solte elementos para projetar seu layout de citação" + +#~ msgid "Help: Quote Items Table & Saving" +#~ msgstr "Ajuda: Tabela de itens de citação & Salvando" + +#~ msgid "Quote Items Table:" +#~ msgstr "Tabela de Itens de Citação:" + +#~ msgid "Displays quote line items. Add from Invoice Data in the sidebar." +#~ msgstr "" +#~ "Mostra os itens de linha de " +#~ "citação. Adicionar dados de fatura na" +#~ " barra lateral." + +#~ msgid "" +#~ "Click \"Save Design\" to persist. If " +#~ "the table disappears after save, try " +#~ "Reset to restore defaults, then re-" +#~ "add the Items Table." +#~ msgstr "" +#~ "Clique em \"Salvar Design\" para " +#~ "persistir. Se a tabela desaparecer após" +#~ " a gravação, tente Reiniciar para " +#~ "restaurar os padrões e, em seguida, " +#~ "re-adicione a tabela de itens." + +#~ msgid "" +#~ "Use \"Generate Preview\" to see how " +#~ "the PDF will look with real quote" +#~ " data." +#~ msgstr "" +#~ "Use \"Generate Preview\" para ver como" +#~ " o PDF vai parecer com dados de" +#~ " citação reais." + +#~ msgid "Quote Data" +#~ msgstr "Dados de Citação" + +#~ msgid "Quote Number" +#~ msgstr "Número de Citação" + +#~ msgid "Quote Date" +#~ msgstr "Data de citação" + +#~ msgid "Quote Items Table" +#~ msgstr "Tabela de Itens de Citação" + +#~ msgid "Quote Fields" +#~ msgstr "Campos de Citação" + +#~ msgid "Quote number" +#~ msgstr "Número de citação" + +#~ msgid "Quote status (draft/sent/paid/overdue)" +#~ msgstr "Estatuto da cotação (projeto/enviado/pago/excedente)" + +#~ msgid "Quote notes" +#~ msgstr "Notas de citação" + +#~ msgid "Quote status" +#~ msgstr "Estado da citação" + +#~ msgid "Quote accepted date" +#~ msgstr "Data de aceitação da citação" + +#~ msgid "Quote creation date" +#~ msgstr "Data de criação da citação" + +#~ msgid "Quote last update date" +#~ msgstr "Citar a última data de atualização" + +#~ msgid "Quote Items Loop" +#~ msgstr "Ciclo de Itens de Citação" + +#~ msgid "Loop through invoice items" +#~ msgstr "Loop através de itens de fatura" + +#~ msgid "Align Left" +#~ msgstr "Alinhar à Esquerda" + +#~ msgid "Center Horizontally" +#~ msgstr "Centro Horizontal" + +#~ msgid "Align Right" +#~ msgstr "Alinhar à Direita" + +#~ msgid "Align Top" +#~ msgstr "Alinhar topo" + +#~ msgid "Center Vertically" +#~ msgstr "Centro Verticalmente" + +#~ msgid "Align Bottom" +#~ msgstr "Alinhar Fundo" + +#~ msgid "Salesman Email Mappings" +#~ msgstr "Vendedor Email Mappings" + +#~ msgid "Email Mappings" +#~ msgstr "Mapeamentos de E- mail" + +#~ msgid "Add Mapping" +#~ msgstr "Adicionar mapeamento" + +#~ msgid "Salesman Initial" +#~ msgstr "Inicial do vendedor" + +#~ msgid "Email Address" +#~ msgstr "Endereço de E- mail" + +#~ msgid "Pattern/Domain" +#~ msgstr "Padrão/domínio" + +#~ msgid "Add Email Mapping" +#~ msgstr "Adicionar mapeamento de e- mail" + +#~ msgid "1-20 letters only" +#~ msgstr "Apenas 1-20 letras" + +#~ msgid "" +#~ "The salesman initial from client custom" +#~ " fields (e.g., MM for Max Mustermann)" +#~ msgstr "" +#~ "O vendedor inicial dos campos " +#~ "personalizados do cliente (por exemplo, " +#~ "MM para Max Mustermann)" + +#~ msgid "Direct Email Address" +#~ msgstr "Endereço de e- mail directo" + +#~ msgid "Pattern (e.g., {value}@test.de)" +#~ msgstr "" + +#~ msgid "Domain (e.g., test.de)" +#~ msgstr "Domínio (por exemplo, test.de)" + +#~ msgid "Will generate: {initial}@domain" +#~ msgstr "" + +#~ msgid "Additional notes about this mapping" +#~ msgstr "Notas adicionais sobre este mapeamento" + +#~ msgid "No mappings configured. Click \"Add Mapping\" to create one." +#~ msgstr "" +#~ "Nenhum mapeamento configurado. Clique em " +#~ "\"Adicionar mapeamento\" para criar um." + +#~ msgid "Edit Email Mapping" +#~ msgstr "Editar mapeamento de e- mail" + +#~ msgid "Error saving mapping" +#~ msgstr "Erro ao gravar o mapeamento" + +#~ msgid "Are you sure you want to delete this mapping?" +#~ msgstr "Tem a certeza de que deseja apagar este mapeamento?" + +#~ msgid "Error deleting mapping" +#~ msgstr "Erro ao remover o mapeamento" + +#~ msgid "Time Entry Requirements" +#~ msgstr "Requisitos de entrada no tempo" + +#~ msgid "" +#~ "Optionally require users to provide task" +#~ " and description when logging worked " +#~ "time. Enforced across web, mobile, and" +#~ " desktop." +#~ msgstr "" +#~ "Opcionalmente, exija que os usuários " +#~ "forneçam tarefas e descrição ao " +#~ "registrar o tempo de trabalho. Enforced" +#~ " em web, mobile e desktop." + +#~ msgid "Require task selection when logging time (project-based entries only)" +#~ msgstr "" +#~ "Requer seleção de tarefas ao registrar" +#~ " o tempo (apenas entradas baseadas em" +#~ " projetos)" + +#~ msgid "Require description when logging time" +#~ msgstr "Requer descrição ao registrar o tempo" + +#~ msgid "Minimum description length (characters)" +#~ msgstr "Comprimento mínimo da descrição (caracteres)" + +#~ msgid "Minimum number of characters required in the description field." +#~ msgstr "Número mínimo de caracteres requeridos no campo de descrição." + +#~ msgid "Default daily working hours (for new users)" +#~ msgstr "Horário de trabalho diário padrão (para novos usuários)" + +#~ msgid "" +#~ "Used as the standard hours per day" +#~ " for overtime calculation when new " +#~ "users are created. Existing users keep" +#~ " their own setting." +#~ msgstr "" +#~ "Usado como as horas padrão por dia" +#~ " para o cálculo de horas extras " +#~ "quando novos usuários são criados. Os" +#~ " usuários existentes mantêm sua própria " +#~ "configuração." + +#~ msgid "Support visibility" +#~ msgstr "Visibilidade do suporte" + +#~ msgid "" +#~ "Remove donate and support prompts for" +#~ " all users with a one-time key" +#~ " (€25, one key per instance)." +#~ msgstr "" +#~ "Remover prompts de doação e suporte " +#~ "para todos os usuários com uma " +#~ "chave única (25€, uma chave por " +#~ "instância)." + +#~ msgid "Copy your System ID below and use it when buying the key." +#~ msgstr "Copie seu ID do sistema abaixo e use-o ao comprar a chave." + +#~ msgid "Buy key" +#~ msgstr "Comprar a chave" + +#~ msgid "— key sent by email." +#~ msgstr "— chave enviada por correio electrónico." + +#~ msgid "Paste the code below and click Verify." +#~ msgstr "Cole o código abaixo e clique em Verificar." + +#~ msgid "Get key" +#~ msgstr "Obter a chave" + +#~ msgid "Step 1: System ID" +#~ msgstr "Passo 1: ID do sistema" + +#~ msgid "Use this ID when purchasing your key." +#~ msgstr "Use este ID ao comprar sua chave." + +#~ msgid "" +#~ "Supporter instance: prompts are minimized; " +#~ "support entry points remain available." +#~ msgstr "" +#~ "Exemplo de suporte: os prompts são " +#~ "minimizados; os pontos de entrada de " +#~ "suporte permanecem disponíveis." + +#~ msgid "Step 3: Paste code" +#~ msgstr "Passo 3: Colar o código" + +#~ msgid "Enter code from email" +#~ msgstr "Digite o código do e- mail" + +#~ msgid "Verify and hide for everyone" +#~ msgstr "Verificar e esconder para todos" + +#~ msgid "Company Branding" +#~ msgstr "Marcação da empresa" + +#~ msgid "Invoice Defaults" +#~ msgstr "Padrões de Fatura" + +#~ msgid "Backup Settings" +#~ msgstr "Configuração da Cópia de Segurança" + +#~ msgid "LDAP" +#~ msgstr "LDAP" + +#~ msgid "" +#~ "LDAP authentication is configured with " +#~ "environment variables. Values below are " +#~ "read-only." +#~ msgstr "" +#~ "A autenticação LDAP está configurada com" +#~ " variáveis de ambiente. Os valores " +#~ "abaixo são somente de leitura." + +#~ msgid "Enabled for auth" +#~ msgstr "Habilitado para autenticação" + +#~ msgid "Host" +#~ msgstr "Máquina" + +#~ msgid "SSL" +#~ msgstr "SSL" + +#~ msgid "TLS" +#~ msgstr "TLS" + +#~ msgid "on" +#~ msgstr "ligado" + +#~ msgid "off" +#~ msgstr "desligado" + +#~ msgid "User DN" +#~ msgstr "DN do usuário" + +#~ msgid "User login attribute" +#~ msgstr "Atributo de login do usuário" + +#~ msgid "Test LDAP Connection" +#~ msgstr "Testar a Ligação LDAP" + +#~ msgid "Export Settings" +#~ msgstr "Configuração da Exportação" + +#~ msgid "Kiosk Mode" +#~ msgstr "Modo do Kiosk" + +#~ msgid "Enable Kiosk Mode" +#~ msgstr "Activar o Modo do Quiosque" + +#~ msgid "" +#~ "Kiosk mode provides a simplified " +#~ "interface for warehouse operations with " +#~ "barcode scanning and time tracking. " +#~ "Access at" +#~ msgstr "" +#~ "O modo Kiosk fornece uma interface " +#~ "simplificada para operações de armazém " +#~ "com varredura de código de barras " +#~ "e rastreamento de tempo. Acesso em" + +#~ msgid "Auto-Logout Timeout (Minutes)" +#~ msgstr "Tempo- limite de saída automática (minutos)" + +#~ msgid "Default Movement Type" +#~ msgstr "Tipo de Movimento Padrão" + +#~ msgid "Adjustment" +#~ msgstr "Ajuste" + +#~ msgid "Transfer" +#~ msgstr "Transferência" + +#~ msgid "Sale" +#~ msgstr "Venda" + +#~ msgid "Rent" +#~ msgstr "Aluguer" + +#~ msgid "Purchase" +#~ msgstr "Compra" + +#~ msgid "Allow Camera-Based Barcode Scanning" +#~ msgstr "Permitir a digitalização de código de barras baseado na câmera" + +#~ msgid "Require Reason for Stock Adjustments" +#~ msgstr "Exigir motivo para ajustamentos das existências" + +#~ msgid "" +#~ "Configure the shared server-side AI " +#~ "helper for the web app, desktop " +#~ "app, and API clients. Hosted provider" +#~ " keys stay on the server." +#~ msgstr "" +#~ "Configure o auxiliar de IA do lado" +#~ " do servidor compartilhado para os " +#~ "clientes da aplicação web, desktop e " +#~ "API. As chaves de provedor hospedadas" +#~ " permanecem no servidor." + +#~ msgid "Availability" +#~ msgstr "Disponibilidade" + +#~ msgid "Use environment default" +#~ msgstr "Usar o ambiente por omissão" + +#~ msgid "currently" +#~ msgstr "atualmente" + +#~ msgid "Provider" +#~ msgstr "Fornecedor" + +#~ msgid "Base URL" +#~ msgstr "URL base" + +#~ msgid "For Ollama, this is the URL from the Flask server to Ollama." +#~ msgstr "Para Ollama, esta é a URL do servidor Flask para Ollama." + +#~ msgid "Model" +#~ msgstr "Modelo" + +#~ msgid "Hosted API key" +#~ msgstr "Chave de API hospedada" + +#~ msgid "Stored; leave blank to keep" +#~ msgstr "Armazenado; deixe em branco para manter" + +#~ msgid "Only required for hosted providers" +#~ msgstr "Só é necessário para os fornecedores hospedados" + +#~ msgid "Clear stored API key" +#~ msgstr "Limpar a chave de API armazenada" + +#~ msgid "Timeout seconds" +#~ msgstr "Tempo- limite segundos" + +#~ msgid "Context limit" +#~ msgstr "Limite de contexto" + +#~ msgid "System prompt" +#~ msgstr "Solicitação do sistema" + +#~ msgid "Test AI connection" +#~ msgstr "Testar a ligação de IA" + +#~ msgid "Privacy & Analytics" +#~ msgstr "Privacidade e Análise" + +#~ msgid "Save Settings" +#~ msgstr "Configuração de Gravação" + +#~ msgid "Upload New Logo" +#~ msgstr "Enviar Novo Logo" + +#~ msgid "Logo Preview" +#~ msgstr "Visualização do Logo" + +#~ msgid "Are you sure you want to remove the company logo?" +#~ msgstr "Tem certeza de que quer remover o logotipo da empresa?" + +#~ msgid "Remove Logo" +#~ msgstr "Remover logotipo" + +#~ msgid "Copied" +#~ msgstr "Copiado" + +#~ msgid "Please enter a code." +#~ msgstr "Introduza um código." + +#~ msgid "" +#~ "Success. Donate UI is now hidden " +#~ "for everyone. Reload the page to " +#~ "see the change." +#~ msgstr "" +#~ "Sucesso. Doar UI está agora escondido" +#~ " para todos. Recarregar a página para" +#~ " ver a alteração." + +#~ msgid "Request failed." +#~ msgstr "O pedido falhou." + +#~ msgid "Testing connection..." +#~ msgstr "Testando conexão..." + +#~ msgid "Connection failed." +#~ msgstr "A ligação falhou." + +#~ msgid "AI connection succeeded." +#~ msgstr "A ligação IA foi bem sucedida." + +#~ msgid "AI connection failed." +#~ msgstr "A ligação IA falhou." + +#~ msgid "Telemetry & Analytics Dashboard" +#~ msgstr "Painel de Telemetria e Análise" + +#~ msgid "Admin → Settings" +#~ msgstr "Admin → Configurações" + +#~ msgid "Password Reset" +#~ msgstr "Reiniciar senha" + +#~ msgid "Leave blank to keep current password" +#~ msgstr "Deixar em branco para manter a senha actual" + +#~ msgid "Client Portal Access" +#~ msgstr "Acesso ao Portal do Cliente" + +#~ msgid "Assigned Clients (Subcontractor)" +#~ msgstr "Clientes designados (Subcontratante)" + +#~ msgid "Assigned clients" +#~ msgstr "Clientes designados" + +#~ msgid "Hold Ctrl/Cmd to select multiple clients." +#~ msgstr "Mantenha Ctrl/Cmd para selecionar vários clientes." + +#~ msgid "Admin Access" +#~ msgstr "Acesso de Administração" + +#~ msgid "Migrate to new role system" +#~ msgstr "Migrar para um novo sistema de funções" + +#~ msgid "Migrate" +#~ msgstr "Migrar" + +#~ msgid "Roles" +#~ msgstr "Funções" + +#~ msgid "No users found." +#~ msgstr "Nenhum usuário encontrado." + +#~ msgid "" +#~ "Cannot delete user \"{name}\" because " +#~ "they have {count} time entries. Users" +#~ " with existing time entries cannot be" +#~ " deleted." +#~ msgstr "" +#~ "Não é possível excluir o usuário " +#~ "\"{name}\" porque eles têm {count} " +#~ "entradas de tempo. Usuários com entradas" +#~ " de tempo existentes não podem ser" +#~ " excluídos." + +#~ msgid "Cannot Delete User" +#~ msgstr "Incapaz de Apagar o Utilizador" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " user \"{name}\"? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Tem a certeza de que deseja apagar" +#~ " o utilizador \"{name}\"? Esta acção " +#~ "não pode ser desfeita." + +#~ msgid "Delete User" +#~ msgstr "Apagar o Utilizador" + +#~ msgid "Custom Field Definitions" +#~ msgstr "Definições de Campo Personalizadas" + +#~ msgid "Create" +#~ msgstr "Criar" + +#~ msgid "Edit Custom Field Definition" +#~ msgstr "Editar a Definição Personalizada do Campo" + +#~ msgid "Create Custom Field Definition" +#~ msgstr "Criar uma Definição de Campo Personalizada" + +#~ msgid "Define a global custom field that can be used across all clients" +#~ msgstr "" +#~ "Defina um campo personalizado global que" +#~ " pode ser usado em todos os " +#~ "clientes" + +#~ msgid "Field Key" +#~ msgstr "Tecla de Campo" + +#~ msgid "e.g., debtor_number" +#~ msgstr "Por exemplo, número devedor" + +#~ msgid "" +#~ "Unique identifier for this field " +#~ "(letters, numbers, and underscores only). " +#~ "Cannot be changed after creation." +#~ msgstr "" +#~ "Identificador único para este campo " +#~ "(cartas, números e sublinha apenas). Não" +#~ " é possível mudar após a criação." + +#~ msgid "Label" +#~ msgstr "Legenda" + +#~ msgid "e.g., Debtor Number" +#~ msgstr "Por exemplo, Número do Devedor" + +#~ msgid "Display name shown in client forms" +#~ msgstr "Mostrar o nome mostrado nos formulários do cliente" + +#~ msgid "Optional help text for this field" +#~ msgstr "Texto de ajuda opcional para este campo" + +#~ msgid "Display Order" +#~ msgstr "Mostrar Ordem" + +#~ msgid "Lower numbers appear first" +#~ msgstr "Números mais baixos aparecem primeiro" + +#~ msgid "Mandatory" +#~ msgstr "Obrigatório" + +#~ msgid "Required field - clients must fill this in" +#~ msgstr "Campo obrigatório - os clientes devem preencher esta informação" + +#~ msgid "Only active fields are shown in client forms" +#~ msgstr "Somente os campos ativos são mostrados nos formulários do cliente" + +#~ msgid "Manage global custom field definitions for clients" +#~ msgstr "Gerencie definições de campo personalizadas globais para clientes" + +#~ msgid "Create Custom Field" +#~ msgstr "Criar um Campo Personalizado" + +#~ msgid "Order" +#~ msgstr "Ordem" + +#~ msgid "Required" +#~ msgstr "Requerido" + +#~ msgid "Optional" +#~ msgstr "Opcional" + +#~ msgid "No custom field definitions found." +#~ msgstr "Nenhuma definição de campo personalizada encontrada." + +#~ msgid "How Custom Field Definitions Work" +#~ msgstr "Como as definições de campo personalizadas funcionam" + +#~ msgid "" +#~ "Custom field definitions allow you to" +#~ " create global fields that can be " +#~ "used across all clients. This eliminates" +#~ " the need to recreate the same " +#~ "custom fields for each client." +#~ msgstr "" +#~ "Definições de campo personalizadas permitem" +#~ " que você crie campos globais que " +#~ "podem ser usados em todos os " +#~ "clientes. Isso elimina a necessidade de" +#~ " recriar os mesmos campos personalizados" +#~ " para cada cliente." + +#~ msgid "Features:" +#~ msgstr "Características:" + +#~ msgid "Define custom fields once and use them for all clients" +#~ msgstr "Definir campos personalizados uma vez e usá- los para todos os clientes" + +#~ msgid "Mark fields as mandatory to ensure they are always filled" +#~ msgstr "" +#~ "Marcar os campos como obrigatórios para" +#~ " garantir que estão sempre preenchidos" + +#~ msgid "Control field order and visibility" +#~ msgstr "Ordem e visibilidade do campo de controle" + +#~ msgid "Link templates can be assigned to make field values clickable" +#~ msgstr "" +#~ "Modelos de ligação podem ser atribuídos" +#~ " para tornar os valores do campo " +#~ "clicáveis" + +#~ msgid "Example:" +#~ msgstr "Exemplo:" + +#~ msgid "" +#~ "Create a field definition with key " +#~ "\"debtor_number\" and label \"Debtor Number\"" +#~ msgstr "" +#~ "Criar uma definição de campo com a" +#~ " chave \"debtor number\" e etiquetar " +#~ "\"Debtor Number\"" + +#~ msgid "Mark it as mandatory if required" +#~ msgstr "Marcar como obrigatório se necessário" + +#~ msgid "When creating or editing a client, this field will automatically appear" +#~ msgstr "Ao criar ou editar um cliente, este campo irá aparecer automaticamente" + +#~ msgid "" +#~ "Create a link template to make the" +#~ " value clickable (e.g., " +#~ "https://erp.example.com/customer/%value%)" +#~ msgstr "" +#~ "Crie um modelo de link para tornar" +#~ " o valor clicável (por exemplo, " +#~ "https://erp.example.com/cliente/%value%)" + +#~ msgid "" +#~ "Warning: %(count)d client(s) have a " +#~ "value for this custom field. Deleting" +#~ " this field definition will remove " +#~ "the field value from all %(count)d " +#~ "client(s). Are you sure you want " +#~ "to delete the custom field definition" +#~ " \"%(label)s\"?" +#~ msgstr "" + +#~ msgid "Are you sure you want to delete this custom field definition?" +#~ msgstr "" +#~ "Tem a certeza de que deseja apagar" +#~ " esta definição de campo personalizada?" + +#~ msgid "Set as default template" +#~ msgstr "Definir como modelo padrão" + +#~ msgid "HTML Template" +#~ msgstr "Modelo HTML" + +#~ msgid "Custom Message" +#~ msgstr "Mensagem personalizada" + +#~ msgid "More Variables" +#~ msgstr "Mais Variáveis" + +#~ msgid "Create Template" +#~ msgstr "Criar Modelo" + +#~ msgid "Available Variables" +#~ msgstr "Variáveis Disponíveis" + +#~ msgid "Invoice Variables" +#~ msgstr "Variáveis de Fatura" + +#~ msgid "Other Variables" +#~ msgstr "Outras Variáveis" + +#~ msgid "Send test email" +#~ msgstr "Enviar e- mail de teste" + +#~ msgid "" +#~ "Sends the saved template (save changes" +#~ " first). Uses the same rendering as" +#~ " a real invoice email. Default " +#~ "recipient can be set under Admin →" +#~ " Email Configuration." +#~ msgstr "" +#~ "Envia o modelo gravado (salvar primeiro" +#~ " as alterações). Usa a mesma " +#~ "renderização como um e-mail de fatura" +#~ " real. O destinatário padrão pode ser" +#~ " definido em Admin → Configuração de" +#~ " Email." + +#~ msgid "Recipient" +#~ msgstr "Destinatário" + +#~ msgid "Invoice ID" +#~ msgstr "ID da factura" + +#~ msgid "Update Template" +#~ msgstr "Actualizar o Modelo" + +#~ msgid "Failed to send test email." +#~ msgstr "Não foi possível enviar o e- mail de teste." + +#~ msgid "No email templates found." +#~ msgstr "Não foram encontrados modelos de e- mail." + +#~ msgid "Create your first email template to customize invoice emails." +#~ msgstr "" +#~ "Crie seu primeiro modelo de email " +#~ "para personalizar os e-mails de fatura." + +#~ msgid "Create Email Template" +#~ msgstr "Criar Modelo de E- mail" + +#~ msgid "Delete Email Template" +#~ msgstr "Apagar o Modelo de E- mail" + +#~ msgid "Are you sure you want to delete" +#~ msgstr "Tem a certeza de que deseja apagar" + +#~ msgid "This action cannot be undone." +#~ msgstr "Esta acção não pode ser desfeita." + +#~ msgid "" +#~ "Uses the same rendering as a real" +#~ " invoice email. Set a default address" +#~ " under Admin → Email Configuration " +#~ "(Test recipient email)." +#~ msgstr "" +#~ "Usa a mesma renderização como um " +#~ "e-mail de fatura real. Defina um " +#~ "endereço padrão em Admin → Email " +#~ "Configuration (Test receiver email)." + +#~ msgid "Template Information" +#~ msgstr "Informação do Modelo" + +#~ msgid "Integration Setup" +#~ msgstr "Configuração da Integração" + +#~ msgid "" +#~ "Configure OAuth credentials for each " +#~ "integration. Global integrations are shared" +#~ " across all users." +#~ msgstr "" +#~ "Configurar credenciais OAuth para cada " +#~ "integração. As integrações globais são " +#~ "compartilhadas em todos os usuários." + +#~ msgid "Global" +#~ msgstr "Global" + +#~ msgid "Per User" +#~ msgstr "Por Usuário" + +#~ msgid "Setup" +#~ msgstr "Configuração" + +#~ msgid "Trello API Key" +#~ msgstr "Chave de API Trello" + +#~ msgid "Get from https://trello.com/app-key" +#~ msgstr "Obter de https://trello.com/app-key" + +#~ msgid "Get your API key from" +#~ msgstr "Obter sua chave de API de" + +#~ msgid "Trello API Secret" +#~ msgstr "Trello API Secret" + +#~ msgid "Leave empty to keep current value" +#~ msgstr "Deixar em branco para manter o valor atual" + +#~ msgid "Get your API secret from" +#~ msgstr "Obter o seu segredo API de" + +#~ msgid "(shown after generating API key)" +#~ msgstr "(mostrado após gerar a chave de API)" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow. The token will be generated " +#~ "automatically during connection." +#~ msgstr "" +#~ "Após salvar API Key e Secret, você" +#~ " pode conectar Trello usando fluxo " +#~ "OAuth. O token será gerado " +#~ "automaticamente durante a conexão." + +#~ msgid "OAuth Client ID" +#~ msgstr "ID do Cliente OAuth" + +#~ msgid "OAuth Client Secret" +#~ msgstr "Segredo do Cliente OAuth" + +#~ msgid "Required for new setup. Leave empty to keep existing secret." +#~ msgstr "" +#~ "Necessário para nova configuração. Deixe " +#~ "vazio para manter o segredo existente." + +#~ msgid "Leave empty for \"common\" (multi-tenant)" +#~ msgstr "Deixar em branco para \"comuns\" (multi-tenant)" + +#~ msgid "" +#~ "Leave empty to use \"common\" (multi-" +#~ "tenant). Enter your Azure AD tenant " +#~ "ID for single-tenant apps." +#~ msgstr "" +#~ "Deixe em branco para usar \"comum\" " +#~ "(multi-tenant). Digite seu Azure AD " +#~ "locatário ID para aplicativos de um " +#~ "único inquilino." + +#~ msgid "GitLab Instance URL" +#~ msgstr "URL de instância GitLab" + +#~ msgid "" +#~ "URL of your GitLab instance. Use " +#~ "\"https://gitlab.com\" for GitLab.com or your" +#~ " self-hosted GitLab URL." +#~ msgstr "" +#~ "URL da sua instância GitLab. Use " +#~ "\"https://gitlab.com\" para GitLab.com ou sua" +#~ " URL GitLab self-hosted." + +#~ msgid "OAuth Redirect URI" +#~ msgstr "OAuth Redirect URI" + +#~ msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" +#~ msgstr "" +#~ "Adicione esta URL como um URI de" +#~ " redirecionamento autorizado nas configurações" +#~ " do aplicativo OAuth:" + +#~ msgid "Automatic Connection Flow" +#~ msgstr "Fluxo automático de conexão" + +#~ msgid "" +#~ "After you save these credentials, users" +#~ " can click \"Connect Google Calendar\"" +#~ msgstr "" +#~ "Depois de salvar essas credenciais, os" +#~ " usuários podem clicar em \"Conectar " +#~ "Google Calendar\"" + +#~ msgid "They will be automatically redirected to Google OAuth" +#~ msgstr "Eles serão automaticamente redirecionados para o Google OAuth" + +#~ msgid "No manual credential entry needed - fully automatic!" +#~ msgstr "" +#~ "Nenhuma entrada de credencial manual " +#~ "necessária - totalmente automática!" + +#~ msgid "Each user connects their own Google Calendar account" +#~ msgstr "Cada usuário conecta sua própria conta do Google Calendar" + +#~ msgid "Save Credentials" +#~ msgstr "Salvar Credenciais" + +#~ msgid "How Google Calendar Works" +#~ msgstr "Como funciona o Google Calendar" + +#~ msgid "" +#~ "After you save the OAuth credentials " +#~ "above, users can connect their Google" +#~ " Calendar by clicking \"Connect Google " +#~ "Calendar\" on the Integrations page." +#~ msgstr "" +#~ "Depois de salvar as credenciais do " +#~ "OAuth acima, os usuários podem conectar" +#~ " seu Google Calendar clicando em " +#~ "\"Conectar Google Calendar\" na página " +#~ "Integrações." + +#~ msgid "" +#~ "They will be automatically redirected to" +#~ " Google to authorize access - no " +#~ "manual credential entry needed!" +#~ msgstr "" +#~ "Eles serão automaticamente redirecionados para" +#~ " o Google para autorizar o acesso " +#~ "- nenhuma entrada de credencial manual" +#~ " necessária!" + +#~ msgid "" +#~ "Each user connects their own Google " +#~ "Calendar account (per-user integration)." +#~ msgstr "" +#~ "Cada usuário conecta sua própria conta" +#~ " do Google Calendar (integração por " +#~ "usuário)." + +#~ msgid "Connection Status" +#~ msgstr "Estado da Ligação" + +#~ msgid "View Integration" +#~ msgstr "Ver Integração" + +#~ msgid "Next Steps" +#~ msgstr "Passos Próximos" + +#~ msgid "After saving credentials, connect the integration:" +#~ msgstr "Após salvar credenciais, conecte a integração:" + +#~ msgid "Connect Integration" +#~ msgstr "Conectar a Integração" + +#~ msgid "Edit Link Template" +#~ msgstr "Editar Modelo de Ligação" + +#~ msgid "Create Link Template" +#~ msgstr "Criar um Modelo de Ligação" + +#~ msgid "Configure URL template for client custom fields" +#~ msgstr "Configurar o modelo de URL para os campos personalizados do cliente" + +#~ msgid "Template Name" +#~ msgstr "Nome do Modelo" + +#~ msgid "e.g., ERP System Link" +#~ msgstr "Por exemplo, ligação do sistema ERP" + +#~ msgid "A descriptive name for this link template" +#~ msgstr "Um nome descritivo para este modelo de ligação" + +#~ msgid "Optional description" +#~ msgstr "Descrição facultativa" + +#~ msgid "URL Template" +#~ msgstr "Modelo de URL" + +#~ msgid "https://example.com/customer/%value%" +#~ msgstr "https://exemplo.com/cliente/%valor%" + +#~ msgid "" +#~ "URL with {value} or %value% placeholder." +#~ " Examples: https://erp.example.com/customer/{value} or" +#~ " https://erp.example.com/customer/%value%" +#~ msgstr "" + +#~ msgid "The key in the client custom_fields JSON to use" +#~ msgstr "A chave no JSON do cliente para usar" + +#~ msgid "Icon" +#~ msgstr "Ícone" + +#~ msgid "fas fa-link" +#~ msgstr "fas fa-link" + +#~ msgid "Font Awesome icon class (e.g., fas fa-link)" +#~ msgstr "Fonte Classe de ícone impressionante (por exemplo, fas fa-link)" + +#~ msgid "Only active templates are shown on client pages" +#~ msgstr "Somente modelos ativos são mostrados nas páginas do cliente" + +#~ msgid "Manage URL templates for client custom fields" +#~ msgstr "Gerenciar modelos de URL para campos personalizados do cliente" + +#~ msgid "Name" +#~ msgstr "Nome" + +#~ msgid "Are you sure you want to delete this link template?" +#~ msgstr "Tem a certeza de que deseja apagar este modelo de ligação?" + +#~ msgid "No link templates found." +#~ msgstr "Não foram encontrados modelos de ligações." + +#~ msgid "How Link Templates Work" +#~ msgstr "Como os modelos de links funcionam" + +#~ msgid "" +#~ "Link templates allow you to create " +#~ "quick links to external systems (like" +#~ " ERP systems) using values from " +#~ "client custom fields." +#~ msgstr "" +#~ "Os modelos de links permitem criar " +#~ "links rápidos para sistemas externos " +#~ "(como sistemas ERP) usando valores de" +#~ " campos personalizados do cliente." + +#~ msgid "Create a custom field called \"debtor_number\" on a client" +#~ msgstr "Criar um campo personalizado chamado \"debtor number\" em um cliente" + +#~ msgid "Create a link template with URL:" +#~ msgstr "Criar um modelo de ligação com URL:" + +#~ msgid "Set the field key to \"debtor_number\"" +#~ msgstr "Definir a tecla de campo como \"debtor number\"" + +#~ msgid "" +#~ "When viewing the client, a link " +#~ "will appear that opens the ERP " +#~ "system with the correct customer ID" +#~ msgstr "" +#~ "Ao visualizar o cliente, aparecerá um" +#~ " link que abre o sistema ERP " +#~ "com o ID correto do cliente" + +#~ msgid "URL Template Format:" +#~ msgstr "Formato do Modelo de URL:" + +#~ msgid "Use {value} as a placeholder for the custom field value." +#~ msgstr "Usar {value} como placeholder para o valor do campo personalizado." + +#~ msgid "System Permissions" +#~ msgstr "Permissões do Sistema" + +#~ msgid "All available permissions in the system" +#~ msgstr "Todas as permissões disponíveis no sistema" + +#~ msgid "Back to Roles" +#~ msgstr "Voltar aos Funções" + +#~ msgid "permissions" +#~ msgstr "permissões" + +#~ msgid "No description available" +#~ msgstr "Nenhuma descrição disponível" + +#~ msgid "About Permissions" +#~ msgstr "Sobre Permissões" + +#~ msgid "" +#~ "Permissions define what actions users " +#~ "can perform in the system. These " +#~ "permissions are assigned to roles, and" +#~ " roles are assigned to users. This" +#~ " provides a flexible and granular " +#~ "access control system." +#~ msgstr "" +#~ "Permissões definem quais ações os " +#~ "usuários podem realizar no sistema. " +#~ "Essas permissões são atribuídas aos " +#~ "papéis, e os papéis são atribuídos " +#~ "aos usuários. Isso fornece um sistema" +#~ " de controle de acesso flexível e " +#~ "granular." + +#~ msgid "Edit Role" +#~ msgstr "Editar Papel" + +#~ msgid "Create New Role" +#~ msgstr "Criar um novo papel" + +#~ msgid "Role Name" +#~ msgstr "Nome do Papel" + +#~ msgid "A unique name for this role" +#~ msgstr "Um nome único para este papel" + +#~ msgid "Optional description of this role" +#~ msgstr "Descrição facultativa desta função" + +#~ msgid "Permissions" +#~ msgstr "Permissões" + +#~ msgid "Select the permissions this role should have:" +#~ msgstr "Selecione as permissões que esta função deve ter:" + +#~ msgid "Toggle All" +#~ msgstr "Alternar Todos" + +#~ msgid "Module visibility" +#~ msgstr "Visibilidade do módulo" + +#~ msgid "" +#~ "Select which modules should be hidden" +#~ " for this role. Hidden modules will" +#~ " not appear in the navigation and " +#~ "cannot be accessed directly." +#~ msgstr "" +#~ "Selecione quais módulos devem ser " +#~ "escondidos para esta função. Os módulos" +#~ " ocultos não aparecerão na navegação " +#~ "e não poderão ser acessados diretamente." + +#~ msgid "Hide" +#~ msgstr "Ocultar" + +#~ msgid "Update Role" +#~ msgstr "Atualizar função" + +#~ msgid "Create Role" +#~ msgstr "Criar Papel" + +#~ msgid "Manage roles and their permissions" +#~ msgstr "Gerenciar funções e suas permissões" + +#~ msgid "View Permissions" +#~ msgstr "Ver Permissões" + +#~ msgid "Total Roles" +#~ msgstr "Total de Funções" + +#~ msgid "System Roles" +#~ msgstr "Funções do Sistema" + +#~ msgid "Custom Roles" +#~ msgstr "Funções Personalizadas" + +#~ msgid "Assigned Users" +#~ msgstr "Utilizadores Designados" + +#~ msgid "Type" +#~ msgstr "Tipo" + +#~ msgid "Default role" +#~ msgstr "Papel padrão" + +#~ msgid "user" +#~ msgstr "usuário" + +#~ msgid "No users" +#~ msgstr "Sem usuários" + +#~ msgid "Custom" +#~ msgstr "Personalizado" + +#~ msgid "View" +#~ msgstr "Ver" + +#~ msgid "Permissions for" +#~ msgstr "Permissões para" + +#~ msgid "No permissions assigned." +#~ msgstr "Sem permissões atribuídas." + +#~ msgid "No roles found." +#~ msgstr "Nenhum papel encontrado." + +#~ msgid "About Roles & Permissions" +#~ msgstr "Sobre Funções e Permissões" + +#~ msgid "" +#~ "Roles are collections of permissions " +#~ "that can be assigned to users. " +#~ "System roles are predefined and cannot" +#~ " be deleted or renamed, but custom" +#~ " roles can be created for your " +#~ "specific needs." +#~ msgstr "" +#~ "Funções são coleções de permissões que" +#~ " podem ser atribuídas aos usuários. " +#~ "As funções do sistema são predefinidas" +#~ " e não podem ser apagadas ou " +#~ "renomeadas, mas funções personalizadas podem" +#~ " ser criadas para suas necessidades " +#~ "específicas." + +#~ msgid "Are you sure you want to delete the role" +#~ msgstr "Tem a certeza de que deseja apagar a função" + +#~ msgid "Delete Role" +#~ msgstr "Apagar Papel" + +#~ msgid "No description" +#~ msgstr "Sem descrição" + +#~ msgid "Role Information" +#~ msgstr "Informação de Papel" + +#~ msgid "System Role" +#~ msgstr "Papel do Sistema" + +#~ msgid "Custom Role" +#~ msgstr "Papel Personalizado" + +#~ msgid "Total Permissions" +#~ msgstr "Permissões totais" + +#~ msgid "Created" +#~ msgstr "Criado" + +#~ msgid "Users with this Role" +#~ msgstr "Usuários com este papel" + +#~ msgid "No users assigned to this role yet." +#~ msgstr "Nenhum usuário atribuído a este papel ainda." + +#~ msgid "This role has no permissions assigned." +#~ msgstr "Este papel não tem permissões atribuídas." + +#~ msgid "Back to User" +#~ msgstr "Voltar ao Utilizador" + +#~ msgid "Manage Roles for" +#~ msgstr "Gerenciar funções para" + +#~ msgid "Assign Roles" +#~ msgstr "Atribuir funções" + +#~ msgid "" +#~ "Select the roles this user should " +#~ "have. Users inherit all permissions from" +#~ " their assigned roles." +#~ msgstr "" +#~ "Selecione os papéis que este usuário " +#~ "deve ter. Os usuários herdam todas " +#~ "as permissões de seus papéis atribuídos." + +#~ msgid "Update Roles" +#~ msgstr "Atualizar funções" + +#~ msgid "Current Effective Permissions" +#~ msgstr "Permissões atuais eficazes" + +#~ msgid "" +#~ "These are all the permissions the " +#~ "user currently has through their roles:" +#~ msgstr "" +#~ "Estas são todas as permissões que " +#~ "o usuário tem atualmente através de " +#~ "seus papéis:" + +#~ msgid "No permissions (assign roles to grant permissions)" +#~ msgstr "Sem permissões (atribuir funções para conceder permissões)" + +#~ msgid "Create Webhook" +#~ msgstr "Criar o Webhook" + +#~ msgid "Edit Webhook" +#~ msgstr "Editar o Webhook" + +#~ msgid "Configure webhook for integrations" +#~ msgstr "Configurar webhook para integrações" + +#~ msgid "Webhook URL" +#~ msgstr "URL do Webhook" + +#~ msgid "The URL where webhook events will be sent" +#~ msgstr "O URL para onde os eventos Webhook serão enviados" + +#~ msgid "Events" +#~ msgstr "Eventos" + +#~ msgid "Select which events should trigger this webhook" +#~ msgstr "Selecione quais eventos devem ativar este webhook" + +#~ msgid "HTTP Method" +#~ msgstr "Método HTTP" + +#~ msgid "Content Type" +#~ msgstr "Tipo de Conteúdo" + +#~ msgid "Max Retries" +#~ msgstr "Máximo de tentativas" + +#~ msgid "Retry Delay (seconds)" +#~ msgstr "Atraso de repetição (segundos)" + +#~ msgid "Timeout (seconds)" +#~ msgstr "Tempo- limite (segundos)" + +#~ msgid "Regenerate Secret" +#~ msgstr "Regenerar o Segredo" + +#~ msgid "Warning: Regenerating the secret will invalidate the current secret" +#~ msgstr "Aviso: Regenerar o segredo invalidará o segredo atual" + +#~ msgid "Manage webhook integrations" +#~ msgstr "Gerenciar integrações webhook" + +#~ msgid "URL" +#~ msgstr "URL" + +#~ msgid "Statistics" +#~ msgstr "Estatísticas" + +#~ msgid "Total" +#~ msgstr "Total" + +#~ msgid "No webhooks configured" +#~ msgstr "Sem webhooks configurados" + +#~ msgid "Create Your First Webhook" +#~ msgstr "Crie seu primeiro Webhook" + +#~ msgid "Webhook details" +#~ msgstr "Detalhes do Webhook" + +#~ msgid "Test" +#~ msgstr "Ensaio" + +#~ msgid "Secret" +#~ msgstr "Segredo" + +#~ msgid "(truncated)" +#~ msgstr "(truncado)" + +#~ msgid "Total Deliveries" +#~ msgstr "Total das entregas" + +#~ msgid "Successful" +#~ msgstr "Sucesso" + +#~ msgid "Last Delivery" +#~ msgstr "Última entrega" + +#~ msgid "Recent Deliveries" +#~ msgstr "Entregas Recentes" + +#~ msgid "Event" +#~ msgstr "Evento" + +#~ msgid "Attempt" +#~ msgstr "Tentativa" + +#~ msgid "Response" +#~ msgstr "Resposta" + +#~ msgid "Time" +#~ msgstr "Tempo" + +#~ msgid "Retrying" +#~ msgstr "Repetição" + +#~ msgid "No deliveries yet" +#~ msgstr "Nenhuma entrega ainda" + +#~ msgid "Send a test webhook event?" +#~ msgstr "Enviar um evento webhook de teste?" + +#~ msgid "Test webhook sent successfully!" +#~ msgstr "Teste webhook enviado com sucesso!" + +#~ msgid "Error:" +#~ msgstr "Erro:" + +#~ msgid "Unknown error" +#~ msgstr "Erro desconhecido" + +#~ msgid "Error sending test webhook:" +#~ msgstr "Erro ao enviar o webhook de teste:" + +#~ msgid "Analytics Dashboard" +#~ msgstr "Painel de Análise" + +#~ msgid "Last 7 days" +#~ msgstr "Últimos 7 dias" + +#~ msgid "Last 30 days" +#~ msgstr "Últimos 30 dias" + +#~ msgid "Last 90 days" +#~ msgstr "Últimos 90 dias" + +#~ msgid "Last year" +#~ msgstr "Ano passado" + +#~ msgid "Export all charts as PNG" +#~ msgstr "Exportar todos os gráficos como PNG" + +#~ msgid "Export Charts" +#~ msgstr "Exportar Gráficos" + +#~ msgid "Key metrics and insights about your time tracking" +#~ msgstr "Principais métricas e insights sobre seu rastreamento de tempo" + +#~ msgid "Avg Daily Hours" +#~ msgstr "Avg Horas Diárias" + +#~ msgid "Regular" +#~ msgstr "Regular" + +#~ msgid "Overtime" +#~ msgstr "Horas extraordinárias" + +#~ msgid "Daily Hours Trend" +#~ msgstr "Tendência das Horas Diárias" + +#~ msgid "Billable vs Non-Billable" +#~ msgstr "Billable vs Non- Billable" + +#~ msgid "Weekly Trends" +#~ msgstr "Tendências Semanais" + +#~ msgid "Hours Forecast" +#~ msgstr "Previsão das Horas" + +#~ msgid "Next 7 days based on 7-day average" +#~ msgstr "Próximo 7 dias com base na média de 7 dias" + +#~ msgid "Daily Regular vs Overtime" +#~ msgstr "Diariamente Regular vs Overtime" + +#~ msgid "Hours by Time of Day" +#~ msgstr "Horas por Hora do Dia" + +#~ msgid "Project Efficiency" +#~ msgstr "Eficiência do projecto" + +#~ msgid "User Performance" +#~ msgstr "Desempenho do Usuário" + +#~ msgid "Failed to load charts. Please try again." +#~ msgstr "Falha ao carregar gráficos. Por favor, tente novamente." + +#~ msgid "Failed to refresh charts. Please try again." +#~ msgstr "Não foi possível actualizar os gráficos. Por favor, tente novamente." + +#~ msgid "Hour of Day" +#~ msgstr "Hora do Dia" + +#~ msgid "Revenue" +#~ msgstr "Receitas" + +#~ msgid "Forecast" +#~ msgstr "Previsão" + +#~ msgid "Charts exported. Check your downloads." +#~ msgstr "Gráficos exportados. Verifique os seus downloads." + +#~ msgid "Export" +#~ msgstr "Exportar" + +#~ msgid "Key metrics and actionable insights" +#~ msgstr "Principais métricas e insights acionáveis" + +#~ msgid "vs previous period" +#~ msgstr "versus período anterior" + +#~ msgid "of total" +#~ msgstr "Total" + +#~ msgid "Potential Revenue" +#~ msgstr "Receitas Potenciais" + +#~ msgid "Avg rate:" +#~ msgstr "Taxa de Avg:" + +#~ msgid "Trend" +#~ msgstr "Tendência" + +#~ msgid "active projects" +#~ msgstr "Projectos activos" + +#~ msgid "Insights & Recommendations" +#~ msgstr "Insights & Recomendações" + +#~ msgid "Cumulative" +#~ msgstr "Cumulativo" + +#~ msgid "Billable Distribution" +#~ msgstr "Distribuição Billable" + +#~ msgid "Task Status Overview" +#~ msgstr "Visão geral do status da tarefa" + +#~ msgid "Tasks Completed" +#~ msgstr "Tarefas Concluídas" + +#~ msgid "In Progress" +#~ msgstr "Em Progresso" + +#~ msgid "To Do" +#~ msgstr "Para Fazer" + +#~ msgid "Revenue by Project" +#~ msgstr "Receitas por projecto" + +#~ msgid "Payments Over Time" +#~ msgstr "Pagamentos ao longo do tempo" + +#~ msgid "Payment Methods" +#~ msgstr "Métodos de pagamento" + +#~ msgid "Revenue vs Payments" +#~ msgstr "Receitas vs Pagamentos" + +#~ msgid "Collection Rate" +#~ msgstr "Taxa de Colecção" + +#~ msgid "Project Completion Rate" +#~ msgstr "Taxa de Conclusão do Projecto" + +#~ msgid "Billable" +#~ msgstr "Billable" + +#~ msgid "Non-Billable" +#~ msgstr "Não Billável" + +#~ msgid "Completed" +#~ msgstr "Concluído" + +#~ msgid "Cancelled" +#~ msgstr "Cancelado" + +#~ msgid "Completion Rate (%)" +#~ msgstr "Taxa de conclusão (%)" + +#~ msgid "Mobile insights overview" +#~ msgstr "Visão geral dos insights móveis" + +#~ msgid "Daily Avg" +#~ msgstr "Avg diário" + +#~ msgid "Daily Hours" +#~ msgstr "Horas Diárias" + +#~ msgid "Top Projects" +#~ msgstr "Projetos Topo" + +#~ msgid "Time Entry Approvals" +#~ msgstr "Homologação de entrada no tempo" + +#~ msgid "Review and approve time entries" +#~ msgstr "Rever e aprovar as datas" + +#~ msgid "Pending Approvals" +#~ msgstr "Homologação pendente" + +#~ msgid "Time Entry" +#~ msgstr "Entrada de Tempo" + +#~ msgid "Requested by" +#~ msgstr "Pedidos" + +#~ msgid "hours" +#~ msgstr "horas" + +#~ msgid "Direct" +#~ msgstr "Directo" + +#~ msgid "Approve" +#~ msgstr "Aprovar" + +#~ msgid "Reject" +#~ msgstr "Rejeitar" + +#~ msgid "No pending approvals" +#~ msgstr "Nenhuma aprovação pendente" + +#~ msgid "All time entries have been reviewed." +#~ msgstr "Todos os registros de tempo foram revisados." + +#~ msgid "My Requests" +#~ msgstr "Meus Pedidos" + +#~ msgid "No pending requests" +#~ msgstr "Sem pedidos pendentes" + +#~ msgid "You have no time entry approval requests." +#~ msgstr "Você não tem nenhum pedido de aprovação de entrada de tempo." + +#~ msgid "Reject Time Entry" +#~ msgstr "Rejeitar o Item de Tempo" + +#~ msgid "Reason for rejection" +#~ msgstr "Motivo da rejeição" + +#~ msgid "Approval Details" +#~ msgstr "Detalhes da aprovação" + +#~ msgid "Review time entry approval request" +#~ msgstr "Pedido de aprovação da entrada no prazo de revisão" + +#~ msgid "Time Entry Details" +#~ msgstr "Detalhes do registro da hora" + +#~ msgid "Entry ID" +#~ msgstr "ID de entrada" + +#~ msgid "Approval Information" +#~ msgstr "Informações de aprovação" + +#~ msgid "Requested at" +#~ msgstr "Pedidos" + +#~ msgid "Approved by" +#~ msgstr "Aprovação" + +#~ msgid "Approved at" +#~ msgstr "Aprovação em" + +#~ msgid "Request comment" +#~ msgstr "Pedido de comentário" + +#~ msgid "Approval comment" +#~ msgstr "Comentário da aprovação" + +#~ msgid "Rejection reason" +#~ msgstr "Razão da rejeição" + +#~ msgid "Track who changed what and when" +#~ msgstr "Rastrear quem mudou o quê e quando" + +#~ msgid "Filters" +#~ msgstr "Filtros" + +#~ msgid "Entity Type" +#~ msgstr "Tipo de Entidade" + +#~ msgid "All Types" +#~ msgstr "Todos os Tipos" + +#~ msgid "Entity ID" +#~ msgstr "ID da entidade" + +#~ msgid "All Users" +#~ msgstr "Todos os Usuários" + +#~ msgid "Action" +#~ msgstr "Acção" + +#~ msgid "All Actions" +#~ msgstr "Todas as Acções" + +#~ msgid "Updated" +#~ msgstr "Atualizado" + +#~ msgid "Deleted" +#~ msgstr "Removido" + +#~ msgid "Time Range" +#~ msgstr "Intervalo de Tempo" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Timestamp" +#~ msgstr "Timetamp" + +#~ msgid "Entity" +#~ msgstr "Entidade" + +#~ msgid "Field" +#~ msgstr "Campo" + +#~ msgid "Change" +#~ msgstr "Alterar" + +#~ msgid "Reason" +#~ msgstr "Justificação" + +#~ msgid "Change Information" +#~ msgstr "Alterar a Informação" + +#~ msgid "Entity Context" +#~ msgstr "Contexto da Entidade" + +#~ msgid "TimeEntry Created" +#~ msgstr "TimeEntry Criado" + +#~ msgid "Entry Owner" +#~ msgstr "Dono de Entrada" + +#~ msgid "Field Change Details" +#~ msgstr "Detalhes da Mudança de Campo" + +#~ msgid "Full Entity State" +#~ msgstr "Estado da Entidade Plena" + +#~ msgid "Before Change" +#~ msgstr "Antes de Mudar" + +#~ msgid "After Change" +#~ msgstr "Após a Mudança" + +#~ msgid "Request Information" +#~ msgstr "Pedido de Informação" + +#~ msgid "Update your password." +#~ msgstr "Actualiza a tua senha." + +#~ msgid "Current Password" +#~ msgstr "Senha atual" + +#~ msgid "New Password" +#~ msgstr "Nova Senha" + +#~ msgid "Confirm New Password" +#~ msgstr "Confirmar Nova Senha" + +#~ msgid "Change Password" +#~ msgstr "Mudar a Senha" + +#~ msgid "Security" +#~ msgstr "Segurança" + +#~ msgid "Manage two-factor authentication for your account." +#~ msgstr "Gerencie a autenticação de dois fatores para sua conta." + +#~ msgid "Two-factor authentication" +#~ msgstr "Autenticação de dois fatores" + +#~ msgid "Please fill both password fields or leave both empty" +#~ msgstr "Por favor preencha ambos os campos de senha ou deixe ambos em branco" + +#~ msgid "Password must be at least 8 characters long" +#~ msgstr "A senha deve ter pelo menos 8 caracteres" + +#~ msgid "Passwords do not match" +#~ msgstr "As senhas não correspondem" + +#~ msgid "Forgot password" +#~ msgstr "Esqueceu a senha" + +#~ msgid "Reset your password" +#~ msgstr "Reinicie sua senha" + +#~ msgid "" +#~ "Enter your username or email address." +#~ " If an account matches and email " +#~ "is configured, we will send you a" +#~ " reset link." +#~ msgstr "" +#~ "Digite seu nome de usuário ou " +#~ "endereço de e-mail. Se uma conta " +#~ "corresponder e o e-mail estiver " +#~ "configurado, enviaremos um link de " +#~ "reset." + +#~ msgid "Username or email" +#~ msgstr "Utilizador ou e- mail" + +#~ msgid "your-username or you@example.com" +#~ msgstr "seu nome de usuário ou você@example.com" + +#~ msgid "Send reset link" +#~ msgstr "Enviar o link de reset" + +#~ msgid "Back to sign in" +#~ msgstr "Voltar para iniciar sessão" + +#~ msgid "Login" +#~ msgstr "Login" + +#~ msgid "Track time. Stay organized." +#~ msgstr "Hora da corrida. Mantenham-se organizados." + +#~ msgid "Sign in to your account" +#~ msgstr "Iniciar sessão na sua conta" + +#~ msgid "Demo credentials" +#~ msgstr "Credenciais de demonstração" + +#~ msgid "Forgot your password?" +#~ msgstr "Esqueceu-se da senha?" + +#~ msgid "LDAP authentication is enabled" +#~ msgstr "A autenticação LDAP está habilitada" + +#~ msgid "Sign in" +#~ msgstr "Iniciar sessão" + +#~ msgid "Use the demo credentials above." +#~ msgstr "Use as credenciais de demonstração acima." + +#~ msgid "Tip: Enter a new username to create your account." +#~ msgstr "Dica: Digite um novo nome de usuário para criar sua conta." + +#~ msgid "Or continue with" +#~ msgstr "Ou continuar com" + +#~ msgid "Single Sign-On" +#~ msgstr "Sinal Único" + +#~ msgid "Edit Profile" +#~ msgstr "Editar perfil" + +#~ msgid "Member Since" +#~ msgstr "Membro desde" + +#~ msgid "Reset password" +#~ msgstr "Reiniciar senha" + +#~ msgid "Choose a new password" +#~ msgstr "Escolha uma nova senha" + +#~ msgid "Enter a new password for your account." +#~ msgstr "Digite uma nova senha para sua conta." + +#~ msgid "New password" +#~ msgstr "Nova senha" + +#~ msgid "At least 8 characters" +#~ msgstr "Pelo menos 8 caracteres" + +#~ msgid "Confirm password" +#~ msgstr "Confirmar senha" + +#~ msgid "Repeat your new password" +#~ msgstr "Repita sua nova senha" + +#~ msgid "Update password" +#~ msgstr "Actualizar a senha" + +#~ msgid "Enter authentication code" +#~ msgstr "Indique o código de autenticação" + +#~ msgid "Open your authenticator app and enter the 6-digit code." +#~ msgstr "Abra seu aplicativo autenticador e digite o código de 6 dígitos." + +#~ msgid "Code" +#~ msgstr "Código" + +#~ msgid "Verify" +#~ msgstr "Verificar" + +#~ msgid "" +#~ "Add an extra layer of security to" +#~ " your account using a TOTP " +#~ "authenticator app (Google Authenticator, " +#~ "Authy, 1Password, etc.)." +#~ msgstr "" +#~ "Adicione uma camada extra de segurança" +#~ " à sua conta usando um aplicativo " +#~ "de autenticação TOTP (Google Authenticator," +#~ " Authy, 1Password, etc.)." + +#~ msgid "Two-factor authentication is enabled for your account." +#~ msgstr "A autenticação de dois fatores está habilitada para sua conta." + +#~ msgid "Enter a current code to disable" +#~ msgstr "Digite um código atual para desabilitar" + +#~ msgid "Disable 2FA" +#~ msgstr "Desactivar o 2FA" + +#~ msgid "Two-factor authentication is currently disabled." +#~ msgstr "A autenticação de dois fatores está atualmente desabilitada." + +#~ msgid "A secret will be generated when you enable 2FA." +#~ msgstr "Um segredo será gerado quando você ativar 2FA." + +#~ msgid "1) Add to your authenticator app" +#~ msgstr "1) Adicionar ao seu aplicativo autenticador" + +#~ msgid "If you cannot scan a QR code, you can manually enter this secret:" +#~ msgstr "" +#~ "Se você não pode digitalizar um " +#~ "código QR, você pode digitar manualmente" +#~ " este segredo:" + +#~ msgid "Provisioning URI:" +#~ msgstr "Provisão de URI:" + +#~ msgid "2) Verify and enable" +#~ msgstr "2) Verificar e ativar" + +#~ msgid "Enter the 6-digit code" +#~ msgstr "Digite o código de 6 dígitos" + +#~ msgid "Enable 2FA" +#~ msgstr "Activar 2FA" + +#~ msgid "A password reset was requested for your TimeTracker account." +#~ msgstr "Foi solicitada uma redefinição de senha para a sua conta TimeTracker." + +#~ msgid "" +#~ "If the button does not work, copy" +#~ " and paste this link into your " +#~ "browser:" +#~ msgstr "Se o botão não funcionar, copie e cole este link em seu navegador:" + +#~ msgid "If you did not request this, you can ignore this email." +#~ msgstr "Se você não solicitou isso, você pode ignorar este e-mail." + +#~ msgid "Budget Alerts & Forecasting" +#~ msgstr "Alertas e previsões orçamentais" + +#~ msgid "Monitor project budgets and forecast completion" +#~ msgstr "Monitorizar os orçamentos dos projetos e a conclusão das previsões" + +#~ msgid "Unacknowledged Alerts" +#~ msgstr "Alertas não reconhecidos" + +#~ msgid "Critical Alerts" +#~ msgstr "Alertas críticos" + +#~ msgid "Projects with Budgets" +#~ msgstr "Projectos com orçamentos" + +#~ msgid "Warning Alerts" +#~ msgstr "Alertas" + +#~ msgid "Active Alerts" +#~ msgstr "Alertas Ativos" + +#~ msgid "Acknowledge" +#~ msgstr "Confirmar" + +#~ msgid "Project Budget Status" +#~ msgstr "Situação do Orçamento do Projecto" + +#~ msgid "Budget" +#~ msgstr "Orçamento" + +#~ msgid "Consumed" +#~ msgstr "Consumido" + +#~ msgid "Remaining" +#~ msgstr "Restante" + +#~ msgid "Progress" +#~ msgstr "Progresso" + +#~ msgid "over" +#~ msgstr "sobre" + +#~ msgid "Over Budget" +#~ msgstr "Over Budget" + +#~ msgid "Critical" +#~ msgstr "Crítico" + +#~ msgid "Healthy" +#~ msgstr "Saudável" + +#~ msgid "No projects with budgets found" +#~ msgstr "Nenhum projeto com orçamentos encontrados" + +#~ msgid "Alert acknowledged successfully" +#~ msgstr "Alerta reconhecido com sucesso" + +#~ msgid "Failed to acknowledge alert" +#~ msgstr "Não foi possível reconhecer o alerta" + +#~ msgid "Budget Analysis & Forecasting" +#~ msgstr "Análise e previsão do orçamento" + +#~ msgid "Back to Dashboard" +#~ msgstr "Voltar ao Painel" + +#~ msgid "View Project" +#~ msgstr "Ver Projeto" + +#~ msgid "Total Budget" +#~ msgstr "Orçamento total" + +#~ msgid "Burn Rate Analysis" +#~ msgstr "Análise da Taxa de Queimaduras" + +#~ msgid "Daily Burn Rate" +#~ msgstr "Taxa diária de queimaduras" + +#~ msgid "Weekly Burn Rate" +#~ msgstr "Taxa de Queimaduras Semanais" + +#~ msgid "Monthly Burn Rate" +#~ msgstr "Taxa de Queimagem Mensal" + +#~ msgid "Period Total" +#~ msgstr "Período Total" + +#~ msgid "Based on last" +#~ msgstr "Baseado no último" + +#~ msgid "days" +#~ msgstr "dias" + +#~ msgid "No burn rate data available" +#~ msgstr "Nenhum dado de taxa de gravação disponível" + +#~ msgid "Completion Estimate" +#~ msgstr "Estimativa de conclusão" + +#~ msgid "Estimated Completion Date" +#~ msgstr "Data de conclusão estimada" + +#~ msgid "days remaining" +#~ msgstr "dias restantes" + +#~ msgid "Confidence Level" +#~ msgstr "Nível de Confiança" + +#~ msgid "No completion estimate available" +#~ msgstr "Nenhuma estimativa de conclusão disponível" + +#~ msgid "Cost Trend Analysis" +#~ msgstr "Análise de tendências de custos" + +#~ msgid "Average" +#~ msgstr "Média" + +#~ msgid "Resource Allocation" +#~ msgstr "Alocação de Recursos" + +#~ msgid "Total Cost" +#~ msgstr "Custo total" + +#~ msgid "Hourly Rate" +#~ msgstr "Taxa por hora" + +#~ msgid "Team Member" +#~ msgstr "Membro da Equipa" + +#~ msgid "Cost" +#~ msgstr "Custo" + +#~ msgid "Hours %" +#~ msgstr "Horas %" + +#~ msgid "Cost %" +#~ msgstr "Custo %" + +#~ msgid "Entries" +#~ msgstr "Entradas" + +#~ msgid "Date & Time" +#~ msgstr "Data e hora" + +#~ msgid "Location" +#~ msgstr "Localização" + +#~ msgid "Reminder" +#~ msgstr "Lembrete" + +#~ msgid "minutes before" +#~ msgstr "minutos antes" + +#~ msgid "hours before" +#~ msgstr "horas antes" + +#~ msgid "days before" +#~ msgstr "dias antes" + +#~ msgid "Recurring" +#~ msgstr "Recorrendo" + +#~ msgid "Until" +#~ msgstr "Até" + +#~ msgid "Last Updated" +#~ msgstr "Última atualização" + +#~ msgid "Back to Calendar" +#~ msgstr "Voltar ao Calendário" + +#~ msgid "Delete Event" +#~ msgstr "Apagar o Evento" + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this event? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Tem a certeza de que deseja apagar" +#~ " este evento? Esta acção não pode " +#~ "ser desfeita." + +#~ msgid "Edit Event" +#~ msgstr "Editar evento" + +#~ msgid "New Event" +#~ msgstr "Novo Evento" + +#~ msgid "Title" +#~ msgstr "Título" + +#~ msgid "Start Date" +#~ msgstr "Data de início" + +#~ msgid "Start Time" +#~ msgstr "Hora de início" + +#~ msgid "End Date" +#~ msgstr "Data de Fim" + +#~ msgid "End Time" +#~ msgstr "Hora do fim" + +#~ msgid "All Day Event" +#~ msgstr "Evento Todo o Dia" + +#~ msgid "Event Type" +#~ msgstr "Tipo de Evento" + +#~ msgid "Meeting" +#~ msgstr "Reunião" + +#~ msgid "Appointment" +#~ msgstr "Nomeação" + +#~ msgid "Deadline" +#~ msgstr "Prazo" + +#~ msgid "-- None --" +#~ msgstr "- Nenhum --" + +#~ msgid "No reminder" +#~ msgstr "Sem lembrete" + +#~ msgid "5 minutes before" +#~ msgstr "5 minutos antes" + +#~ msgid "15 minutes before" +#~ msgstr "15 minutos antes" + +#~ msgid "30 minutes before" +#~ msgstr "30 minutos antes" + +#~ msgid "1 hour before" +#~ msgstr "1 hora antes" + +#~ msgid "1 day before" +#~ msgstr "1 dia antes" + +#~ msgid "Color" +#~ msgstr "Cor" + +#~ msgid "Choose a color for this event" +#~ msgstr "Escolha uma cor para este evento" + +#~ msgid "Private Event" +#~ msgstr "Evento Privado" + +#~ msgid "Private events are only visible to you" +#~ msgstr "Eventos privados só são visíveis para você" + +#~ msgid "Recurring Event" +#~ msgstr "Evento recorrente" + +#~ msgid "This is a recurring event" +#~ msgstr "Este é um evento recorrente" + +#~ msgid "Recurrence Pattern" +#~ msgstr "Padrão de recorrência" + +#~ msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" +#~ msgstr "Utilizar o formato RRULE (por exemplo, FREQ=WEEKLY;BYDAY=MO,WE,FR)" + +#~ msgid "Recurrence End Date" +#~ msgstr "Data de Fim da Recorrência" + +#~ msgid "Update Event" +#~ msgstr "Actualizar o Evento" + +#~ msgid "Create Event" +#~ msgstr "Criar Evento" + +#~ msgid "Calendar Integrations" +#~ msgstr "Integrações de Calendário" + +#~ msgid "Last synced" +#~ msgstr "Última sincronização sincronizada" + +#~ msgid "Manage Integration" +#~ msgstr "Gerenciar a Integração" + +#~ msgid "Are you sure you want to disconnect this integration?" +#~ msgstr "Tem certeza de que deseja desconectar esta integração?" + +#~ msgid "Disconnect" +#~ msgstr "Desligar" + +#~ msgid "No Calendar Integrations" +#~ msgstr "Sem Integração de Calendários" + +#~ msgid "Connect your calendar to automatically sync time entries and events." +#~ msgstr "" +#~ "Conecte seu calendário para sincronizar " +#~ "automaticamente entradas de tempo e " +#~ "eventos." + +#~ msgid "Connect Google Calendar" +#~ msgstr "Conectar o Google Calendar" + +#~ msgid "How Calendar Integration Works" +#~ msgstr "Como funciona a integração do calendário" + +#~ msgid "Time entries are automatically synced to your calendar" +#~ msgstr "" +#~ "Os itens de tempo são sincronizados " +#~ "automaticamente com o seu calendário" + +#~ msgid "Calendar events can be converted to time entries" +#~ msgstr "Os eventos de calendário podem ser convertidos em entradas de tempo" + +#~ msgid "Bidirectional sync keeps everything in sync" +#~ msgstr "A sincronização bidirecional mantém tudo em sincronia" + +#~ msgid "View and manage your events, tasks, and time entries" +#~ msgstr "Visualize e gerencie seus eventos, tarefas e entradas de tempo" + +#~ msgid "Day" +#~ msgstr "Dia" + +#~ msgid "Week" +#~ msgstr "Semana" + +#~ msgid "Month" +#~ msgstr "Mês" + +#~ msgid "Today" +#~ msgstr "Hoje" + +#~ msgid "Calendar colors" +#~ msgstr "Cores do calendário" + +#~ msgid "Legend" +#~ msgstr "Legenda" + +#~ msgid "Loading calendar..." +#~ msgstr "Carregando calendário..." + +#~ msgid "Event Details" +#~ msgstr "Detalhes do evento" + +#~ msgid "Go to all details" +#~ msgstr "Ir para todos os detalhes" + +#~ msgid "Team Chat" +#~ msgstr "Conversa em Equipa" + +#~ msgid "Team chat channel" +#~ msgstr "Canal de chat em equipe" + +#~ msgid "Type a message..." +#~ msgstr "Digite uma mensagem..." + +#~ msgid "Channel Info" +#~ msgstr "Informações do Canal" + +#~ msgid "Members" +#~ msgstr "Membros" + +#~ msgid "Channel Settings" +#~ msgstr "Configuração do Canal" + +#~ msgid "Upload Attachment" +#~ msgstr "Enviar o Anexo" + +#~ msgid "Select File" +#~ msgstr "Selecionar arquivo" + +#~ msgid "Maximum file size: 10 MB" +#~ msgstr "Tamanho máximo de arquivo: 10 MB" + +#~ msgid "Selected:" +#~ msgstr "Seleccionado:" + +#~ msgid "Upload" +#~ msgstr "Enviar" + +#~ msgid "Please select a file" +#~ msgstr "Seleccione por favor um ficheiro" + +#~ msgid "File size exceeds 10 MB limit" +#~ msgstr "O tamanho do arquivo excede o limite de 10 MB" + +#~ msgid "Failed to upload attachment" +#~ msgstr "Falha ao enviar o anexo" + +#~ msgid "Communicate with your team" +#~ msgstr "Comunicar com sua equipe" + +#~ msgid "Channels" +#~ msgstr "Canais" + +#~ msgid "Direct Messages" +#~ msgstr "Mensagens Diretas" + +#~ msgid "Select a channel to start chatting" +#~ msgstr "Selecione um canal para começar a conversar" + +#~ msgid "Create Channel" +#~ msgstr "Criar Canal" + +#~ msgid "Channel Name" +#~ msgstr "Nome do Canal" + +#~ msgid "Private channel" +#~ msgstr "Canal privado" + +#~ msgid "Edit Client Note" +#~ msgstr "Editar a Nota do Cliente" + +#~ msgid "Back to Client" +#~ msgstr "Voltar ao Cliente" + +#~ msgid "Client:" +#~ msgstr "Cliente:" + +#~ msgid "Created on" +#~ msgstr "Criado em" + +#~ msgid "Last edited on" +#~ msgstr "Última edição em" + +#~ msgid "Note Content" +#~ msgstr "Conteúdo da Nota" + +#~ msgid "Internal note visible only to your team." +#~ msgstr "Nota interna visível apenas para sua equipe." + +#~ msgid "Mark as important" +#~ msgstr "Marcar como importante" + +#~ msgid "Activity Feed" +#~ msgstr "Fonte de Actividade" + +#~ msgid "Client Portal" +#~ msgstr "Portal do Cliente" + +#~ msgid "Recent project activities" +#~ msgstr "Actividades de projectos recentes" + +#~ msgid "View details" +#~ msgstr "Ver detalhes" + +#~ msgid "No Activity" +#~ msgstr "Nenhuma Atividade" + +#~ msgid "" +#~ "No recent activity to display. Activity" +#~ " will appear here as projects are " +#~ "updated and time entries are logged." +#~ msgstr "" +#~ "Nenhuma atividade recente a ser exibida." +#~ " A actividade irá aparecer aqui à " +#~ "medida que os projectos forem " +#~ "actualizados e as entradas de tempo " +#~ "forem registadas." + +#~ msgid "Approvals" +#~ msgstr "Homologação" + +#~ msgid "Pending" +#~ msgstr "Pendente" + +#~ msgid "Approved" +#~ msgstr "Aprovado" + +#~ msgid "Rejected" +#~ msgstr "Rejeitado" + +#~ msgid "All" +#~ msgstr "Tudo" + +#~ msgid "Requested on" +#~ msgstr "Pedido" + +#~ msgid "Request Comment" +#~ msgstr "Solicitar Comentário" + +#~ msgid "View Details" +#~ msgstr "Ver Detalhes" + +#~ msgid "No Approvals" +#~ msgstr "Sem Aprovações" + +#~ msgid "You have no pending time entry approvals. All caught up!" +#~ msgstr "" +#~ "Você não tem nenhuma aprovação de " +#~ "entrada de tempo pendente. Está tudo " +#~ "em dia!" + +#~ msgid "No approvals found for this status." +#~ msgstr "Não foram encontradas aprovações para este estado." + +#~ msgid "Notifications" +#~ msgstr "Notificação" + +#~ msgid "More" +#~ msgstr "Mais" + +#~ msgid "Documents" +#~ msgstr "Documentos" + +#~ msgid "Activity" +#~ msgstr "Actividade" + +#~ msgid "Toggle menu" +#~ msgstr "Alternar o menu" + +#~ msgid "Approval update" +#~ msgstr "Actualização da homologação" + +#~ msgid "A time entry approval was requested." +#~ msgstr "Foi solicitada uma autorização de entrada no tempo." + +#~ msgid "An approval was updated." +#~ msgstr "Foi actualizada uma aprovação." + +#~ msgid "Welcome, %(client_name)s" +#~ msgstr "" + +#~ msgid "Customize dashboard" +#~ msgstr "Personalizar painel" + +#~ msgid "Choose which widgets to show and their order." +#~ msgstr "Escolha quais widgets mostrar e sua ordem." + +#~ msgid "Statistics cards" +#~ msgstr "Cartões estatísticos" + +#~ msgid "Pending actions" +#~ msgstr "Acções pendentes" + +#~ msgid "Recent invoices" +#~ msgstr "Facturas recentes" + +#~ msgid "Recent time entries" +#~ msgstr "Entradas de tempo recentes" + +#~ msgid "Select at least one widget." +#~ msgstr "Selecione pelo menos um widget." + +#~ msgid "Failed to save." +#~ msgstr "Não foi possível salvar." + +#~ msgid "View and download project documents" +#~ msgstr "Ver e baixar documentos do projeto" + +#~ msgid "Client Document" +#~ msgstr "Documento do Cliente" + +#~ msgid "Download" +#~ msgstr "Transferir" + +#~ msgid "No Documents" +#~ msgstr "Sem Documentos" + +#~ msgid "" +#~ "No documents have been shared with " +#~ "you yet. Documents will appear here " +#~ "once they are uploaded and made " +#~ "visible to clients." +#~ msgstr "" +#~ "Ainda não foram partilhados documentos " +#~ "consigo. Os documentos aparecerão aqui " +#~ "assim que forem enviados e tornados " +#~ "visíveis para os clientes." + +#~ msgid "An error occurred" +#~ msgstr "Ocorreu um erro" + +#~ msgid "Go to Dashboard" +#~ msgstr "Ir para o Painel" + +#~ msgid "Login to Client Portal" +#~ msgstr "Entrar no Portal do Cliente" + +#~ msgid "Go Back" +#~ msgstr "Voltar" + +#~ msgid "" +#~ "If you believe you should have " +#~ "access to the client portal, please " +#~ "contact your administrator or use the" +#~ " login link above." +#~ msgstr "" +#~ "Se você acredita que deve ter " +#~ "acesso ao portal do cliente, entre " +#~ "em contato com seu administrador ou " +#~ "use o link de login acima." + +#~ msgid "Invoice Details" +#~ msgstr "Detalhes da fatura" + +#~ msgid "Issue Date" +#~ msgstr "Data de emissão" + +#~ msgid "This invoice is %(days)d days overdue." +#~ msgstr "" + +#~ msgid "Invoice Items" +#~ msgstr "Itens de Fatura" + +#~ msgid "Quantity" +#~ msgstr "Quantidade" + +#~ msgid "Unit Price" +#~ msgstr "Preço unitário" + +#~ msgid "Pay Invoice" +#~ msgstr "Fatura Paga" + +#~ msgid "Back to Invoices" +#~ msgstr "Voltar às Faturas" + +#~ msgid "Invoices for %(client_name)s" +#~ msgstr "" + +#~ msgid "Unpaid" +#~ msgstr "Não pago" + +#~ msgid "Overdue" +#~ msgstr "Excedente" + +#~ msgid "Amount" +#~ msgstr "Montante" + +#~ msgid "days overdue" +#~ msgstr "dias atrasados" + +#~ msgid "No invoices found" +#~ msgstr "Nenhuma factura encontrada" + +#~ msgid "No paid invoices" +#~ msgstr "Nenhuma factura paga" + +#~ msgid "No unpaid invoices" +#~ msgstr "Nenhuma factura não paga" + +#~ msgid "No overdue invoices" +#~ msgstr "Nenhuma factura atrasada" + +#~ msgid "" +#~ "There are no invoices available at " +#~ "this time. Invoices will appear here " +#~ "once they are created." +#~ msgstr "" +#~ "Não existem facturas disponíveis neste " +#~ "momento. As facturas aparecerão aqui " +#~ "assim que forem criadas." + +#~ msgid "" +#~ "There are no invoices matching this " +#~ "filter. Try selecting a different " +#~ "status." +#~ msgstr "" +#~ "Não existem facturas correspondentes a " +#~ "este filtro. Tente selecionar um status" +#~ " diferente." + +#~ msgid "View All Invoices" +#~ msgstr "Ver Todas as Faturas" + +#~ msgid "Issue #%(id)s" +#~ msgstr "Emissão #%(id)s" + +#~ msgid "No description provided." +#~ msgstr "Nenhuma descrição fornecida." + +#~ msgid "Priority" +#~ msgstr "Prioridade" + +#~ msgid "Linked Task" +#~ msgstr "Tarefa Vinculada" + +#~ msgid "Assigned To" +#~ msgstr "Atribuído" + +#~ msgid "Resolved" +#~ msgstr "Resolvido" + +#~ msgid "Back to Issues" +#~ msgstr "Voltar aos Problemas" + +#~ msgid "Issue Reports" +#~ msgstr "Relatórios de Emissão" + +#~ msgid "Report and track issues for %(client_name)s" +#~ msgstr "" + +#~ msgid "Open" +#~ msgstr "Abrir" + +#~ msgid "Closed" +#~ msgstr "Fechado" + +#~ msgid "Report New Issue" +#~ msgstr "Relatar Nova Questão" + +#~ msgid "No issues found." +#~ msgstr "Nenhum problema encontrado." + +#~ msgid "Client Portal Login" +#~ msgstr "Login no Portal do Cliente" + +#~ msgid "View your projects and invoices" +#~ msgstr "Veja seus projetos e faturas" + +#~ msgid "Sign in to Client Portal" +#~ msgstr "Iniciar sessão no Portal do Cliente" + +#~ msgid "Enter your portal credentials to access your projects and invoices" +#~ msgstr "Digite suas credenciais do portal para acessar seus projetos e faturas" + +#~ msgid "portal_username" +#~ msgstr "portal utilizador" + +#~ msgid "Enter your password" +#~ msgstr "Digite sua senha" + +#~ msgid "Report a bug or issue you've encountered" +#~ msgstr "Reportar um erro ou problema que encontrou" + +#~ msgid "Brief description of the issue" +#~ msgstr "Breve descrição da questão" + +#~ msgid "Detailed description of the issue, steps to reproduce, etc." +#~ msgstr "Descrição detalhada da questão, passos para reproduzir, etc." + +#~ msgid "Select a project (optional)" +#~ msgstr "Selecione um projeto (opcional)" + +#~ msgid "Low" +#~ msgstr "Baixo" + +#~ msgid "Medium" +#~ msgstr "Médio" + +#~ msgid "High" +#~ msgstr "Alta" + +#~ msgid "Urgent" +#~ msgstr "Urgente" + +#~ msgid "Your Name" +#~ msgstr "Seu nome" + +#~ msgid "Your name (optional)" +#~ msgstr "Seu nome (opcional)" + +#~ msgid "Your Email" +#~ msgstr "Seu E-mail" + +#~ msgid "Your email (optional)" +#~ msgstr "O seu e- mail (opcional)" + +#~ msgid "Submit Issue" +#~ msgstr "Enviar Emissão" + +#~ msgid "Stay updated on your projects and invoices" +#~ msgstr "Mantenha-se atualizado sobre seus projetos e faturas" + +#~ msgid "Unread" +#~ msgstr "Não- Lido" + +#~ msgid "Mark All as Read" +#~ msgstr "Marcar tudo como lido" + +#~ msgid "Mark as read" +#~ msgstr "Marcar como lido" + +#~ msgid "No Notifications" +#~ msgstr "Sem Notificações" + +#~ msgid "You have no unread notifications. All caught up!" +#~ msgstr "Você não tem notificações por ler. Está tudo em dia!" + +#~ msgid "" +#~ "You have no notifications yet. " +#~ "Notifications will appear here when " +#~ "there are updates to your projects " +#~ "or invoices." +#~ msgstr "" +#~ "Ainda não tem notificações. As " +#~ "notificações aparecerão aqui quando houver " +#~ "atualizações de seus projetos ou " +#~ "faturas." + +#~ msgid "Project Comments" +#~ msgstr "Comentários do Projeto" + +#~ msgid "Comments" +#~ msgstr "Comentários" + +#~ msgid "Add Comment" +#~ msgstr "Adicionar Comentário" + +#~ msgid "Your Comment" +#~ msgstr "Seu Comentário" + +#~ msgid "Enter your comment..." +#~ msgstr "Digite seu comentário..." + +#~ msgid "Post Comment" +#~ msgstr "Comentário da Mensagem" + +#~ msgid "No Comments" +#~ msgstr "Sem comentários" + +#~ msgid "Be the first to comment on this project." +#~ msgstr "Seja o primeiro a comentar sobre este projeto." + +#~ msgid "Back to Projects" +#~ msgstr "Voltar aos Projetos" + +#~ msgid "Projects for %(client_name)s" +#~ msgstr "" + +#~ msgid "View Time Entries" +#~ msgstr "Ver Entradas de Tempo" + +#~ msgid "No projects found" +#~ msgstr "Nenhum projeto encontrado" + +#~ msgid "" +#~ "There are no projects available at " +#~ "this time. Projects will appear here " +#~ "once they are created and assigned " +#~ "to your account." +#~ msgstr "" +#~ "Não há projetos disponíveis neste " +#~ "momento. Os projetos aparecerão aqui " +#~ "assim que forem criados e atribuídos " +#~ "à sua conta." + +#~ msgid "Quote Details" +#~ msgstr "Detalhes das Citações" + +#~ msgid "Valid Until" +#~ msgstr "Válido Até" + +#~ msgid "This quote has expired." +#~ msgstr "Esta citação expirou." + +#~ msgid "Quote Items" +#~ msgstr "Itens de Citação" + +#~ msgid "SKU" +#~ msgstr "SKU" + +#~ msgid "Terms & Conditions" +#~ msgstr "Termos e Condições" + +#~ msgid "Are you sure you want to accept this quote?" +#~ msgstr "Tem certeza de que quer aceitar esta citação?" + +#~ msgid "Accept Quote" +#~ msgstr "Aceitar Citação" + +#~ msgid "Reject Quote" +#~ msgstr "Rejeitar Citação" + +#~ msgid "Back to Quotes" +#~ msgstr "Voltar às Citações" + +#~ msgid "Reason (optional)" +#~ msgstr "Justificação (facultativo)" + +#~ msgid "Please provide a reason for rejecting this quote..." +#~ msgstr "Por favor, forneça uma razão para rejeitar esta citação..." + +#~ msgid "Quotes for %(client_name)s" +#~ msgstr "" + +#~ msgid "Expired" +#~ msgstr "Expirado" + +#~ msgid "No quotes found." +#~ msgstr "Nenhuma citação encontrada." + +#~ msgid "Project and invoice summaries" +#~ msgstr "Resumos do projecto e da factura" + +#~ msgid "Hours tracked" +#~ msgstr "Horas monitoradas" + +#~ msgid "Project progress" +#~ msgstr "Progresso do projecto" + +#~ msgid "Est. / Budget" +#~ msgstr "Est. / Orçamento" + +#~ msgid "No project hours data available." +#~ msgstr "Nenhum dado de horas de projeto disponível." + +#~ msgid "Task summary" +#~ msgstr "Resumo da tarefa" + +#~ msgid "Total tasks: %(count)s" +#~ msgstr "" + +#~ msgid "No tasks yet." +#~ msgstr "Ainda não há tarefas." + +#~ msgid "Time by date (last 30 days)" +#~ msgstr "Prazo por data (últimos 30 dias)" + +#~ msgid "Recent Time Entries (Last 30 Days)" +#~ msgstr "Entradas recentes (últimos 30 dias)" + +#~ msgid "No recent time entries." +#~ msgstr "Nenhum registro de tempo recente." + +#~ msgid "Set Password" +#~ msgstr "Definir senha" + +#~ msgid "Set your password to get started" +#~ msgstr "Definir a sua senha para começar" + +#~ msgid "Set Your Password" +#~ msgstr "Definir sua senha" + +#~ msgid "Set a password for your client portal account" +#~ msgstr "Definir uma senha para a conta do portal do cliente" + +#~ msgid "Confirm Password" +#~ msgstr "Confirmar senha" + +#~ msgid "Confirm your password" +#~ msgstr "Confirme sua senha" + +#~ msgid "Time entries for %(client_name)s projects" +#~ msgstr "" + +#~ msgid "All Projects" +#~ msgstr "Todos os Projetos" + +#~ msgid "From Date" +#~ msgstr "Data" + +#~ msgid "To Date" +#~ msgstr "Até à data" + +#~ msgid "Total entries" +#~ msgstr "Total de entradas" + +#~ msgid "Total hours" +#~ msgstr "Total de horas" + +#~ msgid "" +#~ "No time entries match your current " +#~ "filters. Try adjusting your filter " +#~ "criteria." +#~ msgstr "" +#~ "Nenhum item de tempo corresponde aos " +#~ "seus filtros atuais. Tente ajustar seus" +#~ " critérios de filtro." + +#~ msgid "" +#~ "There are no time entries available " +#~ "at this time. Time entries will " +#~ "appear here once they are logged " +#~ "for your projects." +#~ msgstr "" +#~ "Não há entradas de tempo disponíveis " +#~ "neste momento. Entradas de tempo " +#~ "aparecerão aqui uma vez que estejam " +#~ "logadas para seus projetos." + +#~ msgid "Clear Filters" +#~ msgstr "Limpar os Filtros" + +#~ msgid "Recent Invoices" +#~ msgstr "Faturas Recentes" + +#~ msgid "View All" +#~ msgstr "Ver Tudo" + +#~ msgid "Invoices will appear here once they are created" +#~ msgstr "As facturas aparecerão aqui uma vez criadas" + +#~ msgid "Action Required" +#~ msgstr "Acção Necessária" + +#~ msgid "Time entries awaiting your review" +#~ msgstr "Entradas de tempo aguardando sua revisão" + +#~ msgid "Review Now" +#~ msgstr "Revisão Agora" + +#~ msgid "New Updates" +#~ msgstr "Novas Atualizações" + +#~ msgid "Notifications waiting for you" +#~ msgstr "Notificações à sua espera" + +#~ msgid "Projects will appear here once they are created" +#~ msgstr "Os projetos aparecerão aqui uma vez criados" + +#~ msgid "Total active" +#~ msgstr "Total activo" + +#~ msgid "Total Invoices" +#~ msgstr "Total das facturas" + +#~ msgid "All invoices" +#~ msgstr "Todas as facturas" + +#~ msgid "Recent Time Entries" +#~ msgstr "Entradas de Tempo Recentes" + +#~ msgid "Time entries will appear here once they are logged" +#~ msgstr "Os itens de tempo aparecerão aqui uma vez registrados" + +#~ msgid "Export to CSV" +#~ msgstr "Exportar para CSV" + +#~ msgid "Create Client" +#~ msgstr "Criar Cliente" + +#~ msgid "Back to Clients" +#~ msgstr "Voltar aos Clientes" + +#~ msgid "Add a new client to manage related projects and billing." +#~ msgstr "" +#~ "Adicione um novo cliente para gerenciar" +#~ " projetos relacionados e faturamento." + +#~ msgid "Enter client name" +#~ msgstr "Digite o nome do cliente" + +#~ msgid "Default Hourly Rate" +#~ msgstr "Taxa horária padrão" + +#~ msgid "e.g. 75.00" +#~ msgstr "Por exemplo, 75.00" + +#~ msgid "" +#~ "This rate will be automatically filled" +#~ " when creating projects for this " +#~ "client" +#~ msgstr "" +#~ "Esta taxa será preenchida automaticamente " +#~ "ao criar projetos para este cliente" + +#~ msgid "Supports Markdown" +#~ msgstr "Suporta Markdown" + +#~ msgid "Brief description of the client or project scope" +#~ msgstr "Breve descrição do cliente ou âmbito do projeto" + +#~ msgid "Contact Person" +#~ msgstr "Pessoa de contacto" + +#~ msgid "Primary contact name" +#~ msgstr "Nome de contacto primário" + +#~ msgid "contact@client.com" +#~ msgstr "contact@client.com" + +#~ msgid "Monthly Prepaid Hours" +#~ msgstr "Horas pré-pago mensais" + +#~ msgid "e.g. 50" +#~ msgstr "Por exemplo, 50" + +#~ msgid "Leave empty if this client has no prepaid allocation." +#~ msgstr "Deixe em branco se este cliente não tiver alocação pré-paga." + +#~ msgid "Prepaid Reset Day" +#~ msgstr "Dia de Reiniciação Pré-pago" + +#~ msgid "Day of the month when prepaid hours reset (1-28)." +#~ msgstr "Dia do mês em que as horas de pré-pago reset (1-28)." + +#~ msgid "+1 (555) 123-4567" +#~ msgstr "+1 (555) 123-4567" + +#~ msgid "Client address" +#~ msgstr "Endereço do cliente" + +#~ msgid "These custom fields are defined globally and available for all clients." +#~ msgstr "" +#~ "Estes campos personalizados são definidos " +#~ "globalmente e disponíveis para todos os" +#~ " clientes." + +#~ msgid "Enter value" +#~ msgstr "Digite o valor" + +#~ msgid "Choose a clear, descriptive name for the client organization." +#~ msgstr "Escolha um nome descritivo claro para a organização do cliente." + +#~ msgid "" +#~ "Set the standard hourly rate for " +#~ "this client. This will automatically " +#~ "populate when creating new projects." +#~ msgstr "" +#~ "Defina a taxa horária padrão para " +#~ "este cliente. Isso irá preencher " +#~ "automaticamente ao criar novos projetos." + +#~ msgid "Contact Information" +#~ msgstr "Informações de Contacto" + +#~ msgid "Add contact details for easy communication and record keeping." +#~ msgstr "" +#~ "Adicione detalhes de contato para fácil" +#~ " comunicação e manutenção de registros." + +#~ msgid "Prepaid Hours" +#~ msgstr "Horas pré- pagas" + +#~ msgid "" +#~ "Configure monthly included hours and the" +#~ " reset day if this client has a" +#~ " retainer or prepaid bundle." +#~ msgstr "" +#~ "Configure as horas incluídas mensais e" +#~ " o dia de reset se este cliente" +#~ " tiver um retentor ou pacote " +#~ "pré-pago." + +#~ msgid "Provide context about the client relationship or typical project types." +#~ msgstr "" +#~ "Fornecer contexto sobre o relacionamento " +#~ "do cliente ou tipos de projeto " +#~ "típicos." + +#~ msgid "Edit Client" +#~ msgstr "Editar cliente" + +#~ msgid "" +#~ "Enable portal access for this client." +#~ " Clients can log in with their " +#~ "own credentials to view projects, " +#~ "invoices, and time entries." +#~ msgstr "" +#~ "Activar o acesso ao portal para " +#~ "este cliente. Os clientes podem fazer" +#~ " login com suas próprias credenciais " +#~ "para visualizar projetos, faturas e " +#~ "entradas de tempo." + +#~ msgid "Enable Client Portal" +#~ msgstr "Activar o Portal do Cliente" + +#~ msgid "Enable Issue Reporting" +#~ msgstr "Activar o Relatório de Problemas" + +#~ msgid "Allow clients to report bugs and issues through the portal" +#~ msgstr "Permitir que os clientes relatem erros e problemas através do portal" + +#~ msgid "Portal Username" +#~ msgstr "Utilizador do Portal" + +#~ msgid "Unique username for portal login" +#~ msgstr "Nome de utilizador único para o login do portal" + +#~ msgid "Portal Password" +#~ msgstr "Senha do Portal" + +#~ msgid "Leave empty to keep current password" +#~ msgstr "Deixar em branco para manter a senha actual" + +#~ msgid "Set a new password or leave empty to keep current" +#~ msgstr "Defina uma nova senha ou deixe em branco para manter atual" + +#~ msgid "Current portal username" +#~ msgstr "Utilizador actual do portal" + +#~ msgid "Update Client" +#~ msgstr "Atualizar cliente" + +#~ msgid "Send Password Setup Email" +#~ msgstr "Enviar o Email de Configuração de Senha" + +#~ msgid "Send an email to %(email)s with a link to set their portal password." +#~ msgstr "" +#~ "Envie um e-mail para %(email)s com " +#~ "um link para definir sua senha do" +#~ " portal." + +#~ msgid "" +#~ "Email address is required to send " +#~ "password setup email. Please set the " +#~ "client email address above." +#~ msgstr "" +#~ "O endereço de email é necessário " +#~ "para enviar o email de configuração " +#~ "da senha. Por favor, defina o " +#~ "endereço de e- mail do cliente " +#~ "acima." + +#~ msgid "Client Statistics" +#~ msgstr "Estatísticas do Cliente" + +#~ msgid "Est. Total Cost" +#~ msgstr "Custo total" + +#~ msgid "Filter Clients" +#~ msgstr "Filtrar Clientes" + +#~ msgid "Toggle Filters" +#~ msgstr "Alternar os Filtros" + +#~ msgid "Hide Filters" +#~ msgstr "Esconder os Filtros" + +#~ msgid "Show Filters" +#~ msgstr "Mostrar os Filtros" + +#~ msgid "Assign a project to direct time entries before invoicing." +#~ msgstr "Atribuir um projeto para direcionar entradas de tempo antes de faturar." + +#~ msgid "No billable unbilled time for this client." +#~ msgstr "Não há tempo infalível para este cliente." + +#~ msgid "No unbilled time" +#~ msgstr "Sem tempo livre" + +#~ msgid "Invoice unbilled time" +#~ msgstr "Hora da factura sem factura" + +#~ msgid "Mark client as Inactive?" +#~ msgstr "Marcar cliente como inactivo?" + +#~ msgid "Change Client Status" +#~ msgstr "Mudar o Estado do Cliente" + +#~ msgid "Mark Inactive" +#~ msgstr "Marcar Inativo" + +#~ msgid "Activate client?" +#~ msgstr "Activar cliente?" + +#~ msgid "Activate Client" +#~ msgstr "Ativar cliente" + +#~ msgid "Delete Client" +#~ msgstr "Excluir cliente" + +#~ msgid "Client details and associated projects." +#~ msgstr "Detalhes do cliente e projetos associados." + +#~ msgid "Manage" +#~ msgstr "Gerenciar" + +#~ msgid "Primary" +#~ msgstr "Primário" + +#~ msgid "more contact(s)" +#~ msgstr "mais contactos" + +#~ msgid "No contacts yet" +#~ msgstr "Sem contatos ainda" + +#~ msgid "Add Contact" +#~ msgstr "Adicionar um Contacto" + +#~ msgid "Legacy Contact Info" +#~ msgstr "Informação de Contato Legado" + +#~ msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." +#~ msgstr "" + +#~ msgid "Current cycle start" +#~ msgstr "Início do ciclo atual" + +#~ msgid "Remaining hours" +#~ msgstr "Horas restantes" + +#~ msgid "h" +#~ msgstr "h" + +#~ msgid "Consumed this cycle" +#~ msgstr "Consumido este ciclo" + +#~ msgid "Attachments" +#~ msgstr "Anexos" + +#~ msgid "File" +#~ msgstr "Ficheiro" + +#~ msgid "" +#~ "Max size: 10 MB. Allowed: images, " +#~ "PDFs, documents, spreadsheets, archives" +#~ msgstr "" +#~ "Tamanho máximo: 10 MB. Permitido: " +#~ "imagens, PDFs, documentos, planilhas, arquivos" + +#~ msgid "Description (optional)" +#~ msgstr "Descrição (opcional)" + +#~ msgid "e.g., Contract, Agreement, etc." +#~ msgstr "Por exemplo, contrato, acordo, etc." + +#~ msgid "Visible to client in portal" +#~ msgstr "Visível ao cliente no portal" + +#~ msgid "Client Visible" +#~ msgstr "Visível do Cliente" + +#~ msgid "Are you sure you want to delete this attachment?" +#~ msgstr "Tem a certeza de que deseja apagar este anexo?" + +#~ msgid "Delete Attachment" +#~ msgstr "Apagar o Anexo" + +#~ msgid "No attachments yet" +#~ msgstr "Sem anexos ainda" + +#~ msgid "Archived" +#~ msgstr "Arquivado" + +#~ msgid "Recent Hours History" +#~ msgstr "Histórico de Horas Recentes" + +#~ msgid "Showing last %(count)s entries" +#~ msgstr "" + +#~ msgid "No recent time entries found." +#~ msgstr "Não foram encontrados itens de tempo recentes." + +#~ msgid "Internal Notes" +#~ msgstr "Notas internas" + +#~ msgid "Add Note" +#~ msgstr "Adicionar nota" + +#~ msgid "Add an internal note about this client..." +#~ msgstr "Adicionar uma nota interna sobre este cliente..." + +#~ msgid "Save Note" +#~ msgstr "Salvar nota" + +#~ msgid "edited" +#~ msgstr "editado" + +#~ msgid "Important" +#~ msgstr "Importante" + +#~ msgid "Unmark" +#~ msgstr "Desmarcar" + +#~ msgid "Mark Important" +#~ msgstr "Marcar Importante" + +#~ msgid "" +#~ "No notes yet. Add a note to " +#~ "keep track of important information " +#~ "about this client." +#~ msgstr "" +#~ "Ainda não há notas. Adicione uma " +#~ "nota para acompanhar informações importantes" +#~ " sobre este cliente." + +#~ msgid "Estimated total" +#~ msgstr "Total estimado" + +#~ msgid "Create a draft invoice?" +#~ msgstr "Criar uma fatura de rascunho?" + +#~ msgid "Create invoice" +#~ msgstr "Criar fatura" + +#~ msgid "Could not create invoice." +#~ msgstr "Não foi possível criar fatura." + +#~ msgid "Are you sure you want to delete this note?" +#~ msgstr "Tem a certeza de que deseja apagar esta nota?" + +#~ msgid "Delete Note" +#~ msgstr "Apagar nota" + +#~ msgid "Edited on" +#~ msgstr "Editado em" + +#~ msgid "Reply" +#~ msgstr "Responder" + +#~ msgid "Add Attachment" +#~ msgstr "Adicionar Anexo" + +#~ msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" +#~ msgstr "Max 10 MB. Imagens, PDFs, documentos, planilhas, arquivos" + +#~ msgid "Write your reply..." +#~ msgstr "Escreva a sua resposta..." + +#~ msgid "Replies are too deeply nested to display." +#~ msgstr "As respostas estão aninhadas demais para serem exibidas." + +#~ msgid "Comment nesting too deep to display." +#~ msgstr "Comente o ninho muito fundo para ser exibido." + +#~ msgid "Share your thoughts, updates, or questions..." +#~ msgstr "Compartilhe seus pensamentos, atualizações ou perguntas..." + +#~ msgid "You can use line breaks to format your comment." +#~ msgstr "Você pode usar quebras de linha para formatar seu comentário." + +#~ msgid "Add Image" +#~ msgstr "Adicionar imagem" + +#~ msgid "No comments yet" +#~ msgstr "Sem comentários ainda" + +#~ msgid "Start the conversation by adding the first comment." +#~ msgstr "Comece a conversa adicionando o primeiro comentário." + +#~ msgid "Add First Comment" +#~ msgstr "Adicionar primeiro comentário" + +#~ msgid "Edit Comment" +#~ msgstr "Editar Comentário" + +#~ msgid "Back" +#~ msgstr "Recuar" + +#~ msgid "Editing comment on:" +#~ msgstr "A editar o comentário em:" + +#~ msgid "Originally posted on" +#~ msgstr "Originalmente postado em" + +#~ msgid "Comment Content" +#~ msgstr "Comentário Conteúdo" + +#~ msgid "All Activities" +#~ msgstr "Todas as Atividades" + +#~ msgid "Time Templates" +#~ msgstr "Modelos de Tempo" + +#~ msgid "No recent activity" +#~ msgstr "Nenhuma atividade recente" + +#~ msgid "Activity will appear here as you work" +#~ msgstr "A atividade aparecerá aqui enquanto você trabalha" + +#~ msgid "Load More" +#~ msgstr "Carregar mais" + +#~ msgid "Failed to load activities" +#~ msgstr "Falha ao carregar as atividades" + +#~ msgid "Start a Chat" +#~ msgstr "Iniciar uma Conversa" + +#~ msgid "Search users..." +#~ msgstr "Procurar usuários..." + +#~ msgid "Loading users..." +#~ msgstr "Carregando usuários..." + +#~ msgid "Failed to load users" +#~ msgstr "Falha ao carregar os usuários" + +#~ msgid "No users found" +#~ msgstr "Nenhum usuário encontrado" + +#~ msgid "Starting chat..." +#~ msgstr "A iniciar a conversa..." + +#~ msgid "Failed to start chat" +#~ msgstr "Falha ao iniciar a conversa" + +#~ msgid "Client (auto-selected)" +#~ msgstr "Cliente (selecionado automaticamente)" + +#~ msgid "Select a client..." +#~ msgstr "Selecionar um cliente..." + +#~ msgid "Select a client (optional)" +#~ msgstr "Selecione um cliente (opcional)" + +#~ msgid "Selected" +#~ msgstr "Seleccionado" + +#~ msgid "Search..." +#~ msgstr "Procurar..." + +#~ msgid "Select all" +#~ msgstr "Selecionar todos" + +#~ msgid "No items available" +#~ msgstr "Nenhum item disponível" + +#~ msgid "Apply" +#~ msgstr "Aplicar" + +#~ msgid "Sync Now" +#~ msgstr "Sincronizar agora" + +#~ msgid "Pending Sync" +#~ msgstr "Sincronização Pendente" + +#~ msgid "No pending items" +#~ msgstr "Sem itens pendentes" + +#~ msgid "Sync All" +#~ msgstr "Sincronizar tudo" + +#~ msgid "Error loading queue" +#~ msgstr "Erro ao carregar a fila" + +#~ msgid "Toggle chat" +#~ msgstr "Alternar a conversa" + +#~ msgid "Chat" +#~ msgstr "Conversar" + +#~ msgid "Start new chat" +#~ msgstr "Iniciar nova conversa" + +#~ msgid "Minimize chat" +#~ msgstr "Minimizar a conversa" + +#~ msgid "View full" +#~ msgstr "Ver completo" + +#~ msgid "Failed to load messages" +#~ msgstr "Falha ao carregar as mensagens" + +#~ msgid "No messages yet" +#~ msgstr "Nenhuma mensagem ainda" + +#~ msgid "Failed to send message" +#~ msgstr "Falha ao enviar a mensagem" + +#~ msgid "" +#~ "Thank you for being a supporter. " +#~ "Sharing the app helps others discover" +#~ " it too." +#~ msgstr "" +#~ "Obrigado por ser um apoiante. " +#~ "Compartilhar o aplicativo ajuda outros a" +#~ " descobrir também." + +#~ msgid "" +#~ "TimeTracker is free and built " +#~ "independently. If it helps you, consider" +#~ " supporting its development." +#~ msgstr "" +#~ "TimeTracker é livre e construído " +#~ "independentemente. Se o ajudar, considere " +#~ "apoiar seu desenvolvimento." + +#~ msgid "" +#~ "Trusted by teams and freelancers who " +#~ "want simple, reliable time tracking." +#~ msgstr "" +#~ "Confiado em equipes e freelancers que" +#~ " querem um rastreamento de tempo " +#~ "simples e confiável." + +#~ msgid "Donate" +#~ msgstr "Doar" + +#~ msgid "Buy license (€25)" +#~ msgstr "Comprar licença (25 €)" + +#~ msgid "Love TimeTracker? Share it" +#~ msgstr "Love TimeTracker? Partilhar" + +#~ msgid "" +#~ "A license is a supporter badge —" +#~ " it does not lock features. You " +#~ "keep full access either way." +#~ msgstr "" +#~ "Uma licença é um emblema de " +#~ "suporte — não bloqueia funcionalidades. " +#~ "Mantém o acesso total de qualquer " +#~ "forma." + +#~ msgid "Home" +#~ msgstr "Principal" + +#~ msgid "Pagination" +#~ msgstr "Paginação" + +#~ msgid "Showing %(start)s to %(end)s of %(total)s entries" +#~ msgstr "" + +#~ msgid "Click to upload or drag and drop" +#~ msgstr "Clique para enviar ou arrastar e soltar" + +#~ msgid "Call" +#~ msgstr "Chamada" + +#~ msgid "Message" +#~ msgstr "Mensagem" + +#~ msgid "Direction" +#~ msgstr "Direcção" + +#~ msgid "Outbound" +#~ msgstr "Saída" + +#~ msgid "Inbound" +#~ msgstr "Inbound" + +#~ msgid "Subject" +#~ msgstr "Assunto" + +#~ msgid "Scheduled" +#~ msgstr "Agendado" + +#~ msgid "Follow-up Date" +#~ msgstr "Data de seguimento" + +#~ msgid "Content/Notes" +#~ msgstr "Conteúdo/Notas" + +#~ msgid "Save Communication" +#~ msgstr "Salvar comunicação" + +#~ msgid "First Name" +#~ msgstr "Nome próprio" + +#~ msgid "Last Name" +#~ msgstr "Sobrenome" + +#~ msgid "Mobile" +#~ msgstr "Telemóvel" + +#~ msgid "Department" +#~ msgstr "Departamento" + +#~ msgid "Contact" +#~ msgstr "Contacto" + +#~ msgid "Billing" +#~ msgstr "Faturação" + +#~ msgid "Technical" +#~ msgstr "Técnica" + +#~ msgid "Set as primary contact" +#~ msgstr "Definir como contato primário" + +#~ msgid "Tags" +#~ msgstr "Etiquetas" + +#~ msgid "Save Contact" +#~ msgstr "Gravar o Contacto" + +#~ msgid "Set Primary" +#~ msgstr "Definir Primário" + +#~ msgid "No contacts found" +#~ msgstr "Nenhum contacto encontrado" + +#~ msgid "Add First Contact" +#~ msgstr "Adicionar o Primeiro Contacto" + +#~ msgid "Primary Contact" +#~ msgstr "Contacto Primário" + +#~ msgid "Communication History" +#~ msgstr "Histórico de Comunicação" + +#~ msgid "Add Communication" +#~ msgstr "Adicionar uma Comunicação" + +#~ msgid "No communications recorded" +#~ msgstr "Nenhuma comunicação registada" + +#~ msgid "Add Activity" +#~ msgstr "Adicionar atividade" + +#~ msgid "Activity Date" +#~ msgstr "Data de atividade" + +#~ msgid "Brief subject or title" +#~ msgstr "Assunto ou título breves" + +#~ msgid "Deal Name" +#~ msgstr "Nome da Oferta" + +#~ msgid "Select Client" +#~ msgstr "Selecionar cliente" + +#~ msgid "Select Contact" +#~ msgstr "Selecionar contato" + +#~ msgid "Stage" +#~ msgstr "Etapa" + +#~ msgid "Deal Value" +#~ msgstr "Valor da oferta" + +#~ msgid "Win Probability" +#~ msgstr "Ganhar Probabilidade" + +#~ msgid "Expected Close Date" +#~ msgstr "Data de encerramento esperada" + +#~ msgid "Related Quote" +#~ msgstr "Citação Relacionada" + +#~ msgid "Select Quote" +#~ msgstr "Selecionar Citação" + +#~ msgid "Save Deal" +#~ msgstr "Gravar a Promoção" + +#~ msgid "Won" +#~ msgstr "Vencedo" + +#~ msgid "Lost" +#~ msgstr "Perdido" + +#~ msgid "All Stages" +#~ msgstr "Todas as Etapas" + +#~ msgid "Value" +#~ msgstr "Valor" + +#~ msgid "Probability" +#~ msgstr "Probabilidade" + +#~ msgid "Expected Close" +#~ msgstr "Esperado Fechar" + +#~ msgid "No deals found" +#~ msgstr "Nenhuma oferta encontrada" + +#~ msgid "Create First Deal" +#~ msgstr "Criar a Primeira Promoção" + +#~ msgid "Pipeline" +#~ msgstr "Pipeline" + +#~ msgid "Deal Information" +#~ msgstr "Informação da Oferta" + +#~ msgid "Actual Close" +#~ msgstr "Fechar Actual" + +#~ msgid "Owner" +#~ msgstr "Dono" + +#~ msgid "Related Lead" +#~ msgstr "Chumbo Relacionado" + +#~ msgid "Loss Reason" +#~ msgstr "Razão da perda" + +#~ msgid "Related Project" +#~ msgstr "Projeto Relacionado" + +#~ msgid "by" +#~ msgstr "por" + +#~ msgid "No activities recorded yet" +#~ msgstr "Nenhuma atividade registrada ainda" + +#~ msgid "Add first activity" +#~ msgstr "Adicionar primeira atividade" + +#~ msgid "History" +#~ msgstr "Histórico" + +#~ msgid "View full history" +#~ msgstr "Ver histórico completo" + +#~ msgid "No change history yet" +#~ msgstr "Ainda não existe histórico de alterações" + +#~ msgid "You Were Mentioned" +#~ msgstr "Você foi mencionado" + +#~ msgid "View Task & Reply" +#~ msgstr "Ver a & Resposta da Tarefa" + +#~ msgid "Invoice" +#~ msgstr "Fatura" + +#~ msgid "Invoice Overdue" +#~ msgstr "Excesso de Voz" + +#~ msgid "View Invoice" +#~ msgstr "Ver Fatura" + +#~ msgid "Quote" +#~ msgstr "Citação" + +#~ msgid "Quote Approval Rejected" +#~ msgstr "Aprovação da cotação rejeitada" + +#~ msgid "View Quote" +#~ msgstr "Ver Citação" + +#~ msgid "Approval Requested" +#~ msgstr "Homologação solicitada" + +#~ msgid "Review Quote" +#~ msgstr "Citação de Revisão" + +#~ msgid "Quote Approved" +#~ msgstr "Cotação Aprovada" + +#~ msgid "Quote Expired" +#~ msgstr "A Citação Expirada" + +#~ msgid "Quote Expiring Soon" +#~ msgstr "A Citação Acaba Logo" + +#~ msgid "Quote Sent" +#~ msgstr "Citação Enviada" + +#~ msgid "Task Assignment" +#~ msgstr "Atribuição da Tarefa" + +#~ msgid "View Task" +#~ msgstr "Ver Tarefa" + +#~ msgid "Test Details" +#~ msgstr "Detalhes do teste" + +#~ msgid "Your Weekly Summary" +#~ msgstr "O seu Resumo Semanal" + +#~ msgid "400 Bad Request" +#~ msgstr "400 Pedido Mau" + +#~ msgid "Invalid Request" +#~ msgstr "Pedido inválido" + +#~ msgid "" +#~ "The request you made is invalid or" +#~ " contains errors. This could be due" +#~ " to:" +#~ msgstr "" +#~ "A solicitação que você fez é " +#~ "inválida ou contém erros. Isto pode " +#~ "ser devido a:" + +#~ msgid "Missing or invalid form data" +#~ msgstr "Dados do formulário em falta ou inválidos" + +#~ msgid "Malformed request parameters" +#~ msgstr "Parâmetros de pedido inválidos" + +#~ msgid "" +#~ "You don't have permission to access " +#~ "this resource. This could be due " +#~ "to:" +#~ msgstr "" +#~ "Você não tem permissão para acessar " +#~ "este recurso. Isto pode ser devido " +#~ "a:" + +#~ msgid "Insufficient privileges" +#~ msgstr "Privilégios insuficientes" + +#~ msgid "Not logged in" +#~ msgstr "Não autenticado" + +#~ msgid "Resource access restrictions" +#~ msgstr "Restrições ao acesso aos recursos" + +#~ msgid "Something went wrong on our end. Please try again later." +#~ msgstr "Algo correu mal do nosso lado. Por favor, tente mais tarde." + +#~ msgid "Try Again" +#~ msgstr "Tente novamente" + +#~ msgid "An error occurred while processing your request." +#~ msgstr "Ocorreu um erro ao processar o seu pedido." + +#~ msgid "Refresh Page" +#~ msgstr "Actualizar a Página" + +#~ msgid "Go to Login" +#~ msgstr "Ir para o Login" + +#~ msgid "e.g., Travel, Meals, Office Supplies" +#~ msgstr "Por exemplo, Viagens, Refeições, Fornecimentos de escritório" + +#~ msgid "e.g., TRAVEL, MEALS" +#~ msgstr "Por exemplo, viagem, refeições" + +#~ msgid "Brief description of this category..." +#~ msgstr "Breve descrição desta categoria..." + +#~ msgid "e.g., fa-plane, fa-utensils" +#~ msgstr "Por exemplo, fa-plano, fa-utensils" + +#~ msgid "e.g., 19.00" +#~ msgstr "Por exemplo, 19.00" + +#~ msgid "Category" +#~ msgstr "Categoria" + +#~ msgid "Basic Information" +#~ msgstr "Informações básicas" + +#~ msgid "e.g., Flight to Berlin" +#~ msgstr "Por exemplo, voo para Berlim" + +#~ msgid "Additional details about the expense..." +#~ msgstr "Detalhes adicionais sobre a despesa..." + +#~ msgid "Select Category" +#~ msgstr "Selecionar categoria" + +#~ msgid "Amount Details" +#~ msgstr "Detalhes da Quantidade" + +#~ msgid "Association" +#~ msgstr "Associação" + +#~ msgid "Payment Details" +#~ msgstr "Detalhes do pagamento" + +#~ msgid "e.g., Lufthansa" +#~ msgstr "Por exemplo, Lufthansa" + +#~ msgid "Receipt & Additional Information" +#~ msgstr "Receber e Informações Adicionais" + +#~ msgid "Receipt/Invoice Number" +#~ msgstr "Número de recepção/fatura" + +#~ msgid "e.g., INV-2024-001" +#~ msgstr "Por exemplo, INV-2024-001" + +#~ msgid "e.g., conference, client-meeting, urgent" +#~ msgstr "Por exemplo, conferência, reunião de clientes, urgência" + +#~ msgid "Additional notes..." +#~ msgstr "Notas adicionais..." + +#~ msgid "Options" +#~ msgstr "Opções" + +#~ msgid "Filter Expenses" +#~ msgstr "Despesas de Filtro" + +#~ msgid "Delete Selected Expenses" +#~ msgstr "Apagar as Despesas Seleccionadas" + +#~ msgid "Change Status for Selected Expenses" +#~ msgstr "Mudar o estado das despesas seleccionadas" + +#~ msgid "Associated With" +#~ msgstr "Associado a" + +#~ msgid "Reject Expense" +#~ msgstr "Rejeitar Despesas" + +#~ msgid "Explain why this expense is being rejected..." +#~ msgstr "Explique porque é que esta despesa está a ser rejeitada..." + +#~ msgid "Are you sure you want to delete this expense?" +#~ msgstr "Tem a certeza de que deseja apagar esta despesa?" + +#~ msgid "Delete Expense" +#~ msgstr "Apagar as Despesas" + +#~ msgid "Add task" +#~ msgstr "Adicionar tarefa" + +#~ msgid "Import/Export Data" +#~ msgstr "Importar/Exportar Dados" + +#~ msgid "Import/Export" +#~ msgstr "Importar/Exportar" + +#~ msgid "" +#~ "Import data from other time trackers " +#~ "or export your data for GDPR " +#~ "compliance and backups" +#~ msgstr "" +#~ "Importar dados de outros rastreadores de" +#~ " tempo ou exportar seus dados para" +#~ " conformidade com o GDPR e backups" + +#~ msgid "Import Data" +#~ msgstr "Importar Dados" + +#~ msgid "CSV Import - Time Entries" +#~ msgstr "Importação de CSV - Entradas de Tempo" + +#~ msgid "Import time entries from a CSV file" +#~ msgstr "Importar os itens de tempo de um ficheiro CSV" + +#~ msgid "Choose CSV File" +#~ msgstr "Escolher CSV Ficheiro" + +#~ msgid "Download Template" +#~ msgstr "Transferir o Modelo" + +#~ msgid "CSV Import - Clients" +#~ msgstr "Importação de CSV - Clientes" + +#~ msgid "Import clients with custom fields and multiple contacts from a CSV file" +#~ msgstr "" +#~ "Importar clientes com campos personalizados" +#~ " e vários contatos de um arquivo " +#~ "CSV" + +#~ msgid "Skip duplicate clients" +#~ msgstr "Ignorar clientes duplicados" + +#~ msgid "Use these fields for duplicate detection:" +#~ msgstr "Use estes campos para detecção duplicada:" + +#~ msgid "Custom fields (comma-separated):" +#~ msgstr "Campos personalizados (separados por vírgula):" + +#~ msgid "e.g., debtor_number, erp_id" +#~ msgstr "Por exemplo, número devedor, erp id" + +#~ msgid "" +#~ "Example: Enter \"debtor_number\" to detect " +#~ "duplicates by debtor number only (not" +#~ " by name)" +#~ msgstr "" +#~ "Exemplo: Digite \"debtor number\" para " +#~ "detectar duplicatas apenas por número de" +#~ " devedor (não pelo nome)" + +#~ msgid "Import from Toggl Track" +#~ msgstr "Importar da Faixa do Toggl" + +#~ msgid "Import time entries from Toggl Track" +#~ msgstr "Importar os itens de hora do Toggl Track" + +#~ msgid "Import from Toggl" +#~ msgstr "Importar do Toggl" + +#~ msgid "Import from Harvest" +#~ msgstr "Importação da Colheita" + +#~ msgid "Import time entries from Harvest" +#~ msgstr "Importar entradas de tempo da colheita" + +#~ msgid "Restore from Backup" +#~ msgstr "Restaurar da Cópia de Segurança" + +#~ msgid "Restore data from a JSON or ZIP backup file" +#~ msgstr "Restaurar dados de um arquivo de backup JSON ou ZIP" + +#~ msgid "Import History" +#~ msgstr "Histórico de Importação" + +#~ msgid "Export Data" +#~ msgstr "Exportar Dados" + +#~ msgid "Full Data Export (GDPR)" +#~ msgstr "Exportação de dados completos (RGPD)" + +#~ msgid "Export all your personal data" +#~ msgstr "Exportar todos os seus dados pessoais" + +#~ msgid "Export as JSON" +#~ msgstr "Exportar como JSON" + +#~ msgid "Export as ZIP" +#~ msgstr "Exportar como ZIP" + +#~ msgid "Filtered Export" +#~ msgstr "Exportação Filtrada" + +#~ msgid "Export specific data with filters" +#~ msgstr "Exportar dados específicos com filtros" + +#~ msgid "Export with Filters" +#~ msgstr "Exportar com Filtros" + +#~ msgid "Export Clients" +#~ msgstr "Exportar Clientes" + +#~ msgid "Export all clients with custom fields and contacts to CSV" +#~ msgstr "" +#~ "Exportar todos os clientes com campos" +#~ " personalizados e contatos para CSV" + +#~ msgid "Export Clients to CSV" +#~ msgstr "Exportar Clientes para CSV" + +#~ msgid "Create a full database backup" +#~ msgstr "Criar um backup completo do banco de dados" + +#~ msgid "Export History" +#~ msgstr "Histórico de Exportação" + +#~ msgid "API Token" +#~ msgstr "Token API" + +#~ msgid "Workspace ID" +#~ msgstr "ID do Espaço de Trabalho" + +#~ msgid "Import" +#~ msgstr "Importar" + +#~ msgid "Account ID" +#~ msgstr "ID da conta" + +#~ msgid "ActivityWatch Setup" +#~ msgstr "Configuração do Activitywatch" + +#~ msgid "" +#~ "Import window and web activity from " +#~ "ActivityWatch (aw-server) as automatic " +#~ "time entries" +#~ msgstr "" +#~ "Importar a janela e a atividade " +#~ "web do ActivityWatch (servidor-aw) como" +#~ " entradas de tempo automáticas" + +#~ msgid "Server Connection" +#~ msgstr "Conexão do Servidor" + +#~ msgid "ActivityWatch Server URL" +#~ msgstr "URL do servidor ActivityWatch" + +#~ msgid "" +#~ "Base URL of your aw-server (no " +#~ "trailing slash). aw-server must be " +#~ "running and reachable from this server." +#~ msgstr "" +#~ "URL base do seu servidor aw (sem" +#~ " barra de rastreamento). o servidor " +#~ "aw deve estar em execução e " +#~ "acessível a partir deste servidor." + +#~ msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." +#~ msgstr "" +#~ "Use http://localhost:5600 se TimeTracker for" +#~ " executado na mesma máquina." + +#~ msgid "Import Settings" +#~ msgstr "Configuração da Importação" + +#~ msgid "Default Project" +#~ msgstr "Projeto padrão" + +#~ msgid "No project (import without project)" +#~ msgstr "Nenhum projeto (importação sem projeto)" + +#~ msgid "" +#~ "Assign imported activity events to this" +#~ " project. Leave empty to import " +#~ "without a project." +#~ msgstr "" +#~ "Atribuir eventos de atividade importados " +#~ "para este projeto. Deixe em branco " +#~ "para importar sem um projeto." + +#~ msgid "No active projects found. Events will be imported without a project." +#~ msgstr "" +#~ "Nenhum projeto ativo encontrado. Os " +#~ "eventos serão importados sem um projeto." + +#~ msgid "You can create a project later and assign events to it." +#~ msgstr "Você pode criar um projeto mais tarde e atribuir eventos a ele." + +#~ msgid "Create a project" +#~ msgstr "Criar um projeto" + +#~ msgid "Lookback Days" +#~ msgstr "Dias de Olhagem" + +#~ msgid "How many days back to import on full sync (1–90, default: 7)." +#~ msgstr "Quantos dias de volta para importar em full sync (1–90, padrão: 7)." + +#~ msgid "Bucket IDs" +#~ msgstr "ID do Balde" + +#~ msgid "" +#~ "Comma-separated or JSON array. Leave " +#~ "empty to use all aw-watcher-" +#~ "window_* and aw-watcher-web_* buckets." +#~ msgstr "" +#~ "Separado por vírgula ou por JSON. " +#~ "Deixe vazio para usar todos os " +#~ "baldes aw-watcher- window * e " +#~ "aw-watcher-web *." + +#~ msgid "Enable automatic sync" +#~ msgstr "Activar a sincronização automática" + +#~ msgid "" +#~ "Automatically sync activity on a " +#~ "schedule. You can also trigger manual" +#~ " syncs." +#~ msgstr "" +#~ "Sincronizar automaticamente a atividade em " +#~ "um cronograma. Você também pode ativar" +#~ " sincronização manual." + +#~ msgid "Sync Schedule" +#~ msgstr "Sincronizar agenda" + +#~ msgid "Manual only" +#~ msgstr "Apenas manual" + +#~ msgid "Every hour" +#~ msgstr "A cada hora" + +#~ msgid "Daily" +#~ msgstr "Diariamente" + +#~ msgid "Test & Sync" +#~ msgstr "& Sincronizar" + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and run a sync from the" +#~ " integration page." +#~ msgstr "" +#~ "Após salvar, você pode testar a " +#~ "conexão e executar uma sincronização da" +#~ " página de integração." + +#~ msgid "CalDAV Calendar Setup" +#~ msgstr "Configuração do Calendário CalDAV" + +#~ msgid "" +#~ "Connect to a CalDAV server (e.g., " +#~ "Zimbra) to import calendar events as " +#~ "time entries" +#~ msgstr "" +#~ "Conecte-se a um servidor CalDAV " +#~ "(por exemplo, Zimbra) para importar " +#~ "eventos de calendário como entradas de" +#~ " tempo" + +#~ msgid "CalDAV Server URL" +#~ msgstr "URL do servidor CalDAV" + +#~ msgid "optional if calendar URL is provided" +#~ msgstr "opcional se o URL do calendário for fornecido" + +#~ msgid "Base URL of your CalDAV server. Used for calendar discovery." +#~ msgstr "URL base do seu servidor CalDAV. Usado para a descoberta do calendário." + +#~ msgid "Example: https://mail.example.com/dav for Zimbra" +#~ msgstr "Exemplo: https://mail.example.com/dav para Zimbra" + +#~ msgid "Calendar URL" +#~ msgstr "URL do calendário" + +#~ msgid "optional if server URL is provided" +#~ msgstr "opcional se o URL do servidor for fornecido" + +#~ msgid "" +#~ "Direct URL to your calendar collection." +#~ " If provided, server URL is only " +#~ "used for discovery." +#~ msgstr "" +#~ "URL direto para sua coleção de " +#~ "calendários. Se fornecido, o URL do " +#~ "servidor só é usado para descoberta." + +#~ msgid "Calendar Name" +#~ msgstr "Nome do Calendário" + +#~ msgid "My Calendar" +#~ msgstr "Meu Calendário" + +#~ msgid "Authentication" +#~ msgstr "autenticação" + +#~ msgid "Your CalDAV username (usually your email address)." +#~ msgstr "Seu nome de usuário CalDAV (geralmente seu endereço de e-mail)." + +#~ msgid "Your CalDAV password or app-specific password." +#~ msgstr "Sua senha CalDAV ou senha específica do aplicativo." + +#~ msgid "Leave empty to keep your current password." +#~ msgstr "Deixe em branco para manter sua senha atual." + +#~ msgid "Verify SSL certificate" +#~ msgstr "Verificar o certificado SSL" + +#~ msgid "Uncheck only if using a self-signed certificate." +#~ msgstr "Desmarcar apenas se usar um certificado auto- assinado." + +#~ msgid "" +#~ "Calendar events will be imported as " +#~ "time entries. If a project is " +#~ "selected, events will be assigned to " +#~ "that project." +#~ msgstr "" +#~ "Os eventos de calendário serão " +#~ "importados como entradas de tempo. Se" +#~ " um projeto estiver selecionado, eventos" +#~ " serão atribuídos a esse projeto." + +#~ msgid "" +#~ "If an event title contains a " +#~ "project name, that project will be " +#~ "used instead." +#~ msgstr "" +#~ "Se um título de evento contém um" +#~ " nome de projeto, esse projeto será" +#~ " usado." + +#~ msgid "If no project is selected, events will be imported without a project." +#~ msgstr "" +#~ "Se nenhum projeto estiver selecionado, " +#~ "os eventos serão importados sem um " +#~ "projeto." + +#~ msgid "How many days back to import events from (default: 90)." +#~ msgstr "Quantos dias de volta para importar eventos de (padrão: 90)." + +#~ msgid "" +#~ "Automatically sync calendar events every " +#~ "hour. You can still trigger manual " +#~ "syncs." +#~ msgstr "" +#~ "Sincronizar automaticamente os eventos de " +#~ "calendário a cada hora. Você ainda " +#~ "pode ativar sincronização manual." + +#~ msgid "" +#~ "After saving, you can test the " +#~ "connection and discover available calendars." +#~ msgstr "" +#~ "Após salvar, você pode testar a " +#~ "conexão e descobrir calendários disponíveis." + +#~ msgid "Integration Health" +#~ msgstr "Integração Saúde" + +#~ msgid "Scope" +#~ msgstr "Âmbito de aplicação" + +#~ msgid "Last sync" +#~ msgstr "Última sincronização" + +#~ msgid "Last status" +#~ msgstr "Último status" + +#~ msgid "Credentials" +#~ msgstr "Credenciais" + +#~ msgid "Last error" +#~ msgstr "Último erro" + +#~ msgid "Partial" +#~ msgstr "Parcial" + +#~ msgid "Needs refresh" +#~ msgstr "Precisa de actualização" + +#~ msgid "Expires" +#~ msgstr "Validade" + +#~ msgid "Reset this integration? This removes stored OAuth tokens." +#~ msgstr "Reiniciar esta integração? Isto remove os tokens de OAuth armazenados." + +#~ msgid "" +#~ "Connect your Time Tracker with external" +#~ " services. Configure integrations below to" +#~ " sync data, automate workflows, and " +#~ "enhance productivity." +#~ msgstr "" +#~ "Conecte seu Time Tracker com serviços" +#~ " externos. Configure integrações abaixo " +#~ "para sincronizar dados, automatizar fluxos " +#~ "de trabalho e aumentar a produtividade." + +#~ msgid "OIDC / Single Sign-On" +#~ msgstr "OIDC / Single Sign- On" + +#~ msgid "" +#~ "Configure OpenID Connect authentication for" +#~ " Single Sign-On (SSO) with your " +#~ "identity provider" +#~ msgstr "" +#~ "Configure a autenticação OpenID Connect " +#~ "para um único sinal (SSO) com seu" +#~ " provedor de identidade" + +#~ msgid "" +#~ "Configure directory authentication via " +#~ "environment variables; use the wizard to" +#~ " build a working .env snippet and " +#~ "test connectivity." +#~ msgstr "" +#~ "Configure a autenticação de diretórios " +#~ "através de variáveis de ambiente; use" +#~ " o assistente para construir um " +#~ "trecho .env e testar a conectividade." + +#~ msgid "Not Connected" +#~ msgstr "Não Ligado" + +#~ msgid "Synced" +#~ msgstr "Sincronizado" + +#~ msgid "Not Set Up" +#~ msgstr "Não Configurar" + +#~ msgid "Connect" +#~ msgstr "Ligar" + +#~ msgid "Integration" +#~ msgstr "Integração" + +#~ msgid "Guided Setup Wizard" +#~ msgstr "Assistente de Configuração Guiada" + +#~ msgid "Use our step-by-step wizard to configure this integration easily." +#~ msgstr "" +#~ "Use nosso assistente passo a passo " +#~ "para configurar esta integração facilmente." + +#~ msgid "Launch Setup Wizard" +#~ msgstr "Assistente de Configuração de Lançamento" + +#~ msgid "Linear API Key" +#~ msgstr "Chave linear da API" + +#~ msgid "Personal API Key" +#~ msgstr "Chave pessoal da API" + +#~ msgid "Create at linear.app/settings/api" +#~ msgstr "Criar em linear.app/settings/api" + +#~ msgid "From Linear: Settings → API → Personal API keys" +#~ msgstr "De Linear: Configurações → API → Chaves de API pessoais" + +#~ msgid "Save API Key" +#~ msgstr "Salvar chave de API" + +#~ msgid "OAuth Credentials Setup" +#~ msgstr "Configuração das Credenciais de OAuth" + +#~ msgid "Stored; leave empty to keep" +#~ msgstr "Armazenado; deixe em branco para manter" + +#~ msgid "Enter API secret" +#~ msgstr "Digite o segredo da API" + +#~ msgid "" +#~ "After saving API Key and Secret, " +#~ "you can connect Trello using OAuth " +#~ "flow." +#~ msgstr "" +#~ "Após salvar API Key e Secret, você" +#~ " pode conectar Trello usando fluxo " +#~ "OAuth." + +#~ msgid "Use \"common\" for multi-tenant, or leave empty for common" +#~ msgstr "Usar \"comum\" para multi-atendimento, ou deixar vazio para comum" + +#~ msgid "CalDAV Authentication" +#~ msgstr "Autenticação CalDAV" + +#~ msgid "" +#~ "CalDAV uses username and password " +#~ "authentication (not OAuth). Update your " +#~ "credentials below." +#~ msgstr "" +#~ "O CalDAV usa autenticação de nome " +#~ "de usuário e senha (não OAuth). " +#~ "Atualize suas credenciais abaixo." + +#~ msgid "Integration Configuration" +#~ msgstr "Configuração da Integração" + +#~ msgid "Configure sync settings, data mappings, and other integration options." +#~ msgstr "" +#~ "Configure configurações de sincronização, " +#~ "mapeamentos de dados e outras opções " +#~ "de integração." + +#~ msgid "Connection Management" +#~ msgstr "Gestão de Ligação" + +#~ msgid "Connector Error" +#~ msgstr "Erro no Conector" + +#~ msgid "Sync OK" +#~ msgstr "Sincronizar OK" + +#~ msgid "Sync Error" +#~ msgstr "Erro de sincronização" + +#~ msgid "No expiration" +#~ msgstr "Sem expiração" + +#~ msgid "Not connected" +#~ msgstr "Não conectado" + +#~ msgid "Last Sync" +#~ msgstr "Última sincronização" + +#~ msgid "Last Error" +#~ msgstr "Último Erro" + +#~ msgid "" +#~ "CalDAV uses username/password authentication. " +#~ "Click below to set up your CalDAV" +#~ " connection." +#~ msgstr "" +#~ "O CalDAV usa autenticação de nome " +#~ "de usuário/senha. Clique abaixo para " +#~ "configurar sua conexão CalDAV." + +#~ msgid "Setup CalDAV Integration" +#~ msgstr "Configurar o CalDAV Integração" + +#~ msgid "" +#~ "ActivityWatch imports window and web " +#~ "activity from your local aw-server. " +#~ "Click below to configure." +#~ msgstr "" +#~ "Actividade Assista as importações de " +#~ "janela e atividade web do seu " +#~ "servidor aw local. Clique abaixo para" +#~ " configurar." + +#~ msgid "Setup ActivityWatch Integration" +#~ msgstr "Configurar a Integração de Observação de Atividades" + +#~ msgid "OAuth credentials are configured. You can now connect Trello." +#~ msgstr "As credenciais OAuth estão configuradas. Agora podes ligar o Trello." + +#~ msgid "Connect Trello" +#~ msgstr "Ligar Trello" + +#~ msgid "" +#~ "Please configure Trello API key and " +#~ "token in the OAuth Credentials Setup " +#~ "section above." +#~ msgstr "" +#~ "Por favor, configure a chave e o" +#~ " token da API Trello na seção " +#~ "Configuração de Credenciais do OAuth " +#~ "acima." + +#~ msgid "" +#~ "Please configure OAuth credentials in " +#~ "the section above before connecting." +#~ msgstr "" +#~ "Por favor, configure credenciais OAuth " +#~ "na seção acima antes de se " +#~ "conectar." + +#~ msgid "OAuth credentials need to be configured by an administrator first." +#~ msgstr "" +#~ "As credenciais OAuth precisam ser " +#~ "configuradas por um administrador primeiro." + +#~ msgid "" +#~ "Connect your Google Calendar account. " +#~ "You will be redirected to Google " +#~ "for authorization." +#~ msgstr "" +#~ "Conecte sua conta do Google Calendar." +#~ " Você será redirecionado para o " +#~ "Google para autorização." + +#~ msgid "" +#~ "Connect this integration. You will be" +#~ " redirected to the provider for " +#~ "authorization." +#~ msgstr "" +#~ "Conecte esta integração. Você será " +#~ "redirecionado para o provedor para " +#~ "autorização." + +#~ msgid "Back to Integrations" +#~ msgstr "Voltar às Integrações" + +#~ msgid "Integration Status" +#~ msgstr "Estado da Integração" + +#~ msgid "Token Expires" +#~ msgstr "Expira o Token" + +#~ msgid "Sync History" +#~ msgstr "Sincronizar histórico" + +#~ msgid "No sync events yet" +#~ msgstr "Sem eventos de sincronização ainda" + +#~ msgid "Configure CalDAV Integration" +#~ msgstr "Configurar a Integração CalDAV" + +#~ msgid "Configure ActivityWatch" +#~ msgstr "Configurar observação de atividade" + +#~ msgid "" +#~ "Are you sure you want to reset " +#~ "this integration? This will remove all" +#~ " credentials and configuration." +#~ msgstr "" +#~ "Tem certeza de que deseja reiniciar " +#~ "esta integração? Isto irá remover todas" +#~ " as credenciais e configuração." + +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this integration? This action cannot " +#~ "be undone." +#~ msgstr "" +#~ "Tem a certeza de que deseja apagar" +#~ " esta integração? Esta acção não pode" +#~ " ser desfeita." + +#~ msgid "Edit Configuration" +#~ msgstr "Editar a Configuração" + +#~ msgid "Step 1: OAuth Setup" +#~ msgstr "Passo 1: Configuração do OAuth" + +#~ msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." +#~ msgstr "" +#~ "Crie um aplicativo Asana em " +#~ "Configurações → Apps → Gerenciar " +#~ "aplicativos de desenvolvedor." + +#~ msgid "Asana OAuth Client ID" +#~ msgstr "ID do Cliente Asana OAuth" + +#~ msgid "Enter OAuth Client ID" +#~ msgstr "Indique o ID do Cliente OAuth" + +#~ msgid "Asana OAuth Client Secret" +#~ msgstr "Asana OAuth Cliente Secreto" + +#~ msgid "Enter OAuth Client Secret" +#~ msgstr "Indique o Segredo do Cliente OAuth" + +#~ msgid "Step 2: Workspace Selection" +#~ msgstr "Passo 2: Seleção do espaço de trabalho" + +#~ msgid "Workspace GID" +#~ msgstr "GID do espaço de trabalho" + +#~ msgid "Find your workspace GID in Asana workspace settings or API" +#~ msgstr "" +#~ "Encontre seu GID de espaço de " +#~ "trabalho em configurações de espaço de" +#~ " trabalho Asana ou API" + +#~ msgid "Step 3: Project Selection" +#~ msgstr "Passo 3: Seleção do Projeto" + +#~ msgid "Project GIDs" +#~ msgstr "GIDs do projeto" + +#~ msgid "" +#~ "Comma-separated list of specific project" +#~ " GIDs to sync. Leave empty to " +#~ "sync all projects in the workspace." +#~ msgstr "" +#~ "Lista separada por vírgulas de GIDs " +#~ "específicos do projeto para sincronizar. " +#~ "Deixe vazio para sincronizar todos os" +#~ " projetos na área de trabalho." + +#~ msgid "Step 4: Sync Configuration" +#~ msgstr "Passo 4: Configuração de sincronização" + +#~ msgid "Sync Direction" +#~ msgstr "Direção de Sincronização" + +#~ msgid "Asana → TimeTracker (Import only)" +#~ msgstr "Asana → TimeTracker (apenas importação)" + +#~ msgid "TimeTracker → Asana (Export only)" +#~ msgstr "TimeTracker → Asana (apenas exportação)" + +#~ msgid "Bidirectional (Two-way sync)" +#~ msgstr "Bidirecional (sincronização bidirecional)" + +#~ msgid "Items to Sync" +#~ msgstr "Itens a Sincronizar" + +#~ msgid "Subtasks" +#~ msgstr "Subtarefas" + +#~ msgid "Auto Sync" +#~ msgstr "Sincronização Automática" + +#~ msgid "Sync Completed Tasks" +#~ msgstr "Sincronizar as Tarefas Completas" + +#~ msgid "Step 5: Review & Save" +#~ msgstr "Passo 5: Reveja e salve" + +#~ msgid "Review your configuration and click \"Finish\" to save." +#~ msgstr "Reveja sua configuração e clique em \"Terminar\" para salvar." + +#~ msgid "Finish" +#~ msgstr "Terminar" + +#~ msgid "Step" +#~ msgstr "Passo" + +#~ msgid "" +#~ "Create a GitHub OAuth App in " +#~ "Settings → Developer settings → OAuth" +#~ " Apps." +#~ msgstr "" +#~ "Criar um aplicativo GitHub OAuth em " +#~ "Configurações → Configurações do desenvolvedor" +#~ " → OAuth Apps." + +#~ msgid "GitHub OAuth Client ID" +#~ msgstr "ID do Cliente GitHub OAuth" + +#~ msgid "GitHub OAuth Client Secret" +#~ msgstr "GitHub OAuth Cliente secreto" + +#~ msgid "Step 2: Repository Selection" +#~ msgstr "Passo 2: Selecção do Repositório" + +#~ msgid "" +#~ "Comma-separated list of repositories " +#~ "(e.g., \"octocat/Hello-World\"). Leave empty" +#~ " to sync all accessible repositories." +#~ msgstr "" +#~ "Lista separada por vírgulas de " +#~ "repositórios (por exemplo, \"octocat/Hello-" +#~ "World\"). Deixe em branco para " +#~ "sincronizar todos os repositórios acessíveis." + +#~ msgid "Create Projects" +#~ msgstr "Criar Projetos" + +#~ msgid "Step 3: Sync Configuration" +#~ msgstr "Passo 3: Configuração de sincronização" + +#~ msgid "GitHub → TimeTracker (Import only)" +#~ msgstr "GitHub → TimeTracker (apenas importação)" + +#~ msgid "TimeTracker → GitHub (Export only)" +#~ msgstr "TimeTracker → GitHub (apenas exportação)" + +#~ msgid "Pull Requests" +#~ msgstr "Puxar pedidos" + +#~ msgid "Projects (Repositories)" +#~ msgstr "Projectos (Repositórios)" + +#~ msgid "Issue States to Sync" +#~ msgstr "Emitir Estados para Sincronizar" + +#~ msgid "Open Issues" +#~ msgstr "Questões abertas" + +#~ msgid "Closed Issues" +#~ msgstr "Problemas Fechados" + +#~ msgid "Step 4: Webhook Setup" +#~ msgstr "Passo 4: Configuração do Webhook" + +#~ msgid "Webhook Secret" +#~ msgstr "Segredo do Webhook" + +#~ msgid "Enter webhook secret" +#~ msgstr "Digite o segredo do webhook" + +#~ msgid "" +#~ "Secret token for verifying webhook " +#~ "signatures. Configure this in your " +#~ "GitHub repository webhook settings." +#~ msgstr "" +#~ "Token secreto para verificar assinaturas " +#~ "webhook. Configure isto nas configurações " +#~ "do seu webhook do repositório GitHub." + +#~ msgid "Weekly" +#~ msgstr "Semanalmente" + +#~ msgid "Automatically sync when webhooks are received from GitHub" +#~ msgstr "Sincronizar automaticamente quando os webhooks são recebidos do GitHub" + +#~ msgid "Add this URL as a webhook in your GitHub repository settings:" +#~ msgstr "" +#~ "Adicione este URL como um webhook " +#~ "nas configurações do seu repositório " +#~ "GitHub:" + +#~ msgid "All repositories" +#~ msgstr "Todos os repositórios" + +#~ msgid "Step 1: Instance Configuration" +#~ msgstr "Passo 1: Configuração da instância" + +#~ msgid "You can use GitLab.com or your self-hosted GitLab instance." +#~ msgstr "Você pode usar GitLab.com ou sua instância GitLab self-hosted." + +#~ msgid "Step 2: OAuth Setup" +#~ msgstr "Passo 2: Configuração do OAuth" + +#~ msgid "" +#~ "Configure OAuth credentials. Create an " +#~ "application in GitLab Settings → " +#~ "Applications." +#~ msgstr "" +#~ "Configurar credenciais OAuth. Crie uma " +#~ "aplicação em Configurações GitLab → " +#~ "Aplicações." + +#~ msgid "GitLab OAuth Client ID" +#~ msgstr "ID do Cliente GitLab OAuth" + +#~ msgid "GitLab OAuth Client Secret" +#~ msgstr "GitLab OAuth Cliente secreto" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your GitLab application" +#~ " settings:" +#~ msgstr "" +#~ "Adicione este URL como um URI de" +#~ " redirecionamento autorizado nas configurações" +#~ " do seu aplicativo GitLab:" + +#~ msgid "Step 3: Repository Selection" +#~ msgstr "Passo 3: Seleção do Repositório" + +#~ msgid "Repository IDs" +#~ msgstr "IDs do repositório" + +#~ msgid "" +#~ "Comma-separated list of GitLab project" +#~ " IDs to sync. Leave empty to " +#~ "sync all accessible projects." +#~ msgstr "" +#~ "Lista separada por vírgulas de IDs " +#~ "de projeto GitLab para sincronizar. " +#~ "Deixe vazio para sincronizar todos os" +#~ " projetos acessíveis." + +#~ msgid "Automatically create projects in TimeTracker from GitLab projects" +#~ msgstr "" +#~ "Crie projetos automaticamente no TimeTracker" +#~ " a partir de projetos GitLab" + +#~ msgid "Step 4: Sync Settings" +#~ msgstr "Passo 4: Configurações de sincronização" + +#~ msgid "GitLab → TimeTracker (Import only)" +#~ msgstr "GitLab → TimeTracker (apenas importação)" + +#~ msgid "TimeTracker → GitLab (Export only)" +#~ msgstr "TimeTracker → GitLab (apenas para exportação)" + +#~ msgid "Merge Requests" +#~ msgstr "Mesclar pedidos" + +#~ msgid "Automatically sync when webhooks are received from GitLab" +#~ msgstr "Sincronizar automaticamente quando os webhooks são recebidos do GitLab" + +#~ msgid "Secret token for verifying webhook signatures" +#~ msgstr "Token secreto para verificar assinaturas Webhook" + +#~ msgid "Instance URL" +#~ msgstr "URL da instância" + +#~ msgid "Step 1: OAuth Setup & Basic Configuration" +#~ msgstr "Passo 1: Configuração e Configuração Básica do OAuth" + +#~ msgid "" +#~ "First, configure OAuth credentials for " +#~ "Jira. You can get these from " +#~ "Atlassian Developer Console." +#~ msgstr "" +#~ "Primeiro, configure credenciais OAuth para " +#~ "Jira. Você pode obter isso da " +#~ "Atlassian Developer Console." + +#~ msgid "Jira OAuth Client ID" +#~ msgstr "ID do Cliente Jira OAuth" + +#~ msgid "Get this from Atlassian Developer Console" +#~ msgstr "Obtenha isto da Consola de Desenvolvedores da Atlassian" + +#~ msgid "Jira OAuth Client Secret" +#~ msgstr "Segredo do Cliente Jira OAuth" + +#~ msgid "Jira Instance URL" +#~ msgstr "URL da instância do Jira" + +#~ msgid "Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" +#~ msgstr "" +#~ "A sua URL Jira Cloud ou Server " +#~ "(por exemplo, https://your-domain.atlassian.net)" + +#~ msgid "" +#~ "Add this URL as an authorized " +#~ "redirect URI in your Jira OAuth " +#~ "app settings:" +#~ msgstr "" +#~ "Adicione esta URL como um URI de" +#~ " redirecionamento autorizado nas configurações" +#~ " do seu aplicativo Jira OAuth:" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " Jira is accessible and OAuth " +#~ "credentials are correct." +#~ msgstr "" +#~ "Clique em \"Teste Conexão\" para " +#~ "verificar se Jira está acessível e " +#~ "credenciais OAuth estão corretas." + +#~ msgid "JQL Query" +#~ msgstr "Consulta JQL" + +#~ msgid "" +#~ "Jira Query Language query to filter " +#~ "issues to sync. Leave empty to " +#~ "sync all assigned issues." +#~ msgstr "" +#~ "Consulta do Jira Query Language para " +#~ "filtrar problemas para sincronizar. Deixe " +#~ "vazio para sincronizar todos os " +#~ "problemas atribuídos." + +#~ msgid "Jira → TimeTracker (Import only)" +#~ msgstr "Jira → TimeTracker (apenas importação)" + +#~ msgid "TimeTracker → Jira (Export only)" +#~ msgstr "TimeTracker → Jira (apenas exportação)" + +#~ msgid "Choose how data flows between Jira and TimeTracker" +#~ msgstr "Escolha como os fluxos de dados entre Jira e TimeTracker" + +#~ msgid "Issues (Tasks)" +#~ msgstr "Questões (Tarefas)" + +#~ msgid "Automatically sync when webhooks are received from Jira" +#~ msgstr "Sincronizar automaticamente quando os webhooks são recebidos de Jira" + +#~ msgid "Automatically create projects in TimeTracker from Jira projects" +#~ msgstr "Crie projetos automaticamente no TimeTracker a partir de projetos Jira" + +#~ msgid "" +#~ "Review your configuration below. Click " +#~ "\"Finish\" to save and complete the " +#~ "setup." +#~ msgstr "" +#~ "Reveja sua configuração abaixo. Clique " +#~ "em \"Terminar\" para salvar e completar" +#~ " a configuração." + +#~ msgid "Jira URL" +#~ msgstr "URL do Jira" + +#~ msgid "Please test the connection before proceeding." +#~ msgstr "Por favor, teste a conexão antes de prosseguir." + +#~ msgid "Please enter Jira URL first." +#~ msgstr "Digite o URL do Jira primeiro." + +#~ msgid "Step 1: Tenant ID Configuration" +#~ msgstr "Passo 1: Configuração do ID do inquilino" + +#~ msgid "" +#~ "Enter your Azure AD tenant ID. Use" +#~ " \"common\" for multi-tenant apps or" +#~ " leave empty for default." +#~ msgstr "" +#~ "Introduza a sua identidade de inquilino" +#~ " do Azure AD. Use \"comum\" para " +#~ "aplicativos multi-doentes ou deixe em" +#~ " branco por padrão." + +#~ msgid "Configure OAuth credentials from Azure AD App Registrations." +#~ msgstr "Configure credenciais OAuth do Azure AD App Registrations." + +#~ msgid "Microsoft Teams OAuth Client ID" +#~ msgstr "ID do Cliente OAuth da Microsoft Teams" + +#~ msgid "Microsoft Teams OAuth Client Secret" +#~ msgstr "Microsoft Teams OAuth Cliente Secreto" + +#~ msgid "Step 3: Review & Save" +#~ msgstr "Passo 3: Reveja e salve" + +#~ msgid "Outlook Calendar OAuth Client ID" +#~ msgstr "Calendário do Outlook ID do Cliente OAuth" + +#~ msgid "Outlook Calendar OAuth Client Secret" +#~ msgstr "Calendário do Outlook OAuth Cliente Secreto" + +#~ msgid "" +#~ "Review your configuration and click " +#~ "\"Finish\" to save. After saving, users" +#~ " can connect their Outlook Calendar " +#~ "accounts." +#~ msgstr "" +#~ "Reveja sua configuração e clique em " +#~ "\"Terminar\" para salvar. Após salvar, " +#~ "os usuários podem conectar suas contas" +#~ " do calendário do Outlook." + +#~ msgid "Step 1: OAuth Connection" +#~ msgstr "Passo 1: Conexão OAuth" + +#~ msgid "Configure OAuth credentials from Intuit Developer Dashboard." +#~ msgstr "Configure credenciais OAuth do Painel Intuit Developer." + +#~ msgid "QuickBooks OAuth Client ID" +#~ msgstr "ID do Cliente OAuth dos QuickBooks" + +#~ msgid "QuickBooks OAuth Client Secret" +#~ msgstr "QuickBooks OAuth Cliente Secreto" + +#~ msgid "" +#~ "After saving OAuth credentials, you will" +#~ " need to connect your QuickBooks " +#~ "account via OAuth." +#~ msgstr "" +#~ "Após salvar credenciais OAuth, você " +#~ "precisará conectar sua conta QuickBooks " +#~ "via OAuth." + +#~ msgid "Step 2: Company Selection" +#~ msgstr "Passo 2: Seleção da empresa" + +#~ msgid "Company ID (Realm ID)" +#~ msgstr "ID da empresa (ID real)" + +#~ msgid "" +#~ "Find your company ID (realm ID) in" +#~ " QuickBooks after connecting via OAuth." +#~ msgstr "" +#~ "Encontre seu ID da empresa (ID " +#~ "realm) em QuickBooks depois de conectar" +#~ " via OAuth." + +#~ msgid "Use Sandbox" +#~ msgstr "Usar caixa de areia" + +#~ msgid "Use QuickBooks sandbox environment for testing" +#~ msgstr "Usar o ambiente da caixa de areia do QuickBooks para testar" + +#~ msgid "QuickBooks → TimeTracker (Import only)" +#~ msgstr "QuickBooks → TimeTracker (apenas importação)" + +#~ msgid "TimeTracker → QuickBooks (Export only)" +#~ msgstr "TimeTracker → QuickBooks (apenas exportação)" + +#~ msgid "Customers" +#~ msgstr "Clientes" + +#~ msgid "Step 4: Account Mappings" +#~ msgstr "Passo 4: Mapeamentos de Contas" + +#~ msgid "Default Expense Account ID" +#~ msgstr "ID da conta de despesas padrão" + +#~ msgid "QuickBooks account ID to use for expenses when no mapping is configured" +#~ msgstr "" +#~ "ID da conta do QuickBooks a usar" +#~ " para despesas quando nenhum mapeamento " +#~ "estiver configurado" + +#~ msgid "Customer Mappings" +#~ msgstr "Mapeamentos de Clientes" + +#~ msgid "JSON" +#~ msgstr "JSON" + +#~ msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" +#~ msgstr "" +#~ "Map TimeTracker IDs do cliente para " +#~ "QuickBooks IDs do cliente (formato JSON)" + +#~ msgid "Account Mappings" +#~ msgstr "Mapeamentos de Contas" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " QuickBooks account IDs (JSON format)" +#~ msgstr "" +#~ "Map TimeTracker IDs de categoria de " +#~ "despesa para IDs de conta do " +#~ "QuickBooks (formato JSON)" + +#~ msgid "Company ID" +#~ msgstr "ID da empresa" + +#~ msgid "Step 1: API Keys Setup" +#~ msgstr "Passo 1: Configuração das Chaves da API" + +#~ msgid "Get your API key and secret from" +#~ msgstr "Obtenha sua chave de API e segredo de" + +#~ msgid "Enter API Key" +#~ msgstr "Digite a tecla API" + +#~ msgid "Enter API Secret" +#~ msgstr "Digite o Segredo da API" + +#~ msgid "Generate a token after creating the API key" +#~ msgstr "Gerar um token após criar a chave API" + +#~ msgid "" +#~ "Click \"Test Connection\" to verify that" +#~ " your Trello API credentials are " +#~ "correct." +#~ msgstr "" +#~ "Clique em \"Teste Conexão\" para " +#~ "verificar se suas credenciais da API " +#~ "Trello estão corretas." + +#~ msgid "API Key" +#~ msgstr "Chave de API" + +#~ msgid "Not tested" +#~ msgstr "Não testado" + +#~ msgid "Connection failed" +#~ msgstr "A ligação falhou" + +#~ msgid "Configure OAuth credentials from Xero Developer Portal." +#~ msgstr "Configure credenciais OAuth do Xero Developer Portal." + +#~ msgid "Xero OAuth Client ID" +#~ msgstr "ID do Cliente Xero OAuth" + +#~ msgid "Xero OAuth Client Secret" +#~ msgstr "Xero OAuth Cliente secreto" + +#~ msgid "Step 2: Tenant Selection" +#~ msgstr "Passo 2: Seleção de inquilinos" + +#~ msgid "" +#~ "Find your tenant ID (organisation ID)" +#~ " in Xero after connecting via OAuth." +#~ msgstr "" +#~ "Encontre sua identidade de inquilino (ID" +#~ " de organização) em Xero após a " +#~ "conexão via OAuth." + +#~ msgid "Xero → TimeTracker (Import only)" +#~ msgstr "Xero → TimeTracker (apenas importação)" + +#~ msgid "TimeTracker → Xero (Export only)" +#~ msgstr "TimeTracker → Xero (apenas exportação)" + +#~ msgid "Default Expense Account Code" +#~ msgstr "Código da conta de despesas padrão" + +#~ msgid "Xero account code to use for expenses when no mapping is configured" +#~ msgstr "" +#~ "Código da conta Xero a usar para" +#~ " despesas quando não estiver configurado" +#~ " nenhum mapeamento" + +#~ msgid "Contact Mappings" +#~ msgstr "Mapeamentos de Contato" + +#~ msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" +#~ msgstr "Map TimeTracker IDs do cliente para Xero Contact IDs (formato JSON)" + +#~ msgid "" +#~ "Map TimeTracker expense category IDs to" +#~ " Xero account codes (JSON format)" +#~ msgstr "" +#~ "Map TimeTracker IDs de categoria de " +#~ "despesa para códigos de conta Xero " +#~ "(formato JSON)" + +#~ msgid "Stock Item" +#~ msgstr "Número da unidade populacional" + +#~ msgid "Select Item" +#~ msgstr "Selecionar item" + +#~ msgid "Warehouse" +#~ msgstr "Armazém" + +#~ msgid "Select Warehouse" +#~ msgstr "Seleccionar o Armazém" + +#~ msgid "Adjustment Quantity" +#~ msgstr "Quantidade de ajustamento" + +#~ msgid "Use positive values to increase stock, negative values to decrease" +#~ msgstr "" +#~ "Usar valores positivos para aumentar o" +#~ " estoque, valores negativos para diminuir" + +#~ msgid "e.g., Physical count correction, Damage, Found items" +#~ msgstr "Por exemplo, correção de contagem física, Danos, itens encontrados" + +#~ msgid "Additional details about this adjustment" +#~ msgstr "Informações adicionais sobre este ajustamento" + +#~ msgid "Record Adjustment" +#~ msgstr "Ajuste do Registro" + +#~ msgid "All Warehouses" +#~ msgstr "Todos os Armazéns" + +#~ msgid "All Items" +#~ msgstr "Todos os itens" + +#~ msgid "Date From" +#~ msgstr "Data De" + +#~ msgid "Date To" +#~ msgstr "Data A" + +#~ msgid "Item" +#~ msgstr "Item" + +#~ msgid "No adjustments found." +#~ msgstr "Não foram encontrados ajustes." + +#~ msgid "On Hand" +#~ msgstr "Na Mão" + +#~ msgid "Reorder Point" +#~ msgstr "Ponto de Reordenação" + +#~ msgid "Shortfall" +#~ msgstr "Falta" + +#~ msgid "Reorder Qty" +#~ msgstr "Reordenar o Qty" + +#~ msgid "No low stock alerts. All items are above reorder point." +#~ msgstr "" +#~ "Não há alertas baixos. Todos os " +#~ "itens estão acima do ponto de " +#~ "reordenação." + +#~ msgid "Use a positive quantity (items coming back)" +#~ msgstr "Use uma quantidade positiva (itens voltando)" + +#~ msgid "Use a negative quantity (items written off)" +#~ msgstr "Usar uma quantidade negativa (itens apagados)" + +#~ msgid "Quantity to revalue (positive)" +#~ msgstr "Quantidade a revalorizar (positivo)" + +#~ msgid "Use positive values for additions, negative for removals" +#~ msgstr "Usar valores positivos para adições, negativos para remoções" + +#~ msgid "Return requires a positive quantity." +#~ msgstr "O retorno requer uma quantidade positiva." + +#~ msgid "Waste requires a negative quantity." +#~ msgstr "Os resíduos requerem uma quantidade negativa." + +#~ msgid "Devaluation requires a trackable item with a default cost." +#~ msgstr "A desvalorização requer um item rastreável com um custo padrão." + +#~ msgid "Movement Type" +#~ msgstr "Tipo de Movimento" + +#~ msgid "Return" +#~ msgstr "Voltar" + +#~ msgid "Waste" +#~ msgstr "Resíduos" + +#~ msgid "Devaluation" +#~ msgstr "Desvalorização" + +#~ msgid "" +#~ "You can apply devaluation below to " +#~ "record returned or wasted items at " +#~ "a reduced cost." +#~ msgstr "" +#~ "Você pode aplicar desvalorização abaixo " +#~ "para registrar itens retornados ou " +#~ "desperdiçados com um custo reduzido." + +#~ msgid "Devalue items without creating a new stock item" +#~ msgstr "Desvalorizar os itens sem criar um novo item de stock" + +#~ msgid "Apply devaluation" +#~ msgstr "Aplicar a desvalorização" + +#~ msgid "Method" +#~ msgstr "Método" + +#~ msgid "Percent off default cost" +#~ msgstr "Percentar o custo padrão" + +#~ msgid "Fixed new unit cost" +#~ msgstr "Novo custo unitário fixo" + +#~ msgid "Percent" +#~ msgstr "Percentagem" + +#~ msgid "Example: 30 = reduce cost by 30%" +#~ msgstr "Exemplo: 30 = reduzir o custo em 30%" + +#~ msgid "New Unit Cost" +#~ msgstr "Novo custo unitário" + +#~ msgid "e.g., Physical count correction" +#~ msgstr "Por exemplo, correcção da contagem física" + +#~ msgid "Record Movement" +#~ msgstr "Movimento de Registros" + +#~ msgid "Reference Type" +#~ msgstr "Tipo de referência" + +#~ msgid "Manual" +#~ msgstr "Manual" + +#~ msgid "Unit Cost" +#~ msgstr "Custo unitário" + +#~ msgid "Reference" +#~ msgstr "Referência" + +#~ msgid "Devalued" +#~ msgstr "Desvalorizado" + +#~ msgid "No stock movements found." +#~ msgstr "Nenhum movimento de ações encontrado." + +#~ msgid "Supplier" +#~ msgstr "Fornecedor" + +#~ msgid "Select Supplier" +#~ msgstr "Selecionar fornecedor" + +#~ msgid "Order Date" +#~ msgstr "Data de pedido" + +#~ msgid "Expected Delivery Date" +#~ msgstr "Data de entrega prevista" + +#~ msgid "Notes visible to supplier" +#~ msgstr "Notas visíveis para o fornecedor" + +#~ msgid "Internal notes (not visible to supplier)" +#~ msgstr "Notas internas (não visíveis ao fornecedor)" + +#~ msgid "Items" +#~ msgstr "Itens" + +#~ msgid "Add Item" +#~ msgstr "Adicionar Item" + +#~ msgid "Qty" +#~ msgstr "Qty" + +#~ msgid "Supplier SKU" +#~ msgstr "Fornecedor SKU" + +#~ msgid "Create Purchase Order" +#~ msgstr "Criar Ordem de Compra" + +#~ msgid "Draft" +#~ msgstr "Rascunho" + +#~ msgid "Sent" +#~ msgstr "Enviado" + +#~ msgid "Confirmed" +#~ msgstr "Confirmado" + +#~ msgid "Received" +#~ msgstr "Recebido" + +#~ msgid "All Suppliers" +#~ msgstr "Todos os Fornecedores" + +#~ msgid "PO Number" +#~ msgstr "Número PO" + +#~ msgid "Expected Delivery" +#~ msgstr "Entrega prevista" + +#~ msgid "No purchase orders found." +#~ msgstr "Não foram encontrados pedidos de compra." + +#~ msgid "Are you sure you want to cancel this purchase order?" +#~ msgstr "Tem certeza de que deseja cancelar este pedido de compra?" + +#~ msgid "Are you sure you want to delete this purchase order?" +#~ msgstr "Tem certeza de que deseja excluir esta ordem de compra?" + +#~ msgid "Purchase Order Details" +#~ msgstr "Detalhes da Ordem de Compra" + +#~ msgid "Received Date" +#~ msgstr "Data de recepção" + +#~ msgid "Quantity Ordered" +#~ msgstr "Quantidade Ordenada" + +#~ msgid "Quantity Received" +#~ msgstr "Quantidade Recebida" + +#~ msgid "Line Total" +#~ msgstr "Total da Linha" + +#~ msgid "Shipping" +#~ msgstr "Transporte" + +#~ msgid "Receive Purchase Order" +#~ msgstr "Receber ordem de compra" + +#~ msgid "Mark as Received" +#~ msgstr "Marcar como Recebido" + +#~ msgid "No items in this purchase order." +#~ msgstr "Nenhum item nesta ordem de compra." + +#~ msgid "Total Items" +#~ msgstr "Total de Itens" + +#~ msgid "Total Warehouses" +#~ msgstr "Total dos Armazéns" + +#~ msgid "Total Inventory Value" +#~ msgstr "Valor total do inventário" + +#~ msgid "Low Stock Items" +#~ msgstr "Itens de stock baixos" + +#~ msgid "Available Reports" +#~ msgstr "Relatórios Disponíveis" + +#~ msgid "Stock Valuation" +#~ msgstr "Valor das existências" + +#~ msgid "View inventory value by warehouse" +#~ msgstr "Ver o valor do inventário por armazém" + +#~ msgid "Movement History" +#~ msgstr "Histórico do Movimento" + +#~ msgid "Detailed movement log" +#~ msgstr "Registo de movimentos detalhado" + +#~ msgid "Turnover Analysis" +#~ msgstr "Análise do volume de negócios" + +#~ msgid "Inventory turnover rates" +#~ msgstr "Taxas de volume de negócios do inventário" + +#~ msgid "Low Stock Report" +#~ msgstr "Relatório de stocks baixos" + +#~ msgid "Items below reorder point" +#~ msgstr "Itens abaixo do ponto de reordenação" + +#~ msgid "Found %(count)s items below their reorder point." +#~ msgstr "" + +#~ msgid "Quantity On Hand" +#~ msgstr "Quantidade na Mão" + +#~ msgid "Reorder Quantity" +#~ msgstr "Quantidade da Reordenação" + +#~ msgid "Create PO" +#~ msgstr "Criar PO" + +#~ msgid "All Stock Levels are Good" +#~ msgstr "Todos os níveis de ações são bons" + +#~ msgid "No items are currently below their reorder point." +#~ msgstr "Nenhum item está abaixo do ponto de reordenação." + +#~ msgid "No movements found." +#~ msgstr "Nenhum movimento encontrado." + +#~ msgid "" +#~ "Turnover rate indicates how many times" +#~ " inventory is sold and replaced in" +#~ " a year. Higher rates indicate " +#~ "faster-moving items." +#~ msgstr "" +#~ "Taxa de volume de negócios indica " +#~ "quantas vezes o inventário é vendido " +#~ "e substituído em um ano. Taxas " +#~ "mais elevadas indicam itens mais " +#~ "rápidos." + +#~ msgid "Total Sold" +#~ msgstr "Total Vendido" + +#~ msgid "Avg Stock Level" +#~ msgstr "Nível de stock de Avg" + +#~ msgid "Turnover Rate" +#~ msgstr "Taxa de volume de negócios" + +#~ msgid "Fast Moving" +#~ msgstr "Movimento Rápido" + +#~ msgid "Normal" +#~ msgstr "Normal" + +#~ msgid "Slow Moving" +#~ msgstr "Movimento lento" + +#~ msgid "Very Slow" +#~ msgstr "Muito lento" + +#~ msgid "No sales data found for the selected period." +#~ msgstr "Não foram encontrados dados de vendas para o período selecionado." + +#~ msgid "Inventory Valuation" +#~ msgstr "Avaliação do Inventário" + +#~ msgid "Total Value" +#~ msgstr "Valor total" + +#~ msgid "No items found with cost information." +#~ msgstr "Nenhum item encontrado com informações de custo." + +#~ msgid "Reserved" +#~ msgstr "Reservado" + +#~ msgid "Fulfilled" +#~ msgstr "Realizado" + +#~ msgid "Reserved At" +#~ msgstr "Reservado em" + +#~ msgid "Expires At" +#~ msgstr "Expira em" + +#~ msgid "Fulfill this reservation?" +#~ msgstr "Cumprir esta reserva?" + +#~ msgid "Cancel this reservation?" +#~ msgstr "Cancelar esta reserva?" + +#~ msgid "No reservations found." +#~ msgstr "Nenhuma reserva encontrada." + +#~ msgid "Unit" +#~ msgstr "Unidade" + +#~ msgid "Default Cost" +#~ msgstr "Custo Predefinido" + +#~ msgid "Default Price" +#~ msgstr "Preço Padrão" + +#~ msgid "Image URL" +#~ msgstr "URL da imagem" + +#~ msgid "Track Inventory" +#~ msgstr "Inventário da Faixa" + +#~ msgid "Manage multiple suppliers for this item with different pricing." +#~ msgstr "Gerencie vários fornecedores para este item com preços diferentes." + +#~ msgid "MOQ" +#~ msgstr "MOQ" + +#~ msgid "Lead Time (days)" +#~ msgstr "Tempo de execução (dias)" + +#~ msgid "Preferred" +#~ msgstr "Preferido" + +#~ msgid "Add Supplier" +#~ msgstr "Adicionar fornecedor" + +#~ msgid "No movement history found for this item." +#~ msgstr "Nenhum histórico de movimento encontrado para este item." + +#~ msgid "SKU, Name, Barcode..." +#~ msgstr "SKU, Nome, Código de barras..." + +#~ msgid "Active Only" +#~ msgstr "Somente Ativo" + +#~ msgid "Total Qty" +#~ msgstr "Total Qty" + +#~ msgid "Available" +#~ msgstr "Disponível" + +#~ msgid "Low Stock" +#~ msgstr "Unidade populacional baixa" + +#~ msgid "No stock items found." +#~ msgstr "Nenhum item de stock encontrado." + +#~ msgid "Item Details" +#~ msgstr "Detalhes do Item" + +#~ msgid "Trackable" +#~ msgstr "Rastreável" + +#~ msgid "Stock Levels by Warehouse" +#~ msgstr "Níveis de stocks por armazém" + +#~ msgid "Stock Breakdown by Valuation" +#~ msgstr "Repartição das existências por valorização" + +#~ msgid "" +#~ "Detailed breakdown showing remaining stock " +#~ "with different devaluation rates" +#~ msgstr "" +#~ "Desagregação pormenorizada que mostra os " +#~ "stocks remanescentes com taxas de " +#~ "desvalorização diferentes" + +#~ msgid "No devaluation" +#~ msgstr "Sem desvalorização" + +#~ msgid "Recent Stock Movements" +#~ msgstr "Movimentos de stocks recentes" + +#~ msgid "Total On Hand" +#~ msgstr "Total disponível" + +#~ msgid "Total Reserved" +#~ msgstr "Total reservado" + +#~ msgid "Total Available" +#~ msgstr "Total disponível" + +#~ msgid "Low Stock Alert" +#~ msgstr "Alerta de baixa reserva" + +#~ msgid "This item is not trackable." +#~ msgstr "Este item não é rastreável." + +#~ msgid "Active Reservations" +#~ msgstr "Reservas Ativas" + +#~ msgid "Quantity Reserved" +#~ msgstr "Quantidade reservada" + +#~ msgid "Last Counted" +#~ msgstr "Última Contada" + +#~ msgid "No stock found for this item in any warehouse." +#~ msgstr "Nenhum estoque encontrado para este item em qualquer armazém." + +#~ msgid "No stock levels found." +#~ msgstr "Não foram encontrados níveis de ações." + +#~ msgid "Low Stock Only" +#~ msgstr "Apenas stock baixo" + +#~ msgid "Oversold" +#~ msgstr "Oversold" + +#~ msgid "No stock items found in this warehouse." +#~ msgstr "Nenhuma mercadoria encontrada neste armazém." + +#~ msgid "Supplier Code" +#~ msgstr "Código do fornecedor" + +#~ msgid "Unique code for this supplier (e.g., SUP-001)" +#~ msgstr "Código único para este fornecedor (por exemplo, SUP-001)" + +#~ msgid "Payment Terms" +#~ msgstr "Condições de pagamento" + +#~ msgid "e.g., Net 30, Net 60" +#~ msgstr "Por exemplo, Net 30, Net 60" + +#~ msgid "Code, name, email" +#~ msgstr "Código, nome, e-mail" + +#~ msgid "No suppliers found." +#~ msgstr "Não foram encontrados fornecedores." + +#~ msgid "Supplier Details" +#~ msgstr "Detalhes do Fornecedor" + +#~ msgid "Stock Items from this Supplier" +#~ msgstr "Itens de stock deste Fornecedor" + +#~ msgid "Lead Time" +#~ msgstr "Tempo de execução" + +#~ msgid "No stock items associated with this supplier." +#~ msgstr "Nenhum item de estoque associado a este fornecedor." + +#~ msgid "Preferred Items" +#~ msgstr "Itens Preferenciais" + +#~ msgid "From Warehouse" +#~ msgstr "Do Armazém" + +#~ msgid "Select Source Warehouse" +#~ msgstr "Seleccionar o Armazém de Código" + +#~ msgid "To Warehouse" +#~ msgstr "Para o Armazém" + +#~ msgid "Select Destination Warehouse" +#~ msgstr "Selecionar Armazém de Destino" + +#~ msgid "Optional notes about this transfer" +#~ msgstr "Notas opcionais sobre esta transferência" + +#~ msgid "Create Transfer" +#~ msgstr "Criar transferência" + +#~ msgid "No transfers found." +#~ msgstr "Nenhuma transferência encontrada." + +#~ msgid "Warehouse Code" +#~ msgstr "Código do armazém" + +#~ msgid "Unique code for this warehouse (e.g., WH-001)" +#~ msgstr "Código único para este armazém (por exemplo, WH-001)" + +#~ msgid "Contact Email" +#~ msgstr "E- mail de Contacto" + +#~ msgid "Contact Phone" +#~ msgstr "Telefone de Contato" + +#~ msgid "No warehouses found." +#~ msgstr "Nenhum armazém foi encontrado." + +#~ msgid "Warehouse Details" +#~ msgstr "Detalhes do Armazém" + +#~ msgid "No stock items in this warehouse." +#~ msgstr "Não há stocks neste armazém." + +#~ msgid "Total Quantity" +#~ msgstr "Quantidade total" + +#~ msgid "Current Approver" +#~ msgstr "Aprovação Actual" + +#~ msgid "You" +#~ msgstr "Você" + +#~ msgid "No Pending Approvals" +#~ msgstr "Nenhuma aprovação pendente" + +#~ msgid "You have no invoices awaiting your approval." +#~ msgstr "Não tem facturas à espera da sua aprovação." + +#~ msgid "Reject Invoice Approval" +#~ msgstr "Rejeitar a aprovação da factura" + +#~ msgid "Reason for Rejection" +#~ msgstr "Motivo da rejeição" + +#~ msgid "Please provide a reason for rejecting this invoice..." +#~ msgstr "Por favor, forneça uma razão para rejeitar esta factura..." + +#~ msgid "Request Invoice Approval" +#~ msgstr "Pedido de aprovação da factura" + +#~ msgid "Back to Invoice" +#~ msgstr "Voltar à Fatura" + +#~ msgid "Select Approvers" +#~ msgstr "Seleccionar os Aprovados" + +#~ msgid "" +#~ "Select one or more users who need" +#~ " to approve this invoice. Approvals " +#~ "will be processed in order." +#~ msgstr "" +#~ "Selecione um ou mais usuários que " +#~ "precisam aprovar esta fatura. As " +#~ "aprovações serão processadas em ordem." + +#~ msgid "Request Approval" +#~ msgstr "Pedido de aprovação" + +#~ msgid "Approval Status" +#~ msgstr "Estado da homologação" + +#~ msgid "Requested By" +#~ msgstr "Solicitado por" + +#~ msgid "Requested At" +#~ msgstr "Solicitado em" + +#~ msgid "Approved By" +#~ msgstr "Aprovado por" + +#~ msgid "Rejected By" +#~ msgstr "Rejeitado por" + +#~ msgid "Rejection Reason" +#~ msgstr "Razão da Rejeição" + +#~ msgid "Approval Stages" +#~ msgstr "Fases de aprovação" + +#~ msgid "Quick Actions" +#~ msgstr "Acções Rápidas" + +#~ msgid "Waiting for approval from another user." +#~ msgstr "Aguardando aprovação de outro usuário." + +#~ msgid "Export to Excel" +#~ msgstr "Exportar para Excel" + +#~ msgid "Partially Paid" +#~ msgstr "Pagado Parcialmente" + +#~ msgid "Fully Paid" +#~ msgstr "Totalmente Pago" + +#~ msgid "Create Invoice" +#~ msgstr "Criar Fatura" + +#~ msgid "Generate a new invoice for a project and client" +#~ msgstr "Gerar uma nova fatura para um projeto e cliente" + +#~ msgid "Select a project" +#~ msgstr "Selecionar um projeto" + +#~ msgid "Selecting a project will auto-fill client details" +#~ msgstr "" +#~ "Selecionar um projeto irá preencher " +#~ "automaticamente os detalhes do cliente" + +#~ msgid "Buyer reference (PEPPOL BT-10)" +#~ msgstr "Referência do comprador (PEPPOL BT-10)" + +#~ msgid "Optional; used in PEPPOL UBL" +#~ msgstr "Opcional; utilizado em PEPPOL UBL" + +#~ msgid "Tax Rate (%)" +#~ msgstr "Taxa de Imposto (%)" + +#~ msgid "Tips" +#~ msgstr "Dicas" + +#~ msgid "Choose the correct project to auto-fill client details." +#~ msgstr "" +#~ "Escolha o projeto correto para preencher" +#~ " automaticamente os detalhes do cliente." + +#~ msgid "You can customize notes and terms before sending the invoice." +#~ msgstr "Você pode personalizar notas e termos antes de enviar a fatura." + +#~ msgid "Edit Invoice" +#~ msgstr "Editar Fatura" + +#~ msgid "Update invoice details, items, and terms" +#~ msgstr "Atualizar detalhes, itens e termos da fatura" + +#~ msgid "Time-based services and hourly work" +#~ msgstr "Serviços baseados no tempo e trabalho por hora" + +#~ msgid "Project / Stock Item" +#~ msgstr "Item do Projecto / Unidade" + +#~ msgid "Task / Warehouse" +#~ msgstr "Tarefa / Armazém" + +#~ msgid "Project hours" +#~ msgstr "Horas do projeto" + +#~ msgid "Select Stock Item" +#~ msgstr "Seleccionar o Item da Unidade" + +#~ msgid "e.g., Web Development Services" +#~ msgstr "Por exemplo, Serviços de Desenvolvimento Web" + +#~ msgid "Quantity is from logged hours and cannot be edited" +#~ msgstr "A quantidade é de horas registradas e não pode ser editada" + +#~ msgid "Remove item" +#~ msgstr "Remover item" + +#~ msgid "Items Subtotal" +#~ msgstr "Números Subtotal" + +#~ msgid "Billable expenses such as travel, meals, and materials" +#~ msgstr "Despesas de cobrança, tais como viagens, refeições e materiais" + +#~ msgid "Add Expense" +#~ msgstr "Adicionar Despesas" + +#~ msgid "e.g., Travel to Client Meeting" +#~ msgstr "Por exemplo, Travel to Client Meeting" + +#~ msgid "Linked expense - title cannot be edited" +#~ msgstr "Custo ligado - o título não pode ser editado" + +#~ msgid "Linked expense - description cannot be edited" +#~ msgstr "Despesas ligadas - a descrição não pode ser editada" + +#~ msgid "Linked expense - category cannot be edited" +#~ msgstr "Despesas ligadas - a categoria não pode ser editada" + +#~ msgid "Travel" +#~ msgstr "Viagens" + +#~ msgid "Meals" +#~ msgstr "Refeições" + +#~ msgid "Accommodation" +#~ msgstr "Alojamento" + +#~ msgid "Supplies" +#~ msgstr "Fornecimentos" + +#~ msgid "Software" +#~ msgstr "Software" + +#~ msgid "Equipment" +#~ msgstr "Equipamento" + +#~ msgid "Services" +#~ msgstr "Serviços" + +#~ msgid "Marketing" +#~ msgstr "Comercialização" + +#~ msgid "Training" +#~ msgstr "Formação" + +#~ msgid "Other" +#~ msgstr "Outros" + +#~ msgid "Linked expense - amount cannot be edited" +#~ msgstr "Despesas ligadas - o valor não pode ser editado" + +#~ msgid "Linked expense - date cannot be edited" +#~ msgstr "Custos vinculados - data não pode ser editado" + +#~ msgid "Unlink expense from invoice" +#~ msgstr "Desvincular despesas da fatura" + +#~ msgid "Expenses Subtotal" +#~ msgstr "Despesas Subtotal" + +#~ msgid "Extra Goods" +#~ msgstr "Mercadorias Extra" + +#~ msgid "Products, materials, licenses, and other goods" +#~ msgstr "Produtos, materiais, licenças e outros bens" + +#~ msgid "Add Good" +#~ msgstr "Adicionar Bom" + +#~ msgid "Price" +#~ msgstr "Preço" + +#~ msgid "e.g., Software License" +#~ msgstr "Por exemplo, Licença de software" + +#~ msgid "Product" +#~ msgstr "Produto" + +#~ msgid "Service" +#~ msgstr "Serviço" + +#~ msgid "Material" +#~ msgstr "Material" + +#~ msgid "Remove good" +#~ msgstr "Remover bom" + +#~ msgid "Goods Subtotal" +#~ msgstr "Subtotal de mercadorias" + +#~ msgid "Live Preview" +#~ msgstr "Visualização ao vivo" + +#~ msgid "Payment" +#~ msgstr "Pagamento" + +#~ msgid "Goods" +#~ msgstr "Mercadorias" + +#~ msgid "Generate from Time/Costs" +#~ msgstr "Gerar a partir do tempo/custos" + +#~ msgid "Record Payment" +#~ msgstr "Pagamento do Registo" + +#~ msgid "Export PDF" +#~ msgstr "Exportar PDF" + +#~ msgid "Export CSV" +#~ msgstr "Exportar CSV" + +#~ msgid "Duplicate Invoice" +#~ msgstr "Fatura duplicada" + +#~ msgid "Are you sure you want to unlink this expense from the invoice?" +#~ msgstr "Você tem certeza que deseja desvincular esta despesa da fatura?" + +#~ msgid "Unlink Expense" +#~ msgstr "Desvincular despesas" + +#~ msgid "Unlink" +#~ msgstr "Desvincular" + +#~ msgid "Please add at least one item, expense, or extra good to the invoice" +#~ msgstr "Por favor, adicione pelo menos um item, despesa, ou extra bom à fatura" + +#~ msgid "Generate from Time, Costs & Goods" +#~ msgstr "Gerar a partir do tempo, custos e mercadorias" + +#~ msgid "" +#~ "Select unbilled time entries, project " +#~ "costs, and extra goods to add to" +#~ " this invoice" +#~ msgstr "" +#~ "Selecione entradas de tempo, custos do" +#~ " projeto e bens extras para adicionar" +#~ " a esta fatura" + +#~ msgid "Back to Edit" +#~ msgstr "Voltar a Editar" + +#~ msgid "Unbilled Time Entries" +#~ msgstr "Ingressos Infalíveis no Tempo" + +#~ msgid "entries" +#~ msgstr "entradas" + +#~ msgid "No unbilled time entries found for this project." +#~ msgstr "Não foram encontrados itens de tempo desprotegidos para este projeto." + +#~ msgid "Uninvoiced Project Costs" +#~ msgstr "Custos do Projeto Não Faturados" + +#~ msgid "No uninvoiced costs found for this project." +#~ msgstr "Não foram encontrados custos não facturados para este projecto." + +#~ msgid "Uninvoiced Billable Expenses" +#~ msgstr "Despesas Faturáveis Não Faturadas" + +#~ msgid "Vendor" +#~ msgstr "Fabricante" + +#~ msgid "No uninvoiced billable expenses found for this project." +#~ msgstr "Não foram encontradas despesas não facturadas para este projecto." + +#~ msgid "Project Extra Goods" +#~ msgstr "Projeto Produtos Extra" + +#~ msgid "No extra goods found for this project." +#~ msgstr "Nenhuma mercadoria extra encontrada para este projeto." + +#~ msgid "Add Selected to Invoice" +#~ msgstr "Adicionar selecionado à factura" + +#~ msgid "Selection Summary" +#~ msgstr "Resumo da Seleção" + +#~ msgid "Total available hours" +#~ msgstr "Total de horas disponíveis" -#: app/templates/admin/oidc_setup_wizard.html:251 -msgid "Post-Logout Redirect URI" -msgstr "Redireccionar o URI pós- encerramento" +#~ msgid "Total available costs" +#~ msgstr "Custos totais disponíveis" -#: app/templates/admin/oidc_setup_wizard.html:258 -msgid "" -"URL to redirect to after logout (optional, only if your provider supports " -"end_session_endpoint)" -msgstr "" -"URL para redirecionar para após o logout (opcional, somente se seu provedor " -"suporta end session endpoint)" +#~ msgid "Total available expenses" +#~ msgstr "Total das despesas disponíveis" -#: app/templates/admin/oidc_setup_wizard.html:266 -msgid "Step 5: Generate Configuration" -msgstr "Passo 5: Gerar a Configuração" +#~ msgid "Total available goods" +#~ msgstr "Total das mercadorias disponíveis" -#: app/templates/admin/oidc_setup_wizard.html:271 -msgid "" -"Click \"Generate Configuration\" to create environment variable " -"configuration." -msgstr "" -"Clique em \"Generate Configuration\" para criar configuração de variável de " -"ambiente." +#~ msgid "Prepaid Hours Overview" +#~ msgstr "Visão geral das horas pré-pagos" -#: app/templates/admin/oidc_setup_wizard.html:275 -msgid "Generate Configuration" -msgstr "Gerar a Configuração" +#~ msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:280 -msgid "Environment Variables (.env file)" -msgstr "Variáveis de Ambiente (arquivo.env)" +#~ msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" +#~ msgstr "" -#: app/templates/admin/oidc_setup_wizard.html:300 -msgid "" -"Copy the configuration above and add it to your environment variables or " -"Docker Compose file, then restart the application." -msgstr "" -"Copie a configuração acima e adicione-a às variáveis de ambiente ou ao " -"arquivo Docker Compose e reinicie o aplicativo." - -#: app/templates/admin/oidc_user_detail.html:3 -#: app/templates/admin/oidc_user_detail.html:8 -msgid "OIDC User Details" -msgstr "Detalhes do usuário do OIDC" - -#: app/templates/admin/oidc_user_detail.html:9 -msgid "Profile and OIDC identity for this user" -msgstr "Perfil e identidade do OIDC para este usuário" - -#: app/templates/admin/oidc_user_detail.html:13 -msgid "Back to OIDC Debug" -msgstr "Voltar à Depuração do OIDC" - -#: app/templates/admin/oidc_user_detail.html:21 -msgid "User Profile" -msgstr "Perfil do Usuário" - -#: app/templates/admin/custom_field_definitions/form.html:59 -#: app/templates/admin/custom_field_definitions/list.html:54 -#: app/templates/admin/link_templates/form.html:64 -#: app/templates/admin/link_templates/list.html:58 -#: app/templates/admin/oidc_user_detail.html:27 -#: app/templates/admin/oidc_user_detail.html:71 -#: app/templates/admin/salesman_email_mappings.html:133 -#: app/templates/admin/webhooks/form.html:106 -#: app/templates/admin/webhooks/list.html:60 -#: app/templates/admin/webhooks/view.html:35 -#: app/templates/calendar/integrations.html:38 -#: app/templates/clients/view.html:320 -#: app/templates/integrations/health.html:24 -#: app/templates/integrations/view.html:23 -#: app/templates/inventory/stock_items/form.html:87 -#: app/templates/inventory/stock_items/list.html:89 -#: app/templates/inventory/stock_items/view.html:103 -#: app/templates/inventory/suppliers/form.html:79 -#: app/templates/inventory/suppliers/list.html:76 -#: app/templates/inventory/suppliers/view.html:33 -#: app/templates/inventory/warehouses/form.html:54 -#: app/templates/inventory/warehouses/list.html:49 -#: app/templates/inventory/warehouses/view.html:33 -#: app/templates/kanban/columns.html:72 -#: app/templates/kanban/edit_column.html:80 -#: app/templates/payment_gateways/list.html:43 -#: app/templates/projects/view.html:120 -#: app/templates/recurring_tasks/list.html:76 -#: app/templates/reports/scheduled.html:74 app/templates/tasks/_kanban.html:98 -#: app/templates/timer/calendar.html:975 -#: app/templates/weekly_goals/edit.html:88 -#: app/templates/weekly_goals/index.html:176 -#: app/templates/weekly_goals/view.html:69 app/utils/i18n_helpers.py:51 -#: app/utils/i18n_helpers.py:57 app/utils/i18n_helpers.py:244 -#: app/utils/i18n_helpers.py:255 app/utils/i18n_helpers.py:287 -#: app/utils/i18n_helpers.py:293 -msgid "Active" -msgstr "Activo" - -#: app/templates/admin/oidc_user_detail.html:28 -msgid "Preferred Language" -msgstr "Idioma Preferido" - -#: app/templates/admin/oidc_user_detail.html:30 -#: app/templates/reports/user_report.html:89 -msgid "Created At" -msgstr "Criado em" - -#: app/templates/admin/oidc_user_detail.html:37 -msgid "OIDC Information" -msgstr "Informação do OIDC" - -#: app/templates/admin/oidc_user_detail.html:39 -msgid "OIDC Issuer" -msgstr "Emissor OIDC" - -#: app/templates/admin/oidc_user_detail.html:40 -msgid "OIDC Subject (sub)" -msgstr "Assunto do OIDC (sub)" - -#: app/templates/admin/oidc_user_detail.html:41 -msgid "Local" -msgstr "Local" - -#: app/templates/admin/oidc_user_detail.html:45 -msgid "" -"This user was created or linked via OIDC. The issuer and subject are used to" -" uniquely identify the user across login sessions." -msgstr "" -"Este usuário foi criado ou vinculado via OIDC. O emitente e o sujeito são " -"usados para identificar exclusivamente o usuário em sessões de login." +#~ msgid "No prepaid usage recorded for selected period yet." +#~ msgstr "Nenhum uso pré-pago registrado para o período selecionado ainda." -#: app/templates/admin/oidc_user_detail.html:49 -msgid "" -"This user has no OIDC information. They may have been created manually or " -"via self-registration without OIDC." -msgstr "" -"Este utilizador não tem informações OIDC. Eles podem ter sido criados " -"manualmente ou através de auto-registro sem OIDC." - -#: app/templates/admin/oidc_user_detail.html:57 -msgid "Activity Statistics" -msgstr "Estatísticas de Actividades" - -#: app/templates/admin/oidc_user_detail.html:65 -#: app/templates/calendar/view.html:84 app/templates/calendar/view.html:101 -#: app/templates/calendar/view.html:102 app/templates/calendar/view.html:109 -#: app/templates/client_portal/base.html:263 -#: app/templates/client_portal/base.html:348 -#: app/templates/client_portal/projects.html:59 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:9 -#: app/templates/client_portal/time_entries.html:14 -#: app/templates/components/activity_feed_widget.html:31 -#: app/templates/components/offline_indicator.html:63 -#: app/templates/integrations/wizard_jira.html:142 -#: app/templates/projects/time_entries_overview.html:4 -#: app/templates/reports/builder.html:366 -#: app/templates/timer/time_entries_overview.html:9 -#: app/templates/timer/view_timer.html:8 -msgid "Time Entries" -msgstr "Menções de Tempo" - -#: app/templates/admin/link_templates/list.html:52 -#: app/templates/admin/oidc_user_detail.html:73 -#: app/templates/integrations/wizard_asana.html:194 -#: app/templates/integrations/wizard_github.html:228 -#: app/templates/integrations/wizard_gitlab.html:252 -#: app/templates/integrations/wizard_jira.html:257 -#: app/templates/integrations/wizard_quickbooks.html:227 -#: app/templates/integrations/wizard_xero.html:210 -#: app/templates/invoices/edit.html:98 app/templates/invoices/edit.html:106 -#: app/templates/invoices/edit.html:505 app/templates/invoices/edit.html:516 -#: app/templates/mileage/gps.html:20 -#: app/templates/quotes/_edit_quote_form_scripts.html:62 -#: app/templates/quotes/_edit_quote_form_scripts.html:73 -#: app/templates/quotes/edit.html:93 app/templates/quotes/edit.html:99 -msgid "None" -msgstr "Nenhum" - -#: app/templates/admin/oidc_user_detail.html:76 -#: app/templates/kiosk/dashboard.html:288 app/templates/user/profile.html:57 -msgid "Active Timer" -msgstr "Temporizador ativo" - -#: app/templates/admin/oidc_user_detail.html:80 -msgid "Tasks Created" -msgstr "Tarefas Criado" - -#: app/templates/admin/oidc_user_detail.html:89 -msgid "Edit User" -msgstr "Editar usuário" - -#: app/templates/admin/oidc_user_detail.html:90 -msgid "View All Users" -msgstr "Ver todos os usuários" - -#: app/templates/admin/pdf_layout.html:3 -msgid "PDF Invoice Designer" -msgstr "Designer de Fatura PDF" - -#: app/templates/admin/pdf_layout.html:1649 -msgid "Visual Invoice Designer" -msgstr "Designer Visual de Fatura" - -#: app/templates/admin/pdf_layout.html:1652 -msgid "Drag and drop elements to design your invoice layout" -msgstr "Arraste e solte elementos para projetar seu layout de fatura" - -#: app/templates/admin/pdf_layout.html:1661 -#: app/templates/admin/quote_pdf_layout.html:1472 -msgid "How to use:" -msgstr "Como utilizar:" - -#: app/templates/admin/pdf_layout.html:1662 -#: app/templates/admin/quote_pdf_layout.html:1473 -msgid "" -"Click elements from the left sidebar to add them to the canvas. Click " -"elements to select and customize them in the properties panel. Use the " -"alignment tools and keyboard shortcuts for faster editing." -msgstr "" -"Clique em elementos da barra lateral esquerda para adicioná-los à tela. " -"Clique em elementos para selecioná-los e personalizá-los no painel de " -"propriedades. Use as ferramentas de alinhamento e atalhos de teclado para " -"edição mais rápida." +#~ msgid "You can select multiple time entries, costs, expenses, and extra goods." +#~ msgstr "" +#~ "Você pode selecionar várias entradas de" +#~ " tempo, custos, despesas e bens " +#~ "extras." -#: app/templates/admin/pdf_layout.html:1665 -#: app/templates/admin/quote_pdf_layout.html:1476 -msgid "Keyboard Shortcuts:" -msgstr "Atalhos do Teclado:" +#~ msgid "Time entries are grouped by task or project at item creation." +#~ msgstr "" +#~ "As entradas de tempo são agrupadas " +#~ "por tarefa ou projeto na criação " +#~ "de itens." -#: app/templates/admin/pdf_layout.html:1676 -msgid "Help: Items Table, Expenses Table & Saving" -msgstr "Ajuda: tabela de itens, tabela de despesas e economia" +#~ msgid "Costs and extra goods are added as individual invoice items." +#~ msgstr "Custos e bens extras são adicionados como itens de fatura individuais." -#: app/templates/admin/pdf_layout.html:1679 -msgid "Items Table:" -msgstr "Tabela de itens:" +#~ msgid "Expenses are linked to the invoice and appear in a separate section." +#~ msgstr "As despesas estão ligadas à factura e aparecem numa secção separada." -#: app/templates/admin/pdf_layout.html:1679 -msgid "" -"Displays time entries, extra goods, and expenses. Add from Invoice Data in " -"the sidebar. Uses" -msgstr "" -"Exibe entradas de tempo, bens extras e despesas. Adicionar dados de fatura " -"na barra lateral. Usos" +#~ msgid "Please select at least one time entry, cost, expense, or extra good" +#~ msgstr "Selecione pelo menos uma entrada de tempo, custo, despesa, ou extra bom" -#: app/templates/admin/pdf_layout.html:1680 -msgid "Expenses Table:" -msgstr "Quadro de Despesas:" +#~ msgid "Filter Invoices" +#~ msgstr "Filtrar faturas" -#: app/templates/admin/pdf_layout.html:1680 -msgid "" -"Optional separate table for expenses. Add from Invoice Data in the sidebar." -msgstr "" -"Tabela separada opcional para despesas. Adicionar dados de fatura na barra " -"lateral." +#~ msgid "Invoice number or client" +#~ msgstr "Número da factura ou cliente" -#: app/templates/admin/pdf_layout.html:1681 -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "Saving:" -msgstr "Salvando:" +#~ msgid "Delete Selected Invoices" +#~ msgstr "Apagar as Faturas Seleccionadas" -#: app/templates/admin/pdf_layout.html:1681 -msgid "" -"Click \"Save Design\" to persist. If tables disappear after save, try Reset " -"to restore defaults, then re-add tables." -msgstr "" -"Clique em \"Salvar Design\" para persistir. Se as tabelas desaparecerem após" -" salvar, tente Reiniciar para restaurar os padrões, em seguida, re-adicione " -"tabelas." +#~ msgid "Change Status for Selected Invoices" +#~ msgstr "Mudar o estado das facturas seleccionadas" -#: app/templates/admin/pdf_layout.html:1682 -#: app/templates/admin/quote_pdf_layout.html:1492 -#: app/templates/admin/salesman_email_mappings.html:138 -msgid "Preview:" -msgstr "Antevisão:" +#~ msgid "Select Status" +#~ msgstr "Selecionar status" -#: app/templates/admin/pdf_layout.html:1682 -msgid "" -"Use \"Generate Preview\" to see how the PDF will look with real invoice " -"data." -msgstr "" -"Use \"Generate Preview\" para ver como o PDF vai ficar com dados reais da " -"fatura." - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -msgid "See" -msgstr "Veja" - -#: app/templates/admin/pdf_layout.html:1683 -#: app/templates/admin/quote_pdf_layout.html:1493 -msgid "for full documentation." -msgstr "para documentação completa." - -#: app/templates/admin/pdf_layout.html:1690 -#: app/templates/admin/pdf_layout.html:4407 -#: app/templates/admin/quote_pdf_layout.html:1500 -#: app/templates/admin/quote_pdf_layout.html:3926 -msgid "Clear Canvas" -msgstr "Limpar a Tela" - -#: app/templates/admin/pdf_layout.html:1693 -#: app/templates/admin/quote_pdf_layout.html:1503 -msgid "Generate Preview" -msgstr "Gerar a Visualização" - -#: app/templates/admin/pdf_layout.html:1696 -#: app/templates/admin/quote_pdf_layout.html:1506 -msgid "Save Design" -msgstr "Gravar o Desenho" - -#: app/templates/admin/pdf_layout.html:1699 -#: app/templates/admin/quote_pdf_layout.html:1509 -msgid "View Code" -msgstr "Ver Código" - -#: app/templates/admin/pdf_layout.html:1702 -#: app/templates/admin/quote_pdf_layout.html:1512 -msgid "Export JSON" -msgstr "Exportar o JSON" - -#: app/templates/admin/pdf_layout.html:1705 -#: app/templates/admin/quote_pdf_layout.html:1515 -msgid "Import JSON" -msgstr "Importar o JSON" - -#: app/templates/admin/pdf_layout.html:1710 -#: app/templates/admin/quote_pdf_layout.html:1520 -msgid "Snap to Grid (10px)" -msgstr "Ajustar à Grelha (10px)" - -#: app/templates/admin/pdf_layout.html:1726 -#: app/templates/admin/quote_pdf_layout.html:1536 -msgid "Toolbox" -msgstr "Caixa de Ferramentas" - -#: app/templates/admin/pdf_layout.html:1731 -#: app/templates/admin/quote_pdf_layout.html:1541 -msgid "Search elements & variables..." -msgstr "Procurar elementos & variáveis..." - -#: app/templates/admin/pdf_layout.html:1737 -#: app/templates/admin/quote_pdf_layout.html:1547 -msgid "Elements" -msgstr "Elementos" - -#: app/templates/admin/pdf_layout.html:1740 -#: app/templates/admin/quote_pdf_layout.html:1550 -msgid "Variables" -msgstr "Variáveis" - -#: app/templates/admin/pdf_layout.html:1749 -#: app/templates/admin/quote_pdf_layout.html:1559 -msgid "Basic Elements" -msgstr "Elementos Básicos" - -#: app/templates/admin/pdf_layout.html:1752 -#: app/templates/admin/quote_pdf_layout.html:1562 -msgid "Custom Text" -msgstr "Texto Personalizado" - -#: app/templates/admin/pdf_layout.html:1756 -#: app/templates/admin/quote_pdf_layout.html:1566 -msgid "Text" -msgstr "Texto" - -#: app/templates/admin/pdf_layout.html:1760 -#: app/templates/admin/quote_pdf_layout.html:1570 -msgid "Heading" -msgstr "Rubrica" - -#: app/templates/admin/pdf_layout.html:1764 -#: app/templates/admin/quote_pdf_layout.html:1574 -msgid "Line" -msgstr "Linha" - -#: app/templates/admin/pdf_layout.html:1768 -#: app/templates/admin/quote_pdf_layout.html:1578 -msgid "Rectangle" -msgstr "Rectângulo" - -#: app/templates/admin/pdf_layout.html:1772 -#: app/templates/admin/quote_pdf_layout.html:1582 -msgid "Circle" -msgstr "Círculo" - -#: app/templates/admin/pdf_layout.html:1777 -#: app/templates/admin/quote_pdf_layout.html:1587 -msgid "Company Info" -msgstr "Informações da Empresa" - -#: app/templates/admin/pdf_layout.html:1780 -#: app/templates/admin/quote_pdf_layout.html:1590 -#: app/templates/admin/settings.html:611 app/templates/admin/settings.html:632 -#: app/templates/invoices/pdf_default.html:37 -#: app/templates/quotes/pdf_default.html:37 -msgid "Company Logo" -msgstr "Logotipo da empresa" - -#: app/templates/admin/email_templates/create.html:52 -#: app/templates/admin/email_templates/edit.html:69 -#: app/templates/admin/pdf_layout.html:1784 -#: app/templates/admin/quote_pdf_layout.html:1594 -#: app/templates/admin/settings.html:211 app/templates/leads/form.html:35 -msgid "Company Name" -msgstr "Nome da empresa" - -#: app/templates/admin/pdf_layout.html:1788 -#: app/templates/admin/quote_pdf_layout.html:1598 -msgid "Company Details" -msgstr "Detalhes da empresa" - -#: app/templates/admin/pdf_layout.html:1792 -#: app/templates/admin/quote_pdf_layout.html:1602 -#: app/templates/clients/create.html:71 app/templates/clients/edit.html:65 -#: app/templates/contacts/form.html:79 app/templates/contacts/view.html:64 -#: app/templates/inventory/suppliers/form.html:48 -#: app/templates/inventory/suppliers/view.html:69 -#: app/templates/inventory/warehouses/form.html:32 -#: app/templates/inventory/warehouses/view.html:41 -#: app/templates/main/help.html:245 app/templates/projects/create.html:302 -#: app/templates/setup/initial_setup.html:143 -msgid "Address" -msgstr "Endereço" - -#: app/templates/admin/pdf_layout.html:1800 -#: app/templates/admin/quote_pdf_layout.html:1610 -#: app/templates/clients/create.html:67 app/templates/clients/edit.html:61 -#: app/templates/contacts/form.html:42 app/templates/contacts/list.html:30 -#: app/templates/contacts/list.html:54 app/templates/contacts/view.html:37 -#: app/templates/inventory/suppliers/form.html:44 -#: app/templates/inventory/suppliers/list.html:45 -#: app/templates/inventory/suppliers/list.html:67 -#: app/templates/inventory/suppliers/view.html:61 -#: app/templates/invoices/pdf_default.html:45 app/templates/leads/form.html:45 -#: app/templates/leads/view.html:55 app/templates/projects/create.html:298 -#: app/templates/quotes/pdf_default.html:45 -#: app/templates/setup/initial_setup.html:152 app/utils/pdf_generator.py:1117 -msgid "Phone" -msgstr "Telefone" - -#: app/templates/admin/pdf_layout.html:1804 -#: app/templates/admin/quote_pdf_layout.html:1614 -#: app/templates/inventory/suppliers/form.html:52 -#: app/templates/inventory/suppliers/view.html:75 -#: app/templates/invoices/pdf_default.html:46 -#: app/templates/quotes/pdf_default.html:46 -#: app/templates/setup/initial_setup.html:156 app/utils/pdf_generator.py:1118 -msgid "Website" -msgstr "Sítio Web" - -#: app/templates/admin/pdf_layout.html:1808 -#: app/templates/admin/quote_pdf_layout.html:1618 -#: app/templates/inventory/suppliers/form.html:56 -#: app/templates/inventory/suppliers/view.html:83 -#: app/templates/invoices/pdf_default.html:48 -#: app/templates/quotes/pdf_default.html:48 -msgid "Tax ID" -msgstr "ID fiscal" - -#: app/templates/admin/pdf_layout.html:1813 -msgid "Invoice Data" -msgstr "Dados da factura" - -#: app/templates/admin/email_templates/create.html:49 -#: app/templates/admin/email_templates/edit.html:66 -#: app/templates/admin/pdf_layout.html:1816 -#: app/templates/client_portal/invoices.html:71 -#: app/templates/payment_gateways/pay.html:11 -#: app/templates/payments/view.html:155 -#: app/templates/recurring_invoices/view.html:97 -#: app/templates/recurring_invoices/view.html:107 -#: app/templates/timer/edit_timer.html:366 -#: app/templates/timer/edit_timer.html:487 -msgid "Invoice Number" -msgstr "Número da factura" - -#: app/templates/admin/pdf_layout.html:1820 -msgid "Invoice Date" -msgstr "Data da factura" - -#: app/templates/admin/pdf_layout.html:1824 -#: app/templates/admin/quote_pdf_layout.html:1634 -#: app/templates/client_portal/invoice_detail.html:35 -#: app/templates/client_portal/invoices.html:73 -#: app/templates/deals/activity_form.html:46 -#: app/templates/invoices/create.html:35 app/templates/invoices/edit.html:30 -#: app/templates/invoices/pdf_default.html:58 -#: app/templates/leads/activity_form.html:46 -#: app/templates/payment_gateways/pay.html:19 -#: app/templates/tasks/_kanban.html:132 app/templates/tasks/_kanban.html:1271 -#: app/templates/tasks/_tasks_list.html:78 app/templates/tasks/create.html:93 -#: app/templates/tasks/edit.html:101 app/utils/pdf_generator.py:1128 -msgid "Due Date" -msgstr "Data de vencimento" - -#: app/templates/admin/pdf_layout.html:1832 -#: app/templates/admin/quote_pdf_layout.html:1642 -msgid "Client Info" -msgstr "Informações do Cliente" - -#: app/templates/admin/pdf_layout.html:1836 -#: app/templates/admin/quote_pdf_layout.html:1646 -#: app/templates/clients/create.html:20 app/templates/clients/create.html:120 -#: app/templates/clients/edit.html:20 -#: app/templates/import_export/index.html:69 -#: app/templates/invoices/create.html:27 app/templates/invoices/edit.html:22 -#: app/templates/projects/create.html:274 -msgid "Client Name" -msgstr "Nome do Cliente" - -#: app/templates/admin/pdf_layout.html:1840 -#: app/templates/admin/quote_pdf_layout.html:1650 -#: app/templates/invoices/create.html:39 app/templates/invoices/edit.html:38 -msgid "Client Address" -msgstr "Endereço do Cliente" - -#: app/templates/admin/pdf_layout.html:1844 -msgid "Items Table" -msgstr "Quadro de Itens" - -#: app/templates/admin/pdf_layout.html:1848 -msgid "Expenses Table" -msgstr "Quadro de Despesas" - -#: app/templates/admin/pdf_layout.html:1852 -#: app/templates/admin/quote_pdf_layout.html:1658 -#: app/templates/client_portal/invoice_detail.html:82 -#: app/templates/client_portal/quote_detail.html:103 -#: app/templates/inventory/purchase_orders/form.html:93 -#: app/templates/inventory/purchase_orders/view.html:122 -#: app/templates/invoices/edit.html:346 app/templates/quotes/view.html:129 -msgid "Subtotal" -msgstr "Subtotal" - -#: app/templates/admin/pdf_layout.html:1856 -#: app/templates/admin/quote_pdf_layout.html:1662 -#: app/templates/client_portal/invoice_detail.html:87 -#: app/templates/client_portal/quote_detail.html:108 -#: app/templates/inventory/purchase_orders/view.html:133 -#: app/templates/invoices/edit.html:351 app/templates/quotes/view.html:155 -#: app/utils/pdf_generator_fallback.py:620 -msgid "Tax" -msgstr "Imposto" - -#: app/templates/admin/pdf_layout.html:1860 -#: app/templates/admin/quote_pdf_layout.html:1666 -#: app/templates/inventory/purchase_orders/list.html:55 -#: app/templates/inventory/purchase_orders/list.html:87 -#: app/templates/inventory/purchase_orders/view.html:189 -#: app/templates/invoices/pdf_default.html:91 -#: app/templates/payments/list.html:28 app/templates/projects/goods.html:21 -#: app/templates/quotes/accept.html:27 -#: app/templates/quotes/pdf_default.html:98 app/utils/pdf_generator.py:1157 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Total Amount" -msgstr "Montante total" - -#: app/templates/admin/pdf_layout.html:1868 -#: app/templates/admin/quote_pdf_layout.html:1674 -#: app/templates/client_portal/invoice_detail.html:130 -#: app/templates/invoices/create.html:55 app/templates/invoices/edit.html:50 -msgid "Terms" -msgstr "Termos" - -#: app/templates/admin/pdf_layout.html:1873 -#: app/templates/admin/quote_pdf_layout.html:1679 -msgid "Payment & Project" -msgstr "& Projeto de pagamento" - -#: app/templates/admin/pdf_layout.html:1876 -#: app/templates/admin/quote_pdf_layout.html:1682 -msgid "Payment Date" -msgstr "Data de pagamento" - -#: app/templates/admin/pdf_layout.html:1880 -#: app/templates/admin/quote_pdf_layout.html:1686 -msgid "Payment Method" -msgstr "Método de pagamento" - -#: app/templates/admin/pdf_layout.html:1884 -#: app/templates/admin/quote_pdf_layout.html:1690 -#: app/templates/analytics/dashboard_improved.html:136 -msgid "Payment Status" -msgstr "Status do pagamento" - -#: app/templates/admin/pdf_layout.html:1888 -#: app/templates/admin/quote_pdf_layout.html:1694 -#: app/templates/invoices/edit.html:364 -msgid "Amount Paid" -msgstr "Montante pago" - -#: app/templates/admin/pdf_layout.html:1896 -#: app/templates/admin/quote_pdf_layout.html:1702 -#: app/templates/project_templates/create_project.html:26 -#: app/templates/projects/create.html:22 app/templates/projects/edit.html:22 -#: app/templates/quotes/accept.html:48 -msgid "Project Name" -msgstr "Nome do projeto" - -#: app/templates/admin/pdf_layout.html:1900 -#: app/templates/admin/quote_pdf_layout.html:1706 -#: app/templates/invoices/create.html:31 app/templates/invoices/edit.html:26 -msgid "Client Email" -msgstr "E- mail do Cliente" - -#: app/templates/admin/pdf_layout.html:1904 -#: app/templates/admin/quote_pdf_layout.html:1710 -msgid "Client Phone" -msgstr "Telefone do Cliente" - -#: app/templates/admin/pdf_layout.html:1912 -#: app/templates/admin/quote_pdf_layout.html:1718 -msgid "QR Code" -msgstr "Código QR" - -#: app/templates/admin/pdf_layout.html:1916 -#: app/templates/admin/quote_pdf_layout.html:1722 -#: app/templates/inventory/stock_items/form.html:49 -#: app/templates/inventory/stock_items/view.html:40 -msgid "Barcode" -msgstr "Código de barras" - -#: app/templates/admin/pdf_layout.html:1920 -#: app/templates/admin/quote_pdf_layout.html:1726 -msgid "Page Number" -msgstr "Número da página" - -#: app/templates/admin/pdf_layout.html:1924 -#: app/templates/admin/quote_pdf_layout.html:1730 -msgid "Current Date" -msgstr "Data atual" - -#: app/templates/admin/pdf_layout.html:1928 -#: app/templates/admin/quote_pdf_layout.html:1734 -msgid "Watermark" -msgstr "Marca de água" - -#: app/templates/admin/pdf_layout.html:1932 -#: app/templates/admin/quote_pdf_layout.html:1738 -msgid "Bank Info" -msgstr "Informações do Banco" - -#: app/templates/admin/pdf_layout.html:1936 -#: app/templates/admin/quote_pdf_layout.html:1742 -#: app/templates/deals/form.html:66 -#: app/templates/inventory/purchase_orders/form.html:46 -#: app/templates/inventory/stock_items/form.html:53 -#: app/templates/inventory/suppliers/form.html:64 -#: app/templates/inventory/suppliers/view.html:94 -#: app/templates/invoices/edit.html:325 app/templates/leads/form.html:79 -#: app/templates/projects/add_cost.html:64 -#: app/templates/projects/add_good.html:55 -#: app/templates/projects/edit_cost.html:71 -#: app/templates/projects/edit_good.html:55 -#: app/templates/quotes/create.html:160 app/templates/quotes/edit.html:259 -#: app/templates/setup/initial_setup.html:127 -msgid "Currency" -msgstr "Moeda" - -#: app/templates/admin/pdf_layout.html:1940 -#: app/templates/admin/quote_pdf_layout.html:1746 -msgid "Decorative Image" -msgstr "Imagem decorativa" - -#: app/templates/admin/pdf_layout.html:1948 -msgid "Invoice Fields" -msgstr "Campos de Fatura" - -#: app/templates/admin/pdf_layout.html:1951 -msgid "Invoice number" -msgstr "Número da factura" - -#: app/templates/admin/pdf_layout.html:1955 -msgid "Invoice status (draft/sent/paid/overdue)" -msgstr "Estatuto da factura (projeto/envio/pago/excedente)" - -#: app/templates/admin/pdf_layout.html:1959 -#: app/templates/admin/quote_pdf_layout.html:1765 -msgid "Issue date" -msgstr "Data de emissão" - -#: app/templates/admin/pdf_layout.html:1963 -#: app/templates/admin/quote_pdf_layout.html:1769 -msgid "Due date" -msgstr "Data de vencimento" - -#: app/templates/admin/pdf_layout.html:1967 -#: app/templates/admin/quote_pdf_layout.html:1773 -msgid "Subtotal amount" -msgstr "Montante total" - -#: app/templates/admin/pdf_layout.html:1971 -#: app/templates/admin/quote_pdf_layout.html:1777 -msgid "Tax rate (%)" -msgstr "Taxa fiscal (%)" - -#: app/templates/admin/pdf_layout.html:1975 -#: app/templates/admin/quote_pdf_layout.html:1781 -msgid "Tax amount" -msgstr "Montante fiscal" - -#: app/templates/admin/pdf_layout.html:1979 -#: app/templates/admin/quote_pdf_layout.html:1785 -msgid "Total amount" -msgstr "Montante total" - -#: app/templates/admin/pdf_layout.html:1983 -#: app/templates/admin/quote_pdf_layout.html:1789 -msgid "Currency code (EUR, USD, etc)" -msgstr "Código monetário (EUR, USD, etc.)" - -#: app/templates/admin/pdf_layout.html:1987 -msgid "Invoice notes" -msgstr "Notas de factura" - -#: app/templates/admin/pdf_layout.html:1991 -#: app/templates/admin/quote_pdf_layout.html:1797 -msgid "Terms & conditions" -msgstr "Termos e condições" - -#: app/templates/admin/pdf_layout.html:1996 -#: app/templates/admin/quote_pdf_layout.html:1802 -msgid "Client Fields" -msgstr "Campos do Cliente" - -#: app/templates/admin/pdf_layout.html:1999 -#: app/templates/admin/quote_pdf_layout.html:1805 -msgid "Client company name" -msgstr "Nome da empresa cliente" - -#: app/templates/admin/pdf_layout.html:2003 -#: app/templates/admin/quote_pdf_layout.html:1809 -msgid "Client email address" -msgstr "Endereço de e- mail do cliente" - -#: app/templates/admin/pdf_layout.html:2007 -#: app/templates/admin/quote_pdf_layout.html:1813 -msgid "Client full address" -msgstr "Endereço completo do cliente" - -#: app/templates/admin/pdf_layout.html:2011 -#: app/templates/admin/quote_pdf_layout.html:1817 -msgid "Client contact person" -msgstr "Pessoa de contacto do cliente" - -#: app/templates/admin/pdf_layout.html:2015 -#: app/templates/admin/quote_pdf_layout.html:1821 -msgid "Client phone number" -msgstr "Número de telefone do cliente" - -#: app/templates/admin/pdf_layout.html:2020 -#: app/templates/admin/quote_pdf_layout.html:1826 -msgid "Payment Fields" -msgstr "Campos de pagamento" - -#: app/templates/admin/pdf_layout.html:2023 -msgid "Payment status" -msgstr "Situação do pagamento" - -#: app/templates/admin/pdf_layout.html:2027 -msgid "Payment date" -msgstr "Data de pagamento" - -#: app/templates/admin/pdf_layout.html:2031 -#: app/templates/admin/quote_pdf_layout.html:1837 -msgid "Payment method" -msgstr "Método de pagamento" - -#: app/templates/admin/pdf_layout.html:2035 -#: app/templates/admin/quote_pdf_layout.html:1841 -msgid "Payment reference number" -msgstr "Número de referência do pagamento" - -#: app/templates/admin/pdf_layout.html:2039 -#: app/templates/admin/quote_pdf_layout.html:1845 -msgid "Amount paid" -msgstr "Montante pago" - -#: app/templates/admin/pdf_layout.html:2043 -#: app/templates/admin/quote_pdf_layout.html:1849 -msgid "Outstanding amount" -msgstr "Montante por liquidar" - -#: app/templates/admin/pdf_layout.html:2047 -#: app/templates/admin/quote_pdf_layout.html:1853 -msgid "Payment notes" -msgstr "Notas de pagamento" - -#: app/templates/admin/pdf_layout.html:2052 -#: app/templates/admin/quote_pdf_layout.html:1858 -msgid "Project Fields" -msgstr "Campos do Projeto" - -#: app/templates/admin/pdf_layout.html:2055 -#: app/templates/admin/quote_pdf_layout.html:1861 -#: app/templates/quotes/accept.html:49 -msgid "Project name" -msgstr "Nome do projeto" - -#: app/templates/admin/pdf_layout.html:2059 -#: app/templates/admin/quote_pdf_layout.html:1865 -msgid "Project code" -msgstr "Código do projecto" - -#: app/templates/admin/pdf_layout.html:2063 -#: app/templates/admin/quote_pdf_layout.html:1869 -msgid "Project description" -msgstr "Descrição do projecto" - -#: app/templates/admin/pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:1873 -msgid "Project billing reference" -msgstr "Referência de facturação do projecto" - -#: app/templates/admin/pdf_layout.html:2072 -#: app/templates/admin/quote_pdf_layout.html:1878 -msgid "Company/Settings Fields" -msgstr "Áreas da Empresa/Configurações" - -#: app/templates/admin/pdf_layout.html:2075 -#: app/templates/admin/quote_pdf_layout.html:1881 -msgid "Your company name" -msgstr "O nome da sua empresa" - -#: app/templates/admin/pdf_layout.html:2079 -#: app/templates/admin/quote_pdf_layout.html:1885 -msgid "Your company address" -msgstr "Endereço da sua empresa" - -#: app/templates/admin/pdf_layout.html:2083 -#: app/templates/admin/quote_pdf_layout.html:1889 -msgid "Your company email" -msgstr "Seu email da empresa" - -#: app/templates/admin/pdf_layout.html:2087 -#: app/templates/admin/quote_pdf_layout.html:1893 -msgid "Your company phone" -msgstr "Seu telefone da empresa" - -#: app/templates/admin/pdf_layout.html:2091 -#: app/templates/admin/quote_pdf_layout.html:1897 -msgid "Your company website" -msgstr "Seu site da empresa" - -#: app/templates/admin/pdf_layout.html:2095 -#: app/templates/admin/quote_pdf_layout.html:1901 -msgid "Your tax ID number" -msgstr "O seu número de identificação fiscal" - -#: app/templates/admin/pdf_layout.html:2099 -#: app/templates/admin/quote_pdf_layout.html:1905 -msgid "Your bank account info" -msgstr "Informações da sua conta bancária" - -#: app/templates/admin/pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:1909 -msgid "Default invoice terms" -msgstr "Termos da factura por omissão" - -#: app/templates/admin/pdf_layout.html:2107 -#: app/templates/admin/quote_pdf_layout.html:1913 -msgid "Default invoice notes" -msgstr "Notas de fatura padrão" - -#: app/templates/admin/pdf_layout.html:2112 -#: app/templates/admin/quote_pdf_layout.html:1918 -msgid "Date/Time Fields" -msgstr "Campos de Data/Hora" - -#: app/templates/admin/pdf_layout.html:2115 -#: app/templates/admin/quote_pdf_layout.html:1921 -msgid "Current date" -msgstr "Data atual" - -#: app/templates/admin/pdf_layout.html:2119 -msgid "Invoice creation date" -msgstr "Data de criação da factura" - -#: app/templates/admin/pdf_layout.html:2123 -msgid "Invoice last update date" -msgstr "Data da última atualização da factura" - -#: app/templates/admin/pdf_layout.html:2128 -msgid "Invoice Items Loop" -msgstr "Circulação de Itens de Fatura" - -#: app/templates/admin/pdf_layout.html:2131 -msgid "All items (time + extra goods + expenses)" -msgstr "Todos os itens (tempo + bens extras + despesas)" - -#: app/templates/admin/pdf_layout.html:2135 -msgid "Time-based items only" -msgstr "Apenas itens baseados no tempo" - -#: app/templates/admin/pdf_layout.html:2139 -#: app/templates/admin/quote_pdf_layout.html:1941 -#: app/templates/quotes/_edit_quote_form_scripts.html:172 -#: app/templates/quotes/edit.html:106 -msgid "Item description" -msgstr "Descrição do item" - -#: app/templates/admin/pdf_layout.html:2143 -#: app/templates/admin/quote_pdf_layout.html:1945 -msgid "Item quantity" -msgstr "Quantidade do item" - -#: app/templates/admin/pdf_layout.html:2147 -#: app/templates/admin/quote_pdf_layout.html:1949 -msgid "Item unit price" -msgstr "Preço unitário do item" - -#: app/templates/admin/pdf_layout.html:2151 -#: app/templates/admin/quote_pdf_layout.html:1953 -msgid "Item total amount" -msgstr "Montante total do item" - -#: app/templates/admin/pdf_layout.html:2155 -#: app/templates/admin/quote_pdf_layout.html:1957 -msgid "End loop" -msgstr "Ciclo final" - -#: app/templates/admin/pdf_layout.html:2159 -msgid "Extra Goods Loop" -msgstr "Circulação de Bens Extra" - -#: app/templates/admin/pdf_layout.html:2162 -msgid "Loop through extra goods only" -msgstr "Circular apenas através de mercadorias extra" - -#: app/templates/admin/pdf_layout.html:2166 -msgid "Good name" -msgstr "Bom nome" - -#: app/templates/admin/pdf_layout.html:2170 -msgid "Good total amount" -msgstr "Montante total positivo" - -#: app/templates/admin/pdf_layout.html:2182 -#: app/templates/admin/quote_pdf_layout.html:1969 -msgid "Design Canvas" -msgstr "Desenho de Tela" - -#: app/templates/admin/pdf_layout.html:2186 -#: app/templates/admin/quote_pdf_layout.html:1973 -msgid "Page Size:" -msgstr "Tamanho da Página:" - -#: app/templates/admin/pdf_layout.html:2208 -#: app/templates/admin/pdf_layout.html:2317 -#: app/templates/admin/quote_pdf_layout.html:1995 -#: app/templates/admin/quote_pdf_layout.html:2089 -msgid "Zoom In" -msgstr "Ampliar" - -#: app/templates/admin/pdf_layout.html:2211 -#: app/templates/admin/pdf_layout.html:2310 -#: app/templates/admin/quote_pdf_layout.html:1998 -#: app/templates/admin/quote_pdf_layout.html:2082 -msgid "Zoom Out" -msgstr "Reduzir" - -#: app/templates/admin/pdf_layout.html:2215 -#: app/templates/admin/quote_pdf_layout.html:2002 -msgid "Delete Selected" -msgstr "Apagar os Seleccionados" - -#: app/templates/admin/pdf_layout.html:2228 -#: app/templates/admin/quote_pdf_layout.html:2015 -msgid "Properties" -msgstr "Propriedades" - -#: app/templates/admin/pdf_layout.html:2235 -msgid "Warnings" -msgstr "Avisos" - -#: app/templates/admin/pdf_layout.html:2237 -msgid "Refresh warnings" -msgstr "Actualizar as advertências" - -#: app/templates/admin/pdf_layout.html:2242 -msgid "No warnings" -msgstr "Sem avisos" - -#: app/templates/admin/pdf_layout.html:2249 -#: app/templates/admin/quote_pdf_layout.html:2021 -msgid "Template Settings" -msgstr "Configuração do Modelo" - -#: app/templates/admin/pdf_layout.html:2253 -#: app/templates/admin/quote_pdf_layout.html:2025 -#: app/templates/user/settings.html:432 -msgid "Date Format" -msgstr "Formato da Data" - -#: app/templates/admin/pdf_layout.html:2259 -#: app/templates/admin/quote_pdf_layout.html:2031 -#, python-format -msgid "Use strftime format (e.g., %d.%m.%Y for 12.09.2025)" -msgstr "" +#~ msgid "Invoice Reference" +#~ msgstr "Referência da factura" -#: app/templates/admin/pdf_layout.html:2264 -#: app/templates/admin/quote_pdf_layout.html:2036 -msgid "Select an element to edit its properties" -msgstr "Selecione um elemento para editar suas propriedades" - -#: app/templates/admin/pdf_layout.html:2276 -#: app/templates/admin/pdf_layout.html:2369 -#: app/templates/admin/quote_pdf_layout.html:2048 -#: app/templates/admin/quote_pdf_layout.html:2141 -msgid "PDF Preview" -msgstr "Visualização em PDF" - -#: app/templates/admin/pdf_layout.html:2281 -#: app/templates/admin/pdf_layout.html:2282 -#: app/templates/admin/quote_pdf_layout.html:2053 -#: app/templates/admin/quote_pdf_layout.html:2054 -msgid "Page Size" -msgstr "Tamanho da Página" - -#: app/templates/admin/pdf_layout.html:2292 -#: app/templates/admin/quote_pdf_layout.html:2064 -msgid "Refresh Preview" -msgstr "Actualizar a Antevisão" - -#: app/templates/admin/pdf_layout.html:2295 -#: app/templates/admin/pdf_layout.html:4901 -#: app/templates/admin/quote_pdf_layout.html:2067 -#: app/templates/admin/quote_pdf_layout.html:4439 -#: app/templates/kiosk/base.html:121 -msgid "Toggle Fullscreen" -msgstr "Alternar tela cheia" - -#: app/templates/admin/pdf_layout.html:2300 -#: app/templates/admin/quote_pdf_layout.html:2072 -msgid "Close Preview" -msgstr "Fechar a Visualização" - -#: app/templates/admin/pdf_layout.html:2314 -#: app/templates/admin/quote_pdf_layout.html:2086 -msgid "Zoom Level" -msgstr "Nível de Ampliação" - -#: app/templates/admin/pdf_layout.html:2320 -#: app/templates/admin/quote_pdf_layout.html:2092 -msgid "Reset Zoom" -msgstr "Reiniciar ampliação" - -#: app/templates/admin/pdf_layout.html:2325 -#: app/templates/admin/quote_pdf_layout.html:2097 -msgid "Fit to Width" -msgstr "Ajustar à Largura" - -#: app/templates/admin/pdf_layout.html:2326 -#: app/templates/admin/quote_pdf_layout.html:2098 -msgid "Fit Width" -msgstr "Largura de ajuste" - -#: app/templates/admin/pdf_layout.html:2328 -#: app/templates/admin/quote_pdf_layout.html:2100 -msgid "Fit to Height" -msgstr "Ajustar à Altura" - -#: app/templates/admin/pdf_layout.html:2329 -#: app/templates/admin/quote_pdf_layout.html:2101 -msgid "Fit Height" -msgstr "Altura Ajustada" - -#: app/templates/admin/pdf_layout.html:2331 -#: app/templates/admin/pdf_layout.html:2332 -#: app/templates/admin/quote_pdf_layout.html:2103 -#: app/templates/admin/quote_pdf_layout.html:2104 -msgid "Actual Size" -msgstr "Tamanho Real" - -#: app/templates/admin/pdf_layout.html:2343 -#: app/templates/admin/quote_pdf_layout.html:2115 -msgid "Generating preview..." -msgstr "A gerar a antevisão..." - -#: app/templates/admin/pdf_layout.html:2354 -#: app/templates/admin/quote_pdf_layout.html:2126 -msgid "Preview Error" -msgstr "Erro de Antevisão" - -#: app/templates/admin/pdf_layout.html:2358 -#: app/templates/admin/quote_pdf_layout.html:2130 -msgid "Retry" -msgstr "Repetir" - -#: app/templates/admin/pdf_layout.html:2391 -#: app/templates/admin/quote_pdf_layout.html:2163 -msgid "Generated Code" -msgstr "Código Gerado" - -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/pdf_layout.html:4229 -#: app/templates/admin/quote_pdf_layout.html:3267 -#: app/templates/admin/quote_pdf_layout.html:3752 -msgid "Change Image" -msgstr "Mudar imagem" - -#: app/templates/admin/pdf_layout.html:3717 -#: app/templates/admin/quote_pdf_layout.html:3267 -msgid "Upload Image" -msgstr "Enviar imagem" - -#: app/templates/admin/pdf_layout.html:3724 -#: app/templates/admin/quote_pdf_layout.html:3274 -msgid "Remove Image" -msgstr "Remover imagem" - -#: app/templates/admin/pdf_layout.html:4173 -#: app/templates/admin/quote_pdf_layout.html:3702 -msgid "Only image files (PNG, JPG, JPEG, GIF, WEBP) are allowed" -msgstr "Apenas são permitidos arquivos de imagem (PNG, JPG, JPEG, GIF, WEBP)" - -#: app/templates/admin/pdf_layout.html:4179 -#: app/templates/admin/quote_pdf_layout.html:3708 -msgid "File size must be less than 5MB" -msgstr "O tamanho do arquivo deve ser inferior a 5MB" - -#: app/templates/admin/pdf_layout.html:4192 -#: app/templates/admin/quote_pdf_layout.html:3718 -#: app/templates/chat/channel.html:316 -msgid "Uploading..." -msgstr "Enviando..." - -#: app/templates/admin/pdf_layout.html:4215 -#: app/templates/admin/quote_pdf_layout.html:3740 -msgid "Error: Image update function not found" -msgstr "Erro: A função de atualização da imagem não foi encontrada" - -#: app/templates/admin/pdf_layout.html:4218 -#: app/templates/admin/pdf_layout.html:4223 -#: app/templates/admin/quote_pdf_layout.html:3743 -#: app/templates/admin/quote_pdf_layout.html:3748 -msgid "Failed to upload image" -msgstr "Falha ao enviar a imagem" - -#: app/templates/admin/pdf_layout.html:4247 -#: app/templates/admin/quote_pdf_layout.html:3766 -msgid "Are you sure you want to remove this image?" -msgstr "Tem certeza de que deseja remover esta imagem?" - -#: app/templates/admin/pdf_layout.html:4405 -#: app/templates/admin/quote_pdf_layout.html:3924 -msgid "Clear all elements?" -msgstr "Limpar todos os elementos?" - -#: app/templates/admin/pdf_layout.html:4408 -#: app/templates/admin/quote_pdf_layout.html:3927 -#: app/templates/audit_logs/list.html:63 -#: app/templates/components/multi_select.html:116 -#: app/templates/tasks/my_tasks.html:181 -#: app/templates/timer/bulk_entry.html:226 -#: app/templates/timer/calendar.html:80 -#: app/templates/timer/manual_entry.html:161 -msgid "Clear" -msgstr "Limpar" - -#: app/templates/admin/pdf_layout.html:4898 -#: app/templates/admin/quote_pdf_layout.html:4436 -msgid "Exit Fullscreen" -msgstr "Sair do Ecrã Completo" - -#: app/templates/admin/pdf_layout.html:5034 -#: app/templates/admin/quote_pdf_layout.html:4572 -msgid "Failed to load preview. Please try again." -msgstr "Não foi possível carregar a antevisão. Por favor, tente novamente." - -#: app/templates/admin/pdf_layout.html:5106 -#: app/templates/admin/quote_pdf_layout.html:4648 -msgid "" -"Changing page size will reload the preview with the template for that size. " -"Continue?" -msgstr "" -"Alterar o tamanho da página irá recarregar a visualização com o modelo para " -"esse tamanho. Continuar?" +#~ msgid "e.g., Payment confirmation number" +#~ msgstr "Por exemplo, número de confirmação do pagamento" -#: app/templates/admin/pdf_layout.html:5158 -#: app/templates/admin/quote_pdf_layout.html:4703 -msgid "" -"Preview functionality is currently unavailable. Please check the browser " -"console for errors." -msgstr "" -"A funcionalidade de visualização não está disponível no momento. Por favor, " -"verifique se há erros na consola do navegador." - -#: app/templates/admin/pdf_layout.html:7732 -#: app/templates/admin/quote_pdf_layout.html:7172 -msgid "Reset to defaults?" -msgstr "Reiniciar como padrão?" - -#: app/templates/admin/pdf_layout.html:7734 -#: app/templates/admin/quote_pdf_layout.html:7174 -msgid "Reset PDF Layout" -msgstr "Reiniciar PDF Disposição" - -#: app/templates/admin/pdf_layout.html:7770 -#: app/templates/admin/quote_pdf_layout.html:7210 -msgid "Error importing template" -msgstr "Erro ao importar modelo" - -#: app/templates/admin/quote_pdf_layout.html:3 -msgid "PDF Quote Designer" -msgstr "Designer de Citações PDF" - -#: app/templates/admin/quote_pdf_layout.html:1460 -msgid "Visual Quote Designer" -msgstr "Desenhador de Citações Visual" - -#: app/templates/admin/quote_pdf_layout.html:1463 -msgid "Drag and drop elements to design your quote layout" -msgstr "Arraste e solte elementos para projetar seu layout de citação" - -#: app/templates/admin/quote_pdf_layout.html:1487 -msgid "Help: Quote Items Table & Saving" -msgstr "Ajuda: Tabela de itens de citação & Salvando" - -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Quote Items Table:" -msgstr "Tabela de Itens de Citação:" - -#: app/templates/admin/quote_pdf_layout.html:1490 -msgid "Displays quote line items. Add from Invoice Data in the sidebar." -msgstr "" -"Mostra os itens de linha de citação. Adicionar dados de fatura na barra " -"lateral." +#~ msgid "Delete Invoice" +#~ msgstr "Apagar a factura" -#: app/templates/admin/quote_pdf_layout.html:1491 -msgid "" -"Click \"Save Design\" to persist. If the table disappears after save, try " -"Reset to restore defaults, then re-add the Items Table." -msgstr "" -"Clique em \"Salvar Design\" para persistir. Se a tabela desaparecer após a " -"gravação, tente Reiniciar para restaurar os padrões e, em seguida, re-" -"adicione a tabela de itens." +#~ msgid "Warning:" +#~ msgstr "Aviso:" -#: app/templates/admin/quote_pdf_layout.html:1492 -msgid "" -"Use \"Generate Preview\" to see how the PDF will look with real quote data." -msgstr "" -"Use \"Generate Preview\" para ver como o PDF vai parecer com dados de " -"citação reais." - -#: app/templates/admin/quote_pdf_layout.html:1623 -msgid "Quote Data" -msgstr "Dados de Citação" - -#: app/templates/admin/quote_pdf_layout.html:1626 -#: app/templates/client_portal/quotes.html:25 -#: app/templates/client_portal/quotes.html:37 -#: app/templates/quotes/_quotes_list.html:33 -#: app/templates/quotes/_quotes_list.html:50 -msgid "Quote Number" -msgstr "Número de Citação" - -#: app/templates/admin/quote_pdf_layout.html:1630 -msgid "Quote Date" -msgstr "Data de citação" - -#: app/templates/admin/quote_pdf_layout.html:1654 -msgid "Quote Items Table" -msgstr "Tabela de Itens de Citação" - -#: app/templates/admin/quote_pdf_layout.html:1754 -msgid "Quote Fields" -msgstr "Campos de Citação" - -#: app/templates/admin/quote_pdf_layout.html:1757 -msgid "Quote number" -msgstr "Número de citação" - -#: app/templates/admin/quote_pdf_layout.html:1761 -msgid "Quote status (draft/sent/paid/overdue)" -msgstr "Estatuto da cotação (projeto/enviado/pago/excedente)" - -#: app/templates/admin/quote_pdf_layout.html:1793 -msgid "Quote notes" -msgstr "Notas de citação" - -#: app/templates/admin/quote_pdf_layout.html:1829 -msgid "Quote status" -msgstr "Estado da citação" - -#: app/templates/admin/quote_pdf_layout.html:1833 -msgid "Quote accepted date" -msgstr "Data de aceitação da citação" - -#: app/templates/admin/quote_pdf_layout.html:1925 -msgid "Quote creation date" -msgstr "Data de criação da citação" - -#: app/templates/admin/quote_pdf_layout.html:1929 -msgid "Quote last update date" -msgstr "Citar a última data de atualização" - -#: app/templates/admin/quote_pdf_layout.html:1934 -msgid "Quote Items Loop" -msgstr "Ciclo de Itens de Citação" - -#: app/templates/admin/quote_pdf_layout.html:1937 -msgid "Loop through invoice items" -msgstr "Loop através de itens de fatura" - -#: app/templates/admin/quote_pdf_layout.html:5971 -msgid "Align Left" -msgstr "Alinhar à Esquerda" - -#: app/templates/admin/quote_pdf_layout.html:5974 -msgid "Center Horizontally" -msgstr "Centro Horizontal" - -#: app/templates/admin/quote_pdf_layout.html:5977 -msgid "Align Right" -msgstr "Alinhar à Direita" - -#: app/templates/admin/quote_pdf_layout.html:5980 -msgid "Align Top" -msgstr "Alinhar topo" - -#: app/templates/admin/quote_pdf_layout.html:5983 -msgid "Center Vertically" -msgstr "Centro Verticalmente" - -#: app/templates/admin/quote_pdf_layout.html:5986 -msgid "Align Bottom" -msgstr "Alinhar Fundo" - -#: app/templates/admin/salesman_email_mappings.html:4 -msgid "Salesman Email Mappings" -msgstr "Vendedor Email Mappings" - -#: app/templates/admin/salesman_email_mappings.html:21 -msgid "Email Mappings" -msgstr "Mapeamentos de E- mail" - -#: app/templates/admin/salesman_email_mappings.html:23 -msgid "Add Mapping" -msgstr "Adicionar mapeamento" - -#: app/templates/admin/salesman_email_mappings.html:32 -#: app/templates/admin/salesman_email_mappings.html:74 -#: app/templates/admin/salesman_email_mappings.html:201 -msgid "Salesman Initial" -msgstr "Inicial do vendedor" - -#: app/templates/admin/salesman_email_mappings.html:35 -#: app/templates/admin/salesman_email_mappings.html:206 -#: app/templates/user/settings.html:66 -msgid "Email Address" -msgstr "Endereço de E- mail" - -#: app/templates/admin/salesman_email_mappings.html:38 -#: app/templates/admin/salesman_email_mappings.html:209 -msgid "Pattern/Domain" -msgstr "Padrão/domínio" - -#: app/templates/admin/salesman_email_mappings.html:63 -#: app/templates/admin/salesman_email_mappings.html:230 -msgid "Add Email Mapping" -msgstr "Adicionar mapeamento de e- mail" - -#: app/templates/admin/salesman_email_mappings.html:78 -msgid "1-20 letters only" -msgstr "Apenas 1-20 letras" - -#: app/templates/admin/salesman_email_mappings.html:80 -msgid "" -"The salesman initial from client custom fields (e.g., MM for Max Mustermann)" -msgstr "" -"O vendedor inicial dos campos personalizados do cliente (por exemplo, MM " -"para Max Mustermann)" +#~ msgid "Are you sure you want to delete invoice" +#~ msgstr "Tem certeza de que deseja excluir a fatura" -#: app/templates/admin/salesman_email_mappings.html:92 -msgid "Direct Email Address" -msgstr "Endereço de e- mail directo" +#~ msgid "" +#~ "All invoice items, extra goods, and " +#~ "payment records associated with this " +#~ "invoice will be permanently deleted." +#~ msgstr "" +#~ "Todos os itens de fatura, bens " +#~ "extras e registros de pagamento " +#~ "associados a esta fatura serão excluídos" +#~ " permanentemente." -#: app/templates/admin/salesman_email_mappings.html:101 -#, python-brace-format -msgid "Pattern (e.g., {value}@test.de)" -msgstr "" +#~ msgid "INVOICE" +#~ msgstr "INFORMAÇÕES" -#: app/templates/admin/salesman_email_mappings.html:110 -msgid "Domain (e.g., test.de)" -msgstr "Domínio (por exemplo, test.de)" +#~ msgid "Invoice #" +#~ msgstr "Fatura #" -#: app/templates/admin/salesman_email_mappings.html:116 -#, python-brace-format -msgid "Will generate: {initial}@domain" -msgstr "" +#~ msgid "Bill To" +#~ msgstr "Conta Para" -#: app/templates/admin/salesman_email_mappings.html:127 -msgid "Additional notes about this mapping" -msgstr "Notas adicionais sobre este mapeamento" +#~ msgid "Quantity (Hours)" +#~ msgstr "Quantidade (horas)" -#: app/templates/admin/salesman_email_mappings.html:192 -msgid "No mappings configured. Click \"Add Mapping\" to create one." -msgstr "" -"Nenhum mapeamento configurado. Clique em \"Adicionar mapeamento\" para criar" -" um." +#~ msgid "Generated from %(num)d time entries" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:242 -msgid "Edit Email Mapping" -msgstr "Editar mapeamento de e- mail" +#~ msgid "Expense" +#~ msgstr "Despesas" -#: app/templates/admin/salesman_email_mappings.html:366 -#: app/templates/admin/salesman_email_mappings.html:370 -msgid "Error saving mapping" -msgstr "Erro ao gravar o mapeamento" +#~ msgid "Subtotal:" +#~ msgstr "Subtotal:" -#: app/templates/admin/salesman_email_mappings.html:375 -msgid "Are you sure you want to delete this mapping?" -msgstr "Tem a certeza de que deseja apagar este mapeamento?" +#~ msgid "Tax (%(rate).2f%%):" +#~ msgstr "" -#: app/templates/admin/salesman_email_mappings.html:394 -#: app/templates/admin/salesman_email_mappings.html:398 -msgid "Error deleting mapping" -msgstr "Erro ao remover o mapeamento" +#~ msgid "Total Amount:" +#~ msgstr "Montante total:" -#: app/templates/admin/settings.html:117 -msgid "Time Entry Requirements" -msgstr "Requisitos de entrada no tempo" +#~ msgid "Notes:" +#~ msgstr "Notas:" -#: app/templates/admin/settings.html:119 -msgid "" -"Optionally require users to provide task and description when logging worked" -" time. Enforced across web, mobile, and desktop." -msgstr "" -"Opcionalmente, exija que os usuários forneçam tarefas e descrição ao " -"registrar o tempo de trabalho. Enforced em web, mobile e desktop." +#~ msgid "Terms:" +#~ msgstr "Termos:" -#: app/templates/admin/settings.html:124 -msgid "Require task selection when logging time (project-based entries only)" -msgstr "" -"Requer seleção de tarefas ao registrar o tempo (apenas entradas baseadas em " -"projetos)" +#~ msgid "Payment Information:" +#~ msgstr "Informações de pagamento:" -#: app/templates/admin/settings.html:128 -msgid "Require description when logging time" -msgstr "Requer descrição ao registrar o tempo" +#~ msgid "Terms & Conditions:" +#~ msgstr "Termos & Condições:" -#: app/templates/admin/settings.html:131 -msgid "Minimum description length (characters)" -msgstr "Comprimento mínimo da descrição (caracteres)" +#~ msgid "Download UBL" +#~ msgstr "Baixar UBL" -#: app/templates/admin/settings.html:133 -msgid "Minimum number of characters required in the description field." -msgstr "Número mínimo de caracteres requeridos no campo de descrição." +#~ msgid "Pay Online" +#~ msgstr "Pagar Online" -#: app/templates/admin/settings.html:136 -msgid "Default daily working hours (for new users)" -msgstr "Horário de trabalho diário padrão (para novos usuários)" +#~ msgid "Payment Reference" +#~ msgstr "Referência de pagamento" -#: app/templates/admin/settings.html:138 -msgid "" -"Used as the standard hours per day for overtime calculation when new users " -"are created. Existing users keep their own setting." -msgstr "" -"Usado como as horas padrão por dia para o cálculo de horas extras quando " -"novos usuários são criados. Os usuários existentes mantêm sua própria " -"configuração." +#~ msgid "PEPPOL compliance: the following are missing" +#~ msgstr "Cumprimento da PEPPOL: Faltam os seguintes elementos:" -#: app/templates/admin/settings.html:159 -msgid "Support visibility" -msgstr "Visibilidade do suporte" +#~ msgid "Invoice Approval" +#~ msgstr "Aprovação na factura" -#: app/templates/admin/settings.html:161 -msgid "" -"Remove donate and support prompts for all users with a one-time key (€25, " -"one key per instance)." -msgstr "" -"Remover prompts de doação e suporte para todos os usuários com uma chave " -"única (25€, uma chave por instância)." +#~ msgid "Request approval before sending this invoice to the client." +#~ msgstr "Solicitar aprovação antes de enviar esta fatura ao cliente." -#: app/templates/admin/settings.html:164 -msgid "Copy your System ID below and use it when buying the key." -msgstr "Copie seu ID do sistema abaixo e use-o ao comprar a chave." +#~ msgid "Payment History" +#~ msgstr "Histórico de pagamento" -#: app/templates/admin/settings.html:165 -msgid "Buy key" -msgstr "Comprar a chave" +#~ msgid "Send Invoice via Email" +#~ msgstr "Enviar fatura via e-mail" -#: app/templates/admin/settings.html:165 -msgid "— key sent by email." -msgstr "— chave enviada por correio electrónico." +#~ msgid "Edit Issue" +#~ msgstr "Editar problema" -#: app/templates/admin/settings.html:166 -msgid "Paste the code below and click Verify." -msgstr "Cole o código abaixo e clique em Verificar." +#~ msgid "Unassigned" +#~ msgstr "Não atribuído" -#: app/templates/admin/settings.html:170 app/templates/main/about.html:220 -#: app/templates/main/donate.html:50 app/templates/main/donate.html:138 -msgid "Get key" -msgstr "Obter a chave" +#~ msgid "Create Issue" +#~ msgstr "Criar problema" -#: app/templates/admin/settings.html:176 -msgid "Step 1: System ID" -msgstr "Passo 1: ID do sistema" +#~ msgid "Filter Issues" +#~ msgstr "Questões do Filtro" -#: app/templates/admin/settings.html:183 -msgid "Use this ID when purchasing your key." -msgstr "Use este ID ao comprar sua chave." +#~ msgid "Search by title or description" +#~ msgstr "Pesquisar por título ou descrição" -#: app/templates/admin/settings.html:189 -msgid "" -"Supporter instance: prompts are minimized; support entry points remain " -"available." -msgstr "" -"Exemplo de suporte: os prompts são minimizados; os pontos de entrada de " -"suporte permanecem disponíveis." +#~ msgid "Apply Filters" +#~ msgstr "Aplicar os Filtros" -#: app/templates/admin/settings.html:195 -msgid "Step 3: Paste code" -msgstr "Passo 3: Colar o código" +#~ msgid "Page" +#~ msgstr "Página" -#: app/templates/admin/settings.html:196 -msgid "Enter code from email" -msgstr "Digite o código do e- mail" +#~ msgid "of" +#~ msgstr "de" -#: app/templates/admin/settings.html:199 -msgid "Verify and hide for everyone" -msgstr "Verificar e esconder para todos" +#~ msgid "No issues found" +#~ msgstr "Nenhum problema encontrado" -#: app/templates/admin/settings.html:208 -msgid "Company Branding" -msgstr "Marcação da empresa" +#~ msgid "No issues match your filters. Create an issue or adjust your filters." +#~ msgstr "" +#~ "Nenhum problema corresponde aos seus " +#~ "filtros. Crie um problema ou ajuste " +#~ "seus filtros." -#: app/templates/admin/settings.html:243 -msgid "Invoice Defaults" -msgstr "Padrões de Fatura" +#~ msgid "Create New Issue" +#~ msgstr "Criar um novo problema" -#: app/templates/admin/settings.html:391 -msgid "Backup Settings" -msgstr "Configuração da Cópia de Segurança" +#~ msgid "Are you sure you want to delete this issue?" +#~ msgstr "Tem certeza de que deseja excluir este problema?" -#: app/templates/admin/settings.html:406 -#: app/templates/integrations/list.html:74 -msgid "LDAP" -msgstr "LDAP" +#~ msgid "Delete Issue" +#~ msgstr "Apagar o Emissão" -#: app/templates/admin/settings.html:408 -msgid "" -"LDAP authentication is configured with environment variables. Values below " -"are read-only." -msgstr "" -"A autenticação LDAP está configurada com variáveis de ambiente. Os valores " -"abaixo são somente de leitura." +#~ msgid "Task Management" +#~ msgstr "Gerenciamento de tarefas" -#: app/templates/admin/settings.html:412 -msgid "Enabled for auth" -msgstr "Habilitado para autenticação" +#~ msgid "Link to existing task" +#~ msgstr "Ligação à tarefa existente" -#: app/templates/admin/settings.html:416 -msgid "Host" -msgstr "Máquina" +#~ msgid "Select a task" +#~ msgstr "Seleccionar uma tarefa" -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:421 -msgid "SSL" -msgstr "SSL" +#~ msgid "Link" +#~ msgstr "Ligação" -#: app/templates/admin/settings.html:420 app/templates/admin/settings.html:422 -msgid "TLS" -msgstr "TLS" +#~ msgid "Create new task from this issue" +#~ msgstr "Criar uma nova tarefa a partir desta questão" -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -#: app/templates/quotes/view.html:217 app/templates/quotes/view.html:224 -msgid "on" -msgstr "ligado" +#~ msgid "Submitted By" +#~ msgstr "Enviado por" -#: app/templates/admin/settings.html:421 app/templates/admin/settings.html:422 -msgid "off" -msgstr "desligado" +#~ msgid "Kanban" +#~ msgstr "Kanban" -#: app/templates/admin/settings.html:429 -msgid "User DN" -msgstr "DN do usuário" +#~ msgid "Manage Columns" +#~ msgstr "Gerenciar Colunas" -#: app/templates/admin/settings.html:433 -msgid "User login attribute" -msgstr "Atributo de login do usuário" +#~ msgid "Drag tasks between columns to update their status" +#~ msgstr "Arrastar tarefas entre colunas para atualizar seu status" -#: app/templates/admin/settings.html:447 -msgid "Test LDAP Connection" -msgstr "Testar a Ligação LDAP" +#~ msgid "Kanban board" +#~ msgstr "Tabuleiro Kanban" -#: app/templates/admin/settings.html:455 -msgid "Export Settings" -msgstr "Configuração da Exportação" +#~ msgid "moved to" +#~ msgstr "mudou para" -#: app/templates/admin/settings.html:470 app/templates/kiosk/base.html:6 -msgid "Kiosk Mode" -msgstr "Modo do Kiosk" +#~ msgid "No tasks in this column." +#~ msgstr "Nenhuma tarefa nesta coluna." -#: app/templates/admin/settings.html:475 -msgid "Enable Kiosk Mode" -msgstr "Activar o Modo do Quiosque" +#~ msgid "Manage Kanban Columns" +#~ msgstr "Gerenciar Colunas do Kanban" -#: app/templates/admin/settings.html:479 -msgid "" -"Kiosk mode provides a simplified interface for warehouse operations with " -"barcode scanning and time tracking. Access at" -msgstr "" -"O modo Kiosk fornece uma interface simplificada para operações de armazém " -"com varredura de código de barras e rastreamento de tempo. Acesso em" - -#: app/templates/admin/settings.html:484 -msgid "Auto-Logout Timeout (Minutes)" -msgstr "Tempo- limite de saída automática (minutos)" - -#: app/templates/admin/settings.html:488 -msgid "Default Movement Type" -msgstr "Tipo de Movimento Padrão" - -#: app/templates/admin/settings.html:490 -#: app/templates/inventory/movements/form.html:32 -#: app/templates/inventory/movements/list.html:24 -#: app/templates/inventory/reports/movement_history.html:42 -#: app/templates/inventory/stock_items/history.html:34 -msgid "Adjustment" -msgstr "Ajuste" - -#: app/templates/admin/settings.html:491 -#: app/templates/inventory/movements/form.html:33 -#: app/templates/inventory/movements/list.html:25 -#: app/templates/inventory/reports/movement_history.html:43 -#: app/templates/inventory/stock_items/history.html:35 -#: app/templates/kiosk/base.html:151 -msgid "Transfer" -msgstr "Transferência" - -#: app/templates/admin/settings.html:492 -#: app/templates/inventory/movements/form.html:34 -#: app/templates/inventory/movements/list.html:26 -#: app/templates/inventory/reports/movement_history.html:44 -#: app/templates/inventory/stock_items/history.html:36 -msgid "Sale" -msgstr "Venda" - -#: app/templates/admin/settings.html:493 -#: app/templates/inventory/movements/form.html:35 -#: app/templates/inventory/movements/list.html:27 -#: app/templates/inventory/reports/movement_history.html:45 -#: app/templates/inventory/stock_items/history.html:37 -msgid "Rent" -msgstr "Aluguer" - -#: app/templates/admin/settings.html:494 -#: app/templates/inventory/movements/form.html:36 -#: app/templates/inventory/movements/list.html:28 -#: app/templates/inventory/reports/movement_history.html:46 -#: app/templates/inventory/stock_items/history.html:38 -msgid "Purchase" -msgstr "Compra" - -#: app/templates/admin/settings.html:500 -msgid "Allow Camera-Based Barcode Scanning" -msgstr "Permitir a digitalização de código de barras baseado na câmera" - -#: app/templates/admin/settings.html:506 -msgid "Require Reason for Stock Adjustments" -msgstr "Exigir motivo para ajustamentos das existências" - -#: app/templates/admin/settings.html:518 -msgid "" -"Configure the shared server-side AI helper for the web app, desktop app, and" -" API clients. Hosted provider keys stay on the server." -msgstr "" -"Configure o auxiliar de IA do lado do servidor compartilhado para os " -"clientes da aplicação web, desktop e API. As chaves de provedor hospedadas " -"permanecem no servidor." - -#: app/templates/admin/settings.html:522 -msgid "Availability" -msgstr "Disponibilidade" - -#: app/templates/admin/settings.html:524 -msgid "Use environment default" -msgstr "Usar o ambiente por omissão" - -#: app/templates/admin/settings.html:524 -msgid "currently" -msgstr "atualmente" - -#: app/templates/admin/settings.html:530 -#: app/templates/integrations/health.html:22 -#: app/templates/payment_gateways/create.html:26 -#: app/templates/payment_gateways/list.html:26 -#: app/templates/payment_gateways/list.html:38 -msgid "Provider" -msgstr "Fornecedor" - -#: app/templates/admin/settings.html:537 -msgid "Base URL" -msgstr "URL base" - -#: app/templates/admin/settings.html:539 -msgid "For Ollama, this is the URL from the Flask server to Ollama." -msgstr "Para Ollama, esta é a URL do servidor Flask para Ollama." - -#: app/templates/admin/settings.html:542 -msgid "Model" -msgstr "Modelo" - -#: app/templates/admin/settings.html:546 -msgid "Hosted API key" -msgstr "Chave de API hospedada" - -#: app/templates/admin/settings.html:547 -msgid "Stored; leave blank to keep" -msgstr "Armazenado; deixe em branco para manter" - -#: app/templates/admin/settings.html:547 -msgid "Only required for hosted providers" -msgstr "Só é necessário para os fornecedores hospedados" - -#: app/templates/admin/settings.html:551 -msgid "Clear stored API key" -msgstr "Limpar a chave de API armazenada" - -#: app/templates/admin/settings.html:557 -msgid "Timeout seconds" -msgstr "Tempo- limite segundos" - -#: app/templates/admin/settings.html:561 -msgid "Context limit" -msgstr "Limite de contexto" - -#: app/templates/admin/settings.html:566 -msgid "System prompt" -msgstr "Solicitação do sistema" - -#: app/templates/admin/settings.html:571 -msgid "Test AI connection" -msgstr "Testar a ligação de IA" - -#: app/templates/admin/settings.html:580 -msgid "Privacy & Analytics" -msgstr "Privacidade e Análise" - -#: app/templates/admin/settings.html:604 app/templates/user/settings.html:497 -msgid "Save Settings" -msgstr "Configuração de Gravação" - -#: app/templates/admin/settings.html:649 -msgid "Upload New Logo" -msgstr "Enviar Novo Logo" - -#: app/templates/admin/settings.html:663 -msgid "Logo Preview" -msgstr "Visualização do Logo" - -#: app/templates/admin/settings.html:712 -msgid "Are you sure you want to remove the company logo?" -msgstr "Tem certeza de que quer remover o logotipo da empresa?" - -#: app/templates/admin/settings.html:714 -msgid "Remove Logo" -msgstr "Remover logotipo" - -#: app/templates/admin/settings.html:731 -msgid "Copied" -msgstr "Copiado" - -#: app/templates/admin/settings.html:745 -msgid "Please enter a code." -msgstr "Introduza um código." - -#: app/templates/admin/settings.html:760 -msgid "" -"Success. Donate UI is now hidden for everyone. Reload the page to see the " -"change." -msgstr "" -"Sucesso. Doar UI está agora escondido para todos. Recarregar a página para " -"ver a alteração." - -#: app/templates/admin/settings.html:772 app/templates/admin/settings.html:835 -msgid "Request failed." -msgstr "O pedido falhou." - -#: app/templates/admin/settings.html:815 app/templates/admin/settings.html:848 -msgid "Testing connection..." -msgstr "Testando conexão..." - -#: app/templates/admin/settings.html:831 -msgid "Connection failed." -msgstr "A ligação falhou." - -#: app/templates/admin/settings.html:859 -msgid "AI connection succeeded." -msgstr "A ligação IA foi bem sucedida." - -#: app/templates/admin/settings.html:862 app/templates/admin/settings.html:866 -msgid "AI connection failed." -msgstr "A ligação IA falhou." - -#: app/templates/admin/telemetry.html:8 -msgid "Telemetry & Analytics Dashboard" -msgstr "Painel de Telemetria e Análise" - -#: app/templates/admin/telemetry.html:50 -#: app/templates/setup/initial_setup.html:268 -msgid "Admin → Settings" -msgstr "Admin → Configurações" - -#: app/templates/admin/user_form.html:60 -msgid "Password Reset" -msgstr "Reiniciar senha" - -#: app/templates/admin/user_form.html:67 -#: app/templates/auth/edit_profile.html:69 -msgid "Leave blank to keep current password" -msgstr "Deixar em branco para manter a senha actual" - -#: app/templates/admin/user_form.html:84 app/templates/clients/edit.html:102 -#: app/templates/email/client_portal_password_setup.html:72 -msgid "Client Portal Access" -msgstr "Acesso ao Portal do Cliente" - -#: app/templates/admin/user_form.html:107 -msgid "Assigned Clients (Subcontractor)" -msgstr "Clientes designados (Subcontratante)" - -#: app/templates/admin/user_form.html:112 -msgid "Assigned clients" -msgstr "Clientes designados" - -#: app/templates/admin/user_form.html:118 -msgid "Hold Ctrl/Cmd to select multiple clients." -msgstr "Mantenha Ctrl/Cmd para selecionar vários clientes." - -#: app/templates/admin/users.html:34 -msgid "Admin Access" -msgstr "Acesso de Administração" - -#: app/templates/admin/users.html:56 -msgid "Migrate to new role system" -msgstr "Migrar para um novo sistema de funções" - -#: app/templates/admin/users.html:57 -msgid "Migrate" -msgstr "Migrar" - -#: app/templates/admin/users.html:80 -msgid "Roles" -msgstr "Funções" - -#: app/templates/admin/users.html:93 -msgid "No users found." -msgstr "Nenhum usuário encontrado." - -#: app/templates/admin/users.html:104 -#, python-brace-format -msgid "" -"Cannot delete user \"{name}\" because they have {count} time entries. Users " -"with existing time entries cannot be deleted." -msgstr "" -"Não é possível excluir o usuário \"{name}\" porque eles têm {count} entradas" -" de tempo. Usuários com entradas de tempo existentes não podem ser " -"excluídos." +#~ msgid "Customize your kanban board columns and task states" +#~ msgstr "Personalize suas colunas e estados de tarefa do kanban" -#: app/templates/admin/users.html:107 -msgid "Cannot Delete User" -msgstr "Incapaz de Apagar o Utilizador" +#~ msgid "Project:" +#~ msgstr "Projeto:" -#: app/templates/admin/users.html:119 -#, python-brace-format -msgid "" -"Are you sure you want to delete user \"{name}\"? This action cannot be " -"undone." -msgstr "" -"Tem a certeza de que deseja apagar o utilizador \"{name}\"? Esta acção não " -"pode ser desfeita." - -#: app/templates/admin/users.html:122 -msgid "Delete User" -msgstr "Apagar o Utilizador" - -#: app/templates/admin/custom_field_definitions/form.html:7 -#: app/templates/admin/custom_field_definitions/list.html:7 -#: app/templates/admin/custom_field_definitions/list.html:12 -msgid "Custom Field Definitions" -msgstr "Definições de Campo Personalizadas" - -#: app/templates/admin/custom_field_definitions/form.html:8 -#: app/templates/admin/custom_field_definitions/form.html:67 -#: app/templates/admin/link_templates/form.html:8 -#: app/templates/admin/link_templates/form.html:73 -#: app/templates/chat/index.html:124 app/templates/main/dashboard.html:791 -#: app/templates/timer/calendar.html:206 -msgid "Create" -msgstr "Criar" - -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Edit Custom Field Definition" -msgstr "Editar a Definição Personalizada do Campo" - -#: app/templates/admin/custom_field_definitions/form.html:13 -msgid "Create Custom Field Definition" -msgstr "Criar uma Definição de Campo Personalizada" - -#: app/templates/admin/custom_field_definitions/form.html:14 -msgid "Define a global custom field that can be used across all clients" -msgstr "" -"Defina um campo personalizado global que pode ser usado em todos os clientes" - -#: app/templates/admin/custom_field_definitions/form.html:24 -#: app/templates/admin/custom_field_definitions/list.html:24 -#: app/templates/admin/custom_field_definitions/list.html:35 -#: app/templates/admin/link_templates/form.html:42 -#: app/templates/admin/link_templates/list.html:26 -#: app/templates/admin/link_templates/list.html:45 -msgid "Field Key" -msgstr "Tecla de Campo" - -#: app/templates/admin/custom_field_definitions/form.html:25 -#: app/templates/admin/link_templates/form.html:43 -msgid "e.g., debtor_number" -msgstr "Por exemplo, número devedor" - -#: app/templates/admin/custom_field_definitions/form.html:26 -msgid "" -"Unique identifier for this field (letters, numbers, and underscores only). " -"Cannot be changed after creation." -msgstr "" -"Identificador único para este campo (cartas, números e sublinha apenas). Não" -" é possível mudar após a criação." - -#: app/templates/admin/custom_field_definitions/form.html:30 -#: app/templates/admin/custom_field_definitions/list.html:25 -#: app/templates/admin/custom_field_definitions/list.html:38 -#: app/templates/kanban/columns.html:49 -msgid "Label" -msgstr "Legenda" - -#: app/templates/admin/custom_field_definitions/form.html:31 -msgid "e.g., Debtor Number" -msgstr "Por exemplo, Número do Devedor" - -#: app/templates/admin/custom_field_definitions/form.html:32 -msgid "Display name shown in client forms" -msgstr "Mostrar o nome mostrado nos formulários do cliente" - -#: app/templates/admin/custom_field_definitions/form.html:37 -msgid "Optional help text for this field" -msgstr "Texto de ajuda opcional para este campo" - -#: app/templates/admin/custom_field_definitions/form.html:42 -#: app/templates/admin/link_templates/form.html:56 -msgid "Display Order" -msgstr "Mostrar Ordem" - -#: app/templates/admin/custom_field_definitions/form.html:44 -#: app/templates/admin/link_templates/form.html:58 -msgid "Lower numbers appear first" -msgstr "Números mais baixos aparecem primeiro" - -#: app/templates/admin/custom_field_definitions/form.html:50 -#: app/templates/admin/custom_field_definitions/list.html:26 -#: app/templates/admin/custom_field_definitions/list.html:44 -msgid "Mandatory" -msgstr "Obrigatório" - -#: app/templates/admin/custom_field_definitions/form.html:52 -msgid "Required field - clients must fill this in" -msgstr "Campo obrigatório - os clientes devem preencher esta informação" - -#: app/templates/admin/custom_field_definitions/form.html:61 -msgid "Only active fields are shown in client forms" -msgstr "Somente os campos ativos são mostrados nos formulários do cliente" - -#: app/templates/admin/custom_field_definitions/list.html:13 -msgid "Manage global custom field definitions for clients" -msgstr "Gerencie definições de campo personalizadas globais para clientes" - -#: app/templates/admin/custom_field_definitions/list.html:15 -#: app/templates/admin/custom_field_definitions/list.html:82 -msgid "Create Custom Field" -msgstr "Criar um Campo Personalizado" - -#: app/templates/admin/custom_field_definitions/list.html:27 -#: app/templates/admin/custom_field_definitions/list.html:51 -#: app/templates/admin/link_templates/list.html:28 -#: app/templates/admin/link_templates/list.html:55 -#: app/templates/quotes/create.html:61 app/templates/quotes/create.html:93 -#: app/templates/quotes/create.html:124 app/templates/quotes/edit.html:66 -#: app/templates/quotes/edit.html:141 app/templates/quotes/edit.html:198 -msgid "Order" -msgstr "Ordem" - -#: app/templates/admin/custom_field_definitions/list.html:46 -msgid "Required" -msgstr "Requerido" - -#: app/templates/admin/custom_field_definitions/list.html:48 -#: app/templates/invoices/edit.html:748 app/templates/invoices/list.html:135 -#: app/templates/invoices/view.html:514 app/templates/kiosk/dashboard.html:331 -#: app/templates/kiosk/dashboard.html:347 -#: app/templates/projects/archive.html:41 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/timer_page.html:160 -#: app/templates/timer/timer_page.html:169 -msgid "Optional" -msgstr "Opcional" - -#: app/templates/admin/custom_field_definitions/list.html:80 -msgid "No custom field definitions found." -msgstr "Nenhuma definição de campo personalizada encontrada." - -#: app/templates/admin/custom_field_definitions/list.html:89 -msgid "How Custom Field Definitions Work" -msgstr "Como as definições de campo personalizadas funcionam" - -#: app/templates/admin/custom_field_definitions/list.html:91 -msgid "" -"Custom field definitions allow you to create global fields that can be used " -"across all clients. This eliminates the need to recreate the same custom " -"fields for each client." -msgstr "" -"Definições de campo personalizadas permitem que você crie campos globais que" -" podem ser usados em todos os clientes. Isso elimina a necessidade de " -"recriar os mesmos campos personalizados para cada cliente." +#~ msgid "Global Columns" +#~ msgstr "Colunas globais" -#: app/templates/admin/custom_field_definitions/list.html:92 -msgid "Features:" -msgstr "Características:" +#~ msgid "Add Column" +#~ msgstr "Adicionar coluna" -#: app/templates/admin/custom_field_definitions/list.html:94 -msgid "Define custom fields once and use them for all clients" -msgstr "" -"Definir campos personalizados uma vez e usá- los para todos os clientes" +#~ msgid "Kanban columns list" +#~ msgstr "Lista de colunas do Kanban" -#: app/templates/admin/custom_field_definitions/list.html:95 -msgid "Mark fields as mandatory to ensure they are always filled" -msgstr "" -"Marcar os campos como obrigatórios para garantir que estão sempre " -"preenchidos" +#~ msgid "Key" +#~ msgstr "Chave" -#: app/templates/admin/custom_field_definitions/list.html:96 -msgid "Control field order and visibility" -msgstr "Ordem e visibilidade do campo de controle" +#~ msgid "Complete?" +#~ msgstr "Completo?" -#: app/templates/admin/custom_field_definitions/list.html:97 -msgid "Link templates can be assigned to make field values clickable" -msgstr "" -"Modelos de ligação podem ser atribuídos para tornar os valores do campo " -"clicáveis" +#~ msgid "Drag to reorder" +#~ msgstr "Arrastar para reordenar" -#: app/templates/admin/custom_field_definitions/list.html:99 -#: app/templates/admin/link_templates/list.html:96 -msgid "Example:" -msgstr "Exemplo:" +#~ msgid "Edit column" +#~ msgstr "Editar coluna" -#: app/templates/admin/custom_field_definitions/list.html:101 -msgid "" -"Create a field definition with key \"debtor_number\" and label \"Debtor " -"Number\"" -msgstr "" -"Criar uma definição de campo com a chave \"debtor number\" e etiquetar " -"\"Debtor Number\"" +#~ msgid "Toggle active state" +#~ msgstr "Alternar estado ativo" -#: app/templates/admin/custom_field_definitions/list.html:102 -msgid "Mark it as mandatory if required" -msgstr "Marcar como obrigatório se necessário" +#~ msgid "No kanban columns found. Create your first column to get started." +#~ msgstr "" +#~ "Não foram encontradas colunas do kanban." +#~ " Crie sua primeira coluna para " +#~ "começar." -#: app/templates/admin/custom_field_definitions/list.html:103 -msgid "" -"When creating or editing a client, this field will automatically appear" -msgstr "" -"Ao criar ou editar um cliente, este campo irá aparecer automaticamente" +#~ msgid "Tips:" +#~ msgstr "Dicas:" -#: app/templates/admin/custom_field_definitions/list.html:104 -msgid "" -"Create a link template to make the value clickable (e.g., " -"https://erp.example.com/customer/%value%)" -msgstr "" -"Crie um modelo de link para tornar o valor clicável (por exemplo, " -"https://erp.example.com/cliente/%value%)" +#~ msgid "Drag and drop rows to reorder columns" +#~ msgstr "Arrastar e soltar linhas para reordenar colunas" -#: app/templates/admin/custom_field_definitions/list.html:119 -#, python-format -msgid "" -"Warning: %(count)d client(s) have a value for this custom field. Deleting " -"this field definition will remove the field value from all %(count)d " -"client(s). Are you sure you want to delete the custom field definition " -"\"%(label)s\"?" -msgstr "" +#~ msgid "" +#~ "System columns (todo, in_progress, done) " +#~ "cannot be deleted but can be " +#~ "customized" +#~ msgstr "" +#~ "As colunas do sistema (todo, in " +#~ "progress, done) não podem ser apagadas" +#~ " mas podem ser personalizadas" -#: app/templates/admin/custom_field_definitions/list.html:123 -msgid "Are you sure you want to delete this custom field definition?" -msgstr "" -"Tem a certeza de que deseja apagar esta definição de campo personalizada?" - -#: app/templates/admin/email_templates/create.html:38 -#: app/templates/admin/email_templates/edit.html:55 -msgid "Set as default template" -msgstr "Definir como modelo padrão" - -#: app/templates/admin/email_templates/create.html:46 -#: app/templates/admin/email_templates/edit.html:63 -#: app/templates/admin/email_templates/view.html:75 -msgid "HTML Template" -msgstr "Modelo HTML" - -#: app/templates/admin/email_templates/create.html:55 -#: app/templates/admin/email_templates/edit.html:72 -#: app/templates/invoices/edit.html:748 app/templates/invoices/view.html:514 -msgid "Custom Message" -msgstr "Mensagem personalizada" - -#: app/templates/admin/email_templates/create.html:58 -#: app/templates/admin/email_templates/edit.html:75 -msgid "More Variables" -msgstr "Mais Variáveis" - -#: app/templates/admin/email_templates/create.html:121 -#: app/templates/project_templates/create.html:107 -#: app/templates/project_templates/list.html:118 -msgid "Create Template" -msgstr "Criar Modelo" - -#: app/templates/admin/email_templates/create.html:130 -#: app/templates/admin/email_templates/edit.html:147 -msgid "Available Variables" -msgstr "Variáveis Disponíveis" - -#: app/templates/admin/email_templates/create.html:137 -#: app/templates/admin/email_templates/edit.html:154 -msgid "Invoice Variables" -msgstr "Variáveis de Fatura" - -#: app/templates/admin/email_templates/create.html:160 -#: app/templates/admin/email_templates/edit.html:177 -msgid "Other Variables" -msgstr "Outras Variáveis" - -#: app/templates/admin/email_templates/edit.html:19 -#: app/templates/admin/email_templates/edit.html:31 -#: app/templates/admin/email_templates/view.html:21 -#: app/templates/admin/email_templates/view.html:33 -msgid "Send test email" -msgstr "Enviar e- mail de teste" - -#: app/templates/admin/email_templates/edit.html:20 -msgid "" -"Sends the saved template (save changes first). Uses the same rendering as a " -"real invoice email. Default recipient can be set under Admin → Email " -"Configuration." -msgstr "" -"Envia o modelo gravado (salvar primeiro as alterações). Usa a mesma " -"renderização como um e-mail de fatura real. O destinatário padrão pode ser " -"definido em Admin → Configuração de Email." - -#: app/templates/admin/email_templates/edit.html:23 -#: app/templates/admin/email_templates/view.html:25 -msgid "Recipient" -msgstr "Destinatário" - -#: app/templates/admin/email_templates/edit.html:27 -#: app/templates/admin/email_templates/view.html:29 -msgid "Invoice ID" -msgstr "ID da factura" - -#: app/templates/admin/email_templates/edit.html:138 -#: app/templates/project_templates/edit.html:137 -msgid "Update Template" -msgstr "Actualizar o Modelo" - -#: app/templates/admin/email_templates/edit.html:622 -#: app/templates/admin/email_templates/view.html:130 -msgid "Failed to send test email." -msgstr "Não foi possível enviar o e- mail de teste." - -#: app/templates/admin/email_templates/list.html:63 -msgid "No email templates found." -msgstr "Não foram encontrados modelos de e- mail." - -#: app/templates/admin/email_templates/list.html:64 -msgid "Create your first email template to customize invoice emails." -msgstr "" -"Crie seu primeiro modelo de email para personalizar os e-mails de fatura." - -#: app/templates/admin/email_templates/list.html:66 -msgid "Create Email Template" -msgstr "Criar Modelo de E- mail" - -#: app/templates/admin/email_templates/list.html:75 -msgid "Delete Email Template" -msgstr "Apagar o Modelo de E- mail" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/quotes/list.html:368 -#: app/templates/timer/time_entries_overview.html:388 -msgid "Are you sure you want to delete" -msgstr "Tem a certeza de que deseja apagar" - -#: app/templates/admin/email_templates/list.html:77 -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -#: app/templates/timer/time_entries_overview.html:388 -msgid "This action cannot be undone." -msgstr "Esta acção não pode ser desfeita." - -#: app/templates/admin/email_templates/view.html:22 -msgid "" -"Uses the same rendering as a real invoice email. Set a default address under" -" Admin → Email Configuration (Test recipient email)." -msgstr "" -"Usa a mesma renderização como um e-mail de fatura real. Defina um endereço " -"padrão em Admin → Email Configuration (Test receiver email)." +#~ msgid "" +#~ "Columns marked as \"Complete\" will mark" +#~ " tasks as completed when dragged to" +#~ " that column" +#~ msgstr "" +#~ "Colunas marcadas como \"Completo\" marcarão" +#~ " as tarefas como concluídas quando " +#~ "arrastadas para essa coluna" -#: app/templates/admin/email_templates/view.html:40 -msgid "Template Information" -msgstr "Informação do Modelo" +#~ msgid "" +#~ "Inactive columns are hidden from the " +#~ "kanban board but tasks with that " +#~ "status remain accessible" +#~ msgstr "" +#~ "Colunas inativas estão ocultas do " +#~ "tabuleiro do kanban, mas as tarefas " +#~ "com esse status permanecem acessíveis" -#: app/templates/admin/integrations/list.html:4 -msgid "Integration Setup" -msgstr "Configuração da Integração" +#~ msgid "Delete Kanban Column" +#~ msgstr "Apagar a Coluna do Kanban" -#: app/templates/admin/integrations/list.html:21 -msgid "" -"Configure OAuth credentials for each integration. Global integrations are " -"shared across all users." -msgstr "" -"Configurar credenciais OAuth para cada integração. As integrações globais " -"são compartilhadas em todos os usuários." - -#: app/templates/admin/integrations/list.html:34 -#: app/templates/integrations/health.html:39 -#: app/templates/integrations/list.html:136 -#: app/templates/integrations/manage.html:561 -msgid "Global" -msgstr "Global" - -#: app/templates/admin/integrations/list.html:38 -msgid "Per User" -msgstr "Por Usuário" - -#: app/templates/admin/integrations/setup.html:4 -#: app/templates/admin/integrations/setup.html:15 -#: app/templates/integrations/list.html:167 -msgid "Setup" -msgstr "Configuração" - -#: app/templates/admin/integrations/setup.html:29 -#: app/templates/integrations/manage.html:79 -#: app/templates/integrations/wizard_trello.html:18 -msgid "Trello API Key" -msgstr "Chave de API Trello" - -#: app/templates/admin/integrations/setup.html:36 -#: app/templates/integrations/manage.html:86 -msgid "Get from https://trello.com/app-key" -msgstr "Obter de https://trello.com/app-key" - -#: app/templates/admin/integrations/setup.html:39 -#: app/templates/integrations/manage.html:89 -msgid "Get your API key from" -msgstr "Obter sua chave de API de" - -#: app/templates/admin/integrations/setup.html:45 -#: app/templates/integrations/manage.html:95 -#: app/templates/integrations/wizard_trello.html:28 -msgid "Trello API Secret" -msgstr "Trello API Secret" - -#: app/templates/admin/integrations/setup.html:52 -#: app/templates/admin/integrations/setup.html:91 -msgid "Leave empty to keep current value" -msgstr "Deixar em branco para manter o valor atual" - -#: app/templates/admin/integrations/setup.html:54 -#: app/templates/integrations/manage.html:104 -msgid "Get your API secret from" -msgstr "Obter o seu segredo API de" - -#: app/templates/admin/integrations/setup.html:55 -#: app/templates/integrations/manage.html:105 -msgid "(shown after generating API key)" -msgstr "(mostrado após gerar a chave de API)" - -#: app/templates/admin/integrations/setup.html:62 -msgid "" -"After saving API Key and Secret, you can connect Trello using OAuth flow. " -"The token will be generated automatically during connection." -msgstr "" -"Após salvar API Key e Secret, você pode conectar Trello usando fluxo OAuth. " -"O token será gerado automaticamente durante a conexão." - -#: app/templates/admin/integrations/setup.html:72 -#: app/templates/admin/integrations/setup.html:79 -#: app/templates/integrations/manage.html:122 -#: app/templates/integrations/manage.html:129 -msgid "OAuth Client ID" -msgstr "ID do Cliente OAuth" - -#: app/templates/admin/integrations/setup.html:85 -#: app/templates/integrations/manage.html:135 -#: app/templates/integrations/manage.html:141 -msgid "OAuth Client Secret" -msgstr "Segredo do Cliente OAuth" - -#: app/templates/admin/integrations/setup.html:93 -#: app/templates/integrations/manage.html:144 -msgid "Required for new setup. Leave empty to keep existing secret." -msgstr "" -"Necessário para nova configuração. Deixe vazio para manter o segredo " -"existente." +#~ msgid "Are you sure you want to delete the column?" +#~ msgstr "Tem certeza de que deseja excluir a coluna?" -#: app/templates/admin/integrations/setup.html:107 -msgid "Leave empty for \"common\" (multi-tenant)" -msgstr "Deixar em branco para \"comuns\" (multi-tenant)" +#~ msgid "Key:" +#~ msgstr "Chave:" -#: app/templates/admin/integrations/setup.html:109 -#: app/templates/integrations/manage.html:160 -#: app/templates/integrations/wizard_microsoft_teams.html:25 -#: app/templates/integrations/wizard_outlook_calendar.html:25 -msgid "" -"Leave empty to use \"common\" (multi-tenant). Enter your Azure AD tenant ID " -"for single-tenant apps." -msgstr "" -"Deixe em branco para usar \"comum\" (multi-tenant). Digite seu Azure AD " -"locatário ID para aplicativos de um único inquilino." - -#: app/templates/admin/integrations/setup.html:117 -#: app/templates/integrations/manage.html:168 -#: app/templates/integrations/wizard_gitlab.html:11 -msgid "GitLab Instance URL" -msgstr "URL de instância GitLab" - -#: app/templates/admin/integrations/setup.html:127 -#: app/templates/integrations/manage.html:178 -#: app/templates/integrations/wizard_gitlab.html:18 -msgid "" -"URL of your GitLab instance. Use \"https://gitlab.com\" for GitLab.com or " -"your self-hosted GitLab URL." -msgstr "" -"URL da sua instância GitLab. Use \"https://gitlab.com\" para GitLab.com ou " -"sua URL GitLab self-hosted." - -#: app/templates/admin/integrations/setup.html:134 -#: app/templates/integrations/manage.html:186 -#: app/templates/integrations/wizard_asana.html:36 -#: app/templates/integrations/wizard_github.html:36 -#: app/templates/integrations/wizard_gitlab.html:64 -#: app/templates/integrations/wizard_jira.html:53 -#: app/templates/integrations/wizard_microsoft_teams.html:64 -#: app/templates/integrations/wizard_outlook_calendar.html:64 -msgid "OAuth Redirect URI" -msgstr "OAuth Redirect URI" - -#: app/templates/admin/integrations/setup.html:136 -#: app/templates/integrations/manage.html:188 -msgid "Add this URL as an authorized redirect URI in your OAuth app settings:" -msgstr "" -"Adicione esta URL como um URI de redirecionamento autorizado nas " -"configurações do aplicativo OAuth:" +#~ msgid "" +#~ "Note: Tasks with this status will " +#~ "remain accessible but the column will" +#~ " no longer appear on the kanban " +#~ "board." +#~ msgstr "" +#~ "Nota: As tarefas com este status " +#~ "permanecerão acessíveis, mas a coluna " +#~ "não aparecerá mais no tabuleiro do " +#~ "kanban." -#: app/templates/admin/integrations/setup.html:144 -#: app/templates/integrations/manage.html:196 -msgid "Automatic Connection Flow" -msgstr "Fluxo automático de conexão" +#~ msgid "Delete Column" +#~ msgstr "Apagar a Coluna" -#: app/templates/admin/integrations/setup.html:147 -#: app/templates/integrations/manage.html:199 -msgid "" -"After you save these credentials, users can click \"Connect Google " -"Calendar\"" -msgstr "" -"Depois de salvar essas credenciais, os usuários podem clicar em \"Conectar " -"Google Calendar\"" +#~ msgid "Columns reordered successfully" +#~ msgstr "Colunas reordenadas com sucesso" -#: app/templates/admin/integrations/setup.html:148 -#: app/templates/integrations/manage.html:200 -msgid "They will be automatically redirected to Google OAuth" -msgstr "Eles serão automaticamente redirecionados para o Google OAuth" +#~ msgid "Failed to reorder columns. Please try again." +#~ msgstr "Falha ao reordenar colunas. Por favor, tente novamente." -#: app/templates/admin/integrations/setup.html:149 -#: app/templates/integrations/manage.html:201 -msgid "No manual credential entry needed - fully automatic!" -msgstr "" -"Nenhuma entrada de credencial manual necessária - totalmente automática!" +#~ msgid "Create Kanban Column" +#~ msgstr "Criar Coluna do Kanban" -#: app/templates/admin/integrations/setup.html:150 -#: app/templates/integrations/manage.html:202 -msgid "Each user connects their own Google Calendar account" -msgstr "Cada usuário conecta sua própria conta do Google Calendar" +#~ msgid "Add a new column to your kanban board" +#~ msgstr "Adicionar uma nova coluna ao seu tabuleiro kanban" -#: app/templates/admin/integrations/setup.html:159 -#: app/templates/integrations/manage.html:212 -#: app/templates/integrations/manage.html:270 -msgid "Save Credentials" -msgstr "Salvar Credenciais" +#~ msgid "Create Kanban Column form" +#~ msgstr "Criar um formulário de Coluna Kanban" -#: app/templates/admin/integrations/setup.html:170 -msgid "How Google Calendar Works" -msgstr "Como funciona o Google Calendar" +#~ msgid "Column Label" +#~ msgstr "Legenda da Coluna" -#: app/templates/admin/integrations/setup.html:174 -msgid "" -"After you save the OAuth credentials above, users can connect their Google " -"Calendar by clicking \"Connect Google Calendar\" on the Integrations page." -msgstr "" -"Depois de salvar as credenciais do OAuth acima, os usuários podem conectar " -"seu Google Calendar clicando em \"Conectar Google Calendar\" na página " -"Integrações." +#~ msgid "e.g., In Review, Blocked, Testing" +#~ msgstr "Por exemplo, em revisão, bloqueada, testes" -#: app/templates/admin/integrations/setup.html:178 -msgid "" -"They will be automatically redirected to Google to authorize access - no " -"manual credential entry needed!" -msgstr "" -"Eles serão automaticamente redirecionados para o Google para autorizar o " -"acesso - nenhuma entrada de credencial manual necessária!" +#~ msgid "The display name shown on the kanban board" +#~ msgstr "O nome da exibição mostrado no tabuleiro do kanban" -#: app/templates/admin/integrations/setup.html:182 -msgid "" -"Each user connects their own Google Calendar account (per-user integration)." -msgstr "" -"Cada usuário conecta sua própria conta do Google Calendar (integração por " -"usuário)." - -#: app/templates/admin/integrations/setup.html:188 -#: app/templates/integrations/manage.html:578 -#: app/templates/integrations/manage.html:589 -msgid "Connection Status" -msgstr "Estado da Ligação" - -#: app/templates/admin/integrations/setup.html:194 -msgid "View Integration" -msgstr "Ver Integração" - -#: app/templates/admin/integrations/setup.html:200 -msgid "Next Steps" -msgstr "Passos Próximos" - -#: app/templates/admin/integrations/setup.html:202 -msgid "After saving credentials, connect the integration:" -msgstr "Após salvar credenciais, conecte a integração:" - -#: app/templates/admin/integrations/setup.html:205 -msgid "Connect Integration" -msgstr "Conectar a Integração" - -#: app/templates/admin/link_templates/form.html:13 -msgid "Edit Link Template" -msgstr "Editar Modelo de Ligação" - -#: app/templates/admin/link_templates/form.html:13 -#: app/templates/admin/link_templates/list.html:15 -#: app/templates/admin/link_templates/list.html:86 -msgid "Create Link Template" -msgstr "Criar um Modelo de Ligação" - -#: app/templates/admin/link_templates/form.html:14 -msgid "Configure URL template for client custom fields" -msgstr "Configurar o modelo de URL para os campos personalizados do cliente" - -#: app/templates/admin/link_templates/form.html:24 -#: app/templates/project_templates/create.html:20 -#: app/templates/project_templates/edit.html:20 -msgid "Template Name" -msgstr "Nome do Modelo" - -#: app/templates/admin/link_templates/form.html:25 -msgid "e.g., ERP System Link" -msgstr "Por exemplo, ligação do sistema ERP" - -#: app/templates/admin/link_templates/form.html:26 -msgid "A descriptive name for this link template" -msgstr "Um nome descritivo para este modelo de ligação" - -#: app/templates/admin/link_templates/form.html:31 -msgid "Optional description" -msgstr "Descrição facultativa" - -#: app/templates/admin/link_templates/form.html:35 -#: app/templates/admin/link_templates/list.html:25 -#: app/templates/admin/link_templates/list.html:42 -msgid "URL Template" -msgstr "Modelo de URL" - -#: app/templates/admin/link_templates/form.html:36 -msgid "https://example.com/customer/%value%" -msgstr "https://exemplo.com/cliente/%valor%" - -#: app/templates/admin/link_templates/form.html:37 -#, python-brace-format -msgid "" -"URL with {value} or %value% placeholder. Examples: " -"https://erp.example.com/customer/{value} or " -"https://erp.example.com/customer/%value%" -msgstr "" +#~ msgid "Column Key" +#~ msgstr "Chave da Coluna" -#: app/templates/admin/link_templates/form.html:44 -msgid "The key in the client custom_fields JSON to use" -msgstr "A chave no JSON do cliente para usar" - -#: app/templates/admin/link_templates/form.html:48 -#: app/templates/admin/link_templates/list.html:27 -#: app/templates/admin/link_templates/list.html:48 -#: app/templates/kanban/columns.html:50 -msgid "Icon" -msgstr "Ícone" - -#: app/templates/admin/link_templates/form.html:49 -msgid "fas fa-link" -msgstr "fas fa-link" - -#: app/templates/admin/link_templates/form.html:50 -msgid "Font Awesome icon class (e.g., fas fa-link)" -msgstr "Fonte Classe de ícone impressionante (por exemplo, fas fa-link)" - -#: app/templates/admin/link_templates/form.html:66 -msgid "Only active templates are shown on client pages" -msgstr "Somente modelos ativos são mostrados nas páginas do cliente" - -#: app/templates/admin/link_templates/list.html:13 -msgid "Manage URL templates for client custom fields" -msgstr "Gerenciar modelos de URL para campos personalizados do cliente" - -#: app/templates/admin/link_templates/list.html:24 -#: app/templates/admin/link_templates/list.html:36 -#: app/templates/admin/webhooks/form.html:23 -#: app/templates/admin/webhooks/list.html:24 -#: app/templates/admin/webhooks/list.html:35 -#: app/templates/contacts/list.html:27 app/templates/contacts/list.html:38 -#: app/templates/inventory/stock_items/form.html:27 -#: app/templates/inventory/stock_items/list.html:50 -#: app/templates/inventory/stock_items/list.html:63 -#: app/templates/inventory/suppliers/form.html:28 -#: app/templates/inventory/suppliers/list.html:42 -#: app/templates/inventory/suppliers/list.html:54 -#: app/templates/inventory/warehouses/form.html:28 -#: app/templates/inventory/warehouses/list.html:23 -#: app/templates/inventory/warehouses/list.html:34 -#: app/templates/invoices/edit.html:232 app/templates/leads/list.html:50 -#: app/templates/leads/list.html:62 app/templates/main/help.html:195 -#: app/templates/payment_gateways/list.html:25 -#: app/templates/payment_gateways/list.html:35 -#: app/templates/projects/_projects_list.html:78 -#: app/templates/projects/add_good.html:19 -#: app/templates/projects/edit_good.html:19 -#: app/templates/projects/goods.html:39 app/templates/projects/goods.html:51 -#: app/templates/projects/list.html:159 app/templates/projects/view.html:428 -#: app/templates/projects/view.html:440 -#: app/templates/quotes/_edit_quote_form_scripts.html:232 -#: app/templates/quotes/create.html:125 app/templates/quotes/edit.html:199 -#: app/templates/quotes/edit.html:215 -#: app/templates/recurring_invoices/list.html:23 -#: app/templates/recurring_invoices/list.html:35 -#: app/templates/recurring_tasks/list.html:30 -#: app/templates/recurring_tasks/list.html:41 -#: app/templates/reports/saved_views_list.html:27 -#: app/templates/reports/saved_views_list.html:38 -#: app/templates/tasks/_tasks_list.html:47 -#: app/templates/workforce/dashboard.html:254 -msgid "Name" -msgstr "Nome" - -#: app/templates/admin/link_templates/list.html:68 -msgid "Are you sure you want to delete this link template?" -msgstr "Tem a certeza de que deseja apagar este modelo de ligação?" - -#: app/templates/admin/link_templates/list.html:84 -msgid "No link templates found." -msgstr "Não foram encontrados modelos de ligações." - -#: app/templates/admin/link_templates/list.html:93 -msgid "How Link Templates Work" -msgstr "Como os modelos de links funcionam" - -#: app/templates/admin/link_templates/list.html:95 -msgid "" -"Link templates allow you to create quick links to external systems (like ERP" -" systems) using values from client custom fields." -msgstr "" -"Os modelos de links permitem criar links rápidos para sistemas externos " -"(como sistemas ERP) usando valores de campos personalizados do cliente." +#~ msgid "e.g., in_review, blocked, testing" +#~ msgstr "Por exemplo, in review, blocked, testing" -#: app/templates/admin/link_templates/list.html:98 -msgid "Create a custom field called \"debtor_number\" on a client" -msgstr "Criar um campo personalizado chamado \"debtor number\" em um cliente" +#~ msgid "" +#~ "Unique identifier (lowercase, no spaces, " +#~ "use underscores). Auto-generated from " +#~ "label if empty." +#~ msgstr "" +#~ "Identificador único (em minúsculas, sem " +#~ "espaços, use sublinhados). Gerado " +#~ "automaticamente da etiqueta se estiver " +#~ "vazio." + +#~ msgid "Global (for all projects)" +#~ msgstr "Global (para todos os projectos)" + +#~ msgid "" +#~ "Select a project to create project-" +#~ "specific columns, or leave as Global " +#~ "for all projects" +#~ msgstr "" +#~ "Selecione um projeto para criar colunas" +#~ " específicas do projeto ou deixe como" +#~ " Global para todos os projetos" + +#~ msgid "Icon Class" +#~ msgstr "Classe de ícones" -#: app/templates/admin/link_templates/list.html:99 -msgid "Create a link template with URL:" -msgstr "Criar um modelo de ligação com URL:" +#~ msgid "Font Awesome icon class" +#~ msgstr "Classe de ícone impressionante da fonte" -#: app/templates/admin/link_templates/list.html:100 -msgid "Set the field key to \"debtor_number\"" -msgstr "Definir a tecla de campo como \"debtor number\"" +#~ msgid "Browse icons" +#~ msgstr "Navegar ícones" -#: app/templates/admin/link_templates/list.html:101 -msgid "" -"When viewing the client, a link will appear that opens the ERP system with " -"the correct customer ID" -msgstr "" -"Ao visualizar o cliente, aparecerá um link que abre o sistema ERP com o ID " -"correto do cliente" - -#: app/templates/admin/link_templates/list.html:103 -msgid "URL Template Format:" -msgstr "Formato do Modelo de URL:" - -#: app/templates/admin/link_templates/list.html:103 -#, python-brace-format -msgid "Use {value} as a placeholder for the custom field value." -msgstr "Usar {value} como placeholder para o valor do campo personalizado." - -#: app/templates/admin/permissions/list.html:8 -#: app/templates/admin/permissions/list.html:13 -msgid "System Permissions" -msgstr "Permissões do Sistema" - -#: app/templates/admin/permissions/list.html:14 -msgid "All available permissions in the system" -msgstr "Todas as permissões disponíveis no sistema" - -#: app/templates/admin/permissions/list.html:16 -#: app/templates/admin/roles/form.html:10 -#: app/templates/admin/roles/view.html:9 -msgid "Back to Roles" -msgstr "Voltar aos Funções" - -#: app/templates/admin/permissions/list.html:24 -#: app/templates/admin/roles/list.html:113 -#: app/templates/admin/users/roles.html:44 -msgid "permissions" -msgstr "permissões" - -#: app/templates/admin/permissions/list.html:38 -msgid "No description available" -msgstr "Nenhuma descrição disponível" - -#: app/templates/admin/permissions/list.html:53 -msgid "About Permissions" -msgstr "Sobre Permissões" - -#: app/templates/admin/permissions/list.html:55 -msgid "" -"Permissions define what actions users can perform in the system. These " -"permissions are assigned to roles, and roles are assigned to users. This " -"provides a flexible and granular access control system." -msgstr "" -"Permissões definem quais ações os usuários podem realizar no sistema. Essas " -"permissões são atribuídas aos papéis, e os papéis são atribuídos aos " -"usuários. Isso fornece um sistema de controle de acesso flexível e granular." - -#: app/templates/admin/roles/form.html:17 -#: app/templates/admin/roles/view.html:20 -msgid "Edit Role" -msgstr "Editar Papel" - -#: app/templates/admin/roles/form.html:19 -msgid "Create New Role" -msgstr "Criar um novo papel" - -#: app/templates/admin/roles/form.html:26 -#: app/templates/admin/roles/list.html:91 -msgid "Role Name" -msgstr "Nome do Papel" - -#: app/templates/admin/roles/form.html:41 -msgid "A unique name for this role" -msgstr "Um nome único para este papel" - -#: app/templates/admin/roles/form.html:55 -msgid "Optional description of this role" -msgstr "Descrição facultativa desta função" - -#: app/templates/admin/roles/form.html:59 -#: app/templates/admin/roles/list.html:93 -#: app/templates/admin/roles/view.html:76 -msgid "Permissions" -msgstr "Permissões" - -#: app/templates/admin/roles/form.html:60 -msgid "Select the permissions this role should have:" -msgstr "Selecione as permissões que esta função deve ter:" - -#: app/templates/admin/roles/form.html:75 -#: app/templates/admin/roles/form.html:112 -msgid "Toggle All" -msgstr "Alternar Todos" - -#: app/templates/admin/roles/form.html:99 -msgid "Module visibility" -msgstr "Visibilidade do módulo" - -#: app/templates/admin/roles/form.html:101 -msgid "" -"Select which modules should be hidden for this role. Hidden modules will not" -" appear in the navigation and cannot be accessed directly." -msgstr "" -"Selecione quais módulos devem ser escondidos para esta função. Os módulos " -"ocultos não aparecerão na navegação e não poderão ser acessados diretamente." - -#: app/templates/admin/roles/form.html:124 -msgid "Hide" -msgstr "Ocultar" - -#: app/templates/admin/roles/form.html:143 -msgid "Update Role" -msgstr "Atualizar função" - -#: app/templates/admin/roles/form.html:145 -#: app/templates/admin/roles/list.html:18 -msgid "Create Role" -msgstr "Criar Papel" - -#: app/templates/admin/roles/list.html:13 -msgid "Manage roles and their permissions" -msgstr "Gerenciar funções e suas permissões" - -#: app/templates/admin/roles/list.html:17 -msgid "View Permissions" -msgstr "Ver Permissões" - -#: app/templates/admin/roles/list.html:32 -msgid "Total Roles" -msgstr "Total de Funções" - -#: app/templates/admin/roles/list.html:46 -msgid "System Roles" -msgstr "Funções do Sistema" - -#: app/templates/admin/roles/list.html:60 -msgid "Custom Roles" -msgstr "Funções Personalizadas" - -#: app/templates/admin/roles/list.html:74 -#: app/templates/admin/roles/view.html:48 -msgid "Assigned Users" -msgstr "Utilizadores Designados" - -#: app/templates/admin/roles/list.html:95 -#: app/templates/admin/roles/view.html:30 -#: app/templates/contacts/communication_form.html:28 -#: app/templates/deals/activity_form.html:25 -#: app/templates/inventory/movements/list.html:57 -#: app/templates/inventory/movements/list.html:79 -#: app/templates/inventory/reports/movement_history.html:73 -#: app/templates/inventory/reports/movement_history.html:95 -#: app/templates/inventory/reservations/list.html:42 -#: app/templates/inventory/reservations/list.html:64 -#: app/templates/inventory/stock_items/history.html:64 -#: app/templates/inventory/stock_items/history.html:81 -#: app/templates/inventory/stock_items/view.html:240 -#: app/templates/inventory/stock_items/view.html:250 -#: app/templates/inventory/warehouses/view.html:131 -#: app/templates/inventory/warehouses/view.html:145 -#: app/templates/leads/activity_form.html:25 -#: app/templates/workforce/dashboard.html:120 -msgid "Type" -msgstr "Tipo" - -#: app/templates/admin/roles/list.html:105 -msgid "Default role" -msgstr "Papel padrão" - -#: app/templates/admin/roles/list.html:123 -msgid "user" -msgstr "usuário" - -#: app/templates/admin/roles/list.html:126 -msgid "No users" -msgstr "Sem usuários" - -#: app/templates/admin/roles/list.html:136 -#: app/templates/kanban/columns.html:88 -msgid "Custom" -msgstr "Personalizado" - -#: app/templates/admin/roles/list.html:142 -#: app/templates/admin/roles/view.html:65 -#: app/templates/budget/dashboard.html:92 -#: app/templates/client_portal/invoices.html:135 -#: app/templates/client_portal/quotes.html:67 -#: app/templates/contacts/list.html:58 app/templates/deals/list.html:81 -#: app/templates/integrations/health.html:99 -#: app/templates/issues/list.html:136 app/templates/leads/list.html:85 -#: app/templates/projects/_kanban_tailwind.html:79 -#: app/templates/projects/view.html:480 -#: app/templates/quotes/_quotes_list.html:77 -#: app/templates/reports/saved_views_list.html:61 -#: app/templates/tasks/overdue.html:72 -#: app/templates/timer/_time_entries_list.html:179 -#: app/templates/weekly_goals/index.html:191 -msgid "View" -msgstr "Ver" - -#: app/templates/admin/roles/list.html:159 -msgid "Permissions for" -msgstr "Permissões para" - -#: app/templates/admin/roles/list.html:187 -msgid "No permissions assigned." -msgstr "Sem permissões atribuídas." - -#: app/templates/admin/roles/list.html:194 -msgid "No roles found." -msgstr "Nenhum papel encontrado." - -#: app/templates/admin/roles/list.html:202 -msgid "About Roles & Permissions" -msgstr "Sobre Funções e Permissões" - -#: app/templates/admin/roles/list.html:204 -msgid "" -"Roles are collections of permissions that can be assigned to users. System " -"roles are predefined and cannot be deleted or renamed, but custom roles can " -"be created for your specific needs." -msgstr "" -"Funções são coleções de permissões que podem ser atribuídas aos usuários. As" -" funções do sistema são predefinidas e não podem ser apagadas ou renomeadas," -" mas funções personalizadas podem ser criadas para suas necessidades " -"específicas." - -#: app/templates/admin/roles/list.html:211 -msgid "Are you sure you want to delete the role" -msgstr "Tem a certeza de que deseja apagar a função" - -#: app/templates/admin/roles/list.html:213 -msgid "Delete Role" -msgstr "Apagar Papel" - -#: app/templates/admin/roles/view.html:16 -#: app/templates/client_portal/widgets/projects.html:28 -msgid "No description" -msgstr "Sem descrição" - -#: app/templates/admin/roles/view.html:27 -msgid "Role Information" -msgstr "Informação de Papel" - -#: app/templates/admin/roles/view.html:34 -msgid "System Role" -msgstr "Papel do Sistema" - -#: app/templates/admin/roles/view.html:38 -msgid "Custom Role" -msgstr "Papel Personalizado" - -#: app/templates/admin/roles/view.html:44 -msgid "Total Permissions" -msgstr "Permissões totais" - -#: app/templates/admin/roles/view.html:52 -#: app/templates/audit_logs/list.html:47 -#: app/templates/audit_logs/list.html:117 -#: app/templates/budget/dashboard.html:86 -#: app/templates/budget/project_detail.html:279 -#: app/templates/calendar/event_detail.html:172 -#: app/templates/client_portal/issue_detail.html:83 -#: app/templates/deals/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:195 -#: app/templates/inventory/stock_items/view.html:182 -#: app/templates/inventory/stock_items/view.html:213 -#: app/templates/issues/list.html:99 app/templates/issues/list.html:133 -#: app/templates/issues/view.html:165 app/templates/leads/view.html:107 -#: app/templates/project_templates/view.html:94 -#: app/templates/quotes/_quotes_list.html:38 -#: app/templates/quotes/_quotes_list.html:73 -#: app/templates/quotes/view.html:408 -#: app/templates/reports/saved_views_list.html:30 -#: app/templates/reports/saved_views_list.html:53 -#: app/templates/tasks/_kanban.html:1335 app/templates/tasks/edit.html:263 -#: app/templates/timer/edit_timer.html:528 -msgid "Created" -msgstr "Criado" - -#: app/templates/admin/roles/view.html:59 -msgid "Users with this Role" -msgstr "Usuários com este papel" - -#: app/templates/admin/roles/view.html:70 -msgid "No users assigned to this role yet." -msgstr "Nenhum usuário atribuído a este papel ainda." - -#: app/templates/admin/roles/view.html:110 -msgid "This role has no permissions assigned." -msgstr "Este papel não tem permissões atribuídas." - -#: app/templates/admin/users/roles.html:10 -msgid "Back to User" -msgstr "Voltar ao Utilizador" - -#: app/templates/admin/users/roles.html:15 -msgid "Manage Roles for" -msgstr "Gerenciar funções para" - -#: app/templates/admin/users/roles.html:20 -msgid "Assign Roles" -msgstr "Atribuir funções" - -#: app/templates/admin/users/roles.html:22 -msgid "" -"Select the roles this user should have. Users inherit all permissions from " -"their assigned roles." -msgstr "" -"Selecione os papéis que este usuário deve ter. Os usuários herdam todas as " -"permissões de seus papéis atribuídos." +#~ msgid "Primary (Blue)" +#~ msgstr "Primário (azul)" -#: app/templates/admin/users/roles.html:54 -msgid "Update Roles" -msgstr "Atualizar funções" +#~ msgid "Secondary (Gray)" +#~ msgstr "Secundário (Gray)" -#: app/templates/admin/users/roles.html:65 -msgid "Current Effective Permissions" -msgstr "Permissões atuais eficazes" +#~ msgid "Success (Green)" +#~ msgstr "Sucesso (verde)" -#: app/templates/admin/users/roles.html:67 -msgid "" -"These are all the permissions the user currently has through their roles:" -msgstr "" -"Estas são todas as permissões que o usuário tem atualmente através de seus " -"papéis:" - -#: app/templates/admin/users/roles.html:80 -msgid "No permissions (assign roles to grant permissions)" -msgstr "Sem permissões (atribuir funções para conceder permissões)" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -#: app/templates/admin/webhooks/list.html:15 -msgid "Create Webhook" -msgstr "Criar o Webhook" - -#: app/templates/admin/webhooks/form.html:8 -#: app/templates/admin/webhooks/form.html:13 -msgid "Edit Webhook" -msgstr "Editar o Webhook" - -#: app/templates/admin/webhooks/form.html:14 -msgid "Configure webhook for integrations" -msgstr "Configurar webhook para integrações" - -#: app/templates/admin/webhooks/form.html:36 -#: app/templates/integrations/wizard_github.html:176 -msgid "Webhook URL" -msgstr "URL do Webhook" - -#: app/templates/admin/webhooks/form.html:40 -msgid "The URL where webhook events will be sent" -msgstr "O URL para onde os eventos Webhook serão enviados" - -#: app/templates/admin/webhooks/form.html:45 -#: app/templates/admin/webhooks/list.html:26 -#: app/templates/admin/webhooks/list.html:44 -#: app/templates/admin/webhooks/view.html:46 -#: app/templates/calendar/view.html:76 app/templates/calendar/view.html:93 -#: app/templates/calendar/view.html:94 app/templates/calendar/view.html:107 -msgid "Events" -msgstr "Eventos" - -#: app/templates/admin/webhooks/form.html:58 -msgid "Select which events should trigger this webhook" -msgstr "Selecione quais eventos devem ativar este webhook" - -#: app/templates/admin/webhooks/form.html:64 -#: app/templates/admin/webhooks/view.html:42 -msgid "HTTP Method" -msgstr "Método HTTP" - -#: app/templates/admin/webhooks/form.html:74 -msgid "Content Type" -msgstr "Tipo de Conteúdo" - -#: app/templates/admin/webhooks/form.html:83 -msgid "Max Retries" -msgstr "Máximo de tentativas" - -#: app/templates/admin/webhooks/form.html:89 -msgid "Retry Delay (seconds)" -msgstr "Atraso de repetição (segundos)" - -#: app/templates/admin/webhooks/form.html:95 -msgid "Timeout (seconds)" -msgstr "Tempo- limite (segundos)" - -#: app/templates/admin/webhooks/form.html:116 -msgid "Regenerate Secret" -msgstr "Regenerar o Segredo" - -#: app/templates/admin/webhooks/form.html:118 -msgid "Warning: Regenerating the secret will invalidate the current secret" -msgstr "Aviso: Regenerar o segredo invalidará o segredo atual" - -#: app/templates/admin/webhooks/list.html:13 -msgid "Manage webhook integrations" -msgstr "Gerenciar integrações webhook" - -#: app/templates/admin/webhooks/list.html:25 -#: app/templates/admin/webhooks/list.html:41 -#: app/templates/admin/webhooks/view.html:28 -msgid "URL" -msgstr "URL" - -#: app/templates/admin/webhooks/list.html:28 -#: app/templates/admin/webhooks/list.html:65 -#: app/templates/admin/webhooks/view.html:69 -msgid "Statistics" -msgstr "Estatísticas" - -#: app/templates/admin/webhooks/list.html:67 -#: app/templates/client_portal/invoice_detail.html:60 -#: app/templates/client_portal/invoice_detail.html:69 -#: app/templates/client_portal/invoice_detail.html:92 -#: app/templates/client_portal/quote_detail.html:72 -#: app/templates/client_portal/quote_detail.html:90 -#: app/templates/client_portal/quote_detail.html:113 -#: app/templates/inventory/purchase_orders/form.html:81 -#: app/templates/inventory/purchase_orders/view.html:138 -#: app/templates/inventory/stock_items/view.html:223 -#: app/templates/inventory/stock_levels/item.html:63 -#: app/templates/invoices/edit.html:356 -#: app/templates/invoices/generate_from_time.html:123 -#: app/templates/projects/goods.html:43 app/templates/projects/goods.html:65 -#: app/templates/quotes/create.html:68 app/templates/quotes/edit.html:73 -#: app/templates/quotes/view.html:105 app/templates/quotes/view.html:160 -#: app/templates/reports/iterative_view.html:64 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Total" -msgstr "Total" - -#: app/templates/admin/webhooks/list.html:90 -msgid "No webhooks configured" -msgstr "Sem webhooks configurados" - -#: app/templates/admin/webhooks/list.html:92 -msgid "Create Your First Webhook" -msgstr "Crie seu primeiro Webhook" - -#: app/templates/admin/webhooks/view.html:14 -msgid "Webhook details" -msgstr "Detalhes do Webhook" - -#: app/templates/admin/webhooks/view.html:17 -#: app/templates/integrations/health.html:103 -msgid "Test" -msgstr "Ensaio" - -#: app/templates/admin/webhooks/view.html:57 -msgid "Secret" -msgstr "Segredo" - -#: app/templates/admin/webhooks/view.html:60 -msgid "(truncated)" -msgstr "(truncado)" - -#: app/templates/admin/webhooks/view.html:72 -msgid "Total Deliveries" -msgstr "Total das entregas" - -#: app/templates/admin/webhooks/view.html:76 -msgid "Successful" -msgstr "Sucesso" - -#: app/templates/admin/webhooks/view.html:85 -msgid "Last Delivery" -msgstr "Última entrega" - -#: app/templates/admin/webhooks/view.html:95 -msgid "Recent Deliveries" -msgstr "Entregas Recentes" - -#: app/templates/admin/webhooks/view.html:101 -#: app/templates/admin/webhooks/view.html:111 -#: app/templates/calendar/event_form.html:106 -msgid "Event" -msgstr "Evento" - -#: app/templates/admin/webhooks/view.html:103 -#: app/templates/admin/webhooks/view.html:123 -msgid "Attempt" -msgstr "Tentativa" - -#: app/templates/admin/webhooks/view.html:104 -#: app/templates/admin/webhooks/view.html:124 -msgid "Response" -msgstr "Resposta" - -#: app/templates/admin/webhooks/view.html:105 -#: app/templates/admin/webhooks/view.html:132 -#: app/templates/client_portal/time_entries.html:65 -msgid "Time" -msgstr "Tempo" - -#: app/templates/admin/webhooks/view.html:118 -msgid "Retrying" -msgstr "Repetição" - -#: app/templates/admin/webhooks/view.html:139 -msgid "No deliveries yet" -msgstr "Nenhuma entrega ainda" - -#: app/templates/admin/webhooks/view.html:145 -msgid "Send a test webhook event?" -msgstr "Enviar um evento webhook de teste?" - -#: app/templates/admin/webhooks/view.html:158 -msgid "Test webhook sent successfully!" -msgstr "Teste webhook enviado com sucesso!" - -#: app/templates/admin/webhooks/view.html:161 -msgid "Error:" -msgstr "Erro:" - -#: app/templates/admin/webhooks/view.html:161 -#: app/templates/reports/scheduled.html:156 -msgid "Unknown error" -msgstr "Erro desconhecido" - -#: app/templates/admin/webhooks/view.html:165 -msgid "Error sending test webhook:" -msgstr "Erro ao enviar o webhook de teste:" - -#: app/templates/analytics/dashboard.html:4 -#: app/templates/analytics/dashboard.html:30 -#: app/templates/analytics/dashboard_improved.html:3 -#: app/templates/analytics/dashboard_improved.html:8 -msgid "Analytics Dashboard" -msgstr "Painel de Análise" - -#: app/templates/analytics/dashboard.html:14 -#: app/templates/analytics/dashboard_improved.html:13 -#: app/templates/audit_logs/list.html:55 -msgid "Last 7 days" -msgstr "Últimos 7 dias" - -#: app/templates/analytics/dashboard.html:15 -#: app/templates/analytics/dashboard_improved.html:14 -#: app/templates/audit_logs/list.html:56 app/templates/reports/index.html:39 -#: app/templates/reports/index.html:47 app/templates/reports/index.html:55 -msgid "Last 30 days" -msgstr "Últimos 30 dias" - -#: app/templates/analytics/dashboard.html:16 -#: app/templates/analytics/dashboard_improved.html:15 -#: app/templates/audit_logs/list.html:57 -msgid "Last 90 days" -msgstr "Últimos 90 dias" - -#: app/templates/analytics/dashboard.html:17 -#: app/templates/analytics/dashboard_improved.html:16 -#: app/templates/audit_logs/list.html:58 -msgid "Last year" -msgstr "Ano passado" - -#: app/templates/analytics/dashboard.html:22 -msgid "Export all charts as PNG" -msgstr "Exportar todos os gráficos como PNG" - -#: app/templates/analytics/dashboard.html:23 -msgid "Export Charts" -msgstr "Exportar Gráficos" - -#: app/templates/analytics/dashboard.html:31 -msgid "Key metrics and insights about your time tracking" -msgstr "Principais métricas e insights sobre seu rastreamento de tempo" - -#: app/templates/analytics/dashboard.html:58 -#: app/templates/analytics/dashboard_improved.html:62 -msgid "Avg Daily Hours" -msgstr "Avg Horas Diárias" - -#: app/templates/analytics/dashboard.html:63 -msgid "Regular" -msgstr "Regular" - -#: app/templates/analytics/dashboard.html:63 -msgid "Overtime" -msgstr "Horas extraordinárias" - -#: app/templates/analytics/dashboard.html:73 -#: app/templates/analytics/dashboard_improved.html:83 -msgid "Daily Hours Trend" -msgstr "Tendência das Horas Diárias" - -#: app/templates/analytics/dashboard.html:85 -#: app/templates/analytics/mobile_dashboard.html:85 -msgid "Billable vs Non-Billable" -msgstr "Billable vs Non- Billable" - -#: app/templates/analytics/dashboard.html:113 -#: app/templates/analytics/dashboard_improved.html:172 -msgid "Weekly Trends" -msgstr "Tendências Semanais" - -#: app/templates/analytics/dashboard.html:129 -msgid "Hours Forecast" -msgstr "Previsão das Horas" - -#: app/templates/analytics/dashboard.html:131 -msgid "Next 7 days based on 7-day average" -msgstr "Próximo 7 dias com base na média de 7 dias" - -#: app/templates/analytics/dashboard.html:146 -msgid "Daily Regular vs Overtime" -msgstr "Diariamente Regular vs Overtime" - -#: app/templates/analytics/dashboard.html:162 -#: app/templates/analytics/dashboard_improved.html:180 -#: app/templates/analytics/mobile_dashboard.html:115 -msgid "Hours by Time of Day" -msgstr "Horas por Hora do Dia" - -#: app/templates/analytics/dashboard.html:174 -msgid "Project Efficiency" -msgstr "Eficiência do projecto" - -#: app/templates/analytics/dashboard.html:191 -#: app/templates/analytics/dashboard_improved.html:191 -#: app/templates/analytics/mobile_dashboard.html:131 -msgid "User Performance" -msgstr "Desempenho do Usuário" - -#: app/templates/analytics/dashboard.html:219 -#: app/templates/analytics/dashboard_improved.html:213 -#: app/templates/analytics/mobile_dashboard.html:159 -msgid "Failed to load charts. Please try again." -msgstr "Falha ao carregar gráficos. Por favor, tente novamente." - -#: app/templates/analytics/dashboard.html:220 -#: app/templates/analytics/dashboard_improved.html:214 -#: app/templates/analytics/mobile_dashboard.html:160 -msgid "Failed to refresh charts. Please try again." -msgstr "Não foi possível actualizar os gráficos. Por favor, tente novamente." - -#: app/templates/analytics/dashboard.html:223 -#: app/templates/analytics/dashboard_improved.html:217 -#: app/templates/analytics/mobile_dashboard.html:163 -msgid "Hour of Day" -msgstr "Hora do Dia" - -#: app/templates/analytics/dashboard.html:224 -#: app/templates/analytics/dashboard_improved.html:218 -#: app/templates/analytics/mobile_dashboard.html:164 -msgid "Revenue" -msgstr "Receitas" - -#: app/templates/analytics/dashboard.html:499 -msgid "Forecast" -msgstr "Previsão" - -#: app/templates/analytics/dashboard.html:745 -msgid "Charts exported. Check your downloads." -msgstr "Gráficos exportados. Verifique os seus downloads." - -#: app/templates/analytics/dashboard.html:745 -#: app/templates/analytics/dashboard_improved.html:19 -#: app/templates/timer/calendar.html:49 -msgid "Export" -msgstr "Exportar" - -#: app/templates/analytics/dashboard_improved.html:9 -msgid "Key metrics and actionable insights" -msgstr "Principais métricas e insights acionáveis" - -#: app/templates/analytics/dashboard_improved.html:36 -msgid "vs previous period" -msgstr "versus período anterior" - -#: app/templates/analytics/dashboard_improved.html:45 -msgid "of total" -msgstr "Total" - -#: app/templates/analytics/dashboard_improved.html:53 -#: app/templates/analytics/dashboard_improved.html:154 -msgid "Potential Revenue" -msgstr "Receitas Potenciais" - -#: app/templates/analytics/dashboard_improved.html:54 -msgid "Avg rate:" -msgstr "Taxa de Avg:" - -#: app/templates/analytics/dashboard_improved.html:59 -#: app/templates/budget/project_detail.html:165 -msgid "Trend" -msgstr "Tendência" - -#: app/templates/analytics/dashboard_improved.html:63 -msgid "active projects" -msgstr "Projectos activos" - -#: app/templates/analytics/dashboard_improved.html:70 -msgid "Insights & Recommendations" -msgstr "Insights & Recomendações" - -#: app/templates/analytics/dashboard_improved.html:86 -msgid "Cumulative" -msgstr "Cumulativo" - -#: app/templates/analytics/dashboard_improved.html:94 -msgid "Billable Distribution" -msgstr "Distribuição Billable" - -#: app/templates/analytics/dashboard_improved.html:104 -msgid "Task Status Overview" -msgstr "Visão geral do status da tarefa" - -#: app/templates/analytics/dashboard_improved.html:110 -msgid "Tasks Completed" -msgstr "Tarefas Concluídas" - -#: app/templates/analytics/dashboard_improved.html:114 -#: app/templates/analytics/dashboard_improved.html:222 -#: app/templates/client_portal/issues.html:31 -#: app/templates/issues/edit.html:40 app/templates/issues/list.html:40 -#: app/templates/issues/view.html:101 app/templates/tasks/create.html:72 -#: app/templates/tasks/create.html:86 app/templates/tasks/create.html:476 -#: app/templates/tasks/edit.html:81 app/templates/tasks/edit.html:656 -#: app/templates/tasks/my_tasks.html:57 app/templates/tasks/my_tasks.html:132 -#: app/utils/i18n_helpers.py:17 app/utils/i18n_helpers.py:29 -msgid "In Progress" -msgstr "Em Progresso" - -#: app/templates/analytics/dashboard_improved.html:118 -#: app/templates/analytics/dashboard_improved.html:223 -#: app/templates/tasks/create.html:71 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:475 app/templates/tasks/edit.html:80 -#: app/templates/tasks/edit.html:655 app/templates/tasks/my_tasks.html:40 -#: app/templates/tasks/my_tasks.html:131 app/utils/i18n_helpers.py:16 -#: app/utils/i18n_helpers.py:28 -msgid "To Do" -msgstr "Para Fazer" - -#: app/templates/analytics/dashboard_improved.html:124 -msgid "Revenue by Project" -msgstr "Receitas por projecto" - -#: app/templates/analytics/dashboard_improved.html:132 -msgid "Payments Over Time" -msgstr "Pagamentos ao longo do tempo" - -#: app/templates/analytics/dashboard_improved.html:144 -msgid "Payment Methods" -msgstr "Métodos de pagamento" - -#: app/templates/analytics/dashboard_improved.html:148 -msgid "Revenue vs Payments" -msgstr "Receitas vs Pagamentos" - -#: app/templates/analytics/dashboard_improved.html:158 -msgid "Collection Rate" -msgstr "Taxa de Colecção" - -#: app/templates/analytics/dashboard_improved.html:184 -msgid "Project Completion Rate" -msgstr "Taxa de Conclusão do Projecto" - -#: app/templates/analytics/dashboard_improved.html:219 -#: app/templates/analytics/mobile_dashboard.html:40 -#: app/templates/main/dashboard.html:555 app/templates/main/help.html:204 -#: app/templates/project_templates/view.html:39 -#: app/templates/projects/_projects_list.html:95 -#: app/templates/projects/add_good.html:62 app/templates/projects/edit.html:61 -#: app/templates/projects/edit_good.html:62 -#: app/templates/projects/goods.html:70 app/templates/projects/list.html:176 -#: app/templates/reports/user_report.html:83 -#: app/templates/reports/week_in_review.html:30 -#: app/templates/tasks/edit.html:175 -#: app/templates/timer/_time_entries_list.html:173 -#: app/templates/timer/bulk_entry.html:207 -#: app/templates/timer/calendar.html:199 app/templates/timer/calendar.html:883 -#: app/templates/timer/edit_timer.html:322 -#: app/templates/timer/edit_timer.html:469 -#: app/templates/timer/manual_entry.html:153 -#: app/templates/timer/time_entries_overview.html:113 -#: app/templates/timer/view_timer.html:122 -#: app/templates/timer/view_timer.html:126 app/templates/user/profile.html:110 -msgid "Billable" -msgstr "Billable" - -#: app/templates/analytics/dashboard_improved.html:220 -msgid "Non-Billable" -msgstr "Não Billável" - -#: app/templates/analytics/dashboard_improved.html:221 -#: app/templates/contacts/communication_form.html:59 -#: app/templates/deals/activity_form.html:36 -#: app/templates/leads/activity_form.html:36 -#: app/templates/tasks/_kanban.html:1346 app/templates/tasks/edit.html:266 -#: app/templates/tasks/my_tasks.html:91 -#: app/templates/weekly_goals/edit.html:89 -#: app/templates/weekly_goals/index.html:39 -#: app/templates/weekly_goals/index.html:172 -#: app/templates/weekly_goals/view.html:67 app/utils/i18n_helpers.py:222 -#: app/utils/i18n_helpers.py:234 app/utils/i18n_helpers.py:245 -#: app/utils/i18n_helpers.py:256 -msgid "Completed" -msgstr "Concluído" - -#: app/templates/analytics/dashboard_improved.html:225 -#: app/templates/contacts/communication_form.html:62 -#: app/templates/inventory/purchase_orders/list.html:28 -#: app/templates/inventory/purchase_orders/list.html:84 -#: app/templates/inventory/purchase_orders/view.html:45 -#: app/templates/inventory/reservations/list.html:25 -#: app/templates/inventory/reservations/list.html:84 -#: app/templates/issues/edit.html:43 app/templates/issues/list.html:43 -#: app/templates/issues/view.html:104 app/templates/projects/archive.html:68 -#: app/templates/tasks/create.html:75 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:479 app/templates/tasks/edit.html:84 -#: app/templates/tasks/edit.html:659 app/templates/tasks/my_tasks.html:135 -#: app/templates/weekly_goals/edit.html:91 -#: app/templates/weekly_goals/view.html:73 app/utils/i18n_helpers.py:20 -#: app/utils/i18n_helpers.py:32 app/utils/i18n_helpers.py:68 -#: app/utils/i18n_helpers.py:80 app/utils/i18n_helpers.py:247 -#: app/utils/i18n_helpers.py:258 -msgid "Cancelled" -msgstr "Cancelado" - -#: app/templates/analytics/dashboard_improved.html:226 -msgid "Completion Rate (%)" -msgstr "Taxa de conclusão (%)" - -#: app/templates/analytics/mobile_dashboard.html:20 -msgid "Mobile insights overview" -msgstr "Visão geral dos insights móveis" - -#: app/templates/analytics/mobile_dashboard.html:58 -msgid "Daily Avg" -msgstr "Avg diário" - -#: app/templates/analytics/mobile_dashboard.html:70 -msgid "Daily Hours" -msgstr "Horas Diárias" - -#: app/templates/analytics/mobile_dashboard.html:100 -msgid "Top Projects" -msgstr "Projetos Topo" - -#: app/templates/approvals/list.html:4 app/templates/approvals/list.html:8 -#: app/templates/approvals/list.html:13 app/templates/approvals/view.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:14 -msgid "Time Entry Approvals" -msgstr "Homologação de entrada no tempo" - -#: app/templates/approvals/list.html:14 -#: app/templates/client_portal/approvals.html:15 -msgid "Review and approve time entries" -msgstr "Rever e aprovar as datas" - -#: app/templates/approvals/list.html:23 -#: app/templates/client_portal/widgets/pending_actions.html:9 -#: app/templates/invoice_approvals/list.html:4 -msgid "Pending Approvals" -msgstr "Homologação pendente" - -#: app/templates/approvals/list.html:33 app/templates/approvals/list.html:95 -#: app/templates/client_portal/approvals.html:86 -#: app/templates/components/offline_indicator.html:66 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/timer/view_timer.html:4 -#: app/templates/timer/view_timer.html:14 -msgid "Time Entry" -msgstr "Entrada de Tempo" - -#: app/templates/approvals/list.html:37 app/templates/approvals/view.html:86 -#: app/templates/invoice_approvals/list.html:31 -msgid "Requested by" -msgstr "Pedidos" - -#: app/templates/approvals/list.html:38 app/templates/approvals/view.html:31 -#: app/templates/client_portal/approvals.html:132 -#: app/templates/project_templates/view.html:74 -#: app/templates/projects/time_entries_overview.html:60 -#: app/templates/reports/iterative_view.html:33 -#: app/templates/reports/iterative_view.html:65 -#: app/templates/reports/iterative_view.html:80 -#: app/templates/reports/time_entries_report.html:85 -#: app/templates/reports/unpaid_hours_report.html:92 -#: app/templates/tasks/edit.html:243 app/templates/tasks/edit.html:255 -#: app/templates/timer/calendar.html:877 app/templates/user/settings.html:349 -#: app/templates/user/settings.html:364 -msgid "hours" -msgstr "horas" - -#: app/templates/approvals/list.html:46 app/templates/approvals/view.html:46 -#: app/templates/client_portal/time_entries.html:88 -#: app/templates/clients/view.html:377 app/templates/main/dashboard.html:89 -#: app/templates/main/dashboard.html:354 app/templates/main/search.html:49 -#: app/templates/timer/manual_entry.html:29 -#: app/templates/timer/timer_page.html:57 -#: app/templates/weekly_goals/view.html:186 -msgid "Direct" -msgstr "Directo" - -#: app/templates/approvals/list.html:54 app/templates/approvals/view.html:132 -#: app/templates/invoice_approvals/list.html:39 -#: app/templates/invoice_approvals/view.html:108 -#: app/templates/quotes/view.html:209 app/templates/quotes/view.html:550 -#: app/templates/workforce/dashboard.html:76 -#: app/templates/workforce/dashboard.html:181 -msgid "Approve" -msgstr "Aprovar" - -#: app/templates/approvals/list.html:58 app/templates/approvals/list.html:140 -#: app/templates/approvals/view.html:136 app/templates/approvals/view.html:159 -#: app/templates/invoice_approvals/list.html:43 -#: app/templates/invoice_approvals/list.html:86 -#: app/templates/invoice_approvals/view.html:112 -#: app/templates/quotes/view.html:210 app/templates/quotes/view.html:252 -#: app/templates/quotes/view.html:568 -#: app/templates/workforce/dashboard.html:81 -#: app/templates/workforce/dashboard.html:186 -msgid "Reject" -msgstr "Rejeitar" - -#: app/templates/approvals/list.html:75 -msgid "No pending approvals" -msgstr "Nenhuma aprovação pendente" - -#: app/templates/approvals/list.html:76 -msgid "All time entries have been reviewed." -msgstr "Todos os registros de tempo foram revisados." - -#: app/templates/approvals/list.html:85 -msgid "My Requests" -msgstr "Meus Pedidos" - -#: app/templates/approvals/list.html:116 -msgid "No pending requests" -msgstr "Sem pedidos pendentes" - -#: app/templates/approvals/list.html:117 -msgid "You have no time entry approval requests." -msgstr "Você não tem nenhum pedido de aprovação de entrada de tempo." - -#: app/templates/approvals/list.html:128 app/templates/approvals/view.html:147 -msgid "Reject Time Entry" -msgstr "Rejeitar o Item de Tempo" - -#: app/templates/approvals/list.html:134 app/templates/approvals/view.html:153 -msgid "Reason for rejection" -msgstr "Motivo da rejeição" - -#: app/templates/approvals/view.html:4 app/templates/approvals/view.html:9 -#: app/templates/approvals/view.html:14 -#: app/templates/invoice_approvals/view.html:3 -#: app/templates/invoice_approvals/view.html:8 -msgid "Approval Details" -msgstr "Detalhes da aprovação" - -#: app/templates/approvals/view.html:15 -msgid "Review time entry approval request" -msgstr "Pedido de aprovação da entrada no prazo de revisão" - -#: app/templates/approvals/view.html:23 -#: app/templates/reports/unpaid_hours_report.html:114 -#: app/templates/timer/calendar.html:217 app/templates/timer/calendar.html:799 -#: app/templates/timer/calendar.html:803 -msgid "Time Entry Details" -msgstr "Detalhes do registro da hora" - -#: app/templates/approvals/view.html:26 -#: app/templates/timer/edit_timer.html:538 -msgid "Entry ID" -msgstr "ID de entrada" - -#: app/templates/approvals/view.html:71 -msgid "Approval Information" -msgstr "Informações de aprovação" - -#: app/templates/approvals/view.html:90 -msgid "Requested at" -msgstr "Pedidos" - -#: app/templates/approvals/view.html:95 app/templates/quotes/view.html:215 -msgid "Approved by" -msgstr "Aprovação" - -#: app/templates/approvals/view.html:101 -#: app/templates/invoice_approvals/view.html:88 -msgid "Approved at" -msgstr "Aprovação em" - -#: app/templates/approvals/view.html:107 -msgid "Request comment" -msgstr "Pedido de comentário" - -#: app/templates/approvals/view.html:113 -msgid "Approval comment" -msgstr "Comentário da aprovação" - -#: app/templates/approvals/view.html:119 -msgid "Rejection reason" -msgstr "Razão da rejeição" - -#: app/templates/audit_logs/list.html:14 -msgid "Track who changed what and when" -msgstr "Rastrear quem mudou o quê e quando" - -#: app/templates/audit_logs/list.html:19 -#: app/templates/projects/time_entries_overview.html:28 -#: app/templates/reports/builder.html:83 -#: app/templates/timer/time_entries_overview.html:31 -msgid "Filters" -msgstr "Filtros" - -#: app/templates/audit_logs/list.html:22 -msgid "Entity Type" -msgstr "Tipo de Entidade" - -#: app/templates/audit_logs/list.html:24 -#: app/templates/inventory/movements/list.html:23 -#: app/templates/inventory/reports/movement_history.html:41 -#: app/templates/inventory/stock_items/history.html:33 -#: app/templates/tasks/my_tasks.html:162 -msgid "All Types" -msgstr "Todos os Tipos" - -#: app/templates/audit_logs/list.html:31 app/templates/audit_logs/list.html:32 -msgid "Entity ID" -msgstr "ID da entidade" - -#: app/templates/audit_logs/list.html:37 -#: app/templates/reports/time_entries_report.html:27 -#: app/templates/timer/time_entries_overview.html:69 -msgid "All Users" -msgstr "Todos os Usuários" - -#: app/templates/audit_logs/list.html:44 app/templates/audit_logs/list.html:77 -#: app/templates/audit_logs/list.html:97 app/templates/deals/view.html:194 -#: app/templates/deals/view.html:206 -#: app/templates/inventory/purchase_orders/form.html:84 -#: app/templates/invoices/edit.html:77 app/templates/invoices/edit.html:165 -#: app/templates/invoices/edit.html:238 app/templates/quotes/create.html:99 -#: app/templates/quotes/create.html:131 app/templates/quotes/edit.html:147 -#: app/templates/quotes/edit.html:205 -msgid "Action" -msgstr "Acção" - -#: app/templates/audit_logs/list.html:46 -msgid "All Actions" -msgstr "Todas as Acções" - -#: app/templates/audit_logs/list.html:48 app/templates/deals/view.html:97 -#: app/templates/reports/saved_views_list.html:31 -#: app/templates/reports/saved_views_list.html:56 -#: app/templates/tasks/edit.html:264 -msgid "Updated" -msgstr "Atualizado" - -#: app/templates/audit_logs/list.html:49 -msgid "Deleted" -msgstr "Removido" - -#: app/templates/audit_logs/list.html:53 -msgid "Time Range" -msgstr "Intervalo de Tempo" - -#: app/templates/audit_logs/list.html:64 -#: app/templates/client_portal/time_entries.html:50 -#: app/templates/deals/list.html:39 -#: app/templates/inventory/adjustments/list.html:43 -#: app/templates/inventory/movements/list.html:45 -#: app/templates/inventory/purchase_orders/list.html:41 -#: app/templates/inventory/reports/movement_history.html:57 -#: app/templates/inventory/reports/turnover.html:29 -#: app/templates/inventory/reports/valuation.html:39 -#: app/templates/inventory/reservations/list.html:30 -#: app/templates/inventory/stock_items/history.html:49 -#: app/templates/inventory/stock_items/list.html:40 -#: app/templates/inventory/stock_levels/list.html:38 -#: app/templates/inventory/stock_levels/warehouse.html:36 -#: app/templates/inventory/suppliers/list.html:32 -#: app/templates/inventory/transfers/list.html:29 -#: app/templates/leads/list.html:39 -#: app/templates/project_templates/list.html:37 -#: app/templates/reports/time_entries_report.html:78 -#: app/templates/workforce/dashboard.html:36 -msgid "Filter" -msgstr "Filtro" - -#: app/templates/audit_logs/list.html:75 app/templates/audit_logs/list.html:87 -#: app/templates/deals/view.html:192 app/templates/deals/view.html:202 -msgid "Timestamp" -msgstr "Timetamp" - -#: app/templates/audit_logs/list.html:78 -#: app/templates/audit_logs/list.html:100 -msgid "Entity" -msgstr "Entidade" - -#: app/templates/audit_logs/list.html:79 -#: app/templates/audit_logs/list.html:133 app/templates/deals/view.html:195 -#: app/templates/deals/view.html:207 -msgid "Field" -msgstr "Campo" - -#: app/templates/audit_logs/list.html:80 -#: app/templates/audit_logs/list.html:140 -#: app/templates/budget/project_detail.html:171 -#: app/templates/clients/view.html:30 app/templates/deals/view.html:196 -#: app/templates/deals/view.html:210 app/templates/projects/view.html:54 -#: app/templates/tasks/view.html:21 -msgid "Change" -msgstr "Alterar" - -#: app/templates/audit_logs/list.html:129 -#: app/templates/audit_logs/view.html:76 -#: app/templates/inventory/adjustments/form.html:46 -#: app/templates/inventory/adjustments/list.html:60 -#: app/templates/inventory/adjustments/list.html:81 -#: app/templates/inventory/movements/form.html:104 -#: app/templates/inventory/movements/list.html:61 -#: app/templates/inventory/movements/list.html:144 -#: app/templates/inventory/reports/movement_history.html:77 -#: app/templates/inventory/reports/movement_history.html:164 -#: app/templates/inventory/stock_items/history.html:68 -#: app/templates/inventory/stock_items/history.html:150 -#: app/templates/inventory/stock_items/view.html:243 -#: app/templates/inventory/stock_items/view.html:259 -#: app/templates/inventory/warehouses/view.html:133 -#: app/templates/inventory/warehouses/view.html:153 -#: app/templates/kiosk/dashboard.html:192 -#: app/templates/workforce/dashboard.html:80 -#: app/templates/workforce/dashboard.html:185 -msgid "Reason" -msgstr "Justificação" - -#: app/templates/audit_logs/view.html:22 -msgid "Change Information" -msgstr "Alterar a Informação" - -#: app/templates/audit_logs/view.html:85 -msgid "Entity Context" -msgstr "Contexto da Entidade" - -#: app/templates/audit_logs/view.html:98 -msgid "TimeEntry Created" -msgstr "TimeEntry Criado" - -#: app/templates/audit_logs/view.html:107 -msgid "Entry Owner" -msgstr "Dono de Entrada" - -#: app/templates/audit_logs/view.html:119 -msgid "Field Change Details" -msgstr "Detalhes da Mudança de Campo" - -#: app/templates/audit_logs/view.html:144 -msgid "Full Entity State" -msgstr "Estado da Entidade Plena" - -#: app/templates/audit_logs/view.html:148 -msgid "Before Change" -msgstr "Antes de Mudar" - -#: app/templates/audit_logs/view.html:161 -msgid "After Change" -msgstr "Após a Mudança" - -#: app/templates/audit_logs/view.html:178 -msgid "Request Information" -msgstr "Pedido de Informação" - -#: app/templates/auth/change_password.html:8 -msgid "Update your password." -msgstr "Actualiza a tua senha." - -#: app/templates/auth/change_password.html:21 -msgid "Current Password" -msgstr "Senha atual" - -#: app/templates/auth/change_password.html:26 -msgid "New Password" -msgstr "Nova Senha" - -#: app/templates/auth/change_password.html:31 -msgid "Confirm New Password" -msgstr "Confirmar Nova Senha" - -#: app/templates/auth/change_password.html:39 -msgid "Change Password" -msgstr "Mudar a Senha" - -#: app/templates/auth/edit_profile.html:87 app/templates/main/about.html:156 -msgid "Security" -msgstr "Segurança" - -#: app/templates/auth/edit_profile.html:89 -msgid "Manage two-factor authentication for your account." -msgstr "Gerencie a autenticação de dois fatores para sua conta." - -#: app/templates/auth/edit_profile.html:92 -#: app/templates/auth/two_factor.html:6 -#: app/templates/auth/two_factor_setup.html:3 -#: app/templates/auth/two_factor_setup.html:8 -msgid "Two-factor authentication" -msgstr "Autenticação de dois fatores" - -#: app/templates/auth/edit_profile.html:183 -msgid "Please fill both password fields or leave both empty" -msgstr "Por favor preencha ambos os campos de senha ou deixe ambos em branco" - -#: app/templates/auth/edit_profile.html:193 -#: app/templates/client_portal/set_password.html:55 -msgid "Password must be at least 8 characters long" -msgstr "A senha deve ter pelo menos 8 caracteres" - -#: app/templates/auth/edit_profile.html:202 -msgid "Passwords do not match" -msgstr "As senhas não correspondem" - -#: app/templates/auth/forgot_password.html:6 -msgid "Forgot password" -msgstr "Esqueceu a senha" - -#: app/templates/auth/forgot_password.html:19 -msgid "Reset your password" -msgstr "Reinicie sua senha" - -#: app/templates/auth/forgot_password.html:21 -msgid "" -"Enter your username or email address. If an account matches and email is " -"configured, we will send you a reset link." -msgstr "" -"Digite seu nome de usuário ou endereço de e-mail. Se uma conta corresponder " -"e o e-mail estiver configurado, enviaremos um link de reset." +#~ msgid "Danger (Red)" +#~ msgstr "Perigo (Vermelho)" -#: app/templates/auth/forgot_password.html:27 -msgid "Username or email" -msgstr "Utilizador ou e- mail" +#~ msgid "Warning (Yellow)" +#~ msgstr "Aviso (amarelo)" -#: app/templates/auth/forgot_password.html:30 -msgid "your-username or you@example.com" -msgstr "seu nome de usuário ou você@example.com" +#~ msgid "Info (Cyan)" +#~ msgstr "Informação (Cyan)" -#: app/templates/auth/forgot_password.html:32 -msgid "Send reset link" -msgstr "Enviar o link de reset" +#~ msgid "Bootstrap color class for styling" +#~ msgstr "Classe de cores Bootstrap para estilo" -#: app/templates/auth/forgot_password.html:35 -#: app/templates/auth/reset_password.html:40 -#: app/templates/auth/two_factor.html:35 -msgid "Back to sign in" -msgstr "Voltar para iniciar sessão" - -#: app/templates/auth/login.html:6 app/templates/errors/403.html:27 -msgid "Login" -msgstr "Login" - -#: app/templates/auth/login.html:31 app/templates/setup/initial_setup.html:32 -msgid "Track time. Stay organized." -msgstr "Hora da corrida. Mantenham-se organizados." - -#: app/templates/auth/login.html:47 -msgid "Sign in to your account" -msgstr "Iniciar sessão na sua conta" - -#: app/templates/auth/login.html:50 -msgid "Demo credentials" -msgstr "Credenciais de demonstração" - -#: app/templates/auth/login.html:72 -msgid "Forgot your password?" -msgstr "Esqueceu-se da senha?" - -#: app/templates/auth/login.html:79 -msgid "LDAP authentication is enabled" -msgstr "A autenticação LDAP está habilitada" - -#: app/templates/auth/login.html:82 app/templates/client_portal/login.html:60 -#: app/templates/kiosk/login.html:153 -msgid "Sign in" -msgstr "Iniciar sessão" - -#: app/templates/auth/login.html:85 -msgid "Use the demo credentials above." -msgstr "Use as credenciais de demonstração acima." - -#: app/templates/auth/login.html:87 -msgid "Tip: Enter a new username to create your account." -msgstr "Dica: Digite um novo nome de usuário para criar sua conta." - -#: app/templates/auth/login.html:96 -msgid "Or continue with" -msgstr "Ou continuar com" - -#: app/templates/auth/login.html:101 -msgid "Single Sign-On" -msgstr "Sinal Único" - -#: app/templates/auth/profile.html:6 -msgid "Edit Profile" -msgstr "Editar perfil" - -#: app/templates/auth/profile.html:53 app/templates/user/profile.html:75 -msgid "Member Since" -msgstr "Membro desde" - -#: app/templates/auth/emails/password_reset.html:12 -#: app/templates/auth/reset_password.html:6 -msgid "Reset password" -msgstr "Reiniciar senha" - -#: app/templates/auth/reset_password.html:19 -msgid "Choose a new password" -msgstr "Escolha uma nova senha" - -#: app/templates/auth/reset_password.html:21 -msgid "Enter a new password for your account." -msgstr "Digite uma nova senha para sua conta." - -#: app/templates/auth/reset_password.html:27 -msgid "New password" -msgstr "Nova senha" - -#: app/templates/auth/reset_password.html:30 -msgid "At least 8 characters" -msgstr "Pelo menos 8 caracteres" - -#: app/templates/auth/reset_password.html:32 -msgid "Confirm password" -msgstr "Confirmar senha" - -#: app/templates/auth/reset_password.html:35 -msgid "Repeat your new password" -msgstr "Repita sua nova senha" - -#: app/templates/auth/reset_password.html:37 -msgid "Update password" -msgstr "Actualizar a senha" - -#: app/templates/auth/two_factor.html:19 -msgid "Enter authentication code" -msgstr "Indique o código de autenticação" - -#: app/templates/auth/two_factor.html:21 -msgid "Open your authenticator app and enter the 6-digit code." -msgstr "Abra seu aplicativo autenticador e digite o código de 6 dígitos." - -#: app/templates/auth/two_factor.html:27 -#: app/templates/inventory/suppliers/list.html:41 -#: app/templates/inventory/suppliers/list.html:53 -#: app/templates/inventory/suppliers/view.html:26 -#: app/templates/inventory/warehouses/list.html:22 -#: app/templates/inventory/warehouses/list.html:33 -#: app/templates/inventory/warehouses/view.html:26 -#: app/templates/workforce/dashboard.html:255 -msgid "Code" -msgstr "Código" - -#: app/templates/auth/two_factor.html:32 -msgid "Verify" -msgstr "Verificar" - -#: app/templates/auth/two_factor_setup.html:10 -msgid "" -"Add an extra layer of security to your account using a TOTP authenticator " -"app (Google Authenticator, Authy, 1Password, etc.)." -msgstr "" -"Adicione uma camada extra de segurança à sua conta usando um aplicativo de " -"autenticação TOTP (Google Authenticator, Authy, 1Password, etc.)." +#~ msgid "Mark as Complete State" +#~ msgstr "Marcar como estado completo" -#: app/templates/auth/two_factor_setup.html:18 -msgid "Two-factor authentication is enabled for your account." -msgstr "A autenticação de dois fatores está habilitada para sua conta." +#~ msgid "Tasks moved to this column will be marked as completed" +#~ msgstr "As tarefas movidas para esta coluna serão marcadas como concluídas" -#: app/templates/auth/two_factor_setup.html:26 -msgid "Enter a current code to disable" -msgstr "Digite um código atual para desabilitar" +#~ msgid "Create Column" +#~ msgstr "Criar uma Coluna" -#: app/templates/auth/two_factor_setup.html:29 -msgid "Disable 2FA" -msgstr "Desactivar o 2FA" +#~ msgid "Note:" +#~ msgstr "Nota:" -#: app/templates/auth/two_factor_setup.html:34 -msgid "Two-factor authentication is currently disabled." -msgstr "A autenticação de dois fatores está atualmente desabilitada." +#~ msgid "" +#~ "The column will be added at the" +#~ " end of the board. You can " +#~ "reorder columns later from the " +#~ "management page." +#~ msgstr "" +#~ "A coluna será adicionada no final " +#~ "do tabuleiro. Você pode reordenar " +#~ "colunas depois da página de " +#~ "gerenciamento." -#: app/templates/auth/two_factor_setup.html:40 -msgid "A secret will be generated when you enable 2FA." -msgstr "Um segredo será gerado quando você ativar 2FA." +#~ msgid "Edit Kanban Column" +#~ msgstr "Editar a Coluna do Kanban" -#: app/templates/auth/two_factor_setup.html:44 -msgid "1) Add to your authenticator app" -msgstr "1) Adicionar ao seu aplicativo autenticador" +#~ msgid "Modify column settings" +#~ msgstr "Modificar a configuração da coluna" -#: app/templates/auth/two_factor_setup.html:46 -msgid "If you cannot scan a QR code, you can manually enter this secret:" -msgstr "" -"Se você não pode digitalizar um código QR, você pode digitar manualmente " -"este segredo:" +#~ msgid "Edit Kanban Column form" +#~ msgstr "Editar o formulário de coluna do Kanban" -#: app/templates/auth/two_factor_setup.html:52 -msgid "Provisioning URI:" -msgstr "Provisão de URI:" +#~ msgid "The key cannot be changed after creation" +#~ msgstr "A chave não pode ser alterada após a criação" -#: app/templates/auth/two_factor_setup.html:63 -msgid "2) Verify and enable" -msgstr "2) Verificar e ativar" +#~ msgid "This is a project-specific column" +#~ msgstr "Esta é uma coluna específica do projeto" -#: app/templates/auth/two_factor_setup.html:64 -msgid "Enter the 6-digit code" -msgstr "Digite o código de 6 dígitos" +#~ msgid "This is a global column (for all projects)" +#~ msgstr "Esta é uma coluna global (para todos os projetos)" -#: app/templates/auth/two_factor_setup.html:67 -msgid "Enable 2FA" -msgstr "Activar 2FA" +#~ msgid "Preview" +#~ msgstr "Antevisão" -#: app/templates/auth/emails/password_reset.html:9 -msgid "A password reset was requested for your TimeTracker account." -msgstr "Foi solicitada uma redefinição de senha para a sua conta TimeTracker." +#~ msgid "Inactive columns are hidden from the kanban board" +#~ msgstr "Colunas inativas estão escondidas do tabuleiro do kanban" -#: app/templates/auth/emails/password_reset.html:16 -msgid "" -"If the button does not work, copy and paste this link into your browser:" -msgstr "Se o botão não funcionar, copie e cole este link em seu navegador:" - -#: app/templates/auth/emails/password_reset.html:20 -msgid "If you did not request this, you can ignore this email." -msgstr "Se você não solicitou isso, você pode ignorar este e-mail." - -#: app/templates/budget/dashboard.html:12 -msgid "Budget Alerts & Forecasting" -msgstr "Alertas e previsões orçamentais" - -#: app/templates/budget/dashboard.html:13 -msgid "Monitor project budgets and forecast completion" -msgstr "Monitorizar os orçamentos dos projetos e a conclusão das previsões" - -#: app/templates/budget/dashboard.html:30 -msgid "Unacknowledged Alerts" -msgstr "Alertas não reconhecidos" - -#: app/templates/budget/dashboard.html:39 -msgid "Critical Alerts" -msgstr "Alertas críticos" - -#: app/templates/budget/dashboard.html:48 -msgid "Projects with Budgets" -msgstr "Projectos com orçamentos" - -#: app/templates/budget/dashboard.html:57 -msgid "Warning Alerts" -msgstr "Alertas" - -#: app/templates/budget/dashboard.html:66 -#: app/templates/budget/project_detail.html:259 -msgid "Active Alerts" -msgstr "Alertas Ativos" - -#: app/templates/budget/dashboard.html:96 -#: app/templates/budget/project_detail.html:284 -msgid "Acknowledge" -msgstr "Confirmar" - -#: app/templates/budget/dashboard.html:110 -msgid "Project Budget Status" -msgstr "Situação do Orçamento do Projecto" - -#: app/templates/budget/dashboard.html:117 -#: app/templates/projects/_projects_list.html:109 -#: app/templates/projects/dashboard.html:130 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/list.html:190 -msgid "Budget" -msgstr "Orçamento" - -#: app/templates/budget/dashboard.html:118 -#: app/templates/budget/project_detail.html:39 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:264 -msgid "Consumed" -msgstr "Consumido" - -#: app/templates/budget/dashboard.html:119 -#: app/templates/budget/project_detail.html:48 -#: app/templates/main/dashboard.html:437 -#: app/templates/projects/dashboard.html:134 -#: app/templates/projects/dashboard.html:373 -#: app/templates/projects/view.html:268 -#: app/templates/workforce/dashboard.html:123 -msgid "Remaining" -msgstr "Restante" - -#: app/templates/budget/dashboard.html:120 -#: app/templates/projects/view.html:433 app/templates/projects/view.html:473 -#: app/templates/tasks/_kanban.html:112 app/templates/tasks/_kanban.html:1281 -#: app/templates/tasks/_tasks_list.html:93 app/templates/tasks/edit.html:159 -#: app/templates/tasks/my_tasks.html:312 app/templates/tasks/overdue.html:62 -#: app/templates/weekly_goals/index.html:95 -#: app/templates/weekly_goals/index.html:205 -#: app/templates/weekly_goals/view.html:82 -msgid "Progress" -msgstr "Progresso" - -#: app/templates/budget/dashboard.html:137 -#: app/templates/projects/view.html:271 -msgid "over" -msgstr "sobre" - -#: app/templates/budget/dashboard.html:153 -#: app/templates/budget/project_detail.html:48 -#: app/templates/budget/project_detail.html:65 app/utils/i18n_helpers.py:268 -msgid "Over Budget" -msgstr "Over Budget" - -#: app/templates/budget/dashboard.html:157 -#: app/templates/budget/project_detail.html:66 -#: app/templates/projects/view.html:283 app/utils/i18n_helpers.py:275 -#: app/utils/i18n_helpers.py:281 -msgid "Critical" -msgstr "Crítico" - -#: app/templates/budget/dashboard.html:165 -#: app/templates/budget/project_detail.html:68 -#: app/templates/projects/view.html:291 -msgid "Healthy" -msgstr "Saudável" - -#: app/templates/budget/dashboard.html:180 -#: app/templates/budget/dashboard.html:197 -msgid "No projects with budgets found" -msgstr "Nenhum projeto com orçamentos encontrados" - -#: app/templates/budget/dashboard.html:237 -#: app/templates/budget/project_detail.html:409 -msgid "Alert acknowledged successfully" -msgstr "Alerta reconhecido com sucesso" - -#: app/templates/budget/dashboard.html:242 -#: app/templates/budget/project_detail.html:414 -msgid "Failed to acknowledge alert" -msgstr "Não foi possível reconhecer o alerta" - -#: app/templates/budget/project_detail.html:8 -msgid "Budget Analysis & Forecasting" -msgstr "Análise e previsão do orçamento" - -#: app/templates/budget/project_detail.html:13 -msgid "Back to Dashboard" -msgstr "Voltar ao Painel" - -#: app/templates/budget/project_detail.html:17 -#: app/templates/projects/_projects_list.html:146 -#: app/templates/projects/list.html:228 app/templates/quotes/view.html:182 -msgid "View Project" -msgstr "Ver Projeto" - -#: app/templates/budget/project_detail.html:30 -#: app/templates/projects/view.html:260 -msgid "Total Budget" -msgstr "Orçamento total" - -#: app/templates/budget/project_detail.html:80 -msgid "Burn Rate Analysis" -msgstr "Análise da Taxa de Queimaduras" - -#: app/templates/budget/project_detail.html:85 -msgid "Daily Burn Rate" -msgstr "Taxa diária de queimaduras" - -#: app/templates/budget/project_detail.html:89 -msgid "Weekly Burn Rate" -msgstr "Taxa de Queimaduras Semanais" - -#: app/templates/budget/project_detail.html:93 -msgid "Monthly Burn Rate" -msgstr "Taxa de Queimagem Mensal" - -#: app/templates/budget/project_detail.html:97 -msgid "Period Total" -msgstr "Período Total" - -#: app/templates/budget/project_detail.html:103 -msgid "Based on last" -msgstr "Baseado no último" - -#: app/templates/budget/project_detail.html:103 -#: app/templates/inventory/suppliers/view.html:141 -msgid "days" -msgstr "dias" - -#: app/templates/budget/project_detail.html:108 -msgid "No burn rate data available" -msgstr "Nenhum dado de taxa de gravação disponível" - -#: app/templates/budget/project_detail.html:117 -msgid "Completion Estimate" -msgstr "Estimativa de conclusão" - -#: app/templates/budget/project_detail.html:122 -msgid "Estimated Completion Date" -msgstr "Data de conclusão estimada" - -#: app/templates/budget/project_detail.html:128 -msgid "days remaining" -msgstr "dias restantes" - -#: app/templates/budget/project_detail.html:133 -msgid "Confidence Level" -msgstr "Nível de Confiança" - -#: app/templates/budget/project_detail.html:149 -msgid "No completion estimate available" -msgstr "Nenhuma estimativa de conclusão disponível" - -#: app/templates/budget/project_detail.html:160 -msgid "Cost Trend Analysis" -msgstr "Análise de tendências de custos" - -#: app/templates/budget/project_detail.html:168 -msgid "Average" -msgstr "Média" - -#: app/templates/budget/project_detail.html:185 -msgid "Resource Allocation" -msgstr "Alocação de Recursos" - -#: app/templates/budget/project_detail.html:193 -msgid "Total Cost" -msgstr "Custo total" - -#: app/templates/budget/project_detail.html:197 -#: app/templates/client_portal/projects.html:73 -#: app/templates/main/help.html:205 -#: app/templates/project_templates/create_project.html:36 -#: app/templates/project_templates/view.html:44 -#: app/templates/projects/create.html:71 app/templates/projects/edit.html:65 -#: app/templates/quotes/accept.html:33 -msgid "Hourly Rate" -msgstr "Taxa por hora" - -#: app/templates/budget/project_detail.html:205 -msgid "Team Member" -msgstr "Membro da Equipa" - -#: app/templates/budget/project_detail.html:207 -#: app/templates/budget/project_detail.html:314 -#: app/templates/budget/project_detail.html:344 -#: app/templates/inventory/purchase_orders/form.html:149 -msgid "Cost" -msgstr "Custo" - -#: app/templates/budget/project_detail.html:208 -msgid "Hours %" -msgstr "Horas %" - -#: app/templates/budget/project_detail.html:209 -msgid "Cost %" -msgstr "Custo %" - -#: app/templates/budget/project_detail.html:210 -#: app/templates/clients/view.html:586 -#: app/templates/components/support_modal.html:29 -#: app/templates/projects/time_entries_overview.html:23 -#: app/templates/timer/time_entries_overview.html:25 -msgid "Entries" -msgstr "Entradas" - -#: app/templates/calendar/event_detail.html:41 -msgid "Date & Time" -msgstr "Data e hora" - -#: app/templates/calendar/event_detail.html:77 -#: app/templates/calendar/event_form.html:94 -#: app/templates/inventory/stock_items/view.html:133 -#: app/templates/inventory/stock_items/view.html:152 -#: app/templates/inventory/stock_levels/item.html:27 -#: app/templates/inventory/stock_levels/item.html:44 -#: app/templates/inventory/stock_levels/list.html:52 -#: app/templates/inventory/stock_levels/list.html:72 -#: app/templates/inventory/warehouses/view.html:89 -#: app/templates/inventory/warehouses/view.html:109 -msgid "Location" -msgstr "Localização" - -#: app/templates/calendar/event_detail.html:136 -#: app/templates/calendar/event_form.html:109 -#: app/templates/calendar/event_form.html:155 -msgid "Reminder" -msgstr "Lembrete" - -#: app/templates/calendar/event_detail.html:139 -msgid "minutes before" -msgstr "minutos antes" - -#: app/templates/calendar/event_detail.html:141 -msgid "hours before" -msgstr "horas antes" - -#: app/templates/calendar/event_detail.html:143 -msgid "days before" -msgstr "dias antes" - -#: app/templates/calendar/event_detail.html:155 -#: app/templates/timer/calendar.html:43 -msgid "Recurring" -msgstr "Recorrendo" - -#: app/templates/calendar/event_detail.html:159 -msgid "Until" -msgstr "Até" - -#: app/templates/calendar/event_detail.html:173 -#: app/templates/client_portal/issue_detail.html:89 -#: app/templates/issues/view.html:171 -msgid "Last Updated" -msgstr "Última atualização" - -#: app/templates/calendar/event_detail.html:182 -msgid "Back to Calendar" -msgstr "Voltar ao Calendário" - -#: app/templates/calendar/event_detail.html:191 -msgid "Delete Event" -msgstr "Apagar o Evento" - -#: app/templates/calendar/event_detail.html:192 -msgid "" -"Are you sure you want to delete this event? This action cannot be undone." -msgstr "" -"Tem a certeza de que deseja apagar este evento? Esta acção não pode ser " -"desfeita." - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -msgid "Edit Event" -msgstr "Editar evento" - -#: app/templates/calendar/event_form.html:2 -#: app/templates/calendar/event_form.html:10 -#: app/templates/calendar/view.html:49 app/templates/timer/calendar.html:40 -msgid "New Event" -msgstr "Novo Evento" - -#: app/templates/calendar/event_form.html:19 -#: app/templates/client_portal/new_issue.html:26 -#: app/templates/client_portal/quote_detail.html:34 -#: app/templates/client_portal/quotes.html:26 -#: app/templates/client_portal/quotes.html:42 -#: app/templates/contacts/form.html:52 app/templates/contacts/list.html:28 -#: app/templates/contacts/list.html:46 app/templates/contacts/view.html:48 -#: app/templates/expenses/dashboard.html:190 -#: app/templates/expenses/list.html:297 app/templates/invoices/edit.html:160 -#: app/templates/issues/edit.html:24 app/templates/issues/list.html:93 -#: app/templates/issues/list.html:106 app/templates/issues/new.html:24 -#: app/templates/leads/form.html:50 app/templates/leads/view.html:61 -#: app/templates/quotes/_edit_quote_form_scripts.html:198 -#: app/templates/quotes/_quotes_list.html:34 -#: app/templates/quotes/_quotes_list.html:51 -#: app/templates/quotes/accept.html:18 app/templates/quotes/create.html:36 -#: app/templates/quotes/create.html:94 app/templates/quotes/edit.html:32 -#: app/templates/quotes/edit.html:142 app/templates/quotes/edit.html:157 -#: app/templates/timer/calendar.html:850 -#: app/utils/pdf_generator_fallback.py:552 -msgid "Title" -msgstr "Título" - -#: app/templates/calendar/event_form.html:40 app/templates/gantt/view.html:37 -#: app/templates/import_export/index.html:225 -#: app/templates/import_export/index.html:263 -#: app/templates/projects/time_entries_overview.html:31 -#: app/templates/reports/builder.html:86 -#: app/templates/reports/time_entries_report.html:12 -#: app/templates/timer/bulk_entry.html:137 -#: app/templates/timer/calendar.html:166 -#: app/templates/timer/edit_timer.html:260 -#: app/templates/timer/manual_entry.html:97 -#: app/templates/timer/time_entries_overview.html:79 -msgid "Start Date" -msgstr "Data de início" - -#: app/templates/calendar/event_form.html:50 -#: app/templates/reports/user_report.html:86 -#: app/templates/timer/bulk_entry.html:170 -#: app/templates/timer/calendar.html:170 -#: app/templates/timer/edit_timer.html:268 -#: app/templates/timer/manual_entry.html:107 -#: app/templates/timer/view_timer.html:28 -msgid "Start Time" -msgstr "Hora de início" - -#: app/templates/calendar/event_form.html:61 app/templates/gantt/view.html:41 -#: app/templates/import_export/index.html:230 -#: app/templates/import_export/index.html:268 -#: app/templates/projects/time_entries_overview.html:35 -#: app/templates/recurring_tasks/form.html:79 -#: app/templates/reports/builder.html:90 -#: app/templates/reports/time_entries_report.html:18 -#: app/templates/timer/bulk_entry.html:141 -#: app/templates/timer/calendar.html:177 -#: app/templates/timer/edit_timer.html:280 -#: app/templates/timer/manual_entry.html:101 -#: app/templates/timer/time_entries_overview.html:83 -msgid "End Date" -msgstr "Data de Fim" - -#: app/templates/calendar/event_form.html:71 -#: app/templates/reports/user_report.html:87 -#: app/templates/timer/bulk_entry.html:179 -#: app/templates/timer/calendar.html:181 -#: app/templates/timer/edit_timer.html:288 -#: app/templates/timer/manual_entry.html:111 -#: app/templates/timer/view_timer.html:34 -msgid "End Time" -msgstr "Hora do fim" - -#: app/templates/calendar/event_form.html:88 -msgid "All Day Event" -msgstr "Evento Todo o Dia" - -#: app/templates/calendar/event_form.html:104 -msgid "Event Type" -msgstr "Tipo de Evento" - -#: app/templates/calendar/event_form.html:107 -#: app/templates/contacts/communication_form.html:32 -#: app/templates/deals/activity_form.html:30 -#: app/templates/leads/activity_form.html:30 -msgid "Meeting" -msgstr "Reunião" - -#: app/templates/calendar/event_form.html:108 -msgid "Appointment" -msgstr "Nomeação" - -#: app/templates/calendar/event_form.html:110 -msgid "Deadline" -msgstr "Prazo" - -#: app/templates/calendar/event_form.html:118 -#: app/templates/calendar/event_form.html:131 -#: app/templates/calendar/event_form.html:144 -msgid "-- None --" -msgstr "- Nenhum --" - -#: app/templates/calendar/event_form.html:157 -msgid "No reminder" -msgstr "Sem lembrete" - -#: app/templates/calendar/event_form.html:158 -msgid "5 minutes before" -msgstr "5 minutos antes" - -#: app/templates/calendar/event_form.html:159 -msgid "15 minutes before" -msgstr "15 minutos antes" - -#: app/templates/calendar/event_form.html:160 -msgid "30 minutes before" -msgstr "30 minutos antes" - -#: app/templates/calendar/event_form.html:161 -msgid "1 hour before" -msgstr "1 hora antes" - -#: app/templates/calendar/event_form.html:162 -msgid "1 day before" -msgstr "1 dia antes" - -#: app/templates/calendar/event_form.html:168 -#: app/templates/kanban/columns.html:51 -#: app/templates/kanban/create_column.html:60 -#: app/templates/kanban/edit_column.html:52 -msgid "Color" -msgstr "Cor" - -#: app/templates/calendar/event_form.html:175 -msgid "Choose a color for this event" -msgstr "Escolha uma cor para este evento" - -#: app/templates/calendar/event_form.html:187 -msgid "Private Event" -msgstr "Evento Privado" - -#: app/templates/calendar/event_form.html:189 -msgid "Private events are only visible to you" -msgstr "Eventos privados só são visíveis para você" - -#: app/templates/calendar/event_form.html:194 -msgid "Recurring Event" -msgstr "Evento recorrente" - -#: app/templates/calendar/event_form.html:203 -msgid "This is a recurring event" -msgstr "Este é um evento recorrente" - -#: app/templates/calendar/event_form.html:209 -msgid "Recurrence Pattern" -msgstr "Padrão de recorrência" - -#: app/templates/calendar/event_form.html:216 -msgid "Use RRULE format (e.g., FREQ=WEEKLY;BYDAY=MO,WE,FR)" -msgstr "Utilizar o formato RRULE (por exemplo, FREQ=WEEKLY;BYDAY=MO,WE,FR)" - -#: app/templates/calendar/event_form.html:220 -msgid "Recurrence End Date" -msgstr "Data de Fim da Recorrência" - -#: app/templates/calendar/event_form.html:234 -msgid "Update Event" -msgstr "Actualizar o Evento" - -#: app/templates/calendar/event_form.html:234 -msgid "Create Event" -msgstr "Criar Evento" - -#: app/templates/calendar/integrations.html:4 -msgid "Calendar Integrations" -msgstr "Integrações de Calendário" - -#: app/templates/calendar/integrations.html:56 -msgid "Last synced" -msgstr "Última sincronização sincronizada" - -#: app/templates/calendar/integrations.html:71 -msgid "Manage Integration" -msgstr "Gerenciar a Integração" - -#: app/templates/calendar/integrations.html:78 -msgid "Are you sure you want to disconnect this integration?" -msgstr "Tem certeza de que deseja desconectar esta integração?" - -#: app/templates/calendar/integrations.html:78 -msgid "Disconnect" -msgstr "Desligar" - -#: app/templates/calendar/integrations.html:91 -msgid "No Calendar Integrations" -msgstr "Sem Integração de Calendários" - -#: app/templates/calendar/integrations.html:92 -msgid "Connect your calendar to automatically sync time entries and events." -msgstr "" -"Conecte seu calendário para sincronizar automaticamente entradas de tempo e " -"eventos." +#~ msgid "System Column:" +#~ msgstr "Coluna do sistema:" -#: app/templates/calendar/integrations.html:93 -#: app/templates/integrations/manage.html:714 -msgid "Connect Google Calendar" -msgstr "Conectar o Google Calendar" +#~ msgid "" +#~ "This is a system column. You can" +#~ " customize its appearance but cannot " +#~ "delete it." +#~ msgstr "" +#~ "Esta é uma coluna do sistema. Você" +#~ " pode personalizar sua aparência, mas " +#~ "não pode excluí-lo." -#: app/templates/calendar/integrations.html:99 -msgid "How Calendar Integration Works" -msgstr "Como funciona a integração do calendário" +#~ msgid "Keyboard Shortcuts (Press ?)" +#~ msgstr "Atalhos de Teclado (Pressione ?)" -#: app/templates/calendar/integrations.html:101 -msgid "Time entries are automatically synced to your calendar" -msgstr "" -"Os itens de tempo são sincronizados automaticamente com o seu calendário" - -#: app/templates/calendar/integrations.html:102 -msgid "Calendar events can be converted to time entries" -msgstr "Os eventos de calendário podem ser convertidos em entradas de tempo" - -#: app/templates/calendar/integrations.html:103 -msgid "Bidirectional sync keeps everything in sync" -msgstr "A sincronização bidirecional mantém tudo em sincronia" - -#: app/templates/calendar/view.html:18 -msgid "View and manage your events, tasks, and time entries" -msgstr "Visualize e gerencie seus eventos, tarefas e entradas de tempo" - -#: app/templates/calendar/view.html:31 app/templates/timer/calendar.html:32 -#: app/templates/user/settings.html:475 -msgid "Day" -msgstr "Dia" - -#: app/templates/calendar/view.html:36 -#: app/templates/reports/week_in_review.html:21 -#: app/templates/timer/calendar.html:33 app/templates/user/settings.html:476 -#: app/templates/weekly_goals/index.html:79 -msgid "Week" -msgstr "Semana" - -#: app/templates/calendar/view.html:41 app/templates/timer/calendar.html:34 -#: app/templates/user/settings.html:477 -msgid "Month" -msgstr "Mês" - -#: app/templates/calendar/view.html:62 app/templates/reports/index.html:76 -#: app/templates/timer/calendar.html:29 -msgid "Today" -msgstr "Hoje" - -#: app/templates/calendar/view.html:90 -msgid "Calendar colors" -msgstr "Cores do calendário" - -#: app/templates/calendar/view.html:106 -msgid "Legend" -msgstr "Legenda" - -#: app/templates/calendar/view.html:123 -msgid "Loading calendar..." -msgstr "Carregando calendário..." - -#: app/templates/calendar/view.html:133 app/templates/timer/calendar.html:807 -msgid "Event Details" -msgstr "Detalhes do evento" - -#: app/templates/calendar/view.html:136 app/templates/timer/calendar.html:220 -#: app/templates/timer/calendar.html:818 -msgid "Go to all details" -msgstr "Ir para todos os detalhes" - -#: app/templates/chat/channel.html:4 app/templates/chat/channel.html:8 -#: app/templates/chat/index.html:4 app/templates/chat/index.html:8 -#: app/templates/chat/index.html:13 -msgid "Team Chat" -msgstr "Conversa em Equipa" - -#: app/templates/chat/channel.html:15 -msgid "Team chat channel" -msgstr "Canal de chat em equipe" - -#: app/templates/chat/channel.html:56 -#: app/templates/components/persistent_chat_widget.html:107 -msgid "Type a message..." -msgstr "Digite uma mensagem..." - -#: app/templates/chat/channel.html:75 -msgid "Channel Info" -msgstr "Informações do Canal" - -#: app/templates/chat/channel.html:84 -msgid "Members" -msgstr "Membros" - -#: app/templates/chat/channel.html:126 -msgid "Channel Settings" -msgstr "Configuração do Canal" - -#: app/templates/chat/channel.html:252 -msgid "Upload Attachment" -msgstr "Enviar o Anexo" - -#: app/templates/chat/channel.html:259 -msgid "Select File" -msgstr "Selecionar arquivo" - -#: app/templates/chat/channel.html:261 -msgid "Maximum file size: 10 MB" -msgstr "Tamanho máximo de arquivo: 10 MB" - -#: app/templates/chat/channel.html:264 -msgid "Selected:" -msgstr "Seleccionado:" - -#: app/templates/chat/channel.html:271 app/templates/clients/view.html:208 -#: app/templates/clients/view.html:235 -#: app/templates/comments/_comment.html:117 -#: app/templates/projects/view.html:335 app/templates/projects/view.html:362 -msgid "Upload" -msgstr "Enviar" - -#: app/templates/chat/channel.html:303 -msgid "Please select a file" -msgstr "Seleccione por favor um ficheiro" - -#: app/templates/chat/channel.html:309 -msgid "File size exceeds 10 MB limit" -msgstr "O tamanho do arquivo excede o limite de 10 MB" - -#: app/templates/chat/channel.html:348 app/templates/chat/channel.html:355 -msgid "Failed to upload attachment" -msgstr "Falha ao enviar o anexo" - -#: app/templates/chat/index.html:14 -msgid "Communicate with your team" -msgstr "Comunicar com sua equipe" - -#: app/templates/chat/index.html:22 -#: app/templates/components/persistent_chat_widget.html:53 -msgid "Channels" -msgstr "Canais" - -#: app/templates/chat/index.html:48 -#: app/templates/components/persistent_chat_widget.html:58 -msgid "Direct Messages" -msgstr "Mensagens Diretas" - -#: app/templates/chat/index.html:89 -#: app/templates/components/persistent_chat_widget.html:71 -msgid "Select a channel to start chatting" -msgstr "Selecione um canal para começar a conversar" - -#: app/templates/chat/index.html:100 -msgid "Create Channel" -msgstr "Criar Canal" - -#: app/templates/chat/index.html:107 -msgid "Channel Name" -msgstr "Nome do Canal" - -#: app/templates/chat/index.html:117 -msgid "Private channel" -msgstr "Canal privado" - -#: app/templates/client_notes/edit.html:3 -#: app/templates/client_notes/edit.html:9 -msgid "Edit Client Note" -msgstr "Editar a Nota do Cliente" - -#: app/templates/client_notes/edit.html:12 app/templates/clients/edit.html:8 -msgid "Back to Client" -msgstr "Voltar ao Cliente" - -#: app/templates/client_notes/edit.html:24 -msgid "Client:" -msgstr "Cliente:" - -#: app/templates/client_notes/edit.html:38 -msgid "Created on" -msgstr "Criado em" - -#: app/templates/client_notes/edit.html:41 app/templates/comments/edit.html:58 -msgid "Last edited on" -msgstr "Última edição em" - -#: app/templates/client_notes/edit.html:54 app/templates/clients/view.html:435 -msgid "Note Content" -msgstr "Conteúdo da Nota" - -#: app/templates/client_notes/edit.html:64 -msgid "Internal note visible only to your team." -msgstr "Nota interna visível apenas para sua equipe." - -#: app/templates/client_notes/edit.html:77 app/templates/clients/view.html:453 -msgid "Mark as important" -msgstr "Marcar como importante" - -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:9 -#: app/templates/client_portal/activity_feed.html:14 -msgid "Activity Feed" -msgstr "Fonte de Actividade" - -#: app/templates/client_portal/activity_feed.html:4 -#: app/templates/client_portal/activity_feed.html:8 -#: app/templates/client_portal/approvals.html:4 -#: app/templates/client_portal/approvals.html:8 -#: app/templates/client_portal/base.html:6 -#: app/templates/client_portal/base.html:13 -#: app/templates/client_portal/base.html:20 -#: app/templates/client_portal/base.html:240 -#: app/templates/client_portal/base.html:324 -#: app/templates/client_portal/dashboard.html:4 -#: app/templates/client_portal/dashboard.html:8 -#: app/templates/client_portal/dashboard.html:13 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:8 -#: app/templates/client_portal/error.html:4 -#: app/templates/client_portal/invoice_detail.html:4 -#: app/templates/client_portal/invoice_detail.html:8 -#: app/templates/client_portal/invoices.html:4 -#: app/templates/client_portal/invoices.html:8 -#: app/templates/client_portal/issue_detail.html:4 -#: app/templates/client_portal/issue_detail.html:8 -#: app/templates/client_portal/issues.html:4 -#: app/templates/client_portal/issues.html:8 -#: app/templates/client_portal/login.html:31 -#: app/templates/client_portal/login.html:38 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:8 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:8 -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:8 -#: app/templates/client_portal/projects.html:4 -#: app/templates/client_portal/projects.html:8 -#: app/templates/client_portal/quote_detail.html:4 -#: app/templates/client_portal/quote_detail.html:8 -#: app/templates/client_portal/quotes.html:4 -#: app/templates/client_portal/quotes.html:8 -#: app/templates/client_portal/reports.html:4 -#: app/templates/client_portal/reports.html:8 -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:29 -#: app/templates/client_portal/time_entries.html:4 -#: app/templates/client_portal/time_entries.html:8 -msgid "Client Portal" -msgstr "Portal do Cliente" - -#: app/templates/client_portal/activity_feed.html:15 -msgid "Recent project activities" -msgstr "Actividades de projectos recentes" - -#: app/templates/client_portal/activity_feed.html:69 -msgid "View details" -msgstr "Ver detalhes" - -#: app/templates/client_portal/activity_feed.html:83 -msgid "No Activity" -msgstr "Nenhuma Atividade" - -#: app/templates/client_portal/activity_feed.html:85 -msgid "" -"No recent activity to display. Activity will appear here as projects are " -"updated and time entries are logged." -msgstr "" -"Nenhuma atividade recente a ser exibida. A actividade irá aparecer aqui à " -"medida que os projectos forem actualizados e as entradas de tempo forem " -"registadas." - -#: app/templates/client_portal/approvals.html:9 -#: app/templates/client_portal/base.html:266 -#: app/templates/client_portal/base.html:351 -msgid "Approvals" -msgstr "Homologação" - -#: app/templates/client_portal/approvals.html:30 -#: app/templates/contacts/communication_form.html:60 -#: app/templates/deals/activity_form.html:37 -#: app/templates/integrations/view.html:57 -#: app/templates/integrations/view.html:88 -#: app/templates/leads/activity_form.html:37 app/utils/i18n_helpers.py:142 -#: app/utils/i18n_helpers.py:153 app/utils/i18n_helpers.py:220 -#: app/utils/i18n_helpers.py:232 -msgid "Pending" -msgstr "Pendente" - -#: app/templates/client_portal/approvals.html:43 app/utils/i18n_helpers.py:143 -#: app/utils/i18n_helpers.py:154 -msgid "Approved" -msgstr "Aprovado" - -#: app/templates/client_portal/approvals.html:53 -#: app/templates/quotes/_quotes_list.html:68 app/templates/quotes/list.html:84 -#: app/templates/quotes/view.html:77 app/utils/i18n_helpers.py:144 -#: app/utils/i18n_helpers.py:155 -msgid "Rejected" -msgstr "Rejeitado" - -#: app/templates/client_portal/approvals.html:63 -#: app/templates/client_portal/invoices.html:30 -#: app/templates/client_portal/issues.html:23 -#: app/templates/client_portal/notifications.html:31 -#: app/templates/components/multi_select.html:82 -#: app/templates/components/multi_select.html:206 -#: app/templates/inventory/movements/list.html:37 -#: app/templates/inventory/purchase_orders/list.html:23 -#: app/templates/inventory/reservations/list.html:22 -#: app/templates/inventory/suppliers/list.html:28 -#: app/templates/issues/list.html:38 app/templates/issues/list.html:49 -#: app/templates/issues/list.html:63 app/templates/issues/list.html:72 -#: app/templates/quotes/list.html:80 -#: app/templates/reports/time_entries_report.html:71 -#: app/templates/timer/time_entries_overview.html:104 -#: app/templates/timer/time_entries_overview.html:112 -msgid "All" -msgstr "Tudo" - -#: app/templates/client_portal/approvals.html:90 -msgid "Requested on" -msgstr "Pedido" - -#: app/templates/client_portal/approvals.html:160 -msgid "Request Comment" -msgstr "Solicitar Comentário" - -#: app/templates/client_portal/approvals.html:172 -#: app/templates/client_portal/notifications.html:108 -#: app/templates/integrations/manage.html:634 -#: app/templates/tasks/my_tasks.html:330 -#: app/templates/weekly_goals/index.html:122 -msgid "View Details" -msgstr "Ver Detalhes" - -#: app/templates/client_portal/approvals.html:186 -msgid "No Approvals" -msgstr "Sem Aprovações" - -#: app/templates/client_portal/approvals.html:189 -msgid "You have no pending time entry approvals. All caught up!" -msgstr "" -"Você não tem nenhuma aprovação de entrada de tempo pendente. Está tudo em " -"dia!" - -#: app/templates/client_portal/approvals.html:191 -msgid "No approvals found for this status." -msgstr "Não foram encontradas aprovações para este estado." - -#: app/templates/client_portal/base.html:277 -#: app/templates/client_portal/base.html:362 -#: app/templates/client_portal/notifications.html:4 -#: app/templates/client_portal/notifications.html:9 -#: app/templates/client_portal/notifications.html:14 -msgid "Notifications" -msgstr "Notificação" - -#: app/templates/client_portal/base.html:284 -#: app/templates/partials/_bottom_nav.html:17 -#: app/templates/partials/_bottom_nav.html:84 -#: app/templates/partials/_bottom_nav.html:88 -#: app/templates/projects/view.html:49 -msgid "More" -msgstr "Mais" - -#: app/templates/client_portal/base.html:290 -#: app/templates/client_portal/base.html:369 -#: app/templates/client_portal/documents.html:4 -#: app/templates/client_portal/documents.html:9 -#: app/templates/client_portal/documents.html:14 -msgid "Documents" -msgstr "Documentos" - -#: app/templates/client_portal/base.html:296 -#: app/templates/client_portal/base.html:375 app/templates/deals/view.html:143 -#: app/templates/leads/view.html:136 -msgid "Activity" -msgstr "Actividade" - -#: app/templates/client_portal/base.html:307 -msgid "Toggle menu" -msgstr "Alternar o menu" - -#: app/templates/client_portal/base.html:418 -msgid "Approval update" -msgstr "Actualização da homologação" - -#: app/templates/client_portal/base.html:418 -msgid "A time entry approval was requested." -msgstr "Foi solicitada uma autorização de entrada no tempo." - -#: app/templates/client_portal/base.html:418 -msgid "An approval was updated." -msgstr "Foi actualizada uma aprovação." - -#: app/templates/client_portal/dashboard.html:14 -#, python-format -msgid "Welcome, %(client_name)s" -msgstr "" +#~ msgid "Show keyboard shortcuts" +#~ msgstr "Mostrar atalhos de teclado" -#: app/templates/client_portal/dashboard.html:21 -#: app/templates/client_portal/dashboard.html:67 -msgid "Customize dashboard" -msgstr "Personalizar painel" +#~ msgid "Toggle dark mode" +#~ msgstr "Alternar o modo escuro" -#: app/templates/client_portal/dashboard.html:68 -msgid "Choose which widgets to show and their order." -msgstr "Escolha quais widgets mostrar e sua ordem." +#~ msgid "Logout from kiosk mode" +#~ msgstr "Sair do modo quiosque" -#: app/templates/client_portal/dashboard.html:74 -msgid "Statistics cards" -msgstr "Cartões estatísticos" +#~ msgid "Scan" +#~ msgstr "Digitalizar" -#: app/templates/client_portal/dashboard.html:75 -msgid "Pending actions" -msgstr "Acções pendentes" +#~ msgid "Adjust Stock" +#~ msgstr "Ajustar o monte" -#: app/templates/client_portal/dashboard.html:77 -msgid "Recent invoices" -msgstr "Facturas recentes" +#~ msgid "Close keyboard shortcuts" +#~ msgstr "Fechar atalhos de teclado" -#: app/templates/client_portal/dashboard.html:78 -msgid "Recent time entries" -msgstr "Entradas de tempo recentes" +#~ msgid "Scan Barcode or Enter SKU" +#~ msgstr "Digitalizar código de barras ou inserir SKU" -#: app/templates/client_portal/dashboard.html:127 -msgid "Select at least one widget." -msgstr "Selecione pelo menos um widget." +#~ msgid "Use a barcode scanner or type the SKU manually" +#~ msgstr "Use um scanner de código de barras ou digite o SKU manualmente" -#: app/templates/client_portal/dashboard.html:147 -msgid "Failed to save." -msgstr "Não foi possível salvar." +#~ msgid "Scan barcode or enter SKU..." +#~ msgstr "Escanear código de barras ou inserir SKU..." -#: app/templates/client_portal/documents.html:15 -msgid "View and download project documents" -msgstr "Ver e baixar documentos do projeto" +#~ msgid "Barcode or SKU input" +#~ msgstr "Código de barras ou entrada SKU" -#: app/templates/client_portal/documents.html:41 -msgid "Client Document" -msgstr "Documento do Cliente" +#~ msgid "Use Camera to Scan" +#~ msgstr "Usar a câmera para verificar" -#: app/templates/client_portal/documents.html:67 -msgid "Download" -msgstr "Transferir" +#~ msgid "Open camera scanner" +#~ msgstr "Abrir o scanner da câmara" -#: app/templates/client_portal/documents.html:80 -msgid "No Documents" -msgstr "Sem Documentos" +#~ msgid "Close camera scanner" +#~ msgstr "Fechar o scanner da câmera" -#: app/templates/client_portal/documents.html:82 -msgid "" -"No documents have been shared with you yet. Documents will appear here once " -"they are uploaded and made visible to clients." -msgstr "" -"Ainda não foram partilhados documentos consigo. Os documentos aparecerão " -"aqui assim que forem enviados e tornados visíveis para os clientes." - -#: app/templates/client_portal/error.html:18 -msgid "An error occurred" -msgstr "Ocorreu um erro" - -#: app/templates/client_portal/error.html:47 app/templates/errors/400.html:23 -#: app/templates/errors/403.html:24 app/templates/errors/404.html:21 -#: app/templates/errors/500.html:24 app/templates/errors/generic.html:24 -#: app/templates/errors/generic.html:42 app/templates/main/help.html:538 -msgid "Go to Dashboard" -msgstr "Ir para o Painel" - -#: app/templates/client_portal/error.html:52 -msgid "Login to Client Portal" -msgstr "Entrar no Portal do Cliente" - -#: app/templates/client_portal/error.html:59 app/templates/errors/400.html:26 -#: app/templates/errors/404.html:24 app/templates/errors/generic.html:28 -#: app/templates/errors/generic.html:45 -msgid "Go Back" -msgstr "Voltar" - -#: app/templates/client_portal/error.html:69 -msgid "" -"If you believe you should have access to the client portal, please contact " -"your administrator or use the login link above." -msgstr "" -"Se você acredita que deve ter acesso ao portal do cliente, entre em contato " -"com seu administrador ou use o link de login acima." - -#: app/templates/client_portal/invoice_detail.html:16 -#: app/templates/client_portal/invoice_detail.html:33 -#: app/templates/payments/create.html:44 -msgid "Invoice Details" -msgstr "Detalhes da fatura" - -#: app/templates/client_portal/invoice_detail.html:34 -#: app/templates/client_portal/invoices.html:72 -#: app/templates/invoices/edit.html:305 -#: app/templates/invoices/pdf_default.html:57 -#: app/templates/recurring_invoices/view.html:108 -#: app/utils/pdf_generator.py:1127 -msgid "Issue Date" -msgstr "Data de emissão" - -#: app/templates/client_portal/invoice_detail.html:45 -#, python-format -msgid "This invoice is %(days)d days overdue." -msgstr "" +#~ msgid "Close Camera" +#~ msgstr "Fechar câmera" + +#~ msgid "Decrease quantity" +#~ msgstr "Diminuir a quantidade" + +#~ msgid "Adjustment quantity" +#~ msgstr "Quantidade de ajustamento" + +#~ msgid "Increase quantity" +#~ msgstr "Aumentar a quantidade" + +#~ msgid "Kiosk adjustment" +#~ msgstr "Ajuste do quiosque" + +#~ msgid "Physical count" +#~ msgstr "Contagem física" + +#~ msgid "Found" +#~ msgstr "Encontrado" + +#~ msgid "Damaged" +#~ msgstr "Danos" + +#~ msgid "Apply stock adjustment" +#~ msgstr "Aplicar o ajustamento das existências" + +#~ msgid "Apply Adjustment" +#~ msgstr "Aplicar o Ajuste" + +#~ msgid "Undo last adjustment" +#~ msgstr "Desfazer o último ajuste" + +#~ msgid "Undo Last Adjustment" +#~ msgstr "Desfazer o Último Ajuste" + +#~ msgid "Transfer quantity" +#~ msgstr "Quantidade de transferência" + +#~ msgid "Transfer stock" +#~ msgstr "Unidade populacional de transferência" + +#~ msgid "Transfer Stock" +#~ msgstr "Unidade populacional de transferências" + +#~ msgid "Stop timer" +#~ msgstr "Parar o temporizador" + +#~ msgid "Stop Timer" +#~ msgstr "Parar o Temporizador" + +#~ msgid "Select project..." +#~ msgstr "Selecionar projeto..." + +#~ msgid "No projects available" +#~ msgstr "Nenhum projeto disponível" + +#~ msgid "No active projects found. Please create a project first." +#~ msgstr "Nenhum projeto ativo encontrado. Crie um projeto primeiro." + +#~ msgid "No task" +#~ msgstr "Nenhuma tarefa" + +#~ msgid "Tasks will load after selecting a project" +#~ msgstr "As tarefas serão carregadas após selecionar um projeto" + +#~ msgid "What are you working on?" +#~ msgstr "Em que estás a trabalhar?" + +#~ msgid "Start timer" +#~ msgstr "Temporizador inicial" + +#~ msgid "Recent Items" +#~ msgstr "Itens Recentes" + +#~ msgid "Kiosk Login" +#~ msgstr "Início do Kiosk" + +#~ msgid "Quick access for warehouse operations" +#~ msgstr "Acesso rápido para operações de armazém" + +#~ msgid "Barcode scanning" +#~ msgstr "Varredura de código de barras" + +#~ msgid "Stock management" +#~ msgstr "Gestão das existências" + +#~ msgid "Time tracking" +#~ msgstr "Seguimento do tempo" + +#~ msgid "Sign in to Kiosk Mode" +#~ msgstr "Iniciar sessão no Modo Kiosk" + +#~ msgid "Select your username to continue" +#~ msgstr "Selecione seu nome de usuário para continuar" + +#~ msgid "Toggle Theme" +#~ msgstr "Alternar tema" + +#~ msgid "Select User" +#~ msgstr "Selecionar usuário" + +#~ msgid "your-username" +#~ msgstr "seu nome de usuário" + +#~ msgid "Standard Login" +#~ msgstr "Login Padrão" + +#~ msgid "Convert to Client" +#~ msgstr "Converter para Cliente" + +#~ msgid "" +#~ "This will create a new client and" +#~ " primary contact from this lead, then" +#~ " mark the lead as converted." +#~ msgstr "" +#~ "Isto irá criar um novo cliente e" +#~ " contato primário a partir deste " +#~ "lead, em seguida, marque o lead " +#~ "como convertido." + +#~ msgid "Lead summary" +#~ msgstr "Resumo do chumbo" + +#~ msgid "Convert to Deal" +#~ msgstr "Converter para Deal" + +#~ msgid "Source" +#~ msgstr "Origem" + +#~ msgid "Website, referral, ad..." +#~ msgstr "Site, referência, anúncio..." + +#~ msgid "Lead Score" +#~ msgstr "Pontuação Principal" + +#~ msgid "Estimated Value" +#~ msgstr "Valor estimado" + +#~ msgid "Save Lead" +#~ msgstr "Gravar o Chumbo" + +#~ msgid "Name, company, email..." +#~ msgstr "Nome, empresa, e-mail..." + +#~ msgid "All Statuses" +#~ msgstr "Todos os estados" + +#~ msgid "Website, referral..." +#~ msgstr "Website, referência..." + +#~ msgid "Score" +#~ msgstr "Pontuação" + +#~ msgid "No leads found" +#~ msgstr "Nenhuma pista encontrada" + +#~ msgid "Create First Lead" +#~ msgstr "Criar o Primeiro Lead" + +#~ msgid "Mark this lead as lost?" +#~ msgstr "Marcar esta pista como perdida?" + +#~ msgid "Mark Lost" +#~ msgstr "Marcar Perdido" + +#~ msgid "Lead" +#~ msgstr "Chumbo" + +#~ msgid "No contact details yet" +#~ msgstr "Nenhum contacto ainda" + +#~ msgid "Lead Details" +#~ msgstr "Detalhes do Guia" + +#~ msgid "Professional time tracking and project management" +#~ msgstr "Monitoramento de tempo profissional e gerenciamento de projetos" + +#~ msgid "" +#~ "A comprehensive web-based time tracking" +#~ " application built with Flask, featuring" +#~ " project management, client organization, " +#~ "task management, invoicing, and advanced " +#~ "analytics." +#~ msgstr "" +#~ "Um aplicativo abrangente de monitoramento " +#~ "de tempo baseado na web construído " +#~ "com o Flask, com gerenciamento de " +#~ "projetos, organização de clientes, " +#~ "gerenciamento de tarefas, faturamento e " +#~ "análises avançadas." + +#~ msgid "Invoicing" +#~ msgstr "Faturação" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "You can donate or buy a supporter" +#~ " license — features are never locked." +#~ msgstr "" +#~ "TimeTracker é livre e código aberto. " +#~ "Você pode doar ou comprar uma " +#~ "licença de suporte — os recursos " +#~ "nunca são bloqueados." + +#~ msgid "Smart Timers" +#~ msgstr "Temporizadores Inteligentes" + +#~ msgid "Real-time tracking with idle detection and live updates" +#~ msgstr "Monitoramento em tempo real com detecção ociosa e atualizações ao vivo" + +#~ msgid "Client Management" +#~ msgstr "Gestão de Clientes" + +#~ msgid "Organize clients with contacts, rates, and project relations" +#~ msgstr "Organize clientes com contatos, tarifas e relações de projeto" + +#~ msgid "Task System" +#~ msgstr "Sistema de tarefas" + +#~ msgid "Break down projects into tasks with progress tracking" +#~ msgstr "Quebrar projetos em tarefas com acompanhamento de progresso" + +#~ msgid "PDF Invoices" +#~ msgstr "Faturas PDF" + +#~ msgid "Generate professional invoices from tracked time" +#~ msgstr "Gerar faturas profissionais de tempo rastreado" + +#~ msgid "Core Features" +#~ msgstr "Características Principais" + +#~ msgid "Start/stop timers with project and task association" +#~ msgstr "Start/stop timers com associação de projeto e tarefa" + +#~ msgid "Manual time entry with notes and tags" +#~ msgstr "Entrada de tempo manual com notas e etiquetas" + +#~ msgid "Client and project organization" +#~ msgstr "Organização do cliente e do projecto" + +#~ msgid "Role-based access and user profiles" +#~ msgstr "Acesso baseado em funções e perfis de utilizador" + +#~ msgid "Advanced Features" +#~ msgstr "Recursos Avançados" + +#~ msgid "Branded PDF invoicing with tax and payment tracking" +#~ msgstr "Marca PDF facturação com imposto e acompanhamento de pagamentos" + +#~ msgid "Visual analytics and detailed reporting" +#~ msgstr "Análise visual e relatórios detalhados" + +#~ msgid "REST API for integrations" +#~ msgstr "API REST para integrações" + +#~ msgid "PWA capabilities and mobile-friendly UI" +#~ msgstr "Capacidades de PWA e interface móvel" + +#~ msgid "Platform Support" +#~ msgstr "Suporte à Plataforma" + +#~ msgid "Web Application" +#~ msgstr "Aplicação Web" + +#~ msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" +#~ msgstr "Navegadores de secretária (Chrome, Firefox, Safari, Edge)" + +#~ msgid "Mobile responsive design" +#~ msgstr "Design móvel responsivo" + +#~ msgid "Progressive Web App (PWA)" +#~ msgstr "Aplicação Web Progressiva (PWA)" + +#~ msgid "Touch-friendly tablet interface" +#~ msgstr "Interface de tablet amigável ao toque" + +#~ msgid "Operating Systems" +#~ msgstr "Sistemas operativos" + +#~ msgid "Windows, macOS, Linux" +#~ msgstr "Windows, macOS, Linux" + +#~ msgid "Android and iOS (browser)" +#~ msgstr "Android e iOS (browser)" + +#~ msgid "Raspberry Pi support" +#~ msgstr "Apoio Pi framboesa" + +#~ msgid "Dockerized deployment" +#~ msgstr "Implementação acoplada" + +#~ msgid "Database Support" +#~ msgstr "Suporte à Base de Dados" + +#~ msgid "PostgreSQL (recommended)" +#~ msgstr "PostgreSQL (recomendado)" + +#~ msgid "SQLite (dev/test)" +#~ msgstr "SQLite (dev/test)" + +#~ msgid "Automatic migrations with Flask-Migrate" +#~ msgstr "Migrações automáticas com Flask-Migrate" + +#~ msgid "Backup and restoration tools" +#~ msgstr "Ferramentas de backup e restauração" + +#~ msgid "Technical Specifications" +#~ msgstr "Especificações técnicas" + +#~ msgid "Technology Stack" +#~ msgstr "Pilha de Tecnologia" + +#~ msgid "Backend" +#~ msgstr "Infraestrutura" + +#~ msgid "Frontend" +#~ msgstr "Frontend" + +#~ msgid "Deployment" +#~ msgstr "Implantação" + +#~ msgid "Key Capabilities" +#~ msgstr "Capacidades de Chave" + +#~ msgid "Real-time" +#~ msgstr "Tempo real" + +#~ msgid "i18n" +#~ msgstr "i18n" + +#~ msgid "Open Source & Community" +#~ msgstr "& Comunidade de Código Aberto" + +#~ msgid "Open Source Benefits" +#~ msgstr "Benefícios de Código Aberto" + +#~ msgid "Full source code available on GitHub" +#~ msgstr "Código fonte completo disponível no GitHub" + +#~ msgid "Licensed under GPL v3.0" +#~ msgstr "Licenciado sob GPL v3.0" + +#~ msgid "Community-driven development" +#~ msgstr "Desenvolvimento comunitário" + +#~ msgid "Transparent issue tracking and bug reports" +#~ msgstr "Monitoramento transparente de problemas e relatórios de erros" + +#~ msgid "Deployment Options" +#~ msgstr "Opções de implantação" + +#~ msgid "Docker images (GHCR)" +#~ msgstr "Imagens de acoplagem (GHCR)" + +#~ msgid "Self-hosted deployment with full control" +#~ msgstr "Implementação automática com controle total" + +#~ msgid "Cloud-ready with Compose configs" +#~ msgstr "Pronto para a nuvem com configurações Compose" + +#~ msgid "View on GitHub" +#~ msgstr "Ver no GitHub" + +#~ msgid "Support updates" +#~ msgstr "Atualizações de suporte" + +#~ msgid "Support TimeTracker Development" +#~ msgstr "Desenvolvimento do Rastreador de Tempo de Suporte" + +#~ msgid "" +#~ "TimeTracker is free and open-source. " +#~ "Support updates and new features — " +#~ "or remove prompts with a one-time" +#~ " key." +#~ msgstr "" +#~ "TimeTracker é livre e de código " +#~ "aberto. Suporte atualizações e novos " +#~ "recursos — ou remova prompts com " +#~ "uma chave única." + +#~ msgid "Remove prompts with a one-time key." +#~ msgstr "Remover prompts com uma chave única." + +#~ msgid "Getting Help & Resources" +#~ msgstr "Obtendo Ajuda & Recursos" + +#~ msgid "Documentation" +#~ msgstr "Documentação" + +#~ msgid "Step-by-step guides for all features." +#~ msgstr "Guias passo a passo para todas as funcionalidades." + +#~ msgid "View Help" +#~ msgstr "Ver Ajuda" + +#~ msgid "System Information" +#~ msgstr "Informação do Sistema" + +#~ msgid "Status, versions, and configuration details." +#~ msgstr "Status, versões e detalhes de configuração." + +#~ msgid "Admin access required" +#~ msgstr "Acesso ao administrador necessário" + +#~ msgid "Community Support" +#~ msgstr "Apoio comunitário" -#: app/templates/client_portal/invoice_detail.html:52 -#: app/templates/invoices/edit.html:60 app/utils/pdf_generator_fallback.py:237 -msgid "Invoice Items" -msgstr "Itens de Fatura" - -#: app/templates/client_portal/invoice_detail.html:58 -#: app/templates/client_portal/invoice_detail.html:67 -#: app/templates/client_portal/quote_detail.html:70 -#: app/templates/client_portal/quote_detail.html:88 -#: app/templates/inventory/adjustments/list.html:59 -#: app/templates/inventory/adjustments/list.html:78 -#: app/templates/inventory/movements/form.html:62 -#: app/templates/inventory/movements/list.html:58 -#: app/templates/inventory/movements/list.html:102 -#: app/templates/inventory/reports/movement_history.html:74 -#: app/templates/inventory/reports/movement_history.html:118 -#: app/templates/inventory/reports/valuation.html:61 -#: app/templates/inventory/reports/valuation.html:81 -#: app/templates/inventory/reservations/list.html:41 -#: app/templates/inventory/reservations/list.html:63 -#: app/templates/inventory/stock_items/history.html:65 -#: app/templates/inventory/stock_items/history.html:104 -#: app/templates/inventory/stock_items/view.html:178 -#: app/templates/inventory/stock_items/view.html:189 -#: app/templates/inventory/stock_items/view.html:242 -#: app/templates/inventory/stock_items/view.html:256 -#: app/templates/inventory/transfers/form.html:50 -#: app/templates/inventory/transfers/list.html:42 -#: app/templates/inventory/transfers/list.html:69 -#: app/templates/inventory/warehouses/view.html:132 -#: app/templates/inventory/warehouses/view.html:150 -#: app/templates/invoices/edit.html:75 app/templates/invoices/edit.html:118 -#: app/templates/invoices/edit.html:120 app/templates/invoices/edit.html:541 -#: app/templates/kiosk/dashboard.html:172 -#: app/templates/kiosk/dashboard.html:263 -#: app/templates/projects/add_good.html:45 -#: app/templates/projects/edit_good.html:45 -#: app/templates/projects/goods.html:41 app/templates/projects/goods.html:63 -#: app/templates/quotes/pdf_default.html:96 app/templates/quotes/view.html:103 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Quantity" -msgstr "Quantidade" - -#: app/templates/client_portal/invoice_detail.html:59 -#: app/templates/client_portal/invoice_detail.html:68 -#: app/templates/client_portal/quote_detail.html:71 -#: app/templates/client_portal/quote_detail.html:89 -#: app/templates/invoices/edit.html:76 app/templates/invoices/edit.html:124 -#: app/templates/invoices/edit.html:544 -#: app/templates/invoices/pdf_default.html:90 -#: app/templates/projects/add_good.html:50 -#: app/templates/projects/edit_good.html:50 -#: app/templates/projects/goods.html:42 app/templates/projects/goods.html:64 -#: app/templates/quotes/pdf_default.html:97 app/templates/quotes/view.html:104 -#: app/utils/pdf_generator.py:1156 app/utils/pdf_generator_fallback.py:240 -#: app/utils/pdf_generator_fallback.py:575 -msgid "Unit Price" -msgstr "Preço unitário" - -#: app/templates/client_portal/invoice_detail.html:111 -#: app/templates/payment_gateways/pay.html:3 -#: app/templates/payment_gateways/pay.html:8 -msgid "Pay Invoice" -msgstr "Fatura Paga" - -#: app/templates/client_portal/invoice_detail.html:115 -#: app/templates/invoices/create.html:6 -msgid "Back to Invoices" -msgstr "Voltar às Faturas" - -#: app/templates/client_portal/invoices.html:15 -#, python-format -msgid "Invoices for %(client_name)s" -msgstr "" +#~ msgid "Report issues, request features, contribute." +#~ msgstr "Relatar questões, solicitar recursos, contribuir." -#: app/templates/client_portal/invoices.html:50 -#: app/templates/invoices/_invoices_list.html:79 -#: app/templates/timer/_time_entries_list.html:168 -#: app/templates/timer/time_entries_overview.html:106 -#: app/templates/timer/time_entries_overview.html:199 -#: app/templates/timer/view_timer.html:144 app/utils/i18n_helpers.py:88 -#: app/utils/i18n_helpers.py:99 -msgid "Unpaid" -msgstr "Não pago" - -#: app/templates/client_portal/invoices.html:60 -#: app/templates/invoices/list.html:132 app/templates/tasks/_kanban.html:103 -#: app/templates/tasks/overdue.html:35 app/utils/i18n_helpers.py:67 -#: app/utils/i18n_helpers.py:79 -msgid "Overdue" -msgstr "Excedente" - -#: app/templates/client_portal/invoices.html:74 -#: app/templates/client_portal/quotes.html:29 -#: app/templates/client_portal/quotes.html:54 -#: app/templates/expenses/dashboard.html:200 -#: app/templates/expenses/list.html:310 app/templates/invoices/edit.html:163 -#: app/templates/invoices/edit.html:193 app/templates/payments/list.html:147 -#: app/templates/projects/add_cost.html:58 -#: app/templates/projects/dashboard.html:375 -#: app/templates/projects/edit_cost.html:65 -#: app/templates/quotes/_quotes_list.html:36 -#: app/templates/quotes/_quotes_list.html:53 -#: app/templates/quotes/create.html:97 app/templates/quotes/edit.html:145 -#: app/templates/recurring_invoices/view.html:109 -msgid "Amount" -msgstr "Montante" - -#: app/templates/client_portal/invoices.html:103 -msgid "days overdue" -msgstr "dias atrasados" - -#: app/templates/client_portal/invoices.html:153 -#: app/templates/client_portal/widgets/invoices.html:45 -msgid "No invoices found" -msgstr "Nenhuma factura encontrada" - -#: app/templates/client_portal/invoices.html:155 -msgid "No paid invoices" -msgstr "Nenhuma factura paga" - -#: app/templates/client_portal/invoices.html:157 -msgid "No unpaid invoices" -msgstr "Nenhuma factura não paga" - -#: app/templates/client_portal/invoices.html:159 -msgid "No overdue invoices" -msgstr "Nenhuma factura atrasada" - -#: app/templates/client_portal/invoices.html:164 -msgid "" -"There are no invoices available at this time. Invoices will appear here once" -" they are created." -msgstr "" -"Não existem facturas disponíveis neste momento. As facturas aparecerão aqui " -"assim que forem criadas." +#~ msgid "GitHub Issues" +#~ msgstr "Questões do GitHub" -#: app/templates/client_portal/invoices.html:166 -msgid "" -"There are no invoices matching this filter. Try selecting a different " -"status." -msgstr "" -"Não existem facturas correspondentes a este filtro. Tente selecionar um " -"status diferente." - -#: app/templates/client_portal/invoices.html:173 -msgid "View All Invoices" -msgstr "Ver Todas as Faturas" - -#: app/templates/client_portal/issue_detail.html:16 -#: app/templates/issues/view.html:8 -#, python-format -msgid "Issue #%(id)s" -msgstr "Emissão #%(id)s" - -#: app/templates/client_portal/issue_detail.html:29 -msgid "No description provided." -msgstr "Nenhuma descrição fornecida." - -#: app/templates/client_portal/issue_detail.html:51 -#: app/templates/client_portal/new_issue.html:52 -#: app/templates/issues/edit.html:48 app/templates/issues/list.html:47 -#: app/templates/issues/list.html:97 app/templates/issues/list.html:123 -#: app/templates/issues/new.html:42 app/templates/issues/view.html:111 -#: app/templates/project_templates/create.html:79 -#: app/templates/project_templates/edit.html:82 -#: app/templates/project_templates/edit.html:108 -#: app/templates/projects/view.html:429 app/templates/projects/view.html:441 -#: app/templates/recurring_tasks/form.html:91 -#: app/templates/tasks/_kanban.html:1235 -#: app/templates/tasks/_tasks_list.html:60 app/templates/tasks/create.html:59 -#: app/templates/tasks/edit.html:69 app/templates/tasks/my_tasks.html:139 -msgid "Priority" -msgstr "Prioridade" - -#: app/templates/client_portal/issue_detail.html:70 -#: app/templates/issues/view.html:41 -msgid "Linked Task" -msgstr "Tarefa Vinculada" - -#: app/templates/client_portal/issue_detail.html:77 -#: app/templates/issues/edit.html:70 app/templates/issues/list.html:70 -#: app/templates/issues/list.html:98 app/templates/issues/list.html:132 -#: app/templates/issues/new.html:64 app/templates/issues/view.html:138 -#: app/templates/tasks/_kanban.html:1263 -msgid "Assigned To" -msgstr "Atribuído" - -#: app/templates/client_portal/issue_detail.html:96 -#: app/templates/client_portal/issues.html:35 -#: app/templates/issues/edit.html:41 app/templates/issues/list.html:41 -#: app/templates/issues/view.html:102 app/templates/issues/view.html:178 -msgid "Resolved" -msgstr "Resolvido" - -#: app/templates/client_portal/issue_detail.html:107 -#: app/templates/issues/view.html:189 -msgid "Back to Issues" -msgstr "Voltar aos Problemas" - -#: app/templates/client_portal/issues.html:14 -msgid "Issue Reports" -msgstr "Relatórios de Emissão" - -#: app/templates/client_portal/issues.html:15 -#, python-format -msgid "Report and track issues for %(client_name)s" -msgstr "" +#~ msgid "Logged %(duration)s on %(project)s" +#~ msgstr "" -#: app/templates/client_portal/issues.html:27 app/templates/deals/list.html:24 -#: app/templates/issues/edit.html:39 app/templates/issues/list.html:39 -#: app/templates/issues/view.html:100 -msgid "Open" -msgstr "Abrir" - -#: app/templates/client_portal/issues.html:39 -#: app/templates/issues/edit.html:42 app/templates/issues/list.html:42 -#: app/templates/issues/view.html:103 -msgid "Closed" -msgstr "Fechado" - -#: app/templates/client_portal/issues.html:43 -#: app/templates/client_portal/new_issue.html:4 -#: app/templates/client_portal/new_issue.html:10 -#: app/templates/client_portal/new_issue.html:15 -msgid "Report New Issue" -msgstr "Relatar Nova Questão" - -#: app/templates/client_portal/issues.html:93 -msgid "No issues found." -msgstr "Nenhum problema encontrado." - -#: app/templates/client_portal/login.html:6 -msgid "Client Portal Login" -msgstr "Login no Portal do Cliente" - -#: app/templates/client_portal/login.html:32 -msgid "View your projects and invoices" -msgstr "Veja seus projetos e faturas" - -#: app/templates/client_portal/login.html:40 -msgid "Sign in to Client Portal" -msgstr "Iniciar sessão no Portal do Cliente" - -#: app/templates/client_portal/login.html:41 -msgid "Enter your portal credentials to access your projects and invoices" -msgstr "" -"Digite suas credenciais do portal para acessar seus projetos e faturas" - -#: app/templates/client_portal/login.html:51 -#: app/templates/clients/edit.html:124 -msgid "portal_username" -msgstr "portal utilizador" - -#: app/templates/client_portal/login.html:57 -#: app/templates/client_portal/set_password.html:53 -msgid "Enter your password" -msgstr "Digite sua senha" - -#: app/templates/client_portal/new_issue.html:16 -msgid "Report a bug or issue you've encountered" -msgstr "Reportar um erro ou problema que encontrou" - -#: app/templates/client_portal/new_issue.html:29 -msgid "Brief description of the issue" -msgstr "Breve descrição da questão" - -#: app/templates/client_portal/new_issue.html:36 -msgid "Detailed description of the issue, steps to reproduce, etc." -msgstr "Descrição detalhada da questão, passos para reproduzir, etc." - -#: app/templates/client_portal/new_issue.html:44 -#: app/templates/main/dashboard.html:735 -#: app/templates/timer/manual_entry.html:64 -#: app/templates/timer/timer_page.html:141 -msgid "Select a project (optional)" -msgstr "Selecione um projeto (opcional)" - -#: app/templates/client_portal/new_issue.html:55 -#: app/templates/issues/edit.html:50 app/templates/issues/list.html:50 -#: app/templates/issues/new.html:44 app/templates/issues/view.html:116 -#: app/templates/project_templates/create.html:81 -#: app/templates/project_templates/edit.html:84 -#: app/templates/project_templates/edit.html:110 -#: app/templates/recurring_tasks/form.html:93 -#: app/templates/tasks/create.html:61 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:470 app/templates/tasks/edit.html:71 -#: app/templates/tasks/edit.html:650 app/templates/tasks/my_tasks.html:142 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Low" -msgstr "Baixo" - -#: app/templates/client_portal/new_issue.html:56 -#: app/templates/issues/edit.html:51 app/templates/issues/list.html:51 -#: app/templates/issues/new.html:45 app/templates/issues/view.html:117 -#: app/templates/project_templates/create.html:82 -#: app/templates/project_templates/edit.html:85 -#: app/templates/project_templates/edit.html:111 -#: app/templates/recurring_tasks/form.html:94 -#: app/templates/tasks/create.html:62 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:471 app/templates/tasks/edit.html:72 -#: app/templates/tasks/edit.html:651 app/templates/tasks/my_tasks.html:143 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Medium" -msgstr "Médio" - -#: app/templates/client_portal/new_issue.html:57 -#: app/templates/issues/edit.html:52 app/templates/issues/list.html:52 -#: app/templates/issues/new.html:46 app/templates/issues/view.html:118 -#: app/templates/project_templates/create.html:83 -#: app/templates/project_templates/edit.html:86 -#: app/templates/project_templates/edit.html:112 -#: app/templates/recurring_tasks/form.html:95 -#: app/templates/tasks/create.html:63 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:472 app/templates/tasks/edit.html:73 -#: app/templates/tasks/edit.html:652 app/templates/tasks/my_tasks.html:144 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "High" -msgstr "Alta" - -#: app/templates/client_portal/new_issue.html:58 -#: app/templates/issues/edit.html:53 app/templates/issues/list.html:53 -#: app/templates/issues/new.html:47 app/templates/issues/view.html:119 -#: app/templates/recurring_tasks/form.html:96 -#: app/templates/tasks/create.html:64 app/templates/tasks/create.html:82 -#: app/templates/tasks/create.html:473 app/templates/tasks/edit.html:74 -#: app/templates/tasks/edit.html:653 app/templates/tasks/my_tasks.html:145 -#: app/utils/i18n_helpers.py:39 app/utils/i18n_helpers.py:45 -msgid "Urgent" -msgstr "Urgente" - -#: app/templates/client_portal/new_issue.html:65 -msgid "Your Name" -msgstr "Seu nome" - -#: app/templates/client_portal/new_issue.html:68 -msgid "Your name (optional)" -msgstr "Seu nome (opcional)" - -#: app/templates/client_portal/new_issue.html:72 -msgid "Your Email" -msgstr "Seu E-mail" - -#: app/templates/client_portal/new_issue.html:75 -msgid "Your email (optional)" -msgstr "O seu e- mail (opcional)" - -#: app/templates/client_portal/new_issue.html:85 -msgid "Submit Issue" -msgstr "Enviar Emissão" - -#: app/templates/client_portal/notifications.html:15 -msgid "Stay updated on your projects and invoices" -msgstr "Mantenha-se atualizado sobre seus projetos e faturas" - -#: app/templates/client_portal/notifications.html:41 -#: app/templates/client_portal/widgets/pending_actions.html:24 -msgid "Unread" -msgstr "Não- Lido" - -#: app/templates/client_portal/notifications.html:56 -msgid "Mark All as Read" -msgstr "Marcar tudo como lido" - -#: app/templates/client_portal/notifications.html:120 -msgid "Mark as read" -msgstr "Marcar como lido" - -#: app/templates/client_portal/notifications.html:140 -msgid "No Notifications" -msgstr "Sem Notificações" - -#: app/templates/client_portal/notifications.html:143 -msgid "You have no unread notifications. All caught up!" -msgstr "Você não tem notificações por ler. Está tudo em dia!" - -#: app/templates/client_portal/notifications.html:145 -msgid "" -"You have no notifications yet. Notifications will appear here when there are" -" updates to your projects or invoices." -msgstr "" -"Ainda não tem notificações. As notificações aparecerão aqui quando houver " -"atualizações de seus projetos ou faturas." - -#: app/templates/client_portal/project_comments.html:4 -#: app/templates/client_portal/project_comments.html:16 -msgid "Project Comments" -msgstr "Comentários do Projeto" - -#: app/templates/client_portal/project_comments.html:11 -#: app/templates/comments/_comments_section.html:6 -#: app/templates/quotes/view.html:274 -msgid "Comments" -msgstr "Comentários" - -#: app/templates/client_portal/project_comments.html:22 -#: app/templates/comments/_comments_section.html:12 -#: app/templates/quotes/view.html:280 -msgid "Add Comment" -msgstr "Adicionar Comentário" - -#: app/templates/client_portal/project_comments.html:26 -#: app/templates/comments/_comments_section.html:28 -#: app/templates/quotes/view.html:290 -msgid "Your Comment" -msgstr "Seu Comentário" - -#: app/templates/client_portal/project_comments.html:29 -msgid "Enter your comment..." -msgstr "Digite seu comentário..." - -#: app/templates/client_portal/project_comments.html:33 -#: app/templates/comments/_comments_section.html:41 -#: app/templates/quotes/view.html:301 -msgid "Post Comment" -msgstr "Comentário da Mensagem" - -#: app/templates/client_portal/project_comments.html:72 -msgid "No Comments" -msgstr "Sem comentários" - -#: app/templates/client_portal/project_comments.html:73 -msgid "Be the first to comment on this project." -msgstr "Seja o primeiro a comentar sobre este projeto." - -#: app/templates/client_portal/project_comments.html:81 -#: app/templates/projects/create.html:11 -msgid "Back to Projects" -msgstr "Voltar aos Projetos" - -#: app/templates/client_portal/projects.html:15 -#, python-format -msgid "Projects for %(client_name)s" -msgstr "" +#~ msgid "View time entries" +#~ msgstr "Ver os itens da hora" -#: app/templates/client_portal/projects.html:85 -msgid "View Time Entries" -msgstr "Ver Entradas de Tempo" +#~ msgid "Here's a quick overview of your work." +#~ msgstr "Aqui está uma rápida visão geral do seu trabalho." -#: app/templates/client_portal/projects.html:99 -#: app/templates/client_portal/widgets/projects.html:41 -msgid "No projects found" -msgstr "Nenhum projeto encontrado" +#~ msgid "Start timer with same project, task and notes as last entry" +#~ msgstr "" +#~ "Iniciar o temporizador com o mesmo " +#~ "projecto, tarefa e notas do último " +#~ "item" -#: app/templates/client_portal/projects.html:101 -msgid "" -"There are no projects available at this time. Projects will appear here once" -" they are created and assigned to your account." -msgstr "" -"Não há projetos disponíveis neste momento. Os projetos aparecerão aqui assim" -" que forem criados e atribuídos à sua conta." - -#: app/templates/client_portal/quote_detail.html:16 -#: app/templates/client_portal/quote_detail.html:33 -#: app/templates/quotes/accept.html:15 -#: app/templates/quotes/pdf_default.html:78 app/templates/quotes/view.html:57 -msgid "Quote Details" -msgstr "Detalhes das Citações" - -#: app/templates/client_portal/quote_detail.html:37 -#: app/templates/client_portal/quotes.html:28 -#: app/templates/client_portal/quotes.html:44 -#: app/templates/quotes/create.html:168 app/templates/quotes/edit.html:267 -#: app/templates/quotes/pdf_default.html:59 app/templates/quotes/view.html:413 -#: app/utils/pdf_generator_fallback.py:562 -msgid "Valid Until" -msgstr "Válido Até" - -#: app/templates/client_portal/quote_detail.html:50 -msgid "This quote has expired." -msgstr "Esta citação expirou." - -#: app/templates/client_portal/quote_detail.html:64 -#: app/templates/quotes/view.html:97 -msgid "Quote Items" -msgstr "Itens de Citação" - -#: app/templates/client_portal/quote_detail.html:86 -#: app/templates/inventory/reports/low_stock.html:30 -#: app/templates/inventory/reports/low_stock.html:47 -#: app/templates/inventory/reports/turnover.html:45 -#: app/templates/inventory/reports/turnover.html:60 -#: app/templates/inventory/reports/valuation.html:59 -#: app/templates/inventory/reports/valuation.html:79 -#: app/templates/inventory/stock_items/form.html:23 -#: app/templates/inventory/stock_items/list.html:49 -#: app/templates/inventory/stock_items/list.html:62 -#: app/templates/inventory/stock_items/view.html:28 -#: app/templates/inventory/stock_levels/warehouse.html:46 -#: app/templates/inventory/stock_levels/warehouse.html:63 -#: app/templates/inventory/warehouses/view.html:85 -#: app/templates/inventory/warehouses/view.html:100 -#: app/templates/invoices/edit.html:237 app/templates/invoices/edit.html:266 -#: app/templates/invoices/edit.html:626 -#: app/templates/invoices/pdf_default.html:139 -#: app/templates/quotes/_edit_quote_form_scripts.html:237 -#: app/templates/quotes/create.html:130 app/templates/quotes/edit.html:204 -#: app/templates/quotes/edit.html:228 -#: app/templates/quotes/pdf_default.html:107 -#: app/templates/quotes/view.html:119 app/utils/pdf_generator.py:1273 -#: app/utils/pdf_generator_reportlab.py:639 -msgid "SKU" -msgstr "SKU" - -#: app/templates/client_portal/quote_detail.html:122 -msgid "Terms & Conditions" -msgstr "Termos e Condições" - -#: app/templates/client_portal/quote_detail.html:135 -msgid "Are you sure you want to accept this quote?" -msgstr "Tem certeza de que quer aceitar esta citação?" - -#: app/templates/client_portal/quote_detail.html:137 -#: app/templates/quotes/accept.html:3 app/templates/quotes/accept.html:8 -#: app/templates/quotes/view.html:248 -msgid "Accept Quote" -msgstr "Aceitar Citação" - -#: app/templates/client_portal/quote_detail.html:144 -#: app/templates/client_portal/quote_detail.html:155 -#: app/templates/client_portal/quote_detail.html:172 -#: app/templates/quotes/view.html:252 app/templates/quotes/view.html:254 -msgid "Reject Quote" -msgstr "Rejeitar Citação" - -#: app/templates/client_portal/quote_detail.html:148 -#: app/templates/quotes/view.html:15 -msgid "Back to Quotes" -msgstr "Voltar às Citações" - -#: app/templates/client_portal/quote_detail.html:159 -msgid "Reason (optional)" -msgstr "Justificação (facultativo)" - -#: app/templates/client_portal/quote_detail.html:162 -msgid "Please provide a reason for rejecting this quote..." -msgstr "Por favor, forneça uma razão para rejeitar esta citação..." - -#: app/templates/client_portal/quotes.html:15 -#, python-format -msgid "Quotes for %(client_name)s" -msgstr "" +#~ msgid "Repeat last" +#~ msgstr "Repetir último" -#: app/templates/client_portal/quotes.html:48 -#: app/templates/integrations/health.html:74 -#: app/templates/inventory/reservations/list.html:26 -#: app/templates/inventory/reservations/list.html:86 -#: app/templates/inventory/reservations/list.html:94 -#: app/templates/kiosk/dashboard.html:202 -#: app/templates/quotes/_quotes_list.html:70 app/templates/quotes/list.html:85 -#: app/templates/quotes/view.html:79 app/templates/quotes/view.html:417 -msgid "Expired" -msgstr "Expirado" - -#: app/templates/client_portal/quotes.html:76 -msgid "No quotes found." -msgstr "Nenhuma citação encontrada." - -#: app/templates/client_portal/reports.html:15 -msgid "Project and invoice summaries" -msgstr "Resumos do projecto e da factura" - -#: app/templates/client_portal/reports.html:26 -#: app/templates/client_portal/widgets/stats.html:20 -#: app/templates/components/support_modal.html:25 -#: app/templates/main/donate.html:173 -msgid "Hours tracked" -msgstr "Horas monitoradas" - -#: app/templates/client_portal/reports.html:81 -msgid "Project progress" -msgstr "Progresso do projecto" - -#: app/templates/client_portal/reports.html:93 -msgid "Est. / Budget" -msgstr "Est. / Orçamento" - -#: app/templates/client_portal/reports.html:136 -msgid "No project hours data available." -msgstr "Nenhum dado de horas de projeto disponível." - -#: app/templates/client_portal/reports.html:149 -msgid "Task summary" -msgstr "Resumo da tarefa" - -#: app/templates/client_portal/reports.html:153 -#, python-format -msgid "Total tasks: %(count)s" -msgstr "" +#~ msgid "Start timer with last project and notes?" +#~ msgstr "Iniciar temporizador com o último projeto e notas?" -#: app/templates/client_portal/reports.html:164 -msgid "No tasks yet." -msgstr "Ainda não há tarefas." +#~ msgid "Quick start" +#~ msgstr "Início rápido" -#: app/templates/client_portal/reports.html:178 -msgid "Time by date (last 30 days)" -msgstr "Prazo por data (últimos 30 dias)" +#~ msgid "Paused" +#~ msgstr "Pausa" -#: app/templates/client_portal/reports.html:211 -msgid "Recent Time Entries (Last 30 Days)" -msgstr "Entradas recentes (últimos 30 dias)" +#~ msgid "Break" +#~ msgstr "Quebrar" -#: app/templates/client_portal/reports.html:263 -msgid "No recent time entries." -msgstr "Nenhum registro de tempo recente." +#~ msgid "Running" +#~ msgstr "Em execução" -#: app/templates/client_portal/set_password.html:6 -#: app/templates/client_portal/set_password.html:63 -msgid "Set Password" -msgstr "Definir senha" +#~ msgid "Break so far" +#~ msgstr "Para já." -#: app/templates/client_portal/set_password.html:30 -msgid "Set your password to get started" -msgstr "Definir a sua senha para começar" +#~ msgid "Started at" +#~ msgstr "Iniciado em" -#: app/templates/client_portal/set_password.html:34 -#: app/templates/email/client_portal_password_setup.html:97 -msgid "Set Your Password" -msgstr "Definir sua senha" +#~ msgid "Elapsed" +#~ msgstr "Eclodido" -#: app/templates/client_portal/set_password.html:36 -msgid "Set a password for your client portal account" -msgstr "Definir uma senha para a conta do portal do cliente" +#~ msgid "Adjust time" +#~ msgstr "Tempo de ajuste" -#: app/templates/client_portal/set_password.html:57 -msgid "Confirm Password" -msgstr "Confirmar senha" +#~ msgid "Subtract 15 min" +#~ msgstr "Subtrair 15 min" -#: app/templates/client_portal/set_password.html:60 -msgid "Confirm your password" -msgstr "Confirme sua senha" +#~ msgid "Subtract 5 min" +#~ msgstr "Subtrair 5 min" -#: app/templates/client_portal/time_entries.html:15 -#, python-format -msgid "Time entries for %(client_name)s projects" -msgstr "" +#~ msgid "Add 5 min" +#~ msgstr "Adicionar 5 min" -#: app/templates/client_portal/time_entries.html:27 -#: app/templates/gantt/view.html:30 app/templates/reports/builder.html:96 -#: app/templates/reports/time_entries_report.html:38 -#: app/templates/tasks/my_tasks.html:151 app/templates/timer/calendar.html:62 -#: app/templates/timer/time_entries_overview.html:91 -msgid "All Projects" -msgstr "Todos os Projetos" - -#: app/templates/client_portal/time_entries.html:35 -msgid "From Date" -msgstr "Data" - -#: app/templates/client_portal/time_entries.html:42 -msgid "To Date" -msgstr "Até à data" - -#: app/templates/client_portal/time_entries.html:148 -msgid "Total entries" -msgstr "Total de entradas" - -#: app/templates/client_portal/time_entries.html:154 -#: app/templates/clients/view.html:409 app/templates/clients/view.html:588 -#: app/templates/reports/week_in_review.html:26 -#: app/templates/timer/bulk_entry.html:337 -msgid "Total hours" -msgstr "Total de horas" - -#: app/templates/client_portal/time_entries.html:170 -msgid "" -"No time entries match your current filters. Try adjusting your filter " -"criteria." -msgstr "" -"Nenhum item de tempo corresponde aos seus filtros atuais. Tente ajustar seus" -" critérios de filtro." +#~ msgid "Add 15 min" +#~ msgstr "Adicionar 15 min" -#: app/templates/client_portal/time_entries.html:172 -msgid "" -"There are no time entries available at this time. Time entries will appear " -"here once they are logged for your projects." -msgstr "" -"Não há entradas de tempo disponíveis neste momento. Entradas de tempo " -"aparecerão aqui uma vez que estejam logadas para seus projetos." - -#: app/templates/client_portal/time_entries.html:179 -#: app/templates/timer/time_entries_overview.html:37 -#: app/templates/timer/time_entries_overview.html:38 -msgid "Clear Filters" -msgstr "Limpar os Filtros" - -#: app/templates/client_portal/widgets/invoices.html:8 -msgid "Recent Invoices" -msgstr "Faturas Recentes" - -#: app/templates/client_portal/widgets/invoices.html:11 -#: app/templates/client_portal/widgets/pending_actions.html:29 -#: app/templates/client_portal/widgets/projects.html:11 -#: app/templates/client_portal/widgets/time_entries.html:11 -msgid "View All" -msgstr "Ver Tudo" - -#: app/templates/client_portal/widgets/invoices.html:46 -msgid "Invoices will appear here once they are created" -msgstr "As facturas aparecerão aqui uma vez criadas" - -#: app/templates/client_portal/widgets/pending_actions.html:8 -msgid "Action Required" -msgstr "Acção Necessária" - -#: app/templates/client_portal/widgets/pending_actions.html:10 -msgid "Time entries awaiting your review" -msgstr "Entradas de tempo aguardando sua revisão" - -#: app/templates/client_portal/widgets/pending_actions.html:14 -msgid "Review Now" -msgstr "Revisão Agora" - -#: app/templates/client_portal/widgets/pending_actions.html:23 -msgid "New Updates" -msgstr "Novas Atualizações" - -#: app/templates/client_portal/widgets/pending_actions.html:25 -msgid "Notifications waiting for you" -msgstr "Notificações à sua espera" - -#: app/templates/client_portal/widgets/projects.html:42 -msgid "Projects will appear here once they are created" -msgstr "Os projetos aparecerão aqui uma vez criados" - -#: app/templates/client_portal/widgets/stats.html:8 -msgid "Total active" -msgstr "Total activo" - -#: app/templates/client_portal/widgets/stats.html:30 -msgid "Total Invoices" -msgstr "Total das facturas" - -#: app/templates/client_portal/widgets/stats.html:32 -msgid "All invoices" -msgstr "Todas as facturas" - -#: app/templates/client_portal/widgets/time_entries.html:8 -#: app/templates/user/profile.html:89 -msgid "Recent Time Entries" -msgstr "Entradas de Tempo Recentes" - -#: app/templates/client_portal/widgets/time_entries.html:69 -msgid "Time entries will appear here once they are logged" -msgstr "Os itens de tempo aparecerão aqui uma vez registrados" - -#: app/templates/clients/_clients_list.html:7 -#: app/templates/expenses/list.html:171 app/templates/expenses/list.html:250 -#: app/templates/projects/_projects_list.html:18 -#: app/templates/projects/list.html:99 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/time_entries_report.html:93 -#: app/templates/tasks/_tasks_list.html:7 -msgid "Export to CSV" -msgstr "Exportar para CSV" - -#: app/templates/clients/create.html:4 app/templates/clients/create.html:10 -#: app/templates/clients/create.html:109 -#: app/templates/projects/create.html:266 -#: app/templates/projects/create.html:308 -msgid "Create Client" -msgstr "Criar Cliente" - -#: app/templates/clients/create.html:8 -msgid "Back to Clients" -msgstr "Voltar aos Clientes" - -#: app/templates/clients/create.html:10 -msgid "Add a new client to manage related projects and billing." -msgstr "" -"Adicione um novo cliente para gerenciar projetos relacionados e faturamento." - -#: app/templates/clients/create.html:21 app/templates/clients/edit.html:21 -#: app/templates/projects/create.html:275 -msgid "Enter client name" -msgstr "Digite o nome do cliente" - -#: app/templates/clients/create.html:24 app/templates/clients/create.html:124 -#: app/templates/clients/edit.html:24 -#: app/templates/project_templates/create.html:52 -#: app/templates/project_templates/edit.html:52 -#: app/templates/projects/create.html:278 -msgid "Default Hourly Rate" -msgstr "Taxa horária padrão" - -#: app/templates/clients/create.html:25 app/templates/clients/edit.html:25 -#: app/templates/projects/create.html:72 -#: app/templates/projects/create.html:279 -msgid "e.g. 75.00" -msgstr "Por exemplo, 75.00" - -#: app/templates/clients/create.html:26 app/templates/clients/edit.html:26 -msgid "" -"This rate will be automatically filled when creating projects for this " -"client" -msgstr "" -"Esta taxa será preenchida automaticamente ao criar projetos para este " -"cliente" - -#: app/templates/clients/create.html:33 app/templates/projects/create.html:53 -#: app/templates/projects/edit.html:49 app/templates/tasks/create.html:35 -msgid "Supports Markdown" -msgstr "Suporta Markdown" - -#: app/templates/clients/create.html:36 app/templates/clients/edit.html:32 -#: app/templates/projects/create.html:284 -msgid "Brief description of the client or project scope" -msgstr "Breve descrição do cliente ou âmbito do projeto" - -#: app/templates/clients/create.html:43 app/templates/clients/edit.html:50 -#: app/templates/inventory/suppliers/form.html:36 -#: app/templates/inventory/suppliers/list.html:43 -#: app/templates/inventory/suppliers/list.html:59 -#: app/templates/inventory/suppliers/view.html:47 -#: app/templates/inventory/warehouses/form.html:36 -#: app/templates/inventory/warehouses/list.html:24 -#: app/templates/inventory/warehouses/list.html:39 -#: app/templates/inventory/warehouses/view.html:47 -#: app/templates/main/help.html:243 app/templates/projects/create.html:288 -msgid "Contact Person" -msgstr "Pessoa de contacto" - -#: app/templates/clients/create.html:44 app/templates/clients/edit.html:51 -#: app/templates/projects/create.html:289 -msgid "Primary contact name" -msgstr "Nome de contacto primário" - -#: app/templates/clients/create.html:48 app/templates/clients/edit.html:55 -#: app/templates/projects/create.html:293 -msgid "contact@client.com" -msgstr "contact@client.com" - -#: app/templates/clients/create.html:54 app/templates/clients/edit.html:37 -msgid "Monthly Prepaid Hours" -msgstr "Horas pré-pago mensais" - -#: app/templates/clients/create.html:55 app/templates/clients/edit.html:38 -msgid "e.g. 50" -msgstr "Por exemplo, 50" - -#: app/templates/clients/create.html:56 app/templates/clients/edit.html:39 -msgid "Leave empty if this client has no prepaid allocation." -msgstr "Deixe em branco se este cliente não tiver alocação pré-paga." - -#: app/templates/clients/create.html:59 app/templates/clients/edit.html:42 -msgid "Prepaid Reset Day" -msgstr "Dia de Reiniciação Pré-pago" - -#: app/templates/clients/create.html:61 app/templates/clients/edit.html:44 -msgid "Day of the month when prepaid hours reset (1-28)." -msgstr "Dia do mês em que as horas de pré-pago reset (1-28)." - -#: app/templates/clients/create.html:68 app/templates/clients/edit.html:62 -msgid "+1 (555) 123-4567" -msgstr "+1 (555) 123-4567" - -#: app/templates/clients/create.html:72 app/templates/clients/edit.html:66 -msgid "Client address" -msgstr "Endereço do cliente" - -#: app/templates/clients/create.html:80 app/templates/clients/edit.html:74 -msgid "" -"These custom fields are defined globally and available for all clients." -msgstr "" -"Estes campos personalizados são definidos globalmente e disponíveis para " -"todos os clientes." +#~ msgid "Resume timer" +#~ msgstr "Continuar o temporizador" -#: app/templates/clients/create.html:94 app/templates/clients/edit.html:88 -#: app/templates/projects/create.html:123 app/templates/projects/edit.html:114 -msgid "Enter value" -msgstr "Digite o valor" +#~ msgid "Resume" +#~ msgstr "Continuar" -#: app/templates/clients/create.html:121 -msgid "Choose a clear, descriptive name for the client organization." -msgstr "Escolha um nome descritivo claro para a organização do cliente." +#~ msgid "Pause timer (break time will be counted on resume)" +#~ msgstr "Temporizador de pausa (o tempo de intervalo será contado no currículo)" -#: app/templates/clients/create.html:125 -msgid "" -"Set the standard hourly rate for this client. This will automatically " -"populate when creating new projects." -msgstr "" -"Defina a taxa horária padrão para este cliente. Isso irá preencher " -"automaticamente ao criar novos projetos." +#~ msgid "Pause" +#~ msgstr "Pausa" -#: app/templates/clients/create.html:128 app/templates/contacts/view.html:25 -#: app/templates/leads/view.html:39 -msgid "Contact Information" -msgstr "Informações de Contacto" +#~ msgid "Stop and save current time" +#~ msgstr "Parar e salvar o tempo atual" -#: app/templates/clients/create.html:129 -msgid "Add contact details for easy communication and record keeping." -msgstr "" -"Adicione detalhes de contato para fácil comunicação e manutenção de " -"registros." +#~ msgid "Stop & save" +#~ msgstr "Parar & salvar" -#: app/templates/clients/create.html:132 app/templates/clients/view.html:176 -msgid "Prepaid Hours" -msgstr "Horas pré- pagas" +#~ msgid "No active timer." +#~ msgstr "Sem temporizador activo." -#: app/templates/clients/create.html:133 -msgid "" -"Configure monthly included hours and the reset day if this client has a " -"retainer or prepaid bundle." -msgstr "" -"Configure as horas incluídas mensais e o dia de reset se este cliente tiver " -"um retentor ou pacote pré-pago." +#~ msgid "" +#~ "Resume your last session or use " +#~ "the buttons above to repeat last /" +#~ " start a new timer." +#~ msgstr "" +#~ "Retomar sua última sessão ou usar " +#~ "os botões acima para repetir último " +#~ "/ iniciar um novo timer." -#: app/templates/clients/create.html:137 -msgid "" -"Provide context about the client relationship or typical project types." -msgstr "" -"Fornecer contexto sobre o relacionamento do cliente ou tipos de projeto " -"típicos." +#~ msgid "Resume last session" +#~ msgstr "Continuar a última sessão" -#: app/templates/clients/edit.html:4 app/templates/clients/edit.html:10 -#: app/templates/clients/view.html:9 -msgid "Edit Client" -msgstr "Editar cliente" +#~ msgid "Click \"Start Timer\" above to begin tracking your time." +#~ msgstr "" +#~ "Clique em \"Iniciar temporizador\" acima " +#~ "para começar a rastrear o seu " +#~ "tempo." -#: app/templates/clients/edit.html:104 -msgid "" -"Enable portal access for this client. Clients can log in with their own " -"credentials to view projects, invoices, and time entries." -msgstr "" -"Activar o acesso ao portal para este cliente. Os clientes podem fazer login " -"com suas próprias credenciais para visualizar projetos, faturas e entradas " -"de tempo." - -#: app/templates/clients/edit.html:109 -msgid "Enable Client Portal" -msgstr "Activar o Portal do Cliente" - -#: app/templates/clients/edit.html:115 -msgid "Enable Issue Reporting" -msgstr "Activar o Relatório de Problemas" - -#: app/templates/clients/edit.html:118 -msgid "Allow clients to report bugs and issues through the portal" -msgstr "Permitir que os clientes relatem erros e problemas através do portal" - -#: app/templates/clients/edit.html:123 -msgid "Portal Username" -msgstr "Utilizador do Portal" - -#: app/templates/clients/edit.html:125 -msgid "Unique username for portal login" -msgstr "Nome de utilizador único para o login do portal" - -#: app/templates/clients/edit.html:128 -msgid "Portal Password" -msgstr "Senha do Portal" - -#: app/templates/clients/edit.html:129 -#: app/templates/integrations/caldav_setup.html:99 -#: app/templates/integrations/manage.html:257 -msgid "Leave empty to keep current password" -msgstr "Deixar em branco para manter a senha actual" - -#: app/templates/clients/edit.html:130 -msgid "Set a new password or leave empty to keep current" -msgstr "Defina uma nova senha ou deixe em branco para manter atual" - -#: app/templates/clients/edit.html:135 -msgid "Current portal username" -msgstr "Utilizador actual do portal" - -#: app/templates/clients/edit.html:144 -msgid "Update Client" -msgstr "Atualizar cliente" - -#: app/templates/clients/edit.html:153 -msgid "Send Password Setup Email" -msgstr "Enviar o Email de Configuração de Senha" - -#: app/templates/clients/edit.html:157 -#, python-format -msgid "Send an email to %(email)s with a link to set their portal password." -msgstr "" -"Envie um e-mail para %(email)s com um link para definir sua senha do portal." +#~ msgid "Today's Hours" +#~ msgstr "Horas de hoje" -#: app/templates/clients/edit.html:163 -msgid "" -"Email address is required to send password setup email. Please set the " -"client email address above." -msgstr "" -"O endereço de email é necessário para enviar o email de configuração da " -"senha. Por favor, defina o endereço de e- mail do cliente acima." - -#: app/templates/clients/edit.html:172 -msgid "Client Statistics" -msgstr "Estatísticas do Cliente" - -#: app/templates/clients/edit.html:188 -msgid "Est. Total Cost" -msgstr "Custo total" - -#: app/templates/clients/list.html:19 -msgid "Filter Clients" -msgstr "Filtrar Clientes" - -#: app/templates/clients/list.html:20 app/templates/expenses/list.html:66 -#: app/templates/invoices/list.html:33 app/templates/mileage/list.html:68 -#: app/templates/payments/list.html:46 app/templates/per_diem/list.html:56 -#: app/templates/projects/list.html:20 app/templates/quotes/list.html:67 -#: app/templates/tasks/list.html:34 app/templates/tasks/my_tasks.html:107 -msgid "Toggle Filters" -msgstr "Alternar os Filtros" - -#: app/templates/clients/list.html:77 app/templates/clients/list.html:106 -#: app/templates/expenses/list.html:445 app/templates/expenses/list.html:474 -#: app/templates/invoices/list.html:304 app/templates/invoices/list.html:333 -#: app/templates/mileage/list.html:326 app/templates/mileage/list.html:355 -#: app/templates/payments/list.html:281 app/templates/payments/list.html:310 -#: app/templates/per_diem/list.html:365 app/templates/per_diem/list.html:394 -#: app/templates/projects/list.html:459 app/templates/projects/list.html:488 -#: app/templates/quotes/list.html:116 app/templates/quotes/list.html:143 -#: app/templates/tasks/list.html:456 app/templates/tasks/list.html:485 -#: app/templates/tasks/my_tasks.html:608 app/templates/tasks/my_tasks.html:638 -msgid "Hide Filters" -msgstr "Esconder os Filtros" - -#: app/templates/clients/list.html:84 app/templates/clients/list.html:100 -#: app/templates/expenses/list.html:452 app/templates/expenses/list.html:468 -#: app/templates/invoices/list.html:311 app/templates/invoices/list.html:327 -#: app/templates/mileage/list.html:333 app/templates/mileage/list.html:349 -#: app/templates/payments/list.html:288 app/templates/payments/list.html:304 -#: app/templates/per_diem/list.html:372 app/templates/per_diem/list.html:388 -#: app/templates/projects/list.html:466 app/templates/projects/list.html:482 -#: app/templates/quotes/list.html:122 app/templates/quotes/list.html:138 -#: app/templates/tasks/list.html:463 app/templates/tasks/list.html:479 -#: app/templates/tasks/my_tasks.html:615 app/templates/tasks/my_tasks.html:632 -msgid "Show Filters" -msgstr "Mostrar os Filtros" - -#: app/templates/clients/view.html:24 -msgid "Assign a project to direct time entries before invoicing." -msgstr "" -"Atribuir um projeto para direcionar entradas de tempo antes de faturar." +#~ msgid "overtime" +#~ msgstr "horas extraordinárias" -#: app/templates/clients/view.html:24 -msgid "No billable unbilled time for this client." -msgstr "Não há tempo infalível para este cliente." +#~ msgid "Week's Hours" +#~ msgstr "Horas da Semana" -#: app/templates/clients/view.html:25 -msgid "No unbilled time" -msgstr "Sem tempo livre" +#~ msgid "Month's Hours" +#~ msgstr "Horas do Mês" -#: app/templates/clients/view.html:25 app/templates/clients/view.html:596 -msgid "Invoice unbilled time" -msgstr "Hora da factura sem factura" +#~ msgid "Overtime (YTD)" +#~ msgstr "Horas extraordinárias (YTD)" -#: app/templates/clients/view.html:30 -msgid "Mark client as Inactive?" -msgstr "Marcar cliente como inactivo?" +#~ msgid "If this saved you even 1 hour, consider supporting ❤️" +#~ msgstr "Se isso o salvou mesmo 1 hora, considere apoiar" -#: app/templates/clients/view.html:30 -msgid "Change Client Status" -msgstr "Mudar o Estado do Cliente" +#~ msgid "Start tracking to see your productivity insights here." +#~ msgstr "Comece a rastrear para ver seus insights de produtividade aqui." -#: app/templates/clients/view.html:32 app/templates/projects/view.html:57 -msgid "Mark Inactive" -msgstr "Marcar Inativo" +#~ msgid "Loading insights…" +#~ msgstr "Carregando insights..." -#: app/templates/clients/view.html:35 -msgid "Activate client?" -msgstr "Activar cliente?" +#~ msgid "Value insights" +#~ msgstr "Valorização dos insights" -#: app/templates/clients/view.html:35 -msgid "Activate Client" -msgstr "Ativar cliente" +#~ msgid "Your tracked time at a glance" +#~ msgstr "O seu tempo seguido de relance" -#: app/templates/clients/view.html:44 -msgid "Delete Client" -msgstr "Excluir cliente" +#~ msgid "Total hours tracked" +#~ msgstr "Total de horas monitoradas" -#: app/templates/clients/view.html:53 -msgid "Client details and associated projects." -msgstr "Detalhes do cliente e projetos associados." +#~ msgid "Active days" +#~ msgstr "Dias ativos" -#: app/templates/clients/view.html:62 app/templates/integrations/list.html:162 -msgid "Manage" -msgstr "Gerenciar" +#~ msgid "Hours per day (last 7 days)" +#~ msgstr "Horas por dia (últimos 7 dias)" -#: app/templates/clients/view.html:76 app/templates/contacts/form.html:65 -#: app/templates/contacts/list.html:42 -msgid "Primary" -msgstr "Primário" +#~ msgid "Hours per day last seven days" +#~ msgstr "As horas por dia duram sete dias" -#: app/templates/clients/view.html:87 -msgid "more contact(s)" -msgstr "mais contactos" +#~ msgid "Most productive day" +#~ msgstr "Dia mais produtivo" -#: app/templates/clients/view.html:92 -msgid "No contacts yet" -msgstr "Sem contatos ainda" +#~ msgid "Avg session length" +#~ msgstr "Comprimento da sessão Avg" -#: app/templates/clients/view.html:94 -msgid "Add Contact" -msgstr "Adicionar um Contacto" +#~ msgid "Estimated value tracked" +#~ msgstr "Valor estimado rastreado" -#: app/templates/clients/view.html:100 -msgid "Legacy Contact Info" -msgstr "Informação de Contato Legado" +#~ msgid "This week vs last week" +#~ msgstr "Esta semana contra a semana passada" -#: app/templates/clients/view.html:178 -#, python-format -msgid "Plan includes %(hours)s hours per cycle. Resets on day %(day)s." -msgstr "" +#~ msgid "Hours per day (Mon–today vs same days last week)" +#~ msgstr "Horas por dia (Mon–today vs os mesmos dias na semana passada)" -#: app/templates/clients/view.html:182 -msgid "Current cycle start" -msgstr "Início do ciclo atual" - -#: app/templates/clients/view.html:186 -msgid "Remaining hours" -msgstr "Horas restantes" - -#: app/templates/clients/view.html:187 app/templates/clients/view.html:191 -#: app/templates/invoices/generate_from_time.html:30 -#: app/templates/invoices/generate_from_time.html:39 -#: app/templates/invoices/generate_from_time.html:57 -#: app/templates/projects/view.html:468 -#: app/templates/tasks/_tasks_list.html:88 app/templates/tasks/edit.html:170 -#: app/templates/tasks/edit.html:172 app/templates/tasks/edit.html:175 -#: app/templates/tasks/view.html:155 -msgid "h" -msgstr "h" - -#: app/templates/clients/view.html:190 -msgid "Consumed this cycle" -msgstr "Consumido este ciclo" - -#: app/templates/clients/view.html:201 app/templates/projects/view.html:328 -msgid "Attachments" -msgstr "Anexos" - -#: app/templates/clients/view.html:219 app/templates/projects/view.html:346 -msgid "File" -msgstr "Ficheiro" - -#: app/templates/clients/view.html:221 app/templates/projects/view.html:348 -msgid "" -"Max size: 10 MB. Allowed: images, PDFs, documents, spreadsheets, archives" -msgstr "" -"Tamanho máximo: 10 MB. Permitido: imagens, PDFs, documentos, planilhas, " -"arquivos" - -#: app/templates/clients/view.html:224 app/templates/projects/view.html:351 -msgid "Description (optional)" -msgstr "Descrição (opcional)" - -#: app/templates/clients/view.html:225 -msgid "e.g., Contract, Agreement, etc." -msgstr "Por exemplo, contrato, acordo, etc." - -#: app/templates/clients/view.html:230 app/templates/projects/view.html:357 -msgid "Visible to client in portal" -msgstr "Visível ao cliente no portal" - -#: app/templates/clients/view.html:272 app/templates/projects/view.html:399 -#: app/templates/quotes/view.html:322 -msgid "Client Visible" -msgstr "Visível do Cliente" - -#: app/templates/clients/view.html:278 app/templates/comments/_comment.html:83 -#: app/templates/projects/view.html:405 -msgid "Are you sure you want to delete this attachment?" -msgstr "Tem a certeza de que deseja apagar este anexo?" - -#: app/templates/clients/view.html:278 app/templates/projects/view.html:405 -msgid "Delete Attachment" -msgstr "Apagar o Anexo" - -#: app/templates/clients/view.html:288 app/templates/projects/view.html:415 -msgid "No attachments yet" -msgstr "Sem anexos ainda" - -#: app/templates/clients/view.html:322 app/templates/projects/view.html:122 -#: app/utils/i18n_helpers.py:51 app/utils/i18n_helpers.py:57 -msgid "Archived" -msgstr "Arquivado" - -#: app/templates/clients/view.html:343 -msgid "Recent Hours History" -msgstr "Histórico de Horas Recentes" - -#: app/templates/clients/view.html:408 -#, python-format -msgid "Showing last %(count)s entries" -msgstr "" +#~ msgid "hrs this week" +#~ msgstr "hrs esta semana" -#: app/templates/clients/view.html:414 -msgid "No recent time entries found." -msgstr "Não foram encontrados itens de tempo recentes." +#~ msgid "vs last week" +#~ msgstr "versus semana passada" -#: app/templates/clients/view.html:424 -#: app/templates/inventory/purchase_orders/form.html:59 -#: app/templates/quotes/create.html:248 app/templates/quotes/edit.html:334 -msgid "Internal Notes" -msgstr "Notas internas" +#~ msgid "This week" +#~ msgstr "Esta semana" -#: app/templates/clients/view.html:426 -msgid "Add Note" -msgstr "Adicionar nota" +#~ msgid "Last week" +#~ msgstr "Na semana passada" -#: app/templates/clients/view.html:442 -msgid "Add an internal note about this client..." -msgstr "Adicionar uma nota interna sobre este cliente..." +#~ msgid "Could not load comparison." +#~ msgstr "Não foi possível carregar a comparação." -#: app/templates/clients/view.html:458 -msgid "Save Note" -msgstr "Salvar nota" +#~ msgid "This week and last week hours by day" +#~ msgstr "Esta semana e última semana horas por dia" -#: app/templates/clients/view.html:482 app/templates/comments/_comment.html:29 -msgid "edited" -msgstr "editado" +#~ msgid "Recent Entries" +#~ msgstr "Entradas Recentes" -#: app/templates/clients/view.html:491 -msgid "Important" -msgstr "Importante" +#~ msgid "View all" +#~ msgstr "Ver tudo" -#: app/templates/clients/view.html:500 -msgid "Unmark" -msgstr "Desmarcar" +#~ msgid "Resume - Start a new timer with same properties" +#~ msgstr "Continuar - Iniciar um novo timer com as mesmas propriedades" -#: app/templates/clients/view.html:500 -msgid "Mark Important" -msgstr "Marcar Importante" +#~ msgid "Edit entry" +#~ msgstr "Editar o item" -#: app/templates/clients/view.html:527 -msgid "" -"No notes yet. Add a note to keep track of important information about this " -"client." -msgstr "" -"Ainda não há notas. Adicione uma nota para acompanhar informações " -"importantes sobre este cliente." - -#: app/templates/clients/view.html:590 -msgid "Estimated total" -msgstr "Total estimado" - -#: app/templates/clients/view.html:594 -msgid "Create a draft invoice?" -msgstr "Criar uma fatura de rascunho?" - -#: app/templates/clients/view.html:597 -msgid "Create invoice" -msgstr "Criar fatura" - -#: app/templates/clients/view.html:615 app/templates/clients/view.html:621 -msgid "Could not create invoice." -msgstr "Não foi possível criar fatura." - -#: app/templates/clients/view.html:630 -msgid "Are you sure you want to delete this note?" -msgstr "Tem a certeza de que deseja apagar esta nota?" - -#: app/templates/clients/view.html:632 -msgid "Delete Note" -msgstr "Apagar nota" - -#: app/templates/comments/_comment.html:28 -msgid "Edited on" -msgstr "Editado em" - -#: app/templates/comments/_comment.html:45 -#: app/templates/comments/_comment.html:161 app/templates/quotes/view.html:370 -#: app/templates/quotes/view.html:384 -msgid "Reply" -msgstr "Responder" - -#: app/templates/comments/_comment.html:103 -msgid "Add Attachment" -msgstr "Adicionar Anexo" - -#: app/templates/comments/_comment.html:114 -msgid "Max 10 MB. Images, PDFs, documents, spreadsheets, archives" -msgstr "Max 10 MB. Imagens, PDFs, documentos, planilhas, arquivos" - -#: app/templates/comments/_comment.html:157 -msgid "Write your reply..." -msgstr "Escreva a sua resposta..." - -#: app/templates/comments/_comment.html:184 -msgid "Replies are too deeply nested to display." -msgstr "As respostas estão aninhadas demais para serem exibidas." - -#: app/templates/comments/_comment.html:193 -msgid "Comment nesting too deep to display." -msgstr "Comente o ninho muito fundo para ser exibido." - -#: app/templates/comments/_comments_section.html:30 -#: app/templates/quotes/view.html:291 -msgid "Share your thoughts, updates, or questions..." -msgstr "Compartilhe seus pensamentos, atualizações ou perguntas..." - -#: app/templates/comments/_comments_section.html:32 -#: app/templates/comments/edit.html:74 -msgid "You can use line breaks to format your comment." -msgstr "Você pode usar quebras de linha para formatar seu comentário." - -#: app/templates/comments/_comments_section.html:34 -msgid "Add Image" -msgstr "Adicionar imagem" - -#: app/templates/comments/_comments_section.html:73 -msgid "No comments yet" -msgstr "Sem comentários ainda" - -#: app/templates/comments/_comments_section.html:74 -msgid "Start the conversation by adding the first comment." -msgstr "Comece a conversa adicionando o primeiro comentário." - -#: app/templates/comments/_comments_section.html:76 -msgid "Add First Comment" -msgstr "Adicionar primeiro comentário" - -#: app/templates/comments/edit.html:3 app/templates/comments/edit.html:12 -msgid "Edit Comment" -msgstr "Editar Comentário" - -#: app/templates/comments/edit.html:15 app/templates/invoices/edit.html:7 -#: app/templates/setup/initial_setup.html:279 -#: app/templates/setup/initial_setup.html:280 -#: app/templates/timer/bulk_entry.html:71 -#: app/templates/timer/bulk_entry.html:219 -#: app/templates/timer/edit_timer.html:386 -#: app/templates/timer/edit_timer.html:507 -#: app/templates/weekly_goals/view.html:30 -msgid "Back" -msgstr "Recuar" - -#: app/templates/comments/edit.html:26 -msgid "Editing comment on:" -msgstr "A editar o comentário em:" - -#: app/templates/comments/edit.html:54 -msgid "Originally posted on" -msgstr "Originalmente postado em" - -#: app/templates/comments/edit.html:70 -msgid "Comment Content" -msgstr "Comentário Conteúdo" - -#: app/templates/components/activity_feed_widget.html:18 -msgid "All Activities" -msgstr "Todas as Atividades" - -#: app/templates/components/activity_feed_widget.html:35 -msgid "Time Templates" -msgstr "Modelos de Tempo" - -#: app/templates/components/activity_feed_widget.html:103 -#: app/templates/components/activity_feed_widget.html:306 -#: app/templates/main/dashboard.html:623 -#: app/templates/projects/dashboard.html:267 -#: app/templates/user/profile.html:153 -msgid "No recent activity" -msgstr "Nenhuma atividade recente" - -#: app/templates/components/activity_feed_widget.html:104 -#: app/templates/components/activity_feed_widget.html:307 -msgid "Activity will appear here as you work" -msgstr "A atividade aparecerá aqui enquanto você trabalha" - -#: app/templates/components/activity_feed_widget.html:111 -#: app/templates/components/activity_feed_widget.html:296 -#: app/templates/components/activity_feed_widget.html:334 -msgid "Load More" -msgstr "Carregar mais" - -#: app/templates/components/activity_feed_widget.html:327 -msgid "Failed to load activities" -msgstr "Falha ao carregar as atividades" - -#: app/templates/components/chat_user_selector.html:6 -msgid "Start a Chat" -msgstr "Iniciar uma Conversa" - -#: app/templates/components/chat_user_selector.html:17 -msgid "Search users..." -msgstr "Procurar usuários..." - -#: app/templates/components/chat_user_selector.html:26 -msgid "Loading users..." -msgstr "Carregando usuários..." - -#: app/templates/components/chat_user_selector.html:32 -#: app/templates/components/chat_user_selector.html:116 -msgid "Failed to load users" -msgstr "Falha ao carregar os usuários" - -#: app/templates/components/chat_user_selector.html:43 -msgid "No users found" -msgstr "Nenhum usuário encontrado" - -#: app/templates/components/chat_user_selector.html:213 -msgid "Starting chat..." -msgstr "A iniciar a conversa..." - -#: app/templates/components/chat_user_selector.html:270 -msgid "Failed to start chat" -msgstr "Falha ao iniciar a conversa" - -#: app/templates/components/client_select.html:8 -#: app/templates/components/client_select.html:13 -#: app/templates/components/client_select.html:17 -#: app/templates/projects/create.html:35 app/templates/projects/edit.html:33 -msgid "Client (auto-selected)" -msgstr "Cliente (selecionado automaticamente)" - -#: app/templates/components/client_select.html:20 -#: app/templates/projects/create.html:38 app/templates/projects/edit.html:36 -msgid "Select a client..." -msgstr "Selecionar um cliente..." - -#: app/templates/components/client_select.html:20 -msgid "Select a client (optional)" -msgstr "Selecione um cliente (opcional)" - -#: app/templates/components/multi_select.html:47 -#: app/templates/components/multi_select.html:209 -msgid "Selected" -msgstr "Seleccionado" - -#: app/templates/components/multi_select.html:67 -msgid "Search..." -msgstr "Procurar..." - -#: app/templates/components/multi_select.html:80 -msgid "Select all" -msgstr "Selecionar todos" - -#: app/templates/components/multi_select.html:105 -msgid "No items available" -msgstr "Nenhum item disponível" - -#: app/templates/components/multi_select.html:122 -#: app/templates/projects/time_entries_overview.html:39 -#: app/templates/reports/index.html:94 -msgid "Apply" -msgstr "Aplicar" - -#: app/templates/components/offline_indicator.html:10 -#: app/templates/integrations/manage.html:630 -#: app/templates/integrations/view.html:143 -msgid "Sync Now" -msgstr "Sincronizar agora" - -#: app/templates/components/offline_indicator.html:18 -msgid "Pending Sync" -msgstr "Sincronização Pendente" - -#: app/templates/components/offline_indicator.html:24 -#: app/templates/components/offline_indicator.html:56 -msgid "No pending items" -msgstr "Sem itens pendentes" - -#: app/templates/components/offline_indicator.html:29 -msgid "Sync All" -msgstr "Sincronizar tudo" - -#: app/templates/components/offline_indicator.html:96 -msgid "Error loading queue" -msgstr "Erro ao carregar a fila" - -#: app/templates/components/persistent_chat_widget.html:9 -msgid "Toggle chat" -msgstr "Alternar a conversa" - -#: app/templates/components/persistent_chat_widget.html:21 -msgid "Chat" -msgstr "Conversar" - -#: app/templates/components/persistent_chat_widget.html:27 -msgid "Start new chat" -msgstr "Iniciar nova conversa" - -#: app/templates/components/persistent_chat_widget.html:41 -msgid "Minimize chat" -msgstr "Minimizar a conversa" - -#: app/templates/components/persistent_chat_widget.html:90 -msgid "View full" -msgstr "Ver completo" - -#: app/templates/components/persistent_chat_widget.html:331 -msgid "Failed to load messages" -msgstr "Falha ao carregar as mensagens" - -#: app/templates/components/persistent_chat_widget.html:341 -msgid "No messages yet" -msgstr "Nenhuma mensagem ainda" - -#: app/templates/components/persistent_chat_widget.html:403 -#: app/templates/components/persistent_chat_widget.html:409 -msgid "Failed to send message" -msgstr "Falha ao enviar a mensagem" - -#: app/templates/components/support_modal.html:12 -msgid "" -"Thank you for being a supporter. Sharing the app helps others discover it " -"too." -msgstr "" -"Obrigado por ser um apoiante. Compartilhar o aplicativo ajuda outros a " -"descobrir também." +#~ msgid "Duplicate entry" +#~ msgstr "Duplicar o item" -#: app/templates/components/support_modal.html:14 -msgid "" -"TimeTracker is free and built independently. If it helps you, consider " -"supporting its development." -msgstr "" -"TimeTracker é livre e construído independentemente. Se o ajudar, considere " -"apoiar seu desenvolvimento." +#~ msgid "Delete entry" +#~ msgstr "Apagar o item" -#: app/templates/components/support_modal.html:37 -msgid "" -"Trusted by teams and freelancers who want simple, reliable time tracking." -msgstr "" -"Confiado em equipes e freelancers que querem um rastreamento de tempo " -"simples e confiável." - -#: app/templates/components/support_modal.html:40 -#: app/templates/components/support_modal.html:41 -#: app/templates/components/support_modal.html:42 -#: app/templates/main/about.html:215 app/templates/main/dashboard.html:653 -#: app/templates/main/donate.html:34 app/templates/main/donate.html:43 -msgid "Donate" -msgstr "Doar" - -#: app/templates/components/support_modal.html:46 -#: app/templates/user/license.html:28 -msgid "Buy license (€25)" -msgstr "Comprar licença (25 €)" - -#: app/templates/components/support_modal.html:48 -msgid "Love TimeTracker? Share it" -msgstr "Love TimeTracker? Partilhar" - -#: app/templates/components/support_modal.html:51 -msgid "" -"A license is a supporter badge — it does not lock features. You keep full " -"access either way." -msgstr "" -"Uma licença é um emblema de suporte — não bloqueia funcionalidades. Mantém o" -" acesso total de qualquer forma." - -#: app/templates/components/ui.html:52 -msgid "Home" -msgstr "Principal" - -#: app/templates/components/ui.html:79 -#: app/templates/reports/time_entries_report.html:142 -msgid "Pagination" -msgstr "Paginação" - -#: app/templates/components/ui.html:81 -#: app/templates/timer/_time_entries_list.html:224 -#, python-format -msgid "Showing %(start)s to %(end)s of %(total)s entries" -msgstr "" +#~ msgid "No recent entries found." +#~ msgstr "Não foram encontrados itens recentes." -#: app/templates/components/ui.html:750 -msgid "Click to upload or drag and drop" -msgstr "Clique para enviar ou arrastar e soltar" - -#: app/templates/contacts/communication_form.html:31 -#: app/templates/deals/activity_form.html:28 -#: app/templates/leads/activity_form.html:28 -msgid "Call" -msgstr "Chamada" - -#: app/templates/contacts/communication_form.html:34 -msgid "Message" -msgstr "Mensagem" - -#: app/templates/contacts/communication_form.html:39 -msgid "Direction" -msgstr "Direcção" - -#: app/templates/contacts/communication_form.html:41 -msgid "Outbound" -msgstr "Saída" - -#: app/templates/contacts/communication_form.html:42 -msgid "Inbound" -msgstr "Inbound" - -#: app/templates/contacts/communication_form.html:47 -#: app/templates/deals/activity_form.html:50 -#: app/templates/leads/activity_form.html:50 -#: app/templates/quotes/view.html:459 -msgid "Subject" -msgstr "Assunto" - -#: app/templates/contacts/communication_form.html:61 -#: app/templates/deals/activity_form.html:38 -#: app/templates/leads/activity_form.html:38 -msgid "Scheduled" -msgstr "Agendado" - -#: app/templates/contacts/communication_form.html:67 -msgid "Follow-up Date" -msgstr "Data de seguimento" - -#: app/templates/contacts/communication_form.html:72 -msgid "Content/Notes" -msgstr "Conteúdo/Notas" - -#: app/templates/contacts/communication_form.html:79 -msgid "Save Communication" -msgstr "Salvar comunicação" - -#: app/templates/contacts/form.html:27 app/templates/leads/form.html:25 -msgid "First Name" -msgstr "Nome próprio" - -#: app/templates/contacts/form.html:32 app/templates/leads/form.html:30 -msgid "Last Name" -msgstr "Sobrenome" - -#: app/templates/contacts/form.html:47 app/templates/contacts/view.html:42 -#: app/templates/main/about.html:157 -msgid "Mobile" -msgstr "Telemóvel" - -#: app/templates/contacts/form.html:57 app/templates/contacts/view.html:54 -msgid "Department" -msgstr "Departamento" - -#: app/templates/contacts/form.html:64 app/templates/deals/form.html:40 -#: app/templates/deals/view.html:42 -msgid "Contact" -msgstr "Contacto" - -#: app/templates/contacts/form.html:66 -msgid "Billing" -msgstr "Faturação" - -#: app/templates/contacts/form.html:67 -msgid "Technical" -msgstr "Técnica" - -#: app/templates/contacts/form.html:74 -msgid "Set as primary contact" -msgstr "Definir como contato primário" - -#: app/templates/contacts/form.html:89 app/templates/leads/form.html:93 -#: app/templates/leads/view.html:122 app/templates/main/search.html:38 -#: app/templates/project_templates/create.html:35 -#: app/templates/project_templates/edit.html:35 -#: app/templates/project_templates/view.html:112 -#: app/templates/reports/user_report.html:82 -#: app/templates/tasks/_kanban.html:1299 -#: app/templates/tasks/_tasks_list.html:32 -#: app/templates/tasks/_tasks_list.html:49 app/templates/tasks/create.html:119 -#: app/templates/tasks/edit.html:127 app/templates/tasks/list.html:45 -#: app/templates/tasks/my_tasks.html:123 app/templates/tasks/view.html:139 -#: app/templates/timer/_time_entries_list.html:42 -#: app/templates/timer/_time_entries_list.html:122 -#: app/templates/timer/bulk_entry.html:198 -#: app/templates/timer/calendar.html:192 app/templates/timer/calendar.html:880 -#: app/templates/timer/edit_timer.html:348 -#: app/templates/timer/edit_timer.html:460 -#: app/templates/timer/manual_entry.html:148 -#: app/templates/timer/time_entries_export_pdf.html:20 -#: app/templates/timer/view_timer.html:52 -msgid "Tags" -msgstr "Etiquetas" - -#: app/templates/contacts/form.html:96 -msgid "Save Contact" -msgstr "Gravar o Contacto" - -#: app/templates/contacts/list.html:63 -msgid "Set Primary" -msgstr "Definir Primário" - -#: app/templates/contacts/list.html:76 -msgid "No contacts found" -msgstr "Nenhum contacto encontrado" - -#: app/templates/contacts/list.html:78 -msgid "Add First Contact" -msgstr "Adicionar o Primeiro Contacto" - -#: app/templates/contacts/view.html:29 -msgid "Primary Contact" -msgstr "Contacto Primário" - -#: app/templates/contacts/view.html:81 -msgid "Communication History" -msgstr "Histórico de Comunicação" - -#: app/templates/contacts/view.html:83 -msgid "Add Communication" -msgstr "Adicionar uma Comunicação" - -#: app/templates/contacts/view.html:104 -msgid "No communications recorded" -msgstr "Nenhuma comunicação registada" - -#: app/templates/deals/activity_form.html:4 -#: app/templates/deals/activity_form.html:10 -#: app/templates/deals/activity_form.html:15 -#: app/templates/deals/activity_form.html:60 app/templates/deals/view.html:15 -#: app/templates/deals/view.html:145 app/templates/leads/activity_form.html:4 -#: app/templates/leads/activity_form.html:10 -#: app/templates/leads/activity_form.html:15 -#: app/templates/leads/activity_form.html:60 app/templates/leads/view.html:15 -#: app/templates/leads/view.html:138 -msgid "Add Activity" -msgstr "Adicionar atividade" - -#: app/templates/deals/activity_form.html:42 -#: app/templates/leads/activity_form.html:42 -msgid "Activity Date" -msgstr "Data de atividade" - -#: app/templates/deals/activity_form.html:51 -#: app/templates/leads/activity_form.html:51 -msgid "Brief subject or title" -msgstr "Assunto ou título breves" - -#: app/templates/deals/form.html:25 app/templates/deals/list.html:50 -#: app/templates/deals/list.html:62 -#: app/templates/leads/convert_to_deal.html:25 -msgid "Deal Name" -msgstr "Nome da Oferta" - -#: app/templates/deals/form.html:32 -#: app/templates/leads/convert_to_deal.html:31 -msgid "Select Client" -msgstr "Selecionar cliente" - -#: app/templates/deals/form.html:42 -msgid "Select Contact" -msgstr "Selecionar contato" - -#: app/templates/deals/form.html:52 app/templates/deals/list.html:30 -#: app/templates/deals/list.html:52 app/templates/deals/list.html:66 -#: app/templates/deals/view.html:47 -#: app/templates/invoice_approvals/list.html:32 -#: app/templates/invoice_approvals/view.html:70 -#: app/templates/leads/convert_to_deal.html:38 -msgid "Stage" -msgstr "Etapa" - -#: app/templates/deals/form.html:61 -msgid "Deal Value" -msgstr "Valor da oferta" - -#: app/templates/deals/form.html:75 -#: app/templates/leads/convert_to_deal.html:46 -msgid "Win Probability" -msgstr "Ganhar Probabilidade" - -#: app/templates/deals/form.html:80 -#: app/templates/leads/convert_to_deal.html:50 -msgid "Expected Close Date" -msgstr "Data de encerramento esperada" - -#: app/templates/deals/form.html:86 app/templates/deals/view.html:126 -msgid "Related Quote" -msgstr "Citação Relacionada" - -#: app/templates/deals/form.html:88 -msgid "Select Quote" -msgstr "Selecionar Citação" - -#: app/templates/deals/form.html:109 -msgid "Save Deal" -msgstr "Gravar a Promoção" - -#: app/templates/deals/list.html:25 -msgid "Won" -msgstr "Vencedo" - -#: app/templates/deals/list.html:26 -msgid "Lost" -msgstr "Perdido" - -#: app/templates/deals/list.html:32 -msgid "All Stages" -msgstr "Todas as Etapas" - -#: app/templates/deals/list.html:53 app/templates/deals/list.html:71 -#: app/templates/deals/view.html:60 -msgid "Value" -msgstr "Valor" - -#: app/templates/deals/list.html:54 app/templates/deals/list.html:78 -#: app/templates/deals/view.html:65 -msgid "Probability" -msgstr "Probabilidade" - -#: app/templates/deals/list.html:55 app/templates/deals/list.html:79 -#: app/templates/deals/view.html:70 -msgid "Expected Close" -msgstr "Esperado Fechar" - -#: app/templates/deals/list.html:91 -msgid "No deals found" -msgstr "Nenhuma oferta encontrada" - -#: app/templates/deals/list.html:93 -msgid "Create First Deal" -msgstr "Criar a Primeira Promoção" - -#: app/templates/deals/view.html:16 -msgid "Pipeline" -msgstr "Pipeline" - -#: app/templates/deals/view.html:32 -msgid "Deal Information" -msgstr "Informação da Oferta" - -#: app/templates/deals/view.html:76 -msgid "Actual Close" -msgstr "Fechar Actual" - -#: app/templates/deals/view.html:82 app/templates/leads/view.html:102 -msgid "Owner" -msgstr "Dono" - -#: app/templates/deals/view.html:88 -msgid "Related Lead" -msgstr "Chumbo Relacionado" - -#: app/templates/deals/view.html:119 -msgid "Loss Reason" -msgstr "Razão da perda" - -#: app/templates/deals/view.html:133 app/templates/quotes/view.html:179 -msgid "Related Project" -msgstr "Projeto Relacionado" - -#: app/templates/deals/view.html:158 app/templates/leads/view.html:151 -msgid "by" -msgstr "por" - -#: app/templates/deals/view.html:171 app/templates/leads/view.html:164 -msgid "No activities recorded yet" -msgstr "Nenhuma atividade registrada ainda" - -#: app/templates/deals/view.html:173 app/templates/leads/view.html:166 -msgid "Add first activity" -msgstr "Adicionar primeira atividade" - -#: app/templates/deals/view.html:180 -msgid "History" -msgstr "Histórico" - -#: app/templates/deals/view.html:183 -msgid "View full history" -msgstr "Ver histórico completo" - -#: app/templates/deals/view.html:226 -msgid "No change history yet" -msgstr "Ainda não existe histórico de alterações" - -#: app/templates/email/comment_mention.html:70 -msgid "You Were Mentioned" -msgstr "Você foi mencionado" - -#: app/templates/email/comment_mention.html:90 -msgid "View Task & Reply" -msgstr "Ver a & Resposta da Tarefa" - -#: app/templates/email/invoice.html:63 -#: app/templates/inventory/movements/list.html:38 -#: app/templates/invoice_approvals/list.html:27 -#: app/templates/invoice_approvals/request.html:9 -#: app/templates/invoice_approvals/view.html:10 -#: app/templates/invoices/pdf_default.html:5 -#: app/templates/payments/list.html:142 app/utils/pdf_generator.py:1032 -#: app/utils/pdf_generator.py:1042 -msgid "Invoice" -msgstr "Fatura" - -#: app/templates/email/overdue_invoice.html:65 -msgid "Invoice Overdue" -msgstr "Excesso de Voz" - -#: app/templates/email/overdue_invoice.html:106 -#: app/templates/invoice_approvals/view.html:13 -#: app/templates/invoices/view.html:46 -msgid "View Invoice" -msgstr "Ver Fatura" - -#: app/templates/email/quote.html:63 -#: app/templates/inventory/movements/list.html:39 -#: app/templates/quotes/pdf_default.html:5 app/utils/pdf_generator.py:2310 -msgid "Quote" -msgstr "Citação" - -#: app/templates/email/quote_approval_rejected.html:74 -msgid "Quote Approval Rejected" -msgstr "Aprovação da cotação rejeitada" - -#: app/templates/email/quote_approval_rejected.html:98 -#: app/templates/email/quote_approved.html:84 -#: app/templates/email/quote_expired.html:83 -#: app/templates/email/quote_expiring.html:93 -#: app/templates/email/quote_sent.html:81 -msgid "View Quote" -msgstr "Ver Citação" - -#: app/templates/email/quote_approval_request.html:67 -msgid "Approval Requested" -msgstr "Homologação solicitada" - -#: app/templates/email/quote_approval_request.html:83 -msgid "Review Quote" -msgstr "Citação de Revisão" - -#: app/templates/email/quote_approved.html:67 -msgid "Quote Approved" -msgstr "Cotação Aprovada" - -#: app/templates/email/quote_expired.html:67 -msgid "Quote Expired" -msgstr "A Citação Expirada" - -#: app/templates/email/quote_expiring.html:74 -msgid "Quote Expiring Soon" -msgstr "A Citação Acaba Logo" - -#: app/templates/email/quote_sent.html:67 -msgid "Quote Sent" -msgstr "Citação Enviada" - -#: app/templates/email/task_assigned.html:71 -msgid "Task Assignment" -msgstr "Atribuição da Tarefa" - -#: app/templates/email/task_assigned.html:117 -#: app/templates/tasks/edit.html:280 -msgid "View Task" -msgstr "Ver Tarefa" - -#: app/templates/email/test_email.html:115 -msgid "Test Details" -msgstr "Detalhes do teste" - -#: app/templates/email/weekly_summary.html:89 -msgid "Your Weekly Summary" -msgstr "O seu Resumo Semanal" - -#: app/templates/errors/400.html:3 -msgid "400 Bad Request" -msgstr "400 Pedido Mau" - -#: app/templates/errors/400.html:13 -msgid "Invalid Request" -msgstr "Pedido inválido" - -#: app/templates/errors/400.html:15 -msgid "" -"The request you made is invalid or contains errors. This could be due to:" -msgstr "" -"A solicitação que você fez é inválida ou contém erros. Isto pode ser devido " -"a:" +#~ msgid "Start tracking time to see entries here." +#~ msgstr "Iniciar o tempo de seguimento para ver as entradas aqui." -#: app/templates/errors/400.html:18 -msgid "Missing or invalid form data" -msgstr "Dados do formulário em falta ou inválidos" +#~ msgid "Weekly Goal" +#~ msgstr "Objetivo Semanal" -#: app/templates/errors/400.html:19 -msgid "Malformed request parameters" -msgstr "Parâmetros de pedido inválidos" +#~ msgid "Days Left" +#~ msgstr "Dias Restantes" -#: app/templates/errors/403.html:15 -msgid "" -"You don't have permission to access this resource. This could be due to:" -msgstr "" -"Você não tem permissão para acessar este recurso. Isto pode ser devido a:" - -#: app/templates/errors/403.html:18 -msgid "Insufficient privileges" -msgstr "Privilégios insuficientes" - -#: app/templates/errors/403.html:19 -msgid "Not logged in" -msgstr "Não autenticado" - -#: app/templates/errors/403.html:20 -msgid "Resource access restrictions" -msgstr "Restrições ao acesso aos recursos" - -#: app/templates/errors/500.html:17 -msgid "Something went wrong on our end. Please try again later." -msgstr "Algo correu mal do nosso lado. Por favor, tente mais tarde." - -#: app/templates/errors/500.html:21 -msgid "Try Again" -msgstr "Tente novamente" - -#: app/templates/errors/generic.html:17 -msgid "An error occurred while processing your request." -msgstr "Ocorreu um erro ao processar o seu pedido." - -#: app/templates/errors/generic.html:32 -msgid "Refresh Page" -msgstr "Actualizar a Página" - -#: app/templates/errors/generic.html:36 -msgid "Go to Login" -msgstr "Ir para o Login" - -#: app/templates/expense_categories/form.html:34 -msgid "e.g., Travel, Meals, Office Supplies" -msgstr "Por exemplo, Viagens, Refeições, Fornecimentos de escritório" - -#: app/templates/expense_categories/form.html:44 -msgid "e.g., TRAVEL, MEALS" -msgstr "Por exemplo, viagem, refeições" - -#: app/templates/expense_categories/form.html:54 -msgid "Brief description of this category..." -msgstr "Breve descrição desta categoria..." - -#: app/templates/expense_categories/form.html:73 -msgid "e.g., fa-plane, fa-utensils" -msgstr "Por exemplo, fa-plano, fa-utensils" - -#: app/templates/expense_categories/form.html:142 -msgid "e.g., 19.00" -msgstr "Por exemplo, 19.00" - -#: app/templates/expenses/dashboard.html:195 -#: app/templates/expenses/list.html:305 -#: app/templates/inventory/reports/valuation.html:30 -#: app/templates/inventory/reports/valuation.html:60 -#: app/templates/inventory/reports/valuation.html:80 -#: app/templates/inventory/stock_items/form.html:35 -#: app/templates/inventory/stock_items/list.html:25 -#: app/templates/inventory/stock_items/list.html:51 -#: app/templates/inventory/stock_items/list.html:68 -#: app/templates/inventory/stock_items/view.html:32 -#: app/templates/inventory/stock_levels/list.html:29 -#: app/templates/inventory/stock_levels/warehouse.html:21 -#: app/templates/inventory/stock_levels/warehouse.html:47 -#: app/templates/inventory/stock_levels/warehouse.html:64 -#: app/templates/invoices/edit.html:162 app/templates/invoices/edit.html:234 -#: app/templates/invoices/pdf_default.html:142 -#: app/templates/kiosk/dashboard.html:123 -#: app/templates/project_templates/create.html:30 -#: app/templates/project_templates/edit.html:30 -#: app/templates/project_templates/list.html:22 -#: app/templates/projects/add_cost.html:37 -#: app/templates/projects/add_good.html:29 -#: app/templates/projects/edit_cost.html:44 -#: app/templates/projects/edit_good.html:29 -#: app/templates/projects/goods.html:40 app/templates/projects/goods.html:60 -#: app/templates/quotes/create.html:96 app/templates/quotes/create.html:127 -#: app/templates/quotes/edit.html:144 app/templates/quotes/edit.html:201 -#: app/utils/pdf_generator.py:1276 app/utils/pdf_generator_reportlab.py:642 -msgid "Category" -msgstr "Categoria" - -#: app/templates/expenses/form.html:23 -#: app/templates/inventory/purchase_orders/form.html:25 -#: app/templates/quotes/create.html:28 app/templates/quotes/edit.html:28 -#: app/templates/recurring_tasks/form.html:26 -msgid "Basic Information" -msgstr "Informações básicas" - -#: app/templates/expenses/form.html:33 -msgid "e.g., Flight to Berlin" -msgstr "Por exemplo, voo para Berlim" - -#: app/templates/expenses/form.html:42 -msgid "Additional details about the expense..." -msgstr "Detalhes adicionais sobre a despesa..." - -#: app/templates/expenses/form.html:52 -msgid "Select Category" -msgstr "Selecionar categoria" - -#: app/templates/expenses/form.html:75 -msgid "Amount Details" -msgstr "Detalhes da Quantidade" - -#: app/templates/expenses/form.html:124 -msgid "Association" -msgstr "Associação" - -#: app/templates/expenses/form.html:158 app/templates/payments/view.html:21 -msgid "Payment Details" -msgstr "Detalhes do pagamento" - -#: app/templates/expenses/form.html:192 -msgid "e.g., Lufthansa" -msgstr "Por exemplo, Lufthansa" - -#: app/templates/expenses/form.html:201 -msgid "Receipt & Additional Information" -msgstr "Receber e Informações Adicionais" - -#: app/templates/expenses/form.html:222 -msgid "Receipt/Invoice Number" -msgstr "Número de recepção/fatura" - -#: app/templates/expenses/form.html:226 -msgid "e.g., INV-2024-001" -msgstr "Por exemplo, INV-2024-001" - -#: app/templates/expenses/form.html:237 -msgid "e.g., conference, client-meeting, urgent" -msgstr "Por exemplo, conferência, reunião de clientes, urgência" - -#: app/templates/expenses/form.html:246 app/templates/mileage/form.html:238 -#: app/templates/per_diem/form.html:190 -msgid "Additional notes..." -msgstr "Notas adicionais..." - -#: app/templates/expenses/form.html:254 -msgid "Options" -msgstr "Opções" - -#: app/templates/expenses/list.html:65 -msgid "Filter Expenses" -msgstr "Despesas de Filtro" - -#: app/templates/expenses/list.html:203 -msgid "Delete Selected Expenses" -msgstr "Apagar as Despesas Seleccionadas" - -#: app/templates/expenses/list.html:223 -msgid "Change Status for Selected Expenses" -msgstr "Mudar o estado das despesas seleccionadas" - -#: app/templates/expenses/view.html:252 -msgid "Associated With" -msgstr "Associado a" - -#: app/templates/expenses/view.html:348 -msgid "Reject Expense" -msgstr "Rejeitar Despesas" - -#: app/templates/expenses/view.html:357 -msgid "Explain why this expense is being rejected..." -msgstr "Explique porque é que esta despesa está a ser rejeitada..." - -#: app/templates/expenses/view.html:397 -msgid "Are you sure you want to delete this expense?" -msgstr "Tem a certeza de que deseja apagar esta despesa?" - -#: app/templates/expenses/view.html:399 -msgid "Delete Expense" -msgstr "Apagar as Despesas" - -#: app/templates/gantt/view.html:13 app/templates/kanban/board.html:15 -msgid "Add task" -msgstr "Adicionar tarefa" - -#: app/templates/import_export/index.html:4 -#: app/templates/import_export/index.html:13 -msgid "Import/Export Data" -msgstr "Importar/Exportar Dados" - -#: app/templates/import_export/index.html:8 -msgid "Import/Export" -msgstr "Importar/Exportar" +#~ msgid "Need" +#~ msgstr "Necessidade" -#: app/templates/import_export/index.html:14 -msgid "" -"Import data from other time trackers or export your data for GDPR compliance" -" and backups" -msgstr "" -"Importar dados de outros rastreadores de tempo ou exportar seus dados para " -"conformidade com o GDPR e backups" +#~ msgid "to reach goal" +#~ msgstr "alcançar o objetivo" -#: app/templates/import_export/index.html:24 -msgid "Import Data" -msgstr "Importar Dados" +#~ msgid "No Weekly Goal" +#~ msgstr "Sem Objetivo Semanal" -#: app/templates/import_export/index.html:29 -msgid "CSV Import - Time Entries" -msgstr "Importação de CSV - Entradas de Tempo" +#~ msgid "Set a weekly time goal to track your progress" +#~ msgstr "Defina um objetivo de tempo semanal para acompanhar seu progresso" -#: app/templates/import_export/index.html:30 -msgid "Import time entries from a CSV file" -msgstr "Importar os itens de tempo de um ficheiro CSV" +#~ msgid "Create Goal" +#~ msgstr "Criar Objetivo" -#: app/templates/import_export/index.html:34 -#: app/templates/import_export/index.html:53 -msgid "Choose CSV File" -msgstr "Escolher CSV Ficheiro" +#~ msgid "Time by project (last 7 days)" +#~ msgstr "Tempo por projeto (últimos 7 dias)" -#: app/templates/import_export/index.html:38 -#: app/templates/import_export/index.html:57 -msgid "Download Template" -msgstr "Transferir o Modelo" +#~ msgid "View report" +#~ msgstr "Ver relatório" -#: app/templates/import_export/index.html:48 -msgid "CSV Import - Clients" -msgstr "Importação de CSV - Clientes" +#~ msgid "Time distribution by project for the last 7 days" +#~ msgstr "Distribuição do tempo por projecto nos últimos 7 dias" -#: app/templates/import_export/index.html:49 -msgid "" -"Import clients with custom fields and multiple contacts from a CSV file" -msgstr "" -"Importar clientes com campos personalizados e vários contatos de um arquivo " -"CSV" +#~ msgid "No time logged in the last 7 days." +#~ msgstr "Não há tempo registado nos últimos 7 dias." -#: app/templates/import_export/index.html:63 -msgid "Skip duplicate clients" -msgstr "Ignorar clientes duplicados" +#~ msgid "Start tracking to see distribution here." +#~ msgstr "Comece a rastrear para ver a distribuição aqui." -#: app/templates/import_export/index.html:66 -msgid "Use these fields for duplicate detection:" -msgstr "Use estes campos para detecção duplicada:" +#~ msgid "Top Projects (30 days)" +#~ msgstr "Principais Projetos (30 dias)" -#: app/templates/import_export/index.html:72 -msgid "Custom fields (comma-separated):" -msgstr "Campos personalizados (separados por vírgula):" +#~ msgid "No activity in the last 30 days." +#~ msgstr "Nenhuma actividade nos últimos 30 dias." -#: app/templates/import_export/index.html:73 -msgid "e.g., debtor_number, erp_id" -msgstr "Por exemplo, número devedor, erp id" +#~ msgid "Start tracking time on projects to see them here." +#~ msgstr "Comece a rastrear os projetos para vê-los aqui." -#: app/templates/import_export/index.html:75 -msgid "" -"Example: Enter \"debtor_number\" to detect duplicates by debtor number only " -"(not by name)" -msgstr "" -"Exemplo: Digite \"debtor number\" para detectar duplicatas apenas por número" -" de devedor (não pelo nome)" - -#: app/templates/import_export/index.html:85 -#: app/templates/import_export/index.html:211 -msgid "Import from Toggl Track" -msgstr "Importar da Faixa do Toggl" - -#: app/templates/import_export/index.html:86 -msgid "Import time entries from Toggl Track" -msgstr "Importar os itens de hora do Toggl Track" - -#: app/templates/import_export/index.html:89 -msgid "Import from Toggl" -msgstr "Importar do Toggl" - -#: app/templates/import_export/index.html:97 -#: app/templates/import_export/index.html:101 -#: app/templates/import_export/index.html:249 -msgid "Import from Harvest" -msgstr "Importação da Colheita" - -#: app/templates/import_export/index.html:98 -msgid "Import time entries from Harvest" -msgstr "Importar entradas de tempo da colheita" - -#: app/templates/import_export/index.html:110 -msgid "Restore from Backup" -msgstr "Restaurar da Cópia de Segurança" - -#: app/templates/import_export/index.html:111 -msgid "Restore data from a JSON or ZIP backup file" -msgstr "Restaurar dados de um arquivo de backup JSON ou ZIP" - -#: app/templates/import_export/index.html:125 -msgid "Import History" -msgstr "Histórico de Importação" - -#: app/templates/import_export/index.html:137 -msgid "Export Data" -msgstr "Exportar Dados" - -#: app/templates/import_export/index.html:142 -msgid "Full Data Export (GDPR)" -msgstr "Exportação de dados completos (RGPD)" - -#: app/templates/import_export/index.html:143 -msgid "Export all your personal data" -msgstr "Exportar todos os seus dados pessoais" - -#: app/templates/import_export/index.html:147 -msgid "Export as JSON" -msgstr "Exportar como JSON" - -#: app/templates/import_export/index.html:150 -msgid "Export as ZIP" -msgstr "Exportar como ZIP" - -#: app/templates/import_export/index.html:160 -msgid "Filtered Export" -msgstr "Exportação Filtrada" - -#: app/templates/import_export/index.html:161 -msgid "Export specific data with filters" -msgstr "Exportar dados específicos com filtros" - -#: app/templates/import_export/index.html:164 -msgid "Export with Filters" -msgstr "Exportar com Filtros" - -#: app/templates/import_export/index.html:172 -msgid "Export Clients" -msgstr "Exportar Clientes" - -#: app/templates/import_export/index.html:173 -msgid "Export all clients with custom fields and contacts to CSV" -msgstr "" -"Exportar todos os clientes com campos personalizados e contatos para CSV" +#~ msgid "Live" +#~ msgstr "Vivo" -#: app/templates/import_export/index.html:176 -msgid "Export Clients to CSV" -msgstr "Exportar Clientes para CSV" +#~ msgid "You have tracked %(hours)s hours" +#~ msgstr "" -#: app/templates/import_export/index.html:186 -msgid "Create a full database backup" -msgstr "Criar um backup completo do banco de dados" +#~ msgid "You have created %(count)s entries" +#~ msgstr "" -#: app/templates/import_export/index.html:199 -msgid "Export History" -msgstr "Histórico de Exportação" +#~ msgid "Reports generated: %(n)s" +#~ msgstr "Relatórios gerados: %(n)s" -#: app/templates/import_export/index.html:215 -#: app/templates/import_export/index.html:258 -msgid "API Token" -msgstr "Token API" +#~ msgid "" +#~ "Thank you for supporting development. " +#~ "Sharing TimeTracker still helps a lot." +#~ msgstr "" +#~ "Obrigado por apoiar o desenvolvimento. " +#~ "Compartilhar o TimeTracker ainda ajuda " +#~ "muito." -#: app/templates/import_export/index.html:220 -msgid "Workspace ID" -msgstr "ID do Espaço de Trabalho" +#~ msgid "Share & support" +#~ msgstr "Partilhar o & suporte" -#: app/templates/import_export/index.html:236 -#: app/templates/import_export/index.html:274 -msgid "Import" -msgstr "Importar" +#~ msgid "" +#~ "If this saves you time, consider " +#~ "supporting development — everything stays " +#~ "free and open." +#~ msgstr "" +#~ "Se isso lhe poupar tempo, considere " +#~ "apoiar o desenvolvimento — tudo " +#~ "permanece livre e aberto." -#: app/templates/import_export/index.html:253 -msgid "Account ID" -msgstr "ID da conta" +#~ msgid "Buy License (€25)" +#~ msgstr "Licença de compra (25 €)" -#: app/templates/integrations/activitywatch_setup.html:4 -#: app/templates/integrations/activitywatch_setup.html:14 -msgid "ActivityWatch Setup" -msgstr "Configuração do Activitywatch" +#~ msgid "Create new task..." +#~ msgstr "Criar uma nova tarefa..." -#: app/templates/integrations/activitywatch_setup.html:15 -msgid "" -"Import window and web activity from ActivityWatch (aw-server) as automatic " -"time entries" -msgstr "" -"Importar a janela e a atividade web do ActivityWatch (servidor-aw) como " -"entradas de tempo automáticas" +#~ msgid "Loading tasks..." +#~ msgstr "Carregando tarefas..." -#: app/templates/integrations/activitywatch_setup.html:25 -#: app/templates/integrations/caldav_setup.html:25 -msgid "Server Connection" -msgstr "Conexão do Servidor" +#~ msgid "Enter new task name:" +#~ msgstr "Indique o novo nome da tarefa:" -#: app/templates/integrations/activitywatch_setup.html:29 -msgid "ActivityWatch Server URL" -msgstr "URL do servidor ActivityWatch" +#~ msgid "Failed to create task: " +#~ msgstr "Falha ao criar a tarefa:" -#: app/templates/integrations/activitywatch_setup.html:39 -msgid "" -"Base URL of your aw-server (no trailing slash). aw-server must be running " -"and reachable from this server." -msgstr "" -"URL base do seu servidor aw (sem barra de rastreamento). o servidor aw deve " -"estar em execução e acessível a partir deste servidor." +#~ msgid "Please complete creating the task or select an existing task" +#~ msgstr "" +#~ "Por favor, complete a criação da " +#~ "tarefa ou selecione uma tarefa existente" -#: app/templates/integrations/activitywatch_setup.html:40 -msgid "Use http://localhost:5600 if TimeTracker runs on the same machine." -msgstr "" -"Use http://localhost:5600 se TimeTracker for executado na mesma máquina." +#~ msgid "A task must be selected when logging time for a project" +#~ msgstr "Uma tarefa deve ser selecionada ao registrar o tempo para um projeto" -#: app/templates/integrations/activitywatch_setup.html:47 -#: app/templates/integrations/caldav_setup.html:126 -msgid "Import Settings" -msgstr "Configuração da Importação" +#~ msgid "A description is required when logging time" +#~ msgstr "É necessária uma descrição ao registar o tempo" -#: app/templates/integrations/activitywatch_setup.html:51 -#: app/templates/integrations/caldav_setup.html:130 -msgid "Default Project" -msgstr "Projeto padrão" +#~ msgid "Description must be at least %(min)s characters" +#~ msgstr "Descrição deve ser, pelo menos, %(min)s caracteres" -#: app/templates/integrations/activitywatch_setup.html:57 -#: app/templates/integrations/caldav_setup.html:136 -msgid "No project (import without project)" -msgstr "Nenhum projeto (importação sem projeto)" +#~ msgid "Quick start with a template" +#~ msgstr "Início rápido com um modelo" -#: app/templates/integrations/activitywatch_setup.html:66 -msgid "" -"Assign imported activity events to this project. Leave empty to import " -"without a project." -msgstr "" -"Atribuir eventos de atividade importados para este projeto. Deixe em branco " -"para importar sem um projeto." +#~ msgid "All templates" +#~ msgstr "Todos os modelos" -#: app/templates/integrations/activitywatch_setup.html:72 -#: app/templates/integrations/caldav_setup.html:153 -msgid "No active projects found. Events will be imported without a project." -msgstr "" -"Nenhum projeto ativo encontrado. Os eventos serão importados sem um projeto." +#~ msgid "Select either a project or a client" +#~ msgstr "Selecione um projeto ou um cliente" -#: app/templates/integrations/activitywatch_setup.html:73 -#: app/templates/integrations/caldav_setup.html:154 -msgid "You can create a project later and assign events to it." -msgstr "Você pode criar um projeto mais tarde e atribuir eventos a ele." +#~ msgid "Task (optional)" +#~ msgstr "Tarefa (opcional)" -#: app/templates/integrations/activitywatch_setup.html:76 -#: app/templates/integrations/caldav_setup.html:157 -msgid "Create a project" -msgstr "Criar um projeto" +#~ msgid "" +#~ "Select a project first to load " +#~ "tasks, or choose \"Create new task...\"" +#~ " to add one" +#~ msgstr "" +#~ "Selecione um projeto primeiro para " +#~ "carregar tarefas, ou escolha \"Criar " +#~ "nova tarefa...\" para adicionar uma" -#: app/templates/integrations/activitywatch_setup.html:84 -#: app/templates/integrations/caldav_setup.html:165 -msgid "Lookback Days" -msgstr "Dias de Olhagem" +#~ msgid "Notes (optional)" +#~ msgstr "Notas (facultativo)" -#: app/templates/integrations/activitywatch_setup.html:94 -msgid "How many days back to import on full sync (1–90, default: 7)." -msgstr "Quantos dias de volta para importar em full sync (1–90, padrão: 7)." +#~ msgid "Tags (optional)" +#~ msgstr "Marcas (opcional)" -#: app/templates/integrations/activitywatch_setup.html:100 -msgid "Bucket IDs" -msgstr "ID do Balde" +#~ msgid "e.g. meeting, dev, admin" +#~ msgstr "Por exemplo, reunião, dev, administrador" -#: app/templates/integrations/activitywatch_setup.html:108 -msgid "" -"Comma-separated or JSON array. Leave empty to use all aw-watcher-window_* " -"and aw-watcher-web_* buckets." -msgstr "" -"Separado por vírgula ou por JSON. Deixe vazio para usar todos os baldes aw-" -"watcher- window * e aw-watcher-web *." +#~ msgid "Comma-separated; recent tags shown as suggestions." +#~ msgstr "Marcas recentes, separadas por vírgulas, mostradas como sugestões." -#: app/templates/integrations/activitywatch_setup.html:119 -#: app/templates/integrations/caldav_setup.html:186 -msgid "Enable automatic sync" -msgstr "Activar a sincronização automática" +#~ msgid "Enter a name for the new task." +#~ msgstr "Indique um nome para a nova tarefa." -#: app/templates/integrations/activitywatch_setup.html:122 -msgid "" -"Automatically sync activity on a schedule. You can also trigger manual " -"syncs." -msgstr "" -"Sincronizar automaticamente a atividade em um cronograma. Você também pode " -"ativar sincronização manual." - -#: app/templates/integrations/activitywatch_setup.html:128 -#: app/templates/integrations/wizard_asana.html:128 -#: app/templates/integrations/wizard_github.html:155 -#: app/templates/integrations/wizard_gitlab.html:174 -#: app/templates/integrations/wizard_jira.html:168 -#: app/templates/integrations/wizard_quickbooks.html:125 -#: app/templates/integrations/wizard_xero.html:108 -msgid "Sync Schedule" -msgstr "Sincronizar agenda" - -#: app/templates/integrations/activitywatch_setup.html:133 -#: app/templates/integrations/wizard_asana.html:131 -#: app/templates/integrations/wizard_github.html:158 -#: app/templates/integrations/wizard_gitlab.html:178 -#: app/templates/integrations/wizard_jira.html:173 -#: app/templates/integrations/wizard_quickbooks.html:128 -#: app/templates/integrations/wizard_xero.html:111 -msgid "Manual only" -msgstr "Apenas manual" - -#: app/templates/integrations/activitywatch_setup.html:134 -#: app/templates/integrations/wizard_asana.html:132 -#: app/templates/integrations/wizard_github.html:159 -#: app/templates/integrations/wizard_gitlab.html:179 -#: app/templates/integrations/wizard_jira.html:176 -#: app/templates/integrations/wizard_quickbooks.html:129 -#: app/templates/integrations/wizard_xero.html:112 -msgid "Every hour" -msgstr "A cada hora" - -#: app/templates/integrations/activitywatch_setup.html:135 -#: app/templates/integrations/wizard_asana.html:133 -#: app/templates/integrations/wizard_github.html:160 -#: app/templates/integrations/wizard_gitlab.html:180 -#: app/templates/integrations/wizard_jira.html:179 -#: app/templates/integrations/wizard_quickbooks.html:130 -#: app/templates/integrations/wizard_xero.html:113 -#: app/templates/recurring_tasks/form.html:60 -#: app/templates/reports/index.html:485 -#: app/templates/reports/schedule_form.html:47 -msgid "Daily" -msgstr "Diariamente" - -#: app/templates/integrations/activitywatch_setup.html:156 -msgid "Test & Sync" -msgstr "& Sincronizar" - -#: app/templates/integrations/activitywatch_setup.html:158 -msgid "" -"After saving, you can test the connection and run a sync from the " -"integration page." -msgstr "" -"Após salvar, você pode testar a conexão e executar uma sincronização da " -"página de integração." +#~ msgid "Task name" +#~ msgstr "Nome da tarefa" -#: app/templates/integrations/caldav_setup.html:4 -#: app/templates/integrations/caldav_setup.html:14 -msgid "CalDAV Calendar Setup" -msgstr "Configuração do Calendário CalDAV" +#~ msgid "Create task" +#~ msgstr "Criar tarefa" -#: app/templates/integrations/caldav_setup.html:15 -msgid "" -"Connect to a CalDAV server (e.g., Zimbra) to import calendar events as time " -"entries" -msgstr "" -"Conecte-se a um servidor CalDAV (por exemplo, Zimbra) para importar eventos " -"de calendário como entradas de tempo" +#~ msgid "Task name is required." +#~ msgstr "O nome da tarefa é obrigatório." -#: app/templates/integrations/caldav_setup.html:29 -msgid "CalDAV Server URL" -msgstr "URL do servidor CalDAV" +#~ msgid "" +#~ "No valid image files selected. Please" +#~ " select PNG, JPG, GIF, or WebP " +#~ "images." +#~ msgstr "" +#~ "Nenhum arquivo de imagem válido " +#~ "selecionado. Selecione imagens PNG, JPG, " +#~ "GIF ou WebP." + +#~ msgid "Uploading" +#~ msgstr "Enviando" + +#~ msgid "images" +#~ msgstr "imagens" + +#~ msgid "Uploading image" +#~ msgstr "Enviando imagem" + +#~ msgid "Successfully uploaded" +#~ msgstr "Enviado com sucesso" + +#~ msgid "image(s) failed to upload" +#~ msgstr "a( s) imagem( s) falhou ao enviar" + +#~ msgid "Failed to upload images. Please try again." +#~ msgstr "Não foi possível enviar as imagens. Por favor, tente novamente." + +#~ msgid "Failed to upload images. Please check your connection and try again." +#~ msgstr "" +#~ "Não foi possível enviar as imagens. " +#~ "Verifique sua conexão e tente novamente." + +#~ msgid "Support Development" +#~ msgstr "Apoio ao Desenvolvimento" + +#~ msgid "Donate to support development — or get a key to remove prompts" +#~ msgstr "" +#~ "Doar para apoiar o desenvolvimento — " +#~ "ou obter uma chave para remover " +#~ "prompts" + +#~ msgid "Support updates and keep TimeTracker free for everyone" +#~ msgstr "Suporte atualizações e manter TimeTracker livre para todos" + +#~ msgid "Remove prompts with key" +#~ msgstr "Remover as instruções com a chave" + +#~ msgid "Why Your Support Matters" +#~ msgstr "Por que seu apoio importa" + +#~ msgid "" +#~ "TimeTracker is a free, open-source " +#~ "project built with passion and " +#~ "dedication. Your donations directly support:" +#~ msgstr "" +#~ "TimeTracker é um projeto livre e " +#~ "de código aberto construído com paixão" +#~ " e dedicação. Suas doações apoiam " +#~ "diretamente:" + +#~ msgid "Server Infrastructure" +#~ msgstr "Infraestrutura do Servidor" + +#~ msgid "Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" +#~ msgstr "" +#~ "Hospedagem, bancos de dados e custos " +#~ "CDN para manter o TimeTracker rápido " +#~ "e confiável" + +#~ msgid "Feature Development" +#~ msgstr "Desenvolvimento de Caracteres" + +#~ msgid "New features, improvements, and bug fixes based on your feedback" +#~ msgstr "" +#~ "Novas funcionalidades, melhorias e correções" +#~ " de erros com base no seu " +#~ "feedback" + +#~ msgid "Security & Maintenance" +#~ msgstr "Segurança e Manutenção" + +#~ msgid "" +#~ "Regular security updates, dependency " +#~ "maintenance, and performance optimization" +#~ msgstr "" +#~ "Atualizações regulares de segurança, " +#~ "manutenção de dependência e otimização " +#~ "de desempenho" + +#~ msgid "Internationalization" +#~ msgstr "Internacionalização" + +#~ msgid "" +#~ "Translation support, localization, and making" +#~ " TimeTracker accessible worldwide" +#~ msgstr "" +#~ "Suporte de tradução, localização e " +#~ "tornar o TimeTracker acessível em todo" +#~ " o mundo" + +#~ msgid "" +#~ "One key per instance; key sent by" +#~ " email after payment (€25 one-time)." +#~ " No subscription." +#~ msgstr "" +#~ "Uma chave por instância; chave enviada" +#~ " por e-mail após o pagamento (25 " +#~ "€ uma vez). Sem assinatura." + +#~ msgid "Copy your System ID from Admin → Settings → Support visibility." +#~ msgstr "" +#~ "Copie seu ID do sistema do Admin" +#~ " → Configurações → Visibilidade do " +#~ "suporte." + +#~ msgid "Buy a key at the link below; you’ll receive it by email." +#~ msgstr "Compre uma chave no link abaixo; você receberá por e-mail." + +#~ msgid "Paste the code in Admin → Settings → Support visibility and verify." +#~ msgstr "" +#~ "Colar o código em Admin → " +#~ "Configurações → Suporte visibilidade e " +#~ "verificação." + +#~ msgid "Your TimeTracker Journey" +#~ msgstr "Sua jornada do rastreador de tempo" + +#~ msgid "Days using TimeTracker" +#~ msgstr "Dias usando o TimeTracker" + +#~ msgid "Time entries tracked" +#~ msgstr "Registos de tempo" + +#~ msgid "Thank you for being part of the TimeTracker community!" +#~ msgstr "Obrigado por fazer parte da comunidade TimeTracker!" + +#~ msgid "How to Support" +#~ msgstr "Como Apoiar" + +#~ msgid "" +#~ "Every contribution, no matter the size," +#~ " makes a difference. Your support " +#~ "helps ensure TimeTracker remains free " +#~ "and continues to evolve." +#~ msgstr "" +#~ "Cada contribuição, não importa o " +#~ "tamanho, faz a diferença. Seu suporte" +#~ " ajuda a garantir que o TimeTracker" +#~ " permaneça livre e continue evoluindo." + +#~ msgid "" +#~ "You'll be redirected to Buy Me a" +#~ " Coffee where you can choose your " +#~ "contribution amount" +#~ msgstr "" +#~ "Você será redirecionado para comprar-me" +#~ " um café onde você pode escolher " +#~ "o seu montante de contribuição" -#: app/templates/integrations/caldav_setup.html:29 -msgid "optional if calendar URL is provided" -msgstr "opcional se o URL do calendário for fornecido" +#~ msgid "The Impact of Your Support" +#~ msgstr "O impacto de seu apoio" -#: app/templates/integrations/caldav_setup.html:38 -msgid "Base URL of your CalDAV server. Used for calendar discovery." -msgstr "" -"URL base do seu servidor CalDAV. Usado para a descoberta do calendário." +#~ msgid "Enables faster development cycles and quicker feature releases" +#~ msgstr "" +#~ "Permite ciclos de desenvolvimento mais " +#~ "rápidos e lançamentos de recursos mais" +#~ " rápidos" -#: app/templates/integrations/caldav_setup.html:39 -msgid "Example: https://mail.example.com/dav for Zimbra" -msgstr "Exemplo: https://mail.example.com/dav para Zimbra" +#~ msgid "Supports better documentation and user guides" +#~ msgstr "Suporta melhor documentação e guias de usuário" -#: app/templates/integrations/caldav_setup.html:45 -msgid "Calendar URL" -msgstr "URL do calendário" +#~ msgid "Helps maintain high-quality code and security standards" +#~ msgstr "Ajuda a manter padrões de código e segurança de alta qualidade" -#: app/templates/integrations/caldav_setup.html:45 -msgid "optional if server URL is provided" -msgstr "opcional se o URL do servidor for fornecido" +#~ msgid "Keeps TimeTracker free and accessible for everyone" +#~ msgstr "Mantém o TimeTracker livre e acessível para todos" -#: app/templates/integrations/caldav_setup.html:54 -msgid "" -"Direct URL to your calendar collection. If provided, server URL is only used" -" for discovery." -msgstr "" -"URL direto para sua coleção de calendários. Se fornecido, o URL do servidor " -"só é usado para descoberta." +#~ msgid "Other Ways to Help" +#~ msgstr "Outras maneiras de ajudar" -#: app/templates/integrations/caldav_setup.html:60 -msgid "Calendar Name" -msgstr "Nome do Calendário" +#~ msgid "Contribute on GitHub" +#~ msgstr "Contribuir para o GitHub" -#: app/templates/integrations/caldav_setup.html:67 -msgid "My Calendar" -msgstr "Meu Calendário" +#~ msgid "Report bugs, suggest features, or submit code" +#~ msgstr "Reportar erros, sugerir funcionalidades ou enviar código" -#: app/templates/integrations/caldav_setup.html:73 -msgid "Authentication" -msgstr "autenticação" +#~ msgid "Help Others" +#~ msgstr "Ajudar Outros" -#: app/templates/integrations/caldav_setup.html:87 -#: app/templates/integrations/manage.html:245 -msgid "Your CalDAV username (usually your email address)." -msgstr "Seu nome de usuário CalDAV (geralmente seu endereço de e-mail)." +#~ msgid "Share your knowledge in the community" +#~ msgstr "Compartilhe seu conhecimento na comunidade" -#: app/templates/integrations/caldav_setup.html:102 -#: app/templates/integrations/manage.html:260 -msgid "Your CalDAV password or app-specific password." -msgstr "Sua senha CalDAV ou senha específica do aplicativo." +#~ msgid "One-time key per instance; no subscription" +#~ msgstr "Chave única por instância; nenhuma assinatura" -#: app/templates/integrations/caldav_setup.html:104 -#: app/templates/integrations/manage.html:262 -msgid "Leave empty to keep your current password." -msgstr "Deixe em branco para manter sua senha atual." +#~ msgid "Complete documentation and user guide" +#~ msgstr "Documentação completa e guia de usuário" -#: app/templates/integrations/caldav_setup.html:116 -msgid "Verify SSL certificate" -msgstr "Verificar o certificado SSL" +#~ msgid "Quick Navigation" +#~ msgstr "Navegação Rápida" -#: app/templates/integrations/caldav_setup.html:119 -msgid "Uncheck only if using a self-signed certificate." -msgstr "Desmarcar apenas se usar um certificado auto- assinado." +#~ msgid "Filter sections..." +#~ msgstr "Seções do filtro..." -#: app/templates/integrations/caldav_setup.html:145 -msgid "" -"Calendar events will be imported as time entries. If a project is selected, " -"events will be assigned to that project." -msgstr "" -"Os eventos de calendário serão importados como entradas de tempo. Se um " -"projeto estiver selecionado, eventos serão atribuídos a esse projeto." +#~ msgid "Quick Start" +#~ msgstr "Início Rápido" -#: app/templates/integrations/caldav_setup.html:146 -msgid "" -"If an event title contains a project name, that project will be used " -"instead." -msgstr "" -"Se um título de evento contém um nome de projeto, esse projeto será usado." +#~ msgid "Reports & Analytics" +#~ msgstr "Relatórios e Análise" -#: app/templates/integrations/caldav_setup.html:147 -msgid "If no project is selected, events will be imported without a project." -msgstr "" -"Se nenhum projeto estiver selecionado, os eventos serão importados sem um " -"projeto." +#~ msgid "Productivity Features" +#~ msgstr "Características da produtividade" -#: app/templates/integrations/caldav_setup.html:175 -msgid "How many days back to import events from (default: 90)." -msgstr "Quantos dias de volta para importar eventos de (padrão: 90)." +#~ msgid "Admin Features" +#~ msgstr "Recursos de administração" -#: app/templates/integrations/caldav_setup.html:189 -msgid "" -"Automatically sync calendar events every hour. You can still trigger manual " -"syncs." -msgstr "" -"Sincronizar automaticamente os eventos de calendário a cada hora. Você ainda" -" pode ativar sincronização manual." +#~ msgid "Mobile Usage" +#~ msgstr "Uso do Móvel" -#: app/templates/integrations/caldav_setup.html:212 -msgid "" -"After saving, you can test the connection and discover available calendars." -msgstr "" -"Após salvar, você pode testar a conexão e descobrir calendários disponíveis." - -#: app/templates/integrations/health.html:4 -msgid "Integration Health" -msgstr "Integração Saúde" - -#: app/templates/integrations/health.html:23 -#: app/templates/reports/builder.html:185 -#: app/templates/reports/saved_views_list.html:28 -#: app/templates/reports/saved_views_list.html:41 -msgid "Scope" -msgstr "Âmbito de aplicação" - -#: app/templates/integrations/health.html:25 -msgid "Last sync" -msgstr "Última sincronização" - -#: app/templates/integrations/health.html:26 -msgid "Last status" -msgstr "Último status" - -#: app/templates/integrations/health.html:27 -msgid "Credentials" -msgstr "Credenciais" - -#: app/templates/integrations/health.html:28 -msgid "Last error" -msgstr "Último erro" - -#: app/templates/integrations/health.html:62 app/utils/i18n_helpers.py:224 -#: app/utils/i18n_helpers.py:236 -msgid "Partial" -msgstr "Parcial" - -#: app/templates/integrations/health.html:76 -msgid "Needs refresh" -msgstr "Precisa de actualização" - -#: app/templates/integrations/health.html:82 -#: app/templates/integrations/manage.html:581 -msgid "Expires" -msgstr "Validade" - -#: app/templates/integrations/health.html:105 -msgid "Reset this integration? This removes stored OAuth tokens." -msgstr "" -"Reiniciar esta integração? Isto remove os tokens de OAuth armazenados." +#~ msgid "API Documentation" +#~ msgstr "Documentação da API" -#: app/templates/integrations/list.html:20 -msgid "" -"Connect your Time Tracker with external services. Configure integrations " -"below to sync data, automate workflows, and enhance productivity." -msgstr "" -"Conecte seu Time Tracker com serviços externos. Configure integrações abaixo" -" para sincronizar dados, automatizar fluxos de trabalho e aumentar a " -"produtividade." +#~ msgid "Troubleshooting" +#~ msgstr "Resolução de Problemas" -#: app/templates/integrations/list.html:34 -msgid "OIDC / Single Sign-On" -msgstr "OIDC / Single Sign- On" +#~ msgid "TimeTracker Help Center" +#~ msgstr "Centro de Ajuda do TimeTracker" -#: app/templates/integrations/list.html:36 -msgid "" -"Configure OpenID Connect authentication for Single Sign-On (SSO) with your " -"identity provider" -msgstr "" -"Configure a autenticação OpenID Connect para um único sinal (SSO) com seu " -"provedor de identidade" +#~ msgid "Everything you need to know to get the most out of TimeTracker" +#~ msgstr "" +#~ "Tudo o que você precisa saber para" +#~ " tirar o máximo proveito do " +#~ "TimeTracker" -#: app/templates/integrations/list.html:76 -msgid "" -"Configure directory authentication via environment variables; use the wizard" -" to build a working .env snippet and test connectivity." -msgstr "" -"Configure a autenticação de diretórios através de variáveis de ambiente; use" -" o assistente para construir um trecho .env e testar a conectividade." - -#: app/templates/integrations/list.html:131 -#: app/templates/integrations/manage.html:556 -msgid "Not Connected" -msgstr "Não Ligado" - -#: app/templates/integrations/list.html:141 -msgid "Synced" -msgstr "Sincronizado" - -#: app/templates/integrations/list.html:146 -msgid "Not Set Up" -msgstr "Não Configurar" - -#: app/templates/integrations/list.html:164 -#: app/templates/integrations/manage.html:716 -msgid "Connect" -msgstr "Ligar" - -#: app/templates/integrations/manage.html:4 -#: app/templates/integrations/view.html:3 -msgid "Integration" -msgstr "Integração" - -#: app/templates/integrations/manage.html:26 -msgid "Guided Setup Wizard" -msgstr "Assistente de Configuração Guiada" - -#: app/templates/integrations/manage.html:29 -msgid "Use our step-by-step wizard to configure this integration easily." -msgstr "" -"Use nosso assistente passo a passo para configurar esta integração " -"facilmente." +#~ msgid "Start Tracking Time" +#~ msgstr "Iniciar o Tempo de Acompanhamento" -#: app/templates/integrations/manage.html:34 -msgid "Launch Setup Wizard" -msgstr "Assistente de Configuração de Lançamento" +#~ msgid "View Projects" +#~ msgstr "Ver Projetos" -#: app/templates/integrations/manage.html:43 -msgid "Linear API Key" -msgstr "Chave linear da API" +#~ msgid "Generate Reports" +#~ msgstr "Gerar relatórios" -#: app/templates/integrations/manage.html:50 -msgid "Personal API Key" -msgstr "Chave pessoal da API" +#~ msgid "API Docs" +#~ msgstr "API Docs" -#: app/templates/integrations/manage.html:54 -msgid "Create at linear.app/settings/api" -msgstr "Criar em linear.app/settings/api" +#~ msgid "Restart Product Tour" +#~ msgstr "Reiniciar o tour do produto" -#: app/templates/integrations/manage.html:57 -msgid "From Linear: Settings → API → Personal API keys" -msgstr "De Linear: Configurações → API → Chaves de API pessoais" +#~ msgid "Quick Start Guide" +#~ msgstr "Guia de início rápido" -#: app/templates/integrations/manage.html:60 -msgid "Save API Key" -msgstr "Salvar chave de API" +#~ msgid "For New Users" +#~ msgstr "Para novos usuários" -#: app/templates/integrations/manage.html:68 -msgid "OAuth Credentials Setup" -msgstr "Configuração das Credenciais de OAuth" +#~ msgid "Log in with your username (no password required)" +#~ msgstr "Faça login com seu nome de usuário (sem necessidade de senha)" -#: app/templates/integrations/manage.html:101 -#: app/templates/integrations/manage.html:141 -msgid "Stored; leave empty to keep" -msgstr "Armazenado; deixe em branco para manter" +#~ msgid "Explore the dashboard to see your overview" +#~ msgstr "Explore o painel para ver sua visão geral" -#: app/templates/integrations/manage.html:101 -msgid "Enter API secret" -msgstr "Digite o segredo da API" +#~ msgid "Start your first timer on an existing project" +#~ msgstr "Iniciar seu primeiro timer em um projeto existente" -#: app/templates/integrations/manage.html:112 -msgid "" -"After saving API Key and Secret, you can connect Trello using OAuth flow." -msgstr "" -"Após salvar API Key e Secret, você pode conectar Trello usando fluxo OAuth." +#~ msgid "View your time entries in reports" +#~ msgstr "Veja seus registros de tempo em relatórios" -#: app/templates/integrations/manage.html:158 -msgid "Use \"common\" for multi-tenant, or leave empty for common" -msgstr "Usar \"comum\" para multi-atendimento, ou deixar vazio para comum" +#~ msgid "For Administrators" +#~ msgstr "Para Administradores" -#: app/templates/integrations/manage.html:223 -msgid "CalDAV Authentication" -msgstr "Autenticação CalDAV" +#~ msgid "Set up clients in the Client Management section" +#~ msgstr "Configurar clientes na seção Gestão de Clientes" -#: app/templates/integrations/manage.html:226 -msgid "" -"CalDAV uses username and password authentication (not OAuth). Update your " -"credentials below." -msgstr "" -"O CalDAV usa autenticação de nome de usuário e senha (não OAuth). Atualize " -"suas credenciais abaixo." +#~ msgid "Create projects and assign them to clients" +#~ msgstr "Crie projetos e os atribua aos clientes" -#: app/templates/integrations/manage.html:281 -msgid "Integration Configuration" -msgstr "Configuração da Integração" +#~ msgid "Configure system settings (timezone, currency, etc.)" +#~ msgstr "Configurar as configurações do sistema (zona temporal, moeda, etc.)" -#: app/templates/integrations/manage.html:284 -msgid "Configure sync settings, data mappings, and other integration options." -msgstr "" -"Configure configurações de sincronização, mapeamentos de dados e outras " -"opções de integração." - -#: app/templates/integrations/manage.html:530 -msgid "Connection Management" -msgstr "Gestão de Ligação" - -#: app/templates/integrations/manage.html:539 -#: app/templates/integrations/view.html:119 -msgid "Connector Error" -msgstr "Erro no Conector" - -#: app/templates/integrations/manage.html:566 -msgid "Sync OK" -msgstr "Sincronizar OK" - -#: app/templates/integrations/manage.html:570 -msgid "Sync Error" -msgstr "Erro de sincronização" - -#: app/templates/integrations/manage.html:583 -msgid "No expiration" -msgstr "Sem expiração" - -#: app/templates/integrations/manage.html:590 -msgid "Not connected" -msgstr "Não conectado" - -#: app/templates/integrations/manage.html:596 -#: app/templates/integrations/manage.html:603 -#: app/templates/integrations/view.html:48 -msgid "Last Sync" -msgstr "Última sincronização" - -#: app/templates/integrations/manage.html:613 -#: app/templates/integrations/view.html:65 -msgid "Last Error" -msgstr "Último Erro" - -#: app/templates/integrations/manage.html:643 -msgid "" -"CalDAV uses username/password authentication. Click below to set up your " -"CalDAV connection." -msgstr "" -"O CalDAV usa autenticação de nome de usuário/senha. Clique abaixo para " -"configurar sua conexão CalDAV." +#~ msgid "Manage users and permissions" +#~ msgstr "Gerenciar usuários e permissões" -#: app/templates/integrations/manage.html:646 -msgid "Setup CalDAV Integration" -msgstr "Configurar o CalDAV Integração" +#~ msgid "Pro Tip:" +#~ msgstr "Dica Pro:" -#: app/templates/integrations/manage.html:653 -msgid "" -"ActivityWatch imports window and web activity from your local aw-server. " -"Click below to configure." -msgstr "" -"Actividade Assista as importações de janela e atividade web do seu servidor " -"aw local. Clique abaixo para configurar." +#~ msgid "" +#~ "Use the mobile-friendly interface to " +#~ "track time on the go. The timer" +#~ " continues running even if you close" +#~ " your browser!" +#~ msgstr "" +#~ "Use a interface amigável para rastrear" +#~ " o tempo em movimento. O temporizador" +#~ " continua em execução mesmo se você" +#~ " fechar seu navegador!" -#: app/templates/integrations/manage.html:656 -msgid "Setup ActivityWatch Integration" -msgstr "Configurar a Integração de Observação de Atividades" +#~ msgid "Real-time tracking with automatic idle detection and WebSocket updates" +#~ msgstr "" +#~ "Monitoramento em tempo real com detecção" +#~ " automática de inatividade e atualizações" +#~ " do WebSocket" -#: app/templates/integrations/manage.html:671 -msgid "OAuth credentials are configured. You can now connect Trello." -msgstr "As credenciais OAuth estão configuradas. Agora podes ligar o Trello." +#~ msgid "Manual Entry" +#~ msgstr "Entrada Manual" -#: app/templates/integrations/manage.html:674 -msgid "Connect Trello" -msgstr "Ligar Trello" +#~ msgid "Log time manually with custom start and end times" +#~ msgstr "Tempo de registro manualmente com horário de início e fim personalizado" -#: app/templates/integrations/manage.html:681 -msgid "" -"Please configure Trello API key and token in the OAuth Credentials Setup " -"section above." -msgstr "" -"Por favor, configure a chave e o token da API Trello na seção Configuração " -"de Credenciais do OAuth acima." +#~ msgid "Starting a Timer" +#~ msgstr "Iniciando um Temporizador" -#: app/templates/integrations/manage.html:693 -msgid "" -"Please configure OAuth credentials in the section above before connecting." -msgstr "" -"Por favor, configure credenciais OAuth na seção acima antes de se conectar." +#~ msgid "" +#~ "Click the timer icon in the header" +#~ " (round button) to start or stop " +#~ "from any page" +#~ msgstr "" +#~ "Clique no ícone do temporizador no " +#~ "cabeçalho (botão redondo) para iniciar " +#~ "ou parar de qualquer página" -#: app/templates/integrations/manage.html:700 -#: app/templates/integrations/manage.html:725 -msgid "OAuth credentials need to be configured by an administrator first." -msgstr "" -"As credenciais OAuth precisam ser configuradas por um administrador " -"primeiro." +#~ msgid "Or navigate to the Timer page or dashboard" +#~ msgstr "Ou navegue até a página ou painel do timer" -#: app/templates/integrations/manage.html:706 -msgid "" -"Connect your Google Calendar account. You will be redirected to Google for " -"authorization." -msgstr "" -"Conecte sua conta do Google Calendar. Você será redirecionado para o Google " -"para autorização." +#~ msgid "Select a project from the dropdown" +#~ msgstr "Selecione um projeto no dropdown" -#: app/templates/integrations/manage.html:708 -msgid "" -"Connect this integration. You will be redirected to the provider for " -"authorization." -msgstr "" -"Conecte esta integração. Você será redirecionado para o provedor para " -"autorização." +#~ msgid "Optionally select a task for more detailed tracking" +#~ msgstr "Opcionalmente selecione uma tarefa para um rastreamento mais detalhado" -#: app/templates/integrations/view.html:11 -msgid "Back to Integrations" -msgstr "Voltar às Integrações" +#~ msgid "Add notes about what you're working on (optional)" +#~ msgstr "Adicione notas sobre o que você está trabalhando (opcional)" -#: app/templates/integrations/view.html:17 -msgid "Integration Status" -msgstr "Estado da Integração" +#~ msgid "Add tags separated by commas (optional)" +#~ msgstr "Adicionar etiquetas separadas por vírgulas (opcional)" -#: app/templates/integrations/view.html:36 -msgid "Token Expires" -msgstr "Expira o Token" +#~ msgid "Click \"Start Timer\"" +#~ msgstr "Clique em \"Iniciar temporizador\"" -#: app/templates/integrations/view.html:74 -msgid "Sync History" -msgstr "Sincronizar histórico" +#~ msgid "Timer Features" +#~ msgstr "Características do temporizador" -#: app/templates/integrations/view.html:107 -msgid "No sync events yet" -msgstr "Sem eventos de sincronização ainda" +#~ msgid "Real-time duration display" +#~ msgstr "Visualização em tempo real" -#: app/templates/integrations/view.html:123 -msgid "Configure CalDAV Integration" -msgstr "Configurar a Integração CalDAV" +#~ msgid "" +#~ "Pause and Stop on the dashboard —" +#~ " Pause saves your time so you " +#~ "can resume later" +#~ msgstr "" +#~ "Pausa e Parar no painel — Pausa" +#~ " economiza seu tempo para que você" +#~ " possa retomar mais tarde" + +#~ msgid "Resume last session with one click (same project/task/notes)" +#~ msgstr "Continuar a última sessão com um clique (mesmo projeto/tarefa/notas)" + +#~ msgid "" +#~ "Quick time adjustment (−15 / −5 /" +#~ " +5 / +15 min) while the timer" +#~ " is running" +#~ msgstr "" +#~ "Ajuste rápido do tempo (−15 / −5" +#~ " / +5 / +15 min) enquanto o " +#~ "temporizador está em execução" + +#~ msgid "Continues running if browser closes" +#~ msgstr "Continua a correr se o navegador fechar" + +#~ msgid "Automatic idle detection (configurable)" +#~ msgstr "Detecção automática de inactividade (configurável)" + +#~ msgid "One active timer per user (configurable)" +#~ msgstr "Um timer ativo por usuário (configurado)" + +#~ msgid "WebSocket live updates" +#~ msgstr "Atualizações ao vivo do WebSocket" + +#~ msgid "Manual Time Entry" +#~ msgstr "Entrada de Hora Manual" + +#~ msgid "" +#~ "Create time entries manually when you" +#~ " need to record time spent away " +#~ "from the computer or adjust existing " +#~ "entries." +#~ msgstr "" +#~ "Crie entradas de tempo manualmente " +#~ "quando você precisa gravar o tempo " +#~ "gasto longe do computador ou ajustar " +#~ "entradas existentes." + +#~ msgid "Required Information" +#~ msgstr "Informação Obrigatória" -#: app/templates/integrations/view.html:127 -msgid "Configure ActivityWatch" -msgstr "Configurar observação de atividade" +#~ msgid "Project selection" +#~ msgstr "Seleção do projeto" -#: app/templates/integrations/view.html:147 -msgid "" -"Are you sure you want to reset this integration? This will remove all " -"credentials and configuration." -msgstr "" -"Tem certeza de que deseja reiniciar esta integração? Isto irá remover todas " -"as credenciais e configuração." +#~ msgid "Start date and time" +#~ msgstr "Data e hora de início" -#: app/templates/integrations/view.html:153 -msgid "" -"Are you sure you want to delete this integration? This action cannot be " -"undone." -msgstr "" -"Tem a certeza de que deseja apagar esta integração? Esta acção não pode ser " -"desfeita." +#~ msgid "End date and time" +#~ msgstr "Data e hora do fim" -#: app/templates/integrations/view.html:161 -#: app/templates/integrations/view.html:165 -msgid "Edit Configuration" -msgstr "Editar a Configuração" +#~ msgid "Optional Information" +#~ msgstr "Informações Opcionais" -#: app/templates/integrations/wizard_asana.html:6 -#: app/templates/integrations/wizard_github.html:6 -msgid "Step 1: OAuth Setup" -msgstr "Passo 1: Configuração do OAuth" +#~ msgid "Task assignment" +#~ msgstr "Tarefa" -#: app/templates/integrations/wizard_asana.html:12 -msgid "Create an Asana app in Settings → Apps → Manage Developer Apps." -msgstr "" -"Crie um aplicativo Asana em Configurações → Apps → Gerenciar aplicativos de " -"desenvolvedor." - -#: app/templates/integrations/wizard_asana.html:18 -msgid "Asana OAuth Client ID" -msgstr "ID do Cliente Asana OAuth" - -#: app/templates/integrations/wizard_asana.html:22 -#: app/templates/integrations/wizard_github.html:22 -#: app/templates/integrations/wizard_gitlab.html:50 -#: app/templates/integrations/wizard_jira.html:23 -#: app/templates/integrations/wizard_microsoft_teams.html:50 -#: app/templates/integrations/wizard_outlook_calendar.html:50 -#: app/templates/integrations/wizard_quickbooks.html:22 -#: app/templates/integrations/wizard_xero.html:22 -msgid "Enter OAuth Client ID" -msgstr "Indique o ID do Cliente OAuth" - -#: app/templates/integrations/wizard_asana.html:27 -msgid "Asana OAuth Client Secret" -msgstr "Asana OAuth Cliente Secreto" - -#: app/templates/integrations/wizard_asana.html:31 -#: app/templates/integrations/wizard_github.html:31 -#: app/templates/integrations/wizard_gitlab.html:59 -#: app/templates/integrations/wizard_jira.html:35 -#: app/templates/integrations/wizard_microsoft_teams.html:59 -#: app/templates/integrations/wizard_outlook_calendar.html:59 -#: app/templates/integrations/wizard_quickbooks.html:31 -#: app/templates/integrations/wizard_xero.html:31 -msgid "Enter OAuth Client Secret" -msgstr "Indique o Segredo do Cliente OAuth" - -#: app/templates/integrations/wizard_asana.html:46 -msgid "Step 2: Workspace Selection" -msgstr "Passo 2: Seleção do espaço de trabalho" - -#: app/templates/integrations/wizard_asana.html:50 -#: app/templates/integrations/wizard_asana.html:163 -msgid "Workspace GID" -msgstr "GID do espaço de trabalho" - -#: app/templates/integrations/wizard_asana.html:57 -msgid "Find your workspace GID in Asana workspace settings or API" -msgstr "" -"Encontre seu GID de espaço de trabalho em configurações de espaço de " -"trabalho Asana ou API" +#~ msgid "Description/notes" +#~ msgstr "Descrição/notas" -#: app/templates/integrations/wizard_asana.html:65 -msgid "Step 3: Project Selection" -msgstr "Passo 3: Seleção do Projeto" +#~ msgid "Tags for categorization" +#~ msgstr "Marcas para categorização" -#: app/templates/integrations/wizard_asana.html:69 -msgid "Project GIDs" -msgstr "GIDs do projeto" +#~ msgid "Billable status override" +#~ msgstr "Sobreposição de status Billable" -#: app/templates/integrations/wizard_asana.html:76 -msgid "" -"Comma-separated list of specific project GIDs to sync. Leave empty to sync " -"all projects in the workspace." -msgstr "" -"Lista separada por vírgulas de GIDs específicos do projeto para sincronizar." -" Deixe vazio para sincronizar todos os projetos na área de trabalho." - -#: app/templates/integrations/wizard_asana.html:84 -msgid "Step 4: Sync Configuration" -msgstr "Passo 4: Configuração de sincronização" - -#: app/templates/integrations/wizard_asana.html:87 -#: app/templates/integrations/wizard_asana.html:167 -#: app/templates/integrations/wizard_github.html:77 -#: app/templates/integrations/wizard_github.html:201 -#: app/templates/integrations/wizard_gitlab.html:112 -#: app/templates/integrations/wizard_gitlab.html:225 -#: app/templates/integrations/wizard_jira.html:98 -#: app/templates/integrations/wizard_jira.html:217 -#: app/templates/integrations/wizard_quickbooks.html:78 -#: app/templates/integrations/wizard_quickbooks.html:200 -#: app/templates/integrations/wizard_xero.html:61 -#: app/templates/integrations/wizard_xero.html:183 -msgid "Sync Direction" -msgstr "Direção de Sincronização" - -#: app/templates/integrations/wizard_asana.html:91 -msgid "Asana → TimeTracker (Import only)" -msgstr "Asana → TimeTracker (apenas importação)" - -#: app/templates/integrations/wizard_asana.html:94 -msgid "TimeTracker → Asana (Export only)" -msgstr "TimeTracker → Asana (apenas exportação)" - -#: app/templates/integrations/wizard_asana.html:97 -#: app/templates/integrations/wizard_github.html:87 -#: app/templates/integrations/wizard_gitlab.html:123 -#: app/templates/integrations/wizard_jira.html:109 -#: app/templates/integrations/wizard_quickbooks.html:88 -#: app/templates/integrations/wizard_xero.html:71 -msgid "Bidirectional (Two-way sync)" -msgstr "Bidirecional (sincronização bidirecional)" - -#: app/templates/integrations/wizard_asana.html:103 -#: app/templates/integrations/wizard_asana.html:171 -#: app/templates/integrations/wizard_github.html:93 -#: app/templates/integrations/wizard_github.html:205 -#: app/templates/integrations/wizard_gitlab.html:129 -#: app/templates/integrations/wizard_gitlab.html:229 -#: app/templates/integrations/wizard_jira.html:118 -#: app/templates/integrations/wizard_jira.html:221 -#: app/templates/integrations/wizard_quickbooks.html:94 -#: app/templates/integrations/wizard_quickbooks.html:204 -#: app/templates/integrations/wizard_xero.html:77 -#: app/templates/integrations/wizard_xero.html:187 -msgid "Items to Sync" -msgstr "Itens a Sincronizar" - -#: app/templates/integrations/wizard_asana.html:122 -msgid "Subtasks" -msgstr "Subtarefas" - -#: app/templates/integrations/wizard_asana.html:141 -#: app/templates/integrations/wizard_github.html:169 -#: app/templates/integrations/wizard_gitlab.html:190 -#: app/templates/integrations/wizard_jira.html:159 -#: app/templates/integrations/wizard_jira.html:225 -#: app/templates/integrations/wizard_quickbooks.html:138 -#: app/templates/integrations/wizard_xero.html:121 -msgid "Auto Sync" -msgstr "Sincronização Automática" - -#: app/templates/integrations/wizard_asana.html:148 -msgid "Sync Completed Tasks" -msgstr "Sincronizar as Tarefas Completas" - -#: app/templates/integrations/wizard_asana.html:155 -#: app/templates/integrations/wizard_github.html:189 -#: app/templates/integrations/wizard_gitlab.html:213 -#: app/templates/integrations/wizard_jira.html:203 -#: app/templates/integrations/wizard_quickbooks.html:188 -#: app/templates/integrations/wizard_xero.html:171 -msgid "Step 5: Review & Save" -msgstr "Passo 5: Reveja e salve" - -#: app/templates/integrations/wizard_asana.html:159 -#: app/templates/integrations/wizard_github.html:193 -#: app/templates/integrations/wizard_gitlab.html:217 -#: app/templates/integrations/wizard_microsoft_teams.html:78 -#: app/templates/integrations/wizard_quickbooks.html:192 -#: app/templates/integrations/wizard_trello.html:63 -#: app/templates/integrations/wizard_xero.html:175 -msgid "Review your configuration and click \"Finish\" to save." -msgstr "Reveja sua configuração e clique em \"Terminar\" para salvar." - -#: app/templates/integrations/wizard_asana.html:188 -#: app/templates/integrations/wizard_github.html:222 -#: app/templates/integrations/wizard_gitlab.html:246 -#: app/templates/integrations/wizard_jira.html:245 -#: app/templates/integrations/wizard_microsoft_teams.html:99 -#: app/templates/integrations/wizard_outlook_calendar.html:99 -#: app/templates/integrations/wizard_quickbooks.html:221 -#: app/templates/integrations/wizard_trello.html:89 -#: app/templates/integrations/wizard_xero.html:204 -#: app/templates/setup/initial_setup.html:288 -msgid "Finish" -msgstr "Terminar" - -#: app/templates/integrations/wizard_base.html:27 -msgid "Step" -msgstr "Passo" - -#: app/templates/integrations/wizard_github.html:12 -msgid "" -"Create a GitHub OAuth App in Settings → Developer settings → OAuth Apps." -msgstr "" -"Criar um aplicativo GitHub OAuth em Configurações → Configurações do " -"desenvolvedor → OAuth Apps." +#~ msgid "Advanced Time Entry Features" +#~ msgstr "Recursos avançados de entrada de tempo" -#: app/templates/integrations/wizard_github.html:18 -msgid "GitHub OAuth Client ID" -msgstr "ID do Cliente GitHub OAuth" +#~ msgid "Bulk Entry" +#~ msgstr "Entrada em Bulk" -#: app/templates/integrations/wizard_github.html:27 -msgid "GitHub OAuth Client Secret" -msgstr "GitHub OAuth Cliente secreto" +#~ msgid "" +#~ "Create multiple time entries for " +#~ "consecutive days with the same project" +#~ " and duration. Perfect for regular " +#~ "work patterns." +#~ msgstr "" +#~ "Crie várias entradas de tempo para " +#~ "dias consecutivos com o mesmo projeto" +#~ " e duração. Perfeito para padrões de" +#~ " trabalho regulares." -#: app/templates/integrations/wizard_github.html:46 -msgid "Step 2: Repository Selection" -msgstr "Passo 2: Selecção do Repositório" +#~ msgid "Templates" +#~ msgstr "Modelos" -#: app/templates/integrations/wizard_github.html:57 -msgid "" -"Comma-separated list of repositories (e.g., \"octocat/Hello-World\"). Leave " -"empty to sync all accessible repositories." -msgstr "" -"Lista separada por vírgulas de repositórios (por exemplo, \"octocat/Hello-" -"World\"). Deixe em branco para sincronizar todos os repositórios acessíveis." - -#: app/templates/integrations/wizard_github.html:66 -#: app/templates/integrations/wizard_gitlab.html:97 -#: app/templates/integrations/wizard_jira.html:192 -msgid "Create Projects" -msgstr "Criar Projetos" - -#: app/templates/integrations/wizard_github.html:74 -#: app/templates/integrations/wizard_jira.html:82 -#: app/templates/integrations/wizard_quickbooks.html:75 -#: app/templates/integrations/wizard_xero.html:58 -msgid "Step 3: Sync Configuration" -msgstr "Passo 3: Configuração de sincronização" - -#: app/templates/integrations/wizard_github.html:81 -msgid "GitHub → TimeTracker (Import only)" -msgstr "GitHub → TimeTracker (apenas importação)" - -#: app/templates/integrations/wizard_github.html:84 -msgid "TimeTracker → GitHub (Export only)" -msgstr "TimeTracker → GitHub (apenas exportação)" - -#: app/templates/integrations/wizard_github.html:106 -msgid "Pull Requests" -msgstr "Puxar pedidos" - -#: app/templates/integrations/wizard_github.html:112 -msgid "Projects (Repositories)" -msgstr "Projectos (Repositórios)" - -#: app/templates/integrations/wizard_github.html:118 -#: app/templates/integrations/wizard_gitlab.html:154 -msgid "Issue States to Sync" -msgstr "Emitir Estados para Sincronizar" - -#: app/templates/integrations/wizard_github.html:125 -#: app/templates/integrations/wizard_gitlab.html:161 -msgid "Open Issues" -msgstr "Questões abertas" - -#: app/templates/integrations/wizard_github.html:131 -#: app/templates/integrations/wizard_gitlab.html:167 -msgid "Closed Issues" -msgstr "Problemas Fechados" - -#: app/templates/integrations/wizard_github.html:140 -msgid "Step 4: Webhook Setup" -msgstr "Passo 4: Configuração do Webhook" - -#: app/templates/integrations/wizard_github.html:144 -#: app/templates/integrations/wizard_gitlab.html:199 -#: app/templates/payment_gateways/create.html:49 -msgid "Webhook Secret" -msgstr "Segredo do Webhook" - -#: app/templates/integrations/wizard_github.html:148 -#: app/templates/integrations/wizard_gitlab.html:203 -msgid "Enter webhook secret" -msgstr "Digite o segredo do webhook" - -#: app/templates/integrations/wizard_github.html:150 -msgid "" -"Secret token for verifying webhook signatures. Configure this in your GitHub" -" repository webhook settings." -msgstr "" -"Token secreto para verificar assinaturas webhook. Configure isto nas " -"configurações do seu webhook do repositório GitHub." - -#: app/templates/integrations/wizard_github.html:161 -#: app/templates/integrations/wizard_gitlab.html:181 -#: app/templates/integrations/wizard_jira.html:182 -#: app/templates/recurring_tasks/form.html:61 -#: app/templates/reports/index.html:486 -#: app/templates/reports/schedule_form.html:48 -msgid "Weekly" -msgstr "Semanalmente" - -#: app/templates/integrations/wizard_github.html:172 -msgid "Automatically sync when webhooks are received from GitHub" -msgstr "" -"Sincronizar automaticamente quando os webhooks são recebidos do GitHub" +#~ msgid "" +#~ "Save frequently used time entries as " +#~ "templates for quick reuse. Saves " +#~ "project, task, and notes." +#~ msgstr "" +#~ "Salve entradas de tempo frequentemente " +#~ "usadas como modelos para reutilização " +#~ "rápida. Salva projeto, tarefa e notas." -#: app/templates/integrations/wizard_github.html:178 -msgid "Add this URL as a webhook in your GitHub repository settings:" -msgstr "" -"Adicione este URL como um webhook nas configurações do seu repositório " -"GitHub:" +#~ msgid "" +#~ "Visualize your time entries on a " +#~ "calendar. Drag-and-drop to reschedule" +#~ " or click dates to add entries." +#~ msgstr "" +#~ "Visualize seus itens de tempo em " +#~ "um calendário. Arrastar e soltar para" +#~ " remarcar ou clicar datas para " +#~ "adicionar entradas." -#: app/templates/integrations/wizard_github.html:225 -msgid "All repositories" -msgstr "Todos os repositórios" +#~ msgid "Project Information" +#~ msgstr "Informações do Projeto" -#: app/templates/integrations/wizard_gitlab.html:6 -msgid "Step 1: Instance Configuration" -msgstr "Passo 1: Configuração da instância" +#~ msgid "Descriptive project name" +#~ msgstr "Nome do projeto descritivo" -#: app/templates/integrations/wizard_gitlab.html:26 -msgid "You can use GitLab.com or your self-hosted GitLab instance." -msgstr "Você pode usar GitLab.com ou sua instância GitLab self-hosted." +#~ msgid "Associated client organization" +#~ msgstr "Organização de clientes associada" -#: app/templates/integrations/wizard_gitlab.html:34 -#: app/templates/integrations/wizard_microsoft_teams.html:34 -#: app/templates/integrations/wizard_outlook_calendar.html:34 -msgid "Step 2: OAuth Setup" -msgstr "Passo 2: Configuração do OAuth" +#~ msgid "Project details and scope" +#~ msgstr "Detalhes do projeto e âmbito de aplicação" -#: app/templates/integrations/wizard_gitlab.html:40 -msgid "" -"Configure OAuth credentials. Create an application in GitLab Settings → " -"Applications." -msgstr "" -"Configurar credenciais OAuth. Crie uma aplicação em Configurações GitLab → " -"Aplicações." +#~ msgid "Active, completed, or archived" +#~ msgstr "Ativo, completo ou arquivado" -#: app/templates/integrations/wizard_gitlab.html:46 -msgid "GitLab OAuth Client ID" -msgstr "ID do Cliente GitLab OAuth" +#~ msgid "Billing Information" +#~ msgstr "Informações de cobrança" -#: app/templates/integrations/wizard_gitlab.html:55 -msgid "GitLab OAuth Client Secret" -msgstr "GitLab OAuth Cliente secreto" +#~ msgid "Whether time should be tracked for billing" +#~ msgstr "Se o tempo deve ser rastreado para faturamento" -#: app/templates/integrations/wizard_gitlab.html:66 -msgid "" -"Add this URL as an authorized redirect URI in your GitLab application " -"settings:" -msgstr "" -"Adicione este URL como um URI de redirecionamento autorizado nas " -"configurações do seu aplicativo GitLab:" +#~ msgid "Rate for billable time calculations" +#~ msgstr "Taxa para cálculos de tempo billable" -#: app/templates/integrations/wizard_gitlab.html:77 -msgid "Step 3: Repository Selection" -msgstr "Passo 3: Seleção do Repositório" +#~ msgid "Billing Reference" +#~ msgstr "Referência de faturamento" -#: app/templates/integrations/wizard_gitlab.html:81 -msgid "Repository IDs" -msgstr "IDs do repositório" +#~ msgid "PO number or billing code" +#~ msgstr "Número PO ou código de facturação" -#: app/templates/integrations/wizard_gitlab.html:88 -msgid "" -"Comma-separated list of GitLab project IDs to sync. Leave empty to sync all " -"accessible projects." -msgstr "" -"Lista separada por vírgulas de IDs de projeto GitLab para sincronizar. Deixe" -" vazio para sincronizar todos os projetos acessíveis." +#~ msgid "Project Operations" +#~ msgstr "Operações do Projeto" -#: app/templates/integrations/wizard_gitlab.html:101 -msgid "Automatically create projects in TimeTracker from GitLab projects" -msgstr "" -"Crie projetos automaticamente no TimeTracker a partir de projetos GitLab" +#~ msgid "Create new projects with client relationships" +#~ msgstr "Criar novos projetos com relacionamentos com clientes" -#: app/templates/integrations/wizard_gitlab.html:108 -msgid "Step 4: Sync Settings" -msgstr "Passo 4: Configurações de sincronização" +#~ msgid "Edit existing projects to update details" +#~ msgstr "Editar os projetos existentes para atualizar os detalhes" -#: app/templates/integrations/wizard_gitlab.html:117 -msgid "GitLab → TimeTracker (Import only)" -msgstr "GitLab → TimeTracker (apenas importação)" +#~ msgid "Archive projects to hide from timers (preserves data)" +#~ msgstr "Arquivar projetos para esconder dos timers (preserva dados)" -#: app/templates/integrations/wizard_gitlab.html:120 -msgid "TimeTracker → GitLab (Export only)" -msgstr "TimeTracker → GitLab (apenas para exportação)" +#~ msgid "Delete projects (removes all associated time entries)" +#~ msgstr "Apagar os projectos (remove todos os itens de tempo associados)" -#: app/templates/integrations/wizard_gitlab.html:142 -msgid "Merge Requests" -msgstr "Mesclar pedidos" +#~ msgid "Best Practices" +#~ msgstr "Melhores Práticas" -#: app/templates/integrations/wizard_gitlab.html:194 -msgid "Automatically sync when webhooks are received from GitLab" -msgstr "" -"Sincronizar automaticamente quando os webhooks são recebidos do GitLab" +#~ msgid "Use descriptive project names" +#~ msgstr "Usar nomes descritivos do projeto" -#: app/templates/integrations/wizard_gitlab.html:205 -msgid "Secret token for verifying webhook signatures" -msgstr "Token secreto para verificar assinaturas Webhook" +#~ msgid "Set accurate hourly rates for billing" +#~ msgstr "Defina taxas horárias precisas para faturamento" -#: app/templates/integrations/wizard_gitlab.html:221 -msgid "Instance URL" -msgstr "URL da instância" +#~ msgid "Archive instead of delete when possible" +#~ msgstr "Arquivo em vez de excluir quando possível" -#: app/templates/integrations/wizard_jira.html:6 -msgid "Step 1: OAuth Setup & Basic Configuration" -msgstr "Passo 1: Configuração e Configuração Básica do OAuth" +#~ msgid "Use billing references for external tracking" +#~ msgstr "Usar referências de faturamento para o rastreamento externo" -#: app/templates/integrations/wizard_jira.html:12 -msgid "" -"First, configure OAuth credentials for Jira. You can get these from " -"Atlassian Developer Console." -msgstr "" -"Primeiro, configure credenciais OAuth para Jira. Você pode obter isso da " -"Atlassian Developer Console." +#~ msgid "" +#~ "The client management system helps " +#~ "organize your work by client " +#~ "organizations, preventing errors and " +#~ "streamlining project creation." +#~ msgstr "" +#~ "O sistema de gerenciamento de clientes" +#~ " ajuda a organizar seu trabalho por" +#~ " organizações clientes, evitando erros e" +#~ " simplificando a criação de projetos." -#: app/templates/integrations/wizard_jira.html:18 -msgid "Jira OAuth Client ID" -msgstr "ID do Cliente Jira OAuth" +#~ msgid "Client Information" +#~ msgstr "Informação do Cliente" -#: app/templates/integrations/wizard_jira.html:25 -msgid "Get this from Atlassian Developer Console" -msgstr "Obtenha isto da Consola de Desenvolvedores da Atlassian" +#~ msgid "Organization Name" +#~ msgstr "Nome da organização" -#: app/templates/integrations/wizard_jira.html:31 -msgid "Jira OAuth Client Secret" -msgstr "Segredo do Cliente Jira OAuth" +#~ msgid "Company or client name" +#~ msgstr "Nome da empresa ou do cliente" -#: app/templates/integrations/wizard_jira.html:41 -msgid "Jira Instance URL" -msgstr "URL da instância do Jira" +#~ msgid "Primary contact details" +#~ msgstr "Dados de contacto primários" -#: app/templates/integrations/wizard_jira.html:48 -msgid "" -"Your Jira Cloud or Server URL (e.g., https://your-domain.atlassian.net)" -msgstr "" -"A sua URL Jira Cloud ou Server (por exemplo, https://your-" -"domain.atlassian.net)" +#~ msgid "Email & Phone" +#~ msgstr "E- mail e telefone" -#: app/templates/integrations/wizard_jira.html:55 -msgid "" -"Add this URL as an authorized redirect URI in your Jira OAuth app settings:" -msgstr "" -"Adicione esta URL como um URI de redirecionamento autorizado nas " -"configurações do seu aplicativo Jira OAuth:" +#~ msgid "Contact information" +#~ msgstr "Informações de contacto" -#: app/templates/integrations/wizard_jira.html:71 -msgid "" -"Click \"Test Connection\" to verify that Jira is accessible and OAuth " -"credentials are correct." -msgstr "" -"Clique em \"Teste Conexão\" para verificar se Jira está acessível e " -"credenciais OAuth estão corretas." +#~ msgid "Business address" +#~ msgstr "Endereço comercial" -#: app/templates/integrations/wizard_jira.html:86 -msgid "JQL Query" -msgstr "Consulta JQL" +#~ msgid "Benefits" +#~ msgstr "Benefícios" -#: app/templates/integrations/wizard_jira.html:92 -msgid "" -"Jira Query Language query to filter issues to sync. Leave empty to sync all " -"assigned issues." -msgstr "" -"Consulta do Jira Query Language para filtrar problemas para sincronizar. " -"Deixe vazio para sincronizar todos os problemas atribuídos." +#~ msgid "Dropdown selection prevents typos" +#~ msgstr "A seleção suspensa evita erros de digitação" -#: app/templates/integrations/wizard_jira.html:103 -msgid "Jira → TimeTracker (Import only)" -msgstr "Jira → TimeTracker (apenas importação)" +#~ msgid "Default rates auto-populate projects" +#~ msgstr "Taxas por omissão auto- povoam projectos" -#: app/templates/integrations/wizard_jira.html:106 -msgid "TimeTracker → Jira (Export only)" -msgstr "TimeTracker → Jira (apenas exportação)" +#~ msgid "Consistent client naming" +#~ msgstr "Nome de cliente consistente" -#: app/templates/integrations/wizard_jira.html:113 -msgid "Choose how data flows between Jira and TimeTracker" -msgstr "Escolha como os fluxos de dados entre Jira e TimeTracker" +#~ msgid "Easier project organization" +#~ msgstr "Organização do projecto mais fácil" -#: app/templates/integrations/wizard_jira.html:126 -msgid "Issues (Tasks)" -msgstr "Questões (Tarefas)" +#~ msgid "Project Count" +#~ msgstr "Contagem do Projeto" -#: app/templates/integrations/wizard_jira.html:163 -msgid "Automatically sync when webhooks are received from Jira" -msgstr "Sincronizar automaticamente quando os webhooks são recebidos de Jira" +#~ msgid "Total and active projects" +#~ msgstr "Total e projectos activos" -#: app/templates/integrations/wizard_jira.html:196 -msgid "Automatically create projects in TimeTracker from Jira projects" -msgstr "" -"Crie projetos automaticamente no TimeTracker a partir de projetos Jira" +#~ msgid "Total hours worked" +#~ msgstr "Total de horas trabalhadas" -#: app/templates/integrations/wizard_jira.html:208 -msgid "" -"Review your configuration below. Click \"Finish\" to save and complete the " -"setup." -msgstr "" -"Reveja sua configuração abaixo. Clique em \"Terminar\" para salvar e " -"completar a configuração." +#~ msgid "Cost Estimation" +#~ msgstr "Estimativa dos custos" -#: app/templates/integrations/wizard_jira.html:213 -msgid "Jira URL" -msgstr "URL do Jira" +#~ msgid "Estimated billing amounts" +#~ msgstr "Montantes de facturação estimados" -#: app/templates/integrations/wizard_jira.html:265 -#: app/templates/integrations/wizard_trello.html:100 -msgid "Please test the connection before proceeding." -msgstr "Por favor, teste a conexão antes de prosseguir." +#~ msgid "" +#~ "Break down projects into manageable " +#~ "tasks with detailed tracking and " +#~ "progress monitoring." +#~ msgstr "" +#~ "Divida projetos em tarefas gerenciáveis " +#~ "com acompanhamento detalhado e acompanhamento" +#~ " de progresso." -#: app/templates/integrations/wizard_jira.html:277 -msgid "Please enter Jira URL first." -msgstr "Digite o URL do Jira primeiro." +#~ msgid "Task Properties" +#~ msgstr "Propriedades da Tarefa" -#: app/templates/integrations/wizard_microsoft_teams.html:6 -#: app/templates/integrations/wizard_outlook_calendar.html:6 -msgid "Step 1: Tenant ID Configuration" -msgstr "Passo 1: Configuração do ID do inquilino" +#~ msgid "Name & Description" +#~ msgstr "Nome e Descrição" -#: app/templates/integrations/wizard_microsoft_teams.html:12 -#: app/templates/integrations/wizard_outlook_calendar.html:12 -msgid "" -"Enter your Azure AD tenant ID. Use \"common\" for multi-tenant apps or leave" -" empty for default." -msgstr "" -"Introduza a sua identidade de inquilino do Azure AD. Use \"comum\" para " -"aplicativos multi-doentes ou deixe em branco por padrão." +#~ msgid "Clear task identification" +#~ msgstr "Limpar a identificação da tarefa" -#: app/templates/integrations/wizard_microsoft_teams.html:40 -#: app/templates/integrations/wizard_outlook_calendar.html:40 -msgid "Configure OAuth credentials from Azure AD App Registrations." -msgstr "Configure credenciais OAuth do Azure AD App Registrations." +#~ msgid "Priority Levels" +#~ msgstr "Níveis Prioritários" -#: app/templates/integrations/wizard_microsoft_teams.html:46 -msgid "Microsoft Teams OAuth Client ID" -msgstr "ID do Cliente OAuth da Microsoft Teams" +#~ msgid "Low, Medium, High, Urgent" +#~ msgstr "Baixo, Médio, Alto, Urgente" -#: app/templates/integrations/wizard_microsoft_teams.html:55 -msgid "Microsoft Teams OAuth Client Secret" -msgstr "Microsoft Teams OAuth Cliente Secreto" +#~ msgid "Due Dates" +#~ msgstr "Datas de término" -#: app/templates/integrations/wizard_microsoft_teams.html:74 -#: app/templates/integrations/wizard_outlook_calendar.html:74 -#: app/templates/integrations/wizard_trello.html:59 -msgid "Step 3: Review & Save" -msgstr "Passo 3: Reveja e salve" +#~ msgid "Deadline tracking" +#~ msgstr "Acompanhamento de prazo" -#: app/templates/integrations/wizard_outlook_calendar.html:46 -msgid "Outlook Calendar OAuth Client ID" -msgstr "Calendário do Outlook ID do Cliente OAuth" +#~ msgid "Assignment" +#~ msgstr "Atribuição" -#: app/templates/integrations/wizard_outlook_calendar.html:55 -msgid "Outlook Calendar OAuth Client Secret" -msgstr "Calendário do Outlook OAuth Cliente Secreto" +#~ msgid "Task ownership" +#~ msgstr "Propriedade da Tarefa" -#: app/templates/integrations/wizard_outlook_calendar.html:78 -msgid "" -"Review your configuration and click \"Finish\" to save. After saving, users " -"can connect their Outlook Calendar accounts." -msgstr "" -"Reveja sua configuração e clique em \"Terminar\" para salvar. Após salvar, " -"os usuários podem conectar suas contas do calendário do Outlook." +#~ msgid "Status Tracking" +#~ msgstr "Rastreamento de status" -#: app/templates/integrations/wizard_quickbooks.html:6 -#: app/templates/integrations/wizard_xero.html:6 -msgid "Step 1: OAuth Connection" -msgstr "Passo 1: Conexão OAuth" +#~ msgid "To Do - Not started" +#~ msgstr "Fazer - Não iniciado" -#: app/templates/integrations/wizard_quickbooks.html:12 -msgid "Configure OAuth credentials from Intuit Developer Dashboard." -msgstr "Configure credenciais OAuth do Painel Intuit Developer." +#~ msgid "In Progress - Currently working" +#~ msgstr "Em Progresso - Atualmente trabalhando" -#: app/templates/integrations/wizard_quickbooks.html:18 -msgid "QuickBooks OAuth Client ID" -msgstr "ID do Cliente OAuth dos QuickBooks" +#~ msgid "Review - Ready for review" +#~ msgstr "Revisão - Pronto para revisão" -#: app/templates/integrations/wizard_quickbooks.html:27 -msgid "QuickBooks OAuth Client Secret" -msgstr "QuickBooks OAuth Cliente Secreto" +#~ msgid "Done - Completed" +#~ msgstr "Concluído - Concluído" -#: app/templates/integrations/wizard_quickbooks.html:38 -msgid "" -"After saving OAuth credentials, you will need to connect your QuickBooks " -"account via OAuth." -msgstr "" -"Após salvar credenciais OAuth, você precisará conectar sua conta QuickBooks " -"via OAuth." +#~ msgid "Cancelled - Not needed" +#~ msgstr "Cancelado - Não é necessário" -#: app/templates/integrations/wizard_quickbooks.html:46 -msgid "Step 2: Company Selection" -msgstr "Passo 2: Seleção da empresa" +#~ msgid "Time Tracking Features" +#~ msgstr "Características do Rastreamento do Tempo" -#: app/templates/integrations/wizard_quickbooks.html:50 -msgid "Company ID (Realm ID)" -msgstr "ID da empresa (ID real)" +#~ msgid "Start timers directly from tasks" +#~ msgstr "Iniciar os cronómetros directamente das tarefas" -#: app/templates/integrations/wizard_quickbooks.html:57 -msgid "" -"Find your company ID (realm ID) in QuickBooks after connecting via OAuth." -msgstr "" -"Encontre seu ID da empresa (ID realm) em QuickBooks depois de conectar via " -"OAuth." +#~ msgid "Link time entries to specific tasks" +#~ msgstr "Link time entradas para tarefas específicas" -#: app/templates/integrations/wizard_quickbooks.html:65 -msgid "Use Sandbox" -msgstr "Usar caixa de areia" +#~ msgid "Track estimated vs actual hours" +#~ msgstr "Faixa estimada vs horas reais" -#: app/templates/integrations/wizard_quickbooks.html:68 -msgid "Use QuickBooks sandbox environment for testing" -msgstr "Usar o ambiente da caixa de areia do QuickBooks para testar" +#~ msgid "Monitor task progress automatically" +#~ msgstr "Monitorar o progresso da tarefa automaticamente" -#: app/templates/integrations/wizard_quickbooks.html:82 -msgid "QuickBooks → TimeTracker (Import only)" -msgstr "QuickBooks → TimeTracker (apenas importação)" +#~ msgid "Task Views" +#~ msgstr "Áreas de Tarefa" -#: app/templates/integrations/wizard_quickbooks.html:85 -msgid "TimeTracker → QuickBooks (Export only)" -msgstr "TimeTracker → QuickBooks (apenas exportação)" +#~ msgid "My Tasks - Your assigned tasks" +#~ msgstr "Minhas Tarefas - Suas tarefas atribuídas" -#: app/templates/integrations/wizard_quickbooks.html:119 -msgid "Customers" -msgstr "Clientes" +#~ msgid "All Tasks - Complete task list" +#~ msgstr "Todas as Tarefas - Lista de tarefas completa" -#: app/templates/integrations/wizard_quickbooks.html:145 -#: app/templates/integrations/wizard_xero.html:128 -msgid "Step 4: Account Mappings" -msgstr "Passo 4: Mapeamentos de Contas" +#~ msgid "Overdue Tasks - Past due items" +#~ msgstr "Tarefas Excedidas - Itens vencidos" -#: app/templates/integrations/wizard_quickbooks.html:149 -msgid "Default Expense Account ID" -msgstr "ID da conta de despesas padrão" +#~ msgid "Project Tasks - Tasks within projects" +#~ msgstr "Tarefas do Projeto - Tarefas dentro de projetos" -#: app/templates/integrations/wizard_quickbooks.html:156 -msgid "" -"QuickBooks account ID to use for expenses when no mapping is configured" -msgstr "" -"ID da conta do QuickBooks a usar para despesas quando nenhum mapeamento " -"estiver configurado" - -#: app/templates/integrations/wizard_quickbooks.html:162 -msgid "Customer Mappings" -msgstr "Mapeamentos de Clientes" - -#: app/templates/integrations/wizard_quickbooks.html:162 -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:145 -#: app/templates/integrations/wizard_xero.html:157 -msgid "JSON" -msgstr "JSON" - -#: app/templates/integrations/wizard_quickbooks.html:168 -msgid "Map TimeTracker client IDs to QuickBooks customer IDs (JSON format)" -msgstr "" -"Map TimeTracker IDs do cliente para QuickBooks IDs do cliente (formato JSON)" +#~ msgid "Collaboration Features" +#~ msgstr "Características de Colaboração" -#: app/templates/integrations/wizard_quickbooks.html:174 -#: app/templates/integrations/wizard_xero.html:157 -msgid "Account Mappings" -msgstr "Mapeamentos de Contas" +#~ msgid "Task Comments - Threaded discussions on tasks" +#~ msgstr "Comentários da tarefa - Debates tópicos sobre tarefas" -#: app/templates/integrations/wizard_quickbooks.html:180 -msgid "" -"Map TimeTracker expense category IDs to QuickBooks account IDs (JSON format)" -msgstr "" -"Map TimeTracker IDs de categoria de despesa para IDs de conta do QuickBooks " -"(formato JSON)" +#~ msgid "Markdown Support - Rich formatting in descriptions" +#~ msgstr "Suporte Markdown - Formatação rica em descrições" -#: app/templates/integrations/wizard_quickbooks.html:196 -msgid "Company ID" -msgstr "ID da empresa" +#~ msgid "User Mentions - Tag team members (if enabled)" +#~ msgstr "Menções do Usuário - Membros da equipe de tags (se habilitado)" -#: app/templates/integrations/wizard_trello.html:6 -msgid "Step 1: API Keys Setup" -msgstr "Passo 1: Configuração das Chaves da API" +#~ msgid "File Attachments - Attach files to tasks (if enabled)" +#~ msgstr "Anexos de arquivos - Anexar arquivos às tarefas (se habilitado)" -#: app/templates/integrations/wizard_trello.html:12 -msgid "Get your API key and secret from" -msgstr "Obtenha sua chave de API e segredo de" +#~ msgid "Markdown Formatting" +#~ msgstr "Formatação de Marcação" -#: app/templates/integrations/wizard_trello.html:23 -msgid "Enter API Key" -msgstr "Digite a tecla API" +#~ msgid "Task and project descriptions support Markdown:" +#~ msgstr "As descrições da tarefa e do projeto suportam Markdown:" -#: app/templates/integrations/wizard_trello.html:32 -msgid "Enter API Secret" -msgstr "Digite o Segredo da API" +#~ msgid "**Bold**, *Italic*, ~~Strikethrough~~" +#~ msgstr "**Bold**, *Itálico*, ~~Strikethrough~" -#: app/templates/integrations/wizard_trello.html:34 -msgid "Generate a token after creating the API key" -msgstr "Gerar um token após criar a chave API" +#~ msgid "# Headings, - Lists, [Links](url)" +#~ msgstr "# Títulos, - Listas, [Links](url)" -#: app/templates/integrations/wizard_trello.html:48 -msgid "" -"Click \"Test Connection\" to verify that your Trello API credentials are " -"correct." -msgstr "" -"Clique em \"Teste Conexão\" para verificar se suas credenciais da API Trello" -" estão corretas." +#~ msgid "```code blocks```, tables, images" +#~ msgstr "«``code blocks``, tabelas, imagens" -#: app/templates/integrations/wizard_trello.html:67 -#: app/templates/payment_gateways/create.html:39 -msgid "API Key" -msgstr "Chave de API" +#~ msgid "" +#~ "Visualize your workflow with a drag-" +#~ "and-drop Kanban board for intuitive " +#~ "task management." +#~ msgstr "" +#~ "Visualize seu fluxo de trabalho com " +#~ "uma placa de arrastar e soltar " +#~ "Kanban para gerenciamento de tarefas " +#~ "intuitivas." -#: app/templates/integrations/wizard_trello.html:72 -msgid "Not tested" -msgstr "Não testado" +#~ msgid "Board Features" +#~ msgstr "Características do Tabuleiro" -#: app/templates/integrations/wizard_trello.html:92 -msgid "Connection failed" -msgstr "A ligação falhou" +#~ msgid "Customizable columns matching task statuses" +#~ msgstr "Status de tarefa de colunas personalizáveis" -#: app/templates/integrations/wizard_xero.html:12 -msgid "Configure OAuth credentials from Xero Developer Portal." -msgstr "Configure credenciais OAuth do Xero Developer Portal." +#~ msgid "Drag-and-drop tasks between columns" +#~ msgstr "Arrastar e soltar tarefas entre colunas" -#: app/templates/integrations/wizard_xero.html:18 -msgid "Xero OAuth Client ID" -msgstr "ID do Cliente Xero OAuth" +#~ msgid "Filter by project, user, or priority" +#~ msgstr "Filtrar por projeto, usuário ou prioridade" -#: app/templates/integrations/wizard_xero.html:27 -msgid "Xero OAuth Client Secret" -msgstr "Xero OAuth Cliente secreto" +#~ msgid "Quick search across all tasks" +#~ msgstr "Pesquisa rápida em todas as tarefas" -#: app/templates/integrations/wizard_xero.html:39 -msgid "Step 2: Tenant Selection" -msgstr "Passo 2: Seleção de inquilinos" +#~ msgid "Using the Kanban Board" +#~ msgstr "Usando o tabuleiro de Kanban" -#: app/templates/integrations/wizard_xero.html:50 -msgid "" -"Find your tenant ID (organisation ID) in Xero after connecting via OAuth." -msgstr "" -"Encontre sua identidade de inquilino (ID de organização) em Xero após a " -"conexão via OAuth." +#~ msgid "Access from the Tasks menu or project page" +#~ msgstr "Acesso a partir do menu de tarefas ou página de projeto" -#: app/templates/integrations/wizard_xero.html:65 -msgid "Xero → TimeTracker (Import only)" -msgstr "Xero → TimeTracker (apenas importação)" +#~ msgid "Drag tasks to different columns to change status" +#~ msgstr "Arrastar tarefas para diferentes colunas para alterar o estado" -#: app/templates/integrations/wizard_xero.html:68 -msgid "TimeTracker → Xero (Export only)" -msgstr "TimeTracker → Xero (apenas exportação)" +#~ msgid "Click on a task card to view/edit details" +#~ msgstr "Clique em uma placa de tarefa para visualizar/editar detalhes" -#: app/templates/integrations/wizard_xero.html:132 -msgid "Default Expense Account Code" -msgstr "Código da conta de despesas padrão" +#~ msgid "Use filters to focus on specific work" +#~ msgstr "Usar filtros para focar em trabalho específico" -#: app/templates/integrations/wizard_xero.html:139 -msgid "Xero account code to use for expenses when no mapping is configured" -msgstr "" -"Código da conta Xero a usar para despesas quando não estiver configurado " -"nenhum mapeamento" +#~ msgid "" +#~ "The Kanban board is perfect for " +#~ "sprint planning and daily standups. Each" +#~ " column represents a stage in your" +#~ " workflow!" +#~ msgstr "" +#~ "O tabuleiro Kanban é perfeito para " +#~ "planejamento de sprints e standups " +#~ "diários. Cada coluna representa um " +#~ "estágio em seu fluxo de trabalho!" -#: app/templates/integrations/wizard_xero.html:145 -msgid "Contact Mappings" -msgstr "Mapeamentos de Contato" +#~ msgid "Expense Tracking" +#~ msgstr "Acompanhamento das Despesas" -#: app/templates/integrations/wizard_xero.html:151 -msgid "Map TimeTracker client IDs to Xero Contact IDs (JSON format)" -msgstr "Map TimeTracker IDs do cliente para Xero Contact IDs (formato JSON)" +#~ msgid "" +#~ "Track business expenses, manage receipts, " +#~ "and handle reimbursements efficiently." +#~ msgstr "" +#~ "Acompanhe as despesas de negócios, " +#~ "gerencie recibos e lide com reembolsos" +#~ " de forma eficiente." -#: app/templates/integrations/wizard_xero.html:163 -msgid "" -"Map TimeTracker expense category IDs to Xero account codes (JSON format)" -msgstr "" -"Map TimeTracker IDs de categoria de despesa para códigos de conta Xero " -"(formato JSON)" - -#: app/templates/inventory/adjustments/form.html:23 -#: app/templates/inventory/adjustments/list.html:30 -#: app/templates/inventory/movements/form.html:44 -#: app/templates/inventory/purchase_orders/form.html:77 -#: app/templates/inventory/reports/movement_history.html:30 -#: app/templates/inventory/transfers/form.html:23 -msgid "Stock Item" -msgstr "Número da unidade populacional" - -#: app/templates/inventory/adjustments/form.html:25 -#: app/templates/inventory/movements/form.html:46 -#: app/templates/inventory/purchase_orders/form.html:122 -#: app/templates/inventory/transfers/form.html:25 -msgid "Select Item" -msgstr "Selecionar item" - -#: app/templates/inventory/adjustments/form.html:32 -#: app/templates/inventory/adjustments/list.html:21 -#: app/templates/inventory/adjustments/list.html:58 -#: app/templates/inventory/adjustments/list.html:73 -#: app/templates/inventory/low_stock/list.html:22 -#: app/templates/inventory/low_stock/list.html:34 -#: app/templates/inventory/movements/form.html:53 -#: app/templates/inventory/movements/list.html:56 -#: app/templates/inventory/movements/list.html:74 -#: app/templates/inventory/purchase_orders/form.html:82 -#: app/templates/inventory/reports/low_stock.html:31 -#: app/templates/inventory/reports/low_stock.html:48 -#: app/templates/inventory/reports/movement_history.html:21 -#: app/templates/inventory/reports/movement_history.html:72 -#: app/templates/inventory/reports/movement_history.html:90 -#: app/templates/inventory/reports/valuation.html:21 -#: app/templates/inventory/reports/valuation.html:57 -#: app/templates/inventory/reports/valuation.html:69 -#: app/templates/inventory/reservations/list.html:40 -#: app/templates/inventory/reservations/list.html:58 -#: app/templates/inventory/stock_items/history.html:22 -#: app/templates/inventory/stock_items/history.html:63 -#: app/templates/inventory/stock_items/history.html:76 -#: app/templates/inventory/stock_items/view.html:129 -#: app/templates/inventory/stock_items/view.html:139 -#: app/templates/inventory/stock_items/view.html:241 -#: app/templates/inventory/stock_items/view.html:255 -#: app/templates/inventory/stock_levels/item.html:23 -#: app/templates/inventory/stock_levels/item.html:34 -#: app/templates/inventory/stock_levels/list.html:20 -#: app/templates/inventory/stock_levels/list.html:47 -#: app/templates/inventory/stock_levels/list.html:58 -#: app/templates/kiosk/dashboard.html:150 app/templates/quotes/create.html:63 -#: app/templates/quotes/edit.html:68 -msgid "Warehouse" -msgstr "Armazém" - -#: app/templates/inventory/adjustments/form.html:34 -#: app/templates/inventory/movements/form.html:55 -#: app/templates/inventory/purchase_orders/form.html:131 -#: app/templates/invoices/edit.html:105 app/templates/quotes/edit.html:98 -msgid "Select Warehouse" -msgstr "Seleccionar o Armazém" - -#: app/templates/inventory/adjustments/form.html:41 -msgid "Adjustment Quantity" -msgstr "Quantidade de ajustamento" - -#: app/templates/inventory/adjustments/form.html:43 -msgid "Use positive values to increase stock, negative values to decrease" -msgstr "" -"Usar valores positivos para aumentar o estoque, valores negativos para " -"diminuir" - -#: app/templates/inventory/adjustments/form.html:47 -msgid "e.g., Physical count correction, Damage, Found items" -msgstr "Por exemplo, correção de contagem física, Danos, itens encontrados" - -#: app/templates/inventory/adjustments/form.html:51 -msgid "Additional details about this adjustment" -msgstr "Informações adicionais sobre este ajustamento" - -#: app/templates/inventory/adjustments/form.html:59 -msgid "Record Adjustment" -msgstr "Ajuste do Registro" - -#: app/templates/inventory/adjustments/list.html:23 -#: app/templates/inventory/reports/movement_history.html:23 -#: app/templates/inventory/reports/valuation.html:23 -#: app/templates/inventory/stock_items/history.html:24 -#: app/templates/inventory/stock_levels/list.html:22 -msgid "All Warehouses" -msgstr "Todos os Armazéns" - -#: app/templates/inventory/adjustments/list.html:32 -#: app/templates/inventory/reports/movement_history.html:32 -msgid "All Items" -msgstr "Todos os itens" - -#: app/templates/inventory/adjustments/list.html:39 -#: app/templates/inventory/reports/movement_history.html:53 -#: app/templates/inventory/reports/turnover.html:21 -#: app/templates/inventory/stock_items/history.html:45 -#: app/templates/inventory/transfers/list.html:21 -msgid "Date From" -msgstr "Data De" - -#: app/templates/inventory/adjustments/list.html:46 -#: app/templates/inventory/reports/movement_history.html:60 -#: app/templates/inventory/reports/turnover.html:25 -#: app/templates/inventory/stock_items/history.html:52 -#: app/templates/inventory/transfers/list.html:25 -msgid "Date To" -msgstr "Data A" - -#: app/templates/inventory/adjustments/list.html:57 -#: app/templates/inventory/adjustments/list.html:68 -#: app/templates/inventory/low_stock/list.html:23 -#: app/templates/inventory/low_stock/list.html:35 -#: app/templates/inventory/movements/list.html:55 -#: app/templates/inventory/movements/list.html:69 -#: app/templates/inventory/purchase_orders/view.html:90 -#: app/templates/inventory/purchase_orders/view.html:101 -#: app/templates/inventory/reports/low_stock.html:29 -#: app/templates/inventory/reports/low_stock.html:42 -#: app/templates/inventory/reports/movement_history.html:71 -#: app/templates/inventory/reports/movement_history.html:85 -#: app/templates/inventory/reports/turnover.html:44 -#: app/templates/inventory/reports/turnover.html:55 -#: app/templates/inventory/reports/valuation.html:58 -#: app/templates/inventory/reports/valuation.html:74 -#: app/templates/inventory/reservations/list.html:39 -#: app/templates/inventory/reservations/list.html:53 -#: app/templates/inventory/stock_levels/list.html:48 -#: app/templates/inventory/stock_levels/list.html:59 -#: app/templates/inventory/stock_levels/warehouse.html:45 -#: app/templates/inventory/stock_levels/warehouse.html:58 -#: app/templates/inventory/suppliers/view.html:114 -#: app/templates/inventory/suppliers/view.html:125 -#: app/templates/inventory/transfers/list.html:39 -#: app/templates/inventory/transfers/list.html:54 -#: app/templates/inventory/warehouses/view.html:84 -#: app/templates/inventory/warehouses/view.html:95 -#: app/templates/inventory/warehouses/view.html:130 -#: app/templates/inventory/warehouses/view.html:140 -msgid "Item" -msgstr "Item" - -#: app/templates/inventory/adjustments/list.html:87 -msgid "No adjustments found." -msgstr "Não foram encontrados ajustes." - -#: app/templates/inventory/low_stock/list.html:24 -#: app/templates/inventory/low_stock/list.html:40 -#: app/templates/inventory/stock_items/view.html:130 -#: app/templates/inventory/stock_items/view.html:144 -#: app/templates/inventory/stock_levels/list.html:49 -#: app/templates/inventory/stock_levels/list.html:64 -#: app/templates/inventory/warehouses/view.html:86 -#: app/templates/inventory/warehouses/view.html:101 -msgid "On Hand" -msgstr "Na Mão" - -#: app/templates/inventory/low_stock/list.html:25 -#: app/templates/inventory/low_stock/list.html:41 -#: app/templates/inventory/reports/low_stock.html:33 -#: app/templates/inventory/reports/low_stock.html:54 -#: app/templates/inventory/stock_items/form.html:69 -#: app/templates/inventory/stock_items/view.html:91 -#: app/templates/inventory/stock_levels/warehouse.html:51 -#: app/templates/inventory/stock_levels/warehouse.html:70 -msgid "Reorder Point" -msgstr "Ponto de Reordenação" - -#: app/templates/inventory/low_stock/list.html:26 -#: app/templates/inventory/low_stock/list.html:42 -#: app/templates/inventory/reports/low_stock.html:34 -#: app/templates/inventory/reports/low_stock.html:55 -msgid "Shortfall" -msgstr "Falta" - -#: app/templates/inventory/low_stock/list.html:27 -#: app/templates/inventory/low_stock/list.html:43 -msgid "Reorder Qty" -msgstr "Reordenar o Qty" - -#: app/templates/inventory/low_stock/list.html:55 -msgid "No low stock alerts. All items are above reorder point." -msgstr "" -"Não há alertas baixos. Todos os itens estão acima do ponto de reordenação." - -#: app/templates/inventory/movements/form.html:20 -msgid "Use a positive quantity (items coming back)" -msgstr "Use uma quantidade positiva (itens voltando)" - -#: app/templates/inventory/movements/form.html:21 -msgid "Use a negative quantity (items written off)" -msgstr "Usar uma quantidade negativa (itens apagados)" - -#: app/templates/inventory/movements/form.html:22 -msgid "Quantity to revalue (positive)" -msgstr "Quantidade a revalorizar (positivo)" - -#: app/templates/inventory/movements/form.html:23 -#: app/templates/inventory/movements/form.html:64 -msgid "Use positive values for additions, negative for removals" -msgstr "Usar valores positivos para adições, negativos para remoções" - -#: app/templates/inventory/movements/form.html:24 -msgid "Return requires a positive quantity." -msgstr "O retorno requer uma quantidade positiva." - -#: app/templates/inventory/movements/form.html:25 -msgid "Waste requires a negative quantity." -msgstr "Os resíduos requerem uma quantidade negativa." - -#: app/templates/inventory/movements/form.html:26 -msgid "Devaluation requires a trackable item with a default cost." -msgstr "A desvalorização requer um item rastreável com um custo padrão." - -#: app/templates/inventory/movements/form.html:30 -#: app/templates/inventory/movements/list.html:21 -#: app/templates/inventory/reports/movement_history.html:39 -#: app/templates/inventory/stock_items/history.html:31 -msgid "Movement Type" -msgstr "Tipo de Movimento" - -#: app/templates/inventory/movements/form.html:37 -#: app/templates/inventory/movements/list.html:29 -#: app/templates/inventory/reports/movement_history.html:47 -#: app/templates/inventory/stock_items/history.html:39 -msgid "Return" -msgstr "Voltar" - -#: app/templates/inventory/movements/form.html:38 -#: app/templates/inventory/movements/list.html:30 -#: app/templates/inventory/reports/movement_history.html:48 -#: app/templates/inventory/stock_items/history.html:40 -msgid "Waste" -msgstr "Resíduos" - -#: app/templates/inventory/movements/form.html:39 -#: app/templates/inventory/movements/form.html:73 -#: app/templates/inventory/movements/list.html:31 -#: app/templates/inventory/reports/movement_history.html:49 -#: app/templates/inventory/stock_items/history.html:41 -#: app/templates/inventory/stock_items/view.html:180 -#: app/templates/inventory/stock_items/view.html:191 -msgid "Devaluation" -msgstr "Desvalorização" - -#: app/templates/inventory/movements/form.html:41 -msgid "" -"You can apply devaluation below to record returned or wasted items at a " -"reduced cost." -msgstr "" -"Você pode aplicar desvalorização abaixo para registrar itens retornados ou " -"desperdiçados com um custo reduzido." - -#: app/templates/inventory/movements/form.html:74 -msgid "Devalue items without creating a new stock item" -msgstr "Desvalorizar os itens sem criar um novo item de stock" - -#: app/templates/inventory/movements/form.html:78 -msgid "Apply devaluation" -msgstr "Aplicar a desvalorização" - -#: app/templates/inventory/movements/form.html:84 -#: app/templates/payments/list.html:158 -msgid "Method" -msgstr "Método" - -#: app/templates/inventory/movements/form.html:86 -msgid "Percent off default cost" -msgstr "Percentar o custo padrão" - -#: app/templates/inventory/movements/form.html:87 -msgid "Fixed new unit cost" -msgstr "Novo custo unitário fixo" - -#: app/templates/inventory/movements/form.html:92 -msgid "Percent" -msgstr "Percentagem" - -#: app/templates/inventory/movements/form.html:94 -msgid "Example: 30 = reduce cost by 30%" -msgstr "Exemplo: 30 = reduzir o custo em 30%" - -#: app/templates/inventory/movements/form.html:98 -msgid "New Unit Cost" -msgstr "Novo custo unitário" - -#: app/templates/inventory/movements/form.html:105 -msgid "e.g., Physical count correction" -msgstr "Por exemplo, correcção da contagem física" - -#: app/templates/inventory/movements/form.html:117 -msgid "Record Movement" -msgstr "Movimento de Registros" - -#: app/templates/inventory/movements/list.html:35 -msgid "Reference Type" -msgstr "Tipo de referência" - -#: app/templates/inventory/movements/list.html:41 -#: app/templates/timer/edit_timer.html:312 -#: app/templates/timer/edit_timer.html:435 -msgid "Manual" -msgstr "Manual" - -#: app/templates/inventory/movements/list.html:59 -#: app/templates/inventory/movements/list.html:105 -#: app/templates/inventory/purchase_orders/form.html:80 -#: app/templates/inventory/purchase_orders/view.html:94 -#: app/templates/inventory/purchase_orders/view.html:115 -#: app/templates/inventory/reports/movement_history.html:75 -#: app/templates/inventory/reports/movement_history.html:121 -#: app/templates/inventory/reports/valuation.html:62 -#: app/templates/inventory/reports/valuation.html:82 -#: app/templates/inventory/stock_items/form.html:113 -#: app/templates/inventory/stock_items/form.html:164 -#: app/templates/inventory/stock_items/history.html:66 -#: app/templates/inventory/stock_items/history.html:107 -#: app/templates/inventory/stock_items/view.html:179 -#: app/templates/inventory/stock_items/view.html:190 -#: app/templates/inventory/suppliers/view.html:116 -#: app/templates/inventory/suppliers/view.html:131 -msgid "Unit Cost" -msgstr "Custo unitário" - -#: app/templates/inventory/movements/list.html:60 -#: app/templates/inventory/movements/list.html:127 -#: app/templates/inventory/reports/movement_history.html:76 -#: app/templates/inventory/reports/movement_history.html:143 -#: app/templates/inventory/reservations/list.html:43 -#: app/templates/inventory/reservations/list.html:65 -#: app/templates/inventory/stock_items/history.html:67 -#: app/templates/inventory/stock_items/history.html:129 -msgid "Reference" -msgstr "Referência" - -#: app/templates/inventory/movements/list.html:97 -#: app/templates/inventory/reports/movement_history.html:113 -#: app/templates/inventory/stock_items/history.html:99 -#: app/templates/inventory/stock_items/view.html:205 -msgid "Devalued" -msgstr "Desvalorizado" - -#: app/templates/inventory/movements/list.html:150 -msgid "No stock movements found." -msgstr "Nenhum movimento de ações encontrado." - -#: app/templates/inventory/purchase_orders/form.html:29 -#: app/templates/inventory/purchase_orders/list.html:32 -#: app/templates/inventory/purchase_orders/list.html:51 -#: app/templates/inventory/purchase_orders/list.html:67 -#: app/templates/inventory/purchase_orders/view.html:50 -msgid "Supplier" -msgstr "Fornecedor" - -#: app/templates/inventory/purchase_orders/form.html:31 -#: app/templates/inventory/stock_items/form.html:107 -#: app/templates/inventory/stock_items/form.html:155 -msgid "Select Supplier" -msgstr "Selecionar fornecedor" - -#: app/templates/inventory/purchase_orders/form.html:38 -#: app/templates/inventory/purchase_orders/list.html:52 -#: app/templates/inventory/purchase_orders/list.html:72 -#: app/templates/inventory/purchase_orders/view.html:58 -msgid "Order Date" -msgstr "Data de pedido" - -#: app/templates/inventory/purchase_orders/form.html:42 -msgid "Expected Delivery Date" -msgstr "Data de entrega prevista" - -#: app/templates/inventory/purchase_orders/form.html:56 -msgid "Notes visible to supplier" -msgstr "Notas visíveis para o fornecedor" - -#: app/templates/inventory/purchase_orders/form.html:60 -msgid "Internal notes (not visible to supplier)" -msgstr "Notas internas (não visíveis ao fornecedor)" - -#: app/templates/inventory/purchase_orders/form.html:69 -#: app/templates/inventory/purchase_orders/view.html:85 -#: app/templates/invoices/edit.html:334 -msgid "Items" -msgstr "Itens" - -#: app/templates/inventory/purchase_orders/form.html:72 -#: app/templates/invoices/edit.html:66 -msgid "Add Item" -msgstr "Adicionar Item" - -#: app/templates/inventory/purchase_orders/form.html:79 -#: app/templates/inventory/purchase_orders/form.html:148 -#: app/templates/invoices/edit.html:235 app/templates/invoices/edit.html:260 -#: app/templates/invoices/edit.html:620 app/templates/quotes/create.html:65 -#: app/templates/quotes/create.html:128 app/templates/quotes/edit.html:70 -#: app/templates/quotes/edit.html:108 app/templates/quotes/edit.html:202 -msgid "Qty" -msgstr "Qty" - -#: app/templates/inventory/purchase_orders/form.html:83 -#: app/templates/inventory/purchase_orders/form.html:152 -#: app/templates/inventory/stock_items/form.html:112 -#: app/templates/inventory/stock_items/form.html:163 -#: app/templates/inventory/suppliers/view.html:115 -#: app/templates/inventory/suppliers/view.html:130 -msgid "Supplier SKU" -msgstr "Fornecedor SKU" - -#: app/templates/inventory/purchase_orders/form.html:104 -msgid "Create Purchase Order" -msgstr "Criar Ordem de Compra" - -#: app/templates/inventory/purchase_orders/list.html:24 -#: app/templates/inventory/purchase_orders/list.html:76 -#: app/templates/inventory/purchase_orders/view.html:37 -#: app/templates/invoices/list.html:129 -#: app/templates/quotes/_quotes_list.html:62 app/templates/quotes/list.html:81 -#: app/templates/quotes/view.html:71 app/utils/i18n_helpers.py:64 -#: app/utils/i18n_helpers.py:76 -msgid "Draft" -msgstr "Rascunho" - -#: app/templates/inventory/purchase_orders/list.html:25 -#: app/templates/inventory/purchase_orders/list.html:78 -#: app/templates/inventory/purchase_orders/view.html:39 -#: app/templates/invoices/list.html:130 -#: app/templates/quotes/_quotes_list.html:64 app/templates/quotes/list.html:82 -#: app/templates/quotes/view.html:73 app/utils/i18n_helpers.py:65 -#: app/utils/i18n_helpers.py:77 -msgid "Sent" -msgstr "Enviado" - -#: app/templates/inventory/purchase_orders/list.html:26 -#: app/templates/inventory/purchase_orders/list.html:80 -#: app/templates/inventory/purchase_orders/view.html:41 -msgid "Confirmed" -msgstr "Confirmado" - -#: app/templates/inventory/purchase_orders/list.html:27 -#: app/templates/inventory/purchase_orders/list.html:82 -#: app/templates/inventory/purchase_orders/view.html:43 -#: app/templates/inventory/purchase_orders/view.html:162 -msgid "Received" -msgstr "Recebido" - -#: app/templates/inventory/purchase_orders/list.html:34 -msgid "All Suppliers" -msgstr "Todos os Fornecedores" - -#: app/templates/inventory/purchase_orders/list.html:50 -#: app/templates/inventory/purchase_orders/list.html:62 -#: app/templates/inventory/purchase_orders/view.html:30 -msgid "PO Number" -msgstr "Número PO" - -#: app/templates/inventory/purchase_orders/list.html:53 -#: app/templates/inventory/purchase_orders/list.html:73 -#: app/templates/inventory/purchase_orders/view.html:63 -msgid "Expected Delivery" -msgstr "Entrega prevista" - -#: app/templates/inventory/purchase_orders/list.html:99 -msgid "No purchase orders found." -msgstr "Não foram encontrados pedidos de compra." - -#: app/templates/inventory/purchase_orders/view.html:19 -msgid "Are you sure you want to cancel this purchase order?" -msgstr "Tem certeza de que deseja cancelar este pedido de compra?" - -#: app/templates/inventory/purchase_orders/view.html:20 -msgid "Are you sure you want to delete this purchase order?" -msgstr "Tem certeza de que deseja excluir esta ordem de compra?" - -#: app/templates/inventory/purchase_orders/view.html:27 -msgid "Purchase Order Details" -msgstr "Detalhes da Ordem de Compra" - -#: app/templates/inventory/purchase_orders/view.html:69 -#: app/templates/inventory/purchase_orders/view.html:153 -msgid "Received Date" -msgstr "Data de recepção" - -#: app/templates/inventory/purchase_orders/view.html:92 -#: app/templates/inventory/purchase_orders/view.html:111 -msgid "Quantity Ordered" -msgstr "Quantidade Ordenada" - -#: app/templates/inventory/purchase_orders/view.html:93 -#: app/templates/inventory/purchase_orders/view.html:112 -msgid "Quantity Received" -msgstr "Quantidade Recebida" - -#: app/templates/inventory/purchase_orders/view.html:95 -#: app/templates/inventory/purchase_orders/view.html:116 -msgid "Line Total" -msgstr "Total da Linha" - -#: app/templates/inventory/purchase_orders/view.html:127 -msgid "Shipping" -msgstr "Transporte" - -#: app/templates/inventory/purchase_orders/view.html:149 -msgid "Receive Purchase Order" -msgstr "Receber ordem de compra" - -#: app/templates/inventory/purchase_orders/view.html:167 -msgid "Mark as Received" -msgstr "Marcar como Recebido" - -#: app/templates/inventory/purchase_orders/view.html:174 -msgid "No items in this purchase order." -msgstr "Nenhum item nesta ordem de compra." - -#: app/templates/inventory/purchase_orders/view.html:185 -#: app/templates/inventory/reports/dashboard.html:21 -#: app/templates/inventory/warehouses/view.html:168 -msgid "Total Items" -msgstr "Total de Itens" - -#: app/templates/inventory/reports/dashboard.html:33 -msgid "Total Warehouses" -msgstr "Total dos Armazéns" - -#: app/templates/inventory/reports/dashboard.html:45 -msgid "Total Inventory Value" -msgstr "Valor total do inventário" - -#: app/templates/inventory/reports/dashboard.html:57 -msgid "Low Stock Items" -msgstr "Itens de stock baixos" - -#: app/templates/inventory/reports/dashboard.html:68 -msgid "Available Reports" -msgstr "Relatórios Disponíveis" - -#: app/templates/inventory/reports/dashboard.html:72 -msgid "Stock Valuation" -msgstr "Valor das existências" - -#: app/templates/inventory/reports/dashboard.html:73 -msgid "View inventory value by warehouse" -msgstr "Ver o valor do inventário por armazém" - -#: app/templates/inventory/reports/dashboard.html:78 -msgid "Movement History" -msgstr "Histórico do Movimento" - -#: app/templates/inventory/reports/dashboard.html:79 -msgid "Detailed movement log" -msgstr "Registo de movimentos detalhado" - -#: app/templates/inventory/reports/dashboard.html:84 -msgid "Turnover Analysis" -msgstr "Análise do volume de negócios" - -#: app/templates/inventory/reports/dashboard.html:85 -msgid "Inventory turnover rates" -msgstr "Taxas de volume de negócios do inventário" - -#: app/templates/inventory/reports/dashboard.html:90 -msgid "Low Stock Report" -msgstr "Relatório de stocks baixos" - -#: app/templates/inventory/reports/dashboard.html:91 -msgid "Items below reorder point" -msgstr "Itens abaixo do ponto de reordenação" - -#: app/templates/inventory/reports/low_stock.html:22 -#, python-format -msgid "Found %(count)s items below their reorder point." -msgstr "" +#~ msgid "Expense Features" +#~ msgstr "Características da despesa" -#: app/templates/inventory/reports/low_stock.html:32 -#: app/templates/inventory/reports/low_stock.html:53 -#: app/templates/inventory/stock_levels/item.html:24 -#: app/templates/inventory/stock_levels/item.html:39 -#: app/templates/inventory/stock_levels/warehouse.html:48 -#: app/templates/inventory/stock_levels/warehouse.html:65 -msgid "Quantity On Hand" -msgstr "Quantidade na Mão" - -#: app/templates/inventory/reports/low_stock.html:35 -#: app/templates/inventory/reports/low_stock.html:56 -#: app/templates/inventory/stock_items/form.html:73 -#: app/templates/inventory/stock_items/view.html:95 -msgid "Reorder Quantity" -msgstr "Quantidade da Reordenação" - -#: app/templates/inventory/reports/low_stock.html:59 -msgid "Create PO" -msgstr "Criar PO" - -#: app/templates/inventory/reports/low_stock.html:69 -msgid "All Stock Levels are Good" -msgstr "Todos os níveis de ações são bons" - -#: app/templates/inventory/reports/low_stock.html:70 -msgid "No items are currently below their reorder point." -msgstr "Nenhum item está abaixo do ponto de reordenação." - -#: app/templates/inventory/reports/movement_history.html:170 -msgid "No movements found." -msgstr "Nenhum movimento encontrado." - -#: app/templates/inventory/reports/turnover.html:37 -msgid "" -"Turnover rate indicates how many times inventory is sold and replaced in a " -"year. Higher rates indicate faster-moving items." -msgstr "" -"Taxa de volume de negócios indica quantas vezes o inventário é vendido e " -"substituído em um ano. Taxas mais elevadas indicam itens mais rápidos." - -#: app/templates/inventory/reports/turnover.html:46 -#: app/templates/inventory/reports/turnover.html:61 -msgid "Total Sold" -msgstr "Total Vendido" - -#: app/templates/inventory/reports/turnover.html:47 -#: app/templates/inventory/reports/turnover.html:62 -msgid "Avg Stock Level" -msgstr "Nível de stock de Avg" - -#: app/templates/inventory/reports/turnover.html:48 -#: app/templates/inventory/reports/turnover.html:63 -msgid "Turnover Rate" -msgstr "Taxa de volume de negócios" - -#: app/templates/inventory/reports/turnover.html:66 -msgid "Fast Moving" -msgstr "Movimento Rápido" - -#: app/templates/inventory/reports/turnover.html:68 -#: app/templates/inventory/stock_items/view.html:209 -msgid "Normal" -msgstr "Normal" - -#: app/templates/inventory/reports/turnover.html:70 -msgid "Slow Moving" -msgstr "Movimento lento" - -#: app/templates/inventory/reports/turnover.html:72 -msgid "Very Slow" -msgstr "Muito lento" - -#: app/templates/inventory/reports/turnover.html:79 -msgid "No sales data found for the selected period." -msgstr "Não foram encontrados dados de vendas para o período selecionado." - -#: app/templates/inventory/reports/valuation.html:46 -msgid "Inventory Valuation" -msgstr "Avaliação do Inventário" - -#: app/templates/inventory/reports/valuation.html:48 -#: app/templates/inventory/reports/valuation.html:63 -#: app/templates/inventory/reports/valuation.html:83 -#: app/templates/inventory/reports/valuation.html:95 -#: app/templates/quotes/list.html:25 -msgid "Total Value" -msgstr "Valor total" - -#: app/templates/inventory/reports/valuation.html:88 -msgid "No items found with cost information." -msgstr "Nenhum item encontrado com informações de custo." - -#: app/templates/inventory/reservations/list.html:23 -#: app/templates/inventory/reservations/list.html:80 -#: app/templates/inventory/stock_items/view.html:131 -#: app/templates/inventory/stock_items/view.html:145 -#: app/templates/inventory/stock_levels/list.html:50 -#: app/templates/inventory/stock_levels/list.html:65 -#: app/templates/inventory/warehouses/view.html:87 -#: app/templates/inventory/warehouses/view.html:102 -msgid "Reserved" -msgstr "Reservado" - -#: app/templates/inventory/reservations/list.html:24 -#: app/templates/inventory/reservations/list.html:82 -msgid "Fulfilled" -msgstr "Realizado" - -#: app/templates/inventory/reservations/list.html:45 -#: app/templates/inventory/reservations/list.html:89 -msgid "Reserved At" -msgstr "Reservado em" - -#: app/templates/inventory/reservations/list.html:46 -#: app/templates/inventory/reservations/list.html:90 -msgid "Expires At" -msgstr "Expira em" - -#: app/templates/inventory/reservations/list.html:104 -msgid "Fulfill this reservation?" -msgstr "Cumprir esta reserva?" - -#: app/templates/inventory/reservations/list.html:110 -msgid "Cancel this reservation?" -msgstr "Cancelar esta reserva?" - -#: app/templates/inventory/reservations/list.html:120 -msgid "No reservations found." -msgstr "Nenhuma reserva encontrada." - -#: app/templates/inventory/stock_items/form.html:45 -#: app/templates/inventory/stock_items/list.html:52 -#: app/templates/inventory/stock_items/list.html:69 -#: app/templates/inventory/stock_items/view.html:36 -#: app/templates/kiosk/dashboard.html:132 -#: app/templates/quotes/_edit_quote_form_scripts.html:174 -#: app/templates/quotes/create.html:66 app/templates/quotes/edit.html:71 -#: app/templates/quotes/edit.html:109 -msgid "Unit" -msgstr "Unidade" - -#: app/templates/inventory/stock_items/form.html:61 -#: app/templates/inventory/stock_items/view.html:50 -msgid "Default Cost" -msgstr "Custo Predefinido" - -#: app/templates/inventory/stock_items/form.html:65 -#: app/templates/inventory/stock_items/view.html:54 -msgid "Default Price" -msgstr "Preço Padrão" - -#: app/templates/inventory/stock_items/form.html:77 -msgid "Image URL" -msgstr "URL da imagem" - -#: app/templates/inventory/stock_items/form.html:91 -msgid "Track Inventory" -msgstr "Inventário da Faixa" - -#: app/templates/inventory/stock_items/form.html:99 -msgid "Manage multiple suppliers for this item with different pricing." -msgstr "Gerencie vários fornecedores para este item com preços diferentes." - -#: app/templates/inventory/stock_items/form.html:114 -#: app/templates/inventory/stock_items/form.html:165 -#: app/templates/inventory/suppliers/view.html:117 -#: app/templates/inventory/suppliers/view.html:138 -msgid "MOQ" -msgstr "MOQ" - -#: app/templates/inventory/stock_items/form.html:115 -#: app/templates/inventory/stock_items/form.html:166 -msgid "Lead Time (days)" -msgstr "Tempo de execução (dias)" - -#: app/templates/inventory/stock_items/form.html:118 -#: app/templates/inventory/stock_items/form.html:169 -#: app/templates/inventory/stock_items/view.html:71 -#: app/templates/inventory/suppliers/view.html:119 -#: app/templates/inventory/suppliers/view.html:146 -#: app/templates/inventory/suppliers/view.html:149 -msgid "Preferred" -msgstr "Preferido" - -#: app/templates/inventory/stock_items/form.html:129 -msgid "Add Supplier" -msgstr "Adicionar fornecedor" - -#: app/templates/inventory/stock_items/history.html:156 -msgid "No movement history found for this item." -msgstr "Nenhum histórico de movimento encontrado para este item." - -#: app/templates/inventory/stock_items/list.html:22 -msgid "SKU, Name, Barcode..." -msgstr "SKU, Nome, Código de barras..." - -#: app/templates/inventory/stock_items/list.html:36 -#: app/templates/inventory/suppliers/list.html:27 -msgid "Active Only" -msgstr "Somente Ativo" - -#: app/templates/inventory/stock_items/list.html:53 -#: app/templates/inventory/stock_items/list.html:70 -msgid "Total Qty" -msgstr "Total Qty" - -#: app/templates/inventory/stock_items/list.html:54 -#: app/templates/inventory/stock_items/list.html:77 -#: app/templates/inventory/stock_items/view.html:132 -#: app/templates/inventory/stock_items/view.html:146 -#: app/templates/inventory/stock_levels/item.html:26 -#: app/templates/inventory/stock_levels/item.html:41 -#: app/templates/inventory/stock_levels/list.html:51 -#: app/templates/inventory/stock_levels/list.html:66 -#: app/templates/inventory/stock_levels/warehouse.html:50 -#: app/templates/inventory/stock_levels/warehouse.html:67 -#: app/templates/inventory/warehouses/view.html:88 -#: app/templates/inventory/warehouses/view.html:103 -#: app/templates/workforce/dashboard.html:212 -msgid "Available" -msgstr "Disponível" - -#: app/templates/inventory/stock_items/list.html:81 -#: app/templates/inventory/stock_items/view.html:149 -#: app/templates/inventory/stock_levels/list.html:69 -#: app/templates/inventory/stock_levels/warehouse.html:73 -#: app/templates/inventory/warehouses/view.html:106 -msgid "Low Stock" -msgstr "Unidade populacional baixa" - -#: app/templates/inventory/stock_items/list.html:108 -msgid "No stock items found." -msgstr "Nenhum item de stock encontrado." - -#: app/templates/inventory/stock_items/view.html:25 -msgid "Item Details" -msgstr "Detalhes do Item" - -#: app/templates/inventory/stock_items/view.html:110 -msgid "Trackable" -msgstr "Rastreável" - -#: app/templates/inventory/stock_items/view.html:125 -msgid "Stock Levels by Warehouse" -msgstr "Níveis de stocks por armazém" - -#: app/templates/inventory/stock_items/view.html:163 -msgid "Stock Breakdown by Valuation" -msgstr "Repartição das existências por valorização" - -#: app/templates/inventory/stock_items/view.html:164 -msgid "" -"Detailed breakdown showing remaining stock with different devaluation rates" -msgstr "" -"Desagregação pormenorizada que mostra os stocks remanescentes com taxas de " -"desvalorização diferentes" - -#: app/templates/inventory/stock_items/view.html:198 -msgid "No devaluation" -msgstr "Sem desvalorização" - -#: app/templates/inventory/stock_items/view.html:235 -#: app/templates/inventory/warehouses/view.html:125 -msgid "Recent Stock Movements" -msgstr "Movimentos de stocks recentes" - -#: app/templates/inventory/stock_items/view.html:275 -msgid "Total On Hand" -msgstr "Total disponível" - -#: app/templates/inventory/stock_items/view.html:279 -msgid "Total Reserved" -msgstr "Total reservado" - -#: app/templates/inventory/stock_items/view.html:283 -msgid "Total Available" -msgstr "Total disponível" - -#: app/templates/inventory/stock_items/view.html:289 -msgid "Low Stock Alert" -msgstr "Alerta de baixa reserva" - -#: app/templates/inventory/stock_items/view.html:295 -msgid "This item is not trackable." -msgstr "Este item não é rastreável." - -#: app/templates/inventory/stock_items/view.html:302 -msgid "Active Reservations" -msgstr "Reservas Ativas" - -#: app/templates/inventory/stock_levels/item.html:25 -#: app/templates/inventory/stock_levels/item.html:40 -#: app/templates/inventory/stock_levels/warehouse.html:49 -#: app/templates/inventory/stock_levels/warehouse.html:66 -msgid "Quantity Reserved" -msgstr "Quantidade reservada" - -#: app/templates/inventory/stock_levels/item.html:28 -#: app/templates/inventory/stock_levels/item.html:45 -msgid "Last Counted" -msgstr "Última Contada" - -#: app/templates/inventory/stock_levels/item.html:56 -msgid "No stock found for this item in any warehouse." -msgstr "Nenhum estoque encontrado para este item em qualquer armazém." - -#: app/templates/inventory/stock_levels/list.html:77 -msgid "No stock levels found." -msgstr "Não foram encontrados níveis de ações." - -#: app/templates/inventory/stock_levels/warehouse.html:32 -msgid "Low Stock Only" -msgstr "Apenas stock baixo" - -#: app/templates/inventory/stock_levels/warehouse.html:75 -msgid "Oversold" -msgstr "Oversold" - -#: app/templates/inventory/stock_levels/warehouse.html:84 -msgid "No stock items found in this warehouse." -msgstr "Nenhuma mercadoria encontrada neste armazém." - -#: app/templates/inventory/suppliers/form.html:23 -msgid "Supplier Code" -msgstr "Código do fornecedor" - -#: app/templates/inventory/suppliers/form.html:25 -msgid "Unique code for this supplier (e.g., SUP-001)" -msgstr "Código único para este fornecedor (por exemplo, SUP-001)" - -#: app/templates/inventory/suppliers/form.html:60 -#: app/templates/inventory/suppliers/view.html:89 -#: app/templates/quotes/create.html:177 app/templates/quotes/create.html:180 -#: app/templates/quotes/edit.html:276 app/templates/quotes/edit.html:279 -#: app/templates/quotes/pdf_default.html:85 app/templates/quotes/view.html:89 -msgid "Payment Terms" -msgstr "Condições de pagamento" - -#: app/templates/inventory/suppliers/form.html:61 -msgid "e.g., Net 30, Net 60" -msgstr "Por exemplo, Net 30, Net 60" - -#: app/templates/inventory/suppliers/list.html:22 -msgid "Code, name, email" -msgstr "Código, nome, e-mail" - -#: app/templates/inventory/suppliers/list.html:95 -msgid "No suppliers found." -msgstr "Não foram encontrados fornecedores." - -#: app/templates/inventory/suppliers/view.html:23 -msgid "Supplier Details" -msgstr "Detalhes do Fornecedor" - -#: app/templates/inventory/suppliers/view.html:109 -msgid "Stock Items from this Supplier" -msgstr "Itens de stock deste Fornecedor" - -#: app/templates/inventory/suppliers/view.html:118 -#: app/templates/inventory/suppliers/view.html:139 -msgid "Lead Time" -msgstr "Tempo de execução" - -#: app/templates/inventory/suppliers/view.html:163 -msgid "No stock items associated with this supplier." -msgstr "Nenhum item de estoque associado a este fornecedor." - -#: app/templates/inventory/suppliers/view.html:178 -msgid "Preferred Items" -msgstr "Itens Preferenciais" - -#: app/templates/inventory/transfers/form.html:32 -#: app/templates/inventory/transfers/list.html:40 -#: app/templates/inventory/transfers/list.html:59 -#: app/templates/kiosk/dashboard.html:229 -msgid "From Warehouse" -msgstr "Do Armazém" - -#: app/templates/inventory/transfers/form.html:34 -msgid "Select Source Warehouse" -msgstr "Seleccionar o Armazém de Código" - -#: app/templates/inventory/transfers/form.html:41 -#: app/templates/inventory/transfers/list.html:41 -#: app/templates/inventory/transfers/list.html:64 -#: app/templates/kiosk/dashboard.html:246 -msgid "To Warehouse" -msgstr "Para o Armazém" - -#: app/templates/inventory/transfers/form.html:43 -msgid "Select Destination Warehouse" -msgstr "Selecionar Armazém de Destino" - -#: app/templates/inventory/transfers/form.html:55 -msgid "Optional notes about this transfer" -msgstr "Notas opcionais sobre esta transferência" - -#: app/templates/inventory/transfers/form.html:63 -msgid "Create Transfer" -msgstr "Criar transferência" - -#: app/templates/inventory/transfers/list.html:77 -msgid "No transfers found." -msgstr "Nenhuma transferência encontrada." - -#: app/templates/inventory/warehouses/form.html:23 -msgid "Warehouse Code" -msgstr "Código do armazém" - -#: app/templates/inventory/warehouses/form.html:25 -msgid "Unique code for this warehouse (e.g., WH-001)" -msgstr "Código único para este armazém (por exemplo, WH-001)" - -#: app/templates/inventory/warehouses/form.html:40 -#: app/templates/inventory/warehouses/list.html:25 -#: app/templates/inventory/warehouses/list.html:40 -#: app/templates/inventory/warehouses/view.html:53 -msgid "Contact Email" -msgstr "E- mail de Contacto" - -#: app/templates/inventory/warehouses/form.html:44 -#: app/templates/inventory/warehouses/view.html:61 -msgid "Contact Phone" -msgstr "Telefone de Contato" - -#: app/templates/inventory/warehouses/list.html:68 -msgid "No warehouses found." -msgstr "Nenhum armazém foi encontrado." - -#: app/templates/inventory/warehouses/view.html:23 -msgid "Warehouse Details" -msgstr "Detalhes do Armazém" - -#: app/templates/inventory/warehouses/view.html:118 -msgid "No stock items in this warehouse." -msgstr "Não há stocks neste armazém." - -#: app/templates/inventory/warehouses/view.html:172 -msgid "Total Quantity" -msgstr "Quantidade total" - -#: app/templates/invoice_approvals/list.html:51 -msgid "Current Approver" -msgstr "Aprovação Actual" - -#: app/templates/invoice_approvals/list.html:54 -msgid "You" -msgstr "Você" - -#: app/templates/invoice_approvals/list.html:67 -msgid "No Pending Approvals" -msgstr "Nenhuma aprovação pendente" - -#: app/templates/invoice_approvals/list.html:68 -msgid "You have no invoices awaiting your approval." -msgstr "Não tem facturas à espera da sua aprovação." - -#: app/templates/invoice_approvals/list.html:77 -msgid "Reject Invoice Approval" -msgstr "Rejeitar a aprovação da factura" - -#: app/templates/invoice_approvals/list.html:81 -msgid "Reason for Rejection" -msgstr "Motivo da rejeição" - -#: app/templates/invoice_approvals/list.html:82 -msgid "Please provide a reason for rejecting this invoice..." -msgstr "Por favor, forneça uma razão para rejeitar esta factura..." - -#: app/templates/invoice_approvals/request.html:3 -#: app/templates/invoice_approvals/request.html:8 -msgid "Request Invoice Approval" -msgstr "Pedido de aprovação da factura" - -#: app/templates/invoice_approvals/request.html:11 -msgid "Back to Invoice" -msgstr "Voltar à Fatura" - -#: app/templates/invoice_approvals/request.html:19 -msgid "Select Approvers" -msgstr "Seleccionar os Aprovados" - -#: app/templates/invoice_approvals/request.html:20 -msgid "" -"Select one or more users who need to approve this invoice. Approvals will be" -" processed in order." -msgstr "" -"Selecione um ou mais usuários que precisam aprovar esta fatura. As " -"aprovações serão processadas em ordem." - -#: app/templates/invoice_approvals/request.html:39 -#: app/templates/invoices/view.html:140 app/templates/quotes/view.html:202 -msgid "Request Approval" -msgstr "Pedido de aprovação" - -#: app/templates/invoice_approvals/view.html:19 -#: app/templates/invoices/view.html:107 app/templates/quotes/view.html:196 -msgid "Approval Status" -msgstr "Estado da homologação" - -#: app/templates/invoice_approvals/view.html:31 -msgid "Requested By" -msgstr "Solicitado por" - -#: app/templates/invoice_approvals/view.html:36 -msgid "Requested At" -msgstr "Solicitado em" - -#: app/templates/invoice_approvals/view.html:42 -msgid "Approved By" -msgstr "Aprovado por" - -#: app/templates/invoice_approvals/view.html:49 -msgid "Rejected By" -msgstr "Rejeitado por" - -#: app/templates/invoice_approvals/view.html:54 -#: app/templates/quotes/view.html:564 -msgid "Rejection Reason" -msgstr "Razão da Rejeição" - -#: app/templates/invoice_approvals/view.html:64 -msgid "Approval Stages" -msgstr "Fases de aprovação" - -#: app/templates/invoice_approvals/view.html:100 -#: app/templates/invoices/edit.html:376 app/templates/main/help.html:536 -#: app/templates/reports/index.html:166 app/templates/tasks/edit.html:275 -msgid "Quick Actions" -msgstr "Acções Rápidas" - -#: app/templates/invoice_approvals/view.html:116 -msgid "Waiting for approval from another user." -msgstr "Aguardando aprovação de outro usuário." - -#: app/templates/invoices/_invoices_list.html:9 -#: app/templates/payments/list.html:96 -#: app/templates/reports/export_form.html:196 -#: app/templates/reports/export_form.html:329 -#: app/templates/reports/summary.html:12 -#: app/templates/reports/task_report.html:55 -#: app/templates/reports/time_entries_report.html:89 -#: app/templates/reports/user_report.html:56 -msgid "Export to Excel" -msgstr "Exportar para Excel" - -#: app/templates/invoices/_invoices_list.html:83 app/utils/i18n_helpers.py:89 -#: app/utils/i18n_helpers.py:100 -msgid "Partially Paid" -msgstr "Pagado Parcialmente" - -#: app/templates/invoices/_invoices_list.html:87 app/utils/i18n_helpers.py:90 -#: app/utils/i18n_helpers.py:101 -msgid "Fully Paid" -msgstr "Totalmente Pago" - -#: app/templates/invoices/create.html:8 app/templates/invoices/create.html:60 -#: app/templates/main/help.html:448 -msgid "Create Invoice" -msgstr "Criar Fatura" - -#: app/templates/invoices/create.html:8 -msgid "Generate a new invoice for a project and client" -msgstr "Gerar uma nova fatura para um projeto e cliente" - -#: app/templates/invoices/create.html:19 app/templates/issues/view.html:68 -#: app/templates/recurring_tasks/form.html:37 -#: app/templates/tasks/create.html:48 app/templates/tasks/edit.html:56 -msgid "Select a project" -msgstr "Selecionar um projeto" - -#: app/templates/invoices/create.html:24 -msgid "Selecting a project will auto-fill client details" -msgstr "" -"Selecionar um projeto irá preencher automaticamente os detalhes do cliente" +#~ msgid "Categorize expenses (travel, meals, supplies, etc.)" +#~ msgstr "Categorizar despesas (viagem, refeições, suprimentos, etc.)" -#: app/templates/invoices/create.html:43 app/templates/invoices/edit.html:42 -msgid "Buyer reference (PEPPOL BT-10)" -msgstr "Referência do comprador (PEPPOL BT-10)" +#~ msgid "Attach receipt images and documents" +#~ msgstr "Anexar imagens e documentos de recibo" -#: app/templates/invoices/create.html:44 app/templates/invoices/edit.html:43 -msgid "Optional; used in PEPPOL UBL" -msgstr "Opcional; utilizado em PEPPOL UBL" +#~ msgid "Track amounts, tax, and payment methods" +#~ msgstr "Rastreio dos montantes, impostos e métodos de pagamento" -#: app/templates/invoices/create.html:47 app/templates/invoices/edit.html:34 -#: app/templates/quotes/create.html:156 app/templates/quotes/edit.html:255 -msgid "Tax Rate (%)" -msgstr "Taxa de Imposto (%)" +#~ msgid "Approval workflow for expense requests" +#~ msgstr "Fluxo de trabalho de aprovação para pedidos de despesas" -#: app/templates/invoices/create.html:67 -#: app/templates/invoices/generate_from_time.html:173 -msgid "Tips" -msgstr "Dicas" +#~ msgid "Billing & Reimbursement" +#~ msgstr "Cobrança e reembolso" -#: app/templates/invoices/create.html:69 -msgid "Choose the correct project to auto-fill client details." -msgstr "" -"Escolha o projeto correto para preencher automaticamente os detalhes do " -"cliente." - -#: app/templates/invoices/create.html:70 -msgid "You can customize notes and terms before sending the invoice." -msgstr "Você pode personalizar notas e termos antes de enviar a fatura." - -#: app/templates/invoices/edit.html:13 -msgid "Edit Invoice" -msgstr "Editar Fatura" - -#: app/templates/invoices/edit.html:13 -msgid "Update invoice details, items, and terms" -msgstr "Atualizar detalhes, itens e termos da fatura" - -#: app/templates/invoices/edit.html:63 -msgid "Time-based services and hourly work" -msgstr "Serviços baseados no tempo e trabalho por hora" - -#: app/templates/invoices/edit.html:72 -msgid "Project / Stock Item" -msgstr "Item do Projecto / Unidade" - -#: app/templates/invoices/edit.html:73 -msgid "Task / Warehouse" -msgstr "Tarefa / Armazém" - -#: app/templates/invoices/edit.html:92 -msgid "Project hours" -msgstr "Horas do projeto" - -#: app/templates/invoices/edit.html:97 app/templates/quotes/edit.html:92 -msgid "Select Stock Item" -msgstr "Seleccionar o Item da Unidade" - -#: app/templates/invoices/edit.html:114 app/templates/invoices/edit.html:538 -msgid "e.g., Web Development Services" -msgstr "Por exemplo, Serviços de Desenvolvimento Web" - -#: app/templates/invoices/edit.html:118 -msgid "Quantity is from logged hours and cannot be edited" -msgstr "A quantidade é de horas registradas e não pode ser editada" - -#: app/templates/invoices/edit.html:127 app/templates/invoices/edit.html:547 -#: app/templates/quotes/_edit_quote_form_scripts.html:178 -#: app/templates/quotes/edit.html:113 -msgid "Remove item" -msgstr "Remover item" - -#: app/templates/invoices/edit.html:137 -msgid "Items Subtotal" -msgstr "Números Subtotal" - -#: app/templates/invoices/edit.html:151 -msgid "Billable expenses such as travel, meals, and materials" -msgstr "Despesas de cobrança, tais como viagens, refeições e materiais" - -#: app/templates/invoices/edit.html:154 -msgid "Add Expense" -msgstr "Adicionar Despesas" - -#: app/templates/invoices/edit.html:173 -msgid "e.g., Travel to Client Meeting" -msgstr "Por exemplo, Travel to Client Meeting" - -#: app/templates/invoices/edit.html:173 -msgid "Linked expense - title cannot be edited" -msgstr "Custo ligado - o título não pode ser editado" - -#: app/templates/invoices/edit.html:176 -msgid "Linked expense - description cannot be edited" -msgstr "Despesas ligadas - a descrição não pode ser editada" - -#: app/templates/invoices/edit.html:179 -msgid "Linked expense - category cannot be edited" -msgstr "Despesas ligadas - a categoria não pode ser editada" - -#: app/templates/invoices/edit.html:180 -#: app/templates/projects/add_cost.html:40 -#: app/templates/projects/edit_cost.html:47 -#: app/templates/quotes/_edit_quote_form_scripts.html:185 -#: app/templates/quotes/edit.html:161 app/utils/i18n_helpers.py:164 -#: app/utils/i18n_helpers.py:181 -msgid "Travel" -msgstr "Viagens" - -#: app/templates/invoices/edit.html:181 -#: app/templates/quotes/_edit_quote_form_scripts.html:186 -#: app/templates/quotes/edit.html:162 app/utils/i18n_helpers.py:165 -#: app/utils/i18n_helpers.py:182 -msgid "Meals" -msgstr "Refeições" - -#: app/templates/invoices/edit.html:182 app/utils/i18n_helpers.py:166 -#: app/utils/i18n_helpers.py:183 -msgid "Accommodation" -msgstr "Alojamento" - -#: app/templates/invoices/edit.html:183 -#: app/templates/quotes/_edit_quote_form_scripts.html:187 -#: app/templates/quotes/edit.html:163 app/utils/i18n_helpers.py:167 -#: app/utils/i18n_helpers.py:184 -msgid "Supplies" -msgstr "Fornecimentos" - -#: app/templates/invoices/edit.html:184 app/utils/i18n_helpers.py:168 -#: app/utils/i18n_helpers.py:185 -msgid "Software" -msgstr "Software" - -#: app/templates/invoices/edit.html:185 -#: app/templates/projects/add_cost.html:43 -#: app/templates/projects/edit_cost.html:50 -#: app/templates/quotes/_edit_quote_form_scripts.html:189 -#: app/templates/quotes/edit.html:165 app/utils/i18n_helpers.py:169 -#: app/utils/i18n_helpers.py:186 -msgid "Equipment" -msgstr "Equipamento" - -#: app/templates/invoices/edit.html:186 -#: app/templates/projects/add_cost.html:42 -#: app/templates/projects/edit_cost.html:49 -#: app/templates/quotes/_edit_quote_form_scripts.html:188 -#: app/templates/quotes/edit.html:164 app/utils/i18n_helpers.py:170 -#: app/utils/i18n_helpers.py:187 -msgid "Services" -msgstr "Serviços" - -#: app/templates/invoices/edit.html:187 app/utils/i18n_helpers.py:171 -#: app/utils/i18n_helpers.py:188 -msgid "Marketing" -msgstr "Comercialização" - -#: app/templates/invoices/edit.html:188 app/utils/i18n_helpers.py:172 -#: app/utils/i18n_helpers.py:189 -msgid "Training" -msgstr "Formação" - -#: app/templates/invoices/edit.html:189 app/templates/invoices/edit.html:256 -#: app/templates/invoices/edit.html:616 app/templates/kiosk/dashboard.html:203 -#: app/templates/projects/add_cost.html:45 -#: app/templates/projects/add_good.html:35 -#: app/templates/projects/edit_cost.html:52 -#: app/templates/projects/edit_good.html:35 -#: app/templates/quotes/_edit_quote_form_scripts.html:190 -#: app/templates/quotes/_edit_quote_form_scripts.html:224 -#: app/templates/quotes/edit.html:166 app/templates/quotes/edit.html:223 -#: app/utils/i18n_helpers.py:118 app/utils/i18n_helpers.py:134 -#: app/utils/i18n_helpers.py:173 app/utils/i18n_helpers.py:190 -msgid "Other" -msgstr "Outros" - -#: app/templates/invoices/edit.html:193 -msgid "Linked expense - amount cannot be edited" -msgstr "Despesas ligadas - o valor não pode ser editado" - -#: app/templates/invoices/edit.html:196 -msgid "Linked expense - date cannot be edited" -msgstr "Custos vinculados - data não pode ser editado" - -#: app/templates/invoices/edit.html:199 -msgid "Unlink expense from invoice" -msgstr "Desvincular despesas da fatura" - -#: app/templates/invoices/edit.html:209 -msgid "Expenses Subtotal" -msgstr "Despesas Subtotal" - -#: app/templates/invoices/edit.html:220 app/templates/invoices/view.html:203 -#: app/templates/projects/goods.html:6 -msgid "Extra Goods" -msgstr "Mercadorias Extra" - -#: app/templates/invoices/edit.html:223 -msgid "Products, materials, licenses, and other goods" -msgstr "Produtos, materiais, licenças e outros bens" - -#: app/templates/invoices/edit.html:226 -#: app/templates/projects/add_good.html:69 -#: app/templates/projects/goods.html:11 -msgid "Add Good" -msgstr "Adicionar Bom" - -#: app/templates/invoices/edit.html:236 app/templates/invoices/edit.html:263 -#: app/templates/invoices/edit.html:623 app/templates/quotes/create.html:67 -#: app/templates/quotes/create.html:129 app/templates/quotes/edit.html:72 -#: app/templates/quotes/edit.html:110 app/templates/quotes/edit.html:203 -msgid "Price" -msgstr "Preço" - -#: app/templates/invoices/edit.html:245 app/templates/invoices/edit.html:605 -msgid "e.g., Software License" -msgstr "Por exemplo, Licença de software" - -#: app/templates/invoices/edit.html:252 app/templates/invoices/edit.html:612 -#: app/templates/projects/add_good.html:31 -#: app/templates/projects/edit_good.html:31 -#: app/templates/quotes/_edit_quote_form_scripts.html:220 -#: app/templates/quotes/edit.html:219 -msgid "Product" -msgstr "Produto" - -#: app/templates/invoices/edit.html:253 app/templates/invoices/edit.html:613 -#: app/templates/projects/add_good.html:32 -#: app/templates/projects/edit_good.html:32 -#: app/templates/quotes/_edit_quote_form_scripts.html:221 -#: app/templates/quotes/edit.html:220 -msgid "Service" -msgstr "Serviço" - -#: app/templates/invoices/edit.html:254 app/templates/invoices/edit.html:614 -#: app/templates/projects/add_good.html:33 -#: app/templates/projects/edit_good.html:33 -#: app/templates/quotes/_edit_quote_form_scripts.html:222 -#: app/templates/quotes/edit.html:221 -msgid "Material" -msgstr "Material" - -#: app/templates/invoices/edit.html:269 app/templates/invoices/edit.html:629 -msgid "Remove good" -msgstr "Remover bom" - -#: app/templates/invoices/edit.html:279 -msgid "Goods Subtotal" -msgstr "Subtotal de mercadorias" - -#: app/templates/invoices/edit.html:297 -msgid "Live Preview" -msgstr "Visualização ao vivo" - -#: app/templates/invoices/edit.html:317 -msgid "Payment" -msgstr "Pagamento" - -#: app/templates/invoices/edit.html:342 -msgid "Goods" -msgstr "Mercadorias" - -#: app/templates/invoices/edit.html:378 -msgid "Generate from Time/Costs" -msgstr "Gerar a partir do tempo/custos" - -#: app/templates/invoices/edit.html:379 app/templates/invoices/view.html:40 -msgid "Record Payment" -msgstr "Pagamento do Registo" - -#: app/templates/invoices/edit.html:380 app/templates/invoices/view.html:17 -#: app/templates/mileage/list.html:66 app/templates/per_diem/list.html:54 -#: app/templates/quotes/view.html:37 app/templates/reports/summary.html:9 -#: app/templates/timer/time_entries_overview.html:54 -#: app/templates/timer/time_entries_overview.html:56 -msgid "Export PDF" -msgstr "Exportar PDF" - -#: app/templates/invoices/edit.html:381 app/templates/mileage/list.html:63 -#: app/templates/per_diem/list.html:51 -#: app/templates/timer/time_entries_overview.html:45 -#: app/templates/timer/time_entries_overview.html:47 -msgid "Export CSV" -msgstr "Exportar CSV" - -#: app/templates/invoices/edit.html:382 -msgid "Duplicate Invoice" -msgstr "Fatura duplicada" - -#: app/templates/invoices/edit.html:666 -msgid "Are you sure you want to unlink this expense from the invoice?" -msgstr "Você tem certeza que deseja desvincular esta despesa da fatura?" - -#: app/templates/invoices/edit.html:668 -msgid "Unlink Expense" -msgstr "Desvincular despesas" - -#: app/templates/invoices/edit.html:669 -msgid "Unlink" -msgstr "Desvincular" - -#: app/templates/invoices/edit.html:720 -msgid "Please add at least one item, expense, or extra good to the invoice" -msgstr "" -"Por favor, adicione pelo menos um item, despesa, ou extra bom à fatura" +#~ msgid "Mark expenses as billable to clients" +#~ msgstr "Marcar as despesas como facturadas aos clientes" -#: app/templates/invoices/generate_from_time.html:6 -msgid "Generate from Time, Costs & Goods" -msgstr "Gerar a partir do tempo, custos e mercadorias" +#~ msgid "Include expenses in client invoices" +#~ msgstr "Incluir as despesas nas facturas dos clientes" -#: app/templates/invoices/generate_from_time.html:7 -msgid "" -"Select unbilled time entries, project costs, and extra goods to add to this " -"invoice" -msgstr "" -"Selecione entradas de tempo, custos do projeto e bens extras para adicionar " -"a esta fatura" - -#: app/templates/invoices/generate_from_time.html:9 -msgid "Back to Edit" -msgstr "Voltar a Editar" - -#: app/templates/invoices/generate_from_time.html:19 -msgid "Unbilled Time Entries" -msgstr "Ingressos Infalíveis no Tempo" - -#: app/templates/invoices/generate_from_time.html:31 -#: app/templates/projects/dashboard.html:290 -#: app/templates/projects/time_entries_overview.html:61 -#: app/templates/reports/iterative_view.html:32 -#: app/templates/reports/time_entries_report.html:85 -msgid "entries" -msgstr "entradas" - -#: app/templates/invoices/generate_from_time.html:67 -msgid "No unbilled time entries found for this project." -msgstr "Não foram encontrados itens de tempo desprotegidos para este projeto." - -#: app/templates/invoices/generate_from_time.html:72 -msgid "Uninvoiced Project Costs" -msgstr "Custos do Projeto Não Faturados" - -#: app/templates/invoices/generate_from_time.html:86 -msgid "No uninvoiced costs found for this project." -msgstr "Não foram encontrados custos não facturados para este projecto." - -#: app/templates/invoices/generate_from_time.html:91 -msgid "Uninvoiced Billable Expenses" -msgstr "Despesas Faturáveis Não Faturadas" - -#: app/templates/invoices/generate_from_time.html:101 -#: app/templates/invoices/pdf_default.html:120 -#: app/utils/pdf_generator_fallback.py:289 -msgid "Vendor" -msgstr "Fabricante" - -#: app/templates/invoices/generate_from_time.html:109 -msgid "No uninvoiced billable expenses found for this project." -msgstr "Não foram encontradas despesas não facturadas para este projecto." - -#: app/templates/invoices/generate_from_time.html:114 -msgid "Project Extra Goods" -msgstr "Projeto Produtos Extra" - -#: app/templates/invoices/generate_from_time.html:131 -msgid "No extra goods found for this project." -msgstr "Nenhuma mercadoria extra encontrada para este projeto." - -#: app/templates/invoices/generate_from_time.html:137 -msgid "Add Selected to Invoice" -msgstr "Adicionar selecionado à factura" - -#: app/templates/invoices/generate_from_time.html:145 -msgid "Selection Summary" -msgstr "Resumo da Seleção" - -#: app/templates/invoices/generate_from_time.html:146 -msgid "Total available hours" -msgstr "Total de horas disponíveis" - -#: app/templates/invoices/generate_from_time.html:147 -msgid "Total available costs" -msgstr "Custos totais disponíveis" - -#: app/templates/invoices/generate_from_time.html:148 -msgid "Total available expenses" -msgstr "Total das despesas disponíveis" - -#: app/templates/invoices/generate_from_time.html:149 -msgid "Total available goods" -msgstr "Total das mercadorias disponíveis" - -#: app/templates/invoices/generate_from_time.html:152 -msgid "Prepaid Hours Overview" -msgstr "Visão geral das horas pré-pagos" - -#: app/templates/invoices/generate_from_time.html:154 -#, python-format -msgid "Plan includes %(hours)s hours per cycle (resets on day %(day)s)." -msgstr "" +#~ msgid "Track reimbursement status" +#~ msgstr "Situação do reembolso da pista" -#: app/templates/invoices/generate_from_time.html:161 -#, python-format -msgid "Consumed: %(consumed)s h • Remaining: %(remaining)s h" -msgstr "" +#~ msgid "Link expenses to specific projects" +#~ msgstr "Relação das despesas com projectos específicos" -#: app/templates/invoices/generate_from_time.html:166 -msgid "No prepaid usage recorded for selected period yet." -msgstr "Nenhum uso pré-pago registrado para o período selecionado ainda." +#~ msgid "Record Expense" +#~ msgstr "Despesas de registro" -#: app/templates/invoices/generate_from_time.html:175 -msgid "" -"You can select multiple time entries, costs, expenses, and extra goods." -msgstr "" -"Você pode selecionar várias entradas de tempo, custos, despesas e bens " -"extras." +#~ msgid "Enter details and upload receipt" +#~ msgstr "Digite detalhes e upload de recibo" -#: app/templates/invoices/generate_from_time.html:176 -msgid "Time entries are grouped by task or project at item creation." -msgstr "" -"As entradas de tempo são agrupadas por tarefa ou projeto na criação de " -"itens." +#~ msgid "Submit for Approval" +#~ msgstr "Submeter à aprovação" -#: app/templates/invoices/generate_from_time.html:177 -msgid "Costs and extra goods are added as individual invoice items." -msgstr "" -"Custos e bens extras são adicionados como itens de fatura individuais." +#~ msgid "Admin reviews and approves" +#~ msgstr "Avaliações administrativas e aprova" -#: app/templates/invoices/generate_from_time.html:178 -msgid "Expenses are linked to the invoice and appear in a separate section." -msgstr "As despesas estão ligadas à factura e aparecem numa secção separada." +#~ msgid "Invoice/Reimburse" +#~ msgstr "Factura/Reembolso" -#: app/templates/invoices/generate_from_time.html:194 -msgid "Please select at least one time entry, cost, expense, or extra good" -msgstr "" -"Selecione pelo menos uma entrada de tempo, custo, despesa, ou extra bom" +#~ msgid "Add to invoice or reimburse" +#~ msgstr "Adicionar à factura ou reembolsar" -#: app/templates/invoices/list.html:32 -msgid "Filter Invoices" -msgstr "Filtrar faturas" +#~ msgid "Track Payment" +#~ msgstr "Pagamento da Faixa" -#: app/templates/invoices/list.html:72 -msgid "Invoice number or client" -msgstr "Número da factura ou cliente" +#~ msgid "Monitor reimbursement status" +#~ msgstr "Monitorizar o estado de reembolso" -#: app/templates/invoices/list.html:105 -msgid "Delete Selected Invoices" -msgstr "Apagar as Faturas Seleccionadas" +#~ msgid "Professional Invoicing" +#~ msgstr "Faturação Profissional" -#: app/templates/invoices/list.html:125 -msgid "Change Status for Selected Invoices" -msgstr "Mudar o estado das facturas seleccionadas" +#~ msgid "Professional PDF generation" +#~ msgstr "Geração profissional de PDF" -#: app/templates/invoices/list.html:126 app/templates/invoices/list.html:128 -msgid "Select Status" -msgstr "Selecionar status" +#~ msgid "Company branding and logos" +#~ msgstr "Marcas e logotipos da empresa" -#: app/templates/invoices/list.html:135 -#: app/templates/timer/time_entries_overview.html:202 -#: app/templates/timer/view_timer.html:151 -msgid "Invoice Reference" -msgstr "Referência da factura" +#~ msgid "Automatic invoice numbering" +#~ msgstr "Numeração automática da factura" -#: app/templates/invoices/list.html:136 -msgid "e.g., Payment confirmation number" -msgstr "Por exemplo, número de confirmação do pagamento" +#~ msgid "Tax calculations" +#~ msgstr "Cálculos fiscais" -#: app/templates/invoices/list.html:153 app/templates/invoices/list.html:176 -#: app/templates/invoices/view.html:365 app/templates/invoices/view.html:388 -msgid "Delete Invoice" -msgstr "Apagar a factura" +#~ msgid "Time Integration" +#~ msgstr "Integração temporal" -#: app/templates/invoices/list.html:161 app/templates/invoices/view.html:373 -#: app/templates/kanban/columns.html:149 -msgid "Warning:" -msgstr "Aviso:" +#~ msgid "Generate from time entries" +#~ msgstr "Gerar a partir de entradas de tempo" -#: app/templates/invoices/list.html:164 app/templates/invoices/view.html:376 -msgid "Are you sure you want to delete invoice" -msgstr "Tem certeza de que deseja excluir a fatura" +#~ msgid "Smart grouping by task/project" +#~ msgstr "Grupo inteligente por tarefa/projeto" -#: app/templates/invoices/list.html:166 app/templates/invoices/view.html:378 -msgid "" -"All invoice items, extra goods, and payment records associated with this " -"invoice will be permanently deleted." -msgstr "" -"Todos os itens de fatura, bens extras e registros de pagamento associados a " -"esta fatura serão excluídos permanentemente." - -#: app/templates/invoices/pdf_default.html:54 app/utils/pdf_generator.py:1124 -#: app/utils/pdf_generator_fallback.py:167 -msgid "INVOICE" -msgstr "INFORMAÇÕES" - -#: app/templates/invoices/pdf_default.html:56 app/utils/pdf_generator.py:1126 -msgid "Invoice #" -msgstr "Fatura #" - -#: app/templates/invoices/pdf_default.html:66 app/utils/pdf_generator.py:1137 -msgid "Bill To" -msgstr "Conta Para" - -#: app/templates/invoices/pdf_default.html:89 app/utils/pdf_generator.py:1155 -#: app/utils/pdf_generator_fallback.py:240 -msgid "Quantity (Hours)" -msgstr "Quantidade (horas)" - -#: app/templates/invoices/pdf_default.html:101 -#, python-format -msgid "Generated from %(num)d time entries" -msgstr "" +#~ msgid "Prevent double-billing" +#~ msgstr "Evitar o biling duplo" -#: app/templates/invoices/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:287 -msgid "Expense" -msgstr "Despesas" - -#: app/templates/invoices/pdf_default.html:153 -#: app/templates/quotes/pdf_default.html:117 -#: app/utils/pdf_generator_fallback.py:305 -#: app/utils/pdf_generator_fallback.py:616 -msgid "Subtotal:" -msgstr "Subtotal:" - -#: app/templates/invoices/pdf_default.html:158 -#: app/templates/quotes/pdf_default.html:140 -#: app/utils/pdf_generator_fallback.py:312 -#, python-format -msgid "Tax (%(rate).2f%%):" -msgstr "" +#~ msgid "Use project hourly rates" +#~ msgstr "Usar taxas horárias do projeto" -#: app/templates/invoices/pdf_default.html:163 -#: app/templates/quotes/pdf_default.html:145 -#: app/utils/pdf_generator_fallback.py:317 -msgid "Total Amount:" -msgstr "Montante total:" - -#: app/templates/invoices/pdf_default.html:174 app/utils/pdf_generator.py:1347 -#: app/utils/pdf_generator_fallback.py:377 -msgid "Notes:" -msgstr "Notas:" - -#: app/templates/invoices/pdf_default.html:180 app/utils/pdf_generator.py:1357 -#: app/utils/pdf_generator_fallback.py:382 -msgid "Terms:" -msgstr "Termos:" - -#: app/templates/invoices/pdf_default.html:189 -#: app/templates/quotes/pdf_default.html:171 app/utils/pdf_generator.py:1378 -#: app/utils/pdf_generator_fallback.py:394 -msgid "Payment Information:" -msgstr "Informações de pagamento:" - -#: app/templates/invoices/pdf_default.html:192 -#: app/templates/quotes/pdf_default.html:162 -#: app/templates/quotes/pdf_default.html:175 app/utils/pdf_generator.py:1175 -#: app/utils/pdf_generator_fallback.py:399 -#: app/utils/pdf_generator_fallback.py:652 -msgid "Terms & Conditions:" -msgstr "Termos & Condições:" - -#: app/templates/invoices/view.html:32 -msgid "Download UBL" -msgstr "Baixar UBL" - -#: app/templates/invoices/view.html:37 -msgid "Pay Online" -msgstr "Pagar Online" - -#: app/templates/invoices/view.html:77 -msgid "Payment Reference" -msgstr "Referência de pagamento" - -#: app/templates/invoices/view.html:122 -msgid "PEPPOL compliance: the following are missing" -msgstr "Cumprimento da PEPPOL: Faltam os seguintes elementos:" - -#: app/templates/invoices/view.html:135 -msgid "Invoice Approval" -msgstr "Aprovação na factura" - -#: app/templates/invoices/view.html:136 -msgid "Request approval before sending this invoice to the client." -msgstr "Solicitar aprovação antes de enviar esta fatura ao cliente." - -#: app/templates/invoices/view.html:260 app/templates/invoices/view.html:349 -msgid "Payment History" -msgstr "Histórico de pagamento" - -#: app/templates/invoices/view.html:497 -msgid "Send Invoice via Email" -msgstr "Enviar fatura via e-mail" - -#: app/templates/issues/edit.html:13 app/templates/issues/view.html:12 -msgid "Edit Issue" -msgstr "Editar problema" - -#: app/templates/issues/edit.html:72 app/templates/issues/new.html:66 -#: app/templates/issues/view.html:74 app/templates/issues/view.html:143 -#: app/templates/recurring_tasks/form.html:108 -#: app/templates/tasks/create.html:108 app/templates/tasks/edit.html:116 -#: app/templates/tasks/overdue.html:54 -msgid "Unassigned" -msgstr "Não atribuído" - -#: app/templates/issues/list.html:15 app/templates/issues/list.html:166 -#: app/templates/issues/new.html:77 -msgid "Create Issue" -msgstr "Criar problema" - -#: app/templates/issues/list.html:28 -msgid "Filter Issues" -msgstr "Questões do Filtro" - -#: app/templates/issues/list.html:33 -msgid "Search by title or description" -msgstr "Pesquisar por título ou descrição" - -#: app/templates/issues/list.html:80 app/templates/tasks/my_tasks.html:178 -msgid "Apply Filters" -msgstr "Aplicar os Filtros" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/reports/time_entries_report.html:144 -#: app/utils/pdf_generator_fallback.py:665 -msgid "Page" -msgstr "Página" - -#: app/templates/issues/list.html:155 app/templates/main/search.html:101 -#: app/templates/project_templates/list.html:104 -#: app/templates/projects/dashboard.html:57 -#: app/templates/reports/time_entries_report.html:144 -msgid "of" -msgstr "de" - -#: app/templates/issues/list.html:169 -msgid "No issues found" -msgstr "Nenhum problema encontrado" - -#: app/templates/issues/list.html:170 -msgid "No issues match your filters. Create an issue or adjust your filters." -msgstr "" -"Nenhum problema corresponde aos seus filtros. Crie um problema ou ajuste " -"seus filtros." +#~ msgid "Set up client and project details" +#~ msgstr "Configurar os detalhes do cliente e do projeto" -#: app/templates/issues/new.html:13 -msgid "Create New Issue" -msgstr "Criar um novo problema" +#~ msgid "Add Items" +#~ msgstr "Adicionar itens" -#: app/templates/issues/view.html:16 -msgid "Are you sure you want to delete this issue?" -msgstr "Tem certeza de que deseja excluir este problema?" +#~ msgid "Generate from time or add manually" +#~ msgstr "Gerar a partir do tempo ou adicionar manualmente" -#: app/templates/issues/view.html:16 -msgid "Delete Issue" -msgstr "Apagar o Emissão" - -#: app/templates/issues/view.html:38 app/templates/main/help.html:30 -#: app/templates/main/help.html:279 -msgid "Task Management" -msgstr "Gerenciamento de tarefas" - -#: app/templates/issues/view.html:49 -msgid "Link to existing task" -msgstr "Ligação à tarefa existente" - -#: app/templates/issues/view.html:53 -msgid "Select a task" -msgstr "Seleccionar uma tarefa" - -#: app/templates/issues/view.html:59 -msgid "Link" -msgstr "Ligação" - -#: app/templates/issues/view.html:64 -msgid "Create new task from this issue" -msgstr "Criar uma nova tarefa a partir desta questão" - -#: app/templates/issues/view.html:154 -msgid "Submitted By" -msgstr "Enviado por" - -#: app/templates/kanban/board.html:5 -msgid "Kanban" -msgstr "Kanban" - -#: app/templates/kanban/board.html:47 app/templates/tasks/_kanban.html:14 -msgid "Manage Columns" -msgstr "Gerenciar Colunas" - -#: app/templates/kanban/board.html:56 -msgid "Drag tasks between columns to update their status" -msgstr "Arrastar tarefas entre colunas para atualizar seu status" - -#: app/templates/kanban/board.html:61 -msgid "Kanban board" -msgstr "Tabuleiro Kanban" - -#: app/templates/kanban/board.html:113 -msgid "moved to" -msgstr "mudou para" - -#: app/templates/kanban/board.html:147 -#: app/templates/projects/_kanban_tailwind.html:86 -msgid "No tasks in this column." -msgstr "Nenhuma tarefa nesta coluna." - -#: app/templates/kanban/columns.html:2 app/templates/kanban/columns.html:18 -msgid "Manage Kanban Columns" -msgstr "Gerenciar Colunas do Kanban" - -#: app/templates/kanban/columns.html:20 -msgid "Customize your kanban board columns and task states" -msgstr "Personalize suas colunas e estados de tarefa do kanban" - -#: app/templates/kanban/columns.html:25 -#: app/templates/timer/edit_timer.html:407 -msgid "Project:" -msgstr "Projeto:" - -#: app/templates/kanban/columns.html:27 -msgid "Global Columns" -msgstr "Colunas globais" - -#: app/templates/kanban/columns.html:35 -msgid "Add Column" -msgstr "Adicionar coluna" - -#: app/templates/kanban/columns.html:44 -msgid "Kanban columns list" -msgstr "Lista de colunas do Kanban" - -#: app/templates/kanban/columns.html:48 -msgid "Key" -msgstr "Chave" - -#: app/templates/kanban/columns.html:53 -msgid "Complete?" -msgstr "Completo?" - -#: app/templates/kanban/columns.html:62 -msgid "Drag to reorder" -msgstr "Arrastar para reordenar" +#~ msgid "Review & Send" +#~ msgstr "Rever & Enviar" -#: app/templates/kanban/columns.html:93 -msgid "Edit column" -msgstr "Editar coluna" +#~ msgid "Export PDF and update status" +#~ msgstr "Exportar PDF e atualizar status" -#: app/templates/kanban/columns.html:96 -msgid "Toggle active state" -msgstr "Alternar estado ativo" +#~ msgid "Monitor status and payments" +#~ msgstr "Monitorizar o estado e os pagamentos" -#: app/templates/kanban/columns.html:118 -msgid "No kanban columns found. Create your first column to get started." -msgstr "" -"Não foram encontradas colunas do kanban. Crie sua primeira coluna para " -"começar." +#~ msgid "Standard Reports" +#~ msgstr "Relatórios Padrão" -#: app/templates/kanban/columns.html:124 -msgid "Tips:" -msgstr "Dicas:" +#~ msgid "Project Report - Time breakdown by project" +#~ msgstr "Relatório do Projeto - Discriminação temporal por projecto" -#: app/templates/kanban/columns.html:126 -msgid "Drag and drop rows to reorder columns" -msgstr "Arrastar e soltar linhas para reordenar colunas" +#~ msgid "User Report - Individual performance metrics" +#~ msgstr "Relatório do Usuário - métricas de desempenho individuais" -#: app/templates/kanban/columns.html:127 -msgid "" -"System columns (todo, in_progress, done) cannot be deleted but can be " -"customized" -msgstr "" -"As colunas do sistema (todo, in progress, done) não podem ser apagadas mas " -"podem ser personalizadas" +#~ msgid "Summary Report - Key metrics and trends" +#~ msgstr "Relatório de Resumo - Principais métricas e tendências" -#: app/templates/kanban/columns.html:128 -msgid "" -"Columns marked as \"Complete\" will mark tasks as completed when dragged to " -"that column" -msgstr "" -"Colunas marcadas como \"Completo\" marcarão as tarefas como concluídas " -"quando arrastadas para essa coluna" +#~ msgid "Time Entry Report - Detailed time logs" +#~ msgstr "Relatório de entrada de tempo - Registros de tempo detalhados" -#: app/templates/kanban/columns.html:129 -msgid "" -"Inactive columns are hidden from the kanban board but tasks with that status" -" remain accessible" -msgstr "" -"Colunas inativas estão ocultas do tabuleiro do kanban, mas as tarefas com " -"esse status permanecem acessíveis" +#~ msgid "Export Options" +#~ msgstr "Opções de Exportação" -#: app/templates/kanban/columns.html:141 -msgid "Delete Kanban Column" -msgstr "Apagar a Coluna do Kanban" +#~ msgid "CSV Export - For external analysis" +#~ msgstr "Exportação de CSV - Para análise externa" -#: app/templates/kanban/columns.html:152 -msgid "Are you sure you want to delete the column?" -msgstr "Tem certeza de que deseja excluir a coluna?" +#~ msgid "Configurable delimiters" +#~ msgstr "Delimitadores configuráveis" -#: app/templates/kanban/columns.html:154 -msgid "Key:" -msgstr "Chave:" +#~ msgid "Custom date ranges" +#~ msgstr "Intervalos de datas personalizados" -#: app/templates/kanban/columns.html:157 -msgid "" -"Note: Tasks with this status will remain accessible but the column will no " -"longer appear on the kanban board." -msgstr "" -"Nota: As tarefas com este status permanecerão acessíveis, mas a coluna não " -"aparecerá mais no tabuleiro do kanban." - -#: app/templates/kanban/columns.html:167 -msgid "Delete Column" -msgstr "Apagar a Coluna" - -#: app/templates/kanban/columns.html:226 app/templates/kanban/columns.html:228 -msgid "Columns reordered successfully" -msgstr "Colunas reordenadas com sucesso" - -#: app/templates/kanban/columns.html:247 -msgid "Failed to reorder columns. Please try again." -msgstr "Falha ao reordenar colunas. Por favor, tente novamente." - -#: app/templates/kanban/create_column.html:2 -#: app/templates/kanban/create_column.html:10 -msgid "Create Kanban Column" -msgstr "Criar Coluna do Kanban" - -#: app/templates/kanban/create_column.html:12 -msgid "Add a new column to your kanban board" -msgstr "Adicionar uma nova coluna ao seu tabuleiro kanban" - -#: app/templates/kanban/create_column.html:23 -msgid "Create Kanban Column form" -msgstr "Criar um formulário de Coluna Kanban" - -#: app/templates/kanban/create_column.html:26 -#: app/templates/kanban/edit_column.html:34 -msgid "Column Label" -msgstr "Legenda da Coluna" - -#: app/templates/kanban/create_column.html:27 -msgid "e.g., In Review, Blocked, Testing" -msgstr "Por exemplo, em revisão, bloqueada, testes" - -#: app/templates/kanban/create_column.html:28 -#: app/templates/kanban/edit_column.html:36 -msgid "The display name shown on the kanban board" -msgstr "O nome da exibição mostrado no tabuleiro do kanban" - -#: app/templates/kanban/create_column.html:32 -#: app/templates/kanban/edit_column.html:23 -msgid "Column Key" -msgstr "Chave da Coluna" - -#: app/templates/kanban/create_column.html:33 -msgid "e.g., in_review, blocked, testing" -msgstr "Por exemplo, in review, blocked, testing" - -#: app/templates/kanban/create_column.html:34 -msgid "" -"Unique identifier (lowercase, no spaces, use underscores). Auto-generated " -"from label if empty." -msgstr "" -"Identificador único (em minúsculas, sem espaços, use sublinhados). Gerado " -"automaticamente da etiqueta se estiver vazio." +#~ msgid "Filtered data export" +#~ msgstr "Exportação de dados filtrados" -#: app/templates/kanban/create_column.html:41 -msgid "Global (for all projects)" -msgstr "Global (para todos os projectos)" +#~ msgid "Filter Options" +#~ msgstr "Opções do Filtro" -#: app/templates/kanban/create_column.html:46 -msgid "" -"Select a project to create project-specific columns, or leave as Global for " -"all projects" -msgstr "" -"Selecione um projeto para criar colunas específicas do projeto ou deixe como" -" Global para todos os projetos" - -#: app/templates/kanban/create_column.html:52 -#: app/templates/kanban/edit_column.html:41 -msgid "Icon Class" -msgstr "Classe de ícones" - -#: app/templates/kanban/create_column.html:55 -#: app/templates/kanban/edit_column.html:44 -msgid "Font Awesome icon class" -msgstr "Classe de ícone impressionante da fonte" - -#: app/templates/kanban/create_column.html:56 -#: app/templates/kanban/edit_column.html:45 -msgid "Browse icons" -msgstr "Navegar ícones" - -#: app/templates/kanban/create_column.html:62 -#: app/templates/kanban/edit_column.html:54 -msgid "Primary (Blue)" -msgstr "Primário (azul)" - -#: app/templates/kanban/create_column.html:63 -#: app/templates/kanban/edit_column.html:55 -msgid "Secondary (Gray)" -msgstr "Secundário (Gray)" - -#: app/templates/kanban/create_column.html:64 -#: app/templates/kanban/edit_column.html:56 -msgid "Success (Green)" -msgstr "Sucesso (verde)" - -#: app/templates/kanban/create_column.html:65 -#: app/templates/kanban/edit_column.html:57 -msgid "Danger (Red)" -msgstr "Perigo (Vermelho)" - -#: app/templates/kanban/create_column.html:66 -#: app/templates/kanban/edit_column.html:58 -msgid "Warning (Yellow)" -msgstr "Aviso (amarelo)" - -#: app/templates/kanban/create_column.html:67 -#: app/templates/kanban/edit_column.html:59 -msgid "Info (Cyan)" -msgstr "Informação (Cyan)" - -#: app/templates/kanban/create_column.html:70 -#: app/templates/kanban/edit_column.html:62 -msgid "Bootstrap color class for styling" -msgstr "Classe de cores Bootstrap para estilo" - -#: app/templates/kanban/create_column.html:78 -#: app/templates/kanban/edit_column.html:70 -msgid "Mark as Complete State" -msgstr "Marcar como estado completo" - -#: app/templates/kanban/create_column.html:79 -#: app/templates/kanban/edit_column.html:71 -msgid "Tasks moved to this column will be marked as completed" -msgstr "As tarefas movidas para esta coluna serão marcadas como concluídas" - -#: app/templates/kanban/create_column.html:89 -msgid "Create Column" -msgstr "Criar uma Coluna" - -#: app/templates/kanban/create_column.html:97 -msgid "Note:" -msgstr "Nota:" - -#: app/templates/kanban/create_column.html:97 -msgid "" -"The column will be added at the end of the board. You can reorder columns " -"later from the management page." -msgstr "" -"A coluna será adicionada no final do tabuleiro. Você pode reordenar colunas " -"depois da página de gerenciamento." +#~ msgid "Date Range - Custom start and end dates" +#~ msgstr "Intervalo de datas - Datas de início e fim personalizadas" -#: app/templates/kanban/edit_column.html:2 -#: app/templates/kanban/edit_column.html:10 -msgid "Edit Kanban Column" -msgstr "Editar a Coluna do Kanban" +#~ msgid "Project - Filter by specific projects" +#~ msgstr "Projeto - Filtrar por projetos específicos" -#: app/templates/kanban/edit_column.html:12 -msgid "Modify column settings" -msgstr "Modificar a configuração da coluna" +#~ msgid "User - Filter by team members" +#~ msgstr "Usuário - Filtrar por membros da equipe" -#: app/templates/kanban/edit_column.html:20 -msgid "Edit Kanban Column form" -msgstr "Editar o formulário de coluna do Kanban" +#~ msgid "Client - Filter by client organization" +#~ msgstr "Cliente - Filtro por organização do cliente" -#: app/templates/kanban/edit_column.html:25 -msgid "The key cannot be changed after creation" -msgstr "A chave não pode ser alterada após a criação" +#~ msgid "Saved Filters - Save frequently used filters" +#~ msgstr "Filtros Salvos - Salvar filtros usados com frequência" -#: app/templates/kanban/edit_column.html:27 -msgid "This is a project-specific column" -msgstr "Esta é uma coluna específica do projeto" +#~ msgid "Visual Analytics" +#~ msgstr "Análise Visual" -#: app/templates/kanban/edit_column.html:29 -msgid "This is a global column (for all projects)" -msgstr "Esta é uma coluna global (para todos os projetos)" +#~ msgid "Interactive bar charts" +#~ msgstr "Gráficos de barras interativos" -#: app/templates/kanban/edit_column.html:48 -#: app/templates/reports/builder.html:66 app/templates/tasks/create.html:80 -#: app/templates/tasks/edit.html:89 app/templates/timer/bulk_entry.html:154 -msgid "Preview" -msgstr "Antevisão" +#~ msgid "Time distribution pie charts" +#~ msgstr "Gráficos de tartes de distribuição de tempo" -#: app/templates/kanban/edit_column.html:81 -msgid "Inactive columns are hidden from the kanban board" -msgstr "Colunas inativas estão escondidas do tabuleiro do kanban" +#~ msgid "Trend analysis over time" +#~ msgstr "Análise de tendências ao longo do tempo" -#: app/templates/kanban/edit_column.html:100 -msgid "System Column:" -msgstr "Coluna do sistema:" +#~ msgid "Mobile-optimized charts" +#~ msgstr "Gráficos otimizados para dispositivos móveis" -#: app/templates/kanban/edit_column.html:100 -msgid "" -"This is a system column. You can customize its appearance but cannot delete " -"it." -msgstr "" -"Esta é uma coluna do sistema. Você pode personalizar sua aparência, mas não " -"pode excluí-lo." +#~ msgid "" +#~ "Use Saved Filters to quickly access " +#~ "your most common report views. Save " +#~ "filters for weekly reviews, monthly " +#~ "billing, or specific project tracking!" +#~ msgstr "" +#~ "Use o Saved Filters para acessar " +#~ "rapidamente suas visualizações de relatórios" +#~ " mais comuns. Guarde filtros para " +#~ "avaliações semanais, faturamento mensal ou " +#~ "monitoramento específico de projetos!" -#: app/templates/kiosk/base.html:112 -msgid "Keyboard Shortcuts (Press ?)" -msgstr "Atalhos de Teclado (Pressione ?)" +#~ msgid "" +#~ "Boost your efficiency with keyboard " +#~ "shortcuts, command palette, and automation " +#~ "features." +#~ msgstr "" +#~ "Aumente sua eficiência com atalhos de" +#~ " teclado, paleta de comandos e " +#~ "recursos de automação." -#: app/templates/kiosk/base.html:112 -msgid "Show keyboard shortcuts" -msgstr "Mostrar atalhos de teclado" +#~ msgid "Command Palette" +#~ msgstr "Paleta de Comando" -#: app/templates/kiosk/base.html:116 app/templates/kiosk/login.html:72 -msgid "Toggle dark mode" -msgstr "Alternar o modo escuro" +#~ msgid "Access any feature instantly without leaving the keyboard" +#~ msgstr "Acesse qualquer recurso instantaneamente sem sair do teclado" -#: app/templates/kiosk/base.html:127 -msgid "Logout from kiosk mode" -msgstr "Sair do modo quiosque" +#~ msgid "Opening the Command Palette" +#~ msgstr "Abrir a Paleta de Comando" -#: app/templates/kiosk/base.html:143 -msgid "Scan" -msgstr "Digitalizar" +#~ msgid "Press the question mark key" +#~ msgstr "Pressione a tecla de ponto de interrogação" -#: app/templates/kiosk/base.html:147 -msgid "Adjust Stock" -msgstr "Ajustar o monte" +#~ msgid "Quick search" +#~ msgstr "Pesquisa rápida" -#: app/templates/kiosk/dashboard.html:10 -msgid "Close keyboard shortcuts" -msgstr "Fechar atalhos de teclado" +#~ msgid "Go to Projects" +#~ msgstr "Ir para Projetos" -#: app/templates/kiosk/dashboard.html:43 -msgid "Scan Barcode or Enter SKU" -msgstr "Digitalizar código de barras ou inserir SKU" +#~ msgid "Go to Tasks" +#~ msgstr "Ir para Tarefas" -#: app/templates/kiosk/dashboard.html:45 -msgid "Use a barcode scanner or type the SKU manually" -msgstr "Use um scanner de código de barras ou digite o SKU manualmente" +#~ msgid "New Time Entry" +#~ msgstr "Novo Item de Tempo" -#: app/templates/kiosk/dashboard.html:55 -msgid "Scan barcode or enter SKU..." -msgstr "Escanear código de barras ou inserir SKU..." +#~ msgid "Keyboard Shortcuts" +#~ msgstr "Atalhos do Teclado" -#: app/templates/kiosk/dashboard.html:58 -msgid "Barcode or SKU input" -msgstr "Código de barras ou entrada SKU" - -#: app/templates/kiosk/dashboard.html:64 -msgid "Use Camera to Scan" -msgstr "Usar a câmera para verificar" - -#: app/templates/kiosk/dashboard.html:65 -msgid "Open camera scanner" -msgstr "Abrir o scanner da câmara" - -#: app/templates/kiosk/dashboard.html:91 -msgid "Close camera scanner" -msgstr "Fechar o scanner da câmera" - -#: app/templates/kiosk/dashboard.html:93 -msgid "Close Camera" -msgstr "Fechar câmera" - -#: app/templates/kiosk/dashboard.html:174 -msgid "Decrease quantity" -msgstr "Diminuir a quantidade" - -#: app/templates/kiosk/dashboard.html:183 -msgid "Adjustment quantity" -msgstr "Quantidade de ajustamento" - -#: app/templates/kiosk/dashboard.html:185 -msgid "Increase quantity" -msgstr "Aumentar a quantidade" - -#: app/templates/kiosk/dashboard.html:198 -msgid "Kiosk adjustment" -msgstr "Ajuste do quiosque" - -#: app/templates/kiosk/dashboard.html:199 -msgid "Physical count" -msgstr "Contagem física" - -#: app/templates/kiosk/dashboard.html:200 -msgid "Found" -msgstr "Encontrado" - -#: app/templates/kiosk/dashboard.html:201 -msgid "Damaged" -msgstr "Danos" - -#: app/templates/kiosk/dashboard.html:211 -msgid "Apply stock adjustment" -msgstr "Aplicar o ajustamento das existências" - -#: app/templates/kiosk/dashboard.html:213 -msgid "Apply Adjustment" -msgstr "Aplicar o Ajuste" - -#: app/templates/kiosk/dashboard.html:218 -msgid "Undo last adjustment" -msgstr "Desfazer o último ajuste" - -#: app/templates/kiosk/dashboard.html:220 -msgid "Undo Last Adjustment" -msgstr "Desfazer o Último Ajuste" - -#: app/templates/kiosk/dashboard.html:271 -msgid "Transfer quantity" -msgstr "Quantidade de transferência" - -#: app/templates/kiosk/dashboard.html:275 -msgid "Transfer stock" -msgstr "Unidade populacional de transferência" - -#: app/templates/kiosk/dashboard.html:277 -msgid "Transfer Stock" -msgstr "Unidade populacional de transferências" - -#: app/templates/kiosk/dashboard.html:295 -msgid "Stop timer" -msgstr "Parar o temporizador" - -#: app/templates/kiosk/dashboard.html:297 app/templates/tasks/_kanban.html:51 -#: app/templates/tasks/my_tasks.html:336 -#: app/templates/timer/timer_page.html:90 -msgid "Stop Timer" -msgstr "Parar o Temporizador" - -#: app/templates/kiosk/dashboard.html:309 -msgid "Select project..." -msgstr "Selecionar projeto..." - -#: app/templates/kiosk/dashboard.html:315 -msgid "No projects available" -msgstr "Nenhum projeto disponível" - -#: app/templates/kiosk/dashboard.html:321 -msgid "No active projects found. Please create a project first." -msgstr "Nenhum projeto ativo encontrado. Crie um projeto primeiro." - -#: app/templates/kiosk/dashboard.html:337 -#: app/templates/kiosk/dashboard.html:400 -#: app/templates/main/dashboard.html:684 app/templates/main/dashboard.html:752 -#: app/templates/timer/bulk_entry.html:333 -#: app/templates/timer/calendar.html:160 app/templates/timer/calendar.html:681 -#: app/templates/timer/calendar.html:691 app/templates/timer/calendar.html:700 -#: app/templates/timer/calendar.html:705 -#: app/templates/timer/manual_entry.html:81 -#: app/templates/timer/manual_entry.html:347 -#: app/templates/timer/timer_page.html:163 -#: app/templates/timer/timer_page.html:263 -msgid "No task" -msgstr "Nenhuma tarefa" - -#: app/templates/kiosk/dashboard.html:343 -msgid "Tasks will load after selecting a project" -msgstr "As tarefas serão carregadas após selecionar um projeto" - -#: app/templates/kiosk/dashboard.html:348 -#: app/templates/main/dashboard.html:692 app/templates/main/dashboard.html:762 -msgid "What are you working on?" -msgstr "Em que estás a trabalhar?" - -#: app/templates/kiosk/dashboard.html:351 -msgid "Start timer" -msgstr "Temporizador inicial" - -#: app/templates/kiosk/dashboard.html:369 -msgid "Recent Items" -msgstr "Itens Recentes" - -#: app/templates/kiosk/login.html:6 -msgid "Kiosk Login" -msgstr "Início do Kiosk" - -#: app/templates/kiosk/login.html:40 -msgid "Quick access for warehouse operations" -msgstr "Acesso rápido para operações de armazém" - -#: app/templates/kiosk/login.html:46 -msgid "Barcode scanning" -msgstr "Varredura de código de barras" - -#: app/templates/kiosk/login.html:52 -msgid "Stock management" -msgstr "Gestão das existências" - -#: app/templates/kiosk/login.html:58 -msgid "Time tracking" -msgstr "Seguimento do tempo" - -#: app/templates/kiosk/login.html:68 -msgid "Sign in to Kiosk Mode" -msgstr "Iniciar sessão no Modo Kiosk" - -#: app/templates/kiosk/login.html:69 -msgid "Select your username to continue" -msgstr "Selecione seu nome de usuário para continuar" - -#: app/templates/kiosk/login.html:72 -msgid "Toggle Theme" -msgstr "Alternar tema" - -#: app/templates/kiosk/login.html:98 -msgid "Select User" -msgstr "Selecionar usuário" - -#: app/templates/kiosk/login.html:126 -msgid "your-username" -msgstr "seu nome de usuário" - -#: app/templates/kiosk/login.html:159 -msgid "Standard Login" -msgstr "Login Padrão" - -#: app/templates/leads/convert_to_client.html:4 -#: app/templates/leads/convert_to_client.html:10 -#: app/templates/leads/convert_to_client.html:15 -#: app/templates/leads/convert_to_client.html:32 -#: app/templates/leads/view.html:17 -msgid "Convert to Client" -msgstr "Converter para Cliente" - -#: app/templates/leads/convert_to_client.html:21 -msgid "" -"This will create a new client and primary contact from this lead, then mark " -"the lead as converted." -msgstr "" -"Isto irá criar um novo cliente e contato primário a partir deste lead, em " -"seguida, marque o lead como convertido." - -#: app/templates/leads/convert_to_client.html:23 -msgid "Lead summary" -msgstr "Resumo do chumbo" - -#: app/templates/leads/convert_to_deal.html:4 -#: app/templates/leads/convert_to_deal.html:10 -#: app/templates/leads/convert_to_deal.html:15 -#: app/templates/leads/convert_to_deal.html:60 -#: app/templates/leads/view.html:18 -msgid "Convert to Deal" -msgstr "Converter para Deal" - -#: app/templates/leads/form.html:55 app/templates/leads/list.html:35 -#: app/templates/leads/list.html:55 app/templates/leads/list.html:83 -#: app/templates/leads/view.html:67 app/templates/reports/user_report.html:84 -#: app/templates/timer/calendar.html:889 -#: app/templates/timer/edit_timer.html:309 -#: app/templates/timer/view_timer.html:181 -msgid "Source" -msgstr "Origem" - -#: app/templates/leads/form.html:56 -msgid "Website, referral, ad..." -msgstr "Site, referência, anúncio..." - -#: app/templates/leads/form.html:69 -msgid "Lead Score" -msgstr "Pontuação Principal" - -#: app/templates/leads/form.html:74 app/templates/leads/view.html:96 -msgid "Estimated Value" -msgstr "Valor estimado" - -#: app/templates/leads/form.html:100 -msgid "Save Lead" -msgstr "Gravar o Chumbo" - -#: app/templates/leads/list.html:23 -msgid "Name, company, email..." -msgstr "Nome, empresa, e-mail..." - -#: app/templates/leads/list.html:28 app/templates/tasks/my_tasks.html:130 -msgid "All Statuses" -msgstr "Todos os estados" - -#: app/templates/leads/list.html:36 -msgid "Website, referral..." -msgstr "Website, referência..." - -#: app/templates/leads/list.html:54 app/templates/leads/list.html:78 -#: app/templates/leads/view.html:87 -msgid "Score" -msgstr "Pontuação" - -#: app/templates/leads/list.html:95 -msgid "No leads found" -msgstr "Nenhuma pista encontrada" - -#: app/templates/leads/list.html:97 -msgid "Create First Lead" -msgstr "Criar o Primeiro Lead" - -#: app/templates/leads/view.html:19 -msgid "Mark this lead as lost?" -msgstr "Marcar esta pista como perdida?" - -#: app/templates/leads/view.html:21 -msgid "Mark Lost" -msgstr "Marcar Perdido" - -#: app/templates/leads/view.html:30 -msgid "Lead" -msgstr "Chumbo" - -#: app/templates/leads/view.html:72 -msgid "No contact details yet" -msgstr "Nenhum contacto ainda" - -#: app/templates/leads/view.html:78 -msgid "Lead Details" -msgstr "Detalhes do Guia" - -#: app/templates/main/about.html:9 -msgid "Professional time tracking and project management" -msgstr "Monitoramento de tempo profissional e gerenciamento de projetos" - -#: app/templates/main/about.html:24 -msgid "" -"A comprehensive web-based time tracking application built with Flask, " -"featuring project management, client organization, task management, " -"invoicing, and advanced analytics." -msgstr "" -"Um aplicativo abrangente de monitoramento de tempo baseado na web construído" -" com o Flask, com gerenciamento de projetos, organização de clientes, " -"gerenciamento de tarefas, faturamento e análises avançadas." +#~ msgid "" +#~ "Navigate faster with keyboard-driven " +#~ "commands. Press Shift+? to see all " +#~ "shortcuts." +#~ msgstr "" +#~ "Navegue mais rápido com comandos " +#~ "orientados pelo teclado. Pressione Shift+? " +#~ "para ver todos os atalhos." -#: app/templates/main/about.html:35 app/templates/main/help.html:32 -msgid "Invoicing" -msgstr "Faturação" +#~ msgid "Global Search" +#~ msgstr "Pesquisa Global" -#: app/templates/main/about.html:45 -msgid "" -"TimeTracker is free and open source. You can donate or buy a supporter " -"license — features are never locked." -msgstr "" -"TimeTracker é livre e código aberto. Você pode doar ou comprar uma licença " -"de suporte — os recursos nunca são bloqueados." +#~ msgid "" +#~ "Quickly find projects, tasks, clients, " +#~ "and time entries from anywhere in " +#~ "the app." +#~ msgstr "" +#~ "Encontre rapidamente projetos, tarefas, " +#~ "clientes e entradas de tempo de " +#~ "qualquer lugar do aplicativo." -#: app/templates/main/about.html:55 app/templates/main/help.html:111 -msgid "Smart Timers" -msgstr "Temporizadores Inteligentes" +#~ msgid "Email Notifications" +#~ msgstr "Notificações por E- mail" -#: app/templates/main/about.html:57 -msgid "Real-time tracking with idle detection and live updates" -msgstr "" -"Monitoramento em tempo real com detecção ociosa e atualizações ao vivo" +#~ msgid "" +#~ "Get notified about task assignments, " +#~ "overdue invoices, and weekly summaries " +#~ "via email." +#~ msgstr "" +#~ "Seja notificado sobre atribuições de " +#~ "tarefas, faturas atrasadas e resumos " +#~ "semanais via e-mail." -#: app/templates/main/about.html:62 app/templates/main/help.html:29 -#: app/templates/main/help.html:236 -msgid "Client Management" -msgstr "Gestão de Clientes" +#~ msgid "Administrator Features" +#~ msgstr "Funcionalidades do Administrador" -#: app/templates/main/about.html:64 -msgid "Organize clients with contacts, rates, and project relations" -msgstr "Organize clientes com contatos, tarifas e relações de projeto" +#~ msgid "Create new users with flexible authentication" +#~ msgstr "Criar novos usuários com autenticação flexível" -#: app/templates/main/about.html:69 -msgid "Task System" -msgstr "Sistema de tarefas" +#~ msgid "Assign custom roles with specific permissions" +#~ msgstr "Atribuir funções personalizadas com permissões específicas" -#: app/templates/main/about.html:71 -msgid "Break down projects into tasks with progress tracking" -msgstr "Quebrar projetos em tarefas com acompanhamento de progresso" +#~ msgid "Activate/deactivate user accounts" +#~ msgstr "Activar/desactivar contas de utilizador" -#: app/templates/main/about.html:76 -msgid "PDF Invoices" -msgstr "Faturas PDF" +#~ msgid "View user statistics and activity" +#~ msgstr "Visualizar estatísticas e atividade do usuário" -#: app/templates/main/about.html:78 -msgid "Generate professional invoices from tracked time" -msgstr "Gerar faturas profissionais de tempo rastreado" +#~ msgid "Generate API tokens for users" +#~ msgstr "Gerar tokens de API para usuários" -#: app/templates/main/about.html:85 app/templates/main/help.html:427 -msgid "Core Features" -msgstr "Características Principais" +#~ msgid "Access Control" +#~ msgstr "Controle de acesso" -#: app/templates/main/about.html:87 -msgid "Start/stop timers with project and task association" -msgstr "Start/stop timers com associação de projeto e tarefa" +#~ msgid "Granular role-based permissions system" +#~ msgstr "Sistema de permissões baseado em funções granulares" -#: app/templates/main/about.html:88 -msgid "Manual time entry with notes and tags" -msgstr "Entrada de tempo manual com notas e etiquetas" +#~ msgid "Custom roles with fine-grained access" +#~ msgstr "Funções personalizadas com acesso fino" -#: app/templates/main/about.html:89 -msgid "Client and project organization" -msgstr "Organização do cliente e do projecto" +#~ msgid "User data access controls" +#~ msgstr "Controlos de acesso aos dados do utilizador" -#: app/templates/main/about.html:90 -msgid "Role-based access and user profiles" -msgstr "Acesso baseado em funções e perfis de utilizador" +#~ msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" +#~ msgstr "Integração OIDC/SSO (Azure AD, Authelia, etc.)" -#: app/templates/main/about.html:94 -msgid "Advanced Features" -msgstr "Recursos Avançados" +#~ msgid "API token management for integrations" +#~ msgstr "Gerenciamento de token API para integrações" -#: app/templates/main/about.html:96 -msgid "Branded PDF invoicing with tax and payment tracking" -msgstr "Marca PDF facturação com imposto e acompanhamento de pagamentos" +#~ msgid "Authentication Methods" +#~ msgstr "Métodos de autenticação" -#: app/templates/main/about.html:97 -msgid "Visual analytics and detailed reporting" -msgstr "Análise visual e relatórios detalhados" +#~ msgid "Username-only (simple internal use)" +#~ msgstr "Apenas o nome de utilizador (utilização interna simples)" -#: app/templates/main/about.html:98 -msgid "REST API for integrations" -msgstr "API REST para integrações" +#~ msgid "OIDC/SSO (enterprise authentication)" +#~ msgstr "OIDC/SSO (autenticação da empresa)" -#: app/templates/main/about.html:99 -msgid "PWA capabilities and mobile-friendly UI" -msgstr "Capacidades de PWA e interface móvel" +#~ msgid "Both methods simultaneously" +#~ msgstr "Ambos os métodos simultaneamente" -#: app/templates/main/about.html:106 -msgid "Platform Support" -msgstr "Suporte à Plataforma" +#~ msgid "Automatic role assignment via groups" +#~ msgstr "Atribuição automática de funções através de grupos" -#: app/templates/main/about.html:109 -msgid "Web Application" -msgstr "Aplicação Web" +#~ msgid "Role & Permission Management" +#~ msgstr "Gestão de Funções e Permissões" -#: app/templates/main/about.html:111 -msgid "Desktop browsers (Chrome, Firefox, Safari, Edge)" -msgstr "Navegadores de secretária (Chrome, Firefox, Safari, Edge)" +#~ msgid "Create custom roles beyond Admin/User" +#~ msgstr "Criar funções personalizadas para além do Administrador/Utilizador" -#: app/templates/main/about.html:112 -msgid "Mobile responsive design" -msgstr "Design móvel responsivo" +#~ msgid "Set granular permissions per feature" +#~ msgstr "Definir permissões granulares por recurso" -#: app/templates/main/about.html:113 -msgid "Progressive Web App (PWA)" -msgstr "Aplicação Web Progressiva (PWA)" +#~ msgid "Assign users to multiple roles" +#~ msgstr "Atribuir usuários a múltiplas funções" -#: app/templates/main/about.html:114 -msgid "Touch-friendly tablet interface" -msgstr "Interface de tablet amigável ao toque" +#~ msgid "View and manage all permissions" +#~ msgstr "Ver e gerir todas as permissões" -#: app/templates/main/about.html:118 -msgid "Operating Systems" -msgstr "Sistemas operativos" +#~ msgid "General Settings" +#~ msgstr "Configuração Geral" -#: app/templates/main/about.html:120 -msgid "Windows, macOS, Linux" -msgstr "Windows, macOS, Linux" +#~ msgid "Timezone and locale settings" +#~ msgstr "Configuração do fuso horário e da localização" -#: app/templates/main/about.html:121 -msgid "Android and iOS (browser)" -msgstr "Android e iOS (browser)" +#~ msgid "Currency configuration" +#~ msgstr "Configuração da moeda" -#: app/templates/main/about.html:122 -msgid "Raspberry Pi support" -msgstr "Apoio Pi framboesa" +#~ msgid "Time rounding rules" +#~ msgstr "Regras de arredondamento do tempo" -#: app/templates/main/about.html:123 -msgid "Dockerized deployment" -msgstr "Implementação acoplada" +#~ msgid "Self-registration settings" +#~ msgstr "Configurações de auto-registro" -#: app/templates/main/about.html:127 -msgid "Database Support" -msgstr "Suporte à Base de Dados" +#~ msgid "Timer Settings" +#~ msgstr "Configuração do Temporizador" -#: app/templates/main/about.html:129 -msgid "PostgreSQL (recommended)" -msgstr "PostgreSQL (recomendado)" +#~ msgid "Idle timeout configuration" +#~ msgstr "Configuração do tempo- limite inactivo" -#: app/templates/main/about.html:130 -msgid "SQLite (dev/test)" -msgstr "SQLite (dev/test)" +#~ msgid "Single active timer mode" +#~ msgstr "Modo de temporizador ativo único" -#: app/templates/main/about.html:131 -msgid "Automatic migrations with Flask-Migrate" -msgstr "Migrações automáticas com Flask-Migrate" +#~ msgid "Timer display preferences" +#~ msgstr "Preferências de visualização do temporizador" -#: app/templates/main/about.html:132 -msgid "Backup and restoration tools" -msgstr "Ferramentas de backup e restauração" +#~ msgid "Notification settings" +#~ msgstr "Configurações de notificação" -#: app/templates/main/about.html:140 -msgid "Technical Specifications" -msgstr "Especificações técnicas" +#~ msgid "Database Management" +#~ msgstr "Gestão de Bases de Dados" -#: app/templates/main/about.html:143 -msgid "Technology Stack" -msgstr "Pilha de Tecnologia" +#~ msgid "Create manual database backups" +#~ msgstr "Criar backups manuais do banco de dados" -#: app/templates/main/about.html:145 -msgid "Backend" -msgstr "Infraestrutura" +#~ msgid "View database migration status" +#~ msgstr "Ver o estado de migração da base de dados" -#: app/templates/main/about.html:146 -msgid "Frontend" -msgstr "Frontend" +#~ msgid "Monitor database performance" +#~ msgstr "Monitorar o desempenho da base de dados" -#: app/templates/main/about.html:148 -msgid "Deployment" -msgstr "Implantação" +#~ msgid "Clean up old data and logs" +#~ msgstr "Limpar dados e registros antigos" -#: app/templates/main/about.html:152 -msgid "Key Capabilities" -msgstr "Capacidades de Chave" +#~ msgid "System Monitoring" +#~ msgstr "Monitorização do sistema" -#: app/templates/main/about.html:154 -msgid "Real-time" -msgstr "Tempo real" +#~ msgid "View system information and health" +#~ msgstr "Ver informações e saúde do sistema" -#: app/templates/main/about.html:155 -msgid "i18n" -msgstr "i18n" +#~ msgid "Monitor application performance" +#~ msgstr "Monitorar o desempenho da aplicação" -#: app/templates/main/about.html:165 -msgid "Open Source & Community" -msgstr "& Comunidade de Código Aberto" +#~ msgid "Review system logs and errors" +#~ msgstr "Rever os registos e erros do sistema" -#: app/templates/main/about.html:168 -msgid "Open Source Benefits" -msgstr "Benefícios de Código Aberto" +#~ msgid "Mobile-Friendly Features" +#~ msgstr "Características Mobile-friendly" -#: app/templates/main/about.html:170 -msgid "Full source code available on GitHub" -msgstr "Código fonte completo disponível no GitHub" +#~ msgid "Optimized for phones and tablets" +#~ msgstr "Otimizado para telefones e tablets" -#: app/templates/main/about.html:171 -msgid "Licensed under GPL v3.0" -msgstr "Licenciado sob GPL v3.0" +#~ msgid "Touch-friendly interface" +#~ msgstr "Interface amigável ao toque" -#: app/templates/main/about.html:172 -msgid "Community-driven development" -msgstr "Desenvolvimento comunitário" +#~ msgid "Adaptive layouts for all screen sizes" +#~ msgstr "layouts adaptativos para todos os tamanhos de tela" -#: app/templates/main/about.html:173 -msgid "Transparent issue tracking and bug reports" -msgstr "Monitoramento transparente de problemas e relatórios de erros" +#~ msgid "High contrast for outdoor visibility" +#~ msgstr "Alto contraste para visibilidade exterior" -#: app/templates/main/about.html:177 -msgid "Deployment Options" -msgstr "Opções de implantação" +#~ msgid "Mobile Navigation" +#~ msgstr "Navegação móvel" -#: app/templates/main/about.html:179 -msgid "Docker images (GHCR)" -msgstr "Imagens de acoplagem (GHCR)" +#~ msgid "Bottom tab bar for easy access" +#~ msgstr "Barra de tabulação inferior para fácil acesso" -#: app/templates/main/about.html:180 -msgid "Self-hosted deployment with full control" -msgstr "Implementação automática com controle total" +#~ msgid "Quick access to dashboard" +#~ msgstr "Acesso rápido ao painel" -#: app/templates/main/about.html:181 -msgid "Cloud-ready with Compose configs" -msgstr "Pronto para a nuvem com configurações Compose" +#~ msgid "One-tap time logging" +#~ msgstr "Registo de tempo de torneira única" -#: app/templates/main/about.html:187 -msgid "View on GitHub" -msgstr "Ver no GitHub" +#~ msgid "Mobile-optimized reports" +#~ msgstr "Relatórios otimizados para dispositivos móveis" -#: app/templates/main/about.html:191 app/templates/main/donate.html:201 -msgid "Support updates" -msgstr "Atualizações de suporte" +#~ msgid "Installation" +#~ msgstr "Instalação" -#: app/templates/main/about.html:205 app/templates/main/donate.html:17 -msgid "Support TimeTracker Development" -msgstr "Desenvolvimento do Rastreador de Tempo de Suporte" +#~ msgid "Open TimeTracker in your mobile browser" +#~ msgstr "Abra o TimeTracker no seu navegador móvel" -#: app/templates/main/about.html:208 -msgid "" -"TimeTracker is free and open-source. Support updates and new features — or " -"remove prompts with a one-time key." -msgstr "" -"TimeTracker é livre e de código aberto. Suporte atualizações e novos " -"recursos — ou remova prompts com uma chave única." +#~ msgid "Look for \"Add to Home Screen\" option" +#~ msgstr "Procure a opção \"Adicionar à Tela Inicial\"" -#: app/templates/main/about.html:219 app/templates/main/donate.html:49 -msgid "Remove prompts with a one-time key." -msgstr "Remover prompts com uma chave única." +#~ msgid "Follow browser-specific installation prompts" +#~ msgstr "Siga as instruções de instalação específicas do navegador" -#: app/templates/main/about.html:230 -msgid "Getting Help & Resources" -msgstr "Obtendo Ajuda & Recursos" +#~ msgid "Launch from your home screen like a native app" +#~ msgstr "Inicie a partir de sua tela inicial como um aplicativo nativo" -#: app/templates/main/about.html:236 app/templates/main/help.html:767 -msgid "Documentation" -msgstr "Documentação" +#~ msgid "PWA Benefits" +#~ msgstr "Benefícios da PWA" -#: app/templates/main/about.html:237 -msgid "Step-by-step guides for all features." -msgstr "Guias passo a passo para todas as funcionalidades." +#~ msgid "Offline capability for basic functions" +#~ msgstr "Capacidade desligada para funções básicas" + +#~ msgid "Faster loading times" +#~ msgstr "Tempos de carregamento mais rápidos" + +#~ msgid "Native app-like experience" +#~ msgstr "Experiência nativa tipo app" + +#~ msgid "Push notifications (where supported)" +#~ msgstr "Notificações de envio (quando suportadas)" + +#~ msgid "" +#~ "TimeTracker provides a REST API for " +#~ "integration with other tools, mobile " +#~ "apps, and custom workflows." +#~ msgstr "" +#~ "O TimeTracker fornece uma API REST " +#~ "para integração com outras ferramentas, " +#~ "aplicativos móveis e fluxos de trabalho" +#~ " personalizados." + +#~ msgid "Interactive Swagger UI at" +#~ msgstr "UI Swagger Interativo em" + +#~ msgid "OpenAPI 3.0 specification at" +#~ msgstr "Especificação OpenAPI 3.0 em" + +#~ msgid "Bearer token or X-API-Key authentication" +#~ msgstr "Token do portador ou autenticação de X- API- Key" + +#~ msgid "Projects, time entries, tasks, clients, invoices, and more" +#~ msgstr "Projetos, entradas de tempo, tarefas, clientes, faturas e muito mais" + +#~ msgid "Open API Documentation" +#~ msgstr "Abrir a Documentação da API" + +#~ msgid "Troubleshooting & FAQ" +#~ msgstr "Resolução de Problemas & Perguntas Frequentes" + +#~ msgid "What happens if I forget to stop my timer?" +#~ msgstr "O que acontece se me esquecer de parar o temporizador?" + +#~ msgid "" +#~ "The timer will continue running until" +#~ " you stop it manually. You can " +#~ "see your active timer on the " +#~ "dashboard and timer page. The timer " +#~ "persists even if you close your " +#~ "browser or restart your device. If " +#~ "idle detection is enabled, the timer " +#~ "may pause automatically after the " +#~ "configured timeout period." +#~ msgstr "" +#~ "O temporizador continuará a correr até" +#~ " o parar manualmente. Você pode ver" +#~ " seu temporizador ativo no painel e" +#~ " na página do temporizador. O " +#~ "temporizador persiste mesmo se fechar o" +#~ " navegador ou reiniciar o dispositivo. " +#~ "Se a detecção estiver ativada, o " +#~ "temporizador pode pausar automaticamente após" +#~ " o período de tempo- limite " +#~ "configurado." + +#~ msgid "Can I edit time entries after they're created?" +#~ msgstr "Posso editar entradas de tempo depois de criadas?" + +#~ msgid "" +#~ "Yes, you can edit any time entry" +#~ " by clicking the edit button in " +#~ "the time entry list. You can " +#~ "modify the project, start/end times, " +#~ "notes, tags, billable status, and task" +#~ " assignment. Admins can edit all time" +#~ " entries, while regular users can " +#~ "only edit their own entries." +#~ msgstr "" +#~ "Sim, você pode editar qualquer entrada" +#~ " de tempo clicando no botão editar" +#~ " na lista de entrada de tempo. " +#~ "Você pode modificar o projeto, as " +#~ "horas de início/fim, notas, tags, status" +#~ " de faturamento e atribuição de " +#~ "tarefas. Os administradores podem editar " +#~ "todos os itens de tempo, enquanto " +#~ "os usuários regulares só podem editar" +#~ " seus próprios itens." + +#~ msgid "How do I track time for multiple projects?" +#~ msgstr "Como posso acompanhar o tempo para vários projetos?" + +#~ msgid "" +#~ "By default, you can only have one" +#~ " active timer at a time. To " +#~ "switch projects, stop your current timer" +#~ " and start a new one for the" +#~ " different project. Alternatively, you can" +#~ " create manual time entries for past" +#~ " work or configure the system to " +#~ "allow multiple active timers (admin " +#~ "setting)." +#~ msgstr "" +#~ "Por padrão, você só pode ter um" +#~ " timer ativo de cada vez. Para " +#~ "mudar de projeto, pare seu timer " +#~ "atual e inicie um novo para o " +#~ "projeto diferente. Alternativamente, você pode" +#~ " criar entradas de tempo manual para" +#~ " o trabalho passado ou configurar o" +#~ " sistema para permitir múltiplos timers " +#~ "ativos (configuração de administração)." + +#~ msgid "How do I export my time data?" +#~ msgstr "Como exporto meus dados de tempo?" + +#~ msgid "" +#~ "Go to the Reports page and use " +#~ "the \"Export CSV\" feature. You can " +#~ "apply filters to export specific data," +#~ " or export all time entries. The " +#~ "CSV file includes all time entry " +#~ "details and can be opened in Excel" +#~ " or other spreadsheet applications. You " +#~ "can also configure the delimiter for " +#~ "different regional standards." +#~ msgstr "" +#~ "Vá para a página Relatórios e use" +#~ " o recurso \"Exportar CSV\". Você " +#~ "pode aplicar filtros para exportar dados" +#~ " específicos ou exportar todos os " +#~ "itens de tempo. O arquivo CSV " +#~ "inclui todos os detalhes de entrada " +#~ "de tempo e pode ser aberto no " +#~ "Excel ou outras aplicações de planilha." +#~ " Você também pode configurar o " +#~ "delimitador para diferentes padrões regionais." + +#~ msgid "What's the difference between billable and non-billable time?" +#~ msgstr "" +#~ "Qual é a diferença entre o tempo" +#~ " de faturamento e o tempo não " +#~ "creditável?" + +#~ msgid "" +#~ "Billable time is tracked for client " +#~ "billing purposes and can have an " +#~ "hourly rate associated with it. Non-" +#~ "billable time is for internal work " +#~ "that doesn't get charged to clients. " +#~ "You can mark individual time entries " +#~ "as billable or non-billable, and " +#~ "projects can have default billable " +#~ "settings. This distinction is crucial " +#~ "for accurate invoicing and profitability " +#~ "analysis." +#~ msgstr "" +#~ "O tempo de faturamento é rastreado " +#~ "para fins de faturamento do cliente " +#~ "e pode ter uma taxa horária " +#~ "associada a ele. Tempo não-montável " +#~ "é para o trabalho interno que não" +#~ " é cobrado aos clientes. Você pode" +#~ " marcar entradas de tempo individuais " +#~ "como billable ou não-billable, e " +#~ "os projetos podem ter configurações " +#~ "billable padrão. Esta distinção é " +#~ "crucial para uma análise precisa da " +#~ "facturação e da rentabilidade." + +#~ msgid "How do I create an invoice from my time entries?" +#~ msgstr "Como faço para criar uma fatura a partir dos meus registros de tempo?" + +#~ msgid "" +#~ "Navigate to Invoices → Create Invoice," +#~ " set up the client and project " +#~ "details, then use \"Generate from Time" +#~ " Entries\" to automatically create invoice" +#~ " items from your tracked time. You" +#~ " can filter by date range and " +#~ "project, and the system will group " +#~ "time entries intelligently. Review the " +#~ "generated items and export as a " +#~ "professional PDF." +#~ msgstr "" +#~ "Navegue para Faturas → Crie Fatura, " +#~ "configure os detalhes do cliente e " +#~ "do projeto e, em seguida, use " +#~ "\"Generate from Time Entries\" para " +#~ "criar automaticamente itens de fatura a" +#~ " partir de seu tempo rastreado. Você" +#~ " pode filtrar por intervalo de data" +#~ " e projeto, e o sistema irá " +#~ "agrupar entradas de tempo de forma " +#~ "inteligente. Reveja os itens gerados e" +#~ " exporte como um PDF profissional." + +#~ msgid "Can I use TimeTracker on my mobile device?" +#~ msgstr "Posso usar o TimeTracker no meu dispositivo móvel?" + +#~ msgid "" +#~ "Yes! TimeTracker is fully responsive and" +#~ " works great on mobile devices. You" +#~ " can install it as a Progressive " +#~ "Web App (PWA) for a native-like" +#~ " experience. The mobile interface includes" +#~ " a bottom tab bar for easy " +#~ "navigation and touch-optimized controls " +#~ "for time tracking on the go." +#~ msgstr "" +#~ "Sim! TimeTracker é totalmente responsivo " +#~ "e funciona muito bem em dispositivos " +#~ "móveis. Você pode instalá-lo como um " +#~ "aplicativo web progressivo (PWA) para " +#~ "uma experiência nativa. A interface " +#~ "móvel inclui uma barra de tabulação " +#~ "inferior para fácil navegação e " +#~ "controles otimizados com toque para " +#~ "rastreamento de tempo em movimento." + +#~ msgid "How do I use the command palette and keyboard shortcuts?" +#~ msgstr "Como faço para usar a paleta de comandos e atalhos de teclado?" + +#~ msgid "" +#~ "Press the question mark key (?) to" +#~ " open the command palette. From " +#~ "there, you can type to search for" +#~ " any action or navigation target. Use" +#~ " keyboard sequences like \"g d\" for" +#~ " Dashboard, \"g p\" for Projects, or" +#~ " \"n e\" for New Entry. Press " +#~ "Shift+? to see all available shortcuts." +#~ " Press Ctrl+K (or Cmd+K on Mac) " +#~ "for quick search." +#~ msgstr "" +#~ "Pressione a tecla de ponto de " +#~ "interrogação (?) para abrir a paleta " +#~ "de comandos. A partir daí, você " +#~ "pode digitar para procurar qualquer ação" +#~ " ou alvo de navegação. Use sequências" +#~ " de teclado como \"g d\" para " +#~ "Dashboard, \"g p\" para Projetos, ou " +#~ "\"n e\" para Nova Entrada. Pressione " +#~ "Shift+? para ver todos os atalhos " +#~ "disponíveis. Pressione Ctrl+K (ou Cmd+K " +#~ "no Mac) para uma busca rápida." + +#~ msgid "How do I create bulk time entries for multiple days?" +#~ msgstr "Como faço para criar entradas de tempo em massa para vários dias?" + +#~ msgid "" +#~ "Navigate to Work → Bulk Time " +#~ "Entry. Select your project, choose a " +#~ "date range, set your daily start " +#~ "and end times, and optionally skip " +#~ "weekends. The system will create " +#~ "identical time entries for each day " +#~ "in the range. This is perfect for" +#~ " logging regular work patterns or " +#~ "filling in past time when you " +#~ "worked consistent hours." +#~ msgstr "" +#~ "Navegar para o trabalho → Entrada " +#~ "de tempo em massa. Selecione seu " +#~ "projeto, escolha um intervalo de datas," +#~ " defina seus horários de início e " +#~ "fim diários e, opcionalmente, ignore os" +#~ " fins de semana. O sistema criará " +#~ "entradas de tempo idênticas para cada" +#~ " dia no intervalo. Isso é perfeito" +#~ " para registrar padrões de trabalho " +#~ "regulares ou preencher o tempo passado" +#~ " quando você trabalhou horas consistentes." + +#~ msgid "What are time entry templates and how do I use them?" +#~ msgstr "O que são modelos de entrada de tempo e como eu os uso?" + +#~ msgid "" +#~ "Time entry templates let you save " +#~ "frequently used time entry configurations. " +#~ "When creating a manual time entry, " +#~ "check \"Save as Template\" to save " +#~ "the project, task, and notes. Later, " +#~ "when creating new entries, you can " +#~ "select a template to quickly fill " +#~ "in these details. Templates are personal" +#~ " and only visible to you." +#~ msgstr "" +#~ "Modelos de entrada de tempo permitem " +#~ "salvar configurações de entrada de tempo" +#~ " frequentemente usadas. Ao criar uma " +#~ "entrada de tempo manual, verifique " +#~ "\"Salvar como modelo\" para salvar o " +#~ "projeto, tarefa e notas. Mais tarde, " +#~ "ao criar novas entradas, você pode " +#~ "selecionar um modelo para preencher " +#~ "rapidamente esses detalhes. Os modelos " +#~ "são pessoais e apenas visíveis para " +#~ "você." + +#~ msgid "How do I track expenses and add them to invoices?" +#~ msgstr "Como posso acompanhar as despesas e adicioná-las às faturas?" + +#~ msgid "" +#~ "Go to Expenses → New Expense to" +#~ " record business expenses. Upload receipt" +#~ " images, categorize the expense, and " +#~ "mark it as billable if needed. " +#~ "When creating invoices, you can include" +#~ " these expenses as line items. " +#~ "Expenses support approval workflows, " +#~ "reimbursement tracking, and can be " +#~ "linked to specific projects." +#~ msgstr "" +#~ "Ir para Despesas → Novas Despesas " +#~ "para gravar despesas de negócios. Envie" +#~ " imagens de recibo, categorize a " +#~ "despesa, e marque-o como billable se " +#~ "necessário. Ao criar faturas, você pode" +#~ " incluir essas despesas como itens de" +#~ " linha. Despesas suportam fluxos de " +#~ "trabalho de aprovação, acompanhamento de " +#~ "reembolso, e podem ser associadas a " +#~ "projetos específicos." + +#~ msgid "Can I use Markdown in descriptions?" +#~ msgstr "Posso usar o Markdown nas descrições?" + +#~ msgid "" +#~ "Yes! Project and task descriptions " +#~ "support full Markdown formatting. You " +#~ "can use bold, italic, headings, lists," +#~ " links, code blocks, tables, and " +#~ "images. This allows you to create " +#~ "rich, well-formatted documentation directly" +#~ " in your projects and tasks. The " +#~ "Markdown editor includes a preview mode" +#~ " and supports dark theme." +#~ msgstr "" +#~ "Sim! Descrições de projeto e tarefa " +#~ "suportam formatação Markdown completa. Você" +#~ " pode usar negrito, itálico, cabeçalhos," +#~ " listas, links, blocos de código, " +#~ "tabelas e imagens. Isso permite que " +#~ "você crie documentação rica e bem " +#~ "formatada diretamente em seus projetos e" +#~ " tarefas. O editor Markdown inclui um" +#~ " modo de visualização e suporta tema" +#~ " escuro." + +#~ msgid "Where can I get additional help?" +#~ msgstr "Onde posso obter ajuda adicional?" + +#~ msgid "" +#~ "This help page covers most common " +#~ "questions and features. For complete " +#~ "documentation:" +#~ msgstr "" +#~ "Esta página de ajuda cobre questões " +#~ "e recursos mais comuns. Para " +#~ "documentação completa:" + +#~ msgid "Complete Documentation Index" +#~ msgstr "Índice de Documentação Completa" + +#~ msgid "Getting Started Guide" +#~ msgstr "Guia de Introdução" + +#~ msgid "Product Overview & Features" +#~ msgstr "Visão geral do produto e recursos" + +#~ msgid "Changelog" +#~ msgstr "Changelog" + +#~ msgid "Report issues and request features on" +#~ msgstr "Relatar questões e recursos de solicitação sobre" + +#~ msgid "" +#~ "As an admin, you can access " +#~ "additional system information and diagnostics" +#~ " in the" +#~ msgstr "" +#~ "Como administrador, você pode acessar " +#~ "informações adicionais do sistema e " +#~ "diagnósticos no" + +#~ msgid "section." +#~ msgstr "secção." + +#~ msgid "Admin documentation:" +#~ msgstr "Documentação de administração:" + +#~ msgid "Administrator Guide" +#~ msgstr "Guia do Administrador" + +#~ msgid "Still Need Help?" +#~ msgstr "Ainda precisa de ajuda?" + +#~ msgid "Can't find what you're looking for? Here are additional resources:" +#~ msgstr "Não consegues encontrar o que procuras? Aqui estão recursos adicionais:" + +#~ msgid "Complete Documentation" +#~ msgstr "Documentação Completa" + +#~ msgid "Documentation Index" +#~ msgstr "Índice da documentação" + +#~ msgid "Getting Started" +#~ msgstr "Começar" + +#~ msgid "Feature Guides" +#~ msgstr "Guias de Caracteres" + +#~ msgid "Admin Documentation" +#~ msgstr "Documentação de administração" -#: app/templates/main/about.html:239 -msgid "View Help" -msgstr "Ver Ajuda" +#~ msgid "GitHub Repository" +#~ msgstr "Repositório GitHub" -#: app/templates/main/about.html:246 -msgid "System Information" -msgstr "Informação do Sistema" +#~ msgid "Report Issue" +#~ msgstr "Questão do relatório" -#: app/templates/main/about.html:247 -msgid "Status, versions, and configuration details." -msgstr "Status, versões e detalhes de configuração." +#~ msgid "Donations and licenses fund development; nothing is paywalled." +#~ msgstr "Doações e licenças de desenvolvimento de fundos; nada é compensado." -#: app/templates/main/about.html:253 -msgid "Admin access required" -msgstr "Acesso ao administrador necessário" +#~ msgid "Open support" +#~ msgstr "Suporte aberto" -#: app/templates/main/about.html:260 app/templates/main/help.html:777 -msgid "Community Support" -msgstr "Apoio comunitário" +#~ msgid "Search Results" +#~ msgstr "Resultados da Pesquisa" -#: app/templates/main/about.html:261 -msgid "Report issues, request features, contribute." -msgstr "Relatar questões, solicitar recursos, contribuir." +#~ msgid "Search notes or tags" +#~ msgstr "Procurar notas ou etiquetas" -#: app/templates/main/about.html:263 -msgid "GitHub Issues" -msgstr "Questões do GitHub" +#~ msgid "Results" +#~ msgstr "Resultados" -#: app/templates/main/dashboard.html:16 -#, python-format -msgid "Logged %(duration)s on %(project)s" -msgstr "" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this time entry? This action cannot" +#~ " be undone." +#~ msgstr "" +#~ "Tem a certeza que deseja apagar " +#~ "este item de tempo? Esta acção não" +#~ " pode ser desfeita." -#: app/templates/main/dashboard.html:22 app/templates/main/dashboard.html:241 -msgid "View time entries" -msgstr "Ver os itens da hora" +#~ msgid "No results found" +#~ msgstr "Não foram encontrados resultados" -#: app/templates/main/dashboard.html:29 -msgid "Here's a quick overview of your work." -msgstr "Aqui está uma rápida visão geral do seu trabalho." +#~ msgid "Try a different query or check your spelling." +#~ msgstr "Tente uma consulta diferente ou verifique sua ortografia." -#: app/templates/main/dashboard.html:43 -msgid "Start timer with same project, task and notes as last entry" -msgstr "" -"Iniciar o temporizador com o mesmo projecto, tarefa e notas do último item" - -#: app/templates/main/dashboard.html:44 -msgid "Repeat last" -msgstr "Repetir último" - -#: app/templates/main/dashboard.html:46 -msgid "Start timer with last project and notes?" -msgstr "Iniciar temporizador com o último projeto e notas?" - -#: app/templates/main/dashboard.html:53 app/templates/main/dashboard.html:54 -#: app/templates/reports/builder.html:24 -msgid "Quick start" -msgstr "Início rápido" - -#: app/templates/main/dashboard.html:70 -msgid "Paused" -msgstr "Pausa" - -#: app/templates/main/dashboard.html:73 -#: app/templates/timer/edit_timer.html:296 -#: app/templates/timer/manual_entry.html:122 -#: app/templates/timer/timer_page.html:95 -msgid "Break" -msgstr "Quebrar" - -#: app/templates/main/dashboard.html:78 -#: app/templates/timer/edit_timer.html:425 -msgid "Running" -msgstr "Em execução" - -#: app/templates/main/dashboard.html:81 -msgid "Break so far" -msgstr "Para já." - -#: app/templates/main/dashboard.html:95 -msgid "Started at" -msgstr "Iniciado em" - -#: app/templates/main/dashboard.html:98 -msgid "Elapsed" -msgstr "Eclodido" - -#: app/templates/main/dashboard.html:102 -msgid "Adjust time" -msgstr "Tempo de ajuste" - -#: app/templates/main/dashboard.html:106 -msgid "Subtract 15 min" -msgstr "Subtrair 15 min" - -#: app/templates/main/dashboard.html:107 -msgid "Subtract 5 min" -msgstr "Subtrair 5 min" - -#: app/templates/main/dashboard.html:108 -msgid "Add 5 min" -msgstr "Adicionar 5 min" - -#: app/templates/main/dashboard.html:109 -msgid "Add 15 min" -msgstr "Adicionar 15 min" - -#: app/templates/main/dashboard.html:118 -msgid "Resume timer" -msgstr "Continuar o temporizador" - -#: app/templates/main/dashboard.html:119 app/templates/main/dashboard.html:145 -#: app/templates/timer/timer_page.html:76 -msgid "Resume" -msgstr "Continuar" - -#: app/templates/main/dashboard.html:125 -msgid "Pause timer (break time will be counted on resume)" -msgstr "" -"Temporizador de pausa (o tempo de intervalo será contado no currículo)" +#~ msgid "e.g., Client meeting, Site visit" +#~ msgstr "Por exemplo, reunião de clientes, visita ao site" -#: app/templates/main/dashboard.html:126 app/templates/tasks/view.html:21 -#: app/templates/timer/timer_page.html:83 -msgid "Pause" -msgstr "Pausa" +#~ msgid "Additional details..." +#~ msgstr "Detalhes adicionais..." -#: app/templates/main/dashboard.html:132 -msgid "Stop and save current time" -msgstr "Parar e salvar o tempo atual" +#~ msgid "e.g., Office, Home" +#~ msgstr "Por exemplo, Escritório, Casa" -#: app/templates/main/dashboard.html:133 -msgid "Stop & save" -msgstr "Parar & salvar" +#~ msgid "e.g., Client site, Airport" +#~ msgstr "Por exemplo, site do cliente, Aeroporto" -#: app/templates/main/dashboard.html:140 -msgid "No active timer." -msgstr "Sem temporizador activo." +#~ msgid "e.g., 12345" +#~ msgstr "Por exemplo, 12345" -#: app/templates/main/dashboard.html:142 -msgid "" -"Resume your last session or use the buttons above to repeat last / start a " -"new timer." -msgstr "" -"Retomar sua última sessão ou usar os botões acima para repetir último / " -"iniciar um novo timer." +#~ msgid "e.g., 12400" +#~ msgstr "Por exemplo, 12400" -#: app/templates/main/dashboard.html:144 -msgid "Resume last session" -msgstr "Continuar a última sessão" +#~ msgid "e.g., VW Golf" +#~ msgstr "Por exemplo, VW Golf" -#: app/templates/main/dashboard.html:149 -msgid "Click \"Start Timer\" above to begin tracking your time." -msgstr "" -"Clique em \"Iniciar temporizador\" acima para começar a rastrear o seu " -"tempo." +#~ msgid "e.g., ABC-123" +#~ msgstr "Por exemplo, ABC-123" -#: app/templates/main/dashboard.html:161 -msgid "Today's Hours" -msgstr "Horas de hoje" +#~ msgid "GPS Mileage Tracking" +#~ msgstr "Rastreamento de Mileage GPS" -#: app/templates/main/dashboard.html:169 app/templates/main/dashboard.html:193 -msgid "overtime" -msgstr "horas extraordinárias" +#~ msgid "Back to Mileage" +#~ msgstr "Voltar à Mileage" -#: app/templates/main/dashboard.html:186 -msgid "Week's Hours" -msgstr "Horas da Semana" +#~ msgid "" +#~ "Use your device GPS to record " +#~ "route points, calculate distance, and " +#~ "convert the track into an expense." +#~ msgstr "" +#~ "Use o GPS do dispositivo para " +#~ "registrar pontos de rota, calcular " +#~ "distância e converter a faixa em " +#~ "uma despesa." -#: app/templates/main/dashboard.html:207 -msgid "Month's Hours" -msgstr "Horas do Mês" +#~ msgid "Rate per km" +#~ msgstr "Taxa por km" -#: app/templates/main/dashboard.html:214 -msgid "Overtime (YTD)" -msgstr "Horas extraordinárias (YTD)" +#~ msgid "Add Point" +#~ msgstr "Adicionar ponto" -#: app/templates/main/dashboard.html:227 -msgid "If this saved you even 1 hour, consider supporting ❤️" -msgstr "Se isso o salvou mesmo 1 hora, considere apoiar" +#~ msgid "Create Expense from Track" +#~ msgstr "Criar Despesas da Faixa" -#: app/templates/main/dashboard.html:227 -msgid "Start tracking to see your productivity insights here." -msgstr "Comece a rastrear para ver seus insights de produtividade aqui." +#~ msgid "Track ID" +#~ msgstr "ID da Faixa" -#: app/templates/main/dashboard.html:227 app/templates/main/dashboard.html:237 -msgid "Loading insights…" -msgstr "Carregando insights..." +#~ msgid "Idle" +#~ msgstr "Inactivo" -#: app/templates/main/dashboard.html:233 -msgid "Value insights" -msgstr "Valorização dos insights" +#~ msgid "Distance (km)" +#~ msgstr "Distância (km)" -#: app/templates/main/dashboard.html:234 -msgid "Your tracked time at a glance" -msgstr "O seu tempo seguido de relance" +#~ msgid "Distance (miles)" +#~ msgstr "Distância (milhas)" -#: app/templates/main/dashboard.html:246 -msgid "Total hours tracked" -msgstr "Total de horas monitoradas" +#~ msgid "Tracking" +#~ msgstr "Rastreamento" -#: app/templates/main/dashboard.html:254 -msgid "Active days" -msgstr "Dias ativos" +#~ msgid "GPS tracking started" +#~ msgstr "O rastreamento do GPS começou" -#: app/templates/main/dashboard.html:259 -msgid "Hours per day (last 7 days)" -msgstr "Horas por dia (últimos 7 dias)" +#~ msgid "Track point added" +#~ msgstr "Ponto da faixa adicionado" -#: app/templates/main/dashboard.html:260 -msgid "Hours per day last seven days" -msgstr "As horas por dia duram sete dias" +#~ msgid "GPS tracking stopped" +#~ msgstr "O rastreamento do GPS parou" -#: app/templates/main/dashboard.html:264 -msgid "Most productive day" -msgstr "Dia mais produtivo" +#~ msgid "Expense created" +#~ msgstr "Despesas criadas" -#: app/templates/main/dashboard.html:268 -msgid "Avg session length" -msgstr "Comprimento da sessão Avg" - -#: app/templates/main/dashboard.html:273 -msgid "Estimated value tracked" -msgstr "Valor estimado rastreado" - -#: app/templates/main/dashboard.html:283 app/templates/main/dashboard.html:296 -msgid "This week vs last week" -msgstr "Esta semana contra a semana passada" - -#: app/templates/main/dashboard.html:284 app/templates/main/dashboard.html:297 -msgid "Hours per day (Mon–today vs same days last week)" -msgstr "Horas por dia (Mon–today vs os mesmos dias na semana passada)" - -#: app/templates/main/dashboard.html:285 -msgid "hrs this week" -msgstr "hrs esta semana" - -#: app/templates/main/dashboard.html:286 -msgid "vs last week" -msgstr "versus semana passada" - -#: app/templates/main/dashboard.html:287 -msgid "This week" -msgstr "Esta semana" - -#: app/templates/main/dashboard.html:288 -msgid "Last week" -msgstr "Na semana passada" - -#: app/templates/main/dashboard.html:289 -msgid "Could not load comparison." -msgstr "Não foi possível carregar a comparação." - -#: app/templates/main/dashboard.html:313 -msgid "This week and last week hours by day" -msgstr "Esta semana e última semana horas por dia" - -#: app/templates/main/dashboard.html:327 app/templates/reports/index.html:221 -msgid "Recent Entries" -msgstr "Entradas Recentes" - -#: app/templates/main/dashboard.html:329 -msgid "View all" -msgstr "Ver tudo" - -#: app/templates/main/dashboard.html:369 app/templates/main/search.html:66 -#: app/templates/tasks/view.html:81 -msgid "Resume - Start a new timer with same properties" -msgstr "Continuar - Iniciar um novo timer com as mesmas propriedades" - -#: app/templates/main/dashboard.html:372 app/templates/main/search.html:70 -#: app/templates/tasks/view.html:84 -msgid "Edit entry" -msgstr "Editar o item" - -#: app/templates/main/dashboard.html:375 -msgid "Duplicate entry" -msgstr "Duplicar o item" - -#: app/templates/main/dashboard.html:382 app/templates/main/search.html:77 -#: app/templates/tasks/view.html:91 -msgid "Delete entry" -msgstr "Apagar o item" - -#: app/templates/main/dashboard.html:396 -msgid "No recent entries found." -msgstr "Não foram encontrados itens recentes." - -#: app/templates/main/dashboard.html:397 app/templates/reports/index.html:245 -msgid "Start tracking time to see entries here." -msgstr "Iniciar o tempo de seguimento para ver as entradas aqui." - -#: app/templates/main/dashboard.html:419 -msgid "Weekly Goal" -msgstr "Objetivo Semanal" - -#: app/templates/main/dashboard.html:441 -msgid "Days Left" -msgstr "Dias Restantes" - -#: app/templates/main/dashboard.html:448 -msgid "Need" -msgstr "Necessidade" - -#: app/templates/main/dashboard.html:448 -msgid "to reach goal" -msgstr "alcançar o objetivo" - -#: app/templates/main/dashboard.html:459 -msgid "No Weekly Goal" -msgstr "Sem Objetivo Semanal" - -#: app/templates/main/dashboard.html:462 -msgid "Set a weekly time goal to track your progress" -msgstr "Defina um objetivo de tempo semanal para acompanhar seu progresso" - -#: app/templates/main/dashboard.html:466 -#: app/templates/weekly_goals/create.html:129 -#: app/templates/weekly_goals/index.html:146 -msgid "Create Goal" -msgstr "Criar Objetivo" - -#: app/templates/main/dashboard.html:480 -msgid "Time by project (last 7 days)" -msgstr "Tempo por projeto (últimos 7 dias)" - -#: app/templates/main/dashboard.html:482 -msgid "View report" -msgstr "Ver relatório" - -#: app/templates/main/dashboard.html:486 -msgid "Time distribution by project for the last 7 days" -msgstr "Distribuição do tempo por projecto nos últimos 7 dias" - -#: app/templates/main/dashboard.html:525 -msgid "No time logged in the last 7 days." -msgstr "Não há tempo registado nos últimos 7 dias." - -#: app/templates/main/dashboard.html:526 -msgid "Start tracking to see distribution here." -msgstr "Comece a rastrear para ver a distribuição aqui." - -#: app/templates/main/dashboard.html:537 -msgid "Top Projects (30 days)" -msgstr "Principais Projetos (30 dias)" - -#: app/templates/main/dashboard.html:575 -msgid "No activity in the last 30 days." -msgstr "Nenhuma actividade nos últimos 30 dias." - -#: app/templates/main/dashboard.html:576 -msgid "Start tracking time on projects to see them here." -msgstr "Comece a rastrear os projetos para vê-los aqui." - -#: app/templates/main/dashboard.html:596 -msgid "Live" -msgstr "Vivo" - -#: app/templates/main/dashboard.html:638 -#, python-format -msgid "You have tracked %(hours)s hours" -msgstr "" +#~ msgid "Filter Mileage" +#~ msgstr "Milhagem do Filtro" -#: app/templates/main/dashboard.html:639 -#, python-format -msgid "You have created %(count)s entries" -msgstr "" +#~ msgid "Exports use current filters" +#~ msgstr "Exportações usam filtros atuais" -#: app/templates/main/dashboard.html:641 -#, python-format -msgid "Reports generated: %(n)s" -msgstr "Relatórios gerados: %(n)s" +#~ msgid "Purpose, location..." +#~ msgstr "Propósito, localização..." -#: app/templates/main/dashboard.html:645 -msgid "" -"Thank you for supporting development. Sharing TimeTracker still helps a lot." -msgstr "" -"Obrigado por apoiar o desenvolvimento. Compartilhar o TimeTracker ainda " -"ajuda muito." +#~ msgid "Optional approval notes..." +#~ msgstr "Notas de aprovação opcionais..." -#: app/templates/main/dashboard.html:647 -msgid "Share & support" -msgstr "Partilhar o & suporte" +#~ msgid "Rejection reason (required)" +#~ msgstr "Razão de rejeição (necessária)" -#: app/templates/main/dashboard.html:651 -msgid "" -"If this saves you time, consider supporting development — everything stays " -"free and open." -msgstr "" -"Se isso lhe poupar tempo, considere apoiar o desenvolvimento — tudo " -"permanece livre e aberto." +#~ msgid "More navigation" +#~ msgstr "Mais navegação" -#: app/templates/main/dashboard.html:654 -msgid "Buy License (€25)" -msgstr "Licença de compra (25 €)" +#~ msgid "Main" +#~ msgstr "Principal" -#: app/templates/main/dashboard.html:685 -msgid "Create new task..." -msgstr "Criar uma nova tarefa..." +#~ msgid "Type a command or search..." +#~ msgstr "Digite um comando ou pesquisa..." -#: app/templates/main/dashboard.html:686 -msgid "Loading tasks..." -msgstr "Carregando tarefas..." +#~ msgid "Configure Payment Gateway" +#~ msgstr "Configurar o Gateway de Pagamento" -#: app/templates/main/dashboard.html:687 -msgid "Enter new task name:" -msgstr "Indique o novo nome da tarefa:" +#~ msgid "Set up payment processing for online invoice payments" +#~ msgstr "" +#~ "Configurar o processamento de pagamento " +#~ "para pagamentos de fatura on-line" -#: app/templates/main/dashboard.html:688 -msgid "Failed to create task: " -msgstr "Falha ao criar a tarefa:" +#~ msgid "Back to Gateways" +#~ msgstr "Voltar para Gateways" -#: app/templates/main/dashboard.html:690 -msgid "Please complete creating the task or select an existing task" -msgstr "" -"Por favor, complete a criação da tarefa ou selecione uma tarefa existente" - -#: app/templates/main/dashboard.html:698 -#: app/templates/timer/manual_entry.html:558 -msgid "A task must be selected when logging time for a project" -msgstr "Uma tarefa deve ser selecionada ao registrar o tempo para um projeto" - -#: app/templates/main/dashboard.html:699 -#: app/templates/timer/manual_entry.html:581 -msgid "A description is required when logging time" -msgstr "É necessária uma descrição ao registar o tempo" - -#: app/templates/main/dashboard.html:700 -#: app/templates/timer/manual_entry.html:45 -#, python-format -msgid "Description must be at least %(min)s characters" -msgstr "Descrição deve ser, pelo menos, %(min)s caracteres" - -#: app/templates/main/dashboard.html:715 -msgid "Quick start with a template" -msgstr "Início rápido com um modelo" - -#: app/templates/main/dashboard.html:726 -msgid "All templates" -msgstr "Todos os modelos" - -#: app/templates/main/dashboard.html:745 -#: app/templates/timer/manual_entry.html:74 -#: app/templates/timer/timer_page.html:153 -msgid "Select either a project or a client" -msgstr "Selecione um projeto ou um cliente" - -#: app/templates/main/dashboard.html:750 -#: app/templates/timer/bulk_entry.html:117 -#: app/templates/timer/manual_entry.html:79 -msgid "Task (optional)" -msgstr "Tarefa (opcional)" - -#: app/templates/main/dashboard.html:756 -msgid "" -"Select a project first to load tasks, or choose \"Create new task...\" to " -"add one" -msgstr "" -"Selecione um projeto primeiro para carregar tarefas, ou escolha \"Criar nova" -" tarefa...\" para adicionar uma" - -#: app/templates/main/dashboard.html:760 -msgid "Notes (optional)" -msgstr "Notas (facultativo)" - -#: app/templates/main/dashboard.html:767 -msgid "Tags (optional)" -msgstr "Marcas (opcional)" - -#: app/templates/main/dashboard.html:768 -msgid "e.g. meeting, dev, admin" -msgstr "Por exemplo, reunião, dev, administrador" - -#: app/templates/main/dashboard.html:775 -msgid "Comma-separated; recent tags shown as suggestions." -msgstr "Marcas recentes, separadas por vírgulas, mostradas como sugestões." - -#: app/templates/main/dashboard.html:784 -msgid "Enter a name for the new task." -msgstr "Indique um nome para a nova tarefa." - -#: app/templates/main/dashboard.html:785 -#: app/templates/project_templates/create.html:76 -#: app/templates/project_templates/edit.html:79 -#: app/templates/project_templates/edit.html:105 -msgid "Task name" -msgstr "Nome da tarefa" - -#: app/templates/main/dashboard.html:793 -msgid "Create task" -msgstr "Criar tarefa" - -#: app/templates/main/dashboard.html:936 -msgid "Task name is required." -msgstr "O nome da tarefa é obrigatório." - -#: app/templates/main/dashboard.html:1546 -#: app/templates/timer/edit_timer.html:811 -#: app/templates/timer/manual_entry.html:985 -msgid "" -"No valid image files selected. Please select PNG, JPG, GIF, or WebP images." -msgstr "" -"Nenhum arquivo de imagem válido selecionado. Selecione imagens PNG, JPG, GIF" -" ou WebP." - -#: app/templates/main/dashboard.html:1558 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/manual_entry.html:997 -msgid "Uploading" -msgstr "Enviando" - -#: app/templates/main/dashboard.html:1558 -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:823 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:997 -#: app/templates/timer/manual_entry.html:1044 -msgid "images" -msgstr "imagens" - -#: app/templates/main/dashboard.html:1559 -#: app/templates/timer/edit_timer.html:824 -#: app/templates/timer/manual_entry.html:998 -msgid "Uploading image" -msgstr "Enviando imagem" - -#: app/templates/main/dashboard.html:1605 -#: app/templates/timer/edit_timer.html:870 -#: app/templates/timer/manual_entry.html:1044 -msgid "Successfully uploaded" -msgstr "Enviado com sucesso" - -#: app/templates/main/dashboard.html:1616 -#: app/templates/timer/edit_timer.html:881 -#: app/templates/timer/manual_entry.html:1055 -msgid "image(s) failed to upload" -msgstr "a( s) imagem( s) falhou ao enviar" - -#: app/templates/main/dashboard.html:1625 -#: app/templates/timer/edit_timer.html:890 -#: app/templates/timer/manual_entry.html:1064 -msgid "Failed to upload images. Please try again." -msgstr "Não foi possível enviar as imagens. Por favor, tente novamente." - -#: app/templates/main/dashboard.html:1637 -#: app/templates/timer/edit_timer.html:902 -#: app/templates/timer/manual_entry.html:1076 -msgid "Failed to upload images. Please check your connection and try again." -msgstr "" -"Não foi possível enviar as imagens. Verifique sua conexão e tente novamente." +#~ msgid "Gateway Name" +#~ msgstr "Nome do Portal" -#: app/templates/main/donate.html:10 -msgid "Support Development" -msgstr "Apoio ao Desenvolvimento" +#~ msgid "e.g., Stripe Production" +#~ msgstr "Por exemplo, Produção de Listras" -#: app/templates/main/donate.html:20 -msgid "Donate to support development — or get a key to remove prompts" -msgstr "" -"Doar para apoiar o desenvolvimento — ou obter uma chave para remover prompts" +#~ msgid "A descriptive name for this gateway configuration" +#~ msgstr "Um nome descritivo para esta configuração de 'gateway'" -#: app/templates/main/donate.html:22 -msgid "Support updates and keep TimeTracker free for everyone" -msgstr "Suporte atualizações e manter TimeTracker livre para todos" +#~ msgid "Select provider..." +#~ msgstr "Selecionar provedor..." -#: app/templates/main/donate.html:29 app/templates/main/donate.html:114 -#: app/templates/main/donate.html:275 -msgid "Remove prompts with key" -msgstr "Remover as instruções com a chave" +#~ msgid "Stripe Configuration" +#~ msgstr "Configuração da Listra" -#: app/templates/main/donate.html:59 -msgid "Why Your Support Matters" -msgstr "Por que seu apoio importa" +#~ msgid "Your Stripe secret key" +#~ msgstr "Sua chave secreta Stripe" -#: app/templates/main/donate.html:63 -msgid "" -"TimeTracker is a free, open-source project built with passion and " -"dedication. Your donations directly support:" -msgstr "" -"TimeTracker é um projeto livre e de código aberto construído com paixão e " -"dedicação. Suas doações apoiam diretamente:" +#~ msgid "Publishable Key" +#~ msgstr "Chave para publicação" -#: app/templates/main/donate.html:70 -msgid "Server Infrastructure" -msgstr "Infraestrutura do Servidor" +#~ msgid "Your Stripe publishable key" +#~ msgstr "Sua chave publicable Stripe" -#: app/templates/main/donate.html:72 -msgid "" -"Hosting, databases, and CDN costs to keep TimeTracker fast and reliable" -msgstr "" -"Hospedagem, bancos de dados e custos CDN para manter o TimeTracker rápido e " -"confiável" +#~ msgid "Webhook signing secret for verifying webhook events" +#~ msgstr "Webhook assinando segredo para verificar eventos webhook" -#: app/templates/main/donate.html:80 -msgid "Feature Development" -msgstr "Desenvolvimento de Caracteres" +#~ msgid "PayPal Configuration" +#~ msgstr "Configuração do PayPal" -#: app/templates/main/donate.html:82 -msgid "New features, improvements, and bug fixes based on your feedback" -msgstr "" -"Novas funcionalidades, melhorias e correções de erros com base no seu " -"feedback" +#~ msgid "Test Mode" +#~ msgstr "Modo de Teste" -#: app/templates/main/donate.html:90 -msgid "Security & Maintenance" -msgstr "Segurança e Manutenção" +#~ msgid "Enable test mode for development and testing" +#~ msgstr "Habilitar o modo de teste para desenvolvimento e teste" -#: app/templates/main/donate.html:92 -msgid "" -"Regular security updates, dependency maintenance, and performance " -"optimization" -msgstr "" -"Atualizações regulares de segurança, manutenção de dependência e otimização " -"de desempenho" +#~ msgid "Save Gateway" +#~ msgstr "Gravar o Portal" -#: app/templates/main/donate.html:100 -msgid "Internationalization" -msgstr "Internacionalização" +#~ msgid "Mode" +#~ msgstr "Modo" -#: app/templates/main/donate.html:102 -msgid "" -"Translation support, localization, and making TimeTracker accessible " -"worldwide" -msgstr "" -"Suporte de tradução, localização e tornar o TimeTracker acessível em todo o " -"mundo" +#~ msgid "Production" +#~ msgstr "Produção" -#: app/templates/main/donate.html:117 -msgid "" -"One key per instance; key sent by email after payment (€25 one-time). No " -"subscription." -msgstr "" -"Uma chave por instância; chave enviada por e-mail após o pagamento (25 € uma" -" vez). Sem assinatura." +#~ msgid "Add Gateway" +#~ msgstr "Adicionar Gateway" -#: app/templates/main/donate.html:122 -msgid "Copy your System ID from Admin → Settings → Support visibility." -msgstr "" -"Copie seu ID do sistema do Admin → Configurações → Visibilidade do suporte." +#~ msgid "No Payment Gateways" +#~ msgstr "Sem Gateways de Pagamento" -#: app/templates/main/donate.html:126 -msgid "Buy a key at the link below; you’ll receive it by email." -msgstr "Compre uma chave no link abaixo; você receberá por e-mail." +#~ msgid "Configure a payment gateway to enable online invoice payments." +#~ msgstr "" +#~ "Configurar um gateway de pagamento para" +#~ " permitir pagamentos de fatura on-" +#~ "line." -#: app/templates/main/donate.html:130 -msgid "Paste the code in Admin → Settings → Support visibility and verify." -msgstr "" -"Colar o código em Admin → Configurações → Suporte visibilidade e " -"verificação." +#~ msgid "Amount Due" +#~ msgstr "Montante devido" -#: app/templates/main/donate.html:148 -msgid "Your TimeTracker Journey" -msgstr "Sua jornada do rastreador de tempo" +#~ msgid "" +#~ "You will be redirected to a secure" +#~ " payment page to complete your " +#~ "payment." +#~ msgstr "" +#~ "Você será redirecionado para uma página" +#~ " de pagamento segura para completar " +#~ "seu pagamento." -#: app/templates/main/donate.html:155 -msgid "Days using TimeTracker" -msgstr "Dias usando o TimeTracker" +#~ msgid "Continue to Payment" +#~ msgstr "Continuar ao pagamento" -#: app/templates/main/donate.html:164 -msgid "Time entries tracked" -msgstr "Registos de tempo" +#~ msgid "Payment gateway not yet supported. Please contact support." +#~ msgstr "Gateway de pagamento ainda não suportado. Por favor contacte o suporte." -#: app/templates/main/donate.html:179 -msgid "Thank you for being part of the TimeTracker community!" -msgstr "Obrigado por fazer parte da comunidade TimeTracker!" +#~ msgid "Record New Payment" +#~ msgstr "Gravar o Novo Pagamento" -#: app/templates/main/donate.html:188 -msgid "How to Support" -msgstr "Como Apoiar" +#~ msgid "Total Payments" +#~ msgstr "Total Pagamentos" -#: app/templates/main/donate.html:191 -msgid "" -"Every contribution, no matter the size, makes a difference. Your support " -"helps ensure TimeTracker remains free and continues to evolve." -msgstr "" -"Cada contribuição, não importa o tamanho, faz a diferença. Seu suporte ajuda" -" a garantir que o TimeTracker permaneça livre e continue evoluindo." +#~ msgid "Gateway Fees" +#~ msgstr "Taxas de Gateway" -#: app/templates/main/donate.html:207 -msgid "" -"You'll be redirected to Buy Me a Coffee where you can choose your " -"contribution amount" -msgstr "" -"Você será redirecionado para comprar-me um café onde você pode escolher o " -"seu montante de contribuição" +#~ msgid "Filter Payments" +#~ msgstr "Pagamentos do filtro" -#: app/templates/main/donate.html:215 -msgid "The Impact of Your Support" -msgstr "O impacto de seu apoio" +#~ msgid "ID" +#~ msgstr "ID" -#: app/templates/main/donate.html:220 -msgid "Enables faster development cycles and quicker feature releases" -msgstr "" -"Permite ciclos de desenvolvimento mais rápidos e lançamentos de recursos " -"mais rápidos" +#~ msgid "Delete Selected Payments" +#~ msgstr "Apagar os Pagamentos Seleccionados" -#: app/templates/main/donate.html:224 -msgid "Supports better documentation and user guides" -msgstr "Suporta melhor documentação e guias de usuário" +#~ msgid "Change Status for Selected Payments" +#~ msgstr "Alterar status para pagamentos selecionados" -#: app/templates/main/donate.html:228 -msgid "Helps maintain high-quality code and security standards" -msgstr "Ajuda a manter padrões de código e segurança de alta qualidade" +#~ msgid "Related Invoice" +#~ msgstr "Fatura Relacionada" -#: app/templates/main/donate.html:232 -msgid "Keeps TimeTracker free and accessible for everyone" -msgstr "Mantém o TimeTracker livre e acessível para todos" +#~ msgid "e.g., Business trip to Berlin" +#~ msgstr "Por exemplo, Viagem de negócios a Berlim" -#: app/templates/main/donate.html:241 -msgid "Other Ways to Help" -msgstr "Outras maneiras de ajudar" +#~ msgid "e.g., DE, US, GB" +#~ msgstr "Por exemplo, DE, US, GB" -#: app/templates/main/donate.html:250 -msgid "Contribute on GitHub" -msgstr "Contribuir para o GitHub" +#~ msgid "e.g., Berlin" +#~ msgstr "Por exemplo, Berlim" -#: app/templates/main/donate.html:252 -msgid "Report bugs, suggest features, or submit code" -msgstr "Reportar erros, sugerir funcionalidades ou enviar código" +#~ msgid "Filter Claims" +#~ msgstr "Filtrar reivindicações" -#: app/templates/main/donate.html:261 -msgid "Help Others" -msgstr "Ajudar Outros" +#~ msgid "Delete Selected Claims" +#~ msgstr "Apagar as Reclamações Seleccionadas" -#: app/templates/main/donate.html:263 -msgid "Share your knowledge in the community" -msgstr "Compartilhe seu conhecimento na comunidade" +#~ msgid "Change Status for Selected Claims" +#~ msgstr "Mudar o Estado das Reclamações Seleccionadas" -#: app/templates/main/donate.html:277 -msgid "One-time key per instance; no subscription" -msgstr "Chave única por instância; nenhuma assinatura" +#~ msgid "Additional notes about this rate..." +#~ msgstr "Notas adicionais sobre esta taxa..." -#: app/templates/main/help.html:9 -msgid "Complete documentation and user guide" -msgstr "Documentação completa e guia de usuário" +#~ msgid "Are you sure you want to delete this per diem rate?" +#~ msgstr "Tem a certeza de que deseja apagar esta taxa por dia?" -#: app/templates/main/help.html:20 -msgid "Quick Navigation" -msgstr "Navegação Rápida" +#~ msgid "Delete Per Diem Rate" +#~ msgstr "Apagar por Taxa Diem" -#: app/templates/main/help.html:23 -msgid "Filter sections..." -msgstr "Seções do filtro..." +#~ msgid "Create Project Template" +#~ msgstr "Criar um Modelo de Projecto" -#: app/templates/main/help.html:26 -msgid "Quick Start" -msgstr "Início Rápido" +#~ msgid "Create a reusable template for quick project setup" +#~ msgstr "Criar um modelo reutilizável para uma configuração rápida do projecto" -#: app/templates/main/help.html:34 app/templates/main/help.html:471 -msgid "Reports & Analytics" -msgstr "Relatórios e Análise" +#~ msgid "Back to Templates" +#~ msgstr "Voltar aos Modelos" -#: app/templates/main/help.html:35 app/templates/main/help.html:521 -msgid "Productivity Features" -msgstr "Características da produtividade" +#~ msgid "e.g., Web Development Project" +#~ msgstr "Por exemplo, Projeto de Desenvolvimento Web" -#: app/templates/main/help.html:37 -msgid "Admin Features" -msgstr "Recursos de administração" +#~ msgid "Describe what this template is used for..." +#~ msgstr "Descreva para que este modelo é usado..." -#: app/templates/main/help.html:39 app/templates/main/help.html:653 -msgid "Mobile Usage" -msgstr "Uso do Móvel" +#~ msgid "e.g., Web Development, Marketing" +#~ msgstr "Por exemplo, Desenvolvimento Web, Marketing" -#: app/templates/main/help.html:40 app/templates/main/help.html:698 -msgid "API Documentation" -msgstr "Documentação da API" +#~ msgid "Comma-separated tags" +#~ msgstr "Marcas separadas por vírgulas" -#: app/templates/main/help.html:41 -msgid "Troubleshooting" -msgstr "Resolução de Problemas" +#~ msgid "Project Configuration" +#~ msgstr "Configuração do Projeto" -#: app/templates/main/help.html:50 -msgid "TimeTracker Help Center" -msgstr "Centro de Ajuda do TimeTracker" +#~ msgid "Billable Project" +#~ msgstr "Projeto Billable" -#: app/templates/main/help.html:51 -msgid "Everything you need to know to get the most out of TimeTracker" -msgstr "" -"Tudo o que você precisa saber para tirar o máximo proveito do TimeTracker" +#~ msgid "Estimated Hours" +#~ msgstr "Horas Estimadas" -#: app/templates/main/help.html:55 -msgid "Start Tracking Time" -msgstr "Iniciar o Tempo de Acompanhamento" +#~ msgid "Budget Amount" +#~ msgstr "Montante orçamental" -#: app/templates/main/help.html:58 -msgid "View Projects" -msgstr "Ver Projetos" +#~ msgid "Template Tasks" +#~ msgstr "Tarefas de Modelo" -#: app/templates/main/help.html:61 -msgid "Generate Reports" -msgstr "Gerar relatórios" +#~ msgid "Tasks will be created when a project is created from this template" +#~ msgstr "" +#~ "As tarefas serão criadas quando um " +#~ "projeto for criado a partir deste " +#~ "modelo" -#: app/templates/main/help.html:69 -msgid "API Docs" -msgstr "API Docs" +#~ msgid "Task Name" +#~ msgstr "Nome da Tarefa" -#: app/templates/main/help.html:72 -msgid "Restart Product Tour" -msgstr "Reiniciar o tour do produto" +#~ msgid "Add Task" +#~ msgstr "Adicionar Tarefa" -#: app/templates/main/help.html:79 -msgid "Quick Start Guide" -msgstr "Guia de início rápido" +#~ msgid "Make this template public (visible to all users)" +#~ msgstr "Tornar este modelo público (visível para todos os utilizadores)" -#: app/templates/main/help.html:82 -msgid "For New Users" -msgstr "Para novos usuários" +#~ msgid "Create Project from Template" +#~ msgstr "Criar Projeto a partir de Modelo" -#: app/templates/main/help.html:84 -msgid "Log in with your username (no password required)" -msgstr "Faça login com seu nome de usuário (sem necessidade de senha)" +#~ msgid "Using template:" +#~ msgstr "Usando modelo:" -#: app/templates/main/help.html:85 -msgid "Explore the dashboard to see your overview" -msgstr "Explore o painel para ver sua visão geral" +#~ msgid "Back to Template" +#~ msgstr "Voltar ao Modelo" -#: app/templates/main/help.html:86 -msgid "Start your first timer on an existing project" -msgstr "Iniciar seu primeiro timer em um projeto existente" +#~ msgid "Leave empty to use template name" +#~ msgstr "Deixar em branco para usar o nome do modelo" -#: app/templates/main/help.html:87 -msgid "View your time entries in reports" -msgstr "Veja seus registros de tempo em relatórios" +#~ msgid "Override Settings (Optional)" +#~ msgstr "Substituir as Configurações (Opcional)" -#: app/templates/main/help.html:91 -msgid "For Administrators" -msgstr "Para Administradores" +#~ msgid "Project Code" +#~ msgstr "Código do projecto" -#: app/templates/main/help.html:93 -msgid "Set up clients in the Client Management section" -msgstr "Configurar clientes na seção Gestão de Clientes" +#~ msgid "The following tasks will be created:" +#~ msgstr "Serão criadas as seguintes tarefas:" -#: app/templates/main/help.html:94 -msgid "Create projects and assign them to clients" -msgstr "Crie projetos e os atribua aos clientes" +#~ msgid "Create Project" +#~ msgstr "Criar um Projecto" -#: app/templates/main/help.html:95 -msgid "Configure system settings (timezone, currency, etc.)" -msgstr "Configurar as configurações do sistema (zona temporal, moeda, etc.)" +#~ msgid "Edit Project Template" +#~ msgstr "Editar modelo de projeto" -#: app/templates/main/help.html:96 -msgid "Manage users and permissions" -msgstr "Gerenciar usuários e permissões" +#~ msgid "Remove Task" +#~ msgstr "Remover Tarefa" -#: app/templates/main/help.html:102 app/templates/main/help.html:370 -#: app/templates/main/help.html:515 -msgid "Pro Tip:" -msgstr "Dica Pro:" +#~ msgid "Show Public Templates" +#~ msgstr "Mostrar Modelos Públicos" -#: app/templates/main/help.html:102 -msgid "" -"Use the mobile-friendly interface to track time on the go. The timer " -"continues running even if you close your browser!" -msgstr "" -"Use a interface amigável para rastrear o tempo em movimento. O temporizador " -"continua em execução mesmo se você fechar seu navegador!" +#~ msgid "uses" +#~ msgstr "utilizações" -#: app/templates/main/help.html:112 -msgid "Real-time tracking with automatic idle detection and WebSocket updates" -msgstr "" -"Monitoramento em tempo real com detecção automática de inatividade e " -"atualizações do WebSocket" +#~ msgid "Public" +#~ msgstr "Público" -#: app/templates/main/help.html:115 app/templates/timer/calendar.html:890 -msgid "Manual Entry" -msgstr "Entrada Manual" +#~ msgid "No Templates Found" +#~ msgstr "Nenhum Modelo Encontrado" -#: app/templates/main/help.html:116 -msgid "Log time manually with custom start and end times" -msgstr "" -"Tempo de registro manualmente com horário de início e fim personalizado" +#~ msgid "" +#~ "Create your first project template to" +#~ " quickly set up new projects with " +#~ "pre-configured settings and tasks." +#~ msgstr "" +#~ "Crie seu primeiro modelo de projeto " +#~ "para configurar rapidamente novos projetos " +#~ "com configurações e tarefas pré-configuradas." -#: app/templates/main/help.html:121 -msgid "Starting a Timer" -msgstr "Iniciando um Temporizador" +#~ msgid "Project Template" +#~ msgstr "Modelo de Projeto" -#: app/templates/main/help.html:123 -msgid "" -"Click the timer icon in the header (round button) to start or stop from any " -"page" -msgstr "" -"Clique no ícone do temporizador no cabeçalho (botão redondo) para iniciar ou" -" parar de qualquer página" +#~ msgid "Template Info" +#~ msgstr "Informação do Modelo" -#: app/templates/main/help.html:124 -msgid "Or navigate to the Timer page or dashboard" -msgstr "Ou navegue até a página ou painel do timer" +#~ msgid "Usage Count" +#~ msgstr "Contagem de Uso" -#: app/templates/main/help.html:125 -msgid "Select a project from the dropdown" -msgstr "Selecione um projeto no dropdown" +#~ msgid "Last Used" +#~ msgstr "Última utilização" -#: app/templates/main/help.html:126 -msgid "Optionally select a task for more detailed tracking" -msgstr "" -"Opcionalmente selecione uma tarefa para um rastreamento mais detalhado" +#~ msgid "Kanban board columns" +#~ msgstr "Colunas de tabuleiro Kanban" -#: app/templates/main/help.html:127 -msgid "Add notes about what you're working on (optional)" -msgstr "Adicione notas sobre o que você está trabalhando (opcional)" +#~ msgid "Add task to this column" +#~ msgstr "Adicionar tarefa a esta coluna" -#: app/templates/main/help.html:128 -msgid "Add tags separated by commas (optional)" -msgstr "Adicionar etiquetas separadas por vírgulas (opcional)" +#~ msgid "Edit swimlane" +#~ msgstr "Editar linha de natação" -#: app/templates/main/help.html:129 -msgid "Click \"Start Timer\"" -msgstr "Clique em \"Iniciar temporizador\"" +#~ msgid "Column" +#~ msgstr "Coluna" -#: app/templates/main/help.html:133 -msgid "Timer Features" -msgstr "Características do temporizador" +#~ msgid "List View" +#~ msgstr "Vista da Lista" -#: app/templates/main/help.html:135 -msgid "Real-time duration display" -msgstr "Visualização em tempo real" +#~ msgid "Grid View" +#~ msgstr "Vista da Grade" -#: app/templates/main/help.html:136 -msgid "" -"Pause and Stop on the dashboard — Pause saves your time so you can resume " -"later" -msgstr "" -"Pausa e Parar no painel — Pausa economiza seu tempo para que você possa " -"retomar mais tarde" +#~ msgid "Rate" +#~ msgstr "Taxa" -#: app/templates/main/help.html:137 -msgid "Resume last session with one click (same project/task/notes)" -msgstr "Continuar a última sessão com um clique (mesmo projeto/tarefa/notas)" +#~ msgid "Edit Project" +#~ msgstr "Editar Projeto" -#: app/templates/main/help.html:138 -msgid "" -"Quick time adjustment (−15 / −5 / +5 / +15 min) while the timer is running" -msgstr "" -"Ajuste rápido do tempo (−15 / −5 / +5 / +15 min) enquanto o temporizador " -"está em execução" +#~ msgid "Add Cost" +#~ msgstr "Adicionar Custo" -#: app/templates/main/help.html:139 -msgid "Continues running if browser closes" -msgstr "Continua a correr se o navegador fechar" +#~ msgid "Add Cost to Project" +#~ msgstr "Adicionar Custo ao Projeto" -#: app/templates/main/help.html:140 -msgid "Automatic idle detection (configurable)" -msgstr "Detecção automática de inactividade (configurável)" +#~ msgid "e.g., Travel expenses to client site" +#~ msgstr "Por exemplo, despesas de viagem para o site do cliente" -#: app/templates/main/help.html:141 -msgid "One active timer per user (configurable)" -msgstr "Um timer ativo por usuário (configurado)" +#~ msgid "Brief description of the cost" +#~ msgstr "Breve descrição do custo" -#: app/templates/main/help.html:142 -msgid "WebSocket live updates" -msgstr "Atualizações ao vivo do WebSocket" +#~ msgid "Select category" +#~ msgstr "Selecionar categoria" -#: app/templates/main/help.html:147 -msgid "Manual Time Entry" -msgstr "Entrada de Hora Manual" +#~ msgid "Materials" +#~ msgstr "Materiais" -#: app/templates/main/help.html:148 -msgid "" -"Create time entries manually when you need to record time spent away from " -"the computer or adjust existing entries." -msgstr "" -"Crie entradas de tempo manualmente quando você precisa gravar o tempo gasto " -"longe do computador ou ajustar entradas existentes." +#~ msgid "Software/Licenses" +#~ msgstr "Software/Licenças" -#: app/templates/main/help.html:151 -msgid "Required Information" -msgstr "Informação Obrigatória" +#~ msgid "Additional details about this cost" +#~ msgstr "Detalhes adicionais sobre este custo" -#: app/templates/main/help.html:153 -msgid "Project selection" -msgstr "Seleção do projeto" +#~ msgid "Billable to client" +#~ msgstr "Facturável para cliente" -#: app/templates/main/help.html:154 -msgid "Start date and time" -msgstr "Data e hora de início" +#~ msgid "If checked, this cost will be included in invoices" +#~ msgstr "Se marcada, este custo será incluído nas faturas" -#: app/templates/main/help.html:155 -msgid "End date and time" -msgstr "Data e hora do fim" +#~ msgid "Add Extra Good" +#~ msgstr "Adicionar Extra Bom" -#: app/templates/main/help.html:159 -msgid "Optional Information" -msgstr "Informações Opcionais" +#~ msgid "Add a product or service to" +#~ msgstr "Adicionar um produto ou serviço a" -#: app/templates/main/help.html:161 -msgid "Task assignment" -msgstr "Tarefa" +#~ msgid "Back to Project" +#~ msgstr "Voltar ao Projeto" -#: app/templates/main/help.html:162 -msgid "Description/notes" -msgstr "Descrição/notas" +#~ msgid "SKU/Product Code" +#~ msgstr "Código SKU/Produto" -#: app/templates/main/help.html:163 -msgid "Tags for categorization" -msgstr "Marcas para categorização" +#~ msgid "What happens when you archive a project?" +#~ msgstr "O que acontece quando você arquiva um projeto?" -#: app/templates/main/help.html:164 -msgid "Billable status override" -msgstr "Sobreposição de status Billable" +#~ msgid "The project will be hidden from active project lists" +#~ msgstr "O projeto será escondido das listas de projetos ativos" -#: app/templates/main/help.html:170 -msgid "Advanced Time Entry Features" -msgstr "Recursos avançados de entrada de tempo" +#~ msgid "No new time entries can be added to this project" +#~ msgstr "Nenhum registro de tempo novo pode ser adicionado a este projeto" -#: app/templates/main/help.html:173 -msgid "Bulk Entry" -msgstr "Entrada em Bulk" +#~ msgid "Existing data and time entries are preserved" +#~ msgstr "Os dados e as datas existentes são preservados" -#: app/templates/main/help.html:174 -msgid "" -"Create multiple time entries for consecutive days with the same project and " -"duration. Perfect for regular work patterns." -msgstr "" -"Crie várias entradas de tempo para dias consecutivos com o mesmo projeto e " -"duração. Perfeito para padrões de trabalho regulares." +#~ msgid "You can unarchive the project later if needed" +#~ msgstr "Você pode unarchive o projeto mais tarde, se necessário" -#: app/templates/main/help.html:177 -msgid "Templates" -msgstr "Modelos" +#~ msgid "Reason for Archiving" +#~ msgstr "Razão do Arquivamento" -#: app/templates/main/help.html:178 -msgid "" -"Save frequently used time entries as templates for quick reuse. Saves " -"project, task, and notes." -msgstr "" -"Salve entradas de tempo frequentemente usadas como modelos para reutilização" -" rápida. Salva projeto, tarefa e notas." +#~ msgid "e.g., Project completed, Client contract ended, Project cancelled, etc." +#~ msgstr "" +#~ "Por exemplo, projeto concluído, contrato " +#~ "de cliente encerrado, projeto cancelado, " +#~ "etc." -#: app/templates/main/help.html:182 -msgid "" -"Visualize your time entries on a calendar. Drag-and-drop to reschedule or " -"click dates to add entries." -msgstr "" -"Visualize seus itens de tempo em um calendário. Arrastar e soltar para " -"remarcar ou clicar datas para adicionar entradas." +#~ msgid "Adding a reason helps with project organization and future reference." +#~ msgstr "" +#~ "Adicionar uma razão ajuda com a " +#~ "organização do projeto e referência " +#~ "futura." -#: app/templates/main/help.html:193 -msgid "Project Information" -msgstr "Informações do Projeto" +#~ msgid "Quick Select" +#~ msgstr "Seleção Rápida" -#: app/templates/main/help.html:195 -msgid "Descriptive project name" -msgstr "Nome do projeto descritivo" +#~ msgid "Project completed successfully" +#~ msgstr "Projeto concluído com sucesso" -#: app/templates/main/help.html:196 -msgid "Associated client organization" -msgstr "Organização de clientes associada" +#~ msgid "Project Completed" +#~ msgstr "Projeto Concluído" -#: app/templates/main/help.html:197 -msgid "Project details and scope" -msgstr "Detalhes do projeto e âmbito de aplicação" +#~ msgid "Client contract ended" +#~ msgstr "Contrato do cliente terminado" -#: app/templates/main/help.html:198 -msgid "Active, completed, or archived" -msgstr "Ativo, completo ou arquivado" +#~ msgid "Contract Ended" +#~ msgstr "Contrato Finalizado" -#: app/templates/main/help.html:202 -msgid "Billing Information" -msgstr "Informações de cobrança" +#~ msgid "Project cancelled by client" +#~ msgstr "Projeto cancelado pelo cliente" -#: app/templates/main/help.html:204 -msgid "Whether time should be tracked for billing" -msgstr "Se o tempo deve ser rastreado para faturamento" +#~ msgid "Project on hold indefinitely" +#~ msgstr "Projeto em espera indefinidamente" -#: app/templates/main/help.html:205 -msgid "Rate for billable time calculations" -msgstr "Taxa para cálculos de tempo billable" +#~ msgid "On Hold" +#~ msgstr "Em espera" -#: app/templates/main/help.html:206 app/templates/projects/create.html:78 -#: app/templates/projects/edit.html:72 -msgid "Billing Reference" -msgstr "Referência de faturamento" +#~ msgid "Maintenance period ended" +#~ msgstr "Período de manutenção terminado" -#: app/templates/main/help.html:206 -msgid "PO number or billing code" -msgstr "Número PO ou código de facturação" +#~ msgid "Maintenance Ended" +#~ msgstr "Manutenção Terminada" -#: app/templates/main/help.html:213 -msgid "Project Operations" -msgstr "Operações do Projeto" +#~ msgid "Archive Project" +#~ msgstr "Arquivo Projeto" -#: app/templates/main/help.html:215 -msgid "Create new projects with client relationships" -msgstr "Criar novos projetos com relacionamentos com clientes" +#~ msgid "Set up a new project to organize your work and track time effectively" +#~ msgstr "" +#~ "Configure um novo projeto para organizar" +#~ " seu trabalho e rastrear o tempo " +#~ "de forma eficaz" -#: app/templates/main/help.html:216 -msgid "Edit existing projects to update details" -msgstr "Editar os projetos existentes para atualizar os detalhes" +#~ msgid "Enter a descriptive project name" +#~ msgstr "Indique um nome descritivo do projecto" -#: app/templates/main/help.html:217 -msgid "Archive projects to hide from timers (preserves data)" -msgstr "Arquivar projetos para esconder dos timers (preserva dados)" +#~ msgid "Choose a clear, descriptive name that explains the project scope" +#~ msgstr "Escolha um nome claro e descritivo que explique o escopo do projeto" -#: app/templates/main/help.html:218 -msgid "Delete projects (removes all associated time entries)" -msgstr "Apagar os projectos (remove todos os itens de tempo associados)" +#~ msgid "Short code, e.g., ABC" +#~ msgstr "Código curto, por exemplo, ABC" -#: app/templates/main/help.html:222 -msgid "Best Practices" -msgstr "Melhores Práticas" +#~ msgid "Optional: Short tag shown on Kanban cards" +#~ msgstr "Opcional: etiqueta curta mostrada nas cartas de Kanban" -#: app/templates/main/help.html:224 -msgid "Use descriptive project names" -msgstr "Usar nomes descritivos do projeto" +#~ msgid "Create new client" +#~ msgstr "Criar um novo cliente" -#: app/templates/main/help.html:225 -msgid "Set accurate hourly rates for billing" -msgstr "Defina taxas horárias precisas para faturamento" +#~ msgid "" +#~ "Provide detailed information about the " +#~ "project, objectives, and deliverables..." +#~ msgstr "Fornecer informações detalhadas sobre o projeto, objetivos e..." -#: app/templates/main/help.html:226 -msgid "Archive instead of delete when possible" -msgstr "Arquivo em vez de excluir quando possível" +#~ msgid "" +#~ "Optional: Add context, objectives, or " +#~ "specific requirements for the project" +#~ msgstr "" +#~ "Opcional: Adicione contexto, objetivos ou " +#~ "requisitos específicos para o projeto" -#: app/templates/main/help.html:227 -msgid "Use billing references for external tracking" -msgstr "Usar referências de faturamento para o rastreamento externo" +#~ msgid "Enable billing for this project" +#~ msgstr "Activar a facturação deste projecto" -#: app/templates/main/help.html:237 -msgid "" -"The client management system helps organize your work by client " -"organizations, preventing errors and streamlining project creation." -msgstr "" -"O sistema de gerenciamento de clientes ajuda a organizar seu trabalho por " -"organizações clientes, evitando erros e simplificando a criação de projetos." +#~ msgid "Leave empty for non-billable projects" +#~ msgstr "Deixar em branco para projetos não biláveis" -#: app/templates/main/help.html:240 -msgid "Client Information" -msgstr "Informação do Cliente" +#~ msgid "PO number, contract reference, etc." +#~ msgstr "Número PO, referência contratual, etc." -#: app/templates/main/help.html:242 -msgid "Organization Name" -msgstr "Nome da organização" +#~ msgid "Optional: Add a reference number or identifier for billing purposes" +#~ msgstr "" +#~ "Opcional: Adicionar um número de " +#~ "referência ou identificador para fins de" +#~ " faturamento" -#: app/templates/main/help.html:242 -msgid "Company or client name" -msgstr "Nome da empresa ou do cliente" +#~ msgid "e.g. 10000.00" +#~ msgstr "Por exemplo, 10000.00" -#: app/templates/main/help.html:243 -msgid "Primary contact details" -msgstr "Dados de contacto primários" +#~ msgid "Optional: Set a total project budget to monitor spend" +#~ msgstr "Opcional: Defina um orçamento total do projeto para monitorar os gastos" -#: app/templates/main/help.html:244 -msgid "Email & Phone" -msgstr "E- mail e telefone" +#~ msgid "Alert Threshold (%)" +#~ msgstr "Limiar de Alerta (%)" -#: app/templates/main/help.html:244 -msgid "Contact information" -msgstr "Informações de contacto" +#~ msgid "Notify when consumed budget exceeds this threshold" +#~ msgstr "Notificar quando o orçamento consumido exceder este limiar" -#: app/templates/main/help.html:245 -msgid "Business address" -msgstr "Endereço comercial" +#~ msgid "Gantt color" +#~ msgstr "Cor Gantt" -#: app/templates/main/help.html:249 -msgid "Benefits" -msgstr "Benefícios" +#~ msgid "" +#~ "Optional: Color for this project on " +#~ "the Gantt chart. Pick or enter a" +#~ " hex code (e.g. #3b82f6)." +#~ msgstr "" +#~ "Opcional: Cor para este projeto no " +#~ "gráfico de Gantt. Escolha ou insira " +#~ "um código hexadecimal (por exemplo, " +#~ "#3b82f6)." -#: app/templates/main/help.html:251 -msgid "Dropdown selection prevents typos" -msgstr "A seleção suspensa evita erros de digitação" +#~ msgid "" +#~ "These custom fields are defined globally" +#~ " and available for all projects." +#~ msgstr "" +#~ "Estes campos personalizados são definidos " +#~ "globalmente e disponíveis para todos os" +#~ " projetos." -#: app/templates/main/help.html:252 -msgid "Default rates auto-populate projects" -msgstr "Taxas por omissão auto- povoam projectos" +#~ msgid "Project Creation Tips" +#~ msgstr "Dicas de criação do projeto" -#: app/templates/main/help.html:253 -msgid "Consistent client naming" -msgstr "Nome de cliente consistente" +#~ msgid "Clear Naming" +#~ msgstr "Limpar a Nomeação" -#: app/templates/main/help.html:254 -msgid "Easier project organization" -msgstr "Organização do projecto mais fácil" +#~ msgid "Use descriptive names that clearly indicate the project's purpose" +#~ msgstr "Use nomes descritivos que indiquem claramente o propósito do projeto" -#: app/templates/main/help.html:261 -msgid "Project Count" -msgstr "Contagem do Projeto" +#~ msgid "Billing Setup" +#~ msgstr "Configuração da Conta" -#: app/templates/main/help.html:262 -msgid "Total and active projects" -msgstr "Total e projectos activos" +#~ msgid "" +#~ "Set appropriate hourly rates based on" +#~ " project complexity and client budget" +#~ msgstr "" +#~ "Definir taxas horárias adequadas com " +#~ "base na complexidade do projeto e " +#~ "no orçamento do cliente" -#: app/templates/main/help.html:267 -msgid "Total hours worked" -msgstr "Total de horas trabalhadas" +#~ msgid "Detailed Description" +#~ msgstr "Descrição Detalhada" -#: app/templates/main/help.html:271 -msgid "Cost Estimation" -msgstr "Estimativa dos custos" +#~ msgid "Include project objectives, deliverables, and key requirements" +#~ msgstr "" +#~ "Incluir os objetivos do projeto, os " +#~ "resultados e os principais requisitos" -#: app/templates/main/help.html:272 -msgid "Estimated billing amounts" -msgstr "Montantes de facturação estimados" +#~ msgid "Client Selection" +#~ msgstr "Selecção do Cliente" -#: app/templates/main/help.html:280 -msgid "" -"Break down projects into manageable tasks with detailed tracking and " -"progress monitoring." -msgstr "" -"Divida projetos em tarefas gerenciáveis com acompanhamento detalhado e " -"acompanhamento de progresso." +#~ msgid "Choose the right client to ensure proper project organization" +#~ msgstr "Escolha o cliente certo para garantir a organização adequada do projeto" -#: app/templates/main/help.html:283 -msgid "Task Properties" -msgstr "Propriedades da Tarefa" +#~ msgid "Creating..." +#~ msgstr "Criando..." -#: app/templates/main/help.html:285 -msgid "Name & Description" -msgstr "Nome e Descrição" +#~ msgid "Could not create client. Please try again." +#~ msgstr "Não foi possível criar o cliente. Por favor, tente novamente." -#: app/templates/main/help.html:285 -msgid "Clear task identification" -msgstr "Limpar a identificação da tarefa" +#~ msgid "Client created" +#~ msgstr "Cliente criado" -#: app/templates/main/help.html:286 -msgid "Priority Levels" -msgstr "Níveis Prioritários" +#~ msgid "Network error while creating client" +#~ msgstr "Erro de rede ao criar o cliente" -#: app/templates/main/help.html:286 -msgid "Low, Medium, High, Urgent" -msgstr "Baixo, Médio, Alto, Urgente" +#~ msgid "Project Dashboard & Analytics" +#~ msgstr "& Análise do Painel de Projeto" -#: app/templates/main/help.html:287 -msgid "Due Dates" -msgstr "Datas de término" +#~ msgid "Entries Overview" +#~ msgstr "Resumo das Entradas" -#: app/templates/main/help.html:287 -msgid "Deadline tracking" -msgstr "Acompanhamento de prazo" +#~ msgid "Budget Analysis" +#~ msgstr "Análise do Orçamento" -#: app/templates/main/help.html:288 -msgid "Assignment" -msgstr "Atribuição" +#~ msgid "All Time" +#~ msgstr "Todo o Tempo" -#: app/templates/main/help.html:288 -msgid "Task ownership" -msgstr "Propriedade da Tarefa" +#~ msgid "Last 7 Days" +#~ msgstr "Últimos 7 dias" -#: app/templates/main/help.html:292 -msgid "Status Tracking" -msgstr "Rastreamento de status" +#~ msgid "Last 30 Days" +#~ msgstr "Últimos 30 dias" -#: app/templates/main/help.html:294 -msgid "To Do - Not started" -msgstr "Fazer - Não iniciado" +#~ msgid "Last 3 Months" +#~ msgstr "Últimos 3 meses" -#: app/templates/main/help.html:295 -msgid "In Progress - Currently working" -msgstr "Em Progresso - Atualmente trabalhando" +#~ msgid "Last Year" +#~ msgstr "Ano passado" -#: app/templates/main/help.html:296 -msgid "Review - Ready for review" -msgstr "Revisão - Pronto para revisão" +#~ msgid "estimated" +#~ msgstr "estimado" -#: app/templates/main/help.html:297 -msgid "Done - Completed" -msgstr "Concluído - Concluído" +#~ msgid "Budget Used" +#~ msgstr "Orçamento Usado" -#: app/templates/main/help.html:298 -msgid "Cancelled - Not needed" -msgstr "Cancelado - Não é necessário" +#~ msgid "of budget" +#~ msgstr "do orçamento" -#: app/templates/main/help.html:304 -msgid "Time Tracking Features" -msgstr "Características do Rastreamento do Tempo" +#~ msgid "Tasks Complete" +#~ msgstr "Tarefas Completas" -#: app/templates/main/help.html:306 -msgid "Start timers directly from tasks" -msgstr "Iniciar os cronómetros directamente das tarefas" +#~ msgid "completion" +#~ msgstr "completar" -#: app/templates/main/help.html:307 -msgid "Link time entries to specific tasks" -msgstr "Link time entradas para tarefas específicas" +#~ msgid "Team Members" +#~ msgstr "Membros da Equipa" -#: app/templates/main/help.html:308 -msgid "Track estimated vs actual hours" -msgstr "Faixa estimada vs horas reais" +#~ msgid "contributing" +#~ msgstr "contribuir" -#: app/templates/main/help.html:309 -msgid "Monitor task progress automatically" -msgstr "Monitorar o progresso da tarefa automaticamente" +#~ msgid "Budget vs. Actual" +#~ msgstr "Orçamento vs. Real" -#: app/templates/main/help.html:313 -msgid "Task Views" -msgstr "Áreas de Tarefa" +#~ msgid "No budget set for this project" +#~ msgstr "Nenhum orçamento definido para este projecto" -#: app/templates/main/help.html:315 -msgid "My Tasks - Your assigned tasks" -msgstr "Minhas Tarefas - Suas tarefas atribuídas" +#~ msgid "Task Status Distribution" +#~ msgstr "Distribuição do Estado da Tarefa" -#: app/templates/main/help.html:316 -msgid "All Tasks - Complete task list" -msgstr "Todas as Tarefas - Lista de tarefas completa" +#~ msgid "No tasks created yet" +#~ msgstr "Nenhuma tarefa criada ainda" -#: app/templates/main/help.html:317 -msgid "Overdue Tasks - Past due items" -msgstr "Tarefas Excedidas - Itens vencidos" +#~ msgid "Team Member Contributions" +#~ msgstr "Contribuições dos membros da equipa" -#: app/templates/main/help.html:318 -msgid "Project Tasks - Tasks within projects" -msgstr "Tarefas do Projeto - Tarefas dentro de projetos" +#~ msgid "No time entries recorded yet" +#~ msgstr "Nenhum registro de tempo ainda" -#: app/templates/main/help.html:324 -msgid "Collaboration Features" -msgstr "Características de Colaboração" +#~ msgid "Time Tracking Timeline" +#~ msgstr "Time Tracking Timeline" -#: app/templates/main/help.html:326 -msgid "Task Comments - Threaded discussions on tasks" -msgstr "Comentários da tarefa - Debates tópicos sobre tarefas" +#~ msgid "Select a time period to view timeline" +#~ msgstr "Selecione um período de tempo para ver a linha do tempo" -#: app/templates/main/help.html:327 -msgid "Markdown Support - Rich formatting in descriptions" -msgstr "Suporte Markdown - Formatação rica em descrições" +#~ msgid "Team Member Details" +#~ msgstr "Detalhes dos membros da equipe" -#: app/templates/main/help.html:328 -msgid "User Mentions - Tag team members (if enabled)" -msgstr "Menções do Usuário - Membros da equipe de tags (se habilitado)" +#~ msgid "tasks" +#~ msgstr "tarefas" -#: app/templates/main/help.html:329 -msgid "File Attachments - Attach files to tasks (if enabled)" -msgstr "Anexos de arquivos - Anexar arquivos às tarefas (se habilitado)" +#~ msgid "No team members have logged time yet" +#~ msgstr "Nenhum membro da equipe registrou o tempo ainda" -#: app/templates/main/help.html:333 -msgid "Markdown Formatting" -msgstr "Formatação de Marcação" +#~ msgid "Attention Required" +#~ msgstr "Atenção necessária" -#: app/templates/main/help.html:334 -msgid "Task and project descriptions support Markdown:" -msgstr "As descrições da tarefa e do projeto suportam Markdown:" +#~ msgid "task(s) are overdue" +#~ msgstr "as tarefas estão atrasadas" -#: app/templates/main/help.html:336 -msgid "**Bold**, *Italic*, ~~Strikethrough~~" -msgstr "**Bold**, *Itálico*, ~~Strikethrough~" +#~ msgid "Edit Cost" +#~ msgstr "Editar o Custo" -#: app/templates/main/help.html:337 -msgid "# Headings, - Lists, [Links](url)" -msgstr "# Títulos, - Listas, [Links](url)" +#~ msgid "This cost has been invoiced. Changes may affect existing invoices." +#~ msgstr "" +#~ "Este custo foi facturado. As alterações" +#~ " podem afectar as facturas existentes." -#: app/templates/main/help.html:338 -msgid "```code blocks```, tables, images" -msgstr "«``code blocks``, tabelas, imagens" +#~ msgid "Update Cost" +#~ msgstr "Custo de Atualização" -#: app/templates/main/help.html:347 -msgid "" -"Visualize your workflow with a drag-and-drop Kanban board for intuitive task" -" management." -msgstr "" -"Visualize seu fluxo de trabalho com uma placa de arrastar e soltar Kanban " -"para gerenciamento de tarefas intuitivas." +#~ msgid "Edit Extra Good" +#~ msgstr "Editar Extra Bom" -#: app/templates/main/help.html:350 -msgid "Board Features" -msgstr "Características do Tabuleiro" +#~ msgid "Manage products and services for this project" +#~ msgstr "Gerenciar produtos e serviços para este projeto" -#: app/templates/main/help.html:352 -msgid "Customizable columns matching task statuses" -msgstr "Status de tarefa de colunas personalizáveis" +#~ msgid "Total Goods" +#~ msgstr "Total de Bens" -#: app/templates/main/help.html:353 -msgid "Drag-and-drop tasks between columns" -msgstr "Arrastar e soltar tarefas entre colunas" +#~ msgid "Billable Amount" +#~ msgstr "Montante Billável" -#: app/templates/main/help.html:354 -msgid "Filter by project, user, or priority" -msgstr "Filtrar por projeto, usuário ou prioridade" +#~ msgid "Categories" +#~ msgstr "Categorias" -#: app/templates/main/help.html:355 -msgid "Quick search across all tasks" -msgstr "Pesquisa rápida em todas as tarefas" +#~ msgid "Invoiced" +#~ msgstr "Faturado" -#: app/templates/main/help.html:359 -msgid "Using the Kanban Board" -msgstr "Usando o tabuleiro de Kanban" +#~ msgid "Non-billable" +#~ msgstr "Não creditável" -#: app/templates/main/help.html:361 -msgid "Access from the Tasks menu or project page" -msgstr "Acesso a partir do menu de tarefas ou página de projeto" +#~ msgid "Are you sure you want to delete this extra good?" +#~ msgstr "Tem certeza de que deseja excluir este extra bom?" -#: app/templates/main/help.html:362 -msgid "Drag tasks to different columns to change status" -msgstr "Arrastar tarefas para diferentes colunas para alterar o estado" +#~ msgid "Delete Extra Good" +#~ msgstr "Apagar Extra Bom" -#: app/templates/main/help.html:363 -msgid "Click on a task card to view/edit details" -msgstr "Clique em uma placa de tarefa para visualizar/editar detalhes" +#~ msgid "No extra goods found for this project" +#~ msgstr "Nenhuma mercadoria extra encontrada para este projeto" -#: app/templates/main/help.html:364 -msgid "Use filters to focus on specific work" -msgstr "Usar filtros para focar em trabalho específico" +#~ msgid "Add Your First Good" +#~ msgstr "Adicione seu primeiro bem" -#: app/templates/main/help.html:370 -msgid "" -"The Kanban board is perfect for sprint planning and daily standups. Each " -"column represents a stage in your workflow!" -msgstr "" -"O tabuleiro Kanban é perfeito para planejamento de sprints e standups " -"diários. Cada coluna representa um estágio em seu fluxo de trabalho!" +#~ msgid "Breakdown by Category" +#~ msgstr "Discriminação por categoria" -#: app/templates/main/help.html:376 -msgid "Expense Tracking" -msgstr "Acompanhamento das Despesas" +#~ msgid "item(s)" +#~ msgstr "item(s)" -#: app/templates/main/help.html:377 -msgid "" -"Track business expenses, manage receipts, and handle reimbursements " -"efficiently." -msgstr "" -"Acompanhe as despesas de negócios, gerencie recibos e lide com reembolsos de" -" forma eficiente." +#~ msgid "Filter Projects" +#~ msgstr "Filtrar Projetos" -#: app/templates/main/help.html:380 -msgid "Expense Features" -msgstr "Características da despesa" +#~ msgid "Time Entries Overview" +#~ msgstr "Visão Geral das Entradas de Tempo" -#: app/templates/main/help.html:382 -msgid "Categorize expenses (travel, meals, supplies, etc.)" -msgstr "Categorizar despesas (viagem, refeições, suprimentos, etc.)" +#~ msgid "Days" +#~ msgstr "Dias" -#: app/templates/main/help.html:383 -msgid "Attach receipt images and documents" -msgstr "Anexar imagens e documentos de recibo" +#~ msgid "No time entries found for this project in the selected period." +#~ msgstr "" +#~ "Não foram encontrados itens de tempo " +#~ "para este projeto no período " +#~ "selecionado." -#: app/templates/main/help.html:384 -msgid "Track amounts, tax, and payment methods" -msgstr "Rastreio dos montantes, impostos e métodos de pagamento" +#~ msgid "Mark project as Inactive?" +#~ msgstr "Marcar o projecto como inactivo?" -#: app/templates/main/help.html:385 -msgid "Approval workflow for expense requests" -msgstr "Fluxo de trabalho de aprovação para pedidos de despesas" +#~ msgid "Change Project Status" +#~ msgstr "Mudar o Estado do Projeto" -#: app/templates/main/help.html:389 -msgid "Billing & Reimbursement" -msgstr "Cobrança e reembolso" +#~ msgid "Activate project?" +#~ msgstr "Activar o projecto?" -#: app/templates/main/help.html:391 -msgid "Mark expenses as billable to clients" -msgstr "Marcar as despesas como facturadas aos clientes" +#~ msgid "Activate Project" +#~ msgstr "Activar o Projecto" -#: app/templates/main/help.html:392 -msgid "Include expenses in client invoices" -msgstr "Incluir as despesas nas facturas dos clientes" +#~ msgid "Archive" +#~ msgstr "Arquivo" -#: app/templates/main/help.html:393 -msgid "Track reimbursement status" -msgstr "Situação do reembolso da pista" +#~ msgid "Unarchive project?" +#~ msgstr "Um projecto não-arquivo?" -#: app/templates/main/help.html:394 -msgid "Link expenses to specific projects" -msgstr "Relação das despesas com projectos específicos" +#~ msgid "Unarchive Project" +#~ msgstr "Projeto Unarchive" -#: app/templates/main/help.html:401 -msgid "Record Expense" -msgstr "Despesas de registro" +#~ msgid "Unarchive" +#~ msgstr "Unarchive" -#: app/templates/main/help.html:402 -msgid "Enter details and upload receipt" -msgstr "Digite detalhes e upload de recibo" +#~ msgid "Delete Project" +#~ msgstr "Apagar Projeto" -#: app/templates/main/help.html:406 -msgid "Submit for Approval" -msgstr "Submeter à aprovação" +#~ msgid "Archive Information" +#~ msgstr "Informações do Arquivo" -#: app/templates/main/help.html:407 -msgid "Admin reviews and approves" -msgstr "Avaliações administrativas e aprova" +#~ msgid "Archived on:" +#~ msgstr "Arquivado em:" -#: app/templates/main/help.html:411 -msgid "Invoice/Reimburse" -msgstr "Factura/Reembolso" +#~ msgid "Archived by:" +#~ msgstr "Arquivado por:" -#: app/templates/main/help.html:412 -msgid "Add to invoice or reimburse" -msgstr "Adicionar à factura ou reembolsar" +#~ msgid "Reason:" +#~ msgstr "Razão:" -#: app/templates/main/help.html:416 app/templates/main/help.html:463 -msgid "Track Payment" -msgstr "Pagamento da Faixa" +#~ msgid "Quick Links" +#~ msgstr "Ligações Rápidas" -#: app/templates/main/help.html:417 -msgid "Monitor reimbursement status" -msgstr "Monitorizar o estado de reembolso" +#~ msgid "Budget Overview" +#~ msgstr "Visão geral do orçamento" -#: app/templates/main/help.html:424 -msgid "Professional Invoicing" -msgstr "Faturação Profissional" +#~ msgid "Over" +#~ msgstr "Terminado" -#: app/templates/main/help.html:429 -msgid "Professional PDF generation" -msgstr "Geração profissional de PDF" +#~ msgid "View Full Budget Analysis" +#~ msgstr "Ver análise de orçamento completa" -#: app/templates/main/help.html:430 -msgid "Company branding and logos" -msgstr "Marcas e logotipos da empresa" +#~ msgid "e.g., Contract, Specification, etc." +#~ msgstr "Por exemplo, contrato, especificação, etc." -#: app/templates/main/help.html:431 -msgid "Automatic invoice numbering" -msgstr "Numeração automática da factura" +#~ msgid "Tasks for this project" +#~ msgstr "Tarefas para este projeto" -#: app/templates/main/help.html:432 -msgid "Tax calculations" -msgstr "Cálculos fiscais" +#~ msgid "Due" +#~ msgstr "Terminado" -#: app/templates/main/help.html:436 -msgid "Time Integration" -msgstr "Integração temporal" +#~ msgid "Estimated" +#~ msgstr "Estimado" -#: app/templates/main/help.html:438 -msgid "Generate from time entries" -msgstr "Gerar a partir de entradas de tempo" +#~ msgid "No tasks for this project." +#~ msgstr "Nenhuma tarefa para este projeto." -#: app/templates/main/help.html:439 -msgid "Smart grouping by task/project" -msgstr "Grupo inteligente por tarefa/projeto" +#~ msgid "Move up" +#~ msgstr "Subir" -#: app/templates/main/help.html:440 -msgid "Prevent double-billing" -msgstr "Evitar o biling duplo" +#~ msgid "Move down" +#~ msgstr "Mover para baixo" -#: app/templates/main/help.html:441 -msgid "Use project hourly rates" -msgstr "Usar taxas horárias do projeto" +#~ msgid "Manual entry" +#~ msgstr "Entrada manual" -#: app/templates/main/help.html:449 -msgid "Set up client and project details" -msgstr "Configurar os detalhes do cliente e do projeto" +#~ msgid "From stock" +#~ msgstr "Da unidade populacional" -#: app/templates/main/help.html:453 -msgid "Add Items" -msgstr "Adicionar itens" +#~ msgid "Duplicate" +#~ msgstr "Duplicar" -#: app/templates/main/help.html:454 -msgid "Generate from time or add manually" -msgstr "Gerar a partir do tempo ou adicionar manualmente" +#~ msgid "Mark as Sent" +#~ msgstr "Marcar como Enviado" -#: app/templates/main/help.html:458 -msgid "Review & Send" -msgstr "Rever & Enviar" +#~ msgid "Accepted" +#~ msgstr "Aceitado" -#: app/templates/main/help.html:459 -msgid "Export PDF and update status" -msgstr "Exportar PDF e atualizar status" +#~ msgid "Create Your First Quote" +#~ msgstr "Crie sua primeira citação" -#: app/templates/main/help.html:464 -msgid "Monitor status and payments" -msgstr "Monitorizar o estado e os pagamentos" +#~ msgid "Learn More" +#~ msgstr "Saiba mais" -#: app/templates/main/help.html:474 -msgid "Standard Reports" -msgstr "Relatórios Padrão" +#~ msgid "Back to Quote" +#~ msgstr "Voltar à Citação" -#: app/templates/main/help.html:476 -msgid "Project Report - Time breakdown by project" -msgstr "Relatório do Projeto - Discriminação temporal por projecto" +#~ msgid "" +#~ "Accepting this quote will create a " +#~ "new project with the budget from " +#~ "the quote." +#~ msgstr "Aceitar esta citação criará um novo projeto com o orçamento da citação." -#: app/templates/main/help.html:477 -msgid "User Report - Individual performance metrics" -msgstr "Relatório do Usuário - métricas de desempenho individuais" +#~ msgid "The project will be created with the budget from the quote" +#~ msgstr "O projeto será criado com o orçamento da cotação" -#: app/templates/main/help.html:478 -msgid "Summary Report - Key metrics and trends" -msgstr "Relatório de Resumo - Principais métricas e tendências" +#~ msgid "Accept Quote & Create Project" +#~ msgstr "Aceitar Citação & Criar Projeto" -#: app/templates/main/help.html:479 -msgid "Time Entry Report - Detailed time logs" -msgstr "Relatório de entrada de tempo - Registros de tempo detalhados" +#~ msgid "Create Quote" +#~ msgstr "Criar Citação" -#: app/templates/main/help.html:483 -msgid "Export Options" -msgstr "Opções de Exportação" +#~ msgid "Quote title" +#~ msgstr "Título da citação" -#: app/templates/main/help.html:485 -msgid "CSV Export - For external analysis" -msgstr "Exportação de CSV - Para análise externa" +#~ msgid "Quote description" +#~ msgstr "Descrição da citação" -#: app/templates/main/help.html:486 -msgid "Configurable delimiters" -msgstr "Delimitadores configuráveis" +#~ msgid "Quote line items" +#~ msgstr "Itens da linha de citação" -#: app/templates/main/help.html:487 -msgid "Custom date ranges" -msgstr "Intervalos de datas personalizados" +#~ msgid "Services, labor, and catalog lines" +#~ msgstr "Serviços, mão de obra e linhas de catálogo" -#: app/templates/main/help.html:488 -msgid "Filtered data export" -msgstr "Exportação de dados filtrados" +#~ msgid "Add line" +#~ msgstr "Adicionar linha" -#: app/templates/main/help.html:494 -msgid "Filter Options" -msgstr "Opções do Filtro" +#~ msgid "Line type" +#~ msgstr "Tipo de linha" -#: app/templates/main/help.html:496 -msgid "Date Range - Custom start and end dates" -msgstr "Intervalo de datas - Datas de início e fim personalizadas" +#~ msgid "Stock" +#~ msgstr "Unidade populacional" -#: app/templates/main/help.html:497 -msgid "Project - Filter by specific projects" -msgstr "Projeto - Filtrar por projetos específicos" +#~ msgid "Line items subtotal" +#~ msgstr "Subtotal dos elementos da linha" -#: app/templates/main/help.html:498 -msgid "User - Filter by team members" -msgstr "Usuário - Filtrar por membros da equipe" +#~ msgid "Costs" +#~ msgstr "Custos" -#: app/templates/main/help.html:499 -msgid "Client - Filter by client organization" -msgstr "Cliente - Filtro por organização do cliente" +#~ msgid "One-off costs (e.g. travel, materials)" +#~ msgstr "Custos únicos (por exemplo, viagens, materiais)" -#: app/templates/main/help.html:500 -msgid "Saved Filters - Save frequently used filters" -msgstr "Filtros Salvos - Salvar filtros usados com frequência" +#~ msgid "Add cost" +#~ msgstr "Adicionar custo" -#: app/templates/main/help.html:504 -msgid "Visual Analytics" -msgstr "Análise Visual" +#~ msgid "Costs subtotal" +#~ msgstr "Custos subtotal" -#: app/templates/main/help.html:506 -msgid "Interactive bar charts" -msgstr "Gráficos de barras interativos" +#~ msgid "Extra goods" +#~ msgstr "Mercadorias extra" -#: app/templates/main/help.html:507 -msgid "Time distribution pie charts" -msgstr "Gráficos de tartes de distribuição de tempo" +#~ msgid "Products, licenses, hardware" +#~ msgstr "Produtos, licenças, hardware" -#: app/templates/main/help.html:508 -msgid "Trend analysis over time" -msgstr "Análise de tendências ao longo do tempo" +#~ msgid "Add good" +#~ msgstr "Adicionar bom" -#: app/templates/main/help.html:509 -msgid "Mobile-optimized charts" -msgstr "Gráficos otimizados para dispositivos móveis" +#~ msgid "Goods subtotal" +#~ msgstr "Subtotal de mercadorias" -#: app/templates/main/help.html:515 -msgid "" -"Use Saved Filters to quickly access your most common report views. Save " -"filters for weekly reviews, monthly billing, or specific project tracking!" -msgstr "" -"Use o Saved Filters para acessar rapidamente suas visualizações de " -"relatórios mais comuns. Guarde filtros para avaliações semanais, faturamento" -" mensal ou monitoramento específico de projetos!" +#~ msgid "Subtotal (all quote lines)" +#~ msgstr "Subtotal (todas as linhas de citação)" -#: app/templates/main/help.html:522 -msgid "" -"Boost your efficiency with keyboard shortcuts, command palette, and " -"automation features." -msgstr "" -"Aumente sua eficiência com atalhos de teclado, paleta de comandos e recursos" -" de automação." +#~ msgid "Financial Details" +#~ msgstr "Detalhes financeiros" -#: app/templates/main/help.html:525 -msgid "Command Palette" -msgstr "Paleta de Comando" +#~ msgid "Select payment terms" +#~ msgstr "Seleccionar as condições de pagamento" -#: app/templates/main/help.html:526 -msgid "Access any feature instantly without leaving the keyboard" -msgstr "Acesse qualquer recurso instantaneamente sem sair do teclado" +#~ msgid "Due on Receipt" +#~ msgstr "Data de recepção" -#: app/templates/main/help.html:529 -msgid "Opening the Command Palette" -msgstr "Abrir a Paleta de Comando" +#~ msgid "Or enter custom payment terms" +#~ msgstr "Ou insira condições de pagamento personalizadas" -#: app/templates/main/help.html:531 -msgid "Press the question mark key" -msgstr "Pressione a tecla de ponto de interrogação" +#~ msgid "Use custom terms" +#~ msgstr "Usar termos personalizados" -#: app/templates/main/help.html:532 -msgid "Quick search" -msgstr "Pesquisa rápida" +#~ msgid "Discount" +#~ msgstr "Desconto" -#: app/templates/main/help.html:539 -msgid "Go to Projects" -msgstr "Ir para Projetos" +#~ msgid "Discount Type" +#~ msgstr "Tipo de Desconto" -#: app/templates/main/help.html:540 -msgid "Go to Tasks" -msgstr "Ir para Tarefas" +#~ msgid "No Discount" +#~ msgstr "Sem desconto" -#: app/templates/main/help.html:541 -msgid "New Time Entry" -msgstr "Novo Item de Tempo" +#~ msgid "Percentage (%)" +#~ msgstr "Percentagem (%)" -#: app/templates/main/help.html:549 app/templates/timer/calendar.html:271 -msgid "Keyboard Shortcuts" -msgstr "Atalhos do Teclado" +#~ msgid "Fixed Amount" +#~ msgstr "Montante fixo" -#: app/templates/main/help.html:550 -msgid "" -"Navigate faster with keyboard-driven commands. Press Shift+? to see all " -"shortcuts." -msgstr "" -"Navegue mais rápido com comandos orientados pelo teclado. Pressione Shift+? " -"para ver todos os atalhos." +#~ msgid "Discount Amount" +#~ msgstr "Quantidade de Desconto" -#: app/templates/main/help.html:553 -msgid "Global Search" -msgstr "Pesquisa Global" +#~ msgid "0.00" +#~ msgstr "0,00" -#: app/templates/main/help.html:554 -msgid "" -"Quickly find projects, tasks, clients, and time entries from anywhere in the" -" app." -msgstr "" -"Encontre rapidamente projetos, tarefas, clientes e entradas de tempo de " -"qualquer lugar do aplicativo." +#~ msgid "Coupon Code" +#~ msgstr "Código do Cupão" -#: app/templates/main/help.html:557 -msgid "Email Notifications" -msgstr "Notificações por E- mail" +#~ msgid "Optional coupon code" +#~ msgstr "Código facultativo do cupão" -#: app/templates/main/help.html:558 -msgid "" -"Get notified about task assignments, overdue invoices, and weekly summaries " -"via email." -msgstr "" -"Seja notificado sobre atribuições de tarefas, faturas atrasadas e resumos " -"semanais via e-mail." +#~ msgid "Discount Reason" +#~ msgstr "Razão do Desconto" -#: app/templates/main/help.html:566 -msgid "Administrator Features" -msgstr "Funcionalidades do Administrador" +#~ msgid "Reason for discount" +#~ msgstr "Motivo do desconto" -#: app/templates/main/help.html:571 -msgid "Create new users with flexible authentication" -msgstr "Criar novos usuários com autenticação flexível" +#~ msgid "Approval Workflow" +#~ msgstr "Fluxo de trabalho da homologação" -#: app/templates/main/help.html:572 -msgid "Assign custom roles with specific permissions" -msgstr "Atribuir funções personalizadas com permissões específicas" +#~ msgid "Requires approval before sending" +#~ msgstr "Requer aprovação antes do envio" -#: app/templates/main/help.html:573 -msgid "Activate/deactivate user accounts" -msgstr "Activar/desactivar contas de utilizador" +#~ msgid "Additional Information" +#~ msgstr "Informações adicionais" -#: app/templates/main/help.html:574 -msgid "View user statistics and activity" -msgstr "Visualizar estatísticas e atividade do usuário" +#~ msgid "Internal notes (not visible to client)" +#~ msgstr "Notas internas (não visíveis ao cliente)" -#: app/templates/main/help.html:575 -msgid "Generate API tokens for users" -msgstr "Gerar tokens de API para usuários" +#~ msgid "These notes are only visible to your team" +#~ msgstr "Estas notas só são visíveis para a sua equipa" -#: app/templates/main/help.html:579 -msgid "Access Control" -msgstr "Controle de acesso" +#~ msgid "Terms and Conditions" +#~ msgstr "Termos e Condições" -#: app/templates/main/help.html:581 -msgid "Granular role-based permissions system" -msgstr "Sistema de permissões baseado em funções granulares" +#~ msgid "Terms and conditions" +#~ msgstr "Termos e condições" -#: app/templates/main/help.html:582 -msgid "Custom roles with fine-grained access" -msgstr "Funções personalizadas com acesso fino" +#~ msgid "These terms will be visible to the client" +#~ msgstr "Estes termos serão visíveis para o cliente" -#: app/templates/main/help.html:583 -msgid "User data access controls" -msgstr "Controlos de acesso aos dados do utilizador" +#~ msgid "Edit Quote" +#~ msgstr "Editar Citação" -#: app/templates/main/help.html:584 -msgid "OIDC/SSO integration (Azure AD, Authelia, etc.)" -msgstr "Integração OIDC/SSO (Azure AD, Authelia, etc.)" +#~ msgid "Client cannot be changed" +#~ msgstr "O cliente não pode ser alterado" -#: app/templates/main/help.html:585 -msgid "API token management for integrations" -msgstr "Gerenciamento de token API para integrações" +#~ msgid "Update Quote" +#~ msgstr "Atualizar citação" -#: app/templates/main/help.html:591 -msgid "Authentication Methods" -msgstr "Métodos de autenticação" +#~ msgid "Total Quotes" +#~ msgstr "Total de Citações" -#: app/templates/main/help.html:593 -msgid "Username-only (simple internal use)" -msgstr "Apenas o nome de utilizador (utilização interna simples)" +#~ msgid "Acceptance Rate" +#~ msgstr "Taxa de aceitação" -#: app/templates/main/help.html:594 -msgid "OIDC/SSO (enterprise authentication)" -msgstr "OIDC/SSO (autenticação da empresa)" +#~ msgid "Avg Quote Value" +#~ msgstr "Valor de Citação Avg" -#: app/templates/main/help.html:595 -msgid "Both methods simultaneously" -msgstr "Ambos os métodos simultaneamente" +#~ msgid "Quotes by Status" +#~ msgstr "Citações por Estado" -#: app/templates/main/help.html:596 -msgid "Automatic role assignment via groups" -msgstr "Atribuição automática de funções através de grupos" +#~ msgid "Top Clients by Quotes" +#~ msgstr "Principais Clientes por Citações" -#: app/templates/main/help.html:600 -msgid "Role & Permission Management" -msgstr "Gestão de Funções e Permissões" +#~ msgid "Filter Quotes" +#~ msgstr "Filtrar Citações" -#: app/templates/main/help.html:602 -msgid "Create custom roles beyond Admin/User" -msgstr "Criar funções personalizadas para além do Administrador/Utilizador" +#~ msgid "Search quotes..." +#~ msgstr "Procurar aspas..." -#: app/templates/main/help.html:603 -msgid "Set granular permissions per feature" -msgstr "Definir permissões granulares por recurso" +#~ msgid "Are you sure you want to duplicate" +#~ msgstr "Tem a certeza de que deseja duplicar" -#: app/templates/main/help.html:604 -msgid "Assign users to multiple roles" -msgstr "Atribuir usuários a múltiplas funções" +#~ msgid "quote(s)?" +#~ msgstr "Aspas?" -#: app/templates/main/help.html:605 -msgid "View and manage all permissions" -msgstr "Ver e gerir todas as permissões" +#~ msgid "Are you sure you want to mark" +#~ msgstr "Tens a certeza que queres marcar" -#: app/templates/main/help.html:611 -msgid "General Settings" -msgstr "Configuração Geral" +#~ msgid "quote(s) as sent?" +#~ msgstr "Aspas como enviadas?" -#: app/templates/main/help.html:613 -msgid "Timezone and locale settings" -msgstr "Configuração do fuso horário e da localização" +#~ msgid "QUOTE" +#~ msgstr "QUOTE" -#: app/templates/main/help.html:614 -msgid "Currency configuration" -msgstr "Configuração da moeda" +#~ msgid "Quote #" +#~ msgstr "Citação #" -#: app/templates/main/help.html:615 -msgid "Time rounding rules" -msgstr "Regras de arredondamento do tempo" +#~ msgid "Quote For" +#~ msgstr "Citação Para" -#: app/templates/main/help.html:616 -msgid "Self-registration settings" -msgstr "Configurações de auto-registro" +#~ msgid "Subtotal After Discount:" +#~ msgstr "Subtotal Após Desconto:" -#: app/templates/main/help.html:620 -msgid "Timer Settings" -msgstr "Configuração do Temporizador" +#~ msgid "Description:" +#~ msgstr "Descrição:" -#: app/templates/main/help.html:622 -msgid "Idle timeout configuration" -msgstr "Configuração do tempo- limite inactivo" +#~ msgid "Subtotal After Discount" +#~ msgstr "Subtotal Após Desconto" -#: app/templates/main/help.html:623 -msgid "Single active timer mode" -msgstr "Modo de temporizador ativo único" +#~ msgid "Approval not yet requested" +#~ msgstr "Homologação ainda não solicitada" -#: app/templates/main/help.html:624 -msgid "Timer display preferences" -msgstr "Preferências de visualização do temporizador" +#~ msgid "Pending approval" +#~ msgstr "Aprovação na pendência" -#: app/templates/main/help.html:625 -msgid "Notification settings" -msgstr "Configurações de notificação" +#~ msgid "Rejected by" +#~ msgstr "Rejeitado por" -#: app/templates/main/help.html:631 -msgid "Database Management" -msgstr "Gestão de Bases de Dados" +#~ msgid "Request Approval Again" +#~ msgstr "Solicitar aprovação novamente" -#: app/templates/main/help.html:633 -msgid "Create manual database backups" -msgstr "Criar backups manuais do banco de dados" +#~ msgid "Send Quote" +#~ msgstr "Enviar Citação" -#: app/templates/main/help.html:634 -msgid "View database migration status" -msgstr "Ver o estado de migração da base de dados" +#~ msgid "Are you sure you want to reject this quote?" +#~ msgstr "Tem certeza de que deseja rejeitar esta citação?" -#: app/templates/main/help.html:635 -msgid "Monitor database performance" -msgstr "Monitorar o desempenho da base de dados" +#~ msgid "Delete Quote" +#~ msgstr "Apagar Citação" -#: app/templates/main/help.html:636 -msgid "Clean up old data and logs" -msgstr "Limpar dados e registros antigos" +#~ msgid "Internal comment (not visible to client)" +#~ msgstr "Comentário interno (não visível para o cliente)" -#: app/templates/main/help.html:640 -msgid "System Monitoring" -msgstr "Monitorização do sistema" +#~ msgid "Internal" +#~ msgstr "Interno" -#: app/templates/main/help.html:642 -msgid "View system information and health" -msgstr "Ver informações e saúde do sistema" +#~ msgid "Are you sure you want to delete this comment?" +#~ msgstr "Tem certeza de que deseja excluir este comentário?" -#: app/templates/main/help.html:643 -msgid "Monitor application performance" -msgstr "Monitorar o desempenho da aplicação" +#~ msgid "Write a reply..." +#~ msgstr "Escreva uma resposta..." -#: app/templates/main/help.html:644 -msgid "Review system logs and errors" -msgstr "Rever os registos e erros do sistema" +#~ msgid "No comments yet. Start the conversation by adding the first comment." +#~ msgstr "" +#~ "Sem comentários ainda. Comece a conversa" +#~ " adicionando o primeiro comentário." -#: app/templates/main/help.html:656 -msgid "Mobile-Friendly Features" -msgstr "Características Mobile-friendly" +#~ msgid "Sent At" +#~ msgstr "Enviado em" -#: app/templates/main/help.html:658 -msgid "Optimized for phones and tablets" -msgstr "Otimizado para telefones e tablets" +#~ msgid "Accepted At" +#~ msgstr "Aceito em" -#: app/templates/main/help.html:659 -msgid "Touch-friendly interface" -msgstr "Interface amigável ao toque" +#~ msgid "Send Quote via Email" +#~ msgstr "Enviar Citação via E- mail" -#: app/templates/main/help.html:660 -msgid "Adaptive layouts for all screen sizes" -msgstr "layouts adaptativos para todos os tamanhos de tela" +#~ msgid "Recipient Email" +#~ msgstr "E- mail do destinatário" -#: app/templates/main/help.html:661 -msgid "High contrast for outdoor visibility" -msgstr "Alto contraste para visibilidade exterior" +#~ msgid "Quote %(quote_number)s" +#~ msgstr "" -#: app/templates/main/help.html:665 -msgid "Mobile Navigation" -msgstr "Navegação móvel" +#~ msgid "Custom Message (Optional)" +#~ msgstr "Mensagem personalizada (Opcional)" -#: app/templates/main/help.html:667 -msgid "Bottom tab bar for easy access" -msgstr "Barra de tabulação inferior para fácil acesso" +#~ msgid "Add a custom message to the email..." +#~ msgstr "Adicionar uma mensagem personalizada ao e- mail..." -#: app/templates/main/help.html:668 -msgid "Quick access to dashboard" -msgstr "Acesso rápido ao painel" +#~ msgid "Attach PDF" +#~ msgstr "Anexar PDF" -#: app/templates/main/help.html:669 -msgid "One-tap time logging" -msgstr "Registo de tempo de torneira única" +#~ msgid "Approve Quote" +#~ msgstr "Aprovar Citação" -#: app/templates/main/help.html:670 -msgid "Mobile-optimized reports" -msgstr "Relatórios otimizados para dispositivos móveis" +#~ msgid "Notes (Optional)" +#~ msgstr "Notas (Opcionais)" -#: app/templates/main/help.html:676 -msgid "Installation" -msgstr "Instalação" +#~ msgid "Add approval notes..." +#~ msgstr "Adicionar notas de aprovação..." -#: app/templates/main/help.html:678 -msgid "Open TimeTracker in your mobile browser" -msgstr "Abra o TimeTracker no seu navegador móvel" +#~ msgid "Reject Quote Approval" +#~ msgstr "Rejeitar a aprovação da cotação" -#: app/templates/main/help.html:679 -msgid "Look for \"Add to Home Screen\" option" -msgstr "Procure a opção \"Adicionar à Tela Inicial\"" +#~ msgid "Please provide a reason for rejection..." +#~ msgstr "Por favor, forneça uma razão para rejeição..." -#: app/templates/main/help.html:680 -msgid "Follow browser-specific installation prompts" -msgstr "Siga as instruções de instalação específicas do navegador" +#~ msgid "" +#~ "Are you sure you want to delete" +#~ " this quote? This action cannot be" +#~ " undone." +#~ msgstr "" +#~ "Tem a certeza de que deseja apagar" +#~ " esta citação? Esta acção não pode" +#~ " ser desfeita." -#: app/templates/main/help.html:681 -msgid "Launch from your home screen like a native app" -msgstr "Inicie a partir de sua tela inicial como um aplicativo nativo" +#~ msgid "Create Recurring Invoice" +#~ msgstr "Criar Fatura Recorrente" -#: app/templates/main/help.html:685 -msgid "PWA Benefits" -msgstr "Benefícios da PWA" +#~ msgid "Update Recurring Invoice" +#~ msgstr "Actualizar a Fatura Recorrente" -#: app/templates/main/help.html:687 -msgid "Offline capability for basic functions" -msgstr "Capacidade desligada para funções básicas" +#~ msgid "Automate invoice generation for subscription-based billing" +#~ msgstr "Geração automática de faturas para faturamento baseado em assinatura" -#: app/templates/main/help.html:688 -msgid "Faster loading times" -msgstr "Tempos de carregamento mais rápidos" +#~ msgid "Frequency" +#~ msgstr "Frequência" -#: app/templates/main/help.html:689 -msgid "Native app-like experience" -msgstr "Experiência nativa tipo app" +#~ msgid "Next Run" +#~ msgstr "Próxima Execução" -#: app/templates/main/help.html:690 -msgid "Push notifications (where supported)" -msgstr "Notificações de envio (quando suportadas)" +#~ msgid "Generate Now" +#~ msgstr "Gerar Agora" -#: app/templates/main/help.html:699 -msgid "" -"TimeTracker provides a REST API for integration with other tools, mobile " -"apps, and custom workflows." -msgstr "" -"O TimeTracker fornece uma API REST para integração com outras ferramentas, " -"aplicativos móveis e fluxos de trabalho personalizados." +#~ msgid "Template Details" +#~ msgstr "Detalhes do Modelo" -#: app/templates/main/help.html:701 -msgid "Interactive Swagger UI at" -msgstr "UI Swagger Interativo em" +#~ msgid "Invoice Settings" +#~ msgstr "Configuração da Fatura" -#: app/templates/main/help.html:702 -msgid "OpenAPI 3.0 specification at" -msgstr "Especificação OpenAPI 3.0 em" +#~ msgid "Recently Generated Invoices" +#~ msgstr "Faturas Recentemente Geradas" -#: app/templates/main/help.html:703 -msgid "Bearer token or X-API-Key authentication" -msgstr "Token do portador ou autenticação de X- API- Key" +#~ msgid "Recurring Task" +#~ msgstr "Tarefa recorrente" -#: app/templates/main/help.html:704 -msgid "Projects, time entries, tasks, clients, invoices, and more" -msgstr "Projetos, entradas de tempo, tarefas, clientes, faturas e muito mais" +#~ msgid "Recurring Tasks" +#~ msgstr "Tarefas Recorrentes" -#: app/templates/main/help.html:707 -msgid "Open API Documentation" -msgstr "Abrir a Documentação da API" +#~ msgid "Create Recurring Task" +#~ msgstr "Criar uma Tarefa Recorrente" -#: app/templates/main/help.html:713 -msgid "Troubleshooting & FAQ" -msgstr "Resolução de Problemas & Perguntas Frequentes" +#~ msgid "Edit Recurring Task" +#~ msgstr "Editar a Tarefa Recorrente" -#: app/templates/main/help.html:716 -msgid "What happens if I forget to stop my timer?" -msgstr "O que acontece se me esquecer de parar o temporizador?" +#~ msgid "Set up automated task creation" +#~ msgstr "Configurar a criação automatizada de tarefas" -#: app/templates/main/help.html:717 -msgid "" -"The timer will continue running until you stop it manually. You can see your" -" active timer on the dashboard and timer page. The timer persists even if " -"you close your browser or restart your device. If idle detection is enabled," -" the timer may pause automatically after the configured timeout period." -msgstr "" -"O temporizador continuará a correr até o parar manualmente. Você pode ver " -"seu temporizador ativo no painel e na página do temporizador. O temporizador" -" persiste mesmo se fechar o navegador ou reiniciar o dispositivo. Se a " -"detecção estiver ativada, o temporizador pode pausar automaticamente após o " -"período de tempo- limite configurado." +#~ msgid "Task Name Template" +#~ msgstr "Modelo de Nome da Tarefa" -#: app/templates/main/help.html:720 -msgid "Can I edit time entries after they're created?" -msgstr "Posso editar entradas de tempo depois de criadas?" +#~ msgid "e.g., Weekly Team Meeting" +#~ msgstr "Por exemplo, Reunião de Equipa Semanal" -#: app/templates/main/help.html:721 -msgid "" -"Yes, you can edit any time entry by clicking the edit button in the time " -"entry list. You can modify the project, start/end times, notes, tags, " -"billable status, and task assignment. Admins can edit all time entries, " -"while regular users can only edit their own entries." -msgstr "" -"Sim, você pode editar qualquer entrada de tempo clicando no botão editar na " -"lista de entrada de tempo. Você pode modificar o projeto, as horas de " -"início/fim, notas, tags, status de faturamento e atribuição de tarefas. Os " -"administradores podem editar todos os itens de tempo, enquanto os usuários " -"regulares só podem editar seus próprios itens." +#~ msgid "This will be used as the base name for created tasks" +#~ msgstr "Isto será usado como o nome de base para tarefas criadas" -#: app/templates/main/help.html:724 -msgid "How do I track time for multiple projects?" -msgstr "Como posso acompanhar o tempo para vários projetos?" +#~ msgid "Schedule" +#~ msgstr "Agendar" -#: app/templates/main/help.html:725 -msgid "" -"By default, you can only have one active timer at a time. To switch " -"projects, stop your current timer and start a new one for the different " -"project. Alternatively, you can create manual time entries for past work or " -"configure the system to allow multiple active timers (admin setting)." -msgstr "" -"Por padrão, você só pode ter um timer ativo de cada vez. Para mudar de " -"projeto, pare seu timer atual e inicie um novo para o projeto diferente. " -"Alternativamente, você pode criar entradas de tempo manual para o trabalho " -"passado ou configurar o sistema para permitir múltiplos timers ativos " -"(configuração de administração)." +#~ msgid "Monthly" +#~ msgstr "Mensal" -#: app/templates/main/help.html:728 -msgid "How do I export my time data?" -msgstr "Como exporto meus dados de tempo?" +#~ msgid "Yearly" +#~ msgstr "Anual" -#: app/templates/main/help.html:729 -msgid "" -"Go to the Reports page and use the \"Export CSV\" feature. You can apply " -"filters to export specific data, or export all time entries. The CSV file " -"includes all time entry details and can be opened in Excel or other " -"spreadsheet applications. You can also configure the delimiter for different" -" regional standards." -msgstr "" -"Vá para a página Relatórios e use o recurso \"Exportar CSV\". Você pode " -"aplicar filtros para exportar dados específicos ou exportar todos os itens " -"de tempo. O arquivo CSV inclui todos os detalhes de entrada de tempo e pode " -"ser aberto no Excel ou outras aplicações de planilha. Você também pode " -"configurar o delimitador para diferentes padrões regionais." - -#: app/templates/main/help.html:732 -msgid "What's the difference between billable and non-billable time?" -msgstr "" -"Qual é a diferença entre o tempo de faturamento e o tempo não creditável?" +#~ msgid "Interval" +#~ msgstr "Intervalo" -#: app/templates/main/help.html:733 -msgid "" -"Billable time is tracked for client billing purposes and can have an hourly " -"rate associated with it. Non-billable time is for internal work that doesn't" -" get charged to clients. You can mark individual time entries as billable or" -" non-billable, and projects can have default billable settings. This " -"distinction is crucial for accurate invoicing and profitability analysis." -msgstr "" -"O tempo de faturamento é rastreado para fins de faturamento do cliente e " -"pode ter uma taxa horária associada a ele. Tempo não-montável é para o " -"trabalho interno que não é cobrado aos clientes. Você pode marcar entradas " -"de tempo individuais como billable ou não-billable, e os projetos podem ter " -"configurações billable padrão. Esta distinção é crucial para uma análise " -"precisa da facturação e da rentabilidade." - -#: app/templates/main/help.html:736 -msgid "How do I create an invoice from my time entries?" -msgstr "Como faço para criar uma fatura a partir dos meus registros de tempo?" - -#: app/templates/main/help.html:737 -msgid "" -"Navigate to Invoices → Create Invoice, set up the client and project " -"details, then use \"Generate from Time Entries\" to automatically create " -"invoice items from your tracked time. You can filter by date range and " -"project, and the system will group time entries intelligently. Review the " -"generated items and export as a professional PDF." -msgstr "" -"Navegue para Faturas → Crie Fatura, configure os detalhes do cliente e do " -"projeto e, em seguida, use \"Generate from Time Entries\" para criar " -"automaticamente itens de fatura a partir de seu tempo rastreado. Você pode " -"filtrar por intervalo de data e projeto, e o sistema irá agrupar entradas de" -" tempo de forma inteligente. Reveja os itens gerados e exporte como um PDF " -"profissional." - -#: app/templates/main/help.html:740 -msgid "Can I use TimeTracker on my mobile device?" -msgstr "Posso usar o TimeTracker no meu dispositivo móvel?" - -#: app/templates/main/help.html:741 -msgid "" -"Yes! TimeTracker is fully responsive and works great on mobile devices. You " -"can install it as a Progressive Web App (PWA) for a native-like experience. " -"The mobile interface includes a bottom tab bar for easy navigation and " -"touch-optimized controls for time tracking on the go." -msgstr "" -"Sim! TimeTracker é totalmente responsivo e funciona muito bem em " -"dispositivos móveis. Você pode instalá-lo como um aplicativo web progressivo" -" (PWA) para uma experiência nativa. A interface móvel inclui uma barra de " -"tabulação inferior para fácil navegação e controles otimizados com toque " -"para rastreamento de tempo em movimento." +#~ msgid "Repeat every N periods (e.g., every 2 weeks)" +#~ msgstr "Repetir cada período N (por exemplo, de 2 em 2 semanas)" -#: app/templates/main/help.html:744 -msgid "How do I use the command palette and keyboard shortcuts?" -msgstr "Como faço para usar a paleta de comandos e atalhos de teclado?" +#~ msgid "Next Run Date" +#~ msgstr "Próxima Data de Execução" -#: app/templates/main/help.html:745 -msgid "" -"Press the question mark key (?) to open the command palette. From there, you" -" can type to search for any action or navigation target. Use keyboard " -"sequences like \"g d\" for Dashboard, \"g p\" for Projects, or \"n e\" for " -"New Entry. Press Shift+? to see all available shortcuts. Press Ctrl+K (or " -"Cmd+K on Mac) for quick search." -msgstr "" -"Pressione a tecla de ponto de interrogação (?) para abrir a paleta de " -"comandos. A partir daí, você pode digitar para procurar qualquer ação ou " -"alvo de navegação. Use sequências de teclado como \"g d\" para Dashboard, " -"\"g p\" para Projetos, ou \"n e\" para Nova Entrada. Pressione Shift+? para " -"ver todos os atalhos disponíveis. Pressione Ctrl+K (ou Cmd+K no Mac) para " -"uma busca rápida." - -#: app/templates/main/help.html:748 -msgid "How do I create bulk time entries for multiple days?" -msgstr "Como faço para criar entradas de tempo em massa para vários dias?" - -#: app/templates/main/help.html:749 -msgid "" -"Navigate to Work → Bulk Time Entry. Select your project, choose a date " -"range, set your daily start and end times, and optionally skip weekends. The" -" system will create identical time entries for each day in the range. This " -"is perfect for logging regular work patterns or filling in past time when " -"you worked consistent hours." -msgstr "" -"Navegar para o trabalho → Entrada de tempo em massa. Selecione seu projeto, " -"escolha um intervalo de datas, defina seus horários de início e fim diários " -"e, opcionalmente, ignore os fins de semana. O sistema criará entradas de " -"tempo idênticas para cada dia no intervalo. Isso é perfeito para registrar " -"padrões de trabalho regulares ou preencher o tempo passado quando você " -"trabalhou horas consistentes." - -#: app/templates/main/help.html:752 -msgid "What are time entry templates and how do I use them?" -msgstr "O que são modelos de entrada de tempo e como eu os uso?" - -#: app/templates/main/help.html:753 -msgid "" -"Time entry templates let you save frequently used time entry configurations." -" When creating a manual time entry, check \"Save as Template\" to save the " -"project, task, and notes. Later, when creating new entries, you can select a" -" template to quickly fill in these details. Templates are personal and only " -"visible to you." -msgstr "" -"Modelos de entrada de tempo permitem salvar configurações de entrada de " -"tempo frequentemente usadas. Ao criar uma entrada de tempo manual, verifique" -" \"Salvar como modelo\" para salvar o projeto, tarefa e notas. Mais tarde, " -"ao criar novas entradas, você pode selecionar um modelo para preencher " -"rapidamente esses detalhes. Os modelos são pessoais e apenas visíveis para " -"você." - -#: app/templates/main/help.html:756 -msgid "How do I track expenses and add them to invoices?" -msgstr "Como posso acompanhar as despesas e adicioná-las às faturas?" - -#: app/templates/main/help.html:757 -msgid "" -"Go to Expenses → New Expense to record business expenses. Upload receipt " -"images, categorize the expense, and mark it as billable if needed. When " -"creating invoices, you can include these expenses as line items. Expenses " -"support approval workflows, reimbursement tracking, and can be linked to " -"specific projects." -msgstr "" -"Ir para Despesas → Novas Despesas para gravar despesas de negócios. Envie " -"imagens de recibo, categorize a despesa, e marque-o como billable se " -"necessário. Ao criar faturas, você pode incluir essas despesas como itens de" -" linha. Despesas suportam fluxos de trabalho de aprovação, acompanhamento de" -" reembolso, e podem ser associadas a projetos específicos." +#~ msgid "Optional: Stop creating tasks after this date" +#~ msgstr "Opcional: Pare de criar tarefas após esta data" -#: app/templates/main/help.html:760 -msgid "Can I use Markdown in descriptions?" -msgstr "Posso usar o Markdown nas descrições?" +#~ msgid "Task Settings" +#~ msgstr "Configuração da Tarefa" -#: app/templates/main/help.html:761 -msgid "" -"Yes! Project and task descriptions support full Markdown formatting. You can" -" use bold, italic, headings, lists, links, code blocks, tables, and images. " -"This allows you to create rich, well-formatted documentation directly in " -"your projects and tasks. The Markdown editor includes a preview mode and " -"supports dark theme." -msgstr "" -"Sim! Descrições de projeto e tarefa suportam formatação Markdown completa. " -"Você pode usar negrito, itálico, cabeçalhos, listas, links, blocos de " -"código, tabelas e imagens. Isso permite que você crie documentação rica e " -"bem formatada diretamente em seus projetos e tarefas. O editor Markdown " -"inclui um modo de visualização e suporta tema escuro." +#~ msgid "Assign To" +#~ msgstr "Atribuir a" -#: app/templates/main/help.html:764 -msgid "Where can I get additional help?" -msgstr "Onde posso obter ajuda adicional?" +#~ msgid "Auto-assign to creator" +#~ msgstr "Atribuir automaticamente ao criador" -#: app/templates/main/help.html:768 -msgid "" -"This help page covers most common questions and features. For complete " -"documentation:" -msgstr "" -"Esta página de ajuda cobre questões e recursos mais comuns. Para " -"documentação completa:" +#~ msgid "Automated task creation templates" +#~ msgstr "Modelos automatizados de criação de tarefas" -#: app/templates/main/help.html:770 -msgid "Complete Documentation Index" -msgstr "Índice de Documentação Completa" +#~ msgid "Not scheduled" +#~ msgstr "Não agendado" -#: app/templates/main/help.html:771 -msgid "Getting Started Guide" -msgstr "Guia de Introdução" +#~ msgid "Are you sure you want to delete this recurring task?" +#~ msgstr "Tem a certeza de que deseja apagar esta tarefa recorrente?" -#: app/templates/main/help.html:772 -msgid "Product Overview & Features" -msgstr "Visão geral do produto e recursos" +#~ msgid "No recurring tasks" +#~ msgstr "Sem tarefas recorrentes" -#: app/templates/main/help.html:773 -msgid "Changelog" -msgstr "Changelog" +#~ msgid "" +#~ "Create recurring task templates to " +#~ "automatically generate tasks on a " +#~ "schedule." +#~ msgstr "" +#~ "Crie modelos de tarefas recorrentes para" +#~ " gerar automaticamente tarefas em um " +#~ "cronograma." -#: app/templates/main/help.html:778 -msgid "Report issues and request features on" -msgstr "Relatar questões e recursos de solicitação sobre" +#~ msgid "Edit Report" +#~ msgstr "Editar relatório" -#: app/templates/main/help.html:783 -msgid "" -"As an admin, you can access additional system information and diagnostics in" -" the" -msgstr "" -"Como administrador, você pode acessar informações adicionais do sistema e " -"diagnósticos no" +#~ msgid "Custom Report Builder" +#~ msgstr "Construtor de Relatório Personalizado" -#: app/templates/main/help.html:783 -msgid "section." -msgstr "secção." +#~ msgid "Unpaid time entries" +#~ msgstr "Entradas de tempo não pagas" -#: app/templates/main/help.html:785 -msgid "Admin documentation:" -msgstr "Documentação de administração:" +#~ msgid "Time entries, unpaid only, last 30 days" +#~ msgstr "Entradas de tempo, não remuneradas apenas, duram 30 dias" -#: app/templates/main/help.html:785 -msgid "Administrator Guide" -msgstr "Guia do Administrador" +#~ msgid "Data Sources" +#~ msgstr "Fontes de Dados" -#: app/templates/main/help.html:795 -msgid "Still Need Help?" -msgstr "Ainda precisa de ajuda?" +#~ msgid "Components" +#~ msgstr "Componentes" -#: app/templates/main/help.html:796 -msgid "Can't find what you're looking for? Here are additional resources:" -msgstr "" -"Não consegues encontrar o que procuras? Aqui estão recursos adicionais:" +#~ msgid "Add table to report" +#~ msgstr "Adicionar tabela ao relatório" -#: app/templates/main/help.html:801 -msgid "Complete Documentation" -msgstr "Documentação Completa" +#~ msgid "Table" +#~ msgstr "Quadro" -#: app/templates/main/help.html:805 -msgid "Documentation Index" -msgstr "Índice da documentação" +#~ msgid "Add chart to report" +#~ msgstr "Adicionar gráfico ao relatório" -#: app/templates/main/help.html:808 -msgid "Getting Started" -msgstr "Começar" +#~ msgid "Chart" +#~ msgstr "Gráfico" -#: app/templates/main/help.html:811 -msgid "Feature Guides" -msgstr "Guias de Caracteres" +#~ msgid "Add doughnut chart to report" +#~ msgstr "Adicionar gráfico de donuts para relatar" -#: app/templates/main/help.html:815 -msgid "Admin Documentation" -msgstr "Documentação de administração" +#~ msgid "Doughnut Chart" +#~ msgstr "Gráfico de Donuts" -#: app/templates/main/help.html:829 -msgid "GitHub Repository" -msgstr "Repositório GitHub" +#~ msgid "Add bar chart to report" +#~ msgstr "Adicionar um gráfico de barras ao relatório" -#: app/templates/main/help.html:832 -msgid "Report Issue" -msgstr "Questão do relatório" +#~ msgid "Bar Chart" +#~ msgstr "Gráfico de Barras" -#: app/templates/main/help.html:843 -msgid "Donations and licenses fund development; nothing is paywalled." -msgstr "Doações e licenças de desenvolvimento de fundos; nada é compensado." +#~ msgid "Add summary to report" +#~ msgstr "Adicionar um resumo ao relatório" -#: app/templates/main/help.html:844 app/templates/reports/index.html:21 -msgid "Open support" -msgstr "Suporte aberto" +#~ msgid "Report Canvas" +#~ msgstr "Reportar a Tela" -#: app/templates/main/search.html:11 -msgid "Search Results" -msgstr "Resultados da Pesquisa" +#~ msgid "Report canvas" +#~ msgstr "Tela de relatório" -#: app/templates/main/search.html:14 -msgid "Search notes or tags" -msgstr "Procurar notas ou etiquetas" +#~ msgid "Drag data sources and components here to build your report" +#~ msgstr "" +#~ "Arraste aqui as fontes de dados e" +#~ " componentes para criar o seu " +#~ "relatório" -#: app/templates/main/search.html:25 -msgid "Results" -msgstr "Resultados" +#~ msgid "Advanced Filters" +#~ msgstr "Filtros Avançados" -#: app/templates/main/search.html:75 -msgid "" -"Are you sure you want to delete this time entry? This action cannot be " -"undone." -msgstr "" -"Tem a certeza que deseja apagar este item de tempo? Esta acção não pode ser " -"desfeita." +#~ msgid "Unpaid Hours Only" +#~ msgstr "Apenas Horas não pagas" -#: app/templates/main/search.html:115 -msgid "No results found" -msgstr "Não foram encontrados resultados" +#~ msgid "Unpaid = billable, not yet on any invoice." +#~ msgstr "Não pago = faturado, ainda não em nenhuma fatura." -#: app/templates/main/search.html:116 -msgid "Try a different query or check your spelling." -msgstr "Tente uma consulta diferente ou verifique sua ortografia." +#~ msgid "Custom Field" +#~ msgstr "Campo Personalizado" -#: app/templates/mileage/form.html:56 -msgid "e.g., Client meeting, Site visit" -msgstr "Por exemplo, reunião de clientes, visita ao site" +#~ msgid "No Filter" +#~ msgstr "Sem Filtro" -#: app/templates/mileage/form.html:65 -msgid "Additional details..." -msgstr "Detalhes adicionais..." +#~ msgid "Field Value" +#~ msgstr "Valor do Campo" -#: app/templates/mileage/form.html:84 -msgid "e.g., Office, Home" -msgstr "Por exemplo, Escritório, Casa" +#~ msgid "e.g., MM, PB" +#~ msgstr "Por exemplo, MM, PB" -#: app/templates/mileage/form.html:94 -msgid "e.g., Client site, Airport" -msgstr "Por exemplo, site do cliente, Aeroporto" +#~ msgid "Enter the value to filter by (e.g., salesman initial)" +#~ msgstr "Digite o valor a filtrar por (por exemplo, inicial do vendedor)" -#: app/templates/mileage/form.html:125 -msgid "e.g., 12345" -msgstr "Por exemplo, 12345" +#~ msgid "Report Preview" +#~ msgstr "Antevisão do Relatório" -#: app/templates/mileage/form.html:135 -msgid "e.g., 12400" -msgstr "Por exemplo, 12400" +#~ msgid "Loading preview..." +#~ msgstr "A carregar a antevisão..." -#: app/templates/mileage/form.html:185 -msgid "e.g., VW Golf" -msgstr "Por exemplo, VW Golf" +#~ msgid "Save Report" +#~ msgstr "Gravar o Relatório" -#: app/templates/mileage/form.html:195 -msgid "e.g., ABC-123" -msgstr "Por exemplo, ABC-123" +#~ msgid "Report Name" +#~ msgstr "Nome do relatório" -#: app/templates/mileage/gps.html:2 app/templates/mileage/gps.html:7 -msgid "GPS Mileage Tracking" -msgstr "Rastreamento de Mileage GPS" +#~ msgid "My Custom Report" +#~ msgstr "Meu Relatório Personalizado" -#: app/templates/mileage/gps.html:8 -msgid "Back to Mileage" -msgstr "Voltar à Mileage" +#~ msgid "Private" +#~ msgstr "Privado" -#: app/templates/mileage/gps.html:13 -msgid "" -"Use your device GPS to record route points, calculate distance, and convert " -"the track into an expense." -msgstr "" -"Use o GPS do dispositivo para registrar pontos de rota, calcular distância e" -" converter a faixa em uma despesa." +#~ msgid "Team" +#~ msgstr "Equipa" -#: app/templates/mileage/gps.html:27 -msgid "Rate per km" -msgstr "Taxa por km" +#~ msgid "Iterative Report Generation" +#~ msgstr "Geração de Relatórios Iterativos" -#: app/templates/mileage/gps.html:37 -msgid "Add Point" -msgstr "Adicionar ponto" +#~ msgid "" +#~ "Generate one report per custom field " +#~ "value (e.g., one report per salesman)" +#~ msgstr "" +#~ "Gerar um relatório por valor de " +#~ "campo personalizado (por exemplo, um " +#~ "relatório por vendedor)" -#: app/templates/mileage/gps.html:38 -msgid "Create Expense from Track" -msgstr "Criar Despesas da Faixa" +#~ msgid "Custom Field Name" +#~ msgstr "Nome do Campo Personalizado" -#: app/templates/mileage/gps.html:43 -msgid "Track ID" -msgstr "ID da Faixa" +#~ msgid "Select Field" +#~ msgstr "Selecionar campo" -#: app/templates/mileage/gps.html:44 app/templates/mileage/gps.html:82 -msgid "Idle" -msgstr "Inactivo" +#~ msgid "Select the custom field to iterate over (e.g., \"salesman\")" +#~ msgstr "" +#~ "Selecione o campo personalizado para " +#~ "iterar sobre (por exemplo, \"salesman\")" -#: app/templates/mileage/gps.html:47 -msgid "Distance (km)" -msgstr "Distância (km)" +#~ msgid "Please select a data source first" +#~ msgstr "Seleccione primeiro uma fonte de dados" -#: app/templates/mileage/gps.html:48 -msgid "Distance (miles)" -msgstr "Distância (milhas)" +#~ msgid "Failed to generate preview" +#~ msgstr "Não foi possível gerar a antevisão" -#: app/templates/mileage/gps.html:82 -msgid "Tracking" -msgstr "Rastreamento" +#~ msgid "Unknown error occurred" +#~ msgstr "Ocorreu um erro desconhecido" -#: app/templates/mileage/gps.html:125 -msgid "GPS tracking started" -msgstr "O rastreamento do GPS começou" +#~ msgid "Error loading preview" +#~ msgstr "Erro ao carregar a antevisão" -#: app/templates/mileage/gps.html:136 -msgid "Track point added" -msgstr "Ponto da faixa adicionado" +#~ msgid "No data found for the selected filters" +#~ msgstr "Nenhum dado encontrado para os filtros selecionados" -#: app/templates/mileage/gps.html:151 -msgid "GPS tracking stopped" -msgstr "O rastreamento do GPS parou" +#~ msgid "Please enter a report name" +#~ msgstr "Digite um nome de relatório" -#: app/templates/mileage/gps.html:165 -msgid "Expense created" -msgstr "Despesas criadas" +#~ msgid "Report created successfully!" +#~ msgstr "Relatório criado com sucesso!" -#: app/templates/mileage/list.html:59 -msgid "Filter Mileage" -msgstr "Milhagem do Filtro" +#~ msgid "Report updated successfully!" +#~ msgstr "Relatório actualizado com sucesso!" -#: app/templates/mileage/list.html:61 app/templates/per_diem/list.html:49 -#: app/templates/timer/time_entries_overview.html:33 -msgid "Exports use current filters" -msgstr "Exportações usam filtros atuais" +#~ msgid "Failed to save report" +#~ msgstr "Falha ao salvar o relatório" -#: app/templates/mileage/list.html:78 -msgid "Purpose, location..." -msgstr "Propósito, localização..." +#~ msgid "Error saving report" +#~ msgstr "Erro ao salvar o relatório" -#: app/templates/mileage/view.html:247 -msgid "Optional approval notes..." -msgstr "Notas de aprovação opcionais..." +#~ msgid "Custom Report" +#~ msgstr "Relatório Personalizado" -#: app/templates/mileage/view.html:256 app/templates/per_diem/view.html:103 -msgid "Rejection reason (required)" -msgstr "Razão de rejeição (necessária)" +#~ msgid "Data Table" +#~ msgstr "Tabela de dados" -#: app/templates/partials/_bottom_nav.html:24 -msgid "More navigation" -msgstr "Mais navegação" +#~ msgid "No data found" +#~ msgstr "Nenhum dado encontrado" -#: app/templates/partials/_bottom_nav.html:59 -msgid "Main" -msgstr "Principal" +#~ msgid "" +#~ "This report has no data matching " +#~ "the current filters. Try adjusting your" +#~ " date range or filters." +#~ msgstr "" +#~ "Este relatório não tem dados " +#~ "correspondentes aos filtros atuais. Tente " +#~ "ajustar seu intervalo de datas ou " +#~ "filtros." -#: app/templates/partials/_command_palette.html:40 -msgid "Type a command or search..." -msgstr "Digite um comando ou pesquisa..." +#~ msgid "No summary data available." +#~ msgstr "Não existem dados sumários disponíveis." -#: app/templates/payment_gateways/create.html:3 -#: app/templates/payment_gateways/create.html:8 -msgid "Configure Payment Gateway" -msgstr "Configurar o Gateway de Pagamento" +#~ msgid "No data available for chart." +#~ msgstr "Nenhum dado disponível para o gráfico." -#: app/templates/payment_gateways/create.html:9 -msgid "Set up payment processing for online invoice payments" -msgstr "" -"Configurar o processamento de pagamento para pagamentos de fatura on-line" +#~ msgid "No components configured" +#~ msgstr "Nenhum componente configurado" -#: app/templates/payment_gateways/create.html:11 -msgid "Back to Gateways" -msgstr "Voltar para Gateways" +#~ msgid "" +#~ "This report has no components " +#~ "configured. Please edit the report to" +#~ " add components." +#~ msgstr "" +#~ "Este relatório não tem componentes " +#~ "configurados. Por favor, edite o " +#~ "relatório para adicionar componentes." -#: app/templates/payment_gateways/create.html:20 -msgid "Gateway Name" -msgstr "Nome do Portal" +#~ msgid "Export Time Entries" +#~ msgstr "Exportar entradas de tempo" -#: app/templates/payment_gateways/create.html:21 -msgid "e.g., Stripe Production" -msgstr "Por exemplo, Produção de Listras" +#~ msgid "" +#~ "Use the filters below to customize " +#~ "your export. Choose CSV or Excel " +#~ "format. All filters are optional - " +#~ "leave blank to include all entries " +#~ "within the date range." +#~ msgstr "" +#~ "Use os filtros abaixo para personalizar" +#~ " sua exportação. Escolha o formato " +#~ "CSV ou Excel. Todos os filtros são" +#~ " opcionais - deixe em branco para " +#~ "incluir todas as entradas dentro do " +#~ "intervalo de datas." -#: app/templates/payment_gateways/create.html:22 -msgid "A descriptive name for this gateway configuration" -msgstr "Um nome descritivo para esta configuração de 'gateway'" +#~ msgid "Export format" +#~ msgstr "Formato de exportação" -#: app/templates/payment_gateways/create.html:28 -msgid "Select provider..." -msgstr "Selecionar provedor..." +#~ msgid "e.g., development, meeting, urgent" +#~ msgstr "Por exemplo, desenvolvimento, reunião, urgência" -#: app/templates/payment_gateways/create.html:36 -msgid "Stripe Configuration" -msgstr "Configuração da Listra" +#~ msgid "Reset Filters" +#~ msgstr "Reiniciar os Filtros" -#: app/templates/payment_gateways/create.html:41 -msgid "Your Stripe secret key" -msgstr "Sua chave secreta Stripe" +#~ msgid "CSV / Excel" +#~ msgstr "CSV / Excel" -#: app/templates/payment_gateways/create.html:44 -msgid "Publishable Key" -msgstr "Chave para publicação" +#~ msgid "" +#~ "The file will be downloaded with a" +#~ " filename indicating the date range " +#~ "and applied filters." +#~ msgstr "" +#~ "O arquivo será baixado com um nome" +#~ " de arquivo indicando o intervalo de" +#~ " data e filtros aplicados." -#: app/templates/payment_gateways/create.html:46 -msgid "Your Stripe publishable key" -msgstr "Sua chave publicable Stripe" +#~ msgid "Please select both start and end dates." +#~ msgstr "Seleccione as datas de início e de fim." -#: app/templates/payment_gateways/create.html:51 -msgid "Webhook signing secret for verifying webhook events" -msgstr "Webhook assinando segredo para verificar eventos webhook" +#~ msgid "Start date must be before or equal to end date." +#~ msgstr "A data de início deve ser anterior ou igual à data de fim." -#: app/templates/payment_gateways/create.html:57 -msgid "PayPal Configuration" -msgstr "Configuração do PayPal" +#~ msgid "View comprehensive reports and analytics for your time tracking data" +#~ msgstr "" +#~ "Veja relatórios abrangentes e análises " +#~ "para seus dados de rastreamento de " +#~ "tempo" -#: app/templates/payment_gateways/create.html:73 -#: app/templates/payment_gateways/list.html:50 -msgid "Test Mode" -msgstr "Modo de Teste" +#~ msgid "" +#~ "Support development or get a supporter" +#~ " license — the app stays free " +#~ "for everyone." +#~ msgstr "" +#~ "Suporte ao desenvolvimento ou obtenha " +#~ "uma licença de suporte — o " +#~ "aplicativo fica livre para todos." -#: app/templates/payment_gateways/create.html:75 -msgid "Enable test mode for development and testing" -msgstr "Habilitar o modo de teste para desenvolvimento e teste" +#~ msgid "Payments Received" +#~ msgstr "Pagamentos Recebidos" -#: app/templates/payment_gateways/create.html:80 -msgid "Save Gateway" -msgstr "Gravar o Portal" +#~ msgid "Net Received" +#~ msgstr "Rede Recebida" -#: app/templates/payment_gateways/list.html:28 -#: app/templates/payment_gateways/list.html:48 -msgid "Mode" -msgstr "Modo" +#~ msgid "After fees" +#~ msgstr "Após as taxas" -#: app/templates/payment_gateways/list.html:52 -msgid "Production" -msgstr "Produção" +#~ msgid "Date Range & Comparison" +#~ msgstr "Intervalo de Datas & Comparação" -#: app/templates/payment_gateways/list.html:70 -msgid "Add Gateway" -msgstr "Adicionar Gateway" +#~ msgid "Quick Date Ranges" +#~ msgstr "Intervalos de Datas Rápidos" -#: app/templates/payment_gateways/list.html:74 -msgid "No Payment Gateways" -msgstr "Sem Gateways de Pagamento" +#~ msgid "This Week" +#~ msgstr "Esta semana" -#: app/templates/payment_gateways/list.html:75 -msgid "Configure a payment gateway to enable online invoice payments." -msgstr "" -"Configurar um gateway de pagamento para permitir pagamentos de fatura on-" -"line." +#~ msgid "This Month" +#~ msgstr "Este mês" -#: app/templates/payment_gateways/pay.html:15 -msgid "Amount Due" -msgstr "Montante devido" +#~ msgid "This Year" +#~ msgstr "Este ano" -#: app/templates/payment_gateways/pay.html:31 -msgid "" -"You will be redirected to a secure payment page to complete your payment." -msgstr "" -"Você será redirecionado para uma página de pagamento segura para completar " -"seu pagamento." +#~ msgid "Custom Range" +#~ msgstr "Intervalo Personalizado" -#: app/templates/payment_gateways/pay.html:37 -msgid "Continue to Payment" -msgstr "Continuar ao pagamento" +#~ msgid "Comparison View" +#~ msgstr "Vista de Comparação" -#: app/templates/payment_gateways/pay.html:46 -msgid "Payment gateway not yet supported. Please contact support." -msgstr "" -"Gateway de pagamento ainda não suportado. Por favor contacte o suporte." - -#: app/templates/payments/create.html:7 -msgid "Record New Payment" -msgstr "Gravar o Novo Pagamento" - -#: app/templates/payments/list.html:24 app/templates/reports/index.html:38 -msgid "Total Payments" -msgstr "Total Pagamentos" - -#: app/templates/payments/list.html:37 app/templates/reports/index.html:54 -msgid "Gateway Fees" -msgstr "Taxas de Gateway" - -#: app/templates/payments/list.html:45 -msgid "Filter Payments" -msgstr "Pagamentos do filtro" - -#: app/templates/payments/list.html:141 -msgid "ID" -msgstr "ID" - -#: app/templates/payments/list.html:222 -msgid "Delete Selected Payments" -msgstr "Apagar os Pagamentos Seleccionados" - -#: app/templates/payments/list.html:242 -msgid "Change Status for Selected Payments" -msgstr "Alterar status para pagamentos selecionados" - -#: app/templates/payments/view.html:151 -msgid "Related Invoice" -msgstr "Fatura Relacionada" - -#: app/templates/per_diem/form.html:35 -msgid "e.g., Business trip to Berlin" -msgstr "Por exemplo, Viagem de negócios a Berlim" - -#: app/templates/per_diem/form.html:63 -#: app/templates/per_diem/rate_form.html:41 -msgid "e.g., DE, US, GB" -msgstr "Por exemplo, DE, US, GB" - -#: app/templates/per_diem/form.html:74 -#: app/templates/per_diem/rate_form.html:52 -msgid "e.g., Berlin" -msgstr "Por exemplo, Berlim" - -#: app/templates/per_diem/list.html:47 -msgid "Filter Claims" -msgstr "Filtrar reivindicações" - -#: app/templates/per_diem/list.html:152 -msgid "Delete Selected Claims" -msgstr "Apagar as Reclamações Seleccionadas" - -#: app/templates/per_diem/list.html:172 -msgid "Change Status for Selected Claims" -msgstr "Mudar o Estado das Reclamações Seleccionadas" - -#: app/templates/per_diem/rate_form.html:162 -msgid "Additional notes about this rate..." -msgstr "Notas adicionais sobre esta taxa..." - -#: app/templates/per_diem/rates_list.html:110 -#: app/templates/per_diem/rates_list.html:121 -msgid "Are you sure you want to delete this per diem rate?" -msgstr "Tem a certeza de que deseja apagar esta taxa por dia?" - -#: app/templates/per_diem/rates_list.html:111 -msgid "Delete Per Diem Rate" -msgstr "Apagar por Taxa Diem" - -#: app/templates/project_templates/create.html:3 -#: app/templates/project_templates/create.html:8 -msgid "Create Project Template" -msgstr "Criar um Modelo de Projecto" - -#: app/templates/project_templates/create.html:9 -msgid "Create a reusable template for quick project setup" -msgstr "Criar um modelo reutilizável para uma configuração rápida do projecto" - -#: app/templates/project_templates/create.html:11 -msgid "Back to Templates" -msgstr "Voltar aos Modelos" - -#: app/templates/project_templates/create.html:21 -msgid "e.g., Web Development Project" -msgstr "Por exemplo, Projeto de Desenvolvimento Web" - -#: app/templates/project_templates/create.html:26 -msgid "Describe what this template is used for..." -msgstr "Descreva para que este modelo é usado..." - -#: app/templates/project_templates/create.html:31 -msgid "e.g., Web Development, Marketing" -msgstr "Por exemplo, Desenvolvimento Web, Marketing" - -#: app/templates/project_templates/create.html:36 -#: app/templates/timer/calendar.html:193 -msgid "Comma-separated tags" -msgstr "Marcas separadas por vírgulas" - -#: app/templates/project_templates/create.html:41 -#: app/templates/project_templates/edit.html:41 -#: app/templates/project_templates/view.html:36 -msgid "Project Configuration" -msgstr "Configuração do Projeto" - -#: app/templates/project_templates/create.html:47 -#: app/templates/project_templates/edit.html:47 -#: app/templates/projects/create.html:66 -msgid "Billable Project" -msgstr "Projeto Billable" - -#: app/templates/project_templates/create.html:57 -#: app/templates/project_templates/create.html:87 -#: app/templates/project_templates/edit.html:57 -#: app/templates/project_templates/edit.html:90 -#: app/templates/project_templates/edit.html:116 -#: app/templates/project_templates/view.html:50 -#: app/templates/recurring_tasks/form.html:101 -#: app/templates/tasks/create.html:98 app/templates/tasks/edit.html:106 -msgid "Estimated Hours" -msgstr "Horas Estimadas" - -#: app/templates/project_templates/create.html:62 -#: app/templates/project_templates/edit.html:62 -#: app/templates/project_templates/view.html:56 -#: app/templates/projects/create.html:85 app/templates/projects/edit.html:78 -msgid "Budget Amount" -msgstr "Montante orçamental" - -#: app/templates/project_templates/create.html:69 -#: app/templates/project_templates/create_project.html:48 -#: app/templates/project_templates/edit.html:69 -#: app/templates/project_templates/view.html:65 -msgid "Template Tasks" -msgstr "Tarefas de Modelo" - -#: app/templates/project_templates/create.html:70 -#: app/templates/project_templates/edit.html:70 -msgid "Tasks will be created when a project is created from this template" -msgstr "" -"As tarefas serão criadas quando um projeto for criado a partir deste modelo" - -#: app/templates/project_templates/create.html:75 -#: app/templates/project_templates/edit.html:78 -#: app/templates/project_templates/edit.html:104 -#: app/templates/tasks/create.html:26 app/templates/tasks/edit.html:31 -msgid "Task Name" -msgstr "Nome da Tarefa" - -#: app/templates/project_templates/create.html:94 -#: app/templates/project_templates/edit.html:124 -msgid "Add Task" -msgstr "Adicionar Tarefa" - -#: app/templates/project_templates/create.html:101 -#: app/templates/project_templates/edit.html:131 -msgid "Make this template public (visible to all users)" -msgstr "Tornar este modelo público (visível para todos os utilizadores)" - -#: app/templates/project_templates/create_project.html:4 -#: app/templates/project_templates/create_project.html:9 -msgid "Create Project from Template" -msgstr "Criar Projeto a partir de Modelo" - -#: app/templates/project_templates/create_project.html:10 -msgid "Using template:" -msgstr "Usando modelo:" - -#: app/templates/project_templates/create_project.html:12 -#: app/templates/project_templates/edit.html:11 -msgid "Back to Template" -msgstr "Voltar ao Modelo" - -#: app/templates/project_templates/create_project.html:28 -msgid "Leave empty to use template name" -msgstr "Deixar em branco para usar o nome do modelo" - -#: app/templates/project_templates/create_project.html:33 -msgid "Override Settings (Optional)" -msgstr "Substituir as Configurações (Opcional)" - -#: app/templates/project_templates/create_project.html:40 -#: app/templates/projects/create.html:27 app/templates/projects/edit.html:26 -#: app/templates/projects/view.html:104 -msgid "Project Code" -msgstr "Código do projecto" - -#: app/templates/project_templates/create_project.html:49 -msgid "The following tasks will be created:" -msgstr "Serão criadas as seguintes tarefas:" - -#: app/templates/project_templates/create_project.html:67 -#: app/templates/project_templates/list.html:85 -#: app/templates/project_templates/view.html:21 -#: app/templates/projects/create.html:3 app/templates/projects/create.html:8 -#: app/templates/projects/create.html:138 app/templates/quotes/accept.html:41 -msgid "Create Project" -msgstr "Criar um Projecto" - -#: app/templates/project_templates/edit.html:3 -#: app/templates/project_templates/edit.html:8 -msgid "Edit Project Template" -msgstr "Editar modelo de projeto" - -#: app/templates/project_templates/edit.html:94 -#: app/templates/project_templates/edit.html:162 -msgid "Remove Task" -msgstr "Remover Tarefa" - -#: app/templates/project_templates/list.html:33 -msgid "Show Public Templates" -msgstr "Mostrar Modelos Públicos" - -#: app/templates/project_templates/list.html:74 -msgid "uses" -msgstr "utilizações" - -#: app/templates/project_templates/list.html:78 -#: app/templates/project_templates/view.html:11 -#: app/templates/reports/builder.html:189 -msgid "Public" -msgstr "Público" - -#: app/templates/project_templates/list.html:124 -msgid "No Templates Found" -msgstr "Nenhum Modelo Encontrado" - -#: app/templates/project_templates/list.html:125 -msgid "" -"Create your first project template to quickly set up new projects with pre-" -"configured settings and tasks." -msgstr "" -"Crie seu primeiro modelo de projeto para configurar rapidamente novos " -"projetos com configurações e tarefas pré-configuradas." - -#: app/templates/project_templates/view.html:3 -msgid "Project Template" -msgstr "Modelo de Projeto" - -#: app/templates/project_templates/view.html:91 -msgid "Template Info" -msgstr "Informação do Modelo" - -#: app/templates/project_templates/view.html:98 -msgid "Usage Count" -msgstr "Contagem de Uso" - -#: app/templates/project_templates/view.html:103 -msgid "Last Used" -msgstr "Última utilização" - -#: app/templates/projects/_kanban_tailwind.html:4 -msgid "Kanban board columns" -msgstr "Colunas de tabuleiro Kanban" - -#: app/templates/projects/_kanban_tailwind.html:16 -msgid "Add task to this column" -msgstr "Adicionar tarefa a esta coluna" - -#: app/templates/projects/_kanban_tailwind.html:20 -msgid "Edit swimlane" -msgstr "Editar linha de natação" - -#: app/templates/projects/_kanban_tailwind.html:26 -msgid "Column" -msgstr "Coluna" - -#: app/templates/projects/_projects_list.html:9 -#: app/templates/projects/list.html:90 -msgid "List View" -msgstr "Vista da Lista" - -#: app/templates/projects/_projects_list.html:12 -#: app/templates/projects/list.html:93 -msgid "Grid View" -msgstr "Vista da Grade" - -#: app/templates/projects/_projects_list.html:102 -#: app/templates/projects/list.html:183 -msgid "Rate" -msgstr "Taxa" - -#: app/templates/projects/_projects_list.html:152 -#: app/templates/projects/edit.html:3 app/templates/projects/edit.html:8 -#: app/templates/projects/list.html:234 app/templates/projects/view.html:18 -msgid "Edit Project" -msgstr "Editar Projeto" - -#: app/templates/projects/add_cost.html:3 -#: app/templates/projects/add_cost.html:13 -#: app/templates/projects/add_cost.html:101 -msgid "Add Cost" -msgstr "Adicionar Custo" - -#: app/templates/projects/add_cost.html:20 -msgid "Add Cost to Project" -msgstr "Adicionar Custo ao Projeto" - -#: app/templates/projects/add_cost.html:30 -#: app/templates/projects/edit_cost.html:37 -msgid "e.g., Travel expenses to client site" -msgstr "Por exemplo, despesas de viagem para o site do cliente" - -#: app/templates/projects/add_cost.html:31 -#: app/templates/projects/edit_cost.html:38 -msgid "Brief description of the cost" -msgstr "Breve descrição do custo" - -#: app/templates/projects/add_cost.html:39 -#: app/templates/projects/edit_cost.html:46 -msgid "Select category" -msgstr "Selecionar categoria" - -#: app/templates/projects/add_cost.html:41 -#: app/templates/projects/edit_cost.html:48 -msgid "Materials" -msgstr "Materiais" - -#: app/templates/projects/add_cost.html:44 -#: app/templates/projects/edit_cost.html:51 -msgid "Software/Licenses" -msgstr "Software/Licenças" - -#: app/templates/projects/add_cost.html:78 -#: app/templates/projects/edit_cost.html:85 -msgid "Additional details about this cost" -msgstr "Detalhes adicionais sobre este custo" - -#: app/templates/projects/add_cost.html:87 -#: app/templates/projects/edit_cost.html:94 -msgid "Billable to client" -msgstr "Facturável para cliente" - -#: app/templates/projects/add_cost.html:90 -#: app/templates/projects/edit_cost.html:97 -msgid "If checked, this cost will be included in invoices" -msgstr "Se marcada, este custo será incluído nas faturas" - -#: app/templates/projects/add_good.html:6 -msgid "Add Extra Good" -msgstr "Adicionar Extra Bom" - -#: app/templates/projects/add_good.html:7 -msgid "Add a product or service to" -msgstr "Adicionar um produto ou serviço a" - -#: app/templates/projects/add_good.html:9 -#: app/templates/projects/dashboard.html:9 app/templates/projects/edit.html:11 -#: app/templates/projects/edit_good.html:9 -#: app/templates/projects/goods.html:10 -#: app/templates/projects/time_entries_overview.html:18 -msgid "Back to Project" -msgstr "Voltar ao Projeto" - -#: app/templates/projects/add_good.html:40 -#: app/templates/projects/edit_good.html:40 -msgid "SKU/Product Code" -msgstr "Código SKU/Produto" - -#: app/templates/projects/archive.html:24 -msgid "What happens when you archive a project?" -msgstr "O que acontece quando você arquiva um projeto?" - -#: app/templates/projects/archive.html:26 -msgid "The project will be hidden from active project lists" -msgstr "O projeto será escondido das listas de projetos ativos" - -#: app/templates/projects/archive.html:27 -msgid "No new time entries can be added to this project" -msgstr "Nenhum registro de tempo novo pode ser adicionado a este projeto" - -#: app/templates/projects/archive.html:28 -msgid "Existing data and time entries are preserved" -msgstr "Os dados e as datas existentes são preservados" - -#: app/templates/projects/archive.html:29 -msgid "You can unarchive the project later if needed" -msgstr "Você pode unarchive o projeto mais tarde, se necessário" - -#: app/templates/projects/archive.html:41 -msgid "Reason for Archiving" -msgstr "Razão do Arquivamento" - -#: app/templates/projects/archive.html:48 -msgid "" -"e.g., Project completed, Client contract ended, Project cancelled, etc." -msgstr "" -"Por exemplo, projeto concluído, contrato de cliente encerrado, projeto " -"cancelado, etc." +#~ msgid "Week in Review" +#~ msgstr "Semana de Revisão" -#: app/templates/projects/archive.html:51 -msgid "Adding a reason helps with project organization and future reference." -msgstr "" -"Adicionar uma razão ajuda com a organização do projeto e referência futura." +#~ msgid "This week's hours, top projects, billable vs non-billable" +#~ msgstr "Horas desta semana, projetos de topo, faturabilidade vs não-bilável" -#: app/templates/projects/archive.html:58 -msgid "Quick Select" -msgstr "Seleção Rápida" +#~ msgid "This Month vs Last Month" +#~ msgstr "Este mês contra o último mês" -#: app/templates/projects/archive.html:61 -msgid "Project completed successfully" -msgstr "Projeto concluído com sucesso" +#~ msgid "Compare current month with previous month" +#~ msgstr "Comparar o mês atual com o mês anterior" -#: app/templates/projects/archive.html:62 -msgid "Project Completed" -msgstr "Projeto Concluído" +#~ msgid "This Year vs Last Year" +#~ msgstr "Este ano contra o ano passado" -#: app/templates/projects/archive.html:64 -msgid "Client contract ended" -msgstr "Contrato do cliente terminado" +#~ msgid "Compare current year with previous year" +#~ msgstr "Comparar o ano em curso com o ano anterior" -#: app/templates/projects/archive.html:65 app/templates/projects/list.html:570 -msgid "Contract Ended" -msgstr "Contrato Finalizado" +#~ msgid "Comparison Results" +#~ msgstr "Resultados da comparação" -#: app/templates/projects/archive.html:67 -msgid "Project cancelled by client" -msgstr "Projeto cancelado pelo cliente" +#~ msgid "Export Reports" +#~ msgstr "Relatórios de Exportação" -#: app/templates/projects/archive.html:70 -msgid "Project on hold indefinitely" -msgstr "Projeto em espera indefinidamente" +#~ msgid "Export Format" +#~ msgstr "Formato de Exportação" -#: app/templates/projects/archive.html:71 -msgid "On Hold" -msgstr "Em espera" +#~ msgid "Export Report" +#~ msgstr "Relatório de Exportação" -#: app/templates/projects/archive.html:73 -msgid "Maintenance period ended" -msgstr "Período de manutenção terminado" +#~ msgid "Manage Scheduled Reports" +#~ msgstr "Gerenciar relatórios agendados" -#: app/templates/projects/archive.html:74 -msgid "Maintenance Ended" -msgstr "Manutenção Terminada" +#~ msgid "CSV Export" +#~ msgstr "Exportação de CSV" -#: app/templates/projects/archive.html:85 -msgid "Archive Project" -msgstr "Arquivo Projeto" +#~ msgid "Excel Export" +#~ msgstr "Exportar Excel" -#: app/templates/projects/create.html:9 -msgid "Set up a new project to organize your work and track time effectively" -msgstr "" -"Configure um novo projeto para organizar seu trabalho e rastrear o tempo de " -"forma eficaz" +#~ msgid "Report Types" +#~ msgstr "Tipos de relatório" -#: app/templates/projects/create.html:23 -msgid "Enter a descriptive project name" -msgstr "Indique um nome descritivo do projecto" +#~ msgid "Project Report" +#~ msgstr "Relatório do Projeto" -#: app/templates/projects/create.html:24 -msgid "Choose a clear, descriptive name that explains the project scope" -msgstr "Escolha um nome claro e descritivo que explique o escopo do projeto" +#~ msgid "User Report" +#~ msgstr "Relatório do Usuário" -#: app/templates/projects/create.html:28 app/templates/projects/edit.html:27 -msgid "Short code, e.g., ABC" -msgstr "Código curto, por exemplo, ABC" +#~ msgid "Summary Report" +#~ msgstr "Relatório de síntese" -#: app/templates/projects/create.html:29 -msgid "Optional: Short tag shown on Kanban cards" -msgstr "Opcional: etiqueta curta mostrada nas cartas de Kanban" +#~ msgid "Task Report" +#~ msgstr "Relatório de tarefas" -#: app/templates/projects/create.html:45 app/templates/projects/edit.html:42 -msgid "Create new client" -msgstr "Criar um novo cliente" +#~ msgid "Time Entries Report" +#~ msgstr "Relatório de Menções de Tempo" -#: app/templates/projects/create.html:56 -msgid "" -"Provide detailed information about the project, objectives, and " -"deliverables..." -msgstr "Fornecer informações detalhadas sobre o projeto, objetivos e..." +#~ msgid "Unpaid Hours Report" +#~ msgstr "Relatório de horas não pagas" -#: app/templates/projects/create.html:59 -msgid "" -"Optional: Add context, objectives, or specific requirements for the project" -msgstr "" -"Opcional: Adicione contexto, objetivos ou requisitos específicos para o " -"projeto" +#~ msgid "Report Management" +#~ msgstr "Gestão de Relatórios" -#: app/templates/projects/create.html:68 -msgid "Enable billing for this project" -msgstr "Activar a facturação deste projecto" +#~ msgid "Saved Report Views" +#~ msgstr "Áreas de Relatório Gravadas" -#: app/templates/projects/create.html:73 app/templates/projects/edit.html:67 -msgid "Leave empty for non-billable projects" -msgstr "Deixar em branco para projetos não biláveis" +#~ msgid "View and manage your saved report configurations" +#~ msgstr "Visualize e gerencie suas configurações de relatório salvas" -#: app/templates/projects/create.html:79 -msgid "PO number, contract reference, etc." -msgstr "Número PO, referência contratual, etc." +#~ msgid "Manage automated report delivery via email" +#~ msgstr "Gerenciar entrega automática de relatórios via e-mail" -#: app/templates/projects/create.html:80 -msgid "Optional: Add a reference number or identifier for billing purposes" -msgstr "" -"Opcional: Adicionar um número de referência ou identificador para fins de " -"faturamento" +#~ msgid "No recent entries." +#~ msgstr "Sem entradas recentes." -#: app/templates/projects/create.html:86 app/templates/projects/edit.html:79 -msgid "e.g. 10000.00" -msgstr "Por exemplo, 10000.00" +#~ msgid "No scheduled reports yet." +#~ msgstr "Ainda não há relatórios agendados." -#: app/templates/projects/create.html:87 -msgid "Optional: Set a total project budget to monitor spend" -msgstr "" -"Opcional: Defina um orçamento total do projeto para monitorar os gastos" +#~ msgid "Add Scheduled Report" +#~ msgstr "Adicionar relatório agendado" -#: app/templates/projects/create.html:90 app/templates/projects/edit.html:82 -msgid "Alert Threshold (%)" -msgstr "Limiar de Alerta (%)" +#~ msgid "Please set a date range" +#~ msgstr "Por favor, defina um intervalo de datas" -#: app/templates/projects/create.html:92 -msgid "Notify when consumed budget exceeds this threshold" -msgstr "Notificar quando o orçamento consumido exceder este limiar" +#~ msgid "" +#~ "You need to create a saved report" +#~ " view first. Please create one from" +#~ " the reports page." +#~ msgstr "" +#~ "Você precisa criar uma visão de " +#~ "relatório salva primeiro. Crie uma na" +#~ " página de relatórios." -#: app/templates/projects/create.html:97 app/templates/projects/edit.html:88 -#: app/templates/tasks/create.html:128 app/templates/tasks/edit.html:136 -msgid "Gantt color" -msgstr "Cor Gantt" +#~ msgid "Schedule Report" +#~ msgstr "Relatório de Agenda" -#: app/templates/projects/create.html:102 app/templates/projects/edit.html:93 -msgid "" -"Optional: Color for this project on the Gantt chart. Pick or enter a hex " -"code (e.g. #3b82f6)." -msgstr "" -"Opcional: Cor para este projeto no gráfico de Gantt. Escolha ou insira um " -"código hexadecimal (por exemplo, #3b82f6)." +#~ msgid "Report View" +#~ msgstr "Área de Relatórios" -#: app/templates/projects/create.html:109 app/templates/projects/edit.html:100 -msgid "" -"These custom fields are defined globally and available for all projects." -msgstr "" -"Estes campos personalizados são definidos globalmente e disponíveis para " -"todos os projetos." +#~ msgid "Select a report view..." +#~ msgstr "Selecionar uma visão de relatório..." -#: app/templates/projects/create.html:146 -msgid "Project Creation Tips" -msgstr "Dicas de criação do projeto" +#~ msgid "Recipients" +#~ msgstr "Destinatários" -#: app/templates/projects/create.html:148 app/templates/tasks/create.html:155 -msgid "Clear Naming" -msgstr "Limpar a Nomeação" +#~ msgid "Comma-separated email addresses" +#~ msgstr "Endereços de e- mail separados por vírgulas" -#: app/templates/projects/create.html:148 -msgid "Use descriptive names that clearly indicate the project's purpose" -msgstr "Use nomes descritivos que indiquem claramente o propósito do projeto" +#~ msgid "Create Schedule" +#~ msgstr "Criar agendamento" -#: app/templates/projects/create.html:149 -msgid "Billing Setup" -msgstr "Configuração da Conta" +#~ msgid "Failed to load report views" +#~ msgstr "Falha ao carregar as visões do relatório" -#: app/templates/projects/create.html:149 -msgid "" -"Set appropriate hourly rates based on project complexity and client budget" -msgstr "" -"Definir taxas horárias adequadas com base na complexidade do projeto e no " -"orçamento do cliente" +#~ msgid "Scheduled report created successfully" +#~ msgstr "Relatório agendado criado com sucesso" -#: app/templates/projects/create.html:150 -msgid "Detailed Description" -msgstr "Descrição Detalhada" +#~ msgid "Failed to create scheduled report" +#~ msgstr "Falha ao criar o relatório agendado" -#: app/templates/projects/create.html:150 -msgid "Include project objectives, deliverables, and key requirements" -msgstr "" -"Incluir os objetivos do projeto, os resultados e os principais requisitos" +#~ msgid "Failed to update schedule" +#~ msgstr "Falha ao atualizar o agendamento" -#: app/templates/projects/create.html:151 -msgid "Client Selection" -msgstr "Selecção do Cliente" +#~ msgid "Are you sure you want to delete this scheduled report?" +#~ msgstr "Tem a certeza de que deseja apagar este relatório agendado?" -#: app/templates/projects/create.html:151 -msgid "Choose the right client to ensure proper project organization" -msgstr "" -"Escolha o cliente certo para garantir a organização adequada do projeto" - -#: app/templates/projects/create.html:437 -#: app/templates/projects/create.html:498 app/templates/reports/index.html:527 -msgid "Creating..." -msgstr "Criando..." +#~ msgid "Scheduled report deleted successfully" +#~ msgstr "Relatório agendado excluído com sucesso" -#: app/templates/projects/create.html:517 -msgid "Could not create client. Please try again." -msgstr "Não foi possível criar o cliente. Por favor, tente novamente." +#~ msgid "Failed to delete scheduled report" +#~ msgstr "Não foi possível apagar o relatório agendado" -#: app/templates/projects/create.html:526 -#: app/templates/projects/create.html:547 -msgid "Client created" -msgstr "Cliente criado" - -#: app/templates/projects/create.html:551 -msgid "Network error while creating client" -msgstr "Erro de rede ao criar o cliente" - -#: app/templates/projects/dashboard.html:19 -msgid "Project Dashboard & Analytics" -msgstr "& Análise do Painel de Projeto" - -#: app/templates/projects/dashboard.html:27 -#: app/templates/projects/view.html:13 -msgid "Entries Overview" -msgstr "Resumo das Entradas" - -#: app/templates/projects/dashboard.html:33 -#: app/templates/projects/view.html:41 -msgid "Budget Analysis" -msgstr "Análise do Orçamento" - -#: app/templates/projects/dashboard.html:37 -msgid "All Time" -msgstr "Todo o Tempo" - -#: app/templates/projects/dashboard.html:38 -msgid "Last 7 Days" -msgstr "Últimos 7 dias" - -#: app/templates/projects/dashboard.html:39 -msgid "Last 30 Days" -msgstr "Últimos 30 dias" - -#: app/templates/projects/dashboard.html:40 -msgid "Last 3 Months" -msgstr "Últimos 3 meses" - -#: app/templates/projects/dashboard.html:41 -msgid "Last Year" -msgstr "Ano passado" - -#: app/templates/projects/dashboard.html:57 -msgid "estimated" -msgstr "estimado" - -#: app/templates/projects/dashboard.html:71 -#: app/templates/projects/view.html:247 -msgid "Budget Used" -msgstr "Orçamento Usado" - -#: app/templates/projects/dashboard.html:75 -msgid "of budget" -msgstr "do orçamento" - -#: app/templates/projects/dashboard.html:89 -msgid "Tasks Complete" -msgstr "Tarefas Completas" - -#: app/templates/projects/dashboard.html:92 -msgid "completion" -msgstr "completar" - -#: app/templates/projects/dashboard.html:105 -msgid "Team Members" -msgstr "Membros da Equipa" - -#: app/templates/projects/dashboard.html:107 -msgid "contributing" -msgstr "contribuir" - -#: app/templates/projects/dashboard.html:122 -msgid "Budget vs. Actual" -msgstr "Orçamento vs. Real" - -#: app/templates/projects/dashboard.html:144 -msgid "No budget set for this project" -msgstr "Nenhum orçamento definido para este projecto" - -#: app/templates/projects/dashboard.html:154 -msgid "Task Status Distribution" -msgstr "Distribuição do Estado da Tarefa" - -#: app/templates/projects/dashboard.html:172 -msgid "No tasks created yet" -msgstr "Nenhuma tarefa criada ainda" - -#: app/templates/projects/dashboard.html:185 -msgid "Team Member Contributions" -msgstr "Contribuições dos membros da equipa" - -#: app/templates/projects/dashboard.html:209 -msgid "No time entries recorded yet" -msgstr "Nenhum registro de tempo ainda" - -#: app/templates/projects/dashboard.html:219 -msgid "Time Tracking Timeline" -msgstr "Time Tracking Timeline" - -#: app/templates/projects/dashboard.html:229 -msgid "Select a time period to view timeline" -msgstr "Selecione um período de tempo para ver a linha do tempo" - -#: app/templates/projects/dashboard.html:277 -msgid "Team Member Details" -msgstr "Detalhes dos membros da equipe" - -#: app/templates/projects/dashboard.html:294 -msgid "tasks" -msgstr "tarefas" - -#: app/templates/projects/dashboard.html:312 -msgid "No team members have logged time yet" -msgstr "Nenhum membro da equipe registrou o tempo ainda" - -#: app/templates/projects/dashboard.html:325 -msgid "Attention Required" -msgstr "Atenção necessária" - -#: app/templates/projects/dashboard.html:327 -msgid "task(s) are overdue" -msgstr "as tarefas estão atrasadas" - -#: app/templates/projects/edit_cost.html:3 -#: app/templates/projects/edit_cost.html:13 -#: app/templates/projects/edit_cost.html:20 -msgid "Edit Cost" -msgstr "Editar o Custo" +#~ msgid "Iterative Report" +#~ msgstr "Relatório Iterativo" -#: app/templates/projects/edit_cost.html:27 -msgid "This cost has been invoiced. Changes may affect existing invoices." -msgstr "" -"Este custo foi facturado. As alterações podem afectar as facturas " -"existentes." - -#: app/templates/projects/edit_cost.html:108 -msgid "Update Cost" -msgstr "Custo de Atualização" - -#: app/templates/projects/edit_good.html:6 -msgid "Edit Extra Good" -msgstr "Editar Extra Bom" - -#: app/templates/projects/goods.html:7 -msgid "Manage products and services for this project" -msgstr "Gerenciar produtos e serviços para este projeto" - -#: app/templates/projects/goods.html:17 -msgid "Total Goods" -msgstr "Total de Bens" - -#: app/templates/projects/goods.html:25 -msgid "Billable Amount" -msgstr "Montante Billável" - -#: app/templates/projects/goods.html:29 -msgid "Categories" -msgstr "Categorias" - -#: app/templates/projects/goods.html:68 -msgid "Invoiced" -msgstr "Faturado" - -#: app/templates/projects/goods.html:72 -#: app/templates/reports/week_in_review.html:34 -#: app/templates/timer/time_entries_overview.html:114 -#: app/templates/timer/view_timer.html:130 -msgid "Non-billable" -msgstr "Não creditável" - -#: app/templates/projects/goods.html:81 -msgid "Are you sure you want to delete this extra good?" -msgstr "Tem certeza de que deseja excluir este extra bom?" - -#: app/templates/projects/goods.html:81 -msgid "Delete Extra Good" -msgstr "Apagar Extra Bom" - -#: app/templates/projects/goods.html:98 -msgid "No extra goods found for this project" -msgstr "Nenhuma mercadoria extra encontrada para este projeto" - -#: app/templates/projects/goods.html:99 -msgid "Add Your First Good" -msgstr "Adicione seu primeiro bem" - -#: app/templates/projects/goods.html:105 -msgid "Breakdown by Category" -msgstr "Discriminação por categoria" - -#: app/templates/projects/goods.html:111 -msgid "item(s)" -msgstr "item(s)" - -#: app/templates/projects/list.html:19 -msgid "Filter Projects" -msgstr "Filtrar Projetos" - -#: app/templates/projects/time_entries_overview.html:10 -#: app/templates/projects/time_entries_overview.html:15 -#: app/templates/timer/time_entries_overview.html:5 -#: app/templates/timer/time_entries_overview.html:14 -msgid "Time Entries Overview" -msgstr "Visão Geral das Entradas de Tempo" - -#: app/templates/projects/time_entries_overview.html:24 -msgid "Days" -msgstr "Dias" - -#: app/templates/projects/time_entries_overview.html:48 -msgid "No time entries found for this project in the selected period." -msgstr "" -"Não foram encontrados itens de tempo para este projeto no período " -"selecionado." - -#: app/templates/projects/view.html:54 -msgid "Mark project as Inactive?" -msgstr "Marcar o projecto como inactivo?" - -#: app/templates/projects/view.html:54 -msgid "Change Project Status" -msgstr "Mudar o Estado do Projeto" - -#: app/templates/projects/view.html:61 -msgid "Activate project?" -msgstr "Activar o projecto?" - -#: app/templates/projects/view.html:61 -msgid "Activate Project" -msgstr "Activar o Projecto" - -#: app/templates/projects/view.html:72 -msgid "Archive" -msgstr "Arquivo" - -#: app/templates/projects/view.html:75 -msgid "Unarchive project?" -msgstr "Um projecto não-arquivo?" - -#: app/templates/projects/view.html:75 -msgid "Unarchive Project" -msgstr "Projeto Unarchive" - -#: app/templates/projects/view.html:75 app/templates/projects/view.html:78 -msgid "Unarchive" -msgstr "Unarchive" - -#: app/templates/projects/view.html:87 -msgid "Delete Project" -msgstr "Apagar Projeto" - -#: app/templates/projects/view.html:133 -msgid "Archive Information" -msgstr "Informações do Arquivo" - -#: app/templates/projects/view.html:136 -msgid "Archived on:" -msgstr "Arquivado em:" - -#: app/templates/projects/view.html:141 -msgid "Archived by:" -msgstr "Arquivado por:" - -#: app/templates/projects/view.html:147 -msgid "Reason:" -msgstr "Razão:" - -#: app/templates/projects/view.html:208 -msgid "Quick Links" -msgstr "Ligações Rápidas" - -#: app/templates/projects/view.html:230 -msgid "Budget Overview" -msgstr "Visão geral do orçamento" - -#: app/templates/projects/view.html:279 -msgid "Over" -msgstr "Terminado" - -#: app/templates/projects/view.html:304 -msgid "View Full Budget Analysis" -msgstr "Ver análise de orçamento completa" - -#: app/templates/projects/view.html:352 -msgid "e.g., Contract, Specification, etc." -msgstr "Por exemplo, contrato, especificação, etc." - -#: app/templates/projects/view.html:424 -msgid "Tasks for this project" -msgstr "Tarefas para este projeto" - -#: app/templates/projects/view.html:431 app/templates/projects/view.html:458 -#: app/templates/timer/calendar.html:854 -msgid "Due" -msgstr "Terminado" - -#: app/templates/projects/view.html:432 app/templates/projects/view.html:466 -#: app/templates/tasks/_kanban.html:1324 -#: app/templates/tasks/_tasks_list.html:36 -#: app/templates/tasks/_tasks_list.html:86 app/templates/tasks/edit.html:172 -#: app/templates/tasks/view.html:154 -msgid "Estimated" -msgstr "Estimado" - -#: app/templates/projects/view.html:485 -msgid "No tasks for this project." -msgstr "Nenhuma tarefa para este projeto." - -#: app/templates/quotes/_edit_quote_form_scripts.html:16 -#: app/templates/quotes/edit.html:82 app/templates/quotes/edit.html:154 -#: app/templates/quotes/edit.html:212 -msgid "Move up" -msgstr "Subir" - -#: app/templates/quotes/_edit_quote_form_scripts.html:17 -#: app/templates/quotes/edit.html:83 app/templates/quotes/edit.html:155 -#: app/templates/quotes/edit.html:213 -msgid "Move down" -msgstr "Mover para baixo" - -#: app/templates/quotes/_edit_quote_form_scripts.html:166 -#: app/templates/quotes/edit.html:87 -msgid "Manual entry" -msgstr "Entrada manual" - -#: app/templates/quotes/_edit_quote_form_scripts.html:167 -#: app/templates/quotes/edit.html:88 -msgid "From stock" -msgstr "Da unidade populacional" - -#: app/templates/quotes/_quotes_list.html:12 -#: app/templates/quotes/list.html:366 app/templates/quotes/view.html:24 -#: app/templates/timer/calendar.html:236 -#: app/templates/timer/edit_timer.html:389 -#: app/templates/timer/edit_timer.html:510 -msgid "Duplicate" -msgstr "Duplicar" - -#: app/templates/quotes/_quotes_list.html:13 -#: app/templates/quotes/list.html:367 -msgid "Mark as Sent" -msgstr "Marcar como Enviado" - -#: app/templates/quotes/_quotes_list.html:66 app/templates/quotes/list.html:83 -#: app/templates/quotes/view.html:75 -msgid "Accepted" -msgstr "Aceitado" - -#: app/templates/quotes/_quotes_list.html:88 -msgid "Create Your First Quote" -msgstr "Crie sua primeira citação" - -#: app/templates/quotes/_quotes_list.html:92 -msgid "Learn More" -msgstr "Saiba mais" - -#: app/templates/quotes/accept.html:11 -msgid "Back to Quote" -msgstr "Voltar à Citação" - -#: app/templates/quotes/accept.html:42 -msgid "" -"Accepting this quote will create a new project with the budget from the " -"quote." -msgstr "" -"Aceitar esta citação criará um novo projeto com o orçamento da citação." +#~ msgid "Iterative Report - One report per %(field_name)s value" +#~ msgstr "" -#: app/templates/quotes/accept.html:50 -msgid "The project will be created with the budget from the quote" -msgstr "O projeto será criado com o orçamento da cotação" +#~ msgid "Summary by Client" +#~ msgstr "Resumo por Cliente" -#: app/templates/quotes/accept.html:55 -msgid "Accept Quote & Create Project" -msgstr "Aceitar Citação & Criar Projeto" +#~ msgid "No data found for this %(field_name)s value" +#~ msgstr "" -#: app/templates/quotes/create.html:5 app/templates/quotes/create.html:265 -msgid "Create Quote" -msgstr "Criar Citação" +#~ msgid "No unique values found for custom field \"%(field_name)s\"" +#~ msgstr "" -#: app/templates/quotes/create.html:37 app/templates/quotes/edit.html:33 -msgid "Quote title" -msgstr "Título da citação" +#~ msgid "No data for the selected period." +#~ msgstr "Nenhum dado para o período selecionado." -#: app/templates/quotes/create.html:42 app/templates/quotes/edit.html:47 -msgid "Quote description" -msgstr "Descrição da citação" +#~ msgid "Try a different date range or ensure time has been logged on projects." +#~ msgstr "" +#~ "Tente um intervalo de datas diferente" +#~ " ou garanta que o tempo tenha " +#~ "sido registrado em projetos." -#: app/templates/quotes/create.html:51 app/templates/quotes/edit.html:56 -msgid "Quote line items" -msgstr "Itens da linha de citação" +#~ msgid "Features" +#~ msgstr "Características" -#: app/templates/quotes/create.html:54 app/templates/quotes/edit.html:59 -msgid "Services, labor, and catalog lines" -msgstr "Serviços, mão de obra e linhas de catálogo" +#~ msgid "Iterative" +#~ msgstr "Iterativo" -#: app/templates/quotes/create.html:57 app/templates/quotes/edit.html:62 -msgid "Add line" -msgstr "Adicionar linha" +#~ msgid "Are you sure you want to delete this report view?" +#~ msgstr "Tem certeza de que deseja excluir esta visão de relatório?" -#: app/templates/quotes/create.html:62 app/templates/quotes/edit.html:67 -#: app/templates/quotes/edit.html:86 -msgid "Line type" -msgstr "Tipo de linha" +#~ msgid "No Saved Report Views" +#~ msgstr "Nenhuma visão de relatório salva" -#: app/templates/quotes/create.html:63 app/templates/quotes/edit.html:68 -msgid "Stock" -msgstr "Unidade populacional" +#~ msgid "Create and save report configurations to use them in scheduled reports." +#~ msgstr "" +#~ "Crie e salve configurações de relatórios" +#~ " para usá-las em relatórios agendados." -#: app/templates/quotes/create.html:73 app/templates/quotes/edit.html:120 -msgid "Line items subtotal" -msgstr "Subtotal dos elementos da linha" +#~ msgid "Create Report" +#~ msgstr "Criar relatório" -#: app/templates/quotes/create.html:83 app/templates/quotes/edit.html:131 -msgid "Costs" -msgstr "Custos" +#~ msgid "Set up automated email delivery for reports" +#~ msgstr "Configurar entrega automática de e- mail para relatórios" -#: app/templates/quotes/create.html:86 app/templates/quotes/edit.html:134 -msgid "One-off costs (e.g. travel, materials)" -msgstr "Custos únicos (por exemplo, viagens, materiais)" +#~ msgid "Back to Scheduled Reports" +#~ msgstr "Voltar aos Relatórios Agendados" -#: app/templates/quotes/create.html:89 app/templates/quotes/edit.html:137 -msgid "Add cost" -msgstr "Adicionar custo" +#~ msgid "Select a saved report view..." +#~ msgstr "Selecione uma visão de relatório salva..." -#: app/templates/quotes/create.html:104 app/templates/quotes/edit.html:177 -msgid "Costs subtotal" -msgstr "Custos subtotal" +#~ msgid "Select a saved report view to schedule" +#~ msgstr "Selecione uma visão de relatório salva para agendar" -#: app/templates/quotes/create.html:114 app/templates/quotes/edit.html:188 -msgid "Extra goods" -msgstr "Mercadorias extra" +#~ msgid "Email Recipients" +#~ msgstr "Destinatários de Email" -#: app/templates/quotes/create.html:117 app/templates/quotes/edit.html:191 -msgid "Products, licenses, hardware" -msgstr "Produtos, licenças, hardware" +#~ msgid "email1@example.com, email2@example.com" +#~ msgstr "email1@example.com, email2@example.com" -#: app/templates/quotes/create.html:120 app/templates/quotes/edit.html:194 -msgid "Add good" -msgstr "Adicionar bom" +#~ msgid "" +#~ "Enter one or more email addresses " +#~ "separated by commas. These recipients " +#~ "will receive the scheduled report via" +#~ " email." +#~ msgstr "" +#~ "Digite um ou mais endereços de e-" +#~ " mail separados por vírgulas. Esses " +#~ "destinatários receberão o relatório agendado" +#~ " via e-mail." -#: app/templates/quotes/create.html:136 app/templates/quotes/edit.html:235 -msgid "Goods subtotal" -msgstr "Subtotal de mercadorias" +#~ msgid "" +#~ "When using Mapping or Template, these" +#~ " are used as fallback if no " +#~ "address is found for a value." +#~ msgstr "" +#~ "Ao usar Mapeamento ou Modelo, estes " +#~ "são usados como recurso se nenhum " +#~ "endereço for encontrado para um valor." -#: app/templates/quotes/create.html:144 app/templates/quotes/edit.html:243 -msgid "Subtotal (all quote lines)" -msgstr "Subtotal (todas as linhas de citação)" +#~ msgid "Select frequency..." +#~ msgstr "Selecionar frequência..." -#: app/templates/quotes/create.html:152 app/templates/quotes/edit.html:251 -msgid "Financial Details" -msgstr "Detalhes financeiros" +#~ msgid "Custom (Cron)" +#~ msgstr "Personalizado (Cron)" -#: app/templates/quotes/create.html:182 app/templates/quotes/edit.html:281 -msgid "Select payment terms" -msgstr "Seleccionar as condições de pagamento" +#~ msgid "Use previous calendar month as date range" +#~ msgstr "Usar o mês calendário anterior como intervalo de datas" -#: app/templates/quotes/create.html:183 app/templates/quotes/edit.html:282 -msgid "Due on Receipt" -msgstr "Data de recepção" +#~ msgid "" +#~ "For monthly runs: report will use " +#~ "the first and last day of the " +#~ "previous month." +#~ msgstr "" +#~ "Para corridas mensais: relatório irá " +#~ "usar o primeiro e último dia do" +#~ " mês anterior." -#: app/templates/quotes/create.html:191 app/templates/quotes/edit.html:290 -msgid "Or enter custom payment terms" -msgstr "Ou insira condições de pagamento personalizadas" +#~ msgid "Cron Expression" +#~ msgstr "Expressão do Cron" -#: app/templates/quotes/create.html:193 app/templates/quotes/edit.html:292 -msgid "Use custom terms" -msgstr "Usar termos personalizados" - -#: app/templates/quotes/create.html:201 app/templates/quotes/edit.html:300 -#: app/templates/quotes/pdf_default.html:123 -#: app/templates/quotes/view.html:135 -msgid "Discount" -msgstr "Desconto" - -#: app/templates/quotes/create.html:205 app/templates/quotes/edit.html:304 -msgid "Discount Type" -msgstr "Tipo de Desconto" - -#: app/templates/quotes/create.html:207 app/templates/quotes/edit.html:306 -msgid "No Discount" -msgstr "Sem desconto" - -#: app/templates/quotes/create.html:208 app/templates/quotes/edit.html:307 -msgid "Percentage (%)" -msgstr "Percentagem (%)" - -#: app/templates/quotes/create.html:209 app/templates/quotes/edit.html:308 -msgid "Fixed Amount" -msgstr "Montante fixo" - -#: app/templates/quotes/create.html:213 app/templates/quotes/edit.html:312 -msgid "Discount Amount" -msgstr "Quantidade de Desconto" - -#: app/templates/quotes/create.html:214 app/templates/quotes/edit.html:313 -msgid "0.00" -msgstr "0,00" - -#: app/templates/quotes/create.html:219 app/templates/quotes/edit.html:318 -msgid "Coupon Code" -msgstr "Código do Cupão" - -#: app/templates/quotes/create.html:220 app/templates/quotes/edit.html:319 -msgid "Optional coupon code" -msgstr "Código facultativo do cupão" - -#: app/templates/quotes/create.html:223 app/templates/quotes/edit.html:322 -msgid "Discount Reason" -msgstr "Razão do Desconto" - -#: app/templates/quotes/create.html:224 app/templates/quotes/edit.html:323 -msgid "Reason for discount" -msgstr "Motivo do desconto" - -#: app/templates/quotes/create.html:232 -msgid "Approval Workflow" -msgstr "Fluxo de trabalho da homologação" - -#: app/templates/quotes/create.html:237 -msgid "Requires approval before sending" -msgstr "Requer aprovação antes do envio" - -#: app/templates/quotes/create.html:245 app/templates/quotes/edit.html:331 -msgid "Additional Information" -msgstr "Informações adicionais" - -#: app/templates/quotes/create.html:249 app/templates/quotes/edit.html:335 -msgid "Internal notes (not visible to client)" -msgstr "Notas internas (não visíveis ao cliente)" - -#: app/templates/quotes/create.html:250 app/templates/quotes/edit.html:336 -msgid "These notes are only visible to your team" -msgstr "Estas notas só são visíveis para a sua equipa" - -#: app/templates/quotes/create.html:253 app/templates/quotes/edit.html:339 -#: app/templates/quotes/view.html:171 -msgid "Terms and Conditions" -msgstr "Termos e Condições" - -#: app/templates/quotes/create.html:254 app/templates/quotes/edit.html:340 -msgid "Terms and conditions" -msgstr "Termos e condições" - -#: app/templates/quotes/create.html:255 app/templates/quotes/edit.html:341 -msgid "These terms will be visible to the client" -msgstr "Estes termos serão visíveis para o cliente" - -#: app/templates/quotes/edit.html:4 app/templates/quotes/view.html:19 -msgid "Edit Quote" -msgstr "Editar Citação" - -#: app/templates/quotes/edit.html:41 -msgid "Client cannot be changed" -msgstr "O cliente não pode ser alterado" - -#: app/templates/quotes/edit.html:351 -msgid "Update Quote" -msgstr "Atualizar citação" - -#: app/templates/quotes/list.html:21 -msgid "Total Quotes" -msgstr "Total de Citações" - -#: app/templates/quotes/list.html:29 -msgid "Acceptance Rate" -msgstr "Taxa de aceitação" - -#: app/templates/quotes/list.html:33 -msgid "Avg Quote Value" -msgstr "Valor de Citação Avg" - -#: app/templates/quotes/list.html:40 -msgid "Quotes by Status" -msgstr "Citações por Estado" - -#: app/templates/quotes/list.html:51 -msgid "Top Clients by Quotes" -msgstr "Principais Clientes por Citações" - -#: app/templates/quotes/list.html:66 -msgid "Filter Quotes" -msgstr "Filtrar Citações" - -#: app/templates/quotes/list.html:75 -msgid "Search quotes..." -msgstr "Procurar aspas..." - -#: app/templates/quotes/list.html:366 -msgid "Are you sure you want to duplicate" -msgstr "Tem a certeza de que deseja duplicar" - -#: app/templates/quotes/list.html:366 app/templates/quotes/list.html:368 -msgid "quote(s)?" -msgstr "Aspas?" - -#: app/templates/quotes/list.html:367 -msgid "Are you sure you want to mark" -msgstr "Tens a certeza que queres marcar" - -#: app/templates/quotes/list.html:367 -msgid "quote(s) as sent?" -msgstr "Aspas como enviadas?" - -#: app/templates/quotes/pdf_default.html:54 -#: app/utils/pdf_generator_fallback.py:531 -msgid "QUOTE" -msgstr "QUOTE" - -#: app/templates/quotes/pdf_default.html:56 -msgid "Quote #" -msgstr "Citação #" - -#: app/templates/quotes/pdf_default.html:68 -msgid "Quote For" -msgstr "Citação Para" - -#: app/templates/quotes/pdf_default.html:134 -msgid "Subtotal After Discount:" -msgstr "Subtotal Após Desconto:" - -#: app/templates/quotes/pdf_default.html:156 -#: app/utils/pdf_generator_fallback.py:647 -msgid "Description:" -msgstr "Descrição:" - -#: app/templates/quotes/view.html:149 -msgid "Subtotal After Discount" -msgstr "Subtotal Após Desconto" - -#: app/templates/quotes/view.html:198 -msgid "Approval not yet requested" -msgstr "Homologação ainda não solicitada" - -#: app/templates/quotes/view.html:206 -msgid "Pending approval" -msgstr "Aprovação na pendência" - -#: app/templates/quotes/view.html:222 -msgid "Rejected by" -msgstr "Rejeitado por" - -#: app/templates/quotes/view.html:233 -msgid "Request Approval Again" -msgstr "Solicitar aprovação novamente" - -#: app/templates/quotes/view.html:243 -msgid "Send Quote" -msgstr "Enviar Citação" - -#: app/templates/quotes/view.html:252 -msgid "Are you sure you want to reject this quote?" -msgstr "Tem certeza de que deseja rejeitar esta citação?" - -#: app/templates/quotes/view.html:261 app/templates/quotes/view.html:578 -msgid "Delete Quote" -msgstr "Apagar Citação" - -#: app/templates/quotes/view.html:296 -msgid "Internal comment (not visible to client)" -msgstr "Comentário interno (não visível para o cliente)" - -#: app/templates/quotes/view.html:320 app/templates/quotes/view.html:347 -#: app/templates/quotes/view.html:380 -msgid "Internal" -msgstr "Interno" +#~ msgid "Cron format: minute hour day month weekday" +#~ msgstr "Formato Cron: minuto hora dia mês dia da semana" -#: app/templates/quotes/view.html:329 app/templates/quotes/view.html:354 -msgid "Are you sure you want to delete this comment?" -msgstr "Tem certeza de que deseja excluir este comentário?" +#~ msgid "Report Iteration (Optional)" +#~ msgstr "Iteração do relatório (Opcional)" -#: app/templates/quotes/view.html:376 -msgid "Write a reply..." -msgstr "Escreva uma resposta..." +#~ msgid "Split report by custom field value" +#~ msgstr "Dividir o relatório pelo valor do campo personalizado" -#: app/templates/quotes/view.html:395 -msgid "No comments yet. Start the conversation by adding the first comment." -msgstr "" -"Sem comentários ainda. Comece a conversa adicionando o primeiro comentário." +#~ msgid "" +#~ "The custom field name to iterate " +#~ "over (e.g., \"salesman\"). A separate " +#~ "report will be generated for each " +#~ "unique value." +#~ msgstr "" +#~ "O nome de campo personalizado para " +#~ "iterar sobre (por exemplo, \"salesman\"). " +#~ "Um relatório separado será gerado para" +#~ " cada valor único." -#: app/templates/quotes/view.html:424 -msgid "Sent At" -msgstr "Enviado em" +#~ msgid "Email distribution" +#~ msgstr "Distribuição de e- mail" -#: app/templates/quotes/view.html:430 -msgid "Accepted At" -msgstr "Aceito em" +#~ msgid "All reports to recipients below" +#~ msgstr "Todos os relatórios aos destinatários abaixo" -#: app/templates/quotes/view.html:445 -msgid "Send Quote via Email" -msgstr "Enviar Citação via E- mail" +#~ msgid "Per value: SalesmanEmailMapping table" +#~ msgstr "Por valor: SalesmanEmailMapping table" -#: app/templates/quotes/view.html:453 -msgid "Recipient Email" -msgstr "E- mail do destinatário" +#~ msgid "Per value: email from template" +#~ msgstr "Por valor: e- mail do modelo" -#: app/templates/quotes/view.html:461 -#, python-format -msgid "Quote %(quote_number)s" -msgstr "" +#~ msgid "Recipient email template" +#~ msgstr "Modelo de email do destinatário" -#: app/templates/quotes/view.html:465 -msgid "Custom Message (Optional)" -msgstr "Mensagem personalizada (Opcional)" +#~ msgid "" +#~ "Use {value} for the value (e.g. " +#~ "KF); {value}@test.de yields KF@test.de. Use" +#~ " {value_lower} for lowercase, e.g. " +#~ "{value_lower}@test.de yields kf@test.de." +#~ msgstr "" -#: app/templates/quotes/view.html:468 -msgid "Add a custom message to the email..." -msgstr "Adicionar uma mensagem personalizada ao e- mail..." +#~ msgid "Report" +#~ msgstr "Relatório" -#: app/templates/quotes/view.html:472 -msgid "Attach PDF" -msgstr "Anexar PDF" +#~ msgid "Split by" +#~ msgstr "Dividir por" -#: app/templates/quotes/view.html:542 -msgid "Approve Quote" -msgstr "Aprovar Citação" +#~ msgid "Distribution" +#~ msgstr "Distribuição" -#: app/templates/quotes/view.html:546 -msgid "Notes (Optional)" -msgstr "Notas (Opcionais)" +#~ msgid "Template" +#~ msgstr "Modelo" -#: app/templates/quotes/view.html:547 -msgid "Add approval notes..." -msgstr "Adicionar notas de aprovação..." +#~ msgid "Invalid: saved view not found" +#~ msgstr "Inválido: visão salva não encontrada" -#: app/templates/quotes/view.html:560 -msgid "Reject Quote Approval" -msgstr "Rejeitar a aprovação da cotação" +#~ msgid "Trigger report now (for testing)" +#~ msgstr "Relatório do gatilho agora (para testes)" -#: app/templates/quotes/view.html:565 -msgid "Please provide a reason for rejection..." -msgstr "Por favor, forneça uma razão para rejeição..." +#~ msgid "Fix or remove invalid schedule" +#~ msgstr "Corrigir ou remover a programação inválida" -#: app/templates/quotes/view.html:579 -msgid "" -"Are you sure you want to delete this quote? This action cannot be undone." -msgstr "" -"Tem a certeza de que deseja apagar esta citação? Esta acção não pode ser " -"desfeita." - -#: app/templates/recurring_invoices/create.html:120 -#: app/templates/recurring_invoices/list.html:15 -msgid "Create Recurring Invoice" -msgstr "Criar Fatura Recorrente" - -#: app/templates/recurring_invoices/edit.html:111 -msgid "Update Recurring Invoice" -msgstr "Actualizar a Fatura Recorrente" - -#: app/templates/recurring_invoices/list.html:12 -msgid "Automate invoice generation for subscription-based billing" -msgstr "Geração automática de faturas para faturamento baseado em assinatura" - -#: app/templates/recurring_invoices/list.html:26 -#: app/templates/recurring_invoices/list.html:44 -#: app/templates/recurring_tasks/form.html:58 -#: app/templates/recurring_tasks/list.html:32 -#: app/templates/recurring_tasks/list.html:56 -#: app/templates/reports/index.html:483 -#: app/templates/reports/schedule_form.html:44 -#: app/templates/reports/scheduled.html:28 -#: app/templates/reports/scheduled.html:58 -msgid "Frequency" -msgstr "Frequência" - -#: app/templates/recurring_invoices/list.html:27 -#: app/templates/recurring_invoices/list.html:49 -#: app/templates/recurring_tasks/list.html:33 -#: app/templates/recurring_tasks/list.html:64 -#: app/templates/reports/scheduled.html:29 -#: app/templates/reports/scheduled.html:61 -msgid "Next Run" -msgstr "Próxima Execução" - -#: app/templates/recurring_invoices/view.html:17 -msgid "Generate Now" -msgstr "Gerar Agora" - -#: app/templates/recurring_invoices/view.html:22 -#: app/templates/time_entry_templates/view.html:24 -msgid "Template Details" -msgstr "Detalhes do Modelo" - -#: app/templates/recurring_invoices/view.html:53 -msgid "Invoice Settings" -msgstr "Configuração da Fatura" - -#: app/templates/recurring_invoices/view.html:92 -msgid "Recently Generated Invoices" -msgstr "Faturas Recentemente Geradas" - -#: app/templates/recurring_tasks/form.html:4 -msgid "Recurring Task" -msgstr "Tarefa recorrente" - -#: app/templates/recurring_tasks/form.html:8 -#: app/templates/recurring_tasks/list.html:4 -#: app/templates/recurring_tasks/list.html:8 -#: app/templates/recurring_tasks/list.html:13 -msgid "Recurring Tasks" -msgstr "Tarefas Recorrentes" - -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -#: app/templates/recurring_tasks/list.html:20 -msgid "Create Recurring Task" -msgstr "Criar uma Tarefa Recorrente" - -#: app/templates/recurring_tasks/form.html:9 -#: app/templates/recurring_tasks/form.html:14 -msgid "Edit Recurring Task" -msgstr "Editar a Tarefa Recorrente" - -#: app/templates/recurring_tasks/form.html:15 -msgid "Set up automated task creation" -msgstr "Configurar a criação automatizada de tarefas" - -#: app/templates/recurring_tasks/form.html:29 -msgid "Task Name Template" -msgstr "Modelo de Nome da Tarefa" - -#: app/templates/recurring_tasks/form.html:30 -msgid "e.g., Weekly Team Meeting" -msgstr "Por exemplo, Reunião de Equipa Semanal" - -#: app/templates/recurring_tasks/form.html:31 -msgid "This will be used as the base name for created tasks" -msgstr "Isto será usado como o nome de base para tarefas criadas" - -#: app/templates/recurring_tasks/form.html:55 -msgid "Schedule" -msgstr "Agendar" - -#: app/templates/recurring_tasks/form.html:62 -#: app/templates/reports/index.html:487 -#: app/templates/reports/schedule_form.html:49 -msgid "Monthly" -msgstr "Mensal" - -#: app/templates/recurring_tasks/form.html:63 -msgid "Yearly" -msgstr "Anual" - -#: app/templates/recurring_tasks/form.html:68 -msgid "Interval" -msgstr "Intervalo" - -#: app/templates/recurring_tasks/form.html:70 -msgid "Repeat every N periods (e.g., every 2 weeks)" -msgstr "Repetir cada período N (por exemplo, de 2 em 2 semanas)" - -#: app/templates/recurring_tasks/form.html:74 -msgid "Next Run Date" -msgstr "Próxima Data de Execução" - -#: app/templates/recurring_tasks/form.html:81 -msgid "Optional: Stop creating tasks after this date" -msgstr "Opcional: Pare de criar tarefas após esta data" - -#: app/templates/recurring_tasks/form.html:88 -msgid "Task Settings" -msgstr "Configuração da Tarefa" - -#: app/templates/recurring_tasks/form.html:106 -#: app/templates/tasks/create.html:106 app/templates/tasks/edit.html:114 -msgid "Assign To" -msgstr "Atribuir a" - -#: app/templates/recurring_tasks/form.html:120 -msgid "Auto-assign to creator" -msgstr "Atribuir automaticamente ao criador" - -#: app/templates/recurring_tasks/list.html:14 -msgid "Automated task creation templates" -msgstr "Modelos automatizados de criação de tarefas" - -#: app/templates/recurring_tasks/list.html:68 -#: app/templates/reports/scheduled.html:65 -msgid "Not scheduled" -msgstr "Não agendado" - -#: app/templates/recurring_tasks/list.html:84 -msgid "Are you sure you want to delete this recurring task?" -msgstr "Tem a certeza de que deseja apagar esta tarefa recorrente?" - -#: app/templates/recurring_tasks/list.html:101 -msgid "No recurring tasks" -msgstr "Sem tarefas recorrentes" - -#: app/templates/recurring_tasks/list.html:102 -msgid "" -"Create recurring task templates to automatically generate tasks on a " -"schedule." -msgstr "" -"Crie modelos de tarefas recorrentes para gerar automaticamente tarefas em um" -" cronograma." - -#: app/templates/reports/builder.html:4 -#: app/templates/reports/custom_view.html:49 -#: app/templates/reports/custom_view.html:97 -msgid "Edit Report" -msgstr "Editar relatório" - -#: app/templates/reports/builder.html:4 -msgid "Custom Report Builder" -msgstr "Construtor de Relatório Personalizado" - -#: app/templates/reports/builder.html:26 -msgid "Unpaid time entries" -msgstr "Entradas de tempo não pagas" - -#: app/templates/reports/builder.html:28 -msgid "Time entries, unpaid only, last 30 days" -msgstr "Entradas de tempo, não remuneradas apenas, duram 30 dias" - -#: app/templates/reports/builder.html:29 -msgid "Data Sources" -msgstr "Fontes de Dados" - -#: app/templates/reports/builder.html:38 -msgid "Components" -msgstr "Componentes" - -#: app/templates/reports/builder.html:40 -msgid "Add table to report" -msgstr "Adicionar tabela ao relatório" - -#: app/templates/reports/builder.html:41 -#: app/templates/reports/builder.html:407 -msgid "Table" -msgstr "Quadro" - -#: app/templates/reports/builder.html:43 -msgid "Add chart to report" -msgstr "Adicionar gráfico ao relatório" - -#: app/templates/reports/builder.html:44 -#: app/templates/reports/builder.html:408 -#: app/templates/reports/custom_view.html:77 -msgid "Chart" -msgstr "Gráfico" - -#: app/templates/reports/builder.html:46 -msgid "Add doughnut chart to report" -msgstr "Adicionar gráfico de donuts para relatar" - -#: app/templates/reports/builder.html:47 -#: app/templates/reports/builder.html:409 -msgid "Doughnut Chart" -msgstr "Gráfico de Donuts" - -#: app/templates/reports/builder.html:49 -msgid "Add bar chart to report" -msgstr "Adicionar um gráfico de barras ao relatório" - -#: app/templates/reports/builder.html:50 -#: app/templates/reports/builder.html:410 -msgid "Bar Chart" -msgstr "Gráfico de Barras" - -#: app/templates/reports/builder.html:52 -msgid "Add summary to report" -msgstr "Adicionar um resumo ao relatório" - -#: app/templates/reports/builder.html:63 -msgid "Report Canvas" -msgstr "Reportar a Tela" - -#: app/templates/reports/builder.html:74 -msgid "Report canvas" -msgstr "Tela de relatório" - -#: app/templates/reports/builder.html:76 -#: app/templates/reports/builder.html:249 -#: app/templates/reports/builder.html:400 -#: app/templates/reports/builder.html:459 -msgid "Drag data sources and components here to build your report" -msgstr "" -"Arraste aqui as fontes de dados e componentes para criar o seu relatório" +#~ msgid "No Scheduled Reports" +#~ msgstr "Nenhum relatório agendado" -#: app/templates/reports/builder.html:103 -msgid "Advanced Filters" -msgstr "Filtros Avançados" +#~ msgid "Create scheduled reports to automatically receive reports via email." +#~ msgstr "" +#~ "Crie relatórios agendados para receber " +#~ "automaticamente relatórios via e-mail." -#: app/templates/reports/builder.html:111 -msgid "Unpaid Hours Only" -msgstr "Apenas Horas não pagas" +#~ msgid "Report triggered successfully!" +#~ msgstr "Relatório disparado com sucesso!" -#: app/templates/reports/builder.html:115 -msgid "Unpaid = billable, not yet on any invoice." -msgstr "Não pago = faturado, ainda não em nenhuma fatura." +#~ msgid "Report sent to recipients." +#~ msgstr "Relatório enviado aos destinatários." -#: app/templates/reports/builder.html:124 -msgid "Custom Field" -msgstr "Campo Personalizado" +#~ msgid "Error triggering report:" +#~ msgstr "Erro ao activar o relatório:" -#: app/templates/reports/builder.html:127 -msgid "No Filter" -msgstr "Sem Filtro" +#~ msgid "Error triggering report. Please check the console for details." +#~ msgstr "" +#~ "Erro ao activar o relatório. Por " +#~ "favor, verifique o console para obter" +#~ " detalhes." -#: app/templates/reports/builder.html:135 -msgid "Field Value" -msgstr "Valor do Campo" +#~ msgid "Time by project (last 30 days)" +#~ msgstr "Tempo por projecto (últimos 30 dias)" -#: app/templates/reports/builder.html:138 -msgid "e.g., MM, PB" -msgstr "Por exemplo, MM, PB" +#~ msgid "Time distribution by project" +#~ msgstr "Distribuição do tempo por projecto" -#: app/templates/reports/builder.html:140 -msgid "Enter the value to filter by (e.g., salesman initial)" -msgstr "Digite o valor a filtrar por (por exemplo, inicial do vendedor)" +#~ msgid "No project data for the last 30 days." +#~ msgstr "Nenhum dado do projeto nos últimos 30 dias." -#: app/templates/reports/builder.html:154 -msgid "Report Preview" -msgstr "Antevisão do Relatório" +#~ msgid "Daily trend (last 14 days)" +#~ msgstr "Tendência diária (últimos 14 dias)" -#: app/templates/reports/builder.html:162 -msgid "Loading preview..." -msgstr "A carregar a antevisão..." +#~ msgid "Daily hours trend" +#~ msgstr "Tendência das horas diárias" -#: app/templates/reports/builder.html:178 -msgid "Save Report" -msgstr "Gravar o Relatório" +#~ msgid "No trend data." +#~ msgstr "Sem dados de tendência." -#: app/templates/reports/builder.html:181 -msgid "Report Name" -msgstr "Nome do relatório" +#~ msgid "Top Projects (Last 30 Days)" +#~ msgstr "Principais Projetos (Últimos 30 Dias)" -#: app/templates/reports/builder.html:182 -msgid "My Custom Report" -msgstr "Meu Relatório Personalizado" +#~ msgid "No tasks with logged time for the selected period." +#~ msgstr "Nenhuma tarefa com o tempo registrado para o período selecionado." -#: app/templates/reports/builder.html:187 -msgid "Private" -msgstr "Privado" +#~ msgid "Try a different date range or log time on tasks." +#~ msgstr "Tente um intervalo de datas ou tempo de registro diferente nas tarefas." -#: app/templates/reports/builder.html:188 -msgid "Team" -msgstr "Equipa" +#~ msgid "All Clients" +#~ msgstr "Todos os Clientes" -#: app/templates/reports/builder.html:199 -#: app/templates/reports/saved_views_list.html:47 -msgid "Iterative Report Generation" -msgstr "Geração de Relatórios Iterativos" +#~ msgid "All Tasks" +#~ msgstr "Todas as Tarefas" -#: app/templates/reports/builder.html:203 -msgid "" -"Generate one report per custom field value (e.g., one report per salesman)" -msgstr "" -"Gerar um relatório por valor de campo personalizado (por exemplo, um " -"relatório por vendedor)" +#~ msgid "No time entries found for the selected filters." +#~ msgstr "Não foram encontrados itens de tempo para os filtros selecionados." -#: app/templates/reports/builder.html:206 -#: app/templates/reports/schedule_form.html:78 -msgid "Custom Field Name" -msgstr "Nome do Campo Personalizado" +#~ msgid "Total Unpaid Hours" +#~ msgstr "Total de horas não pagas" -#: app/templates/reports/builder.html:208 -msgid "Select Field" -msgstr "Selecionar campo" +#~ msgid "Estimated Amount" +#~ msgstr "Montante estimado" -#: app/templates/reports/builder.html:214 -msgid "Select the custom field to iterate over (e.g., \"salesman\")" -msgstr "" -"Selecione o campo personalizado para iterar sobre (por exemplo, " -"\"salesman\")" +#~ msgid "Clients with Unpaid Hours" +#~ msgstr "Clientes com horas não pagas" -#: app/templates/reports/builder.html:467 -#: app/templates/reports/builder.html:689 -msgid "Please select a data source first" -msgstr "Seleccione primeiro uma fonte de dados" +#~ msgid "Unpaid Hours by Client" +#~ msgstr "Horas não pagas por Cliente" -#: app/templates/reports/builder.html:559 -msgid "Failed to generate preview" -msgstr "Não foi possível gerar a antevisão" +#~ msgid "No unpaid hours found for the selected period." +#~ msgstr "Não foram encontradas horas não remuneradas para o período selecionado." -#: app/templates/reports/builder.html:567 -msgid "Unknown error occurred" -msgstr "Ocorreu um erro desconhecido" +#~ msgid "Export entries (Excel)" +#~ msgstr "Exportar entradas (Excel)" -#: app/templates/reports/builder.html:568 -msgid "Error loading preview" -msgstr "Erro ao carregar a antevisão" +#~ msgid "Select columns:" +#~ msgstr "Selecionar colunas:" -#: app/templates/reports/builder.html:619 -msgid "No data found for the selected filters" -msgstr "Nenhum dado encontrado para os filtros selecionados" +#~ msgid "Duration (formatted)" +#~ msgstr "Duração (formatada)" -#: app/templates/reports/builder.html:681 -msgid "Please enter a report name" -msgstr "Digite um nome de relatório" +#~ msgid "Try a different date range or ensure time has been logged." +#~ msgstr "" +#~ "Tente um intervalo de datas diferente" +#~ " ou certifique-se de que o " +#~ "tempo foi registrado." -#: app/templates/reports/builder.html:768 -msgid "Report created successfully!" -msgstr "Relatório criado com sucesso!" +#~ msgid "About Overtime Tracking" +#~ msgstr "Sobre o Rastreamento Overtime" -#: app/templates/reports/builder.html:769 -msgid "Report updated successfully!" -msgstr "Relatório actualizado com sucesso!" +#~ msgid "This week's time summary and top projects" +#~ msgstr "Resumo de tempo desta semana e projetos de topo" -#: app/templates/reports/builder.html:790 -msgid "Failed to save report" -msgstr "Falha ao salvar o relatório" +#~ msgid "Back to Reports" +#~ msgstr "Voltar aos Relatórios" -#: app/templates/reports/builder.html:804 -msgid "Error saving report" -msgstr "Erro ao salvar o relatório" +#~ msgid "%(count)s time entries logged this week." +#~ msgstr "" -#: app/templates/reports/custom_view.html:4 -msgid "Custom Report" -msgstr "Relatório Personalizado" +#~ msgid "Top projects this week" +#~ msgstr "Principais projetos desta semana" -#: app/templates/reports/custom_view.html:26 -msgid "Data Table" -msgstr "Tabela de dados" +#~ msgid "No time logged this week yet." +#~ msgstr "Ainda não há tempo esta semana." -#: app/templates/reports/custom_view.html:52 -msgid "No data found" -msgstr "Nenhum dado encontrado" +#~ msgid "Apply filter" +#~ msgstr "Aplicar o filtro" -#: app/templates/reports/custom_view.html:53 -msgid "" -"This report has no data matching the current filters. Try adjusting your " -"date range or filters." -msgstr "" -"Este relatório não tem dados correspondentes aos filtros atuais. Tente " -"ajustar seu intervalo de datas ou filtros." +#~ msgid "Are you sure you want to delete this filter?" +#~ msgstr "Tem a certeza de que deseja apagar este filtro?" -#: app/templates/reports/custom_view.html:72 -msgid "No summary data available." -msgstr "Não existem dados sumários disponíveis." +#~ msgid "Delete Filter" +#~ msgstr "Apagar o Filtro" -#: app/templates/reports/custom_view.html:81 -msgid "No data available for chart." -msgstr "Nenhum dado disponível para o gráfico." +#~ msgid "Go to Reports" +#~ msgstr "Ir para os Relatórios" -#: app/templates/reports/custom_view.html:92 -msgid "No components configured" -msgstr "Nenhum componente configurado" +#~ msgid "No saved filters yet" +#~ msgstr "Nenhum filtro salvo ainda" -#: app/templates/reports/custom_view.html:94 -msgid "" -"This report has no components configured. Please edit the report to add " -"components." -msgstr "" -"Este relatório não tem componentes configurados. Por favor, edite o " -"relatório para adicionar componentes." +#~ msgid "Save filters from Reports or Tasks pages for quick access." +#~ msgstr "Salve filtros de páginas de relatórios ou tarefas para acesso rápido." -#: app/templates/reports/export_form.html:9 -msgid "Export Time Entries" -msgstr "Exportar entradas de tempo" +#~ msgid "Customize Shortcuts" +#~ msgstr "Personalizar os Atalhos" -#: app/templates/reports/export_form.html:24 -msgid "" -"Use the filters below to customize your export. Choose CSV or Excel format. " -"All filters are optional - leave blank to include all entries within the " -"date range." -msgstr "" -"Use os filtros abaixo para personalizar sua exportação. Escolha o formato " -"CSV ou Excel. Todos os filtros são opcionais - deixe em branco para incluir " -"todas as entradas dentro do intervalo de datas." +#~ msgid "Search shortcuts..." +#~ msgstr "Procurar atalhos..." -#: app/templates/reports/export_form.html:36 -#: app/templates/reports/export_form.html:38 -msgid "Export format" -msgstr "Formato de exportação" +#~ msgid "Save changes" +#~ msgstr "Salvar alterações" -#: app/templates/reports/export_form.html:175 -msgid "e.g., development, meeting, urgent" -msgstr "Por exemplo, desenvolvimento, reunião, urgência" +#~ msgid "Press keys..." +#~ msgstr "Pressione as teclas..." -#: app/templates/reports/export_form.html:191 -msgid "Reset Filters" -msgstr "Reiniciar os Filtros" +#~ msgid "Click then press a key combination" +#~ msgstr "Clique e pressione uma combinação de teclas" -#: app/templates/reports/export_form.html:209 -msgid "CSV / Excel" -msgstr "CSV / Excel" +#~ msgid "Click to record" +#~ msgstr "Clique para gravar" -#: app/templates/reports/export_form.html:217 -msgid "" -"The file will be downloaded with a filename indicating the date range and " -"applied filters." -msgstr "" -"O arquivo será baixado com um nome de arquivo indicando o intervalo de data " -"e filtros aplicados." +#~ msgid "Revert" +#~ msgstr "Reverter" -#: app/templates/reports/export_form.html:341 -msgid "Please select both start and end dates." -msgstr "Seleccione as datas de início e de fim." +#~ msgid "Conflict: the same key is assigned to multiple actions." +#~ msgstr "Conflito: a mesma chave é atribuída a várias ações." -#: app/templates/reports/export_form.html:347 -msgid "Start date must be before or equal to end date." -msgstr "A data de início deve ser anterior ou igual à data de fim." +#~ msgid "Failed to save" +#~ msgstr "Falha ao salvar" -#: app/templates/reports/index.html:13 -msgid "View comprehensive reports and analytics for your time tracking data" -msgstr "" -"Veja relatórios abrangentes e análises para seus dados de rastreamento de " -"tempo" +#~ msgid "Shortcuts saved." +#~ msgstr "Atalhos salvos." -#: app/templates/reports/index.html:20 -msgid "" -"Support development or get a supporter license — the app stays free for " -"everyone." -msgstr "" -"Suporte ao desenvolvimento ou obtenha uma licença de suporte — o aplicativo " -"fica livre para todos." +#~ msgid "Failed to save shortcuts." +#~ msgstr "Não foi possível gravar os atalhos." -#: app/templates/reports/index.html:46 -msgid "Payments Received" -msgstr "Pagamentos Recebidos" +#~ msgid "" +#~ "This will reset all keyboard shortcuts" +#~ " to their default values. Continue?" +#~ msgstr "" +#~ "Isto irá reiniciar todos os atalhos " +#~ "de teclado para os seus valores " +#~ "predefinidos. Continuar?" -#: app/templates/reports/index.html:62 -msgid "Net Received" -msgstr "Rede Recebida" +#~ msgid "Reset to Defaults" +#~ msgstr "Reiniciar para Predefinições" -#: app/templates/reports/index.html:63 -msgid "After fees" -msgstr "Após as taxas" +#~ msgid "Reset all shortcuts to defaults?" +#~ msgstr "Reinicia todos os atalhos como predefinidos?" -#: app/templates/reports/index.html:69 -msgid "Date Range & Comparison" -msgstr "Intervalo de Datas & Comparação" - -#: app/templates/reports/index.html:73 -msgid "Quick Date Ranges" -msgstr "Intervalos de Datas Rápidos" - -#: app/templates/reports/index.html:79 -msgid "This Week" -msgstr "Esta semana" - -#: app/templates/reports/index.html:82 -msgid "This Month" -msgstr "Este mês" - -#: app/templates/reports/index.html:85 -msgid "This Year" -msgstr "Este ano" - -#: app/templates/reports/index.html:89 -msgid "Custom Range" -msgstr "Intervalo Personalizado" - -#: app/templates/reports/index.html:102 -msgid "Comparison View" -msgstr "Vista de Comparação" - -#: app/templates/reports/index.html:107 -#: app/templates/reports/week_in_review.html:7 -#: app/templates/reports/week_in_review.html:12 -msgid "Week in Review" -msgstr "Semana de Revisão" - -#: app/templates/reports/index.html:108 -msgid "This week's hours, top projects, billable vs non-billable" -msgstr "Horas desta semana, projetos de topo, faturabilidade vs não-bilável" - -#: app/templates/reports/index.html:116 -msgid "This Month vs Last Month" -msgstr "Este mês contra o último mês" - -#: app/templates/reports/index.html:117 -msgid "Compare current month with previous month" -msgstr "Comparar o mês atual com o mês anterior" - -#: app/templates/reports/index.html:125 -msgid "This Year vs Last Year" -msgstr "Este ano contra o ano passado" - -#: app/templates/reports/index.html:126 -msgid "Compare current year with previous year" -msgstr "Comparar o ano em curso com o ano anterior" - -#: app/templates/reports/index.html:137 -msgid "Comparison Results" -msgstr "Resultados da comparação" - -#: app/templates/reports/index.html:146 -msgid "Export Reports" -msgstr "Relatórios de Exportação" - -#: app/templates/reports/index.html:149 -msgid "Export Format" -msgstr "Formato de Exportação" - -#: app/templates/reports/index.html:155 -msgid "Export Report" -msgstr "Relatório de Exportação" - -#: app/templates/reports/index.html:162 -msgid "Manage Scheduled Reports" -msgstr "Gerenciar relatórios agendados" - -#: app/templates/reports/index.html:169 -msgid "CSV Export" -msgstr "Exportação de CSV" - -#: app/templates/reports/index.html:172 -msgid "Excel Export" -msgstr "Exportar Excel" - -#: app/templates/reports/index.html:180 -msgid "Report Types" -msgstr "Tipos de relatório" - -#: app/templates/reports/index.html:183 -#: app/templates/reports/project_report.html:5 -msgid "Project Report" -msgstr "Relatório do Projeto" - -#: app/templates/reports/index.html:186 -#: app/templates/reports/user_report.html:5 -msgid "User Report" -msgstr "Relatório do Usuário" - -#: app/templates/reports/index.html:189 app/templates/reports/summary.html:6 -msgid "Summary Report" -msgstr "Relatório de síntese" - -#: app/templates/reports/index.html:192 -#: app/templates/reports/task_report.html:5 -msgid "Task Report" -msgstr "Relatório de tarefas" - -#: app/templates/reports/index.html:195 -#: app/templates/reports/time_entries_report.html:5 -msgid "Time Entries Report" -msgstr "Relatório de Menções de Tempo" - -#: app/templates/reports/index.html:198 -#: app/templates/reports/unpaid_hours_report.html:6 -msgid "Unpaid Hours Report" -msgstr "Relatório de horas não pagas" - -#: app/templates/reports/index.html:207 -msgid "Report Management" -msgstr "Gestão de Relatórios" - -#: app/templates/reports/index.html:210 -#: app/templates/reports/saved_views_list.html:4 -msgid "Saved Report Views" -msgstr "Áreas de Relatório Gravadas" - -#: app/templates/reports/index.html:211 -msgid "View and manage your saved report configurations" -msgstr "Visualize e gerencie suas configurações de relatório salvas" - -#: app/templates/reports/index.html:215 -msgid "Manage automated report delivery via email" -msgstr "Gerenciar entrega automática de relatórios via e-mail" - -#: app/templates/reports/index.html:244 -msgid "No recent entries." -msgstr "Sem entradas recentes." - -#: app/templates/reports/index.html:269 app/templates/reports/index.html:435 -msgid "No scheduled reports yet." -msgstr "Ainda não há relatórios agendados." - -#: app/templates/reports/index.html:273 -msgid "Add Scheduled Report" -msgstr "Adicionar relatório agendado" - -#: app/templates/reports/index.html:366 -msgid "Please set a date range" -msgstr "Por favor, defina um intervalo de datas" - -#: app/templates/reports/index.html:451 -msgid "" -"You need to create a saved report view first. Please create one from the " -"reports page." -msgstr "" -"Você precisa criar uma visão de relatório salva primeiro. Crie uma na página" -" de relatórios." - -#: app/templates/reports/index.html:463 -#: app/templates/reports/schedule_form.html:3 -#: app/templates/reports/schedule_form.html:8 -#: app/templates/reports/scheduled.html:116 -msgid "Schedule Report" -msgstr "Relatório de Agenda" - -#: app/templates/reports/index.html:470 -#: app/templates/reports/schedule_form.html:20 -msgid "Report View" -msgstr "Área de Relatórios" - -#: app/templates/reports/index.html:472 -msgid "Select a report view..." -msgstr "Selecionar uma visão de relatório..." - -#: app/templates/reports/index.html:477 -#: app/templates/reports/scheduled.html:27 -#: app/templates/reports/scheduled.html:50 -msgid "Recipients" -msgstr "Destinatários" - -#: app/templates/reports/index.html:480 -msgid "Comma-separated email addresses" -msgstr "Endereços de e- mail separados por vírgulas" - -#: app/templates/reports/index.html:495 -#: app/templates/reports/schedule_form.html:101 -msgid "Create Schedule" -msgstr "Criar agendamento" - -#: app/templates/reports/index.html:506 -msgid "Failed to load report views" -msgstr "Falha ao carregar as visões do relatório" - -#: app/templates/reports/index.html:543 -msgid "Scheduled report created successfully" -msgstr "Relatório agendado criado com sucesso" - -#: app/templates/reports/index.html:546 app/templates/reports/index.html:553 -msgid "Failed to create scheduled report" -msgstr "Falha ao criar o relatório agendado" - -#: app/templates/reports/index.html:571 app/templates/reports/index.html:576 -msgid "Failed to update schedule" -msgstr "Falha ao atualizar o agendamento" - -#: app/templates/reports/index.html:581 -#: app/templates/reports/scheduled.html:98 -msgid "Are you sure you want to delete this scheduled report?" -msgstr "Tem a certeza de que deseja apagar este relatório agendado?" - -#: app/templates/reports/index.html:596 -msgid "Scheduled report deleted successfully" -msgstr "Relatório agendado excluído com sucesso" - -#: app/templates/reports/index.html:599 app/templates/reports/index.html:604 -msgid "Failed to delete scheduled report" -msgstr "Não foi possível apagar o relatório agendado" - -#: app/templates/reports/iterative_view.html:4 -msgid "Iterative Report" -msgstr "Relatório Iterativo" - -#: app/templates/reports/iterative_view.html:17 -#, python-format -msgid "Iterative Report - One report per %(field_name)s value" -msgstr "" +#~ msgid "Failed to reset" +#~ msgstr "Falha ao reiniciar" -#: app/templates/reports/iterative_view.html:74 -msgid "Summary by Client" -msgstr "Resumo por Cliente" +#~ msgid "Shortcuts reset to defaults." +#~ msgstr "Atalhos repor para padrões." -#: app/templates/reports/iterative_view.html:90 -#, python-format -msgid "No data found for this %(field_name)s value" -msgstr "" +#~ msgid "Failed to reset shortcuts." +#~ msgstr "Não foi possível reiniciar os atalhos." -#: app/templates/reports/iterative_view.html:99 -#, python-format -msgid "No unique values found for custom field \"%(field_name)s\"" -msgstr "" +#~ msgid "Failed to load shortcuts." +#~ msgstr "Não foi possível carregar os atalhos." -#: app/templates/reports/project_report.html:85 -#: app/templates/reports/user_report.html:157 -msgid "No data for the selected period." -msgstr "Nenhum dado para o período selecionado." +#~ msgid "Welcome" +#~ msgstr "Boas-vindas" -#: app/templates/reports/project_report.html:86 -msgid "Try a different date range or ensure time has been logged on projects." -msgstr "" -"Tente um intervalo de datas diferente ou garanta que o tempo tenha sido " -"registrado em projetos." +#~ msgid "Privacy First" +#~ msgstr "Privacy First" -#: app/templates/reports/saved_views_list.html:29 -#: app/templates/reports/saved_views_list.html:44 -msgid "Features" -msgstr "Características" +#~ msgid "Self-hosted on your server" +#~ msgstr "Auto- hospedado no seu servidor" -#: app/templates/reports/saved_views_list.html:48 -msgid "Iterative" -msgstr "Iterativo" +#~ msgid "Anonymous telemetry (opt-in)" +#~ msgstr "Telemetria anónima (opt-in)" -#: app/templates/reports/saved_views_list.html:67 -msgid "Are you sure you want to delete this report view?" -msgstr "Tem certeza de que deseja excluir esta visão de relatório?" +#~ msgid "No PII collected ever" +#~ msgstr "Nenhuma PII coletada nunca" -#: app/templates/reports/saved_views_list.html:83 -msgid "No Saved Report Views" -msgstr "Nenhuma visão de relatório salva" +#~ msgid "Open source & transparent" +#~ msgstr "Código aberto & transparente" -#: app/templates/reports/saved_views_list.html:84 -msgid "" -"Create and save report configurations to use them in scheduled reports." -msgstr "" -"Crie e salve configurações de relatórios para usá-las em relatórios " -"agendados." +#~ msgid "Step 1 of 6" +#~ msgstr "Passo 1 de 6" -#: app/templates/reports/saved_views_list.html:85 -msgid "Create Report" -msgstr "Criar relatório" +#~ msgid "Welcome to TimeTracker" +#~ msgstr "Bem- vindo ao TimeTracker" -#: app/templates/reports/schedule_form.html:9 -msgid "Set up automated email delivery for reports" -msgstr "Configurar entrega automática de e- mail para relatórios" +#~ msgid "Let's get you set up in just a moment" +#~ msgstr "Vamos preparar-te num instante." -#: app/templates/reports/schedule_form.html:11 -msgid "Back to Scheduled Reports" -msgstr "Voltar aos Relatórios Agendados" +#~ msgid "Thank you for choosing TimeTracker!" +#~ msgstr "Obrigado por escolher TimeTracker!" -#: app/templates/reports/schedule_form.html:22 -msgid "Select a saved report view..." -msgstr "Selecione uma visão de relatório salva..." +#~ msgid "Your data stays on your server, and you have complete control." +#~ msgstr "Seus dados permanecem em seu servidor, e você tem controle completo." -#: app/templates/reports/schedule_form.html:27 -msgid "Select a saved report view to schedule" -msgstr "Selecione uma visão de relatório salva para agendar" +#~ msgid "Region & time" +#~ msgstr "& Tempo da região" -#: app/templates/reports/schedule_form.html:32 -msgid "Email Recipients" -msgstr "Destinatários de Email" +#~ msgid "Set your default timezone, date and time format, and currency." +#~ msgstr "Defina seu fuso horário padrão, formato de data e hora e moeda." -#: app/templates/reports/schedule_form.html:34 -msgid "email1@example.com, email2@example.com" -msgstr "email1@example.com, email2@example.com" +#~ msgid "Timezone" +#~ msgstr "Fuso horário" -#: app/templates/reports/schedule_form.html:36 -msgid "" -"Enter one or more email addresses separated by commas. These recipients will" -" receive the scheduled report via email." -msgstr "" -"Digite um ou mais endereços de e- mail separados por vírgulas. Esses " -"destinatários receberão o relatório agendado via e-mail." +#~ msgid "Date format" +#~ msgstr "Formato da data" -#: app/templates/reports/schedule_form.html:39 -msgid "" -"When using Mapping or Template, these are used as fallback if no address is " -"found for a value." -msgstr "" -"Ao usar Mapeamento ou Modelo, estes são usados como recurso se nenhum " -"endereço for encontrado para um valor." +#~ msgid "Time format" +#~ msgstr "Formato da hora" -#: app/templates/reports/schedule_form.html:46 -msgid "Select frequency..." -msgstr "Selecionar frequência..." +#~ msgid "24-hour" +#~ msgstr "24 horas" -#: app/templates/reports/schedule_form.html:50 -msgid "Custom (Cron)" -msgstr "Personalizado (Cron)" +#~ msgid "12-hour" +#~ msgstr "12 horas" -#: app/templates/reports/schedule_form.html:57 -msgid "Use previous calendar month as date range" -msgstr "Usar o mês calendário anterior como intervalo de datas" +#~ msgid "Company details for invoices and branding." +#~ msgstr "Detalhes da empresa para faturas e branding." -#: app/templates/reports/schedule_form.html:59 -msgid "" -"For monthly runs: report will use the first and last day of the previous " -"month." -msgstr "" -"Para corridas mensais: relatório irá usar o primeiro e último dia do mês " -"anterior." +#~ msgid "Company name" +#~ msgstr "Nome da empresa" -#: app/templates/reports/schedule_form.html:63 -msgid "Cron Expression" -msgstr "Expressão do Cron" +#~ msgid "Your Company Name" +#~ msgstr "Nome da sua empresa" -#: app/templates/reports/schedule_form.html:65 -msgid "Cron format: minute hour day month weekday" -msgstr "Formato Cron: minuto hora dia mês dia da semana" +#~ msgid "Your Company Address" +#~ msgstr "Endereço da sua empresa" -#: app/templates/reports/schedule_form.html:70 -msgid "Report Iteration (Optional)" -msgstr "Iteração do relatório (Opcional)" +#~ msgid "App behavior and timer settings." +#~ msgstr "Comportamento da aplicação e configurações do temporizador." -#: app/templates/reports/schedule_form.html:74 -msgid "Split report by custom field value" -msgstr "Dividir o relatório pelo valor do campo personalizado" +#~ msgid "Allow self-registration" +#~ msgstr "Permitir o auto- registo" -#: app/templates/reports/schedule_form.html:80 -msgid "" -"The custom field name to iterate over (e.g., \"salesman\"). A separate " -"report will be generated for each unique value." -msgstr "" -"O nome de campo personalizado para iterar sobre (por exemplo, \"salesman\")." -" Um relatório separado será gerado para cada valor único." +#~ msgid "Users can create accounts from the login page" +#~ msgstr "Os usuários podem criar contas a partir da página de login" -#: app/templates/reports/schedule_form.html:83 -msgid "Email distribution" -msgstr "Distribuição de e- mail" +#~ msgid "Time rounding (minutes)" +#~ msgstr "Tempo de arredondamento (minutos)" -#: app/templates/reports/schedule_form.html:85 -msgid "All reports to recipients below" -msgstr "Todos os relatórios aos destinatários abaixo" +#~ msgid "Round time entries to the nearest N minutes." +#~ msgstr "Entradas de tempo redondas para os minutos N mais próximos." -#: app/templates/reports/schedule_form.html:86 -msgid "Per value: SalesmanEmailMapping table" -msgstr "Por valor: SalesmanEmailMapping table" +#~ msgid "Single active timer per user" +#~ msgstr "Temporizador ativo único por usuário" -#: app/templates/reports/schedule_form.html:87 -msgid "Per value: email from template" -msgstr "Por valor: e- mail do modelo" +#~ msgid "Only one running timer at a time per user" +#~ msgstr "Apenas um timer em execução de cada vez por usuário" -#: app/templates/reports/schedule_form.html:91 -msgid "Recipient email template" -msgstr "Modelo de email do destinatário" +#~ msgid "Idle timeout (minutes)" +#~ msgstr "Tempo livre (minutos)" -#: app/templates/reports/schedule_form.html:93 -#, python-brace-format -msgid "" -"Use {value} for the value (e.g. KF); {value}@test.de yields KF@test.de. Use " -"{value_lower} for lowercase, e.g. {value_lower}@test.de yields kf@test.de." -msgstr "" +#~ msgid "Pause timer after this many minutes of inactivity." +#~ msgstr "Pausar temporizador depois de tantos minutos de inatividade." -#: app/templates/reports/scheduled.html:26 -#: app/templates/reports/scheduled.html:37 -msgid "Report" -msgstr "Relatório" +#~ msgid "Configure calendar OAuth now or later in Admin → Settings." +#~ msgstr "Configure o calendário OAuth agora ou depois em Admin → Configurações." -#: app/templates/reports/scheduled.html:41 -msgid "Split by" -msgstr "Dividir por" +#~ msgid "Google Calendar OAuth" +#~ msgstr "Google Calendar OAuth" -#: app/templates/reports/scheduled.html:46 -msgid "Distribution" -msgstr "Distribuição" +#~ msgid "Client ID (optional)" +#~ msgstr "ID do cliente (opcional)" -#: app/templates/reports/scheduled.html:54 -msgid "Template" -msgstr "Modelo" +#~ msgid "Client Secret (optional)" +#~ msgstr "Segredo do Cliente (opcional)" -#: app/templates/reports/scheduled.html:70 -msgid "Invalid: saved view not found" -msgstr "Inválido: visão salva não encontrada" +#~ msgid "Get these from" +#~ msgstr "Tira-os de" -#: app/templates/reports/scheduled.html:86 -msgid "Trigger report now (for testing)" -msgstr "Relatório do gatilho agora (para testes)" +#~ msgid "Google Cloud Console" +#~ msgstr "Console do Google Cloud" -#: app/templates/reports/scheduled.html:93 -msgid "Fix or remove invalid schedule" -msgstr "Corrigir ou remover a programação inválida" +#~ msgid "How to get Google Calendar OAuth credentials?" +#~ msgstr "Como obter credenciais Google Calendar OAuth?" -#: app/templates/reports/scheduled.html:114 -msgid "No Scheduled Reports" -msgstr "Nenhum relatório agendado" +#~ msgid "Go to" +#~ msgstr "Ir para" -#: app/templates/reports/scheduled.html:115 -msgid "Create scheduled reports to automatically receive reports via email." -msgstr "" -"Crie relatórios agendados para receber automaticamente relatórios via " -"e-mail." +#~ msgid "Create a new project or select an existing one" +#~ msgstr "Criar um novo projeto ou selecionar um existente" -#: app/templates/reports/scheduled.html:152 -msgid "Report triggered successfully!" -msgstr "Relatório disparado com sucesso!" +#~ msgid "Enable the Google Calendar API" +#~ msgstr "Habilitar a API do Google Calendar" -#: app/templates/reports/scheduled.html:153 -msgid "Report sent to recipients." -msgstr "Relatório enviado aos destinatários." +#~ msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" +#~ msgstr "Ir para Credenciais → Criar Credenciais → OAuth 2.0 ID do cliente" -#: app/templates/reports/scheduled.html:156 -msgid "Error triggering report:" -msgstr "Erro ao activar o relatório:" +#~ msgid "Set application type to \"Web application\"" +#~ msgstr "Definir o tipo de aplicação para \"Aplicação Web\"" -#: app/templates/reports/scheduled.html:161 -msgid "Error triggering report. Please check the console for details." -msgstr "" -"Erro ao activar o relatório. Por favor, verifique o console para obter " -"detalhes." +#~ msgid "Add authorized redirect URI:" +#~ msgstr "Adicionar URI autorizado:" -#: app/templates/reports/summary.html:27 -msgid "Time by project (last 30 days)" -msgstr "Tempo por projecto (últimos 30 dias)" +#~ msgid "Copy the Client ID and Client Secret" +#~ msgstr "Copiar o ID do Cliente e o Segredo do Cliente" -#: app/templates/reports/summary.html:30 -msgid "Time distribution by project" -msgstr "Distribuição do tempo por projecto" +#~ msgid "You can skip this step and configure integrations later." +#~ msgstr "Você pode pular esta etapa e configurar integrações mais tarde." -#: app/templates/reports/summary.html:65 -#: app/templates/reports/summary.html:130 -msgid "No project data for the last 30 days." -msgstr "Nenhum dado do projeto nos últimos 30 dias." +#~ msgid "Privacy & finish" +#~ msgstr "& Finalização da privacidade" -#: app/templates/reports/summary.html:70 -msgid "Daily trend (last 14 days)" -msgstr "Tendência diária (últimos 14 dias)" +#~ msgid "Choose whether to help improve TimeTracker with anonymous usage data." +#~ msgstr "" +#~ "Escolha se deve ajudar a melhorar " +#~ "o TimeTracker com dados de uso " +#~ "anônimos." -#: app/templates/reports/summary.html:73 -msgid "Daily hours trend" -msgstr "Tendência das horas diárias" +#~ msgid "Enable anonymous telemetry" +#~ msgstr "Activar a telemetria anónima" -#: app/templates/reports/summary.html:108 -msgid "No trend data." -msgstr "Sem dados de tendência." +#~ msgid "Help us understand usage patterns to improve TimeTracker" +#~ msgstr "Ajude-nos a entender os padrões de uso para melhorar o TimeTracker" -#: app/templates/reports/summary.html:114 -msgid "Top Projects (Last 30 Days)" -msgstr "Principais Projetos (Últimos 30 Dias)" +#~ msgid "What data is collected?" +#~ msgstr "Que dados são recolhidos?" -#: app/templates/reports/task_report.html:102 -msgid "No tasks with logged time for the selected period." -msgstr "Nenhuma tarefa com o tempo registrado para o período selecionado." +#~ msgid "What we collect:" +#~ msgstr "O que recolhemos:" -#: app/templates/reports/task_report.html:103 -msgid "Try a different date range or log time on tasks." -msgstr "" -"Tente um intervalo de datas ou tempo de registro diferente nas tarefas." +#~ msgid "Anonymous installation fingerprint (hashed)" +#~ msgstr "Impressões digitais de instalação anónimas (hashed)" -#: app/templates/reports/time_entries_report.html:49 -msgid "All Clients" -msgstr "Todos os Clientes" +#~ msgid "Application version & platform info" +#~ msgstr "Informações da & plataforma de aplicativos" -#: app/templates/reports/time_entries_report.html:60 -#: app/templates/timer/calendar.html:69 app/templates/timer/calendar.html:569 -msgid "All Tasks" -msgstr "Todas as Tarefas" +#~ msgid "Feature usage statistics" +#~ msgstr "Estatísticas de utilização de recursos" -#: app/templates/reports/time_entries_report.html:136 -msgid "No time entries found for the selected filters." -msgstr "Não foram encontrados itens de tempo para os filtros selecionados." +#~ msgid "What we DON'T collect:" +#~ msgstr "O que não recolhemos:" -#: app/templates/reports/unpaid_hours_report.html:45 -msgid "Total Unpaid Hours" -msgstr "Total de horas não pagas" +#~ msgid "No usernames or emails" +#~ msgstr "Sem nomes de utilizador ou e- mail" -#: app/templates/reports/unpaid_hours_report.html:49 -#: app/templates/reports/unpaid_hours_report.html:75 -#: app/templates/reports/unpaid_hours_report.html:94 -msgid "Estimated Amount" -msgstr "Montante estimado" +#~ msgid "No time entry data or notes" +#~ msgstr "Sem dados ou notas de entrada de tempo" -#: app/templates/reports/unpaid_hours_report.html:53 -msgid "Clients with Unpaid Hours" -msgstr "Clientes com horas não pagas" +#~ msgid "No client or business data" +#~ msgstr "Nenhum cliente ou dados de negócios" -#: app/templates/reports/unpaid_hours_report.html:61 -msgid "Unpaid Hours by Client" -msgstr "Horas não pagas por Cliente" +#~ msgid "You can change this anytime in" +#~ msgstr "Podes mudar isto a qualquer momento." -#: app/templates/reports/unpaid_hours_report.html:151 -msgid "No unpaid hours found for the selected period." -msgstr "" -"Não foram encontradas horas não remuneradas para o período selecionado." +#~ msgid "By continuing, you agree to use TimeTracker under the" +#~ msgstr "Ao continuar, você concorda em usar o TimeTracker sob o" -#: app/templates/reports/user_report.html:69 -#: app/templates/reports/user_report.html:94 -msgid "Export entries (Excel)" -msgstr "Exportar entradas (Excel)" +#~ msgid "GPL-3.0 License" +#~ msgstr "Licença GPL-3.0" -#: app/templates/reports/user_report.html:70 -msgid "Select columns:" -msgstr "Selecionar colunas:" +#~ msgid "Complete Setup & Continue" +#~ msgstr "Completar a Configuração e Continuar" -#: app/templates/reports/user_report.html:88 -msgid "Duration (formatted)" -msgstr "Duração (formatada)" +#~ msgid "Edit Task" +#~ msgstr "Editar tarefa" -#: app/templates/reports/user_report.html:158 -msgid "Try a different date range or ensure time has been logged." -msgstr "" -"Tente um intervalo de datas diferente ou certifique-se de que o tempo foi " -"registrado." +#~ msgid "Failed to update status" +#~ msgstr "Falha ao atualizar o status" -#: app/templates/reports/user_report.html:174 -msgid "About Overtime Tracking" -msgstr "Sobre o Rastreamento Overtime" +#~ msgid "Failed to update task status" +#~ msgstr "Falha ao atualizar o status da tarefa" -#: app/templates/reports/week_in_review.html:13 -msgid "This week's time summary and top projects" -msgstr "Resumo de tempo desta semana e projetos de topo" +#~ msgid "Kanban column created" +#~ msgstr "Coluna do Kanban criada" -#: app/templates/reports/week_in_review.html:17 -msgid "Back to Reports" -msgstr "Voltar aos Relatórios" +#~ msgid "Kanban column deleted" +#~ msgstr "Coluna do Kanban excluída" -#: app/templates/reports/week_in_review.html:38 -#, python-format -msgid "%(count)s time entries logged this week." -msgstr "" +#~ msgid "Kanban columns reordered" +#~ msgstr "Colunas do Kanban reordenadas" -#: app/templates/reports/week_in_review.html:43 -msgid "Top projects this week" -msgstr "Principais projetos desta semana" +#~ msgid "Kanban column visibility changed" +#~ msgstr "A visibilidade da coluna do Kanban foi alterada" -#: app/templates/reports/week_in_review.html:54 -msgid "No time logged this week yet." -msgstr "Ainda não há tempo esta semana." +#~ msgid "Kanban columns updated" +#~ msgstr "Colunas do Kanban atualizadas" -#: app/templates/saved_filters/list.html:46 -msgid "Apply filter" -msgstr "Aplicar o filtro" +#~ msgid "Update" +#~ msgstr "Actualizar" -#: app/templates/saved_filters/list.html:51 -msgid "Are you sure you want to delete this filter?" -msgstr "Tem a certeza de que deseja apagar este filtro?" +#~ msgid "Failed to refresh kanban columns" +#~ msgstr "Falha ao atualizar as colunas do kanban" -#: app/templates/saved_filters/list.html:51 -msgid "Delete Filter" -msgstr "Apagar o Filtro" +#~ msgid "Loading task details..." +#~ msgstr "Carregando detalhes da tarefa..." -#: app/templates/saved_filters/list.html:93 -msgid "Go to Reports" -msgstr "Ir para os Relatórios" +#~ msgid "Tracked" +#~ msgstr "Rastreado" -#: app/templates/saved_filters/list.html:96 -msgid "No saved filters yet" -msgstr "Nenhum filtro salvo ainda" +#~ msgid "View Full Details" +#~ msgstr "Ver detalhes completos" -#: app/templates/saved_filters/list.html:97 -msgid "Save filters from Reports or Tasks pages for quick access." -msgstr "Salve filtros de páginas de relatórios ou tarefas para acesso rápido." +#~ msgid "Back to Tasks" +#~ msgstr "Voltar às Tarefas" -#: app/templates/settings/keyboard_shortcuts.html:227 -msgid "Customize Shortcuts" -msgstr "Personalizar os Atalhos" +#~ msgid "" +#~ "Add a new task to your project " +#~ "to break down work into manageable " +#~ "components" +#~ msgstr "" +#~ "Adicione uma nova tarefa ao seu " +#~ "projeto para quebrar o trabalho em " +#~ "componentes gerenciáveis" -#: app/templates/settings/keyboard_shortcuts.html:235 -msgid "Search shortcuts..." -msgstr "Procurar atalhos..." +#~ msgid "Enter a descriptive task name" +#~ msgstr "Indique um nome descritivo da tarefa" -#: app/templates/settings/keyboard_shortcuts.html:246 -msgid "Save changes" -msgstr "Salvar alterações" +#~ msgid "Choose a clear, descriptive name that explains what needs to be done" +#~ msgstr "Escolha um nome claro e descritivo que explique o que precisa ser feito" -#: app/templates/settings/keyboard_shortcuts.html:384 -msgid "Press keys..." -msgstr "Pressione as teclas..." +#~ msgid "" +#~ "Provide detailed information about the " +#~ "task, requirements, and any specific " +#~ "instructions..." +#~ msgstr "" +#~ "Forneça informações detalhadas sobre a " +#~ "tarefa, requisitos e quaisquer instruções " +#~ "específicas..." -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click then press a key combination" -msgstr "Clique e pressione uma combinação de teclas" +#~ msgid "" +#~ "Optional: Add context, requirements, or " +#~ "specific instructions for the task" +#~ msgstr "" +#~ "Opcional: Adicione contexto, requisitos ou " +#~ "instruções específicas para a tarefa" -#: app/templates/settings/keyboard_shortcuts.html:444 -msgid "Click to record" -msgstr "Clique para gravar" +#~ msgid "Select the project this task belongs to" +#~ msgstr "Selecione o projeto a que esta tarefa pertence" -#: app/templates/settings/keyboard_shortcuts.html:445 -msgid "Revert" -msgstr "Reverter" +#~ msgid "Initial Status" +#~ msgstr "Estado Inicial" -#: app/templates/settings/keyboard_shortcuts.html:457 -msgid "Conflict: the same key is assigned to multiple actions." -msgstr "Conflito: a mesma chave é atribuída a várias ações." +#~ msgid "Done" +#~ msgstr "Feito" -#: app/templates/settings/keyboard_shortcuts.html:473 -msgid "Failed to save" -msgstr "Falha ao salvar" +#~ msgid "Optional: Set a deadline for this task" +#~ msgstr "Opcional: Defina um prazo para esta tarefa" -#: app/templates/settings/keyboard_shortcuts.html:477 -msgid "Shortcuts saved." -msgstr "Atalhos salvos." +#~ msgid "Optional: Estimate how long this task will take" +#~ msgstr "Opcional: Estimar quanto tempo esta tarefa levará" -#: app/templates/settings/keyboard_shortcuts.html:478 -msgid "Failed to save shortcuts." -msgstr "Não foi possível gravar os atalhos." +#~ msgid "Optional: Assign this task to a team member" +#~ msgstr "Opcional: Atribuir esta tarefa a um membro da equipe" -#: app/templates/settings/keyboard_shortcuts.html:483 -msgid "" -"This will reset all keyboard shortcuts to their default values. Continue?" -msgstr "" -"Isto irá reiniciar todos os atalhos de teclado para os seus valores " -"predefinidos. Continuar?" +#~ msgid "e.g. bug, frontend, urgent" +#~ msgstr "Por exemplo, bug, frontend, urgente" -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset to Defaults" -msgstr "Reiniciar para Predefinições" +#~ msgid "Comma-separated tags for categorization" +#~ msgstr "Marcas separadas por vírgulas para categorização" -#: app/templates/settings/keyboard_shortcuts.html:484 -msgid "Reset all shortcuts to defaults?" -msgstr "Reinicia todos os atalhos como predefinidos?" +#~ msgid "" +#~ "Optional: Color for this task on " +#~ "the Gantt chart. If unset, the " +#~ "project color is used. Pick or " +#~ "enter a hex code (e.g. #3b82f6)." +#~ msgstr "" +#~ "Opcional: Cor para esta tarefa no " +#~ "gráfico de Gantt. Se desactivada, a " +#~ "cor do projecto é usada. Escolha " +#~ "ou insira um código hexadecimal (por " +#~ "exemplo, #3b82f6)." -#: app/templates/settings/keyboard_shortcuts.html:489 -msgid "Failed to reset" -msgstr "Falha ao reiniciar" +#~ msgid "Task Creation Tips" +#~ msgstr "Dicas de criação de tarefas" -#: app/templates/settings/keyboard_shortcuts.html:493 -msgid "Shortcuts reset to defaults." -msgstr "Atalhos repor para padrões." +#~ msgid "Use action verbs and be specific about what needs to be done" +#~ msgstr "Use verbos de ação e seja específico sobre o que precisa ser feito" -#: app/templates/settings/keyboard_shortcuts.html:494 -msgid "Failed to reset shortcuts." -msgstr "Não foi possível reiniciar os atalhos." +#~ msgid "Realistic Estimates" +#~ msgstr "Estimativas realistas" -#: app/templates/settings/keyboard_shortcuts.html:511 -msgid "Failed to load shortcuts." -msgstr "Não foi possível carregar os atalhos." +#~ msgid "Consider complexity and dependencies when estimating time" +#~ msgstr "Considere complexidade e dependências ao estimar o tempo" -#: app/templates/setup/initial_setup.html:6 -msgid "Welcome" -msgstr "Boas-vindas" +#~ msgid "Set Deadlines" +#~ msgstr "Definir os Prazos" -#: app/templates/setup/initial_setup.html:35 -msgid "Privacy First" -msgstr "Privacy First" +#~ msgid "Due dates help prioritize work and track progress" +#~ msgstr "Datas devidas ajudam a priorizar o trabalho e acompanhar o progresso" -#: app/templates/setup/initial_setup.html:40 -msgid "Self-hosted on your server" -msgstr "Auto- hospedado no seu servidor" +#~ msgid "Priority Matters" +#~ msgstr "Questões Prioritárias" -#: app/templates/setup/initial_setup.html:46 -msgid "Anonymous telemetry (opt-in)" -msgstr "Telemetria anónima (opt-in)" +#~ msgid "Use priority levels to help team members focus on what's most important" +#~ msgstr "" +#~ "Use níveis de prioridade para ajudar " +#~ "os membros da equipe a se " +#~ "concentrarem no que é mais importante" -#: app/templates/setup/initial_setup.html:52 -msgid "No PII collected ever" -msgstr "Nenhuma PII coletada nunca" +#~ msgid "Back to Task" +#~ msgstr "Voltar à Tarefa" -#: app/templates/setup/initial_setup.html:58 -msgid "Open source & transparent" -msgstr "Código aberto & transparente" +#~ msgid "Update task details and settings for \"%(task)s\"" +#~ msgstr "Atualizar detalhes e configurações da tarefa para \"%(task)s\"" -#: app/templates/setup/initial_setup.html:70 -msgid "Step 1 of 6" -msgstr "Passo 1 de 6" +#~ msgid "Task Information" +#~ msgstr "Informação da Tarefa" -#: app/templates/setup/initial_setup.html:85 -msgid "Welcome to TimeTracker" -msgstr "Bem- vindo ao TimeTracker" +#~ msgid "Update Task" +#~ msgstr "Atualizar tarefa" -#: app/templates/setup/initial_setup.html:86 -msgid "Let's get you set up in just a moment" -msgstr "Vamos preparar-te num instante." +#~ msgid "Estimate used" +#~ msgstr "Estimativa utilizada" -#: app/templates/setup/initial_setup.html:88 -msgid "Thank you for choosing TimeTracker!" -msgstr "Obrigado por escolher TimeTracker!" +#~ msgid "Actual" +#~ msgstr "Real" -#: app/templates/setup/initial_setup.html:90 -msgid "Your data stays on your server, and you have complete control." -msgstr "Seus dados permanecem em seu servidor, e você tem controle completo." +#~ msgid "Current Task Info" +#~ msgstr "Informação da Tarefa Actual" -#: app/templates/setup/initial_setup.html:97 -msgid "Region & time" -msgstr "& Tempo da região" +#~ msgid "Current Status" +#~ msgstr "Estado atual" -#: app/templates/setup/initial_setup.html:98 -msgid "Set your default timezone, date and time format, and currency." -msgstr "Defina seu fuso horário padrão, formato de data e hora e moeda." +#~ msgid "Current Priority" +#~ msgstr "Prioridade atual" -#: app/templates/setup/initial_setup.html:101 -#: app/templates/user/settings.html:419 -msgid "Timezone" -msgstr "Fuso horário" +#~ msgid "Currently Assigned To" +#~ msgstr "Atualmente Atribuído" -#: app/templates/setup/initial_setup.html:110 -msgid "Date format" -msgstr "Formato da data" +#~ msgid "Current Due Date" +#~ msgstr "Data de vencimento atual" -#: app/templates/setup/initial_setup.html:119 -msgid "Time format" -msgstr "Formato da hora" +#~ msgid "Current Estimate" +#~ msgstr "Estimativa Actual" -#: app/templates/setup/initial_setup.html:121 -msgid "24-hour" -msgstr "24 horas" +#~ msgid "Actual Hours" +#~ msgstr "Horas reais" -#: app/templates/setup/initial_setup.html:122 -msgid "12-hour" -msgstr "12 horas" +#~ msgid "Started" +#~ msgstr "Iniciado" -#: app/templates/setup/initial_setup.html:136 -msgid "Company details for invoices and branding." -msgstr "Detalhes da empresa para faturas e branding." +#~ msgid "Edit Tips" +#~ msgstr "Editar dicas" -#: app/templates/setup/initial_setup.html:139 -msgid "Company name" -msgstr "Nome da empresa" +#~ msgid "Status Changes" +#~ msgstr "Alterações de Estado" -#: app/templates/setup/initial_setup.html:140 -msgid "Your Company Name" -msgstr "Nome da sua empresa" +#~ msgid "Changing status may affect time tracking and progress calculations" +#~ msgstr "" +#~ "Mudar o status pode afetar o " +#~ "rastreamento de tempo e os cálculos " +#~ "de progresso" -#: app/templates/setup/initial_setup.html:144 -msgid "Your Company Address" -msgstr "Endereço da sua empresa" +#~ msgid "Due Date Updates" +#~ msgstr "Actualizações de Datas Excedentes" -#: app/templates/setup/initial_setup.html:166 -msgid "App behavior and timer settings." -msgstr "Comportamento da aplicação e configurações do temporizador." +#~ msgid "Consider team workload when adjusting deadlines" +#~ msgstr "Considere a carga de trabalho da equipe ao ajustar prazos" -#: app/templates/setup/initial_setup.html:171 -msgid "Allow self-registration" -msgstr "Permitir o auto- registo" +#~ msgid "Assignment Changes" +#~ msgstr "Alterações de atribuição" -#: app/templates/setup/initial_setup.html:172 -msgid "Users can create accounts from the login page" -msgstr "Os usuários podem criar contas a partir da página de login" +#~ msgid "Notify team members when reassigning tasks" +#~ msgstr "Notificar os membros da equipe ao reatribuir tarefas" -#: app/templates/setup/initial_setup.html:176 -msgid "Time rounding (minutes)" -msgstr "Tempo de arredondamento (minutos)" +#~ msgid "Updating..." +#~ msgstr "Actualização..." -#: app/templates/setup/initial_setup.html:183 -msgid "Round time entries to the nearest N minutes." -msgstr "Entradas de tempo redondas para os minutos N mais próximos." +#~ msgid "Filter Tasks" +#~ msgstr "Tarefas do Filtro" -#: app/templates/setup/initial_setup.html:188 -msgid "Single active timer per user" -msgstr "Temporizador ativo único por usuário" +#~ msgid "e.g. bug, frontend" +#~ msgstr "Por exemplo, bug, frontend" -#: app/templates/setup/initial_setup.html:189 -msgid "Only one running timer at a time per user" -msgstr "Apenas um timer em execução de cada vez por usuário" +#~ msgid "Delete Selected Tasks" +#~ msgstr "Apagar as Tarefas Seleccionadas" -#: app/templates/setup/initial_setup.html:193 -msgid "Idle timeout (minutes)" -msgstr "Tempo livre (minutos)" +#~ msgid "Change Status for Selected Tasks" +#~ msgstr "Mudar o Estado das Tarefas Seleccionadas" -#: app/templates/setup/initial_setup.html:195 -msgid "Pause timer after this many minutes of inactivity." -msgstr "Pausar temporizador depois de tantos minutos de inatividade." +#~ msgid "Assign Selected Tasks" +#~ msgstr "Atribuir Tarefas Seleccionadas" -#: app/templates/setup/initial_setup.html:203 -msgid "Configure calendar OAuth now or later in Admin → Settings." -msgstr "" -"Configure o calendário OAuth agora ou depois em Admin → Configurações." +#~ msgid "Assign Tasks" +#~ msgstr "Atribuir Tarefas" -#: app/templates/setup/initial_setup.html:207 -msgid "Google Calendar OAuth" -msgstr "Google Calendar OAuth" +#~ msgid "Move Selected Tasks to Project" +#~ msgstr "Mover as Tarefas Seleccionadas para o Projecto" -#: app/templates/setup/initial_setup.html:210 -msgid "Client ID (optional)" -msgstr "ID do cliente (opcional)" +#~ msgid "Select Project" +#~ msgstr "Selecionar projeto" -#: app/templates/setup/initial_setup.html:211 -msgid "Client Secret (optional)" -msgstr "Segredo do Cliente (opcional)" +#~ msgid "Move Tasks" +#~ msgstr "Mover Tarefas" -#: app/templates/setup/initial_setup.html:214 -msgid "Get these from" -msgstr "Tira-os de" +#~ msgid "Are you sure you want to delete the task \"{name}\"?" +#~ msgstr "Tem a certeza que deseja apagar a tarefa \"{name}\"?" -#: app/templates/setup/initial_setup.html:214 -#: app/templates/setup/initial_setup.html:221 -msgid "Google Cloud Console" -msgstr "Console do Google Cloud" +#~ msgid "" +#~ "Cannot delete task \"{name}\" because it" +#~ " has time entries. Please delete the" +#~ " time entries first." +#~ msgstr "" +#~ "Não é possível apagar a tarefa " +#~ "\"{name}\" porque tem entradas de tempo." +#~ " Por favor, apague primeiro os itens" +#~ " de tempo." -#: app/templates/setup/initial_setup.html:218 -msgid "How to get Google Calendar OAuth credentials?" -msgstr "Como obter credenciais Google Calendar OAuth?" +#~ msgid "Delete Task" +#~ msgstr "Apagar Tarefa" -#: app/templates/setup/initial_setup.html:221 -msgid "Go to" -msgstr "Ir para" +#~ msgid "My Tasks" +#~ msgstr "Minhas Tarefas" -#: app/templates/setup/initial_setup.html:222 -msgid "Create a new project or select an existing one" -msgstr "Criar um novo projeto ou selecionar um existente" +#~ msgid "Tasks assigned to or created by you" +#~ msgstr "Tarefas atribuídas ou criadas por si" -#: app/templates/setup/initial_setup.html:223 -msgid "Enable the Google Calendar API" -msgstr "Habilitar a API do Google Calendar" +#~ msgid "total" +#~ msgstr "total" -#: app/templates/setup/initial_setup.html:224 -msgid "Go to Credentials → Create Credentials → OAuth 2.0 Client ID" -msgstr "Ir para Credenciais → Criar Credenciais → OAuth 2.0 ID do cliente" +#~ msgid "Filter My Tasks" +#~ msgstr "Filtrar minhas tarefas" -#: app/templates/setup/initial_setup.html:225 -msgid "Set application type to \"Web application\"" -msgstr "Definir o tipo de aplicação para \"Aplicação Web\"" +#~ msgid "Task name or description" +#~ msgstr "Nome ou descrição da tarefa" -#: app/templates/setup/initial_setup.html:226 -msgid "Add authorized redirect URI:" -msgstr "Adicionar URI autorizado:" +#~ msgid "All Priorities" +#~ msgstr "Todas as Prioridades" -#: app/templates/setup/initial_setup.html:227 -msgid "Copy the Client ID and Client Secret" -msgstr "Copiar o ID do Cliente e o Segredo do Cliente" +#~ msgid "Task Type" +#~ msgstr "Tipo de Tarefa" -#: app/templates/setup/initial_setup.html:232 -msgid "You can skip this step and configure integrations later." -msgstr "Você pode pular esta etapa e configurar integrações mais tarde." +#~ msgid "Assigned to Me" +#~ msgstr "Atribuído a mim" -#: app/templates/setup/initial_setup.html:237 -msgid "Privacy & finish" -msgstr "& Finalização da privacidade" +#~ msgid "Created by Me" +#~ msgstr "Criado por mim" -#: app/templates/setup/initial_setup.html:238 -msgid "Choose whether to help improve TimeTracker with anonymous usage data." -msgstr "" -"Escolha se deve ajudar a melhorar o TimeTracker com dados de uso anônimos." - -#: app/templates/setup/initial_setup.html:244 -msgid "Enable anonymous telemetry" -msgstr "Activar a telemetria anónima" - -#: app/templates/setup/initial_setup.html:245 -msgid "Help us understand usage patterns to improve TimeTracker" -msgstr "Ajude-nos a entender os padrões de uso para melhorar o TimeTracker" - -#: app/templates/setup/initial_setup.html:250 -msgid "What data is collected?" -msgstr "Que dados são recolhidos?" - -#: app/templates/setup/initial_setup.html:253 -msgid "What we collect:" -msgstr "O que recolhemos:" - -#: app/templates/setup/initial_setup.html:255 -msgid "Anonymous installation fingerprint (hashed)" -msgstr "Impressões digitais de instalação anónimas (hashed)" - -#: app/templates/setup/initial_setup.html:256 -msgid "Application version & platform info" -msgstr "Informações da & plataforma de aplicativos" - -#: app/templates/setup/initial_setup.html:257 -msgid "Feature usage statistics" -msgstr "Estatísticas de utilização de recursos" - -#: app/templates/setup/initial_setup.html:261 -msgid "What we DON'T collect:" -msgstr "O que não recolhemos:" - -#: app/templates/setup/initial_setup.html:263 -msgid "No usernames or emails" -msgstr "Sem nomes de utilizador ou e- mail" - -#: app/templates/setup/initial_setup.html:264 -msgid "No time entry data or notes" -msgstr "Sem dados ou notas de entrada de tempo" - -#: app/templates/setup/initial_setup.html:265 -msgid "No client or business data" -msgstr "Nenhum cliente ou dados de negócios" - -#: app/templates/setup/initial_setup.html:268 -msgid "You can change this anytime in" -msgstr "Podes mudar isto a qualquer momento." - -#: app/templates/setup/initial_setup.html:273 -msgid "By continuing, you agree to use TimeTracker under the" -msgstr "Ao continuar, você concorda em usar o TimeTracker sob o" - -#: app/templates/setup/initial_setup.html:273 -msgid "GPL-3.0 License" -msgstr "Licença GPL-3.0" - -#: app/templates/setup/initial_setup.html:287 -#: app/templates/setup/initial_setup.html:288 -msgid "Complete Setup & Continue" -msgstr "Completar a Configuração e Continuar" - -#: app/templates/tasks/_kanban.html:65 app/templates/tasks/_kanban.html:1360 -#: app/templates/tasks/edit.html:4 app/templates/tasks/edit.html:16 -#: app/templates/tasks/view.html:8 -msgid "Edit Task" -msgstr "Editar tarefa" - -#: app/templates/tasks/_kanban.html:913 -msgid "Failed to update status" -msgstr "Falha ao atualizar o status" - -#: app/templates/tasks/_kanban.html:924 app/templates/tasks/_kanban.html:1000 -msgid "Failed to update task status" -msgstr "Falha ao atualizar o status da tarefa" - -#: app/templates/tasks/_kanban.html:937 -msgid "Kanban column created" -msgstr "Coluna do Kanban criada" - -#: app/templates/tasks/_kanban.html:938 -msgid "Kanban column deleted" -msgstr "Coluna do Kanban excluída" - -#: app/templates/tasks/_kanban.html:939 -msgid "Kanban columns reordered" -msgstr "Colunas do Kanban reordenadas" - -#: app/templates/tasks/_kanban.html:940 -msgid "Kanban column visibility changed" -msgstr "A visibilidade da coluna do Kanban foi alterada" - -#: app/templates/tasks/_kanban.html:941 app/templates/tasks/_kanban.html:944 -#: app/templates/tasks/_kanban.html:1017 -msgid "Kanban columns updated" -msgstr "Colunas do Kanban atualizadas" - -#: app/templates/tasks/_kanban.html:942 app/templates/tasks/_kanban.html:1017 -#: app/templates/timer/time_entries_overview.html:210 -msgid "Update" -msgstr "Actualizar" - -#: app/templates/tasks/_kanban.html:955 -msgid "Failed to refresh kanban columns" -msgstr "Falha ao atualizar as colunas do kanban" - -#: app/templates/tasks/_kanban.html:1218 -msgid "Loading task details..." -msgstr "Carregando detalhes da tarefa..." - -#: app/templates/tasks/_kanban.html:1313 -msgid "Tracked" -msgstr "Rastreado" - -#: app/templates/tasks/_kanban.html:1357 -msgid "View Full Details" -msgstr "Ver detalhes completos" - -#: app/templates/tasks/create.html:14 app/templates/tasks/edit.html:290 -#: app/templates/tasks/overdue.html:13 -msgid "Back to Tasks" -msgstr "Voltar às Tarefas" - -#: app/templates/tasks/create.html:16 -msgid "" -"Add a new task to your project to break down work into manageable components" -msgstr "" -"Adicione uma nova tarefa ao seu projeto para quebrar o trabalho em " -"componentes gerenciáveis" +#~ msgid "Show overdue only" +#~ msgstr "Mostrar apenas atraso" -#: app/templates/tasks/create.html:27 app/templates/tasks/edit.html:34 -msgid "Enter a descriptive task name" -msgstr "Indique um nome descritivo da tarefa" +#~ msgid "Created by me" +#~ msgstr "Criado por mim" -#: app/templates/tasks/create.html:28 app/templates/tasks/edit.html:35 -msgid "Choose a clear, descriptive name that explains what needs to be done" -msgstr "" -"Escolha um nome claro e descritivo que explique o que precisa ser feito" +#~ msgid "My tasks pagination" +#~ msgstr "Minhas tarefas paginação" -#: app/templates/tasks/create.html:38 app/templates/tasks/edit.html:44 -#: app/templates/tasks/edit.html:515 -msgid "" -"Provide detailed information about the task, requirements, and any specific " -"instructions..." -msgstr "" -"Forneça informações detalhadas sobre a tarefa, requisitos e quaisquer " -"instruções específicas..." +#~ msgid "..." +#~ msgstr "..." -#: app/templates/tasks/create.html:41 app/templates/tasks/edit.html:47 -msgid "" -"Optional: Add context, requirements, or specific instructions for the task" -msgstr "" -"Opcional: Adicione contexto, requisitos ou instruções específicas para a " -"tarefa" +#~ msgid "No tasks found" +#~ msgstr "Nenhuma tarefa encontrada" -#: app/templates/tasks/create.html:53 app/templates/tasks/edit.html:63 -msgid "Select the project this task belongs to" -msgstr "Selecione o projeto a que esta tarefa pertence" +#~ msgid "You don't have any tasks assigned to you or created by you yet." +#~ msgstr "Você ainda não tem nenhuma tarefa atribuída a você ou criada por você." -#: app/templates/tasks/create.html:68 -msgid "Initial Status" -msgstr "Estado Inicial" +#~ msgid "Create Your First Task" +#~ msgstr "Crie sua primeira tarefa" -#: app/templates/tasks/create.html:74 app/templates/tasks/create.html:86 -#: app/templates/tasks/create.html:478 app/templates/tasks/edit.html:83 -#: app/templates/tasks/edit.html:658 app/templates/tasks/my_tasks.html:134 -#: app/utils/i18n_helpers.py:19 app/utils/i18n_helpers.py:31 -msgid "Done" -msgstr "Feito" +#~ msgid "View All Tasks" +#~ msgstr "Ver Todas as Tarefas" -#: app/templates/tasks/create.html:95 app/templates/tasks/edit.html:103 -msgid "Optional: Set a deadline for this task" -msgstr "Opcional: Defina um prazo para esta tarefa" +#~ msgid "Overdue Tasks" +#~ msgstr "Tarefas Excedidas" -#: app/templates/tasks/create.html:100 app/templates/tasks/edit.html:108 -msgid "Optional: Estimate how long this task will take" -msgstr "Opcional: Estimar quanto tempo esta tarefa levará" +#~ msgid "Requires immediate attention" +#~ msgstr "Requer atenção imediata" -#: app/templates/tasks/create.html:113 app/templates/tasks/edit.html:121 -msgid "Optional: Assign this task to a team member" -msgstr "Opcional: Atribuir esta tarefa a um membro da equipe" +#~ msgid "items" +#~ msgstr "itens" -#: app/templates/tasks/create.html:122 app/templates/tasks/edit.html:130 -msgid "e.g. bug, frontend, urgent" -msgstr "Por exemplo, bug, frontend, urgente" +#~ msgid "There are" +#~ msgstr "Há" -#: app/templates/tasks/create.html:123 app/templates/tasks/edit.html:131 -msgid "Comma-separated tags for categorization" -msgstr "Marcas separadas por vírgulas para categorização" +#~ msgid "" +#~ "overdue tasks that require immediate " +#~ "attention. Please review and update " +#~ "these tasks to prevent further delays." +#~ msgstr "" +#~ "tarefas que requerem atenção imediata. " +#~ "Por favor, reveja e atualize estas " +#~ "tarefas para evitar novos atrasos." -#: app/templates/tasks/create.html:133 app/templates/tasks/edit.html:141 -msgid "" -"Optional: Color for this task on the Gantt chart. If unset, the project " -"color is used. Pick or enter a hex code (e.g. #3b82f6)." -msgstr "" -"Opcional: Cor para esta tarefa no gráfico de Gantt. Se desactivada, a cor do" -" projecto é usada. Escolha ou insira um código hexadecimal (por exemplo, " -"#3b82f6)." +#~ msgid "Due:" +#~ msgstr "Duração:" -#: app/templates/tasks/create.html:148 -msgid "Task Creation Tips" -msgstr "Dicas de criação de tarefas" +#~ msgid "Est:" +#~ msgstr "Est:" -#: app/templates/tasks/create.html:156 -msgid "Use action verbs and be specific about what needs to be done" -msgstr "Use verbos de ação e seja específico sobre o que precisa ser feito" +#~ msgid "Actual:" +#~ msgstr "Actual:" -#: app/templates/tasks/create.html:164 -msgid "Realistic Estimates" -msgstr "Estimativas realistas" +#~ msgid "Bulk Actions" +#~ msgstr "Ações em massa" -#: app/templates/tasks/create.html:165 -msgid "Consider complexity and dependencies when estimating time" -msgstr "Considere complexidade e dependências ao estimar o tempo" +#~ msgid "Update Due Dates" +#~ msgstr "Atualizar datas de vencimento" -#: app/templates/tasks/create.html:173 -msgid "Set Deadlines" -msgstr "Definir os Prazos" +#~ msgid "Extend due dates for multiple tasks at once" +#~ msgstr "Expandir as datas de vencimento para várias tarefas ao mesmo tempo" -#: app/templates/tasks/create.html:174 -msgid "Due dates help prioritize work and track progress" -msgstr "Datas devidas ajudam a priorizar o trabalho e acompanhar o progresso" +#~ msgid "Extend Due Dates" +#~ msgstr "Extender datas de vencimento" -#: app/templates/tasks/create.html:182 -msgid "Priority Matters" -msgstr "Questões Prioritárias" +#~ msgid "Priority Management" +#~ msgstr "Gestão Prioritária" -#: app/templates/tasks/create.html:183 -msgid "" -"Use priority levels to help team members focus on what's most important" -msgstr "" -"Use níveis de prioridade para ajudar os membros da equipe a se concentrarem " -"no que é mais importante" +#~ msgid "Adjust priorities for overdue tasks" +#~ msgstr "Ajustar prioridades para tarefas atrasadas" -#: app/templates/tasks/edit.html:14 -msgid "Back to Task" -msgstr "Voltar à Tarefa" +#~ msgid "Adjust Priorities" +#~ msgstr "Ajustar prioridades" -#: app/templates/tasks/edit.html:16 -#, python-format -msgid "Update task details and settings for \"%(task)s\"" -msgstr "Atualizar detalhes e configurações da tarefa para \"%(task)s\"" +#~ msgid "No Overdue Tasks!" +#~ msgstr "Sem Tarefas Excedidas!" -#: app/templates/tasks/edit.html:23 -msgid "Task Information" -msgstr "Informação da Tarefa" +#~ msgid "Great job! All tasks are currently on schedule." +#~ msgstr "Bom trabalho! Todas as tarefas estão no horário." -#: app/templates/tasks/edit.html:147 -msgid "Update Task" -msgstr "Atualizar tarefa" +#~ msgid "Enter new due date (YYYY-MM-DD):" +#~ msgstr "Indicar a nova data de vencimento (AAAA-MM-DD):" -#: app/templates/tasks/edit.html:163 -msgid "Estimate used" -msgstr "Estimativa utilizada" +#~ msgid "Are you sure you want to extend the due date to" +#~ msgstr "Tem certeza de que deseja estender a data de vencimento para" -#: app/templates/tasks/edit.html:170 app/templates/weekly_goals/index.html:185 -msgid "Actual" -msgstr "Real" +#~ msgid "for all overdue tasks?" +#~ msgstr "para todas as tarefas atrasadas?" -#: app/templates/tasks/edit.html:183 -msgid "Current Task Info" -msgstr "Informação da Tarefa Actual" +#~ msgid "Enter new priority (low/medium/high/urgent):" +#~ msgstr "Digite nova prioridade (baixa/média/alta/urgente):" -#: app/templates/tasks/edit.html:187 -msgid "Current Status" -msgstr "Estado atual" +#~ msgid "Are you sure you want to set priority to" +#~ msgstr "Tem a certeza de que deseja definir a prioridade" -#: app/templates/tasks/edit.html:194 -msgid "Current Priority" -msgstr "Prioridade atual" +#~ msgid "Invalid priority. Please use: low, medium, high, or urgent" +#~ msgstr "Prioridade inválida. Por favor use: baixo, médio, alto ou urgente" -#: app/templates/tasks/edit.html:212 -msgid "Currently Assigned To" -msgstr "Atualmente Atribuído" +#~ msgid "Updated %(count)s task(s). Reloading..." +#~ msgstr "" -#: app/templates/tasks/edit.html:224 -msgid "Current Due Date" -msgstr "Data de vencimento atual" +#~ msgid "Update failed. Please try again." +#~ msgstr "A actualização falhou. Por favor, tente novamente." -#: app/templates/tasks/edit.html:238 -msgid "Current Estimate" -msgstr "Estimativa Actual" +#~ msgid "Start task and mark as In Progress?" +#~ msgstr "Iniciar tarefa e marcar como em progresso?" -#: app/templates/tasks/edit.html:250 app/templates/weekly_goals/index.html:87 -#: app/templates/weekly_goals/view.html:47 -msgid "Actual Hours" -msgstr "Horas reais" +#~ msgid "Change Task Status" +#~ msgstr "Mudar o Estado da Tarefa" -#: app/templates/tasks/edit.html:265 -msgid "Started" -msgstr "Iniciado" +#~ msgid "Mark task as To Do?" +#~ msgstr "Marcar tarefa como Fazer?" -#: app/templates/tasks/edit.html:299 -msgid "Edit Tips" -msgstr "Editar dicas" +#~ msgid "Mark task as Done?" +#~ msgstr "Marcar a tarefa como Terminada?" -#: app/templates/tasks/edit.html:308 -msgid "Status Changes" -msgstr "Alterações de Estado" +#~ msgid "Complete Task" +#~ msgstr "Completar tarefa" -#: app/templates/tasks/edit.html:309 -msgid "Changing status may affect time tracking and progress calculations" -msgstr "" -"Mudar o status pode afetar o rastreamento de tempo e os cálculos de " -"progresso" +#~ msgid "Complete" +#~ msgstr "Completar" -#: app/templates/tasks/edit.html:320 -msgid "Due Date Updates" -msgstr "Actualizações de Datas Excedentes" +#~ msgid "Reopen task to Review?" +#~ msgstr "Reabrir a tarefa para revisão?" -#: app/templates/tasks/edit.html:321 -msgid "Consider team workload when adjusting deadlines" -msgstr "Considere a carga de trabalho da equipe ao ajustar prazos" +#~ msgid "Reopen Task" +#~ msgstr "Reabrir Tarefa" -#: app/templates/tasks/edit.html:332 -msgid "Assignment Changes" -msgstr "Alterações de atribuição" +#~ msgid "Reopen" +#~ msgstr "Abrir novamente" -#: app/templates/tasks/edit.html:333 -msgid "Notify team members when reassigning tasks" -msgstr "Notificar os membros da equipe ao reatribuir tarefas" +#~ msgid "Task details and history." +#~ msgstr "Detalhes da tarefa e história." -#: app/templates/tasks/edit.html:599 -msgid "Updating..." -msgstr "Actualização..." +#~ msgid "Create Time Entry Template" +#~ msgstr "Criar Modelo de Entrada de Tempo" -#: app/templates/tasks/list.html:33 -msgid "Filter Tasks" -msgstr "Tarefas do Filtro" +#~ msgid "e.g., Daily Standup, Client Meeting" +#~ msgstr "Por exemplo, Daily Standup, Reunião de Clientes" -#: app/templates/tasks/list.html:46 app/templates/tasks/my_tasks.html:125 -msgid "e.g. bug, frontend" -msgstr "Por exemplo, bug, frontend" +#~ msgid "e.g., 1.0, 0.5" +#~ msgstr "p. ex., 1.0, 0.5" -#: app/templates/tasks/list.html:139 -msgid "Delete Selected Tasks" -msgstr "Apagar as Tarefas Seleccionadas" +#~ msgid "Pre-fill notes for this type of time entry" +#~ msgstr "Notas de pré- preenchimento para este tipo de registro de tempo" -#: app/templates/tasks/list.html:159 -msgid "Change Status for Selected Tasks" -msgstr "Mudar o Estado das Tarefas Seleccionadas" +#~ msgid "e.g., meeting, development, admin" +#~ msgstr "Por exemplo, reunião, desenvolvimento, administrador" -#: app/templates/tasks/list.html:187 -msgid "Assign Selected Tasks" -msgstr "Atribuir Tarefas Seleccionadas" +#~ msgid "Edit Template" +#~ msgstr "Editar modelo" -#: app/templates/tasks/list.html:197 -msgid "Assign Tasks" -msgstr "Atribuir Tarefas" +#~ msgid "Are you sure you want to delete this template?" +#~ msgstr "Tem a certeza de que deseja apagar este modelo?" -#: app/templates/tasks/list.html:207 -msgid "Move Selected Tasks to Project" -msgstr "Mover as Tarefas Seleccionadas para o Projecto" +#~ msgid "Delete Template" +#~ msgstr "Apagar Modelo" -#: app/templates/tasks/list.html:208 app/templates/tasks/list.html:210 -msgid "Select Project" -msgstr "Selecionar projeto" +#~ msgid "Create Your First Template" +#~ msgstr "Criar seu primeiro modelo" -#: app/templates/tasks/list.html:217 -msgid "Move Tasks" -msgstr "Mover Tarefas" +#~ msgid "No templates yet" +#~ msgstr "Sem modelos ainda" -#: app/templates/tasks/list.html:237 -#, python-brace-format -msgid "Are you sure you want to delete the task \"{name}\"?" -msgstr "Tem a certeza que deseja apagar a tarefa \"{name}\"?" +#~ msgid "Create your first time entry template to speed up your workflow." +#~ msgstr "" +#~ "Crie seu primeiro modelo de entrada " +#~ "para acelerar seu fluxo de trabalho." -#: app/templates/tasks/list.html:238 -#, python-brace-format -msgid "" -"Cannot delete task \"{name}\" because it has time entries. Please delete the" -" time entries first." -msgstr "" -"Não é possível apagar a tarefa \"{name}\" porque tem entradas de tempo. Por " -"favor, apague primeiro os itens de tempo." +#~ msgid "Usage Statistics" +#~ msgstr "Estatísticas de Uso" -#: app/templates/tasks/list.html:421 app/templates/tasks/view.html:39 -msgid "Delete Task" -msgstr "Apagar Tarefa" +#~ msgid "Select All" +#~ msgstr "Selecionar tudo" -#: app/templates/tasks/my_tasks.html:3 app/templates/tasks/my_tasks.html:23 -msgid "My Tasks" -msgstr "Minhas Tarefas" +#~ msgid "selected" +#~ msgstr "selecionado" -#: app/templates/tasks/my_tasks.html:23 -msgid "Tasks assigned to or created by you" -msgstr "Tarefas atribuídas ou criadas por si" +#~ msgid "Mark Paid/Unpaid" +#~ msgstr "Marcação paga/não paga" -#: app/templates/tasks/my_tasks.html:23 -msgid "total" -msgstr "total" +#~ msgid "Project/Client" +#~ msgstr "Projeto/cliente" -#: app/templates/tasks/my_tasks.html:105 -msgid "Filter My Tasks" -msgstr "Filtrar minhas tarefas" +#~ msgid "Invoice Ref" +#~ msgstr "Fatura Ref" -#: app/templates/tasks/my_tasks.html:119 -msgid "Task name or description" -msgstr "Nome ou descrição da tarefa" +#~ msgid "Click to edit" +#~ msgstr "Clique para editar" -#: app/templates/tasks/my_tasks.html:141 -msgid "All Priorities" -msgstr "Todas as Prioridades" +#~ msgid "Stop the timer to edit duration" +#~ msgstr "Parar o temporizador para editar a duração" -#: app/templates/tasks/my_tasks.html:160 -msgid "Task Type" -msgstr "Tipo de Tarefa" +#~ msgid "Request approval" +#~ msgstr "Pedido de aprovação" -#: app/templates/tasks/my_tasks.html:163 -msgid "Assigned to Me" -msgstr "Atribuído a mim" +#~ msgid "Clear filters" +#~ msgstr "Limpar os filtros" -#: app/templates/tasks/my_tasks.html:164 -msgid "Created by Me" -msgstr "Criado por mim" +#~ msgid "No time entries match your filters" +#~ msgstr "Nenhum item de tempo corresponde aos seus filtros" -#: app/templates/tasks/my_tasks.html:171 -msgid "Show overdue only" -msgstr "Mostrar apenas atraso" +#~ msgid "" +#~ "Try adjusting your filters or clear " +#~ "them to see all entries. You can" +#~ " also log a new time entry." +#~ msgstr "" +#~ "Tente ajustar seus filtros ou limpá-los" +#~ " para ver todas as entradas. Você " +#~ "também pode registrar um novo registro" +#~ " de tempo." -#: app/templates/tasks/my_tasks.html:302 -msgid "Created by me" -msgstr "Criado por mim" +#~ msgid "No time entries yet" +#~ msgstr "Ainda não há itens de tempo" -#: app/templates/tasks/my_tasks.html:353 -msgid "My tasks pagination" -msgstr "Minhas tarefas paginação" +#~ msgid "" +#~ "Log time to see your entries here." +#~ " Use the timer on the dashboard " +#~ "or log time manually." +#~ msgstr "" +#~ "Registre aqui o tempo para ver as" +#~ " suas entradas. Use o temporizador no" +#~ " painel ou tempo de registro " +#~ "manualmente." -#: app/templates/tasks/my_tasks.html:376 -msgid "..." -msgstr "..." +#~ msgid "Time entries pagination" +#~ msgstr "Paginação dos itens temporais" -#: app/templates/tasks/my_tasks.html:400 -msgid "No tasks found" -msgstr "Nenhuma tarefa encontrada" +#~ msgid "Bulk Time Entry" +#~ msgstr "Entrada da hora em massa" -#: app/templates/tasks/my_tasks.html:401 -msgid "You don't have any tasks assigned to you or created by you yet." -msgstr "" -"Você ainda não tem nenhuma tarefa atribuída a você ou criada por você." +#~ msgid "Single Entry" +#~ msgstr "Entrada Única" -#: app/templates/tasks/my_tasks.html:404 -msgid "Create Your First Task" -msgstr "Crie sua primeira tarefa" +#~ msgid "Create multiple time entries for consecutive days" +#~ msgstr "Criar vários itens de tempo para dias consecutivos" -#: app/templates/tasks/my_tasks.html:407 app/templates/tasks/overdue.html:102 -msgid "View All Tasks" -msgstr "Ver Todas as Tarefas" +#~ msgid "Bulk Entry Form" +#~ msgstr "Formulário de entrada em massa" -#: app/templates/tasks/overdue.html:4 app/templates/tasks/overdue.html:9 -#: app/templates/tasks/overdue.html:19 -msgid "Overdue Tasks" -msgstr "Tarefas Excedidas" +#~ msgid "Select the project to log time for" +#~ msgstr "Selecione o tempo de registro do projeto para" -#: app/templates/tasks/overdue.html:20 -msgid "Requires immediate attention" -msgstr "Requer atenção imediata" +#~ msgid "Tasks load after selecting a project" +#~ msgstr "Tarefas carregar após selecionar um projeto" -#: app/templates/tasks/overdue.html:20 -msgid "items" -msgstr "itens" +#~ msgid "Date Range" +#~ msgstr "Intervalo de Datas" -#: app/templates/tasks/overdue.html:26 -msgid "There are" -msgstr "Há" +#~ msgid "Skip weekends (Saturday & Sunday)" +#~ msgstr "Passar os fins de semana (sábado e domingo)" -#: app/templates/tasks/overdue.html:26 -msgid "" -"overdue tasks that require immediate attention. Please review and update " -"these tasks to prevent further delays." -msgstr "" -"tarefas que requerem atenção imediata. Por favor, reveja e atualize estas " -"tarefas para evitar novos atrasos." +#~ msgid "Entries will be created for these dates" +#~ msgstr "Serão criadas entradas para estas datas" -#: app/templates/tasks/overdue.html:55 -msgid "Due:" -msgstr "Duração:" +#~ msgid "Same start time for all days" +#~ msgstr "Mesmo tempo de início para todos os dias" -#: app/templates/tasks/overdue.html:56 -msgid "Est:" -msgstr "Est:" +#~ msgid "Same end time for all days" +#~ msgstr "Mesmo tempo final para todos os dias" -#: app/templates/tasks/overdue.html:57 -msgid "Actual:" -msgstr "Actual:" +#~ msgid "What did you work on? (same notes for all entries)" +#~ msgstr "Em que trabalhaste? (mesma nota para todas as entradas)" -#: app/templates/tasks/overdue.html:85 -#: app/templates/timer/_time_entries_list.html:16 -msgid "Bulk Actions" -msgstr "Ações em massa" +#~ msgid "tag1, tag2, tag3" +#~ msgstr "tag1, tag2, tag3" -#: app/templates/tasks/overdue.html:89 -msgid "Update Due Dates" -msgstr "Atualizar datas de vencimento" +#~ msgid "Separate tags with commas (same for all entries)" +#~ msgstr "Marcas separadas com vírgulas (o mesmo para todos os itens)" -#: app/templates/tasks/overdue.html:90 -msgid "Extend due dates for multiple tasks at once" -msgstr "Expandir as datas de vencimento para várias tarefas ao mesmo tempo" +#~ msgid "Include in invoices" +#~ msgstr "Incluir nas facturas" -#: app/templates/tasks/overdue.html:91 -msgid "Extend Due Dates" -msgstr "Extender datas de vencimento" +#~ msgid "Create Entries" +#~ msgstr "Criar Entradas" -#: app/templates/tasks/overdue.html:94 -msgid "Priority Management" -msgstr "Gestão Prioritária" +#~ msgid "Bulk Entry Tips" +#~ msgstr "Dicas de entrada em massa" -#: app/templates/tasks/overdue.html:95 -msgid "Adjust priorities for overdue tasks" -msgstr "Ajustar prioridades para tarefas atrasadas" +#~ msgid "" +#~ "Select start and end dates. Entries " +#~ "will be created for each day in" +#~ " the range." +#~ msgstr "" +#~ "Selecione datas de início e fim. " +#~ "Serão criadas inscrições para cada dia" +#~ " no intervalo." -#: app/templates/tasks/overdue.html:96 -msgid "Adjust Priorities" -msgstr "Ajustar prioridades" +#~ msgid "Skip Weekends" +#~ msgstr "Ignorar os Fins de Semana" -#: app/templates/tasks/overdue.html:104 -msgid "No Overdue Tasks!" -msgstr "Sem Tarefas Excedidas!" +#~ msgid "Enable to automatically skip Saturdays and Sundays from the date range." +#~ msgstr "" +#~ "Habilite para pular automaticamente sábados" +#~ " e domingos a partir do intervalo " +#~ "de datas." -#: app/templates/tasks/overdue.html:104 -msgid "Great job! All tasks are currently on schedule." -msgstr "Bom trabalho! Todas as tarefas estão no horário." +#~ msgid "Same Time Daily" +#~ msgstr "Diariamente Mesmo Tempo" -#: app/templates/tasks/overdue.html:109 -msgid "Enter new due date (YYYY-MM-DD):" -msgstr "Indicar a nova data de vencimento (AAAA-MM-DD):" +#~ msgid "All entries will use the same start and end time each day." +#~ msgstr "Todas as entradas usarão a mesma hora de início e fim todos os dias." -#: app/templates/tasks/overdue.html:110 -msgid "Are you sure you want to extend the due date to" -msgstr "Tem certeza de que deseja estender a data de vencimento para" +#~ msgid "Conflict Check" +#~ msgstr "Verificação de Conflitos" -#: app/templates/tasks/overdue.html:111 app/templates/tasks/overdue.html:114 -msgid "for all overdue tasks?" -msgstr "para todas as tarefas atrasadas?" +#~ msgid "System will check for existing time entries and prevent overlaps." +#~ msgstr "" +#~ "O sistema verificará as entradas de " +#~ "tempo existentes e evitará sobreposições." -#: app/templates/tasks/overdue.html:112 -msgid "Enter new priority (low/medium/high/urgent):" -msgstr "Digite nova prioridade (baixa/média/alta/urgente):" +#~ msgid "Failed to load tasks" +#~ msgstr "Falha ao carregar as tarefas" -#: app/templates/tasks/overdue.html:113 -msgid "Are you sure you want to set priority to" -msgstr "Tem a certeza de que deseja definir a prioridade" +#~ msgid "Total days" +#~ msgstr "Total de dias" -#: app/templates/tasks/overdue.html:115 -msgid "Invalid priority. Please use: low, medium, high, or urgent" -msgstr "Prioridade inválida. Por favor use: baixo, médio, alto ou urgente" +#~ msgid "Weekdays only" +#~ msgstr "Apenas durante a semana" -#: app/templates/tasks/overdue.html:116 -#, python-format -msgid "Updated %(count)s task(s). Reloading..." -msgstr "" +#~ msgid "Entries will be created for" +#~ msgstr "Serão criadas entradas para" -#: app/templates/tasks/overdue.html:117 -msgid "Update failed. Please try again." -msgstr "A actualização falhou. Por favor, tente novamente." - -#: app/templates/tasks/view.html:14 -msgid "Start task and mark as In Progress?" -msgstr "Iniciar tarefa e marcar como em progresso?" - -#: app/templates/tasks/view.html:14 app/templates/tasks/view.html:21 -msgid "Change Task Status" -msgstr "Mudar o Estado da Tarefa" - -#: app/templates/tasks/view.html:21 -msgid "Mark task as To Do?" -msgstr "Marcar tarefa como Fazer?" - -#: app/templates/tasks/view.html:27 -msgid "Mark task as Done?" -msgstr "Marcar a tarefa como Terminada?" - -#: app/templates/tasks/view.html:27 -msgid "Complete Task" -msgstr "Completar tarefa" - -#: app/templates/tasks/view.html:27 -msgid "Complete" -msgstr "Completar" - -#: app/templates/tasks/view.html:34 -msgid "Reopen task to Review?" -msgstr "Reabrir a tarefa para revisão?" - -#: app/templates/tasks/view.html:34 -msgid "Reopen Task" -msgstr "Reabrir Tarefa" - -#: app/templates/tasks/view.html:34 -msgid "Reopen" -msgstr "Abrir novamente" - -#: app/templates/tasks/view.html:47 -msgid "Task details and history." -msgstr "Detalhes da tarefa e história." - -#: app/templates/time_entry_templates/create.html:13 -msgid "Create Time Entry Template" -msgstr "Criar Modelo de Entrada de Tempo" - -#: app/templates/time_entry_templates/create.html:33 -#: app/templates/time_entry_templates/edit.html:33 -msgid "e.g., Daily Standup, Client Meeting" -msgstr "Por exemplo, Daily Standup, Reunião de Clientes" - -#: app/templates/time_entry_templates/create.html:82 -#: app/templates/time_entry_templates/edit.html:86 -msgid "e.g., 1.0, 0.5" -msgstr "p. ex., 1.0, 0.5" - -#: app/templates/time_entry_templates/create.html:97 -#: app/templates/time_entry_templates/edit.html:101 -msgid "Pre-fill notes for this type of time entry" -msgstr "Notas de pré- preenchimento para este tipo de registro de tempo" - -#: app/templates/time_entry_templates/create.html:110 -#: app/templates/time_entry_templates/edit.html:114 -msgid "e.g., meeting, development, admin" -msgstr "Por exemplo, reunião, desenvolvimento, administrador" - -#: app/templates/time_entry_templates/edit.html:13 -msgid "Edit Template" -msgstr "Editar modelo" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Are you sure you want to delete this template?" -msgstr "Tem a certeza de que deseja apagar este modelo?" - -#: app/templates/time_entry_templates/list.html:44 -#: app/templates/time_entry_templates/view.html:144 -msgid "Delete Template" -msgstr "Apagar Modelo" - -#: app/templates/time_entry_templates/list.html:111 -msgid "Create Your First Template" -msgstr "Criar seu primeiro modelo" - -#: app/templates/time_entry_templates/list.html:114 -msgid "No templates yet" -msgstr "Sem modelos ainda" - -#: app/templates/time_entry_templates/list.html:115 -msgid "Create your first time entry template to speed up your workflow." -msgstr "" -"Crie seu primeiro modelo de entrada para acelerar seu fluxo de trabalho." - -#: app/templates/time_entry_templates/view.html:96 -msgid "Usage Statistics" -msgstr "Estatísticas de Uso" - -#: app/templates/timer/_time_entries_list.html:7 -msgid "Select All" -msgstr "Selecionar tudo" - -#: app/templates/timer/_time_entries_list.html:10 -msgid "selected" -msgstr "selecionado" - -#: app/templates/timer/_time_entries_list.html:19 -msgid "Mark Paid/Unpaid" -msgstr "Marcação paga/não paga" - -#: app/templates/timer/_time_entries_list.html:38 -#: app/templates/timer/_time_entries_list.html:67 -#: app/templates/timer/time_entries_export_pdf.html:16 -msgid "Project/Client" -msgstr "Projeto/cliente" - -#: app/templates/timer/_time_entries_list.html:43 -#: app/templates/timer/_time_entries_list.html:131 -msgid "Invoice Ref" -msgstr "Fatura Ref" - -#: app/templates/timer/_time_entries_list.html:98 -#: app/templates/timer/_time_entries_list.html:109 -msgid "Click to edit" -msgstr "Clique para editar" - -#: app/templates/timer/_time_entries_list.html:102 -msgid "Stop the timer to edit duration" -msgstr "Parar o temporizador para editar a duração" - -#: app/templates/timer/_time_entries_list.html:186 -#: app/templates/timer/_time_entries_list.html:188 -#: app/templates/timer/view_timer.html:108 -msgid "Request approval" -msgstr "Pedido de aprovação" - -#: app/templates/timer/_time_entries_list.html:201 -msgid "Clear filters" -msgstr "Limpar os filtros" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "No time entries match your filters" -msgstr "Nenhum item de tempo corresponde aos seus filtros" - -#: app/templates/timer/_time_entries_list.html:204 -msgid "" -"Try adjusting your filters or clear them to see all entries. You can also " -"log a new time entry." -msgstr "" -"Tente ajustar seus filtros ou limpá-los para ver todas as entradas. Você " -"também pode registrar um novo registro de tempo." +#~ msgid "Agenda" +#~ msgstr "Ordem do dia" -#: app/templates/timer/_time_entries_list.html:211 -msgid "No time entries yet" -msgstr "Ainda não há itens de tempo" +#~ msgid "iCal Format" +#~ msgstr "Formato iCal" -#: app/templates/timer/_time_entries_list.html:211 -msgid "" -"Log time to see your entries here. Use the timer on the dashboard or log " -"time manually." -msgstr "" -"Registre aqui o tempo para ver as suas entradas. Use o temporizador no " -"painel ou tempo de registro manualmente." +#~ msgid "CSV Format" +#~ msgstr "Formato CSV" -#: app/templates/timer/_time_entries_list.html:222 -msgid "Time entries pagination" -msgstr "Paginação dos itens temporais" +#~ msgid "Filter by tags..." +#~ msgstr "Filtrar por etiquetas..." -#: app/templates/timer/bulk_entry.html:3 -#: app/templates/timer/bulk_entry.html:77 -msgid "Bulk Time Entry" -msgstr "Entrada da hora em massa" +#~ msgid "Show billable entries only" +#~ msgstr "Mostrar apenas os itens de faturamento" -#: app/templates/timer/bulk_entry.html:74 -msgid "Single Entry" -msgstr "Entrada Única" +#~ msgid "Billable Only" +#~ msgstr "Apenas Billable" -#: app/templates/timer/bulk_entry.html:77 -msgid "Create multiple time entries for consecutive days" -msgstr "Criar vários itens de tempo para dias consecutivos" +#~ msgid "Assign to project for new events..." +#~ msgstr "Atribuir ao projeto para novos eventos..." -#: app/templates/timer/bulk_entry.html:86 -msgid "Bulk Entry Form" -msgstr "Formulário de entrada em massa" +#~ msgid "Total Hours:" +#~ msgstr "Total de horas:" -#: app/templates/timer/bulk_entry.html:110 -msgid "Select the project to log time for" -msgstr "Selecione o tempo de registro do projeto para" +#~ msgid "Colors assigned by project" +#~ msgstr "Cores atribuídas pelo projeto" -#: app/templates/timer/bulk_entry.html:122 -#: app/templates/timer/manual_entry.html:83 -msgid "Tasks load after selecting a project" -msgstr "Tarefas carregar após selecionar um projeto" +#~ msgid "Create Time Entry" +#~ msgstr "Criar Entrada de Tempo" -#: app/templates/timer/bulk_entry.html:133 -#: app/templates/timer/bulk_entry.html:246 -msgid "Date Range" -msgstr "Intervalo de Datas" +#~ msgid "Select a project..." +#~ msgstr "Seleccionar um projecto..." -#: app/templates/timer/bulk_entry.html:148 -msgid "Skip weekends (Saturday & Sunday)" -msgstr "Passar os fins de semana (sábado e domingo)" +#~ msgid "Recurring Time Blocks" +#~ msgstr "Blocos de Tempo Recorrentes" -#: app/templates/timer/bulk_entry.html:155 -msgid "Entries will be created for these dates" -msgstr "Serão criadas entradas para estas datas" +#~ msgid "Manage your recurring time entry templates." +#~ msgstr "Gerencie seus modelos de entrada de tempo recorrentes." -#: app/templates/timer/bulk_entry.html:172 -msgid "Same start time for all days" -msgstr "Mesmo tempo de início para todos os dias" +#~ msgid "New Recurring Block" +#~ msgstr "Novo Bloco Recorrente" -#: app/templates/timer/bulk_entry.html:181 -msgid "Same end time for all days" -msgstr "Mesmo tempo final para todos os dias" +#~ msgid "Jump to Today" +#~ msgstr "Ir para Hoje" -#: app/templates/timer/bulk_entry.html:191 -msgid "What did you work on? (same notes for all entries)" -msgstr "Em que trabalhaste? (mesma nota para todas as entradas)" +#~ msgid "Next Week/Month" +#~ msgstr "Próxima semana/mês" -#: app/templates/timer/bulk_entry.html:200 -msgid "tag1, tag2, tag3" -msgstr "tag1, tag2, tag3" +#~ msgid "Previous Week/Month" +#~ msgstr "Semana anterior/Mês" -#: app/templates/timer/bulk_entry.html:201 -msgid "Separate tags with commas (same for all entries)" -msgstr "Marcas separadas com vírgulas (o mesmo para todos os itens)" +#~ msgid "Navigate Days" +#~ msgstr "Navegar Dias" -#: app/templates/timer/bulk_entry.html:211 -msgid "Include in invoices" -msgstr "Incluir nas facturas" +#~ msgid "Views" +#~ msgstr "Vistas" -#: app/templates/timer/bulk_entry.html:223 -msgid "Create Entries" -msgstr "Criar Entradas" +#~ msgid "Day View" +#~ msgstr "Vista do Dia" -#: app/templates/timer/bulk_entry.html:239 -msgid "Bulk Entry Tips" -msgstr "Dicas de entrada em massa" +#~ msgid "Week View" +#~ msgstr "Vista Semanal" -#: app/templates/timer/bulk_entry.html:247 -msgid "" -"Select start and end dates. Entries will be created for each day in the " -"range." -msgstr "" -"Selecione datas de início e fim. Serão criadas inscrições para cada dia no " -"intervalo." +#~ msgid "Month View" +#~ msgstr "Vista Mês" -#: app/templates/timer/bulk_entry.html:253 -msgid "Skip Weekends" -msgstr "Ignorar os Fins de Semana" +#~ msgid "Agenda View" +#~ msgstr "Área de Agenda" -#: app/templates/timer/bulk_entry.html:254 -msgid "" -"Enable to automatically skip Saturdays and Sundays from the date range." -msgstr "" -"Habilite para pular automaticamente sábados e domingos a partir do intervalo" -" de datas." +#~ msgid "Create New Entry" +#~ msgstr "Criar um Novo Item" -#: app/templates/timer/bulk_entry.html:260 -msgid "Same Time Daily" -msgstr "Diariamente Mesmo Tempo" +#~ msgid "Focus Filter" +#~ msgstr "Filtro de Foco" -#: app/templates/timer/bulk_entry.html:261 -msgid "All entries will use the same start and end time each day." -msgstr "Todas as entradas usarão a mesma hora de início e fim todos os dias." +#~ msgid "Clear All Filters" +#~ msgstr "Limpar Todos os Filtros" -#: app/templates/timer/bulk_entry.html:267 -msgid "Conflict Check" -msgstr "Verificação de Conflitos" +#~ msgid "Close Modal" +#~ msgstr "Fechar Modal" -#: app/templates/timer/bulk_entry.html:268 -msgid "System will check for existing time entries and prevent overlaps." -msgstr "" -"O sistema verificará as entradas de tempo existentes e evitará " -"sobreposições." +#~ msgid "Show This Help" +#~ msgstr "Mostrar esta Ajuda" -#: app/templates/timer/bulk_entry.html:334 -#: app/templates/timer/manual_entry.html:348 -#: app/templates/timer/timer_page.html:264 -msgid "Failed to load tasks" -msgstr "Falha ao carregar as tarefas" - -#: app/templates/timer/bulk_entry.html:335 -msgid "Total days" -msgstr "Total de dias" - -#: app/templates/timer/bulk_entry.html:336 -msgid "Weekdays only" -msgstr "Apenas durante a semana" - -#: app/templates/timer/bulk_entry.html:338 -msgid "Entries will be created for" -msgstr "Serão criadas entradas para" - -#: app/templates/timer/calendar.html:35 -msgid "Agenda" -msgstr "Ordem do dia" - -#: app/templates/timer/calendar.html:52 -msgid "iCal Format" -msgstr "Formato iCal" - -#: app/templates/timer/calendar.html:53 -msgid "CSV Format" -msgstr "Formato CSV" - -#: app/templates/timer/calendar.html:72 -msgid "Filter by tags..." -msgstr "Filtrar por etiquetas..." - -#: app/templates/timer/calendar.html:75 -msgid "Show billable entries only" -msgstr "Mostrar apenas os itens de faturamento" - -#: app/templates/timer/calendar.html:76 -msgid "Billable Only" -msgstr "Apenas Billable" - -#: app/templates/timer/calendar.html:84 -msgid "Assign to project for new events..." -msgstr "Atribuir ao projeto para novos eventos..." - -#: app/templates/timer/calendar.html:92 -msgid "Total Hours:" -msgstr "Total de horas:" - -#: app/templates/timer/calendar.html:129 -#: app/templates/timer/calendar.html:1239 -msgid "Colors assigned by project" -msgstr "Cores atribuídas pelo projeto" +#~ msgid "Got it!" +#~ msgstr "Consegui!" -#: app/templates/timer/calendar.html:142 -msgid "Create Time Entry" -msgstr "Criar Entrada de Tempo" +#~ msgid "Failed to load events" +#~ msgstr "Falha ao carregar os eventos" -#: app/templates/timer/calendar.html:150 -msgid "Select a project..." -msgstr "Seleccionar um projecto..." +#~ msgid "Please select a project for new entries" +#~ msgstr "Selecione um projeto para novos itens" -#: app/templates/timer/calendar.html:249 -msgid "Recurring Time Blocks" -msgstr "Blocos de Tempo Recorrentes" +#~ msgid "Please select a project first" +#~ msgstr "Seleccione primeiro um projecto" -#: app/templates/timer/calendar.html:253 -msgid "Manage your recurring time entry templates." -msgstr "Gerencie seus modelos de entrada de tempo recorrentes." +#~ msgid "Showing billable entries only" +#~ msgstr "A mostrar apenas os itens billáveis" -#: app/templates/timer/calendar.html:261 -msgid "New Recurring Block" -msgstr "Novo Bloco Recorrente" +#~ msgid "Entry created successfully" +#~ msgstr "Entrada criada com sucesso" -#: app/templates/timer/calendar.html:280 -msgid "Jump to Today" -msgstr "Ir para Hoje" +#~ msgid "Failed to create entry" +#~ msgstr "Falha ao criar o item" -#: app/templates/timer/calendar.html:284 -msgid "Next Week/Month" -msgstr "Próxima semana/mês" +#~ msgid "Entry updated" +#~ msgstr "Entrada atualizada" -#: app/templates/timer/calendar.html:288 -msgid "Previous Week/Month" -msgstr "Semana anterior/Mês" +#~ msgid "Failed to update entry" +#~ msgstr "Falha ao atualizar o registro" -#: app/templates/timer/calendar.html:292 -msgid "Navigate Days" -msgstr "Navegar Dias" +#~ msgid "Are you sure you want to delete this entry?" +#~ msgstr "Tem a certeza de que deseja apagar este item?" -#: app/templates/timer/calendar.html:297 -msgid "Views" -msgstr "Vistas" +#~ msgid "Delete Entry" +#~ msgstr "Apagar o Item" -#: app/templates/timer/calendar.html:300 -msgid "Day View" -msgstr "Vista do Dia" +#~ msgid "Automatic Timer" +#~ msgstr "Temporizador automático" -#: app/templates/timer/calendar.html:304 -msgid "Week View" -msgstr "Vista Semanal" +#~ msgid "Entry deleted" +#~ msgstr "Entrada apagada" -#: app/templates/timer/calendar.html:308 -msgid "Month View" -msgstr "Vista Mês" +#~ msgid "Failed to delete entry" +#~ msgstr "Não foi possível remover o item" -#: app/templates/timer/calendar.html:312 -msgid "Agenda View" -msgstr "Área de Agenda" +#~ msgid "Export started" +#~ msgstr "Exportação iniciada" -#: app/templates/timer/calendar.html:320 -msgid "Create New Entry" -msgstr "Criar um Novo Item" +#~ msgid "No recurring blocks yet" +#~ msgstr "Nenhum bloco recorrente ainda" -#: app/templates/timer/calendar.html:324 -msgid "Focus Filter" -msgstr "Filtro de Foco" +#~ msgid "Unknown Project" +#~ msgstr "Projecto Desconhecido" -#: app/templates/timer/calendar.html:328 -msgid "Clear All Filters" -msgstr "Limpar Todos os Filtros" +#~ msgid "Failed to load recurring blocks" +#~ msgstr "Falha ao carregar blocos recorrentes" -#: app/templates/timer/calendar.html:332 -msgid "Close Modal" -msgstr "Fechar Modal" +#~ msgid "No events in this period" +#~ msgstr "Nenhum evento neste período" -#: app/templates/timer/calendar.html:340 -msgid "Show This Help" -msgstr "Mostrar esta Ajuda" +#~ msgid "Failed to load agenda view" +#~ msgstr "Falha ao carregar a visão da agenda" -#: app/templates/timer/calendar.html:346 -msgid "Got it!" -msgstr "Consegui!" +#~ msgid "Failed to load event details" +#~ msgstr "Falha ao carregar os detalhes do evento" -#: app/templates/timer/calendar.html:422 -msgid "Failed to load events" -msgstr "Falha ao carregar os eventos" +#~ msgid "Are you sure you want to delete this recurring block?" +#~ msgstr "Tem a certeza de que deseja apagar este bloco recorrente?" -#: app/templates/timer/calendar.html:436 -msgid "Please select a project for new entries" -msgstr "Selecione um projeto para novos itens" +#~ msgid "Delete Recurring Block" +#~ msgstr "Excluir bloco recorrente" -#: app/templates/timer/calendar.html:529 -msgid "Please select a project first" -msgstr "Seleccione primeiro um projecto" +#~ msgid "Recurring block deleted" +#~ msgstr "Bloco recorrente excluído" -#: app/templates/timer/calendar.html:599 -msgid "Showing billable entries only" -msgstr "A mostrar apenas os itens billáveis" +#~ msgid "Failed to delete recurring block" +#~ msgstr "Não foi possível apagar o bloco recorrente" -#: app/templates/timer/calendar.html:734 -msgid "Entry created successfully" -msgstr "Entrada criada com sucesso" +#~ msgid "Enter new start time (YYYY-MM-DD HH:MM):" +#~ msgstr "Digite a nova hora de início (AAAA-MM-DD HH:MM):" -#: app/templates/timer/calendar.html:744 -msgid "Failed to create entry" -msgstr "Falha ao criar o item" +#~ msgid "Entry duplicated successfully" +#~ msgstr "Entrada duplicada com sucesso" -#: app/templates/timer/calendar.html:767 -msgid "Entry updated" -msgstr "Entrada atualizada" +#~ msgid "Failed to duplicate entry" +#~ msgstr "Não foi possível duplicar o item" -#: app/templates/timer/calendar.html:771 -msgid "Failed to update entry" -msgstr "Falha ao atualizar o registro" +#~ msgid "Jumped to today" +#~ msgstr "Saltou para hoje" -#: app/templates/timer/calendar.html:828 -msgid "Are you sure you want to delete this entry?" -msgstr "Tem a certeza de que deseja apagar este item?" +#~ msgid "💡 Press ? to see keyboard shortcuts" +#~ msgstr "□ Pressione ? para ver atalhos de teclado" -#: app/templates/timer/calendar.html:829 -msgid "Delete Entry" -msgstr "Apagar o Item" +#~ msgid "Edit Time Entry" +#~ msgstr "Editar o Item de Hora" -#: app/templates/timer/calendar.html:890 -msgid "Automatic Timer" -msgstr "Temporizador automático" +#~ msgid "These updates will modify this time entry permanently." +#~ msgstr "Estas atualizações irão modificar este item de tempo permanentemente." -#: app/templates/timer/calendar.html:931 -msgid "Entry deleted" -msgstr "Entrada apagada" +#~ msgid "Confirm Changes" +#~ msgstr "Confirmar as Alterações" -#: app/templates/timer/calendar.html:937 -msgid "Failed to delete entry" -msgstr "Não foi possível remover o item" +#~ msgid "Confirm & Save" +#~ msgstr "Confirmar & salvar" -#: app/templates/timer/calendar.html:955 -msgid "Export started" -msgstr "Exportação iniciada" +#~ msgid "Admin Mode" +#~ msgstr "Modo de administração" -#: app/templates/timer/calendar.html:966 -msgid "No recurring blocks yet" -msgstr "Nenhum bloco recorrente ainda" +#~ msgid "Admin Mode:" +#~ msgstr "Modo de administração:" -#: app/templates/timer/calendar.html:979 -msgid "Unknown Project" -msgstr "Projecto Desconhecido" +#~ msgid "" +#~ "You can edit all fields of this" +#~ " time entry, including project, task, " +#~ "start/end times, and source." +#~ msgstr "" +#~ "Você pode editar todos os campos " +#~ "desta entrada de tempo, incluindo " +#~ "projeto, tarefa, horário de início/fim e" +#~ " fonte." -#: app/templates/timer/calendar.html:997 -msgid "Failed to load recurring blocks" -msgstr "Falha ao carregar blocos recorrentes" +#~ msgid "" +#~ "You can edit this entry's project, " +#~ "task, start and end times, and " +#~ "break." +#~ msgstr "" +#~ "Você pode editar o projeto desta " +#~ "entrada, tarefa, iniciar e terminar os" +#~ " tempos e quebrar." -#: app/templates/timer/calendar.html:1039 -msgid "No events in this period" -msgstr "Nenhum evento neste período" +#~ msgid "Select the project this time entry belongs to" +#~ msgstr "Selecione o projeto a que este item de tempo pertence" -#: app/templates/timer/calendar.html:1072 -msgid "Failed to load agenda view" -msgstr "Falha ao carregar a visão da agenda" +#~ msgid "Task (Optional)" +#~ msgstr "Tarefa (Opcional)" -#: app/templates/timer/calendar.html:1104 -msgid "Failed to load event details" -msgstr "Falha ao carregar os detalhes do evento" +#~ msgid "Select a specific task within the project" +#~ msgstr "Selecione uma tarefa específica dentro do projeto" -#: app/templates/timer/calendar.html:1115 -msgid "Are you sure you want to delete this recurring block?" -msgstr "Tem a certeza de que deseja apagar este bloco recorrente?" +#~ msgid "When the work started" +#~ msgstr "Quando o trabalho começou" -#: app/templates/timer/calendar.html:1117 -msgid "Delete Recurring Block" -msgstr "Excluir bloco recorrente" +#~ msgid "Time the work started" +#~ msgstr "Tempo de início do trabalho" -#: app/templates/timer/calendar.html:1133 -msgid "Recurring block deleted" -msgstr "Bloco recorrente excluído" +#~ msgid "When the work ended (leave empty if still running)" +#~ msgstr "" +#~ "Quando o trabalho terminou (deixar em" +#~ " branco se ainda estiver em execução)" -#: app/templates/timer/calendar.html:1136 -msgid "Failed to delete recurring block" -msgstr "Não foi possível apagar o bloco recorrente" +#~ msgid "Time the work ended" +#~ msgstr "Tempo de término do trabalho" -#: app/templates/timer/calendar.html:1147 -msgid "Enter new start time (YYYY-MM-DD HH:MM):" -msgstr "Digite a nova hora de início (AAAA-MM-DD HH:MM):" +#~ msgid "Break duration (HH:MM). Subtracted from total to get worked duration." +#~ msgstr "" +#~ "Duração da interrupção (HH:MM). Subtraído " +#~ "do total para obter duração trabalhada." -#: app/templates/timer/calendar.html:1180 -msgid "Entry duplicated successfully" -msgstr "Entrada duplicada com sucesso" +#~ msgid "Automatic" +#~ msgstr "Automático" -#: app/templates/timer/calendar.html:1186 -msgid "Failed to duplicate entry" -msgstr "Não foi possível duplicar o item" +#~ msgid "How this entry was created" +#~ msgstr "Como esta entrada foi criada" -#: app/templates/timer/calendar.html:1329 -msgid "Jumped to today" -msgstr "Saltou para hoje" +#~ msgid "Duration:" +#~ msgstr "Duração:" -#: app/templates/timer/calendar.html:1413 -msgid "💡 Press ? to see keyboard shortcuts" -msgstr "□ Pressione ? para ver atalhos de teclado" +#~ msgid "Describe what you worked on" +#~ msgstr "Descreva em que trabalhou" -#: app/templates/timer/edit_timer.html:3 -#: app/templates/timer/edit_timer.html:180 -msgid "Edit Time Entry" -msgstr "Editar o Item de Hora" +#~ msgid "tag1, tag2" +#~ msgstr "tag1, tag2" -#: app/templates/timer/edit_timer.html:104 -msgid "These updates will modify this time entry permanently." -msgstr "Estas atualizações irão modificar este item de tempo permanentemente." +#~ msgid "Separate tags with commas" +#~ msgstr "Marcas separadas com vírgulas" -#: app/templates/timer/edit_timer.html:106 -msgid "Confirm Changes" -msgstr "Confirmar as Alterações" +#~ msgid "Internal invoice reference" +#~ msgstr "Referência interna da factura" -#: app/templates/timer/edit_timer.html:107 -msgid "Confirm & Save" -msgstr "Confirmar & salvar" +#~ msgid "Reference to internal invoice number" +#~ msgstr "Referência ao número da factura interna" -#: app/templates/timer/edit_timer.html:188 -msgid "Admin Mode" -msgstr "Modo de administração" +#~ msgid "Reason for Change" +#~ msgstr "Razão da Mudança" -#: app/templates/timer/edit_timer.html:204 -msgid "Admin Mode:" -msgstr "Modo de administração:" +#~ msgid "Optional but recommended" +#~ msgstr "Opcional mas recomendado" -#: app/templates/timer/edit_timer.html:204 -msgid "" -"You can edit all fields of this time entry, including project, task, " -"start/end times, and source." -msgstr "" -"Você pode editar todos os campos desta entrada de tempo, incluindo projeto, " -"tarefa, horário de início/fim e fonte." +#~ msgid "e.g., Corrected duration, updated project assignment, etc." +#~ msgstr "Por exemplo, duração corrigida, atribuição atualizada do projeto, etc." -#: app/templates/timer/edit_timer.html:215 -msgid "" -"You can edit this entry's project, task, start and end times, and break." -msgstr "" -"Você pode editar o projeto desta entrada, tarefa, iniciar e terminar os " -"tempos e quebrar." +#~ msgid "Explain why you are making these changes" +#~ msgstr "Explique por que está fazendo essas mudanças" -#: app/templates/timer/edit_timer.html:238 -msgid "Select the project this time entry belongs to" -msgstr "Selecione o projeto a que este item de tempo pertence" +#~ msgid "Task:" +#~ msgstr "Tarefa:" -#: app/templates/timer/edit_timer.html:242 -msgid "Task (Optional)" -msgstr "Tarefa (Opcional)" +#~ msgid "Start:" +#~ msgstr "Início:" -#: app/templates/timer/edit_timer.html:252 -msgid "Select a specific task within the project" -msgstr "Selecione uma tarefa específica dentro do projeto" +#~ msgid "End:" +#~ msgstr "Fim:" -#: app/templates/timer/edit_timer.html:264 -msgid "When the work started" -msgstr "Quando o trabalho começou" +#~ msgid "Entry Details" +#~ msgstr "Detalhes do Item" -#: app/templates/timer/edit_timer.html:272 -msgid "Time the work started" -msgstr "Tempo de início do trabalho" +#~ msgid "Admin Notice" +#~ msgstr "Aviso de administração" -#: app/templates/timer/edit_timer.html:284 -msgid "When the work ended (leave empty if still running)" -msgstr "" -"Quando o trabalho terminou (deixar em branco se ainda estiver em execução)" +#~ msgid "" +#~ "As an admin, you have full editing" +#~ " privileges for this time entry. " +#~ "Changes will be logged for audit " +#~ "purposes." +#~ msgstr "" +#~ "Como administrador, você tem privilégios " +#~ "de edição completos para esta entrada" +#~ " de tempo. As alterações serão " +#~ "registadas para efeitos de auditoria." -#: app/templates/timer/edit_timer.html:292 -msgid "Time the work ended" -msgstr "Tempo de término do trabalho" +#~ msgid "Duplicate Entry" +#~ msgstr "Duplicar o Item" -#: app/templates/timer/edit_timer.html:300 -msgid "Break duration (HH:MM). Subtracted from total to get worked duration." -msgstr "" -"Duração da interrupção (HH:MM). Subtraído do total para obter duração " -"trabalhada." - -#: app/templates/timer/edit_timer.html:313 -#: app/templates/timer/edit_timer.html:439 -msgid "Automatic" -msgstr "Automático" - -#: app/templates/timer/edit_timer.html:315 -msgid "How this entry was created" -msgstr "Como esta entrada foi criada" - -#: app/templates/timer/edit_timer.html:328 -#: app/templates/timer/edit_timer.html:431 -msgid "Duration:" -msgstr "Duração:" - -#: app/templates/timer/edit_timer.html:340 -#: app/templates/timer/edit_timer.html:451 -#: app/templates/timer/edit_timer.html:606 -msgid "Describe what you worked on" -msgstr "Descreva em que trabalhou" - -#: app/templates/timer/edit_timer.html:350 -#: app/templates/timer/edit_timer.html:462 -#: app/templates/timer/manual_entry.html:149 -msgid "tag1, tag2" -msgstr "tag1, tag2" - -#: app/templates/timer/edit_timer.html:351 -#: app/templates/timer/edit_timer.html:463 -msgid "Separate tags with commas" -msgstr "Marcas separadas com vírgulas" - -#: app/templates/timer/edit_timer.html:368 -#: app/templates/timer/edit_timer.html:489 -msgid "Internal invoice reference" -msgstr "Referência interna da factura" - -#: app/templates/timer/edit_timer.html:369 -#: app/templates/timer/edit_timer.html:490 -msgid "Reference to internal invoice number" -msgstr "Referência ao número da factura interna" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -msgid "Reason for Change" -msgstr "Razão da Mudança" - -#: app/templates/timer/edit_timer.html:376 -#: app/templates/timer/edit_timer.html:497 -#: app/templates/timer/time_entries_overview.html:175 -msgid "Optional but recommended" -msgstr "Opcional mas recomendado" - -#: app/templates/timer/edit_timer.html:378 -#: app/templates/timer/edit_timer.html:499 -msgid "e.g., Corrected duration, updated project assignment, etc." -msgstr "" -"Por exemplo, duração corrigida, atribuição atualizada do projeto, etc." +#~ msgid "Duplicate Time Entry" +#~ msgstr "Duplicar o Item de Hora" -#: app/templates/timer/edit_timer.html:379 -#: app/templates/timer/edit_timer.html:500 -msgid "Explain why you are making these changes" -msgstr "Explique por que está fazendo essas mudanças" +#~ msgid "Log Time Manually" +#~ msgstr "Tempo de Registo Manualmente" -#: app/templates/timer/edit_timer.html:412 -msgid "Task:" -msgstr "Tarefa:" +#~ msgid "Create a copy of a previous entry with new times" +#~ msgstr "Criar uma cópia de um item anterior com novos tempos" -#: app/templates/timer/edit_timer.html:417 -msgid "Start:" -msgstr "Início:" +#~ msgid "Create a new time entry" +#~ msgstr "Criar um novo item de tempo" -#: app/templates/timer/edit_timer.html:421 -msgid "End:" -msgstr "Fim:" +#~ msgid "Duplicating entry:" +#~ msgstr "Duplicando entrada:" -#: app/templates/timer/edit_timer.html:525 -#: app/templates/timer/view_timer.html:24 -msgid "Entry Details" -msgstr "Detalhes do Item" +#~ msgid "Original:" +#~ msgstr "Original:" -#: app/templates/timer/edit_timer.html:547 -msgid "Admin Notice" -msgstr "Aviso de administração" +#~ msgid "to" +#~ msgstr "para" -#: app/templates/timer/edit_timer.html:550 -msgid "" -"As an admin, you have full editing privileges for this time entry. Changes " -"will be logged for audit purposes." -msgstr "" -"Como administrador, você tem privilégios de edição completos para esta " -"entrada de tempo. As alterações serão registadas para efeitos de auditoria." +#~ msgid "Project & task" +#~ msgstr "& tarefa do projeto" -#: app/templates/timer/manual_entry.html:8 -msgid "Duplicate Entry" -msgstr "Duplicar o Item" +#~ msgid "Date & time" +#~ msgstr "Data e hora" -#: app/templates/timer/manual_entry.html:13 -msgid "Duplicate Time Entry" -msgstr "Duplicar o Item de Hora" +#~ msgid "Worked Time" +#~ msgstr "Tempo de Trabalho" -#: app/templates/timer/manual_entry.html:13 -msgid "Log Time Manually" -msgstr "Tempo de Registo Manualmente" +#~ msgid "" +#~ "Optional: enter HH:MM for duration. You" +#~ " can combine with Start Date/Time to" +#~ " log time on a specific day." +#~ msgstr "" +#~ "Opcional: insira HH:MM durante a " +#~ "duração. Você pode combinar com a " +#~ "data de início / hora para " +#~ "registrar o tempo em um dia " +#~ "específico." -#: app/templates/timer/manual_entry.html:14 -msgid "Create a copy of a previous entry with new times" -msgstr "Criar uma cópia de um item anterior com novos tempos" +#~ msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" +#~ msgstr "" +#~ "Sugira pausa com base na duração " +#~ "(por exemplo, > 6h: 30 min, > " +#~ "9h: 45 min)" -#: app/templates/timer/manual_entry.html:14 -msgid "Create a new time entry" -msgstr "Criar um novo item de tempo" +#~ msgid "Suggest" +#~ msgstr "Sugerir" -#: app/templates/timer/manual_entry.html:25 -msgid "Duplicating entry:" -msgstr "Duplicando entrada:" +#~ msgid "" +#~ "Optional: break duration (HH:MM). Subtracted" +#~ " from total time to get worked " +#~ "duration." +#~ msgstr "" +#~ "Opcional: duração de ruptura (HH:MM). " +#~ "Subtraído do tempo total para trabalhar" +#~ " a duração." -#: app/templates/timer/manual_entry.html:33 -msgid "Original:" -msgstr "Original:" +#~ msgid "Session may have expired. Please refresh the page and try again." +#~ msgstr "" +#~ "A sessão pode ter expirado. Por " +#~ "favor, atualize a página e tente " +#~ "novamente." -#: app/templates/timer/manual_entry.html:33 -msgid "to" -msgstr "para" +#~ msgid "Project not found or inactive" +#~ msgstr "Projeto não encontrado ou inativo" -#: app/templates/timer/manual_entry.html:57 -msgid "Project & task" -msgstr "& tarefa do projeto" +#~ msgid "What did you work on?" +#~ msgstr "Em que trabalhaste?" -#: app/templates/timer/manual_entry.html:92 -msgid "Date & time" -msgstr "Data e hora" +#~ msgid "Time Entries Export" +#~ msgstr "Exportar Entradas de Tempo" -#: app/templates/timer/manual_entry.html:117 -msgid "Worked Time" -msgstr "Tempo de Trabalho" +#~ msgid "Generated at" +#~ msgstr "Gerado em" -#: app/templates/timer/manual_entry.html:119 -msgid "" -"Optional: enter HH:MM for duration. You can combine with Start Date/Time to " -"log time on a specific day." -msgstr "" -"Opcional: insira HH:MM durante a duração. Você pode combinar com a data de " -"início / hora para registrar o tempo em um dia específico." +#~ msgid "View and manage all time entries" +#~ msgstr "Ver e gerenciar todos os itens de tempo" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest break based on duration (e.g. >6h: 30 min, >9h: 45 min)" -msgstr "" -"Sugira pausa com base na duração (por exemplo, > 6h: 30 min, > 9h: 45 min)" +#~ msgid "Paid Hours" +#~ msgstr "Horas pagas" -#: app/templates/timer/manual_entry.html:125 -msgid "Suggest" -msgstr "Sugerir" +#~ msgid "Apply filters" +#~ msgstr "Aplicar filtros" -#: app/templates/timer/manual_entry.html:127 -msgid "" -"Optional: break duration (HH:MM). Subtracted from total time to get worked " -"duration." -msgstr "" -"Opcional: duração de ruptura (HH:MM). Subtraído do tempo total para " -"trabalhar a duração." +#~ msgid "Toggle filters" +#~ msgstr "Alternar os filtros" -#: app/templates/timer/manual_entry.html:398 -msgid "Session may have expired. Please refresh the page and try again." -msgstr "" -"A sessão pode ter expirado. Por favor, atualize a página e tente novamente." +#~ msgid "Paid Status" +#~ msgstr "Estado Pago" -#: app/templates/timer/manual_entry.html:410 -msgid "Project not found or inactive" -msgstr "Projeto não encontrado ou inativo" +#~ msgid "Billable Status" +#~ msgstr "Estado Billável" -#: app/templates/timer/manual_entry.html:780 -msgid "What did you work on?" -msgstr "Em que trabalhaste?" +#~ msgid "Search in notes and tags..." +#~ msgstr "Procurar em notas e etiquetas..." -#: app/templates/timer/time_entries_export_pdf.html:2 -#: app/templates/timer/time_entries_export_pdf.html:5 -msgid "Time Entries Export" -msgstr "Exportar Entradas de Tempo" +#~ msgid "Delete Selected Time Entries" +#~ msgstr "Apagar os Entradas de Tempo Seleccionados" -#: app/templates/timer/time_entries_export_pdf.html:7 -msgid "Generated at" -msgstr "Gerado em" +#~ msgid "Reason for Deletion" +#~ msgstr "Motivo da exclusão" -#: app/templates/timer/time_entries_overview.html:15 -msgid "View and manage all time entries" -msgstr "Ver e gerenciar todos os itens de tempo" +#~ msgid "e.g., Duplicate entry, incorrect time, etc." +#~ msgstr "Por exemplo, entrada duplicada, tempo incorreto, etc." -#: app/templates/timer/time_entries_overview.html:24 -msgid "Paid Hours" -msgstr "Horas pagas" +#~ msgid "Mark Selected Entries as Paid/Unpaid" +#~ msgstr "Marcar entradas selecionadas como pagas/não pagas" -#: app/templates/timer/time_entries_overview.html:34 -#: app/templates/timer/time_entries_overview.html:35 -#: app/templates/timer/time_entries_overview.html:134 -msgid "Apply filters" -msgstr "Aplicar filtros" - -#: app/templates/timer/time_entries_overview.html:58 -msgid "Toggle filters" -msgstr "Alternar os filtros" - -#: app/templates/timer/time_entries_overview.html:102 -msgid "Paid Status" -msgstr "Estado Pago" +#~ msgid "e.g., Invoice number or payment reference" +#~ msgstr "Por exemplo, número da factura ou referência de pagamento" -#: app/templates/timer/time_entries_overview.html:110 -msgid "Billable Status" -msgstr "Estado Billável" +#~ msgid "Please select at least one time entry" +#~ msgstr "Seleccione pelo menos uma vez o item" -#: app/templates/timer/time_entries_overview.html:119 -msgid "Search in notes and tags..." -msgstr "Procurar em notas e etiquetas..." +#~ msgid "time entry/entries" +#~ msgstr "data de entrada/entrada" -#: app/templates/timer/time_entries_overview.html:171 -msgid "Delete Selected Time Entries" -msgstr "Apagar os Entradas de Tempo Seleccionados" +#~ msgid "Track your time with a visual timer" +#~ msgstr "Acompanhe o seu tempo com um temporizador visual" -#: app/templates/timer/time_entries_overview.html:175 -msgid "Reason for Deletion" -msgstr "Motivo da exclusão" +#~ msgid "Estimated Completion" +#~ msgstr "Conclusão estimada" -#: app/templates/timer/time_entries_overview.html:177 -msgid "e.g., Duplicate entry, incorrect time, etc." -msgstr "Por exemplo, entrada duplicada, tempo incorreto, etc." +#~ msgid "Calculating..." +#~ msgstr "Calculando..." -#: app/templates/timer/time_entries_overview.html:195 -msgid "Mark Selected Entries as Paid/Unpaid" -msgstr "Marcar entradas selecionadas como pagas/não pagas" +#~ msgid "Based on average session duration" +#~ msgstr "Com base na duração média da sessão" -#: app/templates/timer/time_entries_overview.html:203 -msgid "e.g., Invoice number or payment reference" -msgstr "Por exemplo, número da factura ou referência de pagamento" +#~ msgid "No active timer. Start one below!" +#~ msgstr "Sem temporizador activo. Comecem um abaixo!" -#: app/templates/timer/time_entries_overview.html:322 -#: app/templates/timer/time_entries_overview.html:384 -msgid "Please select at least one time entry" -msgstr "Seleccione pelo menos uma vez o item" +#~ msgid "Start New Timer" +#~ msgstr "Iniciar um Novo Temporizador" -#: app/templates/timer/time_entries_overview.html:388 -msgid "time entry/entries" -msgstr "data de entrada/entrada" +#~ msgid "Add notes about what you're working on..." +#~ msgstr "Adicione notas sobre o que está a trabalhar..." -#: app/templates/timer/timer_page.html:13 -msgid "Track your time with a visual timer" -msgstr "Acompanhe o seu tempo com um temporizador visual" +#~ msgid "Or use a template" +#~ msgstr "Ou usar um modelo" -#: app/templates/timer/timer_page.html:100 -msgid "Estimated Completion" -msgstr "Conclusão estimada" +#~ msgid "Recent Projects" +#~ msgstr "Projetos Recentes" -#: app/templates/timer/timer_page.html:102 -msgid "Calculating..." -msgstr "Calculando..." +#~ msgid "Today's Stats" +#~ msgstr "Estatísticas de hoje" -#: app/templates/timer/timer_page.html:105 -msgid "Based on average session duration" -msgstr "Com base na duração média da sessão" +#~ msgid "View Entry" +#~ msgstr "Ver Item" -#: app/templates/timer/timer_page.html:122 -msgid "No active timer. Start one below!" -msgstr "Sem temporizador activo. Comecem um abaixo!" +#~ msgid "View time entry details" +#~ msgstr "Ver os detalhes do item da hora" -#: app/templates/timer/timer_page.html:130 -msgid "Start New Timer" -msgstr "Iniciar um Novo Temporizador" +#~ msgid "Project & Client" +#~ msgstr "& Cliente do Projeto" -#: app/templates/timer/timer_page.html:171 -msgid "Add notes about what you're working on..." -msgstr "Adicione notas sobre o que está a trabalhar..." +#~ msgid "Approval" +#~ msgstr "Aprovação" -#: app/templates/timer/timer_page.html:177 -msgid "Or use a template" -msgstr "Ou usar um modelo" +#~ msgid "Status & Billing" +#~ msgstr "Estado & Faturação" -#: app/templates/timer/timer_page.html:220 -msgid "Recent Projects" -msgstr "Projetos Recentes" +#~ msgid "" +#~ "Supporter badge: confirm your key and" +#~ " thank you for funding development." +#~ msgstr "" +#~ "Emblema de apoio: confirme sua chave " +#~ "e obrigado pelo desenvolvimento do " +#~ "financiamento." -#: app/templates/timer/timer_page.html:238 -msgid "Today's Stats" -msgstr "Estatísticas de hoje" +#~ msgid "License status" +#~ msgstr "Estado da licença" -#: app/templates/timer/view_timer.html:9 -msgid "View Entry" -msgstr "Ver Item" +#~ msgid "Supporter license active" +#~ msgstr "Licença de suporte ativa" -#: app/templates/timer/view_timer.html:15 -msgid "View time entry details" -msgstr "Ver os detalhes do item da hora" +#~ msgid "" +#~ "Thank you for supporting TimeTracker. " +#~ "Your badge confirms this instance as " +#~ "a supporter — no features are " +#~ "locked." +#~ msgstr "" +#~ "Obrigado por apoiar o TimeTracker. Seu" +#~ " crachá confirma esta instância como " +#~ "um apoiante — nenhum recurso está " +#~ "bloqueado." -#: app/templates/timer/view_timer.html:67 -msgid "Project & Client" -msgstr "& Cliente do Projeto" +#~ msgid "Not activated" +#~ msgstr "Não ativado" -#: app/templates/timer/view_timer.html:104 -msgid "Approval" -msgstr "Aprovação" +#~ msgid "" +#~ "Purchase a supporter license (€25) to" +#~ " unlock the supporter badge for this" +#~ " instance. The app stays fully free" +#~ " either way." +#~ msgstr "" +#~ "Compre uma licença de suporte (€25) " +#~ "para desbloquear o crachá de suporte " +#~ "para este exemplo. O aplicativo " +#~ "permanece totalmente livre de qualquer " +#~ "forma." -#: app/templates/timer/view_timer.html:115 -msgid "Status & Billing" -msgstr "Estado & Faturação" +#~ msgid "Enter license key" +#~ msgstr "Digite a chave de licença" -#: app/templates/user/license.html:8 -msgid "" -"Supporter badge: confirm your key and thank you for funding development." -msgstr "" -"Emblema de apoio: confirme sua chave e obrigado pelo desenvolvimento do " -"financiamento." +#~ msgid "Paste the license key you received by email after purchase." +#~ msgstr "Colar a chave de licença recebida por e-mail após a compra." -#: app/templates/user/license.html:12 -msgid "License status" -msgstr "Estado da licença" +#~ msgid "License key" +#~ msgstr "Chave de licença" -#: app/templates/user/license.html:16 -msgid "Supporter license active" -msgstr "Licença de suporte ativa" +#~ msgid "Paste your key here" +#~ msgstr "Colar a sua chave aqui" -#: app/templates/user/license.html:18 -msgid "" -"Thank you for supporting TimeTracker. Your badge confirms this instance as a" -" supporter — no features are locked." -msgstr "" -"Obrigado por apoiar o TimeTracker. Seu crachá confirma esta instância como " -"um apoiante — nenhum recurso está bloqueado." +#~ msgid "Validate" +#~ msgstr "Validar" -#: app/templates/user/license.html:22 -msgid "Not activated" -msgstr "Não ativado" +#~ msgid "Need a key?" +#~ msgstr "Precisas de uma chave?" -#: app/templates/user/license.html:25 -msgid "" -"Purchase a supporter license (€25) to unlock the supporter badge for this " -"instance. The app stays fully free either way." -msgstr "" -"Compre uma licença de suporte (€25) para desbloquear o crachá de suporte " -"para este exemplo. O aplicativo permanece totalmente livre de qualquer " -"forma." +#~ msgid "Purchase a license key" +#~ msgstr "Compre uma chave de licença" -#: app/templates/user/license.html:35 -msgid "Enter license key" -msgstr "Digite a chave de licença" +#~ msgid "Back to Settings" +#~ msgstr "Voltar à Configuração" -#: app/templates/user/license.html:36 -msgid "Paste the license key you received by email after purchase." -msgstr "Colar a chave de licença recebida por e-mail após a compra." +#~ msgid "Profile" +#~ msgstr "Perfil" -#: app/templates/user/license.html:40 -msgid "License key" -msgstr "Chave de licença" +#~ msgid "In progress" +#~ msgstr "Em curso" -#: app/templates/user/license.html:43 -msgid "Paste your key here" -msgstr "Colar a sua chave aqui" +#~ msgid "View all time entries" +#~ msgstr "Ver todos os itens de tempo" + +#~ msgid "No recent time entries" +#~ msgstr "Nenhum registro de tempo recente" + +#~ msgid "Manage your account settings and preferences" +#~ msgstr "Gerencie as configurações e preferências da sua conta" + +#~ msgid "Support & Community" +#~ msgstr "Suporte & Comunidade" + +#~ msgid "" +#~ "TimeTracker is free and open source. " +#~ "Funding comes from optional donations " +#~ "and supporter licenses — never from " +#~ "locking features." +#~ msgstr "" +#~ "TimeTracker é livre e código aberto. " +#~ "O financiamento vem de doações opcionais" +#~ " e licenças de suporte — nunca " +#~ "de recursos de bloqueio." + +#~ msgid "" +#~ "This instance already has a supporter" +#~ " license. Thank you — you can " +#~ "still donate or share the app " +#~ "anytime." +#~ msgstr "" +#~ "Esta instância já tem uma licença " +#~ "de suporte. Obrigado — você ainda " +#~ "pode doar ou compartilhar o aplicativo" +#~ " a qualquer momento." + +#~ msgid "" +#~ "If the app saves you time, you " +#~ "can donate or buy a supporter " +#~ "license (€25). A license shows a " +#~ "Supporter badge; it does not change " +#~ "what you can use." +#~ msgstr "" +#~ "Se o aplicativo economizar tempo, você" +#~ " pode doar ou comprar uma licença " +#~ "de suporte (€25). Uma licença mostra " +#~ "um crachá do Suporte; ele não " +#~ "altera o que você pode usar." + +#~ msgid "License & supporter key" +#~ msgstr "Chave de & suporte de licença" + +#~ msgid "Checkout on timetracker.drytrix.com" +#~ msgstr "Confira no timetracker.drytrix.com" -#: app/templates/user/license.html:46 -msgid "Validate" -msgstr "Validar" +#~ msgid "Profile Information" +#~ msgstr "Informação do Perfil" -#: app/templates/user/license.html:50 -msgid "Need a key?" -msgstr "Precisas de uma chave?" +#~ msgid "Username cannot be changed" +#~ msgstr "O utilizador não pode ser alterado" -#: app/templates/user/license.html:51 -msgid "Purchase a license key" -msgstr "Compre uma chave de licença" +#~ msgid "Required for email notifications" +#~ msgstr "Necessário para notificações por e- mail" -#: app/templates/user/license.html:57 -msgid "Back to Settings" -msgstr "Voltar à Configuração" +#~ msgid "Notification Preferences" +#~ msgstr "Preferências de notificação" -#: app/templates/user/profile.html:2 -msgid "Profile" -msgstr "Perfil" +#~ msgid "Enable Email Notifications" +#~ msgstr "Habilitar notificações de e- mail" -#: app/templates/user/profile.html:106 -msgid "In progress" -msgstr "Em curso" +#~ msgid "Master switch for all email notifications" +#~ msgstr "Mudança mestre para todas as notificações de e- mail" -#: app/templates/user/profile.html:120 -msgid "View all time entries" -msgstr "Ver todos os itens de tempo" +#~ msgid "Overdue Invoice Notifications" +#~ msgstr "Notificações de fatura excessiva" -#: app/templates/user/profile.html:124 -msgid "No recent time entries" -msgstr "Nenhum registro de tempo recente" +#~ msgid "Task Assignment Notifications" +#~ msgstr "Notificações de atribuição de tarefas" -#: app/templates/user/settings.html:8 -msgid "Manage your account settings and preferences" -msgstr "Gerencie as configurações e preferências da sua conta" +#~ msgid "Comment & Mention Notifications" +#~ msgstr "Comentar & mencionar notificações" -#: app/templates/user/settings.html:14 -msgid "Support & Community" -msgstr "Suporte & Comunidade" +#~ msgid "Weekly Time Summary Email" +#~ msgstr "E-mail de resumo da hora semanal" -#: app/templates/user/settings.html:19 -msgid "" -"TimeTracker is free and open source. Funding comes from optional donations " -"and supporter licenses — never from locking features." -msgstr "" -"TimeTracker é livre e código aberto. O financiamento vem de doações " -"opcionais e licenças de suporte — nunca de recursos de bloqueio." +#~ msgid "Remind me to log time at end of day" +#~ msgstr "Lembre-me de registrar o tempo no final do dia" -#: app/templates/user/settings.html:21 -msgid "" -"This instance already has a supporter license. Thank you — you can still " -"donate or share the app anytime." -msgstr "" -"Esta instância já tem uma licença de suporte. Obrigado — você ainda pode " -"doar ou compartilhar o aplicativo a qualquer momento." +#~ msgid "Reminder time (your timezone)" +#~ msgstr "Hora do lembrete (seu fuso horário)" -#: app/templates/user/settings.html:23 -msgid "" -"If the app saves you time, you can donate or buy a supporter license (€25). " -"A license shows a Supporter badge; it does not change what you can use." -msgstr "" -"Se o aplicativo economizar tempo, você pode doar ou comprar uma licença de " -"suporte (€25). Uma licença mostra um crachá do Suporte; ele não altera o que" -" você pode usar." +#~ msgid "In-app reminders (toasts)" +#~ msgstr "Avisos no aplicativo (torrados)" -#: app/templates/user/settings.html:27 -msgid "License & supporter key" -msgstr "Chave de & suporte de licença" +#~ msgid "Enable smart notifications on this device" +#~ msgstr "Habilitar notificações inteligentes neste dispositivo" -#: app/templates/user/settings.html:28 -msgid "Checkout on timetracker.drytrix.com" -msgstr "Confira no timetracker.drytrix.com" +#~ msgid "" +#~ "Nudge when no time logged today " +#~ "(uses hour from app settings or " +#~ "override below)" +#~ msgstr "" +#~ "Rudge quando não houver tempo registrado" +#~ " hoje (usa a hora das configurações" +#~ " do aplicativo ou sobreponha-se " +#~ "abaixo)" + +#~ msgid "Alert when a timer runs longer than the configured threshold" +#~ msgstr "Alerta quando um temporizador é mais longo do que o limiar configurado" + +#~ msgid "End-of-day summary (logged hours today)" +#~ msgstr "Resumo do fim do dia (horas marcadas hoje)" + +#~ msgid "Also use browser notifications when permission is granted" +#~ msgstr "Também usar notificações do navegador quando a permissão é concedida" + +#~ msgid "No-tracking nudge hour (optional override, HH:MM)" +#~ msgstr "Hora do empurrão sem seguimento (sobreposição opcional, HH:MM)" + +#~ msgid "Summary hour (optional override, HH:MM)" +#~ msgstr "Hora de resumo (sobreposição opcional, HH:MM)" + +#~ msgid "Display Preferences" +#~ msgstr "Preferências de exibição" + +#~ msgid "System Default" +#~ msgstr "Padrão do Sistema" + +#~ msgid "Time Rounding Preferences" +#~ msgstr "Preferências de arredondamento de tempo" + +#~ msgid "" +#~ "Configure how your time entries are " +#~ "rounded. This affects how durations are" +#~ " calculated when you stop timers." +#~ msgstr "" +#~ "Configure como seus itens de tempo " +#~ "são arredondados. Isso afeta como as " +#~ "durações são calculadas quando você pára" +#~ " os timers." + +#~ msgid "Enable Time Rounding" +#~ msgstr "Habilitar arredondamento de tempo" -#: app/templates/user/settings.html:40 -msgid "Profile Information" -msgstr "Informação do Perfil" +#~ msgid "Round time entries to configured intervals" +#~ msgstr "Entradas de tempo de rodada para intervalos configurados" -#: app/templates/user/settings.html:53 -msgid "Username cannot be changed" -msgstr "O utilizador não pode ser alterado" +#~ msgid "Rounding Interval" +#~ msgstr "Intervalo de arredondamento" -#: app/templates/user/settings.html:71 -msgid "Required for email notifications" -msgstr "Necessário para notificações por e- mail" +#~ msgid "Time entries will be rounded to this interval" +#~ msgstr "As entradas de tempo serão arredondadas para este intervalo" -#: app/templates/user/settings.html:81 -msgid "Notification Preferences" -msgstr "Preferências de notificação" +#~ msgid "Rounding Method" +#~ msgstr "Método de arredondamento" -#: app/templates/user/settings.html:93 -msgid "Enable Email Notifications" -msgstr "Habilitar notificações de e- mail" +#~ msgid "Overtime Settings" +#~ msgstr "Configuração das horas extraordinárias" -#: app/templates/user/settings.html:94 -msgid "Master switch for all email notifications" -msgstr "Mudança mestre para todas as notificações de e- mail" +#~ msgid "" +#~ "Choose whether overtime is calculated " +#~ "per day or per week, and set " +#~ "your standard hours accordingly." +#~ msgstr "" +#~ "Escolha se as horas extras são " +#~ "calculadas por dia ou por semana, " +#~ "e defina suas horas padrão de " +#~ "acordo." + +#~ msgid "Calculate overtime by" +#~ msgstr "Calcular horas extraordinárias por" + +#~ msgid "Daily hours" +#~ msgstr "Horas diárias" + +#~ msgid "Weekly hours" +#~ msgstr "Horas semanais" + +#~ msgid "Standard Hours Per Day" +#~ msgstr "Horas padrão por dia" + +#~ msgid "Typically 8 hours for a full-time job" +#~ msgstr "Normalmente 8 horas para um trabalho a tempo inteiro" + +#~ msgid "Standard Hours Per Week" +#~ msgstr "Horas padrão por semana" + +#~ msgid "e.g. 20 for a part-time week, 40 for full-time" +#~ msgstr "" +#~ "Por exemplo, 20 para uma semana a" +#~ " tempo parcial, 40 para um período" +#~ " a tempo inteiro" + +#~ msgid "How it works" +#~ msgstr "Como funciona" + +#~ msgid "" +#~ "If you work more than your " +#~ "standard hours in a day, the extra" +#~ " time will be tracked as overtime " +#~ "in reports and analytics." +#~ msgstr "" +#~ "Se você trabalhar mais do que suas" +#~ " horas padrão em um dia, o " +#~ "tempo extra será rastreado como horas" +#~ " extras em relatórios e análises." + +#~ msgid "" +#~ "Overtime is calculated per week: any " +#~ "hours beyond your standard hours per " +#~ "week count as overtime. Suited for " +#~ "contracts based on weekly hours." +#~ msgstr "" +#~ "Overtime é calculado por semana: " +#~ "quaisquer horas além de suas horas " +#~ "padrão por semana contam como horas " +#~ "extras. Acomodado para contratos com " +#~ "base em horas semanais." + +#~ msgid "Count weekend hours in overtime" +#~ msgstr "Contar horas de fim de semana em horas extras" + +#~ msgid "" +#~ "When unchecked, any hours worked on " +#~ "Saturday or Sunday are always counted" +#~ " as overtime." +#~ msgstr "" +#~ "Quando descontrolados, as horas trabalhadas" +#~ " no sábado ou domingo são sempre " +#~ "contadas como horas extras." + +#~ msgid "Regional Settings" +#~ msgstr "Configuração Regional" + +#~ msgid "Use system default" +#~ msgstr "Usar o sistema por omissão" + +#~ msgid "Time Format" +#~ msgstr "Formato de Hora" + +#~ msgid "Week Starts On" +#~ msgstr "Início da Semana" + +#~ msgid "Sunday" +#~ msgstr "Domingo" + +#~ msgid "Monday" +#~ msgstr "Segunda-feira" + +#~ msgid "Saturday" +#~ msgstr "Sábado" + +#~ msgid "Calendar default view" +#~ msgstr "Vista por omissão do calendário" + +#~ msgid "Remember last view" +#~ msgstr "Recordar a última vista" + +#~ msgid "" +#~ "Support visibility (hiding donate/support UI)" +#~ " is configured system-wide by " +#~ "administrators in Admin → Settings." +#~ msgstr "" +#~ "A visibilidade do suporte (ocultar " +#~ "interface de doação/suporte) é configurada " +#~ "por administradores em Admin → " +#~ "Configurações." + +#~ msgid "Administrators can purchase a key to hide these prompts:" +#~ msgstr "Os administradores podem comprar uma chave para ocultar estes prompts:" + +#~ msgid "Support & Purchase Key" +#~ msgstr "Chave de suporte e compra" + +#~ msgid "" +#~ "Time rounding is disabled. All times " +#~ "will be recorded exactly as tracked." +#~ msgstr "" +#~ "O tempo de arredondamento está " +#~ "desactivado. Todos os tempos serão " +#~ "gravados exactamente como se segue." + +#~ msgid "No rounding - times will be recorded exactly as tracked." +#~ msgstr "" +#~ "Nenhum tempo de arredondamento será " +#~ "registrado exatamente como rastreado." + +#~ msgid "Actual time:" +#~ msgstr "Hora atual:" + +#~ msgid "Rounded:" +#~ msgstr "Arredondado:" -#: app/templates/user/settings.html:104 -msgid "Overdue Invoice Notifications" -msgstr "Notificações de fatura excessiva" +#~ msgid "With " +#~ msgstr "Com" -#: app/templates/user/settings.html:113 -msgid "Task Assignment Notifications" -msgstr "Notificações de atribuição de tarefas" +#~ msgid " minute intervals" +#~ msgstr "intervalos de minutos" -#: app/templates/user/settings.html:122 -msgid "Comment & Mention Notifications" -msgstr "Comentar & mencionar notificações" +#~ msgid "Create Weekly Goal" +#~ msgstr "Criar Objetivo Semanal" -#: app/templates/user/settings.html:131 -msgid "Weekly Time Summary Email" -msgstr "E-mail de resumo da hora semanal" +#~ msgid "Create Weekly Time Goal" +#~ msgstr "Criar Objetivo de Tempo Semanal" -#: app/templates/user/settings.html:140 -msgid "Remind me to log time at end of day" -msgstr "Lembre-me de registrar o tempo no final do dia" +#~ msgid "Set a target for hours to work this week" +#~ msgstr "Definir um alvo para horas para trabalhar esta semana" -#: app/templates/user/settings.html:144 -msgid "Reminder time (your timezone)" -msgstr "Hora do lembrete (seu fuso horário)" +#~ msgid "Target Hours" +#~ msgstr "Horas- Alvo" -#: app/templates/user/settings.html:149 -msgid "In-app reminders (toasts)" -msgstr "Avisos no aplicativo (torrados)" +#~ msgid "How many hours do you want to work this week?" +#~ msgstr "Quantas horas queres trabalhar esta semana?" -#: app/templates/user/settings.html:155 -msgid "Enable smart notifications on this device" -msgstr "Habilitar notificações inteligentes neste dispositivo" +#~ msgid "Week Start Date" +#~ msgstr "Data de início da semana" -#: app/templates/user/settings.html:163 -msgid "" -"Nudge when no time logged today (uses hour from app settings or override " -"below)" -msgstr "" -"Rudge quando não houver tempo registrado hoje (usa a hora das configurações " -"do aplicativo ou sobreponha-se abaixo)" +#~ msgid "Leave blank to use current week (starting Monday)" +#~ msgstr "Deixe em branco para usar a semana atual (começando segunda-feira)" -#: app/templates/user/settings.html:169 -msgid "Alert when a timer runs longer than the configured threshold" -msgstr "" -"Alerta quando um temporizador é mais longo do que o limiar configurado" +#~ msgid "Exclude weekends (5-day work week)" +#~ msgstr "Excluir fins de semana (5 dias de semana de trabalho)" -#: app/templates/user/settings.html:175 -msgid "End-of-day summary (logged hours today)" -msgstr "Resumo do fim do dia (horas marcadas hoje)" +#~ msgid "" +#~ "If checked, the goal will only " +#~ "count Monday through Friday. Week ends" +#~ " on Friday instead of Sunday." +#~ msgstr "" +#~ "Se marcada, o gol só contará de" +#~ " segunda a sexta-feira. A semana " +#~ "termina na sexta-feira em vez de" +#~ " domingo." -#: app/templates/user/settings.html:181 -msgid "Also use browser notifications when permission is granted" -msgstr "Também usar notificações do navegador quando a permissão é concedida" +#~ msgid "Optional notes about your goal..." +#~ msgstr "Notas opcionais sobre o seu objetivo..." -#: app/templates/user/settings.html:185 -msgid "No-tracking nudge hour (optional override, HH:MM)" -msgstr "Hora do empurrão sem seguimento (sobreposição opcional, HH:MM)" +#~ msgid "Quick Presets" +#~ msgstr "Predefinições Rápidas" -#: app/templates/user/settings.html:191 -msgid "Summary hour (optional override, HH:MM)" -msgstr "Hora de resumo (sobreposição opcional, HH:MM)" +#~ msgid "Tips for Setting Goals" +#~ msgstr "Dicas para definir objetivos" -#: app/templates/user/settings.html:207 -msgid "Display Preferences" -msgstr "Preferências de exibição" +#~ msgid "Be realistic: Consider holidays, meetings, and other commitments" +#~ msgstr "Seja realista: considere feriados, reuniões e outros compromissos" -#: app/templates/user/settings.html:219 app/templates/user/settings.html:231 -#: app/templates/user/settings.html:423 -msgid "System Default" -msgstr "Padrão do Sistema" +#~ msgid "Start conservative: You can always adjust your goal later" +#~ msgstr "Iniciar conservador: Você sempre pode ajustar seu objetivo mais tarde" -#: app/templates/user/settings.html:245 -msgid "Time Rounding Preferences" -msgstr "Preferências de arredondamento de tempo" +#~ msgid "Track progress: Check your dashboard regularly to stay on track" +#~ msgstr "" +#~ "Progresso da trilha: Verifique seu " +#~ "painel regularmente para ficar na trilha" -#: app/templates/user/settings.html:251 -msgid "" -"Configure how your time entries are rounded. This affects how durations are " -"calculated when you stop timers." -msgstr "" -"Configure como seus itens de tempo são arredondados. Isso afeta como as " -"durações são calculadas quando você pára os timers." +#~ msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" +#~ msgstr "Típico em tempo integral: 40 horas por semana (8 horas/dia, 5 dias)" -#: app/templates/user/settings.html:261 -msgid "Enable Time Rounding" -msgstr "Habilitar arredondamento de tempo" +#~ msgid "" +#~ "Use \"Exclude weekends\" for a 5-day " +#~ "work week (Monday-Friday) instead of " +#~ "7 days" +#~ msgstr "" +#~ "Use \"Excluir fins de semana\" para " +#~ "uma semana de trabalho de 5 dias" +#~ " (segunda-feira) em vez de 7 " +#~ "dias" -#: app/templates/user/settings.html:262 -msgid "Round time entries to configured intervals" -msgstr "Entradas de tempo de rodada para intervalos configurados" +#~ msgid "Edit Weekly Goal" +#~ msgstr "Editar Objetivo Semanal" -#: app/templates/user/settings.html:269 -msgid "Rounding Interval" -msgstr "Intervalo de arredondamento" +#~ msgid "Edit Weekly Time Goal" +#~ msgstr "Editar o Objectivo do Tempo Semanal" -#: app/templates/user/settings.html:277 -msgid "Time entries will be rounded to this interval" -msgstr "As entradas de tempo serão arredondadas para este intervalo" +#~ msgid "Week Period" +#~ msgstr "Período da semana" -#: app/templates/user/settings.html:282 -msgid "Rounding Method" -msgstr "Método de arredondamento" +#~ msgid "Current Progress" +#~ msgstr "Progresso atual" -#: app/templates/user/settings.html:312 -msgid "Overtime Settings" -msgstr "Configuração das horas extraordinárias" +#~ msgid "Are you sure you want to delete this goal?" +#~ msgstr "Tem certeza de que deseja excluir este objetivo?" -#: app/templates/user/settings.html:318 -msgid "" -"Choose whether overtime is calculated per day or per week, and set your " -"standard hours accordingly." -msgstr "" -"Escolha se as horas extras são calculadas por dia ou por semana, e defina " -"suas horas padrão de acordo." +#~ msgid "Delete Goal" +#~ msgstr "Apagar o Objectivo" -#: app/templates/user/settings.html:322 -msgid "Calculate overtime by" -msgstr "Calcular horas extraordinárias por" +#~ msgid "Weekly Time Goals" +#~ msgstr "Objetivos do Tempo Semanal" -#: app/templates/user/settings.html:328 -msgid "Daily hours" -msgstr "Horas diárias" +#~ msgid "Set and track your weekly hour targets" +#~ msgstr "Defina e rastreie seus alvos de hora semanal" -#: app/templates/user/settings.html:334 -msgid "Weekly hours" -msgstr "Horas semanais" +#~ msgid "New Goal" +#~ msgstr "Novo Objetivo" -#: app/templates/user/settings.html:342 -msgid "Standard Hours Per Day" -msgstr "Horas padrão por dia" +#~ msgid "Total Goals" +#~ msgstr "Objectivos totais" -#: app/templates/user/settings.html:351 -msgid "Typically 8 hours for a full-time job" -msgstr "Normalmente 8 horas para um trabalho a tempo inteiro" +#~ msgid "Success Rate" +#~ msgstr "Taxa de Sucesso" -#: app/templates/user/settings.html:357 -msgid "Standard Hours Per Week" -msgstr "Horas padrão por semana" +#~ msgid "Current Week Goal" +#~ msgstr "Objetivo da Semana atual" -#: app/templates/user/settings.html:366 -msgid "e.g. 20 for a part-time week, 40 for full-time" -msgstr "" -"Por exemplo, 20 para uma semana a tempo parcial, 40 para um período a tempo " -"inteiro" +#~ msgid "Remaining Hours" +#~ msgstr "Horas remanescentes" -#: app/templates/user/settings.html:373 app/templates/user/settings.html:383 -msgid "How it works" -msgstr "Como funciona" +#~ msgid "Days Remaining" +#~ msgstr "Dias restantes" -#: app/templates/user/settings.html:376 -msgid "" -"If you work more than your standard hours in a day, the extra time will be " -"tracked as overtime in reports and analytics." -msgstr "" -"Se você trabalhar mais do que suas horas padrão em um dia, o tempo extra " -"será rastreado como horas extras em relatórios e análises." +#~ msgid "Avg Hours/Day Needed" +#~ msgstr "Avg Horas / Dia Necessário" -#: app/templates/user/settings.html:386 -msgid "" -"Overtime is calculated per week: any hours beyond your standard hours per " -"week count as overtime. Suited for contracts based on weekly hours." -msgstr "" -"Overtime é calculado por semana: quaisquer horas além de suas horas padrão " -"por semana contam como horas extras. Acomodado para contratos com base em " -"horas semanais." +#~ msgid "Edit Goal" +#~ msgstr "Editar Objetivo" -#: app/templates/user/settings.html:396 -msgid "Count weekend hours in overtime" -msgstr "Contar horas de fim de semana em horas extras" +#~ msgid "No goal set for this week" +#~ msgstr "Nenhum objetivo definido para esta semana" -#: app/templates/user/settings.html:398 -msgid "" -"When unchecked, any hours worked on Saturday or Sunday are always counted as" -" overtime." -msgstr "" -"Quando descontrolados, as horas trabalhadas no sábado ou domingo são sempre " -"contadas como horas extras." +#~ msgid "Create a weekly time goal to start tracking your progress" +#~ msgstr "" +#~ "Criar uma meta de tempo semanal " +#~ "para começar a acompanhar o seu " +#~ "progresso" -#: app/templates/user/settings.html:410 -msgid "Regional Settings" -msgstr "Configuração Regional" +#~ msgid "Goal History" +#~ msgstr "Histórico do Objetivo" -#: app/templates/user/settings.html:436 app/templates/user/settings.html:450 -msgid "Use system default" -msgstr "Usar o sistema por omissão" +#~ msgid "Target" +#~ msgstr "Alvo" -#: app/templates/user/settings.html:446 -msgid "Time Format" -msgstr "Formato de Hora" +#~ msgid "Weekly Goal Details" +#~ msgstr "Detalhes do Objetivo Semanal" -#: app/templates/user/settings.html:458 -msgid "Week Starts On" -msgstr "Início da Semana" +#~ msgid "5-day work week" +#~ msgstr "Semana de trabalho de 5 dias" -#: app/templates/user/settings.html:462 -msgid "Sunday" -msgstr "Domingo" +#~ msgid "Daily Breakdown" +#~ msgstr "Repartição Diária" -#: app/templates/user/settings.html:463 -msgid "Monday" -msgstr "Segunda-feira" +#~ msgid "excluded" +#~ msgstr "excluído" -#: app/templates/user/settings.html:464 -msgid "Saturday" -msgstr "Sábado" +#~ msgid "Time Entries This Week" +#~ msgstr "Menções de Tempo Esta semana" -#: app/templates/user/settings.html:470 -msgid "Calendar default view" -msgstr "Vista por omissão do calendário" +#~ msgid "No Project" +#~ msgstr "Nenhum Projeto" -#: app/templates/user/settings.html:474 -msgid "Remember last view" -msgstr "Recordar a última vista" +#~ msgid "No time entries recorded for this week yet" +#~ msgstr "Nenhum registro de tempo para esta semana ainda" -#: app/templates/user/settings.html:485 -msgid "" -"Support visibility (hiding donate/support UI) is configured system-wide by " -"administrators in Admin → Settings." -msgstr "" -"A visibilidade do suporte (ocultar interface de doação/suporte) é " -"configurada por administradores em Admin → Configurações." +#~ msgid "Workforce Governance" +#~ msgstr "Governação da força de trabalho" -#: app/templates/user/settings.html:486 -msgid "Administrators can purchase a key to hide these prompts:" -msgstr "" -"Os administradores podem comprar uma chave para ocultar estes prompts:" +#~ msgid "Reference date" +#~ msgstr "Data de referência" -#: app/templates/user/settings.html:487 -msgid "Support & Purchase Key" -msgstr "Chave de suporte e compra" +#~ msgid "Create/Get Period" +#~ msgstr "Criar/Obter período" -#: app/templates/user/settings.html:564 -msgid "" -"Time rounding is disabled. All times will be recorded exactly as tracked." -msgstr "" -"O tempo de arredondamento está desactivado. Todos os tempos serão gravados " -"exactamente como se segue." +#~ msgid "Start date" +#~ msgstr "Data de início" -#: app/templates/user/settings.html:569 -msgid "No rounding - times will be recorded exactly as tracked." -msgstr "" -"Nenhum tempo de arredondamento será registrado exatamente como rastreado." - -#: app/templates/user/settings.html:595 -msgid "Actual time:" -msgstr "Hora atual:" - -#: app/templates/user/settings.html:595 -msgid "Rounded:" -msgstr "Arredondado:" - -#: app/templates/user/settings.html:596 -msgid "With " -msgstr "Com" - -#: app/templates/user/settings.html:596 -msgid " minute intervals" -msgstr "intervalos de minutos" - -#: app/templates/weekly_goals/create.html:3 -msgid "Create Weekly Goal" -msgstr "Criar Objetivo Semanal" - -#: app/templates/weekly_goals/create.html:11 -msgid "Create Weekly Time Goal" -msgstr "Criar Objetivo de Tempo Semanal" - -#: app/templates/weekly_goals/create.html:14 -msgid "Set a target for hours to work this week" -msgstr "Definir um alvo para horas para trabalhar esta semana" - -#: app/templates/weekly_goals/create.html:26 -#: app/templates/weekly_goals/edit.html:42 -#: app/templates/weekly_goals/index.html:83 -#: app/templates/weekly_goals/view.html:39 -msgid "Target Hours" -msgstr "Horas- Alvo" - -#: app/templates/weekly_goals/create.html:41 -msgid "How many hours do you want to work this week?" -msgstr "Quantas horas queres trabalhar esta semana?" - -#: app/templates/weekly_goals/create.html:48 -msgid "Week Start Date" -msgstr "Data de início da semana" - -#: app/templates/weekly_goals/create.html:55 -msgid "Leave blank to use current week (starting Monday)" -msgstr "Deixe em branco para usar a semana atual (começando segunda-feira)" - -#: app/templates/weekly_goals/create.html:71 -#: app/templates/weekly_goals/edit.html:71 -msgid "Exclude weekends (5-day work week)" -msgstr "Excluir fins de semana (5 dias de semana de trabalho)" - -#: app/templates/weekly_goals/create.html:74 -#: app/templates/weekly_goals/edit.html:74 -msgid "" -"If checked, the goal will only count Monday through Friday. Week ends on " -"Friday instead of Sunday." -msgstr "" -"Se marcada, o gol só contará de segunda a sexta-feira. A semana termina na " -"sexta-feira em vez de domingo." +#~ msgid "End date" +#~ msgstr "Data de termo" -#: app/templates/weekly_goals/create.html:88 -#: app/templates/weekly_goals/edit.html:103 -msgid "Optional notes about your goal..." -msgstr "Notas opcionais sobre o seu objetivo..." +#~ msgid "Exports" +#~ msgstr "Exportações" -#: app/templates/weekly_goals/create.html:95 -msgid "Quick Presets" -msgstr "Predefinições Rápidas" +#~ msgid "Download payroll, capacity, and compliance exports" +#~ msgstr "Baixar folha de pagamento, capacidade e exportações de conformidade" -#: app/templates/weekly_goals/create.html:143 -msgid "Tips for Setting Goals" -msgstr "Dicas para definir objetivos" +#~ msgid "Payroll CSV" +#~ msgstr "Pagamento CSV" -#: app/templates/weekly_goals/create.html:147 -msgid "Be realistic: Consider holidays, meetings, and other commitments" -msgstr "Seja realista: considere feriados, reuniões e outros compromissos" +#~ msgid "Capacity CSV" +#~ msgstr "Capacidade CSV" -#: app/templates/weekly_goals/create.html:148 -msgid "Start conservative: You can always adjust your goal later" -msgstr "Iniciar conservador: Você sempre pode ajustar seu objetivo mais tarde" +#~ msgid "Locked Periods CSV" +#~ msgstr "Períodos bloqueados CSV" -#: app/templates/weekly_goals/create.html:149 -msgid "Track progress: Check your dashboard regularly to stay on track" -msgstr "" -"Progresso da trilha: Verifique seu painel regularmente para ficar na trilha" +#~ msgid "Audit Events CSV" +#~ msgstr "Eventos de Auditoria CSV" -#: app/templates/weekly_goals/create.html:150 -msgid "Typical full-time: 40 hours per week (8 hours/day, 5 days)" -msgstr "Típico em tempo integral: 40 horas por semana (8 horas/dia, 5 dias)" +#~ msgid "Timesheet Periods" +#~ msgstr "Períodos da folha de tempo" -#: app/templates/weekly_goals/create.html:151 -msgid "" -"Use \"Exclude weekends\" for a 5-day work week (Monday-Friday) instead of 7 " -"days" -msgstr "" -"Use \"Excluir fins de semana\" para uma semana de trabalho de 5 dias " -"(segunda-feira) em vez de 7 dias" - -#: app/templates/weekly_goals/edit.html:3 -msgid "Edit Weekly Goal" -msgstr "Editar Objetivo Semanal" - -#: app/templates/weekly_goals/edit.html:11 -msgid "Edit Weekly Time Goal" -msgstr "Editar o Objectivo do Tempo Semanal" - -#: app/templates/weekly_goals/edit.html:27 -msgid "Week Period" -msgstr "Período da semana" - -#: app/templates/weekly_goals/edit.html:31 -msgid "Current Progress" -msgstr "Progresso atual" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Are you sure you want to delete this goal?" -msgstr "Tem certeza de que deseja excluir este objetivo?" - -#: app/templates/weekly_goals/edit.html:115 -msgid "Delete Goal" -msgstr "Apagar o Objectivo" - -#: app/templates/weekly_goals/index.html:4 -#: app/templates/weekly_goals/index.html:13 -msgid "Weekly Time Goals" -msgstr "Objetivos do Tempo Semanal" - -#: app/templates/weekly_goals/index.html:14 -msgid "Set and track your weekly hour targets" -msgstr "Defina e rastreie seus alvos de hora semanal" - -#: app/templates/weekly_goals/index.html:16 -msgid "New Goal" -msgstr "Novo Objetivo" - -#: app/templates/weekly_goals/index.html:27 -msgid "Total Goals" -msgstr "Objectivos totais" - -#: app/templates/weekly_goals/index.html:63 -msgid "Success Rate" -msgstr "Taxa de Sucesso" - -#: app/templates/weekly_goals/index.html:75 -msgid "Current Week Goal" -msgstr "Objetivo da Semana atual" - -#: app/templates/weekly_goals/index.html:106 -#: app/templates/weekly_goals/view.html:106 -msgid "Remaining Hours" -msgstr "Horas remanescentes" - -#: app/templates/weekly_goals/index.html:110 -#: app/templates/weekly_goals/view.html:110 -msgid "Days Remaining" -msgstr "Dias restantes" - -#: app/templates/weekly_goals/index.html:114 -#: app/templates/weekly_goals/view.html:114 -msgid "Avg Hours/Day Needed" -msgstr "Avg Horas / Dia Necessário" - -#: app/templates/weekly_goals/index.html:126 -msgid "Edit Goal" -msgstr "Editar Objetivo" - -#: app/templates/weekly_goals/index.html:139 -msgid "No goal set for this week" -msgstr "Nenhum objetivo definido para esta semana" - -#: app/templates/weekly_goals/index.html:142 -msgid "Create a weekly time goal to start tracking your progress" -msgstr "" -"Criar uma meta de tempo semanal para começar a acompanhar o seu progresso" +#~ msgid "Submit" +#~ msgstr "Enviar" -#: app/templates/weekly_goals/index.html:158 -msgid "Goal History" -msgstr "Histórico do Objetivo" +#~ msgid "No timesheet periods yet." +#~ msgstr "Ainda não há prazos." -#: app/templates/weekly_goals/index.html:185 -msgid "Target" -msgstr "Alvo" +#~ msgid "Leave Balances" +#~ msgstr "Deixar saldos" -#: app/templates/weekly_goals/view.html:3 -#: app/templates/weekly_goals/view.html:12 -msgid "Weekly Goal Details" -msgstr "Detalhes do Objetivo Semanal" +#~ msgid "Accumulated overtime (YTD)" +#~ msgstr "Extras acumuladas (YTD)" -#: app/templates/weekly_goals/view.html:18 -msgid "5-day work week" -msgstr "Semana de trabalho de 5 dias" +#~ msgid "Take as paid leave" +#~ msgstr "Tirar como férias pagas" -#: app/templates/weekly_goals/view.html:124 -msgid "Daily Breakdown" -msgstr "Repartição Diária" +#~ msgid "Allowance" +#~ msgstr "Subsídio" -#: app/templates/weekly_goals/view.html:136 -msgid "excluded" -msgstr "excluído" +#~ msgid "Used" +#~ msgstr "Usado" -#: app/templates/weekly_goals/view.html:174 -msgid "Time Entries This Week" -msgstr "Menções de Tempo Esta semana" +#~ msgid "No leave types configured." +#~ msgstr "Nenhum tipo de licença configurado." -#: app/templates/weekly_goals/view.html:188 -msgid "No Project" -msgstr "Nenhum Projeto" +#~ msgid "Time-Off Requests" +#~ msgstr "Pedidos de Tempo-Off" -#: app/templates/weekly_goals/view.html:224 -msgid "No time entries recorded for this week yet" -msgstr "Nenhum registro de tempo para esta semana ainda" +#~ msgid "Select leave type" +#~ msgstr "Seleccione o tipo de licença" -#: app/templates/workforce/dashboard.html:2 -#: app/templates/workforce/dashboard.html:7 -msgid "Workforce Governance" -msgstr "Governação da força de trabalho" - -#: app/templates/workforce/dashboard.html:11 -msgid "Reference date" -msgstr "Data de referência" - -#: app/templates/workforce/dashboard.html:14 -msgid "Create/Get Period" -msgstr "Criar/Obter período" - -#: app/templates/workforce/dashboard.html:29 -msgid "Start date" -msgstr "Data de início" - -#: app/templates/workforce/dashboard.html:33 -msgid "End date" -msgstr "Data de termo" - -#: app/templates/workforce/dashboard.html:42 -msgid "Exports" -msgstr "Exportações" - -#: app/templates/workforce/dashboard.html:43 -msgid "Download payroll, capacity, and compliance exports" -msgstr "Baixar folha de pagamento, capacidade e exportações de conformidade" - -#: app/templates/workforce/dashboard.html:46 -msgid "Payroll CSV" -msgstr "Pagamento CSV" - -#: app/templates/workforce/dashboard.html:47 -msgid "Capacity CSV" -msgstr "Capacidade CSV" - -#: app/templates/workforce/dashboard.html:49 -msgid "Locked Periods CSV" -msgstr "Períodos bloqueados CSV" - -#: app/templates/workforce/dashboard.html:50 -msgid "Audit Events CSV" -msgstr "Eventos de Auditoria CSV" - -#: app/templates/workforce/dashboard.html:57 -msgid "Timesheet Periods" -msgstr "Períodos da folha de tempo" - -#: app/templates/workforce/dashboard.html:70 -msgid "Submit" -msgstr "Enviar" - -#: app/templates/workforce/dashboard.html:101 -msgid "No timesheet periods yet." -msgstr "Ainda não há prazos." - -#: app/templates/workforce/dashboard.html:107 -msgid "Leave Balances" -msgstr "Deixar saldos" - -#: app/templates/workforce/dashboard.html:110 -msgid "Accumulated overtime (YTD)" -msgstr "Extras acumuladas (YTD)" - -#: app/templates/workforce/dashboard.html:112 -msgid "Take as paid leave" -msgstr "Tirar como férias pagas" - -#: app/templates/workforce/dashboard.html:121 -msgid "Allowance" -msgstr "Subsídio" - -#: app/templates/workforce/dashboard.html:122 -msgid "Used" -msgstr "Usado" - -#: app/templates/workforce/dashboard.html:135 -#: app/templates/workforce/dashboard.html:271 -msgid "No leave types configured." -msgstr "Nenhum tipo de licença configurado." - -#: app/templates/workforce/dashboard.html:145 -msgid "Time-Off Requests" -msgstr "Pedidos de Tempo-Off" - -#: app/templates/workforce/dashboard.html:149 -msgid "Select leave type" -msgstr "Seleccione o tipo de licença" - -#: app/templates/workforce/dashboard.html:157 -#: app/templates/workforce/dashboard.html:327 -msgid "Requested hours" -msgstr "Horas solicitadas" +#~ msgid "Requested hours" +#~ msgstr "Horas solicitadas" -#: app/templates/workforce/dashboard.html:159 -msgid "Available overtime (YTD)" -msgstr "Horas extraordinárias disponíveis (YTD)" +#~ msgid "Available overtime (YTD)" +#~ msgstr "Horas extraordinárias disponíveis (YTD)" -#: app/templates/workforce/dashboard.html:164 -msgid "Comment" -msgstr "Comentário" +#~ msgid "Comment" +#~ msgstr "Comentário" -#: app/templates/workforce/dashboard.html:165 -msgid "Submit time-off request" -msgstr "Envio de pedido de tempo- limite" +#~ msgid "Submit time-off request" +#~ msgstr "Envio de pedido de tempo- limite" -#: app/templates/workforce/dashboard.html:203 -msgid "Capacity" -msgstr "Capacidade" +#~ msgid "Capacity" +#~ msgstr "Capacidade" -#: app/templates/workforce/dashboard.html:209 -msgid "Expected" -msgstr "Esperado" +#~ msgid "Expected" +#~ msgstr "Esperado" -#: app/templates/workforce/dashboard.html:210 -msgid "Allocated" -msgstr "Alocado" +#~ msgid "Allocated" +#~ msgstr "Alocado" -#: app/templates/workforce/dashboard.html:211 -msgid "Time Off" -msgstr "Intervalo" +#~ msgid "Time Off" +#~ msgstr "Intervalo" -#: app/templates/workforce/dashboard.html:213 -msgid "Utilization %" -msgstr "Utilização %" +#~ msgid "Utilization %" +#~ msgstr "Utilização %" -#: app/templates/workforce/dashboard.html:227 -msgid "No capacity data available." -msgstr "Não existem dados de capacidade disponíveis." +#~ msgid "No capacity data available." +#~ msgstr "Não existem dados de capacidade disponíveis." -#: app/templates/workforce/dashboard.html:238 -msgid "Timesheet Policy" -msgstr "Política de folha de tempo" +#~ msgid "Timesheet Policy" +#~ msgstr "Política de folha de tempo" -#: app/templates/workforce/dashboard.html:241 -msgid "Auto lock days" -msgstr "Dias de bloqueio automático" +#~ msgid "Auto lock days" +#~ msgstr "Dias de bloqueio automático" -#: app/templates/workforce/dashboard.html:242 -msgid "Approver user IDs (comma separated)" -msgstr "Aprovar IDs de usuário (separados por vírgulas)" +#~ msgid "Approver user IDs (comma separated)" +#~ msgstr "Aprovar IDs de usuário (separados por vírgulas)" -#: app/templates/workforce/dashboard.html:243 -msgid "Enable multi-level approval" -msgstr "Activar a aprovação multinível" +#~ msgid "Enable multi-level approval" +#~ msgstr "Activar a aprovação multinível" -#: app/templates/workforce/dashboard.html:244 -msgid "Require rejection comment" -msgstr "Requer comentário de rejeição" +#~ msgid "Require rejection comment" +#~ msgstr "Requer comentário de rejeição" -#: app/templates/workforce/dashboard.html:245 -msgid "Enable admin override" -msgstr "Activar a substituição do administrador" +#~ msgid "Enable admin override" +#~ msgstr "Activar a substituição do administrador" -#: app/templates/workforce/dashboard.html:246 -msgid "Save policy" -msgstr "Política de gravação" +#~ msgid "Save policy" +#~ msgstr "Política de gravação" -#: app/templates/workforce/dashboard.html:251 -msgid "Leave Types" -msgstr "Tipos de Folha" +#~ msgid "Leave Types" +#~ msgstr "Tipos de Folha" -#: app/templates/workforce/dashboard.html:256 -msgid "Annual allowance (hours)" -msgstr "Subsídio anual (horas)" +#~ msgid "Annual allowance (hours)" +#~ msgstr "Subsídio anual (horas)" -#: app/templates/workforce/dashboard.html:257 -msgid "Accrual hours per month" -msgstr "Horas de exercício por mês" +#~ msgid "Accrual hours per month" +#~ msgstr "Horas de exercício por mês" -#: app/templates/workforce/dashboard.html:258 -msgid "Paid leave" -msgstr "Licença paga" +#~ msgid "Paid leave" +#~ msgstr "Licença paga" -#: app/templates/workforce/dashboard.html:259 -msgid "Add leave type" -msgstr "Adicionar o tipo de licença" +#~ msgid "Add leave type" +#~ msgstr "Adicionar o tipo de licença" -#: app/templates/workforce/dashboard.html:264 -msgid "disabled" -msgstr "desabilitado" +#~ msgid "disabled" +#~ msgstr "desabilitado" -#: app/templates/workforce/dashboard.html:277 -msgid "Company Holidays" -msgstr "Férias da empresa" +#~ msgid "Company Holidays" +#~ msgstr "Férias da empresa" -#: app/templates/workforce/dashboard.html:280 -msgid "Holiday name" -msgstr "Nome de feriado" +#~ msgid "Holiday name" +#~ msgstr "Nome de feriado" -#: app/templates/workforce/dashboard.html:283 -msgid "Region (optional)" -msgstr "Região (facultativo)" +#~ msgid "Region (optional)" +#~ msgstr "Região (facultativo)" -#: app/templates/workforce/dashboard.html:284 -msgid "Add holiday" -msgstr "Adicionar férias" +#~ msgid "Add holiday" +#~ msgstr "Adicionar férias" -#: app/templates/workforce/dashboard.html:296 -msgid "No holidays configured." -msgstr "Nenhum feriado configurado." +#~ msgid "No holidays configured." +#~ msgstr "Nenhum feriado configurado." -#: app/templates/workforce/dashboard.html:321 -msgid "hours (max from overtime)" -msgstr "horas (máx. das horas extraordinárias)" +#~ msgid "hours (max from overtime)" +#~ msgstr "horas (máx. das horas extraordinárias)" -#: app/utils/context_processors.py:222 app/utils/context_processors.py:257 -msgid "Support" -msgstr "Suporte" +#~ msgid "Support" +#~ msgstr "Suporte" -#: app/utils/context_processors.py:226 -msgid "" -"That report was quick to generate. If TimeTracker saves you time, consider " -"supporting its development." -msgstr "" -"Esse relatório foi rápido a gerar. Se TimeTracker poupar tempo, considere " -"apoiar seu desenvolvimento." +#~ msgid "" +#~ "That report was quick to generate. " +#~ "If TimeTracker saves you time, consider" +#~ " supporting its development." +#~ msgstr "" +#~ "Esse relatório foi rápido a gerar. " +#~ "Se TimeTracker poupar tempo, considere " +#~ "apoiar seu desenvolvimento." -#: app/utils/context_processors.py:252 -msgid "" -"You appear to be offline. Reconnect to open donation or checkout links." -msgstr "" -"Pareces estar offline. Reconectar para abrir links de doação ou checkout." +#~ msgid "You appear to be offline. Reconnect to open donation or checkout links." +#~ msgstr "" +#~ "Pareces estar offline. Reconectar para " +#~ "abrir links de doação ou checkout." -#: app/utils/context_processors.py:255 -msgid "Link copied to clipboard" -msgstr "Ligação copiada para a área de transferência" +#~ msgid "Link copied to clipboard" +#~ msgstr "Ligação copiada para a área de transferência" -#: app/utils/context_processors.py:256 -msgid "Could not copy link" -msgstr "Não foi possível copiar o link" +#~ msgid "Could not copy link" +#~ msgstr "Não foi possível copiar o link" -#: app/utils/context_processors.py:258 -msgid "" -"You have been using TimeTracker actively for a while. If it helps your work," -" consider supporting its development." -msgstr "" -"Você tem usado TimeTracker ativamente por um tempo. Se ajudar seu trabalho, " -"considere apoiar seu desenvolvimento." +#~ msgid "" +#~ "You have been using TimeTracker actively" +#~ " for a while. If it helps your" +#~ " work, consider supporting its development." +#~ msgstr "" +#~ "Você tem usado TimeTracker ativamente " +#~ "por um tempo. Se ajudar seu " +#~ "trabalho, considere apoiar seu " +#~ "desenvolvimento." -#: app/utils/i18n_helpers.py:91 app/utils/i18n_helpers.py:102 -msgid "Overpaid" -msgstr "Sobrepagos" +#~ msgid "Overpaid" +#~ msgstr "Sobrepagos" -#: app/utils/i18n_helpers.py:110 app/utils/i18n_helpers.py:126 -msgid "Cash" -msgstr "Dinheiro" +#~ msgid "Cash" +#~ msgstr "Dinheiro" -#: app/utils/i18n_helpers.py:111 app/utils/i18n_helpers.py:127 -msgid "Check" -msgstr "Verificar" +#~ msgid "Check" +#~ msgstr "Verificar" -#: app/utils/i18n_helpers.py:112 app/utils/i18n_helpers.py:128 -msgid "Bank Transfer" -msgstr "Transferência bancária" +#~ msgid "Bank Transfer" +#~ msgstr "Transferência bancária" -#: app/utils/i18n_helpers.py:113 app/utils/i18n_helpers.py:129 -msgid "Credit Card" -msgstr "Cartão de Crédito" +#~ msgid "Credit Card" +#~ msgstr "Cartão de Crédito" -#: app/utils/i18n_helpers.py:114 app/utils/i18n_helpers.py:130 -msgid "Debit Card" -msgstr "Cartão de débito" +#~ msgid "Debit Card" +#~ msgstr "Cartão de débito" -#: app/utils/i18n_helpers.py:116 app/utils/i18n_helpers.py:132 -msgid "Stripe" -msgstr "Listra" +#~ msgid "Stripe" +#~ msgstr "Listra" -#: app/utils/i18n_helpers.py:117 app/utils/i18n_helpers.py:133 -msgid "Company Card" -msgstr "Cartão da empresa" +#~ msgid "Company Card" +#~ msgstr "Cartão da empresa" -#: app/utils/i18n_helpers.py:145 app/utils/i18n_helpers.py:156 -msgid "Reimbursed" -msgstr "Reembolso" +#~ msgid "Reimbursed" +#~ msgstr "Reembolso" -#: app/utils/i18n_helpers.py:221 app/utils/i18n_helpers.py:233 -msgid "Processing" -msgstr "Processamento" +#~ msgid "Processing" +#~ msgstr "Processamento" -#: app/utils/i18n_helpers.py:266 -msgid "80% Budget Warning" -msgstr "Aviso orçamental de 80%" +#~ msgid "80% Budget Warning" +#~ msgstr "Aviso orçamental de 80%" -#: app/utils/i18n_helpers.py:267 -msgid "Budget Limit Reached" -msgstr "Limite de Orçamento Atingido" +#~ msgid "Budget Limit Reached" +#~ msgstr "Limite de Orçamento Atingido" -#: app/utils/i18n_helpers.py:275 app/utils/i18n_helpers.py:281 -msgid "Info" -msgstr "Informação" +#~ msgid "Info" +#~ msgstr "Informação" -#: app/utils/module_helpers.py:48 -msgid "Authentication required." -msgstr "Autenticação necessária." +#~ msgid "Authentication required." +#~ msgstr "Autenticação necessária." -#: app/utils/module_helpers.py:62 -#, python-format -msgid "Module '%(module)s' is disabled." -msgstr "" +#~ msgid "Module '%(module)s' is disabled." +#~ msgstr "" -#: app/utils/module_helpers.py:70 -#, python-format -msgid "Module '%(module)s' is disabled. Enable it in Settings." -msgstr "" +#~ msgid "Module '%(module)s' is disabled. Enable it in Settings." +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:169 -#, python-format -msgid "Invoice #: %(num)s" -msgstr "" +#~ msgid "Invoice #: %(num)s" +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:173 -#: app/utils/pdf_generator_fallback.py:176 -#, python-format -msgid "Issue Date: %(date)s" -msgstr "" +#~ msgid "Issue Date: %(date)s" +#~ msgstr "" -#: app/utils/pdf_generator_fallback.py:174 -#: app/utils/pdf_generator_fallback.py:177 -#, python-format -msgid "Due Date: %(date)s" -msgstr "" +#~ msgid "Due Date: %(date)s" +#~ msgstr "" + +#~ msgid "Quote For:" +#~ msgstr "Citação Para:" -#: app/utils/pdf_generator_fallback.py:541 -msgid "Quote For:" -msgstr "Citação Para:" +#~ msgid "Quote Details:" +#~ msgstr "Detalhes da citação:" -#: app/utils/pdf_generator_fallback.py:551 -msgid "Quote Details:" -msgstr "Detalhes da citação:" +#~ msgid "Items:" +#~ msgstr "Itens:" -#: app/utils/pdf_generator_fallback.py:572 -msgid "Items:" -msgstr "Itens:" +#~ msgid "Total:" +#~ msgstr "Total:" -#: app/utils/pdf_generator_fallback.py:622 -msgid "Total:" -msgstr "Total:" +#~ msgid "Please log in to access this page" +#~ msgstr "Faça login para acessar esta página" -#: app/utils/permissions.py:32 app/utils/permissions.py:67 -msgid "Please log in to access this page" -msgstr "Faça login para acessar esta página"